pkg.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  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(u.RegClean.ReplaceAllString(util.ObjToString(v["itemname"]), ""), 255)
  73. info["s_brand"] = u.CleanLength(u.RegClean.ReplaceAllString(util.ObjToString(v["brandname"]), ""), 255)
  74. info["s_model"] = u.CleanLength(u.RegClean.ReplaceAllString(util.ObjToString(v["brandname"]), "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"] = u.RegClean.ReplaceAllString(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. winner = u.RegClean.ReplaceAllString(winner, "")
  115. info := map[string]interface{}{}
  116. info["s_info_id"] = tmpid
  117. info["i_package_id"] = pid
  118. info["d_createtime"] = time.Now().Format(util.Date_Full_Layout)
  119. wins := strings.Split(winner, ",")
  120. bidder_id, bidder_name, other_bidder_id := getWinsNameId(wins)
  121. info["s_bidder_id"] = bidder_id
  122. info["i_is_winner"] = 1
  123. if len(wins) > 1 {
  124. info["s_bidder_name"] = bidder_name
  125. info["s_other_bidder_name"] = winner
  126. info["s_other_bidder_id"] = other_bidder_id
  127. info["i_is_bidders"] = 1
  128. }
  129. //保存服务...
  130. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  131. //候选人相关情况
  132. if isF {
  133. o_win_ids, o_win_names := getWinerorder(tmp, wins[0])
  134. for k, v := range o_win_ids {
  135. o_info := map[string]interface{}{}
  136. o_info["s_info_id"] = tmpid
  137. o_info["s_bidder_id"] = v
  138. o_info["s_bidder_name"] = o_win_names[k]
  139. o_info["i_is_winner"] = 0
  140. o_info["d_updatetime"] = time.Now().Format(util.Date_Full_Layout)
  141. //保存服务...
  142. u.InsertGlobalMysqlData(u.T_dwd_f_bid_package_bidder_baseinfo, info, tmpid)
  143. }
  144. }
  145. }
  146. }
  147. // 获取所有投标人的相关标识
  148. func getWinsNameId(wins []string) (string, string, string) {
  149. win_id, win_name, win_ids := "", "", []string{}
  150. for k, v := range wins {
  151. code := u.GetNameId(v)
  152. if k == 0 {
  153. win_id = code
  154. win_name = v
  155. }
  156. win_ids = append(win_ids, code)
  157. }
  158. return win_id, win_name, strings.Join(win_ids, ",")
  159. }
  160. // 获取候选人相关信息
  161. func getWinerorder(tmp map[string]interface{}, win string) ([]string, []string) {
  162. o_win_names, o_win_ids := []string{}, []string{}
  163. winnerorder := u.IsMarkInterfaceMap(tmp["winnerorder"])
  164. for k, v := range winnerorder {
  165. if k >= 5 {
  166. break
  167. }
  168. entname := util.ObjToString(v["entname"])
  169. entname = u.RegClean.ReplaceAllString(entname, "")
  170. if entname != win {
  171. o_win_ids = append(o_win_ids, u.GetNameId(entname))
  172. o_win_names = append(o_win_names, entname)
  173. }
  174. }
  175. return o_win_ids, o_win_names
  176. }
  177. // 分包信息清洗与过滤...
  178. func FilterPackageInfos(tmp map[string]interface{}) []map[string]interface{} {
  179. new_packages := []map[string]interface{}{}
  180. s_winner := util.ObjToString(tmp["s_winner"])
  181. if s_winner == "" {
  182. return new_packages
  183. }
  184. winArr := strings.Split(s_winner, ",")
  185. if packages := util.ObjToMap(tmp["package"]); packages != nil {
  186. for k, v := range *packages {
  187. if pkg := util.ObjToMap(v); pkg != nil && k != "" {
  188. if win := u.RegClean.ReplaceAllString(util.ObjToString((*pkg)["winner"]), ""); win != "" {
  189. if IsExistsWins(winArr, win) {
  190. new_packages = append(new_packages, map[string]interface{}{k: v})
  191. }
  192. }
  193. }
  194. }
  195. }
  196. return new_packages
  197. }
  198. // 是否存在单位
  199. func IsExistsWins(winArr []string, win string) bool {
  200. for _, v := range winArr {
  201. if v == win {
  202. return true
  203. }
  204. }
  205. return false
  206. }
  207. // 简易清洗...
  208. func cleaname(name string) string {
  209. nameArr := strings.Split(name, ",")
  210. new_nameArr := []string{}
  211. for _, v := range nameArr {
  212. if utf8.RuneCountInString(v) < 50 {
  213. v = u.RegClean.ReplaceAllString(v, "")
  214. new_nameArr = append(new_nameArr, v)
  215. }
  216. }
  217. return strings.Join(new_nameArr, ",")
  218. }