Ver código fonte

Merge branch 'dev3.4' of http://192.168.3.207:10080/qmx/jy-data-extract into dev3.4

zhangjinkun 5 anos atrás
pai
commit
6c5a0bec72

+ 7 - 7
fullproject/src_v1/init.go

@@ -298,17 +298,17 @@ type ProjectInfo struct {
 	score         int
 	comStr        string
 	resVal, pjVal int
-	InfoFiled	map[string]InfoFiled
+	InfoFiled	map[string]InfoFiled	`json:"infofiled"`		//逻辑处理需要的info字段
 }
 
 //存储部分招标信息字段,业务逻辑处理需要
 type InfoFiled struct {
-	budget			float64
-	bidamount		float64
-	contractCode	string
-	projectName		string
-	projectCode		string
-	bidstatus		string
+	Budget			float64				`json:"budget"`
+	Bidamount		float64				`json:"bidamount"`
+	ContractCode	string				`json:"contractcode"`
+	ProjectName		string				`json:"projectname"`
+	ProjectCode		string				`json:"projectcode"`
+	Bidstatus		string				`json:"bidstatus"`
 }
 
 //站点信息

+ 48 - 26
fullproject/src_v1/project.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"encoding/json"
 	"log"
 	//	"log"
 	"math"
@@ -534,14 +535,18 @@ func (p *ProjectTask) NewProject(tmp map[string]interface{}, thisinfo *Info) (st
 	}
 
 	p1.InfoFiled = make(map[string]InfoFiled)
