pkg.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package bidding
  2. import (
  3. u "data_tidb/util"
  4. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  5. "strings"
  6. "time"
  7. "unicode/utf8"
  8. )
  9. // 标讯分包基本信息-标讯版
  10. func CPBaseInfoFromBidding(tmp map[string]interface{}, tmpid string) map[string]interface{} {
  11. info := map[string]interface{}{}
  12. info["s_info_id"] = tmpid
  13. info["s_packagename"] = util.ObjToString(tmp["projectname"])
  14. if tmp["budget"] != nil {
  15. if budget := util.Float64All(tmp["budget"]); budget < 1000000000.0 {
  16. info["f_budget"] = budget
  17. }
  18. }
  19. if tmp["bidamount"] != nil {
  20. if bidamount := util.Float64All(tmp["bidamount"]); bidamount < 1000000000.0 {
  21. info["f_bidamount"] = bidamount
  22. }
  23. }
  24. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  25. return info
  26. }
  27. // 投标人相关信息-标讯版
  28. func CPBidderBiddingBaseInfo(tmp map[string]interface{}, tmpid string, pid int64) {
  29. s_winner := util.ObjToString(tmp["s_winner"])
  30. s_winner = cleaname(s_winner)
  31. if s_winner == "" {
  32. return
  33. }
  34. info := map[string]interface{}{}
  35. info["s_info_id"] = tmpid
  36. info["i_package_id"] = pid
  37. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  38. wins := strings.Split(s_winner, ",")
  39. bidder_id, bidder_name, other_bidder_id := getWinsNameId(wins)
  40. info["s_bidder_id"] = bidder_id
  41. info["i_is_winner"] = 1
  42. if len(wins) > 1 {
  43. info["s_bidder_name"] = bidder_name
  44. info["s_other_bidder_name"] = s_winner
  45. info["s_other_bidder_id"] = other_bidder_id
  46. info["i_is_bidders"] = 1
  47. }
  48. //保存服务...
  49. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  50. //候选人相关情况
  51. o_win_ids, o_win_names := getWinerorder(tmp, wins[0])
  52. for k, v := range o_win_ids {
  53. o_info := map[string]interface{}{}
  54. o_info["s_info_id"] = tmpid
  55. o_info["i_package_id"] = pid
  56. o_info["s_bidder_id"] = v
  57. o_info["s_bidder_name"] = o_win_names[k]
  58. o_info["i_is_winner"] = 0
  59. o_info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout)
  60. //保存服务...
  61. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  62. }
  63. }
  64. // 标讯分包标的物信息
  65. func CPBiddingPackageGoodsBaseInfo(tmp map[string]interface{}, tmpid string, pid int64) []map[string]interface{} {
  66. purchasinglist := u.IsMarkInterfaceMap(tmp["purchasinglist"])
  67. new_purlist := []map[string]interface{}{}
  68. for _, v := range purchasinglist {
  69. info := map[string]interface{}{}
  70. info["s_info_id"] = tmpid
  71. info["i_package_id"] = pid
  72. info["s_itemname"] = u.CleanLength(util.ObjToString(v["itemname"]), 255)
  73. info["s_brand"] = u.CleanLength(util.ObjToString(v["brandname"]), 255)
  74. info["s_model"] = u.CleanLength(util.ObjToString(v["model"]), 255)
  75. if number := util.IntAll(v["number"]); number > 0 && number < 1000000000 {
  76. info["i_num"] = number
  77. }
  78. if unitprice := util.Float64All(v["unitprice"]); unitprice > 0.0 && unitprice < 1000000000.0 {
  79. info["f_unit"] = unitprice
  80. }
  81. if totalprice := util.Float64All(v["totalprice"]); totalprice > 0.0 && totalprice < 1000000000.0 {
  82. info["f_totalprice"] = totalprice
  83. }
  84. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  85. new_purlist = append(new_purlist, info)
  86. }
  87. return new_purlist
  88. }
  89. // 标讯分包基本信息-分包版
  90. func CPBaseInfoFromPackage(pinfos map[string]interface{}, tmpid string) map[string]interface{} {
  91. info := map[string]interface{}{}
  92. info["s_info_id"] = tmpid
  93. for k, v := range pinfos {
  94. info["s_packagecode"] = k
  95. if pkg := util.ObjToMap(v); pkg != nil {
  96. info["s_packagename"] = util.ObjToString((*pkg)["name"])
  97. if (*pkg)["budget"] != nil {
  98. info["f_budget"] = util.Float64All((*pkg)["budget"])
  99. }
  100. if (*pkg)["bidamount"] != nil {
  101. info["f_bidamount"] = util.Float64All((*pkg)["bidamount"])
  102. }
  103. return info
  104. }
  105. }
  106. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  107. return info
  108. }
  109. // 投标人相关信息-分包版
  110. func CPBidderPackageBaseInfo(pinfos map[string]interface{}, tmp map[string]interface{}, tmpid string, pid int64, isF bool) {
  111. for _, v := range pinfos {
  112. pinfo := *util.ObjToMap(v)
  113. winner := util.ObjToString(pinfo["winner"])
  114. info := map[string]interface{}{}
  115. info["s_info_id"] = tmpid
  116. info["i_package_id"] = pid
  117. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  118. wins := strings.Split(winner, ",")
  119. bidder_id, bidder_name, other_bidder_id := getWinsNameId(wins)
  120. info["s_bidder_id"] = bidder_id
  121. info["i_is_winner"] = 1
  122. if len(wins) > 1 {
  123. info["s_bidder_name"] = bidder_name
  124. info["s_other_bidder_name"] = winner
  125. info["s_other_bidder_id"] = other_bidder_id
  126. info["i_is_bidders"] = 1
  127. }
  128. //保存服务...
  129. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  130. //候选人相关情况
  131. if isF {
  132. o_win_ids, o_win_names := getWinerorder(tmp, wins[0])
  133. for k, v := range o_win_ids {
  134. o_info := map[string]interface{}{}
  135. o_info["s_info_id"] = tmpid
  136. o_info["s_bidder_id"] = v
  137. o_info["s_bidder_name"] = o_win_names[k]
  138. o_info["i_is_winner"] = 0
  139. o_info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout)
  140. //保存服务...
  141. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  142. }
  143. }
  144. }
  145. }
  146. // 获取所有投标人的相关标识
  147. func getWinsNameId(wins []string) (string, string, string) {
  148. win_id, win_name, win_ids := "", "", []string{}
  149. for k, v := range wins {
  150. code := u.GetNameId(v)
  151. if k == 0 {
  152. win_id = code
  153. win_name = v
  154. }
  155. win_ids = append(win_ids, code)
  156. }
  157. return win_id, win_name, strings.Join(win_ids, ",")
  158. }
  159. // 获取候选人相关信息
  160. func getWinerorder(tmp map[string]interface{}, win string) ([]string, []string) {
  161. o_win_names, o_win_ids := []string{}, []string{}
  162. winnerorder := u.IsMarkInterfaceMap(tmp["winnerorder"])
  163. for k, v := range winnerorder {
  164. if k >= 5 {
  165. break
  166. }
  167. entname := util.ObjToString(v["entname"])
  168. if entname != win {
  169. o_win_ids = append(o_win_ids, u.GetNameId(entname))
  170. o_win_names = append(o_win_names, entname)
  171. }
  172. }
  173. return o_win_ids, o_win_names
  174. }
  175. // 分包信息清洗与过滤...
  176. func FilterPackageInfos(tmp map[string]interface{}) []map[string]interface{} {
  177. new_packages := []map[string]interface{}{}
  178. s_winner := util.ObjToString(tmp["s_winner"])
  179. if s_winner == "" {
  180. return new_packages
  181. }
  182. winArr := strings.Split(s_winner, ",")
  183. if packages := util.ObjToMap(tmp["package"]); packages != nil {
  184. for k, v := range *packages {
  185. if pkg := util.ObjToMap(v); pkg != nil && k != "" {
  186. if win := util.ObjToString((*pkg)["winner"]); win != "" {
  187. if IsExistsWins(winArr, win) {
  188. new_packages = append(new_packages, map[string]interface{}{k: v})
  189. }
  190. }
  191. }
  192. }
  193. }
  194. return new_packages
  195. }
  196. // 是否存在单位
  197. func IsExistsWins(winArr []string, win string) bool {
  198. for _, v := range winArr {
  199. if v == win {
  200. return true
  201. }
  202. }
  203. return false
  204. }
  205. // 简易清洗...
  206. func cleaname(name string) string {
  207. nameArr := strings.Split(name, ",")
  208. new_nameArr := []string{}
  209. for _, v := range nameArr {
  210. if utf8.RuneCountInString(v) < 50 {
  211. new_nameArr = append(new_nameArr, v)
  212. }
  213. }
  214. return strings.Join(new_nameArr, ",")
  215. }