package bidding import ( u "data_tidb/util" util "jygit.jydev.jianyu360.cn/data_processing/common_utils" "strings" "time" "unicode/utf8" ) // 标讯分包基本信息-标讯版 func CPBaseInfoFromBidding(tmp map[string]interface{}, tmpid string) map[string]interface{} { info := map[string]interface{}{} info["s_info_id"] = tmpid info["s_packagename"] = util.ObjToString(tmp["projectname"]) if tmp["budget"] != nil { if budget := util.Float64All(tmp["budget"]); budget < 1000000000.0 { info["f_budget"] = budget } } if tmp["bidamount"] != nil { if bidamount := util.Float64All(tmp["bidamount"]); bidamount < 1000000000.0 { info["f_bidamount"] = bidamount } } info["d_createtime"] = time.Now().Format(util.Date_Full_Layout) return info } // 投标人相关信息-标讯版 func CPBidderBiddingBaseInfo(tmp map[string]interface{}, tmpid string, pid int64) { s_winner := util.ObjToString(tmp["s_winner"]) s_winner = cleaname(s_winner) if s_winner == "" { return } info := map[string]interface{}{} info["s_info_id"] = tmpid info["i_package_id"] = pid info["d_createtime"] = time.Now().Format(util.Date_Full_Layout) wins := strings.Split(s_winner, ",") bidder_id, bidder_name, other_bidder_id := getWinsNameId(wins) info["s_bidder_id"] = bidder_id info["i_is_winner"] = 1 if len(wins) > 1 { info["s_bidder_name"] = bidder_name info["s_other_bidder_name"] = s_winner info["s_other_bidder_id"] = other_bidder_id info["i_is_bidders"] = 1 } //保存服务... u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid) //候选人相关情况 o_win_ids, o_win_names := getWinerorder(tmp, wins[0]) for k, v := range o_win_ids { o_info := map[string]interface{}{} o_info["s_info_id"] = tmpid o_info["i_package_id"] = pid o_info["s_bidder_id"] = v o_info["s_bidder_name"] = o_win_names[k] o_info["i_is_winner"] = 0 o_info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout) //保存服务... u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid) } } // 标讯分包标的物信息 func CPBiddingPackageGoodsBaseInfo(tmp map[string]interface{}, tmpid string, pid int64) []map[string]interface{} { purchasinglist := u.IsMarkInterfaceMap(tmp["purchasinglist"]) new_purlist := []map[string]interface{}{} for _, v := range purchasinglist { info := map[string]interface{}{} info["s_info_id"] = tmpid info["i_package_id"] = pid info["s_itemname"] = u.CleanLength(util.ObjToString(v["itemname"]), 255) info["s_brand"] = u.CleanLength(util.ObjToString(v["brandname"]), 255) info["s_model"] = u.CleanLength(util.ObjToString(v["model"]), 255) if number := util.IntAll(v["number"]); number > 0 && number < 1000000000 { info["i_num"] = number } if unitprice := util.Float64All(v["unitprice"]); unitprice > 0.0 && unitprice < 1000000000.0 { info["f_unit"] = unitprice } if totalprice := util.Float64All(v["totalprice"]); totalprice > 0.0 && totalprice < 1000000000.0 { info["f_totalprice"] = totalprice } info["d_createtime"] = time.Now().Format(util.Date_Full_Layout) new_purlist = append(new_purlist, info) } return new_purlist } // 标讯分包基本信息-分包版 func CPBaseInfoFromPackage(pinfos map[string]interface{}, tmpid string) map[string]interface{} { info := map[string]interface{}{} info["s_info_id"] = tmpid for k, v := range pinfos { info["s_packagecode"] = k if pkg := util.ObjToMap(v); pkg != nil { info["s_packagename"] = util.ObjToString((*pkg)["name"]) if (*pkg)["budget"] != nil { info["f_budget"] = util.Float64All((*pkg)["budget"]) } if (*pkg)["bidamount"] != nil { info["f_bidamount"] = util.Float64All((*pkg)["bidamount"]) } return info } } info["d_createtime"] = time.Now().Format(util.Date_Full_Layout) return info } // 投标人相关信息-分包版 func CPBidderPackageBaseInfo(pinfos map[string]interface{}, tmp map[string]interface{}, tmpid string, pid int64, isF bool) { for _, v := range pinfos { pinfo := *util.ObjToMap(v) winner := util.ObjToString(pinfo["winner"]) info := map[string]interface{}{} info["s_info_id"] = tmpid info["i_package_id"] = pid info["d_createtime"] = time.Now().Format(util.Date_Full_Layout) wins := strings.Split(winner, ",") bidder_id, bidder_name, other_bidder_id := getWinsNameId(wins) info["s_bidder_id"] = bidder_id info["i_is_winner"] = 1 if len(wins) > 1 { info["s_bidder_name"] = bidder_name info["s_other_bidder_name"] = winner info["s_other_bidder_id"] = other_bidder_id info["i_is_bidders"] = 1 } //保存服务... u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid) //候选人相关情况 if isF { o_win_ids, o_win_names := getWinerorder(tmp, wins[0]) for k, v := range o_win_ids { o_info := map[string]interface{}{} o_info["s_info_id"] = tmpid o_info["s_bidder_id"] = v o_info["s_bidder_name"] = o_win_names[k] o_info["i_is_winner"] = 0 o_info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout) //保存服务... u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid) } } } } // 获取所有投标人的相关标识 func getWinsNameId(wins []string) (string, string, string) { win_id, win_name, win_ids := "", "", []string{} for k, v := range wins { code := u.GetNameId(v) if k == 0 { win_id = code win_name = v } win_ids = append(win_ids, code) } return win_id, win_name, strings.Join(win_ids, ",") } // 获取候选人相关信息 func getWinerorder(tmp map[string]interface{}, win string) ([]string, []string) { o_win_names, o_win_ids := []string{}, []string{} winnerorder := u.IsMarkInterfaceMap(tmp["winnerorder"]) for k, v := range winnerorder { if k >= 5 { break } entname := util.ObjToString(v["entname"]) if entname != win { o_win_ids = append(o_win_ids, u.GetNameId(entname)) o_win_names = append(o_win_names, entname) } } return o_win_ids, o_win_names } // 分包信息清洗与过滤... func FilterPackageInfos(tmp map[string]interface{}) []map[string]interface{} { new_packages := []map[string]interface{}{} s_winner := util.ObjToString(tmp["s_winner"]) if s_winner == "" { return new_packages } winArr := strings.Split(s_winner, ",") if packages := util.ObjToMap(tmp["package"]); packages != nil { for k, v := range *packages { if pkg := util.ObjToMap(v); pkg != nil && k != "" { if win := util.ObjToString((*pkg)["winner"]); win != "" { if IsExistsWins(winArr, win) { new_packages = append(new_packages, map[string]interface{}{k: v}) } } } } } return new_packages } // 是否存在单位 func IsExistsWins(winArr []string, win string) bool { for _, v := range winArr { if v == win { return true } } return false } // 简易清洗... func cleaname(name string) string { nameArr := strings.Split(name, ",") new_nameArr := []string{} for _, v := range nameArr { if utf8.RuneCountInString(v) < 50 { new_nameArr = append(new_nameArr, v) } } return strings.Join(new_nameArr, ",") }