package tool import ( "data_ai/extract" "data_ai/ul" log "github.com/donnie4w/go-logger/logger" "sync" "time" ) // 工具修正程序 func StartToolInfo() { log.Debug("工具开始大模型修正数据······") q := map[string]interface{}{} pool_mgo := make(chan bool, ul.Reading) wg_mgo := &sync.WaitGroup{} sess := ul.SourceMgo.GetMgoConn() defer ul.SourceMgo.DestoryMongoConn(sess) total, isok := 0, 0 it := sess.DB(ul.SourceMgo.DbName).C(ul.Ext_Name).Find(&q).Sort("_id").Iter() for tmp := make(map[string]interface{}); it.Next(&tmp); total++ { if total%100 == 0 { log.Debug("cur index ", total) } isok++ pool_mgo <- true wg_mgo.Add(1) go func(tmp map[string]interface{}) { defer func() { <-pool_mgo wg_mgo.Done() }() u_id, s_id := "", false if sid, bid := tmp["_id"].(string); bid { s_id = true u_id = sid } else { u_id = ul.BsonTOStringId(tmp["_id"]) } data := extract.ResolveInfo(tmp, u_id) if len(data) > 0 && u_id != "" { //更新- update_info := make(map[string]interface{}, 0) update_info["ai_zhipu"] = data tmp["ai_zhipu"] = data //是否删除 is_unset := ul.ChooseCheckDataAI(tmp, &update_info) if update_info["com_package"] == nil { //构建单包信息··· com_package := ul.CreatSingleFieldInfo(tmp, update_info) update_info["com_package"] = com_package } //补充规则大全···· getReplenishRules(tmp, update_info) //最终单位修正与选取 getTheBestUnit(tmp, update_info) //校验金额与折扣率(删除金额) un_bid := getVerifyBidDiscount(tmp, update_info) //校验是否科学计数法影响金额 getScientificNotation(tmp, update_info) //最终更新 if len(update_info) > 0 { if s_id { ul.SourceMgo.UpdateStrId(ul.Ext_Name, u_id, map[string]interface{}{ "$set": update_info, }) } else { ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{ "$set": update_info, }) } } if is_unset { if s_id { ul.SourceMgo.UpdateStrId(ul.Ext_Name, u_id, map[string]interface{}{ "$unset": ul.Unset_Check, }) } else { ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{ "$unset": ul.Unset_Check, }) } } if un_bid && !is_unset { if s_id { ul.SourceMgo.UpdateStrId(ul.Ext_Name, u_id, map[string]interface{}{ "$unset": map[string]interface{}{"bidamount": 1}, }) } else { ul.SourceMgo.UpdateById(ul.Ext_Name, u_id, map[string]interface{}{ "$unset": map[string]interface{}{"bidamount": 1}, }) } } } }(tmp) tmp = make(map[string]interface{}) } wg_mgo.Wait() log.Debug("ai is over ...") } // 测试验证单条工具更新··· func TestToolSingleInfo(name string, tmpid string) { log.Debug("测试单条数据数据···") now := time.Now().Unix() tmp := ul.BidMgo.FindById(name, tmpid) if len(tmp) == 0 || tmp == nil { log.Debug("未查询到数据...", tmpid) return } u_id := ul.BsonTOStringId(tmp["_id"]) data := extract.ResolveInfo(tmp, u_id) if len(data) > 0 || u_id == "" { tmp["ai_zhipu"] = data } log.Debug("耗时···", time.Now().Unix()-now) }