c_all.go 5.7 KB

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