package clean import ( qu "jygit.jydev.jianyu360.cn/data_processing/common_utils" "regexp" "unicode/utf8" ) // 通用清洗方法 var ( fieldReg1 = regexp.MustCompile("([\\s ]+)") pcodeReg1 = regexp.MustCompile("([((]变更[))])$") pcodeReg2 = regexp.MustCompile("([\\*]+)") ) func CleanFieldInfo(zhipu map[string]interface{}, pkg map[string]interface{}) map[string]interface{} { update := map[string]interface{}{} if s_area, s_city := CleanRegion(qu.ObjToString(zhipu["省份"]), qu.ObjToString(zhipu["城市"])); s_area != "" || s_city != "" { update["s_area"] = s_area update["s_city"] = s_city } if s_buyer := CleanBuyer(qu.ObjToString(zhipu["采购单位"])); s_buyer != "" { update["s_buyer"] = s_buyer } if s_pname := CleanPname(qu.ObjToString(zhipu["项目名称"])); s_pname != "" { update["s_pname"] = s_pname } if s_pcode := CleanPcode(qu.ObjToString(zhipu["项目编号"])); s_pcode != "" { update["s_pcode"] = s_pcode } if s_budget := CleanMoney(zhipu["预算金额"]); s_budget > 0.0 && s_budget < 1000000000.0 { update["s_budget"] = s_budget } if s_bidamount := CleanMoney(zhipu["中标金额"]); s_bidamount > 0.0 && s_bidamount < 1000000000.0 { update["s_bidamount"] = s_bidamount } if s_winner := CleanWinner(qu.ObjToString(zhipu["中标单位"])); s_winner != "" { update["s_winner"] = s_winner } if s_biddiscount := CleanBiddiscount(qu.ObjToString(zhipu["投标折扣系数"])); s_biddiscount != "" { update["s_biddiscount"] = s_biddiscount } //对于分包 if len(pkg) > 0 { if s_winner := qu.ObjToString(pkg["s_winner"]); s_winner != "" { if utf8.RuneCountInString(s_winner) > utf8.RuneCountInString(qu.ObjToString(update["s_winner"])) { update["s_winner"] = s_winner } } if s_bidamount := qu.Float64All(pkg["s_bidamount"]); s_bidamount > 0.0 { if s_bidamount > qu.Float64All(update["s_bidamount"]) { update["s_bidamount"] = s_bidamount } } } return update } // 最终逻辑校验 func CleanFinallyInfo(data map[string]interface{}) map[string]interface{} { s_toptype := qu.ObjToString(data["s_toptype"]) s_subtype := qu.ObjToString(data["s_subtype"]) if s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" { if qu.Float64All(data["s_budget"]) == qu.Float64All(data["s_bidamount"]) && qu.Float64All(data["s_budget"]) > 0.0 { delete(data, "s_budget") } } if s_subtype == "单一" || s_subtype == "合同" || s_subtype == "中标" || s_subtype == "成交" || (s_subtype == "" && s_toptype == "") { } else { delete(data, "s_winner") delete(data, "s_bidamount") } return data }