pkg.go 6.6 KB

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