pkg.go 5.6 KB

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