c_all.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package clean
  2. import (
  3. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  4. "regexp"
  5. "unicode/utf8"
  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{}, pkg map[string]interface{}) map[string]interface{} {
  14. update := map[string]interface{}{}
  15. if s_area, s_city := CleanRegion(qu.ObjToString(zhipu["省份"]), qu.ObjToString(zhipu["城市"])); s_area != "" || s_city != "" {
  16. update["s_area"] = s_area
  17. update["s_city"] = s_city
  18. }
  19. if s_buyer := CleanBuyer(qu.ObjToString(zhipu["采购单位"])); s_buyer != "" {
  20. update["s_buyer"] = s_buyer
  21. }
  22. if s_pname := CleanPname(qu.ObjToString(zhipu["项目名称"])); s_pname != "" {
  23. update["s_pname"] = s_pname
  24. }
  25. if s_pcode := CleanPcode(qu.ObjToString(zhipu["项目编号"])); s_pcode != "" {
  26. update["s_pcode"] = s_pcode
  27. }
  28. if s_budget := CleanMoney(zhipu["预算金额"]); s_budget > 0.0 && s_budget < 1000000000.0 {
  29. update["s_budget"] = s_budget
  30. }
  31. if s_bidamount := CleanMoney(zhipu["中标金额"]); s_bidamount > 0.0 && s_bidamount < 1000000000.0 {
  32. update["s_bidamount"] = s_bidamount
  33. }
  34. if s_winner := CleanWinner(qu.ObjToString(zhipu["中标单位"])); s_winner != "" {
  35. update["s_winner"] = s_winner
  36. }
  37. if s_biddiscount := CleanBiddiscount(qu.ObjToString(zhipu["投标折扣系数"])); s_biddiscount != "" {
  38. update["s_biddiscount"] = s_biddiscount
  39. }
  40. //对于分包
  41. if len(pkg) > 0 {
  42. if s_winner := qu.ObjToString(pkg["s_winner"]); s_winner != "" {
  43. if utf8.RuneCountInString(s_winner) > utf8.RuneCountInString(qu.ObjToString(update["s_winner"])) {
  44. update["s_winner"] = s_winner
  45. }
  46. }
  47. if s_bidamount := qu.Float64All(pkg["s_bidamount"]); s_bidamount > 0.0 {
  48. if s_bidamount > qu.Float64All(update["s_bidamount"]) {
  49. update["s_bidamount"] = s_bidamount
  50. }
  51. }
  52. }
  53. return update
  54. }
  55. // 最终逻辑校验
  56. func CleanFinallyInfo(data map[string]interface{}) map[string]interface{} {
  57. s_toptype := qu.ObjToString(data["s_toptype"])
  58. s_subtype := qu.ObjToString(data["s_subtype"])
  59. if s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" {
  60. if qu.Float64All(data["s_budget"]) == qu.Float64All(data["s_bidamount"]) && qu.Float64All(data["s_budget"]) > 0.0 {
  61. delete(data, "s_budget")
  62. }
  63. }
  64. if s_subtype == "单一" || s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" || (s_subtype == "" && s_toptype == "") {
  65. } else {
  66. delete(data, "s_winner")
  67. delete(data, "s_bidamount")
  68. }
  69. return data
  70. }