|
@@ -16,8 +16,8 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
/**
|
|
/**
|
|
- 直接修改保存项目字段信息
|
|
|
|
- */
|
|
|
|
|
|
+直接修改保存项目字段信息
|
|
|
|
+*/
|
|
func (p *ProjectTask) modifyUpdate(pid string, index, position int, tmpPro, modifyProMap map[string]interface{}) {
|
|
func (p *ProjectTask) modifyUpdate(pid string, index, position int, tmpPro, modifyProMap map[string]interface{}) {
|
|
// 1-0 备份
|
|
// 1-0 备份
|
|
tmpPro["reason"] = "直接在原有项目上修改字段信息"
|
|
tmpPro["reason"] = "直接在原有项目上修改字段信息"
|
|
@@ -69,7 +69,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
// 修改内存
|
|
// 修改内存
|
|
p.modifyMem(tmpPro)
|
|
p.modifyMem(tmpPro)
|
|
}
|
|
}
|
|
- }else if index == 0 {
|
|
|
|
|
|
+ } else if index == 0 {
|
|
// 招标公告信息在原有项目中位于第1个
|
|
// 招标公告信息在原有项目中位于第1个
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
if merge {
|
|
if merge {
|
|
@@ -83,8 +83,8 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
Id := p.AllIdsMap[pInfoId]
|
|
Id := p.AllIdsMap[pInfoId]
|
|
p.AllIdsMapLock.Unlock()
|
|
p.AllIdsMapLock.Unlock()
|
|
proMem := Id.P
|
|
proMem := Id.P
|
|
- flag := true // 标记是否需要删除原有项目信息
|
|
|
|
- for _, v := range proList{
|
|
|
|
|
|
+ flag := true // 标记是否需要删除原有项目信息
|
|
|
|
+ for _, v := range proList {
|
|
v1 := v.(map[string]interface{})
|
|
v1 := v.(map[string]interface{})
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(v1["infoid"]))
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(v1["infoid"]))
|
|
if len(temp) == 0 {
|
|
if len(temp) == 0 {
|
|
@@ -105,7 +105,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
}
|
|
}
|
|
if flag {
|
|
if flag {
|
|
delOldPro(pInfoId)
|
|
delOldPro(pInfoId)
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//合并到原有项目中, 不用继续重新合并, 原有项目内部合并即可
|
|
//合并到原有项目中, 不用继续重新合并, 原有项目内部合并即可
|
|
p.innerMerge(proList, tmpPro)
|
|
p.innerMerge(proList, tmpPro)
|
|
bol := MongoTool.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
bol := MongoTool.UpdateById(ProjectColl, pInfoId, map[string]interface{}{"$set": tmpPro})
|
|
@@ -128,13 +128,13 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
}
|
|
}
|
|
p.AllIdsMapLock.Unlock()
|
|
p.AllIdsMapLock.Unlock()
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
//没有合并到新项目中,更新list字段,有条件更新项目外围字段
|
|
//没有合并到新项目中,更新list字段,有条件更新项目外围字段
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
// 修改内存
|
|
// 修改内存
|
|
p.modifyMem(tmpPro)
|
|
p.modifyMem(tmpPro)
|
|
}
|
|
}
|
|
- }else if index == 1 {
|
|
|
|
|
|
+ } else if index == 1 {
|
|
// 招标公告信息在原有项目中处于中间某一条
|
|
// 招标公告信息在原有项目中处于中间某一条
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
if merge {
|
|
if merge {
|
|
@@ -155,13 +155,13 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
qu.Debug(string(by))
|
|
qu.Debug(string(by))
|
|
_ = udpclient.WriteUdp(by, mu.OP_TYPE_DATA, toaddr[1])
|
|
_ = udpclient.WriteUdp(by, mu.OP_TYPE_DATA, toaddr[1])
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
// 未合并到新项目中
|
|
// 未合并到新项目中
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
// 修改内存
|
|
// 修改内存
|
|
p.modifyMem(tmpPro)
|
|
p.modifyMem(tmpPro)
|
|
}
|
|
}
|
|
- }else if index == 2 {
|
|
|
|
|
|
+ } else if index == 2 {
|
|
// 招标公告信息在原有项目中位于最后一条
|
|
// 招标公告信息在原有项目中位于最后一条
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
merge := p.ReMerge(info, tmp, tmpPro)
|
|
if merge {
|
|
if merge {
|
|
@@ -184,7 +184,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index, position int, tmp ma
|
|
qu.Debug(string(by))
|
|
qu.Debug(string(by))
|
|
_ = udpclient.WriteUdp(by, mu.OP_TYPE_DATA, toaddr[1])
|
|
_ = udpclient.WriteUdp(by, mu.OP_TYPE_DATA, toaddr[1])
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
// 未合并到新项目中
|
|
// 未合并到新项目中
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
p.modifyUpdate(pInfoId, index, position, tmpPro, modifyMap)
|
|
// 修改内存
|
|
// 修改内存
|
|
@@ -209,14 +209,14 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
}
|
|
}
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- var index = -1 //0:第一个,1:中间,2:最后一个
|
|
|
|
|
|
+ var index = -1 //0:第一个,1:中间,2:最后一个
|
|
for i, v := range ids {
|
|
for i, v := range ids {
|
|
if qu.ObjToString(v) == infoid {
|
|
if qu.ObjToString(v) == infoid {
|
|
if i == 0 {
|
|
if i == 0 {
|
|
index = 0
|
|
index = 0
|
|
- }else if i == len(ids) - 1 {
|
|
|
|
|
|
+ } else if i == len(ids)-1 {
|
|
index = 2
|
|
index = 2
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
index = 1
|
|
index = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -227,8 +227,8 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
delete(tmpPro, "reason")
|
|
delete(tmpPro, "reason")
|
|
proList = deleteSlice1(proList, proList[0])
|
|
proList = deleteSlice1(proList, proList[0])
|
|
var pro *ProjectInfo
|
|
var pro *ProjectInfo
|
|
- flag := true // 标记是否需要删除原有项目信息
|
|
|
|
- for _, v := range proList{
|
|
|
|
|
|
+ flag := true // 标记是否需要删除原有项目信息
|
|
|
|
+ for _, v := range proList {
|
|
v1 := v.(map[string]interface{})
|
|
v1 := v.(map[string]interface{})
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(v1["infoid"]))
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(v1["infoid"]))
|
|
if len(temp) == 0 {
|
|
if len(temp) == 0 {
|
|
@@ -249,7 +249,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
}
|
|
}
|
|
if flag {
|
|
if flag {
|
|
delOldPro(pid)
|
|
delOldPro(pid)
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
tmpPro, pro = p.innerMerge(proList, tmpPro)
|
|
tmpPro, pro = p.innerMerge(proList, tmpPro)
|
|
bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
bol := MongoTool.UpdateById(ProjectColl, pid, map[string]interface{}{"$set": tmpPro})
|
|
if bol {
|
|
if bol {
|
|
@@ -271,7 +271,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
}
|
|
}
|
|
p.AllIdsMapLock.Unlock()
|
|
p.AllIdsMapLock.Unlock()
|
|
}
|
|
}
|
|
- }else if index == 1 {
|
|
|
|
|
|
+ } else if index == 1 {
|
|
tmpPro["reason"] = "删除list中间某一条招标公告信息"
|
|
tmpPro["reason"] = "删除list中间某一条招标公告信息"
|
|
backupPro(tmpPro)
|
|
backupPro(tmpPro)
|
|
delete(tmpPro, "reason")
|
|
delete(tmpPro, "reason")
|
|
@@ -296,7 +296,7 @@ func (p *ProjectTask) delJudge(infoid, pid string) {
|
|
v.P = pro
|
|
v.P = pro
|
|
}
|
|
}
|
|
p.AllIdsMapLock.Unlock()
|
|
p.AllIdsMapLock.Unlock()
|
|
- }else if index == 2 {
|
|
|
|
|
|
+ } else if index == 2 {
|
|
tmpPro["reason"] = "删除list中最后一条招标公告信息"
|
|
tmpPro["reason"] = "删除list中最后一条招标公告信息"
|
|
backupPro(tmpPro)
|
|
backupPro(tmpPro)
|
|
delete(tmpPro, "reason")
|
|
delete(tmpPro, "reason")
|
|
@@ -457,7 +457,7 @@ func (p *ProjectTask) innerMerge(infoList []interface{}, tmpPro map[string]inter
|
|
newP := make(map[string]interface{})
|
|
newP := make(map[string]interface{})
|
|
newP["_id"] = tmpPro["_id"]
|
|
newP["_id"] = tmpPro["_id"]
|
|
var p1 *ProjectInfo
|
|
var p1 *ProjectInfo
|
|
- for k, m := range infoList{
|
|
|
|
|
|
+ for k, m := range infoList {
|
|
m1 := m.(map[string]interface{})
|
|
m1 := m.(map[string]interface{})
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(m1["infoid"]))
|
|
temp := MongoTool.FindById(ExtractColl, qu.ObjToString(m1["infoid"]))
|
|
if len(temp) == 0 {
|
|
if len(temp) == 0 {
|
|
@@ -470,7 +470,7 @@ func (p *ProjectTask) innerMerge(infoList []interface{}, tmpPro map[string]inter
|
|
tempInfo := ParseInfo(temp)
|
|
tempInfo := ParseInfo(temp)
|
|
if k == 0 {
|
|
if k == 0 {
|
|
p1 = p.newPro(temp, newP, tempInfo)
|
|
p1 = p.newPro(temp, newP, tempInfo)
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
p.updateOldProField(p1, tempInfo, newP, temp, m1)
|
|
p.updateOldProField(p1, tempInfo, newP, temp, m1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -481,7 +481,7 @@ func (p *ProjectTask) innerMerge1(infoList []interface{}, infoid string, tmpPro
|
|
newP := make(map[string]interface{})
|
|
newP := make(map[string]interface{})
|
|
newP["_id"] = tmpPro["_id"]
|
|
newP["_id"] = tmpPro["_id"]
|
|
var p1 *ProjectInfo
|
|
var p1 *ProjectInfo
|
|
- for k, m := range infoList{
|
|
|
|
|
|
+ for k, m := range infoList {
|
|
m1 := m.(map[string]interface{})
|
|
m1 := m.(map[string]interface{})
|
|
if m1["infoid"] == infoid {
|
|
if m1["infoid"] == infoid {
|
|
continue
|
|
continue
|
|
@@ -497,7 +497,7 @@ func (p *ProjectTask) innerMerge1(infoList []interface{}, infoid string, tmpPro
|
|
tempInfo := ParseInfo(temp)
|
|
tempInfo := ParseInfo(temp)
|
|
if k == 0 {
|
|
if k == 0 {
|
|
p1 = p.newPro(temp, newP, tempInfo)
|
|
p1 = p.newPro(temp, newP, tempInfo)
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
p.updateOldProField(p1, tempInfo, newP, temp, m1)
|
|
p.updateOldProField(p1, tempInfo, newP, temp, m1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -710,10 +710,12 @@ func (p *ProjectTask) updateProFiled(tmp map[string]interface{}, thisinfo *Info,
|
|
set["bidamount"] = pInfo.Bidamount
|
|
set["bidamount"] = pInfo.Bidamount
|
|
set["bidamounttag"] = 0
|
|
set["bidamounttag"] = 0
|
|
}
|
|
}
|
|
- if pInfo.Bidamount >= pInfo.Budget {
|
|
|
|
|
|
+ if pInfo.Bidamount > 0 {
|
|
set["sortprice"] = pInfo.Bidamount
|
|
set["sortprice"] = pInfo.Bidamount
|
|
- } else if pInfo.Budget >= pInfo.Bidamount {
|
|
|
|
- set["sortprice"] = pInfo.Budget
|
|
|
|
|
|
+ } else {
|
|
|
|
+ if pInfo.Budget > 0 {
|
|
|
|
+ set["sortprice"] = pInfo.Budget
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
infofield := InfoField{
|
|
infofield := InfoField{
|
|
@@ -889,6 +891,7 @@ func (p *ProjectTask) newPro(tmp, tmpPro map[string]interface{}, thisinfo *Info)
|
|
}
|
|
}
|
|
return &p1
|
|
return &p1
|
|
}
|
|
}
|
|
|
|
+
|
|
// 合并字段到老项目中
|
|
// 合并字段到老项目中
|
|
func (p *ProjectTask) updateOldProField(pInfo *ProjectInfo, thisinfo *Info, tmpPro, tmp, m1 map[string]interface{}) {
|
|
func (p *ProjectTask) updateOldProField(pInfo *ProjectInfo, thisinfo *Info, tmpPro, tmp, m1 map[string]interface{}) {
|
|
if len(pInfo.Ids) > 30 {
|
|
if len(pInfo.Ids) > 30 {
|
|
@@ -1150,7 +1153,7 @@ func UpdateValue(proMap map[string]interface{}, index, position int, modifyMap m
|
|
updataSet[k] = modifyMap[k]
|
|
updataSet[k] = modifyMap[k]
|
|
proMap[k] = modifyMap[k]
|
|
proMap[k] = modifyMap[k]
|
|
tempMap[k] = modifyMap[k]
|
|
tempMap[k] = modifyMap[k]
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
updataSet[k] = modifyMap[k]
|
|
updataSet[k] = modifyMap[k]
|
|
proMap[k] = modifyMap[k]
|
|
proMap[k] = modifyMap[k]
|
|
tempMap[k] = modifyMap[k]
|
|
tempMap[k] = modifyMap[k]
|
|
@@ -1178,7 +1181,7 @@ func UpdateValue(proMap map[string]interface{}, index, position int, modifyMap m
|
|
//备份(快照)
|
|
//备份(快照)
|
|
func backupPro(tmp map[string]interface{}) {
|
|
func backupPro(tmp map[string]interface{}) {
|
|
tmp1 := make(map[string]interface{})
|
|
tmp1 := make(map[string]interface{})
|
|
- for k, v := range tmp{
|
|
|
|
|
|
+ for k, v := range tmp {
|
|
tmp1[k] = v
|
|
tmp1[k] = v
|
|
}
|
|
}
|
|
if Sysconfig["backupFlag"].(bool) {
|
|
if Sysconfig["backupFlag"].(bool) {
|
|
@@ -1191,7 +1194,7 @@ func backupPro(tmp map[string]interface{}) {
|
|
// 删除原有项目数据
|
|
// 删除原有项目数据
|
|
func delOldPro(pid string) {
|
|
func delOldPro(pid string) {
|
|
t := MongoTool.Delete(ProjectColl, pid)
|
|
t := MongoTool.Delete(ProjectColl, pid)
|
|
- if t >=0 {
|
|
|
|
|
|
+ if t >= 0 {
|
|
client := Es.GetEsConn()
|
|
client := Es.GetEsConn()
|
|
defer Es.DestoryEsConn(client)
|
|
defer Es.DestoryEsConn(client)
|
|
Es.DelById(Index, Itype, pid)
|
|
Es.DelById(Index, Itype, pid)
|
|
@@ -1199,7 +1202,7 @@ func delOldPro(pid string) {
|
|
}
|
|
}
|
|
|
|
|
|
// 修改内存中的数据
|
|
// 修改内存中的数据
|
|
-func (p *ProjectTask) modifyMem(tmpPro map[string]interface{}) {
|
|
|
|
|
|
+func (p *ProjectTask) modifyMem(tmpPro map[string]interface{}) {
|
|
pid := qu.ObjToString(tmpPro["_id"])
|
|
pid := qu.ObjToString(tmpPro["_id"])
|
|
var pro ProjectInfo
|
|
var pro ProjectInfo
|
|
err := mapstructure.Decode(tmpPro, &pro)
|
|
err := mapstructure.Decode(tmpPro, &pro)
|
|
@@ -1231,4 +1234,4 @@ func (p *ProjectTask) printMemPro(pid string) {
|
|
qu.Debug("mem pro ----------", *v.P)
|
|
qu.Debug("mem pro ----------", *v.P)
|
|
}
|
|
}
|
|
p.AllIdsMapLock.Unlock()
|
|
p.AllIdsMapLock.Unlock()
|
|
-}
|
|
|
|
|
|
+}
|