c_all.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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{}, pkg map[string]interface{}) map[string]interface{} {
  13. data := map[string]interface{}{}
  14. if s_area, s_city := CleanRegion(qu.ObjToString(zhipu["省份"]), qu.ObjToString(zhipu["城市"])); s_area != "" || s_city != "" {
  15. data["s_area"] = s_area
  16. data["s_city"] = s_city
  17. }
  18. if s_buyer := CleanBuyer(qu.ObjToString(zhipu["采购单位"])); s_buyer != "" {
  19. data["s_buyer"] = s_buyer
  20. }
  21. if s_pname := CleanPname(qu.ObjToString(zhipu["项目名称"])); s_pname != "" {
  22. data["s_pname"] = s_pname
  23. }
  24. if s_pcode := CleanPcode(qu.ObjToString(zhipu["项目编号"])); s_pcode != "" {
  25. data["s_pcode"] = s_pcode
  26. }
  27. if s_budget := CleanMoney(zhipu["预算金额"]); s_budget > 0.0 && s_budget < 1000000000.0 {
  28. data["s_budget"] = s_budget
  29. }
  30. if s_bidamount := CleanMoney(zhipu["中标金额"]); s_bidamount > 0.0 && s_bidamount < 1000000000.0 {
  31. data["s_bidamount"] = s_bidamount
  32. }
  33. if s_winner := CleanWinner(qu.ObjToString(zhipu["中标单位"])); s_winner != "" {
  34. data["s_winner"] = s_winner
  35. }
  36. if s_biddiscount := CleanBiddiscount(qu.ObjToString(zhipu["投标折扣系数"])); s_biddiscount != "" {
  37. data["s_biddiscount"] = s_biddiscount
  38. }
  39. data["s_pkg"] = pkg
  40. return data
  41. }
  42. // 最终逻辑校验
  43. func CleanFinallyInfo(data map[string]interface{}) map[string]interface{} {
  44. s_toptype := qu.ObjToString(data["s_toptype"])
  45. s_subtype := qu.ObjToString(data["s_subtype"])
  46. if s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" {
  47. if qu.Float64All(data["s_budget"]) == qu.Float64All(data["s_bidamount"]) && qu.Float64All(data["s_budget"]) > 0.0 {
  48. delete(data, "s_budget")
  49. }
  50. }
  51. //删除不删除均可···与抽取值进行合并时判断也行···
  52. if s_subtype == "单一" || s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" || (s_subtype == "" && s_toptype == "") {
  53. } else {
  54. delete(data, "s_winner")
  55. delete(data, "s_bidamount")
  56. }
  57. return data
  58. }