Explorar o código

Merge branch 'eta_classify_bug_1025@guomengyuan'

gmy hai 5 meses
pai
achega
dd931cf425
Modificáronse 4 ficheiros con 111 adicións e 35 borrados
  1. 9 0
      controllers/classify.go
  2. 13 0
      models/report.go
  3. 79 35
      services/classify.go
  4. 10 0
      services/cmd/start_classify.go

+ 9 - 0
controllers/classify.go

@@ -863,3 +863,12 @@ func (this *ClassifyController) ClassifyPermissionV2() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// 处理禅道bug6445,对数据进行补偿刷新
+/*func init() {
+	err := services.DealBug6445()
+	if err != nil {
+		return
+	}
+}
+*/

+ 13 - 0
models/report.go

@@ -1537,3 +1537,16 @@ func UpdateReportInfo(reports *Report) (err error) {
 
 	return
 }
+
+func FindReportListByCondition(condition string, pars []interface{}) (items []*Report, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT * FROM report WHERE 1=1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	if err != nil {
+		return nil, err
+	}
+	return
+}

+ 79 - 35
services/classify.go

@@ -7,6 +7,7 @@ import (
 	"eta/eta_api/models/report_approve"
 	"eta/eta_api/utils"
 	"fmt"
+	"github.com/beego/beego/v2/core/logs"
 	"sort"
 	"time"
 )
@@ -276,47 +277,56 @@ func AddReportClassify(classifyName string, parentId int, chartPermissionIdList
 		return
 	}
 
-	// 如果父级分类下有报告,修改报告到子级分类下
-	reports, err := models.GetReportListByClassifyId(parentId)
+	// 如果当前分类下,没有其他分类,则将当前分类下的所有报告放入新分类下
+	count, err := models.GetClassifySubCountByParentId(parentId)
 	if err != nil {
-		return err, "查询报告列表失败", false
-	}
-	if len(reports) > 0 {
-		for _, report := range reports {
-			if report.ClassifyIdFirst == 0 {
-				report.ClassifyIdFirst = classify.Id
-				report.ClassifyNameFirst = classifyName
-			} else if report.ClassifyIdSecond == 0 {
-				report.ClassifyIdSecond = classify.Id
-				report.ClassifyNameSecond = classifyName
-			} else {
-				report.ClassifyIdThird = classify.Id
-				report.ClassifyNameThird = classifyName
-			}
+		return err, "查询分类下所有的分类记录数失败", false
+	}
+
+	if count <= 0 {
+		// 如果父级分类下 无其他子分类 并且有报告,修改报告到子级分类下
+		reports, err := models.GetReportListByClassifyId(parentId)
+		if err != nil {
+			return err, "查询报告列表失败", false
+		}
+		if len(reports) > 0 {
+			for _, report := range reports {
+				if report.ClassifyIdFirst == 0 {
+					report.ClassifyIdFirst = classify.Id
+					report.ClassifyNameFirst = classifyName
+				} else if report.ClassifyIdSecond == 0 {
+					report.ClassifyIdSecond = classify.Id
+					report.ClassifyNameSecond = classifyName
+				} else {
+					report.ClassifyIdThird = classify.Id
+					report.ClassifyNameThird = classifyName
+				}
 
-			// beego orm 不支持批量修改,所以只能一个一个修改
-			err := models.UpdateReportInfo(report)
-			if err != nil {
-				return err, "修改报告分类失败", false
+				// beego orm 不支持批量修改,所以只能一个一个修改
+				err := models.UpdateReportInfo(report)
+				if err != nil {
+					return err, "修改报告分类失败", false
+				}
 			}
 		}
-	}
-	outsideReports, err := document_manage_model.GetOutsideReportListByClassifyId(parentId)
-	if err != nil {
-		return err, "查询外部报告列表失败", false
-	}
-	if len(outsideReports) > 0 {
-		for _, report := range outsideReports {
-			tempReport := report
-
-			tempReport.ClassifyId = classify.Id
-			tempReport.ClassifyName = classifyName
-			// 修改报告
-			err := document_manage_model.UpdateOutsideReport(&tempReport)
-			if err != nil {
-				return err, "修改外部报告分类失败", false
+		outsideReports, err := document_manage_model.GetOutsideReportListByClassifyId(parentId)
+		if err != nil {
+			return err, "查询外部报告列表失败", false
+		}
+		if len(outsideReports) > 0 {
+			for _, report := range outsideReports {
+				tempReport := report
+
+				tempReport.ClassifyId = classify.Id
+				tempReport.ClassifyName = classifyName
+				// 修改报告
+				err := document_manage_model.UpdateOutsideReport(&tempReport)
+				if err != nil {
+					return err, "修改外部报告分类失败", false
+				}
 			}
 		}
+
 	}
 
 	//获取报告分类权限列表
@@ -819,3 +829,37 @@ func (a BySortAndCreateTime) Less(i, j int) bool {
 func SortClassifyListBySortAndCreateTime(classifyList []*models.ClassifyList) {
 	sort.Sort(BySortAndCreateTime(classifyList))
 }
+
+// DealBug6445 处理禅道bug6445,对数据进行补偿刷新
+func DealBug6445() error {
+	var condition string
+	var pars []interface{}
+	reportList, err := models.FindReportListByCondition(condition, pars)
+	if err != nil {
+		return err
+	}
+
+	for _, report := range reportList {
+		oldClassifyIdThird := report.ClassifyIdThird
+		oldClassifyNameThird := report.ClassifyNameThird
+		classifyIdList := []int{report.ClassifyIdSecond, report.ClassifyIdThird}
+
+		// 判断当前分类id的父id是否一样,如果系统则将3级分类置为0
+		classifies, err := models.GetClassifyListByIdList(classifyIdList)
+		if err != nil {
+			return err
+		}
+		if len(classifies) >= 2 {
+			if classifies[0].ParentId == classifies[1].ParentId && classifies[0].ParentId != 0 {
+				report.ClassifyIdThird = 0
+				report.ClassifyNameThird = ""
+				err := report.UpdateReport([]string{"classify_id_third", "classify_name_third"})
+				if err != nil {
+					return err
+				}
+				logs.Info("update report id: %d, classify_id_third: %d, classify_name_third: %s", report.Id, oldClassifyIdThird, oldClassifyNameThird)
+			}
+		}
+	}
+	return nil
+}

+ 10 - 0
services/cmd/start_classify.go

@@ -0,0 +1,10 @@
+package main
+
+import "eta/eta_api/services"
+
+func main() {
+	err := services.DealBug6445()
+	if err != nil {
+		return
+	}
+}