tool.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package tool
  2. import (
  3. "data_ai/extract"
  4. "data_ai/ul"
  5. log "github.com/donnie4w/go-logger/logger"
  6. "github.com/google/uuid"
  7. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  8. "strings"
  9. "sync"
  10. "time"
  11. )
  12. // 工具修正程序
  13. func StartToolInfo() {
  14. log.Debug("工具开始大模型修正数据······")
  15. q := map[string]interface{}{}
  16. pool_mgo := make(chan bool, ul.Reading)
  17. wg_mgo := &sync.WaitGroup{}
  18. sess := ul.SourceMgo.GetMgoConn()
  19. defer ul.SourceMgo.DestoryMongoConn(sess)
  20. total, isok := 0, 0
  21. it := sess.DB(ul.SourceMgo.DbName).C(ul.Ext_Name).Find(&q).Sort("_id").Iter()
  22. for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
  23. if total%100 == 0 {
  24. log.Debug("cur index ", total)
  25. }
  26. isok++
  27. pool_mgo <- true
  28. wg_mgo.Add(1)
  29. go func(tmp map[string]interface{}) {
  30. defer func() {
  31. <-pool_mgo
  32. wg_mgo.Done()
  33. }()
  34. u_id := ul.BsonTOStringId(tmp["_id"])
  35. data := extract.ResolveInfo(tmp)
  36. if len(data) > 0 || u_id == "" {
  37. tmp["ai_zhipu"] = data
  38. update_info := make(map[string]interface{}, 0)
  39. is_unset := ul.ChooseCheckDataAI(tmp, &update_info)
  40. if update_info["com_package"] == nil { //构建单包信息···
  41. com_package := CreatSingleFieldInfo(tmp, update_info)
  42. update_info["com_package"] = com_package
  43. }
  44. update_info["ai_zhipu"] = data
  45. //清洗与记录
  46. if len(update_info) > 0 {
  47. //$set
  48. ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{
  49. "$set": update_info,
  50. })
  51. }
  52. if is_unset {
  53. //"$unset"
  54. ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{
  55. "$unset": ul.Unset_Check,
  56. })
  57. }
  58. }
  59. }(tmp)
  60. tmp = make(map[string]interface{})
  61. }
  62. wg_mgo.Wait()
  63. log.Debug("ai is over ...")
  64. }
  65. // 测试验证单条工具更新···
  66. func TestToolSingleInfo(name string, tmpid string) {
  67. log.Debug("测试单条数据数据···")
  68. now := time.Now().Unix()
  69. tmp := ul.BidMgo.FindById(name, tmpid)
  70. if len(tmp) == 0 || tmp == nil {
  71. log.Debug("未查询到数据...", tmpid)
  72. return
  73. }
  74. u_id := ul.BsonTOStringId(tmp["_id"])
  75. data := extract.ResolveInfo(tmp)
  76. if len(data) > 0 || u_id == "" {
  77. tmp["ai_zhipu"] = data
  78. update_info := make(map[string]interface{}, 0)
  79. is_unset := ul.ChooseCheckDataAI(tmp, &update_info)
  80. if update_info["com_package"] == nil { //构建单包信息···
  81. com_package := CreatSingleFieldInfo(tmp, update_info)
  82. update_info["com_package"] = com_package
  83. }
  84. update_info["ai_zhipu"] = data
  85. //清洗与记录
  86. if len(update_info) > 0 {
  87. }
  88. if is_unset {
  89. }
  90. log.Debug(update_info)
  91. }
  92. log.Debug("耗时···", time.Now().Unix()-now)
  93. }
  94. // 工具更新程序
  95. //func StartToolUpdateInfo() {
  96. // log.Debug("工具开始大模型修正数据······")
  97. // q := map[string]interface{}{}
  98. // pool_mgo := make(chan bool, ul.Reading)
  99. // wg_mgo := &sync.WaitGroup{}
  100. // sess := ul.SourceMgo.GetMgoConn()
  101. // defer ul.SourceMgo.DestoryMongoConn(sess)
  102. // total, isok := 0, 0
  103. // it := sess.DB(ul.SourceMgo.DbName).C(ul.Ext_Name).Find(&q).Sort("_id").Iter()
  104. // for tmp := make(map[string]interface{}); it.Next(&tmp); total++ {
  105. // if total%100 == 0 {
  106. // log.Debug("cur index ", total)
  107. // }
  108. // isok++
  109. // pool_mgo <- true
  110. // wg_mgo.Add(1)
  111. // go func(tmp map[string]interface{}) {
  112. // defer func() {
  113. // <-pool_mgo
  114. // wg_mgo.Done()
  115. // }()
  116. // u_id := ul.BsonTOStringId(tmp["_id"])
  117. // b_id := qu.ObjToString(tmp["id"])
  118. // data := ul.BidMgo.FindById("bidding", b_id)
  119. // if len(data) > 0 && u_id != "" && b_id != "" && data["ai_zhipu"] != nil {
  120. // ai_zhipu := qu.ObjToMap(data["ai_zhipu"])
  121. // tmp["ai_zhipu"] = ai_zhipu
  122. // update_info := make(map[string]interface{}, 0)
  123. // is_unset := ul.ChooseCheckDataAI(tmp, &update_info)
  124. // update_info["ai_zhipu"] = ai_zhipu
  125. // //清洗与记录
  126. // if len(update_info) > 0 { //$set
  127. // ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{
  128. // "$set": update_info,
  129. // })
  130. // }
  131. // if is_unset { //"$unset"
  132. // ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{
  133. // "$unset": ul.Unset_Check,
  134. // })
  135. // }
  136. // }
  137. // }(tmp)
  138. // tmp = make(map[string]interface{})
  139. // }
  140. // wg_mgo.Wait()
  141. // log.Debug("ai update is over ...")
  142. //}
  143. func CreatSingleFieldInfo(tmp map[string]interface{}, update_info map[string]interface{}) []map[string]interface{} {
  144. pkgArr := []map[string]interface{}{}
  145. com_package := map[string]interface{}{}
  146. package_id := uuid.New().String()
  147. package_id = strings.ReplaceAll(package_id, "-", "")
  148. com_package["package_id"] = package_id
  149. com_package["name"] = qu.ObjToString(tmp["projectname"])
  150. com_package["projectcode"] = qu.ObjToString(tmp["projectcode"])
  151. com_package["packagecode"] = qu.ObjToString(tmp["packagecode"])
  152. com_package["contractcode"] = qu.ObjToString(tmp["contractcode"])
  153. if update_info["budget"] != nil {
  154. com_package["budget"] = update_info["budget"]
  155. } else {
  156. if tmp["budget"] != nil {
  157. com_package["budget"] = tmp["budget"]
  158. }
  159. }
  160. toptype := qu.ObjToString(update_info["toptype"])
  161. subtype := qu.ObjToString(update_info["subtype"])
  162. if toptype == "" {
  163. toptype = qu.ObjToString(tmp["toptype"])
  164. }
  165. if subtype == "" {
  166. subtype = qu.ObjToString(tmp["subtype"])
  167. }
  168. //中标类
  169. if toptype == "结果" || toptype == "其它" || subtype == "单一" {
  170. if update_info["bidamount"] != nil {
  171. com_package["bidamount"] = update_info["bidamount"]
  172. } else {
  173. if tmp["bidamount"] != nil {
  174. com_package["bidamount"] = tmp["bidamount"]
  175. }
  176. }
  177. if update_info["winner"] != nil {
  178. com_package["winner"] = update_info["winner"]
  179. } else {
  180. if tmp["winner"] != nil {
  181. com_package["winner"] = tmp["winner"]
  182. }
  183. }
  184. }
  185. pkgArr = append(pkgArr, com_package)
  186. return pkgArr
  187. }