|
@@ -3,6 +3,7 @@ package knowledge
|
|
|
import (
|
|
|
"errors"
|
|
|
"eta_gn/eta_api/models/knowledge"
|
|
|
+ "eta_gn/eta_api/services/alarm_msg"
|
|
|
"eta_gn/eta_api/utils"
|
|
|
"fmt"
|
|
|
"sort"
|
|
@@ -272,16 +273,15 @@ func AddKnowledgeClassify(classifyName string, parentId, resourceType int) (err
|
|
|
fmt.Println(classify.ClassifyId)
|
|
|
// 如果父级分类不为空的话,那么就标记有子级分类,同时
|
|
|
if parentClassifyItem != nil {
|
|
|
- parentClassifyItem.HasChild = 1
|
|
|
+ /*parentClassifyItem.HasChild = 1
|
|
|
err = parentClassifyItem.Update([]string{"HasChild"})
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ */
|
|
|
// 如果以前没有子级分类,那么就继承父级分类下的章节类型(创建新的章节与分类的关系)
|
|
|
if childClassifyCount <= 0 {
|
|
|
- // todo 修改分类下的资源报告
|
|
|
- moveResourceByAddClassify(parentClassifyItem, classify)
|
|
|
+ moveResourceByAddClassify(parentClassifyItem, classify, resourceType)
|
|
|
}
|
|
|
}
|
|
|
return
|
|
@@ -295,10 +295,12 @@ func AddKnowledgeClassify(classifyName string, parentId, resourceType int) (err
|
|
|
// @param parentClassifyInfo *knowledge.KnowledgeClassify
|
|
|
// @param currClassifyInfo *knowledge.KnowledgeClassify
|
|
|
// @return err error
|
|
|
-func moveResourceByAddClassify(parentClassifyInfo, currClassifyInfo *knowledge.KnowledgeClassify) (err error) {
|
|
|
- /*defer func() {
|
|
|
+func moveResourceByAddClassify(parentClassifyInfo, currClassifyInfo *knowledge.KnowledgeClassify, resourceType int) (err error) {
|
|
|
+ defer func() {
|
|
|
if err != nil {
|
|
|
- utils.FileLog.Error(fmt.Sprint("历史报告更改分类失败,父级分类ID:", parentClassifyInfo.ClassifyId, ";当前分类ID:", currClassifyInfo.ClassifyId, ";错误信息:", err.Error()))
|
|
|
+ msg := fmt.Sprint("历史事件更改分类失败,父级分类ID:", parentClassifyInfo.ClassifyId, ";当前分类ID:", currClassifyInfo.ClassifyId, ";错误信息:", err.Error())
|
|
|
+ utils.FileLog.Error(msg)
|
|
|
+ go alarm_msg.SendAlarmMsg(msg, 3)
|
|
|
}
|
|
|
}()
|
|
|
if currClassifyInfo.Level > 3 {
|
|
@@ -307,40 +309,34 @@ func moveResourceByAddClassify(parentClassifyInfo, currClassifyInfo *knowledge.K
|
|
|
}
|
|
|
|
|
|
// 报告的分类归属调整,转为下一级的分类
|
|
|
-
|
|
|
- var condition, updateStr string
|
|
|
+ var condition string
|
|
|
pars := make([]interface{}, 0)
|
|
|
- switch currClassifyInfo.Level {
|
|
|
- case 3: // 当前分类是3级分类
|
|
|
- updateStr += ` classify_id_third = ?,classify_name_third = ?`
|
|
|
- condition += ` AND classify_id_second = ? `
|
|
|
- case 2: // 当前分类是2级分类
|
|
|
- updateStr += ` classify_id_second = ?,classify_name_second = ?`
|
|
|
- condition += ` AND classify_id_first = ? `
|
|
|
- default:
|
|
|
- err = errors.New("错误的分类层级")
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- pars = append(pars, currClassifyInfo.ClassifyId, currClassifyInfo.ClassifyName, parentClassifyInfo.ClassifyId)
|
|
|
-
|
|
|
- // 获取当前分类下的所有章节类型
|
|
|
- currReportChapterTypeList, err := knowledgeObj.GetAllReportChapterTypeListByClassifyId(currClassifyInfo.ClassifyId)
|
|
|
+ condition += ` AND resource_type = ? `
|
|
|
+ pars = append(pars, resourceType)
|
|
|
+ // 查询是需要转移的资源数量
|
|
|
+ condition += ` AND classify_id = ? `
|
|
|
+ pars = append(pars, parentClassifyInfo.ClassifyId)
|
|
|
+ idList, err := knowledge.GetKnowledgeResourceIdList(condition, pars)
|
|
|
if err != nil {
|
|
|
+ err = fmt.Errorf("查询需要转移的资源数量失败,Err: %s", err.Error())
|
|
|
return
|
|
|
}
|
|
|
- // 当前的章节类型ID ---> 继承的章节类型ID
|
|
|
- chapterTypeIdMap := make(map[int]int)
|
|
|
- for _, v := range currReportChapterTypeList {
|
|
|
- chapterTypeIdMap[v.ReportChapterTypeId] = v.InheritReportChapterTypeId
|
|
|
- }
|
|
|
-
|
|
|
- // 报告转移后,历史章节报告中的type_id也要修复成最新的type_id
|
|
|
- err = knowledgeObj.ModifyKnowledgeClassifyAndReportChapterTypeByCondition(condition, pars, updateStr, chapterTypeIdMap, parentClassifyInfo.ClassifyId, currClassifyInfo.ClassifyId, currClassifyInfo.ClassifyName)
|
|
|
- if err != nil {
|
|
|
+ if len(idList) == 0 { //没有需要转移的资源
|
|
|
return
|
|
|
- }*/
|
|
|
+ }
|
|
|
|
|
|
+ newClassifyId := currClassifyInfo.ClassifyId
|
|
|
+ if currClassifyInfo.Level == 2 {
|
|
|
+ //查询排名第一的子分类
|
|
|
+ classifyObj := new(knowledge.KnowledgeClassify)
|
|
|
+ childClassify, e := classifyObj.GetFirstClassifyByParentId(currClassifyInfo.ClassifyId)
|
|
|
+ if e == nil {
|
|
|
+ newClassifyId = childClassify.ClassifyId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resourceObj := new(knowledge.KnowledgeResource)
|
|
|
+ // 批量事件的分类ID
|
|
|
+ err = resourceObj.UpdateClassifyIdByIds(idList, newClassifyId, resourceType)
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -368,11 +364,24 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
|
|
|
errMsg = "不允许修改分类层级"
|
|
|
return
|
|
|
}
|
|
|
+ // 父级分类
|
|
|
+ var parentClassifyItem *knowledge.KnowledgeClassify
|
|
|
+ // 父级分类下的子分类数量
|
|
|
+ var childClassifyCount int
|
|
|
+
|
|
|
if parentId > 0 {
|
|
|
- parentClassifyItem, e := knowledgeObj.GetClassifyById(parentId)
|
|
|
- if e != nil {
|
|
|
- errMsg = "获取父级分类失败"
|
|
|
- err = errors.New("获取父级分类失败, Err: " + e.Error())
|
|
|
+ // 获取父级分类信息
|
|
|
+ parentClassifyItem, err = knowledgeObj.GetClassifyById(parentId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "获取父级分类信息失败"
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ errMsg = "父级分类不存在"
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if parentClassifyItem.ResourceType != resourceType {
|
|
|
+ errMsg = "父级分类与当前分类类型不一致"
|
|
|
+ err = fmt.Errorf(errMsg)
|
|
|
return
|
|
|
}
|
|
|
if parentClassifyItem.Level != item.Level {
|
|
@@ -380,7 +389,21 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
|
|
|
err = errors.New("不允许修改分类层级")
|
|
|
return
|
|
|
}
|
|
|
+ level := parentClassifyItem.Level + 1
|
|
|
+
|
|
|
+ if level > 3 {
|
|
|
+ errMsg = "分类层级不可超过三级"
|
|
|
+ isSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 获取父级分类下的子分类数量
|
|
|
+ childClassifyCount, err = knowledgeObj.GetCountClassifyChildByParentId(parentId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "获取父级分类的子分类信息失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
//originName := item.ClassifyName
|
|
|
|
|
|
// 重名校验
|
|
@@ -398,8 +421,6 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
|
|
|
}
|
|
|
item.ClassifyName = classifyName
|
|
|
|
|
|
- // ETA1.8.3:不允许修改上级分类 2024-6-17 13:21:01
|
|
|
- //
|
|
|
// todo 修改父级,修改level,只允许修改同级别
|
|
|
item.ParentId = parentId
|
|
|
item.ModifyTime = time.Now().Local()
|
|
@@ -410,7 +431,19 @@ func EditKnowledgeClassify(classifyId, parentId int, classifyName string, resour
|
|
|
return
|
|
|
}
|
|
|
// todo 修改父级分类下相关的事件,找到当前分类的最小分类,把上一级的报告挪到最小分类上
|
|
|
+ // 如果父级分类不为空的话,那么就标记有子级分类,同时
|
|
|
+ if parentClassifyItem != nil {
|
|
|
+ /*parentClassifyItem.HasChild = 1
|
|
|
+ err = parentClassifyItem.Update([]string{"HasChild"})
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }*/
|
|
|
|
|
|
+ // 如果以前没有子级分类,那么就继承父级分类下的章节类型(创建新的章节与分类的关系)
|
|
|
+ if childClassifyCount <= 0 {
|
|
|
+ moveResourceByAddClassify(parentClassifyItem, item, resourceType)
|
|
|
+ }
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
|