package util import ( "go.mongodb.org/mongo-driver/bson/primitive" util "jygit.jydev.jianyu360.cn/data_processing/common_utils" "regexp" "unicode/utf8" ) var ( RegLetter = regexp.MustCompile("[a-z]*") RegClean = regexp.MustCompile("[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+") ) // 转换时间 func TransferDateTimeInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) { for _, v := range keys { if t := util.Int64All(tmp[v]); t > 0 { key := "d_" + v (*info)[key] = util.FormatDateByInt64(&t, util.Date_Full_Layout) } } } // 转换文本 func TransferTextInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []int) { for k, v := range keys { value := util.ObjToString(tmp[v]) value = RegClean.ReplaceAllString(value, "") if value != "" { key := "s_" + v if len(maxs) > k { (*info)[key] = CleanLength(value, maxs[k]) } else { (*info)[key] = value } } } } // 转换布尔 func TransferBoolInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) { for _, v := range keys { if tmp[v] != nil { key := "i_" + v if tmp[v].(bool) { (*info)[key] = 1 } else { (*info)[key] = 0 } } } } // 转换金额费用 func TransferMoneyRateInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []float64) { for k, v := range keys { key := "f_" + v if value, b := CleanFloat64(util.Float64All(tmp[v]), maxs[k]); tmp[v] != nil && b { (*info)[key] = value } } } // 通用长度清洗 func CleanLength(name string, l int) string { if l == -1 { return name } new_name := name if utf8.RuneCountInString(name) > l { new_name = string(([]rune(new_name))[:l]) } return new_name } // 通用浮点清洗 func CleanFloat64(value float64, max float64) (float64, bool) { if value < max { return value, true } return float64(0), false } func GetNameId(name string) string { if name == "" { return "" } info := MysqlTool.FindOne("dws_f_ent_baseinfo", map[string]interface{}{"name": name}, "name_id", "") if info != nil && (*info)["name_id"] != nil { return util.ObjToString((*info)["name_id"]) } else { return "" } } func GetTopSubCode(toptype string, subtype string) (string, string) { top_code, sub_code := "", "" datas := TopSubtypeCode[toptype] if datas != nil { top_code = datas["code"] if datas[subtype] != "" { sub_code = datas[subtype] } } return top_code, sub_code } func IsMarkInterfaceArr(t interface{}) []string { sub_list := []string{} if list_3, ok_3 := t.([]string); ok_3 { sub_list = list_3 return sub_list } if list_1, ok_1 := t.(primitive.A); ok_1 { sub_list = util.ObjArrToStringArr(list_1) } else { if list_2, ok_2 := t.([]interface{}); ok_2 { sub_list = util.ObjArrToStringArr(list_2) } } return sub_list } func IsMarkInterfaceMap(t interface{}) []map[string]interface{} { p_list := []map[string]interface{}{} if yl_list_1, ok_1 := t.(primitive.A); ok_1 { p_list = util.ObjArrToMapArr(yl_list_1) } else { if yl_list_2, ok_2 := t.([]interface{}); ok_2 { p_list = util.ObjArrToMapArr(yl_list_2) } } return p_list }