123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- 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, ",")
- }
|