util.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package util
  2. import (
  3. "go.mongodb.org/mongo-driver/bson/primitive"
  4. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  5. "unicode/utf8"
  6. )
  7. // 转换时间
  8. func TransferDateTimeInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) {
  9. for _, v := range keys {
  10. if t := util.Int64All(tmp[v]); t > 0 {
  11. key := "d_" + v
  12. (*info)[key] = util.FormatDateByInt64(&t, util.Date_Full_Layout)
  13. }
  14. }
  15. }
  16. // 转换文本
  17. func TransferTextInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []int) {
  18. for k, v := range keys {
  19. if value := util.ObjToString(tmp[v]); value != "" {
  20. key := "s_" + v
  21. if len(maxs) > k {
  22. (*info)[key] = CleanLength(value, maxs[k])
  23. } else {
  24. (*info)[key] = value
  25. }
  26. }
  27. }
  28. }
  29. // 转换布尔
  30. func TransferBoolInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string) {
  31. for _, v := range keys {
  32. if tmp[v] != nil {
  33. key := "i_" + v
  34. if tmp[v].(bool) {
  35. (*info)[key] = 1
  36. } else {
  37. (*info)[key] = 0
  38. }
  39. }
  40. }
  41. }
  42. // 转换金额费用
  43. func TransferMoneyRateInfo(tmp map[string]interface{}, info *map[string]interface{}, keys []string, maxs []float64) {
  44. for k, v := range keys {
  45. key := "f_" + v
  46. if value, b := CleanFloat64(util.Float64All(tmp[v]), maxs[k]); tmp[v] != nil && b {
  47. (*info)[key] = value
  48. }
  49. }
  50. }
  51. // 通用长度清洗
  52. func CleanLength(name string, l int) string {
  53. if l == -1 {
  54. return name
  55. }
  56. new_name := name
  57. if utf8.RuneCountInString(name) > l {
  58. new_name = string(([]rune(new_name))[:l])
  59. }
  60. return new_name
  61. }
  62. // 通用浮点清洗
  63. func CleanFloat64(value float64, max float64) (float64, bool) {
  64. if value <= max {
  65. return value, true
  66. }
  67. return float64(0), false
  68. }
  69. func GetNameId(name string) string {
  70. if name == "" {
  71. return ""
  72. }
  73. info := MysqlTool.FindOne("dws_f_ent_baseinfo", map[string]interface{}{"name": name}, "name_id", "")
  74. if info != nil && (*info)["name_id"] != nil {
  75. return util.ObjToString((*info)["name_id"])
  76. } else {
  77. return ""
  78. }
  79. }
  80. func GetTopSubCode(toptype string, subtype string) (string, string) {
  81. top_code, sub_code := "", ""
  82. datas := TopSubtypeCode[toptype]
  83. if datas != nil {
  84. top_code = datas["code"]
  85. if datas[subtype] != "" {
  86. sub_code = datas[subtype]
  87. }
  88. }
  89. return top_code, sub_code
  90. }
  91. func IsMarkInterfaceArr(t interface{}) []string {
  92. sub_list := []string{}
  93. if list_3, ok_3 := t.([]string); ok_3 {
  94. sub_list = list_3
  95. return sub_list
  96. }
  97. if list_1, ok_1 := t.(primitive.A); ok_1 {
  98. sub_list = util.ObjArrToStringArr(list_1)
  99. } else {
  100. if list_2, ok_2 := t.([]interface{}); ok_2 {
  101. sub_list = util.ObjArrToStringArr(list_2)
  102. }
  103. }
  104. return sub_list
  105. }
  106. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  107. p_list := []map[string]interface{}{}
  108. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  109. p_list = util.ObjArrToMapArr(yl_list_1)
  110. } else {
  111. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  112. p_list = util.ObjArrToMapArr(yl_list_2)
  113. }
  114. }
  115. return p_list
  116. }