|
@@ -176,8 +176,8 @@ func (p *ProjectTask) startProjectMerge(info *Info, tmp map[string]interface{})
|
|
|
|
|
|
ex := 0
|
|
|
resArr := []*ProjectInfo{}
|
|
|
- for _, res := range resN {
|
|
|
- choose, e := p.CompareStatus(resN[0], info)
|
|
|
+ for i, res := range resN {
|
|
|
+ choose, e := p.CompareStatus(resN[i], info)
|
|
|
if !choose {
|
|
|
ex = e
|
|
|
resArr = append(resArr, res)
|
|
@@ -186,6 +186,7 @@ func (p *ProjectTask) startProjectMerge(info *Info, tmp map[string]interface{})
|
|
|
if len(resArr) > 0 {
|
|
|
bFindProject = true
|
|
|
findPid = resArr[0].Id.Hex()
|
|
|
+ p.UpdateProject(tmp, info, resArr[0], kv+1, resArr[0].comStr, ex)
|
|
|
for k2, bv := range []int{bpn, bpc, bptc, bpb} {
|
|
|
if bv > -1 {
|
|
|
pids[bv].Arr = append(pids[bv].Arr, findPid)
|
|
@@ -210,7 +211,6 @@ func (p *ProjectTask) startProjectMerge(info *Info, tmp map[string]interface{})
|
|
|
resArr[0].MPC = append(resArr[0].MPC, qu.If(k2 == 1, info.ProjectCode, info.PTC).(string))
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
} else {
|
|
|
if resArr[0].Buyer == "" {
|
|
|
resArr[0].Buyer = info.Buyer
|
|
@@ -218,7 +218,6 @@ func (p *ProjectTask) startProjectMerge(info *Info, tmp map[string]interface{})
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- p.UpdateProject(tmp, info, resArr[0], kv+1, resArr[0].comStr, ex)
|
|
|
} else {
|
|
|
bFindProject = false
|
|
|
findPid = ""
|
|
@@ -506,12 +505,11 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
|
|
|
bt := qu.ObjToString(tmp["toptype"])
|
|
|
bs := qu.ObjToString(tmp["subtype"])
|
|
|
p.mapBidLock.Lock()
|
|
|
+ set["bidtype"] = bidtype[bs]
|
|
|
if bt == "招标" {
|
|
|
set["projectscope"] = qu.ObjToString(tmp["projectscope"])
|
|
|
- set["bidtype"] = bidtype[bs]
|
|
|
set["bidstatus"] = bs
|
|
|
}else {
|
|
|
- set["bidtype"] = bt
|
|
|
if bidstatus[bs] != "" {
|
|
|
set["bidstatus"] = thisinfo.SubType
|
|
|
} else if tmp["infoformat"] == 2 {
|
|
@@ -522,7 +520,8 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
|
|
|
}
|
|
|
p.mapBidLock.Unlock()
|
|
|
|
|
|
- p1, pkg := p.NewCachePinfo(pId, thisinfo, bt)
|
|
|
+ pkg := PackageFormat(thisinfo, nil)
|
|
|
+ p1 := p.NewCachePinfo(pId, thisinfo, bt, pkg)
|
|
|
if len(thisinfo.Subscopeclass) > 0 {
|
|
|
s_subscopeclass := strings.Join(thisinfo.Subscopeclass, ",")
|
|
|
set["s_subscopeclass"] = s_subscopeclass
|
|
@@ -567,6 +566,7 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
|
|
|
"$set": set,
|
|
|
},
|
|
|
}
|
|
|
+ //log.Println(set)
|
|
|
return pId.Hex(), &p1
|
|
|
}
|
|
|
|
|
@@ -614,11 +614,7 @@ func (p *ProjectTask) PushListInfo(tmp map[string]interface{}, infoid string) bs
|
|
|
}
|
|
|
|
|
|
//生成存放在内存中的对象
|
|
|
-func (p *ProjectTask) NewCachePinfo(id primitive.ObjectID, thisinfo *Info, bidtype string) (ProjectInfo, map[string]interface{}) {
|
|
|
- pkg := map[string]interface{}{}
|
|
|
- if thisinfo.HasPackage {
|
|
|
- pkg = PackageFormat(thisinfo, nil)
|
|
|
- }
|
|
|
+func (p *ProjectTask) NewCachePinfo(id primitive.ObjectID, thisinfo *Info, bidtype string, pkg map[string]interface{}) ProjectInfo {
|
|
|
p1 := ProjectInfo{
|
|
|
Id: id,
|
|
|
Ids: []string{thisinfo.Id},
|
|
@@ -649,7 +645,7 @@ func (p *ProjectTask) NewCachePinfo(id primitive.ObjectID, thisinfo *Info, bidty
|
|
|
if thisinfo.LenPTC > 5 {
|
|
|
p1.MPC = append(p1.MPC, thisinfo.PTC)
|
|
|
}
|
|
|
- return p1, pkg
|
|
|
+ return p1
|
|
|
}
|
|
|
|
|
|
//更新项目
|
|
@@ -683,15 +679,16 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
|
|
|
bt := qu.ObjToString(tmp["toptype"])
|
|
|
bs := qu.ObjToString(tmp["subtype"])
|
|
|
p.mapBidLock.Lock()
|
|
|
+ if bidtype[bs] != "" {
|
|
|
+ set["bidtype"] = bidtype[bs]
|
|
|
+ }
|
|
|
if bt == "招标" {
|
|
|
//招标状态,更新projectscope
|
|
|
if tmp["projectscope"] != nil {
|
|
|
set["projectscope"] = qu.ObjToString(tmp["projectscope"])
|
|
|
}
|
|
|
- set["bidtype"] = bidtype[bs]
|
|
|
set["bidstatus"] = bs
|
|
|
}else {
|
|
|
- set["bidtype"] = bt
|
|
|
if bidstatus[bs] != "" {
|
|
|
set["bidstatus"] = thisinfo.SubType
|
|
|
} else if tmp["infoformat"] == 2 {
|
|
@@ -807,6 +804,10 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
|
|
|
}
|
|
|
//winner
|
|
|
if len(thisinfo.Winners) > 0 {
|
|
|
+ if len(pInfo.Winners) <= 0 {
|
|
|
+ set["winner"] = tmp["winner"].(string)
|
|
|
+ }
|
|
|
+
|
|
|
sort.Strings(pInfo.Winners)
|
|
|
for _, k := range thisinfo.Winners {
|
|
|
if BinarySearch(pInfo.Winners, k) == -1 {
|
|
@@ -944,7 +945,7 @@ func ComparePlace(project *ProjectInfo, info *Info) bool {
|
|
|
var PackageEle = []string{
|
|
|
"origin",
|
|
|
"name",
|
|
|
- "text",
|
|
|
+ //"text",
|
|
|
"budget",
|
|
|
"winner",
|
|
|
"bidamount",
|
|
@@ -969,11 +970,8 @@ func packageEle(map1 map[string]interface{}, id string) map[string]interface{} {
|
|
|
|
|
|
func PackageFormat(info *Info, project *ProjectInfo) map[string]interface{} {
|
|
|
p1 := map[string]interface{}{}
|
|
|
- packageCopy := make(map[string]interface{})
|
|
|
- if project != nil && project.Package != nil {
|
|
|
- packageCopy = Copy(project.Package).(map[string]interface{})
|
|
|
- }
|
|
|
- if packageCopy != nil && len(packageCopy) > 0 {
|
|
|
+ if project != nil && project.Package != nil && len(project.Package) > 0 {
|
|
|
+ packageCopy := Copy(project.Package).(map[string]interface{})
|
|
|
p1 = packageCopy
|
|
|
for k, v := range info.Package {
|
|
|
if v1, ok := v.(map[string]interface{}); ok {
|
|
@@ -985,7 +983,8 @@ func PackageFormat(info *Info, project *ProjectInfo) map[string]interface{} {
|
|
|
addFlag := false
|
|
|
for k1, v3 := range p1 {
|
|
|
if v4, ok := v3.([]map[string]interface{}); ok {
|
|
|
- if qu.ObjToString(v4[0]["origin"]) == qu.ObjToString(v2["origin"]) && qu.ObjToString(v4[0]["name"]) == qu.ObjToString(v2["name"]) {
|
|
|
+ //if qu.ObjToString(v4[0]["origin"]) == qu.ObjToString(v2["origin"]) && qu.ObjToString(v4[0]["name"]) == qu.ObjToString(v2["name"]) {
|
|
|
+ if k1 == k {
|
|
|
v4 = append(v4, v2)
|
|
|
p1[k1] = v4
|
|
|
addFlag = true
|
|
@@ -998,8 +997,9 @@ func PackageFormat(info *Info, project *ProjectInfo) map[string]interface{} {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ p1 = packageCopy
|
|
|
} else {
|
|
|
- for k, v := range packageCopy {
|
|
|
+ for k, v := range info.Package {
|
|
|
v1, _ := v.(map[string]interface{})
|
|
|
p2 := map[string]interface{}{}
|
|
|
p2 = packageEle(v1, info.Id)
|
|
@@ -1009,7 +1009,6 @@ func PackageFormat(info *Info, project *ProjectInfo) map[string]interface{} {
|
|
|
p1[k] = []map[string]interface{}{p2}
|
|
|
}
|
|
|
}
|
|
|
- p1 = packageCopy
|
|
|
return p1
|
|
|
}
|
|
|
|
|
@@ -1027,7 +1026,12 @@ func CountAmount(project *ProjectInfo, info *Info) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- project.Budget = budget
|
|
|
+ if budget == 0 && info.Budget > 0 {
|
|
|
+ budget = info.Budget
|
|
|
+ }
|
|
|
+ if budget > 0 {
|
|
|
+ project.Budget = budget
|
|
|
+ }
|
|
|
}else {
|
|
|
//招标没有多包
|
|
|
k := KeyPackage.FindStringSubmatch(project.ProjectName)
|