maxiaoshan 3 năm trước cách đây
mục cha
commit
610e8f24f2
4 tập tin đã thay đổi với 66 bổ sung25 xóa
  1. 2 1
      .gitignore
  2. 25 1
      src/front/mark.go
  3. 34 23
      src/front/project.go
  4. 5 0
      src/util/common.go

+ 2 - 1
.gitignore

@@ -6,4 +6,5 @@ bin
 */src/src
 *.data
 */bin
-.idea
+.idea
+*linux

+ 25 - 1
src/front/mark.go

@@ -77,7 +77,31 @@ func (f *Front) JyMarkList() {
 					}
 				}
 			} else {
-				query["v_baseinfo."+field] = queryfield
+				if hasno {
+					query["$or"] = []interface{}{
+						map[string]interface{}{
+							"v_baseinfo." + field: queryfield,
+						},
+						map[string]interface{}{
+							"v_baseinfo." + field: map[string]interface{}{
+								"$eq": "",
+							},
+						},
+					}
+				} else {
+					query["$and"] = []interface{}{
+						map[string]interface{}{
+							"v_baseinfo." + field: queryfield,
+						},
+						map[string]interface{}{
+							"v_baseinfo." + field: map[string]interface{}{
+								"$ne": "",
+							},
+						},
+					}
+				}
+
+				//query["v_baseinfo."+field] = queryfield
 			}
 		}
 		if fieldScreen && notag {

+ 34 - 23
src/front/project.go

@@ -82,10 +82,6 @@ func (f *Front) ProjectSave() {
 	stype := f.GetString("s_type")                 //新建项目类型:数据库导入、excel导入
 	s_sourceinfoTmp := f.GetString("s_sourceinfo") //数据表
 	s_sourceinfo := "f_sourceinfo_" + s_sourceinfoTmp
-	if !util.Mgo.CreateIndex(s_sourceinfo, util.SourceInfoIndexArr) { //创建数据源表同时生成字段索引
-		f.ServeJson(map[string]interface{}{"success": false, "msg": "数据源表创建失败"})
-		return
-	}
 	if stype != "edit" && s_sourceinfo == "" {
 		f.ServeJson(map[string]interface{}{"success": false, "msg": "缺少数据存储表名"})
 		return
@@ -831,8 +827,8 @@ func ImportDataByExcel(s_sourceinfo string, mf multipart.File, success *bool, ms
 	sheet := xls.Sheets[0]
 	rows := sheet.Rows
 	idcolnum := -1
-	cellFieldName := map[int]string{}                //记录客户需求字段所在的列
-	idInfoMap := map[string]map[string]interface{}{} //记录数据id及需要保存的字段信息
+	cellFieldName := map[int]string{} //记录客户需求字段所在的列
+	idInfoArr := []util.Data{}        //记录数据id及需要保存的字段信息
 	for rn, row := range rows {
 		if rn == 0 {
 			for index, cell := range row.Cells {
@@ -871,17 +867,21 @@ func ImportDataByExcel(s_sourceinfo string, mf multipart.File, success *bool, ms
 			break
 		}
 		id = util.SE.DecodeString(id) //解密后id
-		idInfoMap[id] = tmp
+		idInfoArr = append(idInfoArr, util.Data{
+			ID:   id,
+			Info: tmp,
+		})
+		//idInfoMap[id] = tmp
 	}
-	importDataNum = len(idInfoMap)
+	importDataNum = len(idInfoArr)
 	qu.Debug("Load Excel Count:", importDataNum)
 	if importDataNum > 0 {
-		GetDataById(idInfoMap, "excel", s_sourceinfo, success, msg, successNum)
+		GetDataById(idInfoArr, "excel", s_sourceinfo, success, msg, successNum)
 	} else {
 		*success = false
 		*msg = "查询数据失败"
 	}
-	idInfoMap = map[string]map[string]interface{}{}
+	idInfoArr = []util.Data{}
 	return
 }
 
@@ -894,7 +894,7 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
 	ch := make(chan bool, 3)
 	wg := &sync.WaitGroup{}
 	lock := &sync.Mutex{}
-	idInfoMap := map[string]map[string]interface{}{} //记录数据id及需要保存的字段信息
+	idInfoArr := []util.Data{} //记录数据id及需要保存的字段信息
 	query := map[string]interface{}{
 		"historyId": historyid,
 	}
@@ -927,7 +927,11 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
 				rulenameMap[r] = true
 			}
 			//rulename = append(rulename, qu.ObjToString(tmp["rulename"])) //规则名称
-			idInfoMap[id] = needField
+			//idInfoMap[id] = needField
+			idInfoArr = append(idInfoArr, util.Data{
+				ID:   id,
+				Info: needField,
+			})
 			lock.Unlock()
 		}(tmp)
 		if n%100 == 0 {
@@ -939,28 +943,32 @@ func ImportDataByColl(s_sourceinfo, historyid string, success *bool, msg *string
 	for r, _ := range rulenameMap {
 		rulename = append(rulename, r)
 	}
-	importDataNum = len(idInfoMap) //查询数据总数
+	importDataNum = len(idInfoArr) //查询数据总数
 	if importDataNum > 0 {
-		GetDataById(idInfoMap, "coll", s_sourceinfo, success, msg, successNum)
+		GetDataById(idInfoArr, "coll", s_sourceinfo, success, msg, successNum)
 	} else {
 		*msg = "查询数据失败"
 	}
-	idInfoMap = map[string]map[string]interface{}{}
+	idInfoArr = []util.Data{}
 	return
 }
 
 //GetDataById 通过id集从bidding、extract、project获取数据所有信息
-func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_sourceinfo string, success *bool, msg *string, successNum *int64) {
+func GetDataById(idInfoArr []util.Data, importType, s_sourceinfo string, success *bool, msg *string, successNum *int64) {
 	*success = true
 	var msgArr []string
 	wg := &sync.WaitGroup{}
 	lock := &sync.Mutex{}
 	ch := make(chan bool, 10)
-	num := int64(0) //计数
-	for id, info := range idsInfo {
+	//num := int64(0)                                                   //计数
+	if !util.Mgo.CreateIndex(s_sourceinfo, util.SourceInfoIndexArr) { //创建数据源表同时生成字段索引
+		qu.Debug("创建数据源表:", s_sourceinfo, "失败")
+		return
+	}
+	for i, data := range idInfoArr {
 		wg.Add(1)
 		ch <- true
-		go func(id string, tmp map[string]interface{}) {
+		func(index int, tmpData util.Data) {
 			defer func() {
 				wg.Done()
 				<-ch
@@ -976,6 +984,8 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
 			*/
 			tagInfoMap := map[string]interface{}{}  //记录数据已标注过的信息
 			baseInfoMap := map[string]interface{}{} //记录其他信息
+			id := tmpData.ID
+			tmp := tmpData.Info
 			//1.查bidding
 			tmpBidColl := util.BidColl1 //bidding
 			//查询bidding
@@ -1115,7 +1125,7 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
 					lock.Lock()
 					*success = false
 					if importType == "excel" {
-						msgArr = append(msgArr, "第"+fmt.Sprint(num+2)+"行未导入id:"+id)
+						msgArr = append(msgArr, "第"+fmt.Sprint(index+2)+"行未导入id:"+id)
 						//*msg += "第" + fmt.Sprint(num+2) + "行未保存成功数据_id:" + id + ";\n"
 					} else {
 						msgArr = append(msgArr, "未导入id:"+id)
@@ -1127,7 +1137,7 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
 				lock.Lock()
 				*success = false
 				if importType == "excel" {
-					msgArr = append(msgArr, "第"+fmt.Sprint(num+2)+"行未查询id:"+id)
+					msgArr = append(msgArr, "第"+fmt.Sprint(index+2)+"行未查询id:"+id)
 					//*msg += "第" + fmt.Sprint(num+2) + "行未查询到数据:" + id + ";\n"
 				} else {
 					msgArr = append(msgArr, "未查询id:"+id)
@@ -1135,11 +1145,12 @@ func GetDataById(idsInfo map[string]map[string]interface{}, importType, s_source
 				}
 				lock.Unlock()
 			}
-		}(id, info)
+		}(i, data)
 	}
 	wg.Wait()
 	sort.Strings(msgArr)
-	*msg = strings.Join(msgArr, ";\n")
+	*msg = strings.Join(msgArr, ";<br>")
+
 }
 
 // UpdateMarkColl 更新数据

+ 5 - 0
src/util/common.go

@@ -14,6 +14,11 @@ type Task struct {
 	GiveNum  int
 }
 
+type Data struct {
+	ID   string
+	Info map[string]interface{}
+}
+
 //oss
 var (
 	ossEndpoint        = "oss-cn-beijing-internal.aliyuncs.com" //正式环境用:oss-cn-beijing-internal.aliyuncs.com 测试:oss-cn-beijing.aliyuncs.com