Explorar o código

项目合并修改

jianghan7 %!s(int64=5) %!d(string=hai) anos
pai
achega
bc16fa4e65
Modificáronse 2 ficheiros con 12 adicións e 13 borrados
  1. 11 8
      fullproject/src_v1/task.go
  2. 1 5
      fullproject/src_v1/update.go

+ 11 - 8
fullproject/src_v1/task.go

@@ -470,18 +470,22 @@ func (p *ProjectTask) CommonMerge(tmp map[string]interface{}, info *Info) {
 				proHref := jsonData["projecthref"].(string)
 				tmp["projecthref"] = proHref
 				p.mapHrefLock.Lock()
-				defer p.mapHrefLock.Unlock()
-				p.AllIdsMapLock.Lock()
-				defer p.AllIdsMapLock.Unlock()
-				if p.mapHref[proHref] != "" {
-					pid := p.mapHref[proHref]
+				pid := p.mapHref[proHref]
+				p.mapHrefLock.Unlock()
+				if pid != "" {
+					p.AllIdsMapLock.Lock()
 					comparePro := p.AllIdsMap[pid].P
+					p.AllIdsMapLock.Unlock()
 					_, ex := CompareStatus(comparePro, info)
 					p.UpdateProject(tmp, info, comparePro, -1, "AAAAAAAAAA", ex)
 				} else {
 					id, p1 := p.NewProject(tmp, info)
+					p.mapHrefLock.Lock()
 					p.mapHref[proHref] = id
+					p.mapHrefLock.Unlock()
+					p.AllIdsMapLock.Lock()
 					p.AllIdsMap[id] = &ID{Id: id, P: p1}
+					p.AllIdsMapLock.Unlock()
 				}
 			}else {
 				//项目合并
@@ -615,15 +619,14 @@ func (p *ProjectTask) updateJudge(tmp map[string]interface{}, info *Info)  {
 		infoList := []interface{}(tmpPro["list"].(primitive.A))
 		infoMap := infoList[index].(map[string]interface{})
 		modifyMap, f := modifyEle(infoMap, tmp)
-
 		//projecthref字段
 		jsonData := tmp["jsondata"].(map[string]interface{})
 		if jsonData != nil && jsonData["projecthref"] != nil {
 			proHref := jsonData["projecthref"].(string)
 			tmp["projecthref"] = proHref
 			p.mapHrefLock.Lock()
-			defer p.mapHrefLock.Unlock()
 			pid := p.mapHref[proHref]
+			p.mapHrefLock.Unlock()
 			if  pid == pInfoId {
 				p.modifyUpdate(pInfoId, index, info, tmp, tmpPro, modifyMap)
 				return
@@ -687,9 +690,9 @@ func (p *ProjectTask) fillInPlace(tmp map[string]interface{})  {
 		return
 	}
 
+	tmpSite := tmp["site"].(string)
 	p.mapSiteLock.Lock()
 	defer p.mapSiteLock.Unlock()
-	tmpSite := tmp["site"].(string)
 	site := p.mapSite[tmpSite]
 	if site != nil {
 		if area != "" {

+ 1 - 5
fullproject/src_v1/update.go

@@ -18,8 +18,7 @@ func (p *ProjectTask) modifyUpdate(pInfoId string, index int, info *Info, tmp ma
 	set := map[string]interface{}{
 		"$set": tmpPro,
 	}
-	err := MongoTool.UpdateById(ProjectColl, pInfoId, set)
-	log.Println(err)
+	_ = MongoTool.UpdateById(ProjectColl, pInfoId, set)
 }
 
 func (p *ProjectTask) mergeAndModify(pInfoId string, index int, info *Info, tmp map[string]interface{}, tmpPro map[string]interface{}, modifyMap map[string]interface{}) {
@@ -251,9 +250,6 @@ func (p *ProjectTask) innerMerge(pInfo *ProjectInfo, info *Info, tmp map[string]
 		}
 		mergeProject(p, pInfo, info, tmpPro, index)
 	}
-	p.AllIdsMapLock.Lock()
-	p.AllIdsMap[pInfo.Id.Hex()].P = pInfo
-	p.AllIdsMapLock.Unlock()
 	set := map[string]interface{}{
 		"$set": tmpPro,
 	}