Browse Source

excel 导入bug

xyxie 7 months ago
parent
commit
9364a5f883
1 changed files with 88 additions and 126 deletions
  1. 88 126
      services/knowledge/resource.go

+ 88 - 126
services/knowledge/resource.go

@@ -343,37 +343,20 @@ func ImportResourceData(path string, resourceType int, sysUser *system.Admin) (s
 			err = errors.New(errMsg)
 			return
 		}
-
-		templateType := 1 // 模板类型
-		minCellNum := 6   // 模板最小列数
-		headerCell := rowList[0].Cells
-
-		// 确定模板
-		for _, v := range headerCell {
-			if v.String() == "导入模板2/Import Template 2" {
-				templateType = 2
-				minCellNum = 2
-				break
-			}
-		}
-
-		// 如果小于最少列数,则报错
-		if len(headerCell) < minCellNum {
-			errMsg = sheet.Name + "页模板异常"
-			err = errors.New(errMsg)
-			return
-		}
 		if resourceType == knowledge.KnowledgeResourceTypeEvent || resourceType == knowledge.KnowledgeResourceTypePolicy {
-			tmpIndexDataList, tmpFailDataList, err, errMsg = getDataByTemplateEvent(sheet, sysUser.AdminId, templateType)
+			tmpIndexDataList, tmpFailDataList, err, errMsg = getDataByTemplateEvent(sheet, sysUser.AdminId, resourceType)
 		} else {
-			tmpIndexDataList, tmpFailDataList, err, errMsg = getDataByTemplatePoint(sheet, sysUser.AdminId, templateType)
+			tmpIndexDataList, tmpFailDataList, err, errMsg = getDataByTemplatePoint(sheet, sysUser.AdminId, resourceType)
 		}
 
 		if err != nil {
 			return
 		}
 		fmt.Println("tmpIndexDataList: ", tmpIndexDataList)
-		fmt.Println("tmpFailDataList: ", tmpFailDataList)
+		for _, v := range tmpFailDataList {
+			fmt.Println("tmpFailDataList: ", v)
+		}
+
 		indexDataList = append(indexDataList, tmpIndexDataList...)
 		failDataList = append(failDataList, tmpFailDataList...)
 	}
