|
@@ -6,6 +6,7 @@ import (
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
|
"log"
|
|
|
mu "mfw/util"
|
|
|
+ "mgoutil/mongodb"
|
|
|
"qfw/util"
|
|
|
"regexp"
|
|
|
"strings"
|
|
@@ -13,6 +14,7 @@ import (
|
|
|
"time"
|
|
|
"unicode/utf8"
|
|
|
|
|
|
+ "github.com/goinggo/mapstructure"
|
|
|
"github.com/robfig/cron"
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
|
)
|
|
@@ -29,12 +31,26 @@ var BackRegexp = map[string][]*regexp.Regexp{}
|
|
|
var BackRepRegexp = map[string][]RegexpInfo{}
|
|
|
var BlackRegexp = map[string][]*regexp.Regexp{}
|
|
|
|
|
|
+var (
|
|
|
+ //从标题获取项目编号
|
|
|
+ titleGetPc = regexp.MustCompile("^([-0-9a-zA-Z第号采招政询电审竞#]{8,}[-0-9a-zA-Z#]+)")
|
|
|
+ titleGetPc1 = regexp.MustCompile("[\\[【((](.{0,6}(编号|编码|项号|包号|代码|标段?号)[::为])?([-0-9a-zA-Z第号采招政询电审竞#]{5,}([\\[\\]()()][-0-9a-zA-Z第号采招审竞#]+[\\[\\]()()][-0-9a-zA-Z第号采招审竞#]+)?)[\\]】))]")
|
|
|
+ titleGetPc2 = regexp.MustCompile("([-0-9a-zA-Z第号采政招询电审竞#]{8,}[-0-9a-zA-Z#]+)(.{0,5}公告)?$")
|
|
|
+ //项目编号过滤
|
|
|
+ pcReplace = regexp.MustCompile("([\\[【((〖〔《{﹝{](重|第?[二三四再]次.{0,4})[\\]】))〗〕》}﹞}])$|[\\[\\]【】()()〖〗〔〕《》{}﹝﹞-;{}– ]+|(号|重|第?[二三四五再]次(招标)?)$|[ __]+|((采购)?项目|采购(项目)?)$")
|
|
|
+ //项目编号只是数字或只是字母4个以下
|
|
|
+ StrOrNum = regexp.MustCompile("^[0-9_-]{1,4}$|^[a-zA-Z_-]{1,4}$")
|
|
|
+ //纯数字或纯字母
|
|
|
+ StrOrNum2 = regexp.MustCompile("^[0-9_-]+$|^[a-zA-Z_-]+$")
|
|
|
+ //含分包词,招标未识别分包 合并到一个项目
|
|
|
+ KeyPackage = regexp.MustCompile("[0-9a-zA-Z一二三四五六七八九十ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ]+.{0,2}(包|段)|(包|段)[0-9a-zA-Z一二三四五六七八九十ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ]+.{0,2}")
|
|
|
+)
|
|
|
+
|
|
|
type RegexpInfo struct {
|
|
|
regs *regexp.Regexp
|
|
|
repstr string
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//项目合并对象
|
|
|
type ProjectTask struct {
|
|
|
InitMinTime int64 //最小时间,小于0的处理一次
|
|
@@ -146,6 +162,7 @@ func (p *ProjectTask) updateAllQueue() {
|
|
|
defer func() {
|
|
|
<-sp
|
|
|
}()
|
|
|
+ util.Debug("1111111111111111")
|
|
|
MongoTool.UpSertBulk(p.coll, arru...)
|
|
|
}(arru[:indexu])
|
|
|
arru = make([][]map[string]interface{}, p.saveSize)
|
|
@@ -324,174 +341,51 @@ func (p *ProjectTask) taskUpdateInfo(udpInfo map[string]interface{}) {
|
|
|
defer util.Catch()
|
|
|
infoid := udpInfo["infoid"].(string)
|
|
|
infoMap := MongoTool.FindById(ExtractColl, infoid)
|
|
|
+ if infoMap["modifyinfo"] == nil {
|
|
|
+ util.Debug("does not exist modifyinfo ---,", infoid)
|
|
|
+ return
|
|
|
+ }
|
|
|
client := Es.GetEsConn()
|
|
|
defer Es.DestoryEsConn(client)
|
|
|
- esquery := `{"query": {"bool": {"must": [{"term": {"list.infoid": "`+infoid+`"}}]}}}`
|
|
|
+ esquery := `{"query": {"bool": {"must": [{"match": {"ids": "`+infoid+`"}}]}}}`
|
|
|
data := Es.Get(Index, Itype, esquery)
|
|
|
if len(*data) > 0 {
|
|
|
- info := ParseInfo(infoMap)
|
|
|
- p.updateJudge(infoMap, info, util.ObjToString((*data)[0]["_id"]))
|
|
|
+ pid := util.ObjToString(((*data)[0])["_id"])
|
|
|
+ p.updateJudge(infoMap, pid)
|
|
|
}else {
|
|
|
- util.Debug("Not find project---", infoid)
|
|
|
+ util.Debug("not find project---,", infoid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func (p *ProjectTask) taskQuery() {
|
|
|
+func (p *ProjectTask) taskUpdatePro(udpInfo map[string]interface{}) {
|
|
|
defer util.Catch()
|
|
|
- count := 0
|
|
|
- sess := MongoTool.GetMgoConn()
|
|
|
- defer MongoTool.DestoryMongoConn(sess)
|
|
|
- fields := map[string]interface{} {"budget": 1, "bidamount": 1, "package": 1}
|
|
|
- ms := sess.DB(MongoTool.DbName).C(UpdateColl).Find(map[string]interface{}{}).Select(fields)
|
|
|
- query := ms.Iter()
|
|
|
-L:
|
|
|
- for {
|
|
|
- tmp := make(map[string]interface{})
|
|
|
- if query.Next(&tmp) {
|
|
|
- lastid := tmp["_id"]
|
|
|
- tmp["id"] = tmp["_id"].(primitive.ObjectID).Hex();
|
|
|
- if count%1000 == 0 {
|
|
|
- log.Println("current modify", count, lastid)
|
|
|
- }
|
|
|
- p.taskUpdateMoney(tmp)
|
|
|
- count++
|
|
|
- } else {
|
|
|
- break L
|
|
|
- }
|
|
|
+ util.Debug(udpInfo)
|
|
|
+ pid := util.ObjToString(udpInfo["pid"])
|
|
|
+ updateMap := util.ObjToMap(udpInfo["updateField"])
|
|
|
+ if pid == "" || len(*updateMap) == 0 {
|
|
|
+ util.Debug("参数有误")
|
|
|
+ return
|
|
|
}
|
|
|
-}
|
|
|
-
|
|
|
-//修改公告信息的预算/中标金额
|
|
|
-func (p *ProjectTask) taskUpdateMoney(udpInfo map[string]interface{}) {
|
|
|
- defer util.Catch()
|
|
|
- id := udpInfo["id"].(string)
|
|
|
- budget := util.Float64All(udpInfo["budget"])
|
|
|
- bidamount := util.Float64All(udpInfo["bidamount"])
|
|
|
-
|
|
|
- client := Es.GetEsConn()
|
|
|
- defer Es.DestoryEsConn(client)
|
|
|
- esquery := `{"query": {"bool": {"must": [{"term": {"list.infoid": "`+id+`"}}]}}}`
|
|
|
- data := Es.Get(Index, Itype, esquery)
|
|
|
- if len(*data) > 0 {
|
|
|
- pid := util.ObjToString((*data)[0]["_id"])
|
|
|
- pro := MongoTool.FindById(ProjectColl, pid)
|
|
|
- if len(pro) == 0 {
|
|
|
- util.Debug("未找到项目, pid=", pid)
|
|
|
- return
|
|
|
- }
|
|
|
- var info *map[string]interface{}
|
|
|
- for _, v := range []interface{}(pro["list"].(primitive.A)){
|
|
|
- v1 := v.(map[string]interface{})
|
|
|
- if util.ObjToString(v1["infoid"]) == id {
|
|
|
- info = util.ObjToMap(v)
|
|
|
- infoField := util.ObjToMap(pro["infofield"])
|
|
|
- if udpInfo["budget"] != nil{
|
|
|
- util.Debug("update-------", (*info)["infoid"])
|
|
|
- //if pro["budget"] == (*info)["budget"] {
|
|
|
- // pro["budget"] = budget
|
|
|
- //}
|
|
|
- //多包中的金额
|
|
|
- if util.IntAll(pro["multipackage"]) == 1 {
|
|
|
- if packages, ok := pro["package"].(map[string]interface{}); ok {
|
|
|
- M :
|
|
|
- for k, v := range packages{
|
|
|
- v1 := []interface{}(v.(primitive.A))
|
|
|
- for _, v2 := range v1{
|
|
|
- v3 := v2.(map[string]interface{})
|
|
|
- if util.ObjToString(v3["infoid"]) == id {
|
|
|
- if v3["budget"] != nil {
|
|
|
- pkg := udpInfo["package"].(map[string]interface{})
|
|
|
- tmp := pkg[k].(map[string]interface{})
|
|
|
- v3["budget"] = tmp["budget"]
|
|
|
- }
|
|
|
- }else {
|
|
|
- break M
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- (*info)["budget"] = budget
|
|
|
- (*util.ObjToMap((*infoField)[id]))["budget"] = budget
|
|
|
- if pro["sortprice"] == (*info)["budget"] {
|
|
|
- pro["sortprice"] = budget
|
|
|
- }
|
|
|
- }else {
|
|
|
- delete(*info, "budget")
|
|
|
- }
|
|
|
- if udpInfo["bidamount"] != nil{
|
|
|
- //if pro["bidamount"] == (*info)["bidamount"] {
|
|
|
- // pro["bidamount"] = bidamount
|
|
|
- //}
|
|
|
- v1["bidamount"] = bidamount
|
|
|
- if util.IntAll(pro["multipackage"]) == 1 {
|
|
|
- if packages, ok := pro["package"].(map[string]interface{}); ok {
|
|
|
- for k, v := range packages{
|
|
|
- v1 := []interface{}(v.(primitive.A))
|
|
|
- for _, v2 := range v1{
|
|
|
- v3 := v2.(map[string]interface{})
|
|
|
- if util.ObjToString(v3["infoid"]) == id {
|
|
|
- if v3["bidamount"] != nil {
|
|
|
- pkg := udpInfo["package"].(map[string]interface{})
|
|
|
- tmp := pkg[k].(map[string]interface{})
|
|
|
- v3["bidamount"] = tmp["bidamount"]
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- (*info)["bidamount"] = bidamount
|
|
|
- (*util.ObjToMap((*infoField)[id]))["bidamount"] = bidamount
|
|
|
- if pro["sortprice"] == (*info)["bidamount"] {
|
|
|
- pro["sortprice"] = bidamount
|
|
|
- }
|
|
|
- }else {
|
|
|
- delete(*info, "bidamount")
|
|
|
- }
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- var project *ProjectInfo
|
|
|
- var pInfo *Info
|
|
|
- bys, _ := json.Marshal(pro)
|
|
|
- _ = json.Unmarshal(bys, &project)
|
|
|
- bys1, _ := json.Marshal(info)
|
|
|
- _ = json.Unmarshal(bys1, &pInfo)
|
|
|
- if len(project.Ids) > 1 {
|
|
|
- CountAmount(project, pInfo, *info)
|
|
|
- if project.Budget > 0 {
|
|
|
- pro["budget"] = project.Budget
|
|
|
- }
|
|
|
- if project.Bidamount > 0 {
|
|
|
- pro["bidamount"] = project.Bidamount
|
|
|
- }
|
|
|
- }else {
|
|
|
- pro["budget"] = budget
|
|
|
- pro["bidamount"] = bidamount
|
|
|
- if budget > bidamount {
|
|
|
- pro["sortprice"] = budget
|
|
|
+ proMap := MongoTool.FindById(ProjectColl, pid)
|
|
|
+ if len(proMap) > 1 {
|
|
|
+ proMap["reason"] = "直接修改项目字段信息"
|
|
|
+ backupPro(proMap)
|
|
|
+ delete(proMap, "reason")
|
|
|
+ updataMap := make(map[string]interface{})
|
|
|
+ modifyInfo := make(map[string]interface{})
|
|
|
+ for k, v := range *updateMap{
|
|
|
+ if strings.Contains(k, "time") {
|
|
|
+ updataMap[k] = util.Int64All(v)
|
|
|
}else {
|
|
|
- pro["sortprice"] = bidamount
|
|
|
+ updataMap[k] = v
|
|
|
}
|
|
|
+ modifyInfo[k] = true
|
|
|
}
|
|
|
- set := map[string]interface{}{
|
|
|
- "$set": pro,
|
|
|
- }
|
|
|
- MongoTool.UpdateById(ProjectColl, pid, set)
|
|
|
-
|
|
|
- loadStart := util.Int64All(Sysconfig["loadStart"])
|
|
|
- if loadStart > -1 && project.LastTime >loadStart {
|
|
|
- util.Debug("内存中存在该项目信息", project.Id)
|
|
|
- p.AllIdsMapLock.Lock()
|
|
|
- p.AllIdsMap[pid].P = project
|
|
|
- p.AllIdsMapLock.Unlock()
|
|
|
- }
|
|
|
-
|
|
|
- bol := Es.DelById(Index, Itype, pid)
|
|
|
+ updataMap["modifyinfo"] = modifyInfo
|
|
|
+ util.Debug(updataMap)
|
|
|
+ bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": updataMap})
|
|
|
if bol {
|
|
|
- util.Debug("删除es索引, pid------", pid)
|
|
|
- //调udp生索引
|
|
|
+ //es索引
|
|
|
by, _ := json.Marshal(map[string]interface{}{
|
|
|
"query": map[string]interface{}{
|
|
|
"_id": bson.M{
|
|
@@ -503,24 +397,40 @@ func (p *ProjectTask) taskUpdateMoney(udpInfo map[string]interface{}) {
|
|
|
util.Debug(string(by))
|
|
|
_ = udpclient.WriteUdp(by, mu.OP_TYPE_DATA, toaddr[1])
|
|
|
}
|
|
|
+ // 内存
|
|
|
+ var pro ProjectInfo
|
|
|
+ err := mapstructure.Decode(proMap, &pro)
|
|
|
+ if err != nil {
|
|
|
+ util.Debug(err)
|
|
|
+ }
|
|
|
+ p.AllIdsMapLock.Lock()
|
|
|
+ if v, ok := p.AllIdsMap[pid]; ok {
|
|
|
+ v.P = &pro
|
|
|
+ }
|
|
|
+ p.AllIdsMapLock.Unlock()
|
|
|
+ }else {
|
|
|
+ util.Debug("Not find project---", pid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func FindMoney(key string, project map[string]interface{}) float64 {
|
|
|
- money := -0.1
|
|
|
- for i, v := range []interface{}(project["list"].(primitive.A)){
|
|
|
- v1 := v.(map[string]interface{})
|
|
|
- if i == 0 {
|
|
|
- if v1[key] != nil {
|
|
|
- money = util.Float64All(v1[key])
|
|
|
- }
|
|
|
- }else {
|
|
|
- if v1[key] != nil && util.Float64All(v1[key]) > money {
|
|
|
- money = util.Float64All(v1[key])
|
|
|
- }
|
|
|
- }
|
|
|
+func (p *ProjectTask) delInfoPro(udpInfo map[string]interface{}) {
|
|
|
+ defer util.Catch()
|
|
|
+ util.Debug(udpInfo)
|
|
|
+ infoid := util.ObjToString(udpInfo["infoid"])
|
|
|
+ if infoid == "" {
|
|
|
+ util.Debug("参数有误")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ client := Es.GetEsConn()
|
|
|
+ defer Es.DestoryEsConn(client)
|
|
|
+ esquery := `{"query": {"bool": {"must": [{"match": {"ids": "`+infoid+`"}}]}}}`
|
|
|
+ data := Es.Get(Index, Itype, esquery)
|
|
|
+ if len(*data) > 0 {
|
|
|
+ pid := util.ObjToString(((*data)[0])["_id"])
|
|
|
+ p.delJudge(infoid, pid)
|
|
|
+ }else {
|
|
|
+ util.Debug("not find project---,", infoid)
|
|
|
}
|
|
|
- return money
|
|
|
}
|
|
|
|
|
|
func StringTOBsonId(id string) primitive.ObjectID {
|
|
@@ -633,21 +543,6 @@ L:
|
|
|
|
|
|
}
|
|
|
|
|
|
-var (
|
|
|
- //从标题获取项目编号
|
|
|
- titleGetPc = regexp.MustCompile("^([-0-9a-zA-Z第号采招政询电审竞#]{8,}[-0-9a-zA-Z#]+)")
|
|
|
- titleGetPc1 = regexp.MustCompile("[\\[【((](.{0,6}(编号|编码|项号|包号|代码|标段?号)[::为])?([-0-9a-zA-Z第号采招政询电审竞#]{5,}([\\[\\]()()][-0-9a-zA-Z第号采招审竞#]+[\\[\\]()()][-0-9a-zA-Z第号采招审竞#]+)?)[\\]】))]")
|
|
|
- titleGetPc2 = regexp.MustCompile("([-0-9a-zA-Z第号采政招询电审竞#]{8,}[-0-9a-zA-Z#]+)(.{0,5}公告)?$")
|
|
|
- //项目编号过滤
|
|
|
- pcReplace = regexp.MustCompile("([\\[【((〖〔《{﹝{](重|第?[二三四再]次.{0,4})[\\]】))〗〕》}﹞}])$|[\\[\\]【】()()〖〗〔〕《》{}﹝﹞-;{}– ]+|(号|重|第?[二三四五再]次(招标)?)$|[ __]+|((采购)?项目|采购(项目)?)$")
|
|
|
- //项目编号只是数字或只是字母4个以下
|
|
|
- StrOrNum = regexp.MustCompile("^[0-9_-]{1,4}$|^[a-zA-Z_-]{1,4}$")
|
|
|
- //纯数字或纯字母
|
|
|
- StrOrNum2 = regexp.MustCompile("^[0-9_-]+$|^[a-zA-Z_-]+$")
|
|
|
- //含分包词,招标未识别分包 合并到一个项目
|
|
|
- KeyPackage = regexp.MustCompile("[0-9a-zA-Z一二三四五六七八九十ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ]+.{0,2}(包|段)|(包|段)[0-9a-zA-Z一二三四五六七八九十ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ]+.{0,2}")
|
|
|
-)
|
|
|
-
|
|
|
func (p *ProjectTask) CommonMerge(tmp map[string]interface{}, info *Info) {
|
|
|
if info != nil && !((info.pnbval == 1 && info.Buyer != "") || info.pnbval == 0) {
|
|
|
if jsonData, ok := tmp["jsondata"].(map[string]interface{}); ok {
|
|
@@ -812,13 +707,30 @@ func ParseInfo(tmp map[string]interface{}) (info *Info) {
|
|
|
return thisinfo
|
|
|
}
|
|
|
|
|
|
-func (p *ProjectTask) updateJudge(infoMap map[string]interface{}, info *Info, pInfoId string) {
|
|
|
- var index = -1 //0:第一个,1:中间,2:最后一个
|
|
|
- tmpPro := MongoTool.FindById(ProjectColl, pInfoId)
|
|
|
+func (p *ProjectTask) updateJudge(infoMap map[string]interface{}, pid string) {
|
|
|
+ tmpPro := MongoTool.FindById(ProjectColl, pid)
|
|
|
+
|
|
|
+ modifyProMap := make(map[string]interface{}) // 修改项目的字段
|
|
|
+ for k := range tmpPro{
|
|
|
+ if modifyMap, ok := infoMap["modifyinfo"].(map[string]interface{}); ok {
|
|
|
+ if modifyMap[k] != nil {
|
|
|
+ modifyProMap[k] = infoMap[k]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(modifyProMap) == 0 {
|
|
|
+ util.Debug("修改招标公告信息不需要修改项目信息字段", infoMap["_id"])
|
|
|
+ return
|
|
|
+ }
|
|
|
+ p.AllIdsMapLock.Lock()
|
|
|
+ _, ok := p.AllIdsMap[pid]
|
|
|
+ p.AllIdsMapLock.Unlock()
|
|
|
ids := []interface{}(tmpPro["ids"].(primitive.A))
|
|
|
- infoList := []interface{}(tmpPro["list"].(primitive.A))
|
|
|
+ index, position := -1, 0 // index 0:第一个,1:中间,2:最后一个 position list中位置
|
|
|
+
|
|
|
for i, v := range ids {
|
|
|
- if util.ObjToString(v) == util.ObjToString(infoMap["_id"]) {
|
|
|
+ if util.ObjToString(v) == mongodb.BsonIdToSId(infoMap["_id"]) {
|
|
|
+ position = i
|
|
|
if i == 0 {
|
|
|
index = 0
|
|
|
}else if i == len(ids) - 1 {
|
|
@@ -828,30 +740,47 @@ func (p *ProjectTask) updateJudge(infoMap map[string]interface{}, info *Info, pI
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- proListMap := infoList[index].(map[string]interface{})
|
|
|
- modifyMap, f := modifyEle(proListMap, infoMap)
|
|
|
- //projecthref字段
|
|
|
- jsonData := infoMap["jsondata"].(map[string]interface{})
|
|
|
- if jsonData != nil && jsonData["projecthref"] != nil {
|
|
|
- proHref := jsonData["projecthref"].(string)
|
|
|
- infoMap["projecthref"] = proHref
|
|
|
- p.mapHrefLock.Lock()
|
|
|
- pid := p.mapHref[proHref]
|
|
|
- p.mapHrefLock.Unlock()
|
|
|
- if pid == pInfoId {
|
|
|
- p.modifyUpdate(pInfoId, index, info, infoMap, tmpPro, modifyMap)
|
|
|
- return
|
|
|
+ if ok {
|
|
|
+ // 周期内
|
|
|
+ //projecthref字段
|
|
|
+ if infoMap["jsondata"] != nil {
|
|
|
+ jsonData := infoMap["jsondata"].(map[string]interface{})
|
|
|
+ if proHref, ok := jsonData["projecthref"].(string); ok {
|
|
|
+ p.mapHrefLock.Lock()
|
|
|
+ tempId := p.mapHref[proHref]
|
|
|
+ p.mapHrefLock.Unlock()
|
|
|
+ if pid == tempId {
|
|
|
+ p.modifyUpdate(pid, index, position, tmpPro, modifyProMap)
|
|
|
+ }else {
|
|
|
+ util.Debug("projecthref data id err---pid=" + pid, "---"+tempId)
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ f := modifyEle(modifyProMap)
|
|
|
+ if f {
|
|
|
+ //合并、修改
|
|
|
+ util.Debug("合并修改更新", "----------------------------")
|
|
|
+ p.mergeAndModify(pid, index, position, infoMap, tmpPro, modifyProMap)
|
|
|
+ } else {
|
|
|
+ //修改
|
|
|
+ util.Debug("修改更新", "----------------------------")
|
|
|
+ p.modifyUpdate(pid, index, position, tmpPro, modifyProMap)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ f := modifyEle(modifyProMap)
|
|
|
+ if f {
|
|
|
+ //合并、修改
|
|
|
+ util.Debug("合并修改更新", "----------------------------")
|
|
|
+ p.mergeAndModify(pid, index, position, infoMap, tmpPro, modifyProMap)
|
|
|
+ } else {
|
|
|
+ //修改
|
|
|
+ util.Debug("修改更新", "----------------------------")
|
|
|
+ p.modifyUpdate(pid, index, position, tmpPro, modifyProMap)
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- if f {
|
|
|
- //合并、修改
|
|
|
- log.Println("合并修改更新", "----------------------------")
|
|
|
- p.mergeAndModify(pInfoId, index, info, infoMap, tmpPro, modifyMap)
|
|
|
- } else {
|
|
|
- //修改
|
|
|
- log.Println("修改更新", "----------------------------")
|
|
|
- p.modifyUpdate(pInfoId, index, info, infoMap, tmpPro, modifyMap)
|
|
|
+ }else {
|
|
|
+ // 周期外
|
|
|
+ p.modifyUpdate(pid, index, position, tmpPro, infoMap)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -860,35 +789,26 @@ var Elements = []string{
|
|
|
"projectcode",
|
|
|
"buyer",
|
|
|
"agency",
|
|
|
- "budget",
|
|
|
- "bidamount",
|
|
|
"area",
|
|
|
"city",
|
|
|
"publishtime",
|
|
|
+ "toptype",
|
|
|
+ "subtype",
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
-判断修改的字段是否是影响合并流程的要素字段
|
|
|
+ 修改的字段
|
|
|
+ 修改的字段是否是影响合并流程的要素字段
|
|
|
*/
|
|
|
-func modifyEle(tmpPro map[string]interface{}, tmp map[string]interface{}) (map[string]interface{}, bool) {
|
|
|
- modifyMap := map[string]interface{}{}
|
|
|
- for k := range tmpPro {
|
|
|
- for k1 := range tmp {
|
|
|
- if k == k1 && tmpPro[k] != tmp[k1] {
|
|
|
- modifyMap[k] = tmp[k1]
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- for k := range modifyMap {
|
|
|
- for _, str := range Elements {
|
|
|
- if k == str {
|
|
|
- return modifyMap, true
|
|
|
- }
|
|
|
+func modifyEle(tmp map[string]interface{}) bool {
|
|
|
+ merge := false
|
|
|
+ for _, str := range Elements {
|
|
|
+ if tmp[str] != nil {
|
|
|
+ merge = true
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
- delete(modifyMap, "_id")
|
|
|
- return modifyMap, false
|
|
|
+ return merge
|
|
|
}
|
|
|
|
|
|
//补全位置信息
|