123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- 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
- }
|