-	p1.InfoFiled[thisinfo.Id] =
-		InfoFiled{
-			budget: thisinfo.Budget,
-			bidamount: thisinfo.Bidamount,
-			projectName: thisinfo.ProjectName,
-			contractCode: thisinfo.ContractCode,
-			projectCode: thisinfo.ProjectCode,
-			bidstatus: bs,
+	infofiled := InfoFiled{
+		Budget:       thisinfo.Budget,
+		Bidamount:    thisinfo.Bidamount,
+		ContractCode: thisinfo.ContractCode,
+		ProjectName:  thisinfo.ProjectName,
+		ProjectCode:  thisinfo.ProjectCode,
+		Bidstatus:    bs,
+	}
+	p1.InfoFiled[thisinfo.Id] = infofiled
+	res := StructToMap(infofiled)
+	set["infofield"] = map[string]interface{}{
+		thisinfo.Id: res,
 	}
 
 	push := p.PushListInfo(tmp, thisinfo.Id)
@@ -816,6 +821,18 @@ func (p *ProjectTask) UpdateProject(tmp map[string]interface{}, thisinfo *Info,
 	CountAmount(pInfo, thisinfo)
 	set["budget"] = pInfo.Budget
 	set["bidamount"] = pInfo.Bidamount
+	infofiled := InfoFiled{
+		Budget:       thisinfo.Budget,
+		Bidamount:    thisinfo.Bidamount,
+		ContractCode: thisinfo.ContractCode,
+		ProjectName:  thisinfo.ProjectName,
+		ProjectCode:  thisinfo.ProjectCode,
+		Bidstatus:    bs,
+	}
+	pInfo.InfoFiled[thisinfo.Id] = infofiled
+	set["infofield"] = map[string]interface{}{
+		thisinfo.Id: StructToMap(infofiled),
+	}
 
 	set["mpn"] = pInfo.MPN
 	set["mpc"] = pInfo.MPC
@@ -1022,9 +1039,9 @@ func CountAmount(project *ProjectInfo, info *Info) {
 			flag := false
 			if project.InfoFiled != nil && len(project.InfoFiled) > 0 {
 				for _, res := range project.InfoFiled {
-					if res.projectName == info.ProjectName {
-						if res.budget < info.Budget {
-							project.Budget = project.Budget - res.budget + info.Budget
+					if res.ProjectName == info.ProjectName {
+						if res.Budget < info.Budget {
+							project.Budget = project.Budget - res.Budget + info.Budget
 						}
 						flag = true
 						break
@@ -1078,18 +1095,18 @@ func CountAmount(project *ProjectInfo, info *Info) {
 				flag := false
 				if project.InfoFiled != nil && len(project.InfoFiled) > 0 {
 					for _, res := range project.InfoFiled {
-						if res.bidstatus == "合同" && res.contractCode != "" && info.SubType == "合同" && info.ContractCode != "" {
-							if res.contractCode == info.ContractCode {
-								if res.bidamount < info.Bidamount {
-									project.Bidamount = project.Bidamount - res.bidamount + info.Bidamount
+						if res.Bidstatus == "合同" && res.ContractCode != "" && info.SubType == "合同" && info.ContractCode != "" {
+							if res.ContractCode == info.ContractCode {
+								if res.Bidamount < info.Bidamount {
+									project.Bidamount = project.Bidamount - res.Bidamount + info.Bidamount
 								}
 								flag = true
 								break
 							}
 						}else {
-							if res.projectName == info.ProjectName {
-								if res.bidamount < info.Bidamount {
-									project.Bidamount = project.Bidamount - res.bidamount + info.Bidamount
+							if res.ProjectName == info.ProjectName {
+								if res.Bidamount < info.Bidamount {
+									project.Bidamount = project.Bidamount - res.Bidamount + info.Bidamount
 								}
 								flag = true
 								break
@@ -1104,12 +1121,17 @@ func CountAmount(project *ProjectInfo, info *Info) {
 			}
 		}
 	}
-	project.InfoFiled[info.Id] = InfoFiled{
-		budget:       info.Budget,
-		bidamount:    info.Bidamount,
-		contractCode: info.ContractCode,
-		projectName:  info.ProjectName,
-		projectCode:  info.ProjectCode,
-		bidstatus: 	  info.SubType,
-	}
+}
+
+//结构体转map
+func StructToMap(filed InfoFiled) map[string]interface{} {
+	//先转json
+	result, err := json.Marshal(filed)
+	if err != nil {
+		return nil
+	}
+	//json转map
+	res := make(map[string]interface{})
+	err = json.Unmarshal(result, &res)
+	return res
 }

+ 3 - 3
fullproject/src_v1/task.go

@@ -671,15 +671,15 @@ var Elements = []string{
 */
 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 {
+	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 k := range modifyMap {
 		for _, str := range Elements {
 			if k == str {
 				return modifyMap, true

+ 24 - 1
fullproject/src_v1/update.go

@@ -15,6 +15,16 @@ func (p *ProjectTask) modifyUpdate(pInfoId string, index int, info *Info, tmp ma
 	infoList := []interface{}(tmpPro["list"].(primitive.A))
 	infoMap := infoList[index].(map[string]interface{})
 	infoList[index] = updateValue(infoMap, modifyMap)
+	infofiled := InfoFiled{
+		Budget:       info.Budget,
+		Bidamount:    info.Bidamount,
+		ContractCode: info.ContractCode,
+		ProjectName:  info.ProjectName,
+		ProjectCode:  info.ProjectCode,
+		Bidstatus:    info.SubType,
+	}
+	mapTmp, _ := tmpPro["infofiled"].(map[string]interface{})
+	mapTmp[info.Id] = StructToMap(infofiled)
 	set := map[string]interface{}{
 		"$set": tmpPro,
 	}
@@ -41,6 +51,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index int, info *Info, tmp
 				continue
 			}
 			tmp1 := MongoTool.FindById(ExtractColl, infoId)
+			p.fillInPlace(tmp)
 			info1 := ParseInfo(tmp1)
 			p.CommonMerge(tmp1, info1)
 		}
@@ -59,6 +70,16 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index int, info *Info, tmp
 				infoList := []interface{}(tmpPro["list"].(primitive.A))
 				infoMap := infoList[index].(map[string]interface{})
 				infoList[index] = updateValue(infoMap, modifyMap)
+				infofiled := InfoFiled{
+					Budget:       info.Budget,
+					Bidamount:    info.Bidamount,
+					ContractCode: info.ContractCode,
+					ProjectName:  info.ProjectName,
+					ProjectCode:  info.ProjectCode,
+					Bidstatus:    info.SubType,
+				}
+				mapTmp, _ := tmpPro["infofiled"].(map[string]interface{})
+				mapTmp[info.Id] = StructToMap(infofiled)
 				set := map[string]interface{}{
 					"$set": tmpPro,
 				}
@@ -67,7 +88,7 @@ func (p *ProjectTask) mergeAndModify(pInfoId string, index int, info *Info, tmp
 				//合并到的其它项目里边
 				//更新其它的项目
 				pro := MongoTool.FindById(ProjectColl, mergePro.Id.Hex())
-				backupPro(pro, )
+				backupPro(pro)
 				choose, ex := p.CompareStatus(mergePro, info)
 				if !choose {
 					p.UpdateProject(tmp, info, mergePro, i, comStr, ex)
@@ -250,6 +271,8 @@ func (p *ProjectTask) innerMerge(pInfo *ProjectInfo, info *Info, tmp map[string]
 		}
 		mergeProject(p, pInfo, info, tmpPro, index)
 	}
+	mapTmp, _ := tmpPro["infofiled"].(map[string]interface{})
+	delete(mapTmp, info.Id)
 	set := map[string]interface{}{
 		"$set": tmpPro,
 	}