c_all.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package clean
  2. import (
  3. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  4. "regexp"
  5. )
  6. // 通用清洗方法
  7. var (
  8. fieldReg1 = regexp.MustCompile("([\\s ]+)")
  9. pcodeReg1 = regexp.MustCompile("([((]变更[))])$")
  10. pcodeReg2 = regexp.MustCompile("([\\*]+)")
  11. )
  12. func CleanFieldInfo(zhipu map[string]interface{}, fns []string, isTable bool) map[string]interface{} {
  13. data := map[string]interface{}{}
  14. //重点字段
  15. if s_area, s_city := CleanRegion(qu.ObjToString(zhipu["省份"]), qu.ObjToString(zhipu["城市"])); s_area != "" || s_city != "" {
  16. data["s_area"] = s_area
  17. data["s_city"] = s_city
  18. }
  19. if s_buyer := CleanBuyer(qu.ObjToString(zhipu["采购单位"])); s_buyer != "" {
  20. data["s_buyer"] = s_buyer
  21. }
  22. if s_pname := CleanPname(qu.ObjToString(zhipu["项目名称"])); s_pname != "" {
  23. data["s_projectname"] = s_pname
  24. }
  25. if s_pcode := CleanPcode(qu.ObjToString(zhipu["项目编号"]), fns); s_pcode != "" {
  26. data["s_projectcode"] = s_pcode
  27. }
  28. if s_biddingcode := CleanOtherCode(qu.ObjToString(zhipu["招标编号"])); s_biddingcode != "" {
  29. data["s_biddingcode"] = s_biddingcode
  30. }
  31. if s_packagecode := CleanOtherCode(qu.ObjToString(zhipu["标段编号"])); s_packagecode != "" {
  32. data["s_packagecode"] = s_packagecode
  33. }
  34. if s_contractcode := CleanOtherCode(qu.ObjToString(zhipu["合同编号"])); s_contractcode != "" {
  35. data["s_contractcode"] = s_contractcode
  36. }
  37. if s_budget, s_budget_unit := CleanMoney([]interface{}{zhipu["预算金额"], ""}); s_budget > 0.0 && s_budget < 1000000000.0 {
  38. if !s_budget_unit {
  39. if n_s_budget := ConvertMoney(s_budget, qu.ObjToString(zhipu["预算金额单位"])); n_s_budget > 0.0 && n_s_budget < 1000000000.0 {
  40. data["s_budget"] = n_s_budget
  41. } else {
  42. data["s_budget"] = s_budget
  43. }
  44. } else {
  45. data["s_budget"] = s_budget
  46. }
  47. }
  48. if s_bidamount, s_bidamount_unit := CleanMoney([]interface{}{zhipu["中标金额"], ""}); s_bidamount > 0.0 && s_bidamount < 1000000000.0 {
  49. if !s_bidamount_unit {
  50. if n_s_bidamount := ConvertMoney(s_bidamount, qu.ObjToString(zhipu["中标金额单位"])); n_s_bidamount > 0.0 && n_s_bidamount < 1000000000.0 {
  51. data["s_bidamount"] = n_s_bidamount
  52. } else {
  53. data["s_bidamount"] = s_bidamount
  54. }
  55. } else {
  56. data["s_bidamount"] = s_bidamount
  57. }
  58. }
  59. if s_agency := CleanAgency(qu.ObjToString(zhipu["代理机构"])); s_agency != "" {
  60. data["s_agency"] = s_agency
  61. }
  62. if s_winner := CleanWinner(qu.ObjToString(zhipu["中标单位"])); s_winner != "" {
  63. data["s_winner"] = s_winner
  64. }
  65. //其他字段
  66. if s_bidopenaddress := CleanOtherName(qu.ObjToString(zhipu["开标地点"])); s_bidopenaddress != "" {
  67. data["s_bidopenaddress"] = s_bidopenaddress
  68. }
  69. if s_biddiscount := CleanDiscount(qu.ObjToString(zhipu["中标金额折扣率"])); s_biddiscount > 0.0 {
  70. data["s_biddiscount"] = s_biddiscount
  71. }
  72. //时间相关
  73. if s_bidopentime := CleanTime(qu.ObjToString(zhipu["开标日期"])); s_bidopentime > 0 {
  74. data["s_bidopentime"] = s_bidopentime
  75. }
  76. if s_bidendtime := CleanTime(qu.ObjToString(zhipu["投标截止时间"])); s_bidendtime > 0 {
  77. data["s_bidendtime"] = s_bidendtime
  78. }
  79. if s_docstarttime := CleanTime(qu.ObjToString(zhipu["招标文件获取开始时间"])); s_docstarttime > 0 {
  80. data["s_docstarttime"] = s_docstarttime
  81. }
  82. if s_docendtime := CleanTime(qu.ObjToString(zhipu["招标文件获取结束时间"])); s_docendtime > 0 {
  83. data["s_docendtime"] = s_docendtime
  84. }
  85. //联系方式方式
  86. if s_buyerperson := CleanContactPerson(qu.ObjToString(zhipu["采购单位联系人"])); s_buyerperson != "" {
  87. data["s_buyerperson"] = s_buyerperson
  88. }
  89. if s_buyertel := CleanContactTel(qu.ObjToString(zhipu["采购单位联系方式"])); s_buyertel != "" {
  90. data["s_buyertel"] = s_buyertel
  91. }
  92. if s_agencyperson := CleanContactPerson(qu.ObjToString(zhipu["代理机构联系人"])); s_agencyperson != "" {
  93. data["s_agencyperson"] = s_agencyperson
  94. }
  95. if s_agencytel := CleanContactTel(qu.ObjToString(zhipu["代理机构联系方式"])); s_agencytel != "" {
  96. data["s_agencytel"] = s_agencytel
  97. }
  98. if s_winnerperson := CleanContactPerson(qu.ObjToString(zhipu["中标单位联系人"])); s_winnerperson != "" {
  99. data["s_winnerperson"] = s_winnerperson
  100. }
  101. if s_winnertel := CleanContactTel(qu.ObjToString(zhipu["中标单位联系方式"])); s_winnertel != "" {
  102. data["s_winnertel"] = s_winnertel
  103. }
  104. //标的物字段
  105. if zhipu["s_purchasinglist"] != nil {
  106. data["s_purchasinglist"] = zhipu["s_purchasinglist"]
  107. }
  108. //分包字段
  109. if zhipu["s_pkg"] != nil {
  110. data["s_pkg"] = zhipu["s_pkg"]
  111. }
  112. if zhipu["ispkg"] != nil {
  113. data["ispkg"] = zhipu["ispkg"]
  114. }
  115. //分类字段
  116. s_toptype := qu.ObjToString(zhipu["s_toptype"])
  117. s_subtype := qu.ObjToString(zhipu["s_subtype"])
  118. data["s_toptype"] = s_toptype
  119. data["s_subtype"] = s_subtype
  120. if s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" {
  121. if qu.Float64All(data["s_budget"]) == qu.Float64All(data["s_bidamount"]) && qu.Float64All(data["s_budget"]) > 0.0 {
  122. delete(data, "s_budget")
  123. }
  124. }
  125. //表格类数据-分包金额以及外围字段不准确
  126. if isTable {
  127. delete(data, "s_budget")
  128. delete(data, "s_bidamount")
  129. }
  130. return data
  131. }