@@ -424,28 +407,31 @@ func ImportResourceData(path string, resourceType int, sysUser *system.Admin) (s
 	for _, v := range tagList {
 		tagNameMap[v.TagName] = v.TagId
 	}
-	//// TODO 成功数量超过20个指标,那就不导入了
-	/*	if len(targetMap) >= 100 {
-		failItem := new(knowledge.KnowledgeImportFail)
-		failItem.SysUserId = strconv.Itoa(sysUser.AdminId)
-		failItem.ClassifyName = classifyName
-		failItem.CreateDate = createDate
-		failItem.SecName = secName
-		failItem.Close = closeVal
-		failItem.Remark = "导入指标数量过多"
-		failItem.Frequency = frequency
-		failItem.Unit = unit
-		failDataList = append(failDataList, failItem)
-		//go utils.SendEmail(utils.APPNAME+"失败提醒", "导入数据 获取分类:Err:"+err.Error(), utils.EmailSendToUsers)
-		continue
-	}*/
 
 	for _, v := range indexDataList {
-		// 判断分类是否存在
-		classifyName := fmt.Sprintf("%s/%s/%s", v.ClassifyFirstName, v.ClassifySecondName, v.ClassifyThirdName)
-		fmt.Println("classifyName: ", classifyName)
-		classifyId, ok := classifyNameMap[classifyName]
-		if !ok {
+		errTip := ""
+		classifyId := 0
+		if successCount > 100 {
+			errTip = "导入数量超过100条"
+		} else if v.Title == "" {
+			errTip = "标题未填"
+		} else if v.Content == "" {
+			errTip = "正文未填"
+		} else if v.SourceFrom == "" {
+			errTip = "来源未填"
+		} else if v.ClassifyFirstName == "" {
+			errTip = "分类未填"
+		} else {
+			// 判断分类是否存在
+			classifyName := fmt.Sprintf("%s/%s/%s", v.ClassifyFirstName, v.ClassifySecondName, v.ClassifyThirdName)
+			fmt.Println("classifyName: ", classifyName)
+			classifyIdTmp, ok := classifyNameMap[classifyName]
+			if !ok {
+				errTip = "分类不存在"
+			}
+			classifyId = classifyIdTmp
+		}
+		if errTip != "" {
 			failItem := &knowledge.KnowledgeImportFail{
 				Title:          v.Title,
 				Content:        v.Content,
@@ -458,13 +444,12 @@ func ImportResourceData(path string, resourceType int, sysUser *system.Admin) (s
 				EndDate:        v.EndDate,
 				StartTime:      v.StartTime,
 				EndTime:        v.EndTime,
-				Remark:         "指标分类不存在",
+				Remark:         errTip,
 				SysUserId:      fmt.Sprint(sysUser.AdminId),
 				CreateTime:     time.Now(),
 			}
 			failDataList = append(failDataList, failItem)
 			continue
-
 		}
 
 		tagId, _ := tagNameMap[v.Tag]
@@ -635,59 +620,49 @@ func getDataByTemplateEvent(sheet *xlsx.Sheet, sysUserId, resourceType int) (ind
 		row := sheet.Row(i)
 		cells := row.Cells
 		lenCell := len(cells)
-		for k, v := range cells {
-			fmt.Println("数据第行", i, "第", k, "个单元格", v.Value)
-		}
 		// 过滤空白行
 		if lenCell <= 0 {
 			continue
 		}
-		fmt.Println("lenCell:", lenCell)
-		if lenCell < 11 {
-			if cells[0].Value == `` {
-				continue
+		var startDateO, endDateO, startTimeO, endTimeO string
+		var startDate, startTime, endDate, endTime string
+		var title, content, sourceFrom, classifyName1, classifyName2, classifyName3, tag string
+		for k, v := range cells {
+			fmt.Println("数据第行", i, "第", k, "个单元格", v.Value)
+			if k == 0 {
+				startDate = strings.TrimSpace(cells[0].Value) //开始时间
+				startDateO = startDate
+			} else if k == 1 {
+				startTime = strings.TrimSpace(cells[1].Value) //开始时间
+				startTimeO = startTime
+			} else if k == 2 {
+				endDate = strings.TrimSpace(cells[2].Value) //结束时间
+				endDateO = endDate
+			} else if k == 3 {
+				endTime = strings.TrimSpace(cells[3].Value) //结束时间
+				endTimeO = endTime
+			} else if k == 4 {
+				title = strings.TrimSpace(cells[4].Value) //标题
+			} else if k == 5 {
+				content = strings.TrimSpace(cells[5].Value) //正文
+			} else if k == 6 {
+				sourceFrom = strings.TrimSpace(cells[6].Value) //来源
+			} else if k == 7 {
+				classifyName1 = strings.TrimSpace(cells[7].Value) //一级分类
+			} else if k == 8 {
+				classifyName2 = strings.TrimSpace(cells[8].Value) //二级分类
+			} else if k == 9 {
+				classifyName3 = strings.TrimSpace(cells[9].Value) //三级分类
+			} else if k == 10 {
+				tag = strings.TrimSpace(cells[10].Value) //标签
 			}
-			errMsg = "导入文件异常,请下载最新导入模板文件"
-			err = errors.New(errMsg)
-			return
 		}
-		startDate := strings.TrimSpace(cells[0].Value) //开始时间
-		startTime := strings.TrimSpace(cells[1].Value) //开始时间
-		endDate := strings.TrimSpace(cells[2].Value)   //结束时间
-		endTime := strings.TrimSpace(cells[3].Value)   //结束时间
-		startDateO := startDate
-		endDateO := endDate
-		startTimeO := startTime
-		endTimeO := endTime
-		title := strings.TrimSpace(cells[4].Value)         //标题
-		content := strings.TrimSpace(cells[5].Value)       //正文
-		sourceFrom := strings.TrimSpace(cells[6].Value)    //来源
-		classifyName1 := strings.TrimSpace(cells[7].Value) //一级分类
-		classifyName2 := strings.TrimSpace(cells[8].Value) //二级分类
-		classifyName3 := strings.TrimSpace(cells[9].Value) //三级分类
-		tag := strings.TrimSpace(cells[10].Value)          //标签
-
-		if title == "" || content == "" || sourceFrom == "" || classifyName1 == "" { //过滤空白行
-			failDataList = append(failDataList, &knowledge.KnowledgeImportFail{
-				//Id:           0,
-				Title:          title,
-				Content:        content,
-				SourceFrom:     sourceFrom,
-				ClassifyFirst:  classifyName1,
-				ClassifySecond: classifyName2,
-				ClassifyThird:  classifyName3,
-				ResourceType:   resourceType,
-				StartDate:      startDateO,
-				EndDate:        endDateO,
-				StartTime:      startTimeO,
-				EndTime:        endTimeO,
-				Remark:         "标题或正文或来源或分类为空",
-				SysUserId:      strconv.Itoa(sysUserId),
-				CreateTime:     time.Now(),
-			})
+		if title == "" && startDate == "" && startTime == "" && endTime == "" && endDate == "" && content == "" && tag == "" && sourceFrom == "" && classifyName1 == "" && classifyName2 == "" && classifyName3 == "" { //过滤空白行
 			continue
 		}
 
+		fmt.Println("lenCell:", lenCell)
+
 		// 校验日期格式
 		if startDate != "" {
 			// 判断9:09:14日期格式是否正确
@@ -849,7 +824,7 @@ func getDataByTemplatePoint(sheet *xlsx.Sheet, sysUserId, resourceType int) (ind
 		headerRow := sheet.Row(1)
 		cells := headerRow.Cells
 		fmt.Println("cells:", len(cells))
-		if len(cells) < 8 {
+		if len(cells) < 5 {
 			errMsg = "导入文件异常,请下载最新导入模板文件"
 			err = errors.New(errMsg)
 			return
@@ -896,50 +871,37 @@ func getDataByTemplatePoint(sheet *xlsx.Sheet, sysUserId, resourceType int) (ind
 		row := sheet.Row(i)
 		cells := row.Cells
 		lenCell := len(cells)
-		for k, v := range cells {
-			fmt.Println("数据第行", i, "第", k, "个单元格", v.Value)
-		}
 		// 过滤空白行
 		if lenCell <= 0 {
 			continue
 		}
-		fmt.Println("lenCell:", lenCell)
-		if lenCell < 8 {
-			if cells[0].Value == `` {
-				continue
+		var startDateO string
+		var startDate string
+		var title, content, sourceFrom, classifyName1, classifyName2, classifyName3, tag string
+		for k, v := range cells {
+			fmt.Println("数据第行", i, "第", k, "个单元格", v.Value)
+			if k == 0 {
+				startDate = strings.TrimSpace(cells[0].Value) //开始时间
+				startDateO = startDate
+			} else if k == 1 {
+				title = strings.TrimSpace(cells[1].Value) //标题
+			} else if k == 2 {
+				content = strings.TrimSpace(cells[2].Value) //正文
+			} else if k == 3 {
+				sourceFrom = strings.TrimSpace(cells[3].Value) //来源
+			} else if k == 4 {
+				classifyName1 = strings.TrimSpace(cells[4].Value) //一级分类
+			} else if k == 5 {
+				classifyName2 = strings.TrimSpace(cells[5].Value) //二级分类
+			} else if k == 6 {
+				classifyName3 = strings.TrimSpace(cells[6].Value) //三级分类
+			} else if k == 7 {
+				tag = strings.TrimSpace(cells[7].Value) //标签
 			}
-			errMsg = "导入文件异常,请下载最新导入模板文件"
-			err = errors.New(errMsg)
-			return
 		}
-		startDate := strings.TrimSpace(cells[0].Value) //开始时间
-		startDateO := startDate
-		title := strings.TrimSpace(cells[1].Value)         //标题
-		content := strings.TrimSpace(cells[2].Value)       //正文
-		sourceFrom := strings.TrimSpace(cells[3].Value)    //来源
-		classifyName1 := strings.TrimSpace(cells[4].Value) //一级分类
-		classifyName2 := strings.TrimSpace(cells[5].Value) //二级分类
-		classifyName3 := strings.TrimSpace(cells[6].Value) //三级分类
-		tag := strings.TrimSpace(cells[7].Value)           //标签
-
-		if title == "" || content == "" || sourceFrom == "" || classifyName1 == "" { //过滤空白行
-			failDataList = append(failDataList, &knowledge.KnowledgeImportFail{
-				//Id:           0,
-				Title:          title,
-				Content:        content,
-				SourceFrom:     sourceFrom,
-				ClassifyFirst:  classifyName1,
-				ClassifySecond: classifyName2,
-				ClassifyThird:  classifyName3,
-				ResourceType:   resourceType,
-				StartDate:      startDateO,
-				Remark:         "标题或正文或来源或分类为空",
-				SysUserId:      strconv.Itoa(sysUserId),
-				CreateTime:     time.Now(),
-			})
+		if title == "" && startDate == "" && content == "" && tag == "" && sourceFrom == "" && classifyName1 == "" && classifyName2 == "" && classifyName3 == "" { //过滤空白行
 			continue
 		}
-
 		// 校验日期格式
 		if startDate != "" {
 			// 判断9:09:14日期格式是否正确