|
@@ -10,7 +10,7 @@ import (
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
-// TODO 移动的时候,获取上下级的分裂
|
|
|
+// TODO 分类名称允许在不同人的名下重复
|
|
|
|
|
|
// AddChartPublicClassify
|
|
|
// @Description: 添加公共指标分类
|
|
@@ -306,215 +306,183 @@ func DeleteChartPublicClassify(classifyId int, sysUser *system.Admin, requestBod
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// MoveChartClassify 移动指标分类 TODO
|
|
|
-//func MoveChartPublicClassify(req data_manage.MoveChartClassifyReq, sysUser *system.Admin, source int) (err error, errMsg string) {
|
|
|
-// // req.ClassifyId, req.ParentClassifyId, req.PrevClassifyId, req.NextClassifyId
|
|
|
-// classifyId := req.ClassifyId
|
|
|
-// parentClassifyId := req.ParentClassifyId
|
|
|
-// prevClassifyId := req.PrevClassifyId
|
|
|
-// nextClassifyId := req.NextClassifyId
|
|
|
-//
|
|
|
-// chartInfoId := req.ChartInfoId
|
|
|
-// prevChartInfoId := req.PrevChartInfoId
|
|
|
-// nextChartInfoId := req.NextChartInfoId
|
|
|
-//
|
|
|
-// //首先确定移动的对象是分类还是指标
|
|
|
-// //判断上一个节点是分类还是指标
|
|
|
-// //判断下一个节点是分类还是指标
|
|
|
-// //同时更新分类目录下的分类sort和指标sort
|
|
|
-// //更新当前移动的分类或者指标sort
|
|
|
-//
|
|
|
-// var parentChartClassifyInfo *data_manage.ChartClassify
|
|
|
-// if parentClassifyId > 0 {
|
|
|
-// parentChartClassifyInfo, err = data_manage.GetChartClassifyById(parentClassifyId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取上级分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// //如果有传入 上一个兄弟节点分类id
|
|
|
-// var (
|
|
|
-// chartClassifyInfo *data_manage.ChartPublicClassify
|
|
|
-// prevClassify *data_manage.ChartPublicClassify
|
|
|
-// nextClassify *data_manage.ChartPublicClassify
|
|
|
-//
|
|
|
-// chartInfo *data_manage.ChartInfo
|
|
|
-// prevChartInfo *data_manage.ChartInfo
|
|
|
-// nextChartInfo *data_manage.ChartInfo
|
|
|
-// prevSort int
|
|
|
-// nextSort int
|
|
|
-// )
|
|
|
-//
|
|
|
-// obj:= data_manage.ChartPublicClassify{}
|
|
|
-//
|
|
|
-// // 移动对象为分类, 判断权限
|
|
|
-// if chartInfoId == 0 {
|
|
|
-// chartClassifyInfo, err = obj.GetChartClassifyById(classifyId)
|
|
|
-// if err != nil {
|
|
|
-// if utils.IsErrNoRow(err) {
|
|
|
-// errMsg = "当前分类不存在"
|
|
|
-// err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if chartClassifyInfo.SysUserId != sysUser.AdminId {
|
|
|
-// errMsg = "不是本人目录,您没有操作权限"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if parentClassifyId > 0 && parentChartClassifyInfo.Level == 6 {
|
|
|
-// errMsg = "最高只支持添加6级分类"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// // 如果是移动目录, 那么校验一下父级目录下是否有重名目录
|
|
|
-// exists, e := data_manage.GetChartPublicClassifyByParentIdAndName(source, parentClassifyId, chartClassifyInfo.ChartClassifyName, classifyId)
|
|
|
-// if e != nil && !utils.IsErrNoRow(e) {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = fmt.Errorf("获取父级分类下的同名分类失败, Err: %s", e.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// if exists != nil && exists.ChartClassifyId > 0 {
|
|
|
-// errMsg = "移动失败,分类名称已存在"
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// // 权限校验
|
|
|
-// {
|
|
|
-// // 已授权分类id
|
|
|
-// permissionClassifyIdList, tmpErr := data_manage_permission.GetUserChartClassifyPermissionList(sysUser.AdminId, classifyId)
|
|
|
-// if tmpErr != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取已授权分类id数据失败,Err:" + tmpErr.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// // 数据权限
|
|
|
-// haveOperaAuth := data_manage_permission.CheckChartClassifyPermissionByPermissionIdList(chartClassifyInfo.IsJoinPermission, chartClassifyInfo.ClassifyId, permissionClassifyIdList)
|
|
|
-//
|
|
|
-// if chartClassifyInfo.ClassifyType == 0 { // 普通指标
|
|
|
-// button := GetChartClassifyOpButton(sysUser, chartClassifyInfo.SysUserId, haveOperaAuth)
|
|
|
-// if !button.MoveButton {
|
|
|
-// errMsg = "无操作权限"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// } else if chartClassifyInfo.ClassifyType == 1 { // 预测指标
|
|
|
-// button := GetPredictChartClassifyOpButton(sysUser, chartClassifyInfo.SysUserId, haveOperaAuth)
|
|
|
-// if !button.MoveButton {
|
|
|
-// errMsg = "无操作权限"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// } else {
|
|
|
-// chartInfo, err = data_manage.GetChartInfoById(req.ChartInfoId)
|
|
|
-// if err != nil {
|
|
|
-// if utils.IsErrNoRow(err) {
|
|
|
-// errMsg = "当前指标不存在"
|
|
|
-// err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// if chartInfo.SysUserId != sysUser.AdminId {
|
|
|
-// errMsg = "不是本人指标,您没有操作权限"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// if parentClassifyId == 0 {
|
|
|
-// errMsg = "移动失败,指标必须挂在分类下"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// var haveOperaAuth bool
|
|
|
-// // 权限校验
|
|
|
-// {
|
|
|
-// haveOperaAuth, err = data_manage_permission.CheckChartPermissionByChartInfoId(chartInfo.ChartInfoId, chartInfo.ClassifyId, chartInfo.IsJoinPermission, sysUser.AdminId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取指标权限信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// // 移动权限校验
|
|
|
-// button := GetChartOpButton(sysUser, chartInfo.SysUserId, chartInfo.ChartType, chartInfo.ChartInfoType, haveOperaAuth)
|
|
|
-// if !button.MoveButton {
|
|
|
-// errMsg = "无操作权限"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// if prevClassifyId > 0 {
|
|
|
-// prevClassify, err = data_manage.GetChartClassifyById(prevClassifyId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// prevSort = prevClassify.Sort
|
|
|
-// } else if prevChartInfoId > 0 {
|
|
|
-// prevChartInfo, err = data_manage.GetChartInfoById(prevChartInfoId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// prevSort = prevChartInfo.Sort
|
|
|
-// }
|
|
|
-//
|
|
|
-// if nextClassifyId > 0 {
|
|
|
-// //下一个兄弟节点
|
|
|
-// nextClassify, err = data_manage.GetChartClassifyById(nextClassifyId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// nextSort = nextClassify.Sort
|
|
|
-// } else if nextChartInfoId > 0 {
|
|
|
-// //下一个兄弟节点
|
|
|
-// nextChartInfo, err = data_manage.GetChartInfoById(nextChartInfoId)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// nextSort = nextChartInfo.Sort
|
|
|
-// }
|
|
|
-//
|
|
|
-// err, errMsg = moveChartOrClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify, chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
-// return
|
|
|
-//}
|
|
|
-
|
|
|
-// moveChartOrClassify 移动指标分类 TODO
|
|
|
-//func moveChartOrPublicClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify *data_manage.ChartClassify, chartInfo, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort int, source int) (err error, errMsg string) {
|
|
|
-//
|
|
|
-// if chartClassifyInfo != nil {
|
|
|
-// // 移动分类
|
|
|
-// return moveChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
-// } else {
|
|
|
-// // 移动指标
|
|
|
-// return moveChart(prevClassify, nextClassify, chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
-// }
|
|
|
-//
|
|
|
-// return
|
|
|
-//}
|
|
|
-
|
|
|
-// moveChart TODO
|
|
|
+// MoveChartClassify 移动指标分类
|
|
|
+func MoveChartPublicClassify(req data_manage.MoveChartClassifyReq, sysUser *system.Admin) (err error, errMsg string) {
|
|
|
+ // req.ClassifyId, req.ParentClassifyId, req.PrevClassifyId, req.NextClassifyId
|
|
|
+ classifyId := req.ClassifyId
|
|
|
+ parentClassifyId := req.ParentClassifyId
|
|
|
+ prevClassifyId := req.PrevClassifyId
|
|
|
+ nextClassifyId := req.NextClassifyId
|
|
|
+
|
|
|
+ chartInfoId := req.ChartInfoId
|
|
|
+ prevChartInfoId := req.PrevChartInfoId
|
|
|
+ nextChartInfoId := req.NextChartInfoId
|
|
|
+
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+ source := utils.CHART_SOURCE_DEFAULT
|
|
|
+
|
|
|
+ //首先确定移动的对象是分类还是指标
|
|
|
+ //判断上一个节点是分类还是指标
|
|
|
+ //判断下一个节点是分类还是指标
|
|
|
+ //同时更新分类目录下的分类sort和指标sort
|
|
|
+ //更新当前移动的分类或者指标sort
|
|
|
+
|
|
|
+ var parentChartClassifyInfo *data_manage.ChartPublicClassify
|
|
|
+ if parentClassifyId > 0 {
|
|
|
+ parentChartClassifyInfo, err = obj.GetChartClassifyById(parentClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取上级分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果有传入 上一个兄弟节点分类id
|
|
|
+ var (
|
|
|
+ chartClassifyInfo *data_manage.ChartPublicClassify
|
|
|
+ prevClassify *data_manage.ChartPublicClassify
|
|
|
+ nextClassify *data_manage.ChartPublicClassify
|
|
|
+
|
|
|
+ chartInfo *data_manage.ChartInfo
|
|
|
+ prevChartInfo *data_manage.ChartInfo
|
|
|
+ nextChartInfo *data_manage.ChartInfo
|
|
|
+ prevSort int
|
|
|
+ nextSort int
|
|
|
+ )
|
|
|
+
|
|
|
+ // 移动对象为分类, 判断权限
|
|
|
+ if chartInfoId == 0 {
|
|
|
+ chartClassifyInfo, err = obj.GetChartClassifyById(classifyId)
|
|
|
+ if err != nil {
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ errMsg = "当前分类不存在"
|
|
|
+ err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if chartClassifyInfo.Source != source {
|
|
|
+ errMsg = "分类异常,不是ETA图库的分类"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if parentClassifyId > 0 && parentChartClassifyInfo.Level == 6 {
|
|
|
+ errMsg = "最高只支持添加6级分类"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 如果是移动目录, 那么校验一下父级目录下是否有重名目录
|
|
|
+ exists, e := obj.GetChartPublicClassifyByParentIdAndName(source, parentClassifyId, chartClassifyInfo.ChartPublicClassifyName, classifyId)
|
|
|
+ if e != nil && !utils.IsErrNoRow(e) {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = fmt.Errorf("获取父级分类下的同名分类失败, Err: %s", e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if exists != nil && exists.ChartPublicClassifyId > 0 {
|
|
|
+ errMsg = "移动失败,分类名称已存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ chartInfo, err = data_manage.GetChartInfoById(req.ChartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ errMsg = "当前指标不存在"
|
|
|
+ err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if chartInfo.Source != source {
|
|
|
+ errMsg = "分类异常,不是ETA图库的分类"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if parentClassifyId == 0 {
|
|
|
+ errMsg = "移动失败,指标必须挂在分类下"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // TODO 移动权限校验
|
|
|
+ }
|
|
|
+
|
|
|
+ if prevClassifyId > 0 {
|
|
|
+ prevClassify, err = obj.GetChartClassifyById(prevClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ prevSort = prevClassify.Sort
|
|
|
+ } else if prevChartInfoId > 0 {
|
|
|
+ prevChartInfo, err = data_manage.GetChartInfoById(prevChartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取上一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ prevSort = prevChartInfo.PublicSort
|
|
|
+ }
|
|
|
+
|
|
|
+ if nextClassifyId > 0 {
|
|
|
+ //下一个兄弟节点
|
|
|
+ nextClassify, err = obj.GetChartClassifyById(nextClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ nextSort = nextClassify.Sort
|
|
|
+ } else if nextChartInfoId > 0 {
|
|
|
+ //下一个兄弟节点
|
|
|
+ nextChartInfo, err = data_manage.GetChartInfoById(nextChartInfoId)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取下一个兄弟节点分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ nextSort = nextChartInfo.PublicSort
|
|
|
+ }
|
|
|
+
|
|
|
+ err, errMsg = movePublicChartOrClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify, chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// movePublicChartOrClassify
|
|
|
+// @Description: 移动公共指标/分类
|
|
|
+// @param parentChartClassifyInfo
|
|
|
+// @param chartClassifyInfo
|
|
|
+// @param prevClassify
|
|
|
+// @param nextClassify
|
|
|
+// @param chartInfo
|
|
|
+// @param prevChartInfo
|
|
|
+// @param nextChartInfo
|
|
|
+// @param parentClassifyId
|
|
|
+// @param prevSort
|
|
|
+// @param nextSort
|
|
|
+// @param source
|
|
|
+// @return err
|
|
|
+// @return errMsg
|
|
|
+func movePublicChartOrClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify *data_manage.ChartPublicClassify, chartInfo, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort, source int) (err error, errMsg string) {
|
|
|
+
|
|
|
+ if chartClassifyInfo != nil {
|
|
|
+ // 移动分类
|
|
|
+ return movePublicChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
+ } else {
|
|
|
+ // 移动指标
|
|
|
+ return moveChartPublic(prevClassify, nextClassify, chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// moveChartPublic
|
|
|
// @Description: 移动指标
|
|
|
// @author: Roc
|
|
|
// @datetime 2024-11-26 16:07:37
|
|
@@ -526,135 +494,148 @@ func DeleteChartPublicClassify(classifyId int, sysUser *system.Admin, requestBod
|
|
|
// @param parentClassifyId int
|
|
|
// @param prevSort int
|
|
|
// @param nextSort int
|
|
|
-// @param source int
|
|
|
+// @param source uint8
|
|
|
// @return err error
|
|
|
// @return errMsg string
|
|
|
-//func movePublicChart(prevClassify, nextClassify *data_manage.ChartClassify, chartInfo, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort int, source int) (err error, errMsg string) {
|
|
|
-// updateCol := make([]string, 0)
|
|
|
-//
|
|
|
-// if chartInfo == nil {
|
|
|
-// errMsg = "当前指标不存在"
|
|
|
-// err = errors.New(errMsg)
|
|
|
-// return
|
|
|
-// }
|
|
|
-// //如果改变了分类,那么移动该指标数据
|
|
|
-// if chartInfo.ClassifyId != parentClassifyId {
|
|
|
-// chartInfo.ClassifyId = parentClassifyId
|
|
|
-// chartInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "ClassifyId", "ModifyTime")
|
|
|
-// }
|
|
|
-// if prevSort > 0 {
|
|
|
-// //如果是移动在两个兄弟节点之间
|
|
|
-// if nextSort > 0 {
|
|
|
-// //下一个兄弟节点
|
|
|
-// //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
|
|
|
-// if prevSort == nextSort || prevSort == chartInfo.Sort {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// updateSortStr := `sort + 2`
|
|
|
-//
|
|
|
-// //变更分类
|
|
|
-// if prevClassify != nil {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr, source)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
-// }
|
|
|
-//
|
|
|
-// //变更指标
|
|
|
-// if prevChartInfo != nil {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateSortStr)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, 0, updateSortStr)
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-// //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
|
|
|
-// if nextSort-prevSort == 1 {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// updateSortStr := `sort + 1`
|
|
|
-// //变更分类
|
|
|
-// if prevClassify != nil {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ClassifyId, prevSort, updateSortStr, source)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
-// }
|
|
|
-//
|
|
|
-// //变更指标
|
|
|
-// if prevChartInfo != nil {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateSortStr)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, 0, updateSortStr)
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// chartInfo.Sort = prevSort + 1
|
|
|
-// chartInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// } else if prevClassify == nil && nextClassify == nil && prevChartInfo == nil && nextChartInfo == nil && parentClassifyId > 0 {
|
|
|
-// //处理只拖动到目录里,默认放到目录底部的情况
|
|
|
-// var maxSort int
|
|
|
-// maxSort, err = GetChartClassifyMaxSort(parentClassifyId, source)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("查询组内排序信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// chartInfo.Sort = maxSort + 1 //那就是排在组内最后一位
|
|
|
-// chartInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// } else {
|
|
|
-// // 拖动到父级分类的第一位
|
|
|
-// firstClassify, tmpErr := data_manage.GetFirstChartClassifyByParentId(parentClassifyId)
|
|
|
-// if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
-// if firstClassify != nil && firstClassify.ClassifyId > 0 && firstClassify.Sort == 0 {
|
|
|
-// updateSortStr := ` sort + 1 `
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, firstClassify.ClassifyId-1, 0, updateSortStr, source)
|
|
|
-// //该分类下的所有指标也需要+1
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, 0, 0, updateSortStr)
|
|
|
-// } else {
|
|
|
-// //如果该分类下存在指标,且第一个指标的排序等于0,那么需要调整排序
|
|
|
-// firstChart, tErr := data_manage.GetFirstChartInfoByClassifyId(parentClassifyId)
|
|
|
-// if tErr != nil && !utils.IsErrNoRow(tErr) {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tErr.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
-// if firstChart != nil && firstChart.ClassifyId > 0 && firstChart.Sort == 0 {
|
|
|
-// updateSortStr := ` sort + 1 `
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, 0, firstChart.ChartInfoId-1, updateSortStr)
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, 0, updateSortStr, source)
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// chartInfo.Sort = 0 //那就是排在第一位
|
|
|
-// chartInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// }
|
|
|
-//
|
|
|
-// //更新
|
|
|
-// if len(updateCol) > 0 {
|
|
|
-// err = chartInfo.Update(updateCol)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("修改失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// return
|
|
|
-//}
|
|
|
-
|
|
|
-// moveChartClassify
|
|
|
+func moveChartPublic(prevClassify, nextClassify *data_manage.ChartPublicClassify, chartInfo, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort, source int) (err error, errMsg string) {
|
|
|
+ updateCol := make([]string, 0)
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+
|
|
|
+ fmt.Println("prevSort:", prevSort)
|
|
|
+ fmt.Println("prevChartInfo:", prevChartInfo)
|
|
|
+ fmt.Println("parentClassifyId:", parentClassifyId)
|
|
|
+ if chartInfo == nil {
|
|
|
+ errMsg = "当前指标不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //如果改变了分类,那么移动该指标数据
|
|
|
+ if chartInfo.ChartClassifyId != parentClassifyId {
|
|
|
+ chartInfo.ChartPublicClassifyId = parentClassifyId
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "ChartPublicClassifyId", "ModifyTime")
|
|
|
+ }
|
|
|
+ if prevChartInfo != nil && prevChartInfo.ChartInfoId > 0 {
|
|
|
+ //如果是移动在两个兄弟节点之间
|
|
|
+ if nextSort > 0 {
|
|
|
+ //下一个兄弟节点
|
|
|
+ //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
|
|
|
+ if prevSort == nextSort || prevSort == chartInfo.PublicSort {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ updateSortStr := ` sort + 2`
|
|
|
+ updateChartSortStr := ` public_sort + 2`
|
|
|
+
|
|
|
+ //变更分类
|
|
|
+ if prevClassify != nil {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ChartPublicClassifyId, prevClassify.Sort, updateSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ //变更指标
|
|
|
+ if prevChartInfo != nil {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateChartSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, 0, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
|
|
|
+ if nextSort-prevSort == 1 {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ updateSortStr := ` sort + 1`
|
|
|
+ updateChartSortStr := ` public_sort + 1`
|
|
|
+ //变更分类
|
|
|
+ if prevClassify != nil {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ChartPublicClassifyId, prevSort, updateSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ //变更指标
|
|
|
+ if prevChartInfo != nil {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, 0, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ chartInfo.PublicSort = prevChartInfo.PublicSort + 1
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "PublicSort", "ModifyTime")
|
|
|
+ } else if prevClassify == nil && nextClassify == nil && prevChartInfo == nil && nextChartInfo == nil && parentClassifyId > 0 {
|
|
|
+ //处理只拖动到目录里,默认放到目录底部的情况
|
|
|
+ var maxSort int
|
|
|
+ maxSort, err = GetPublicChartClassifyMaxSort(parentClassifyId, source)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("查询组内排序信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fmt.Println("maxSort:", maxSort)
|
|
|
+ chartInfo.PublicSort = maxSort + 1 //那就是排在组内最后一位
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "PublicSort", "ModifyTime")
|
|
|
+ } else {
|
|
|
+ fmt.Println("进来:")
|
|
|
+ // 拖动到父级分类的第一位
|
|
|
+ firstClassify, tmpErr := obj.GetFirstChartClassifyByParentId(parentClassifyId)
|
|
|
+ if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
+ if firstClassify != nil && firstClassify.ChartPublicClassifyId > 0 && firstClassify.Sort == 0 {
|
|
|
+ updateSortStr := ` sort + 1 `
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, firstClassify.ChartPublicClassifyId-1, 0, updateSortStr, source)
|
|
|
+ //该分类下的所有指标也需要+1
|
|
|
+
|
|
|
+ updateChartSortStr := ` public_sort + 1 `
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, 0, 0, updateChartSortStr, source)
|
|
|
+ } else {
|
|
|
+ //如果该分类下存在指标,且第一个指标的排序等于0,那么需要调整排序
|
|
|
+ firstChart, tErr := data_manage.GetFirstChartInfoByPublicClassifyId(parentClassifyId)
|
|
|
+ if tErr != nil && !utils.IsErrNoRow(tErr) {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
+ if firstChart != nil && firstChart.ChartClassifyId > 0 && firstChart.Sort == 0 {
|
|
|
+ updateSortStr := ` sort + 1 `
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, 0, updateSortStr, source)
|
|
|
+
|
|
|
+ // 指标
|
|
|
+ updateChartSortStr := ` public_sort + 1 `
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, 0, firstChart.ChartInfoId-1, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ chartInfo.PublicSort = 0 //那就是排在第一位
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "PublicSort", "ModifyTime")
|
|
|
+ }
|
|
|
+
|
|
|
+ //更新
|
|
|
+ if len(updateCol) > 0 {
|
|
|
+ err = chartInfo.Update(updateCol)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("修改失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// movePublicChartClassify
|
|
|
// @Description: 移动指标分类
|
|
|
// @author: Roc
|
|
|
// @datetime 2024-11-26 16:07:44
|
|
@@ -668,174 +649,263 @@ func DeleteChartPublicClassify(classifyId int, sysUser *system.Admin, requestBod
|
|
|
// @param parentClassifyId int
|
|
|
// @param prevSort int
|
|
|
// @param nextSort int
|
|
|
-// @param source int
|
|
|
+// @param source uint8
|
|
|
// @return err error
|
|
|
// @return errMsg string
|
|
|
-//func moveChartPublicClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify *data_manage.ChartClassify, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort int, source int) (err error, errMsg string) {
|
|
|
-// updateCol := make([]string, 0)
|
|
|
-//
|
|
|
-// // 移动对象为分类, 判断分类是否存在
|
|
|
-// oldParentId := chartClassifyInfo.ParentId
|
|
|
-// oldLevel := chartClassifyInfo.Level
|
|
|
-// var classifyIds []int
|
|
|
-// if oldParentId != parentClassifyId {
|
|
|
-// //更新子分类对应的level
|
|
|
-// childList, e, m := GetChildClassifyByClassifyId(chartClassifyInfo.ClassifyId)
|
|
|
-// if e != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("查询子分类失败,Err:" + e.Error() + m)
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// if len(childList) > 0 {
|
|
|
-// for _, v := range childList {
|
|
|
-// if v.ClassifyId == chartClassifyInfo.ClassifyId {
|
|
|
-// continue
|
|
|
-// }
|
|
|
-// classifyIds = append(classifyIds, v.ClassifyId)
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// //判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
|
|
|
-// if chartClassifyInfo.ParentId != parentClassifyId && parentClassifyId != 0 {
|
|
|
-// if chartClassifyInfo.Level != parentChartClassifyInfo.Level+1 { //禁止层级调整
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("不支持目录层级变更")
|
|
|
-// return
|
|
|
-// }
|
|
|
-// chartClassifyInfo.ParentId = parentChartClassifyInfo.ClassifyId
|
|
|
-// chartClassifyInfo.RootId = parentChartClassifyInfo.RootId
|
|
|
-// chartClassifyInfo.Level = parentChartClassifyInfo.Level + 1
|
|
|
-// chartClassifyInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "ParentId", "RootId", "Level", "ModifyTime")
|
|
|
-// } else if chartClassifyInfo.ParentId != parentClassifyId && parentClassifyId == 0 {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("不支持目录层级变更")
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// if prevSort > 0 {
|
|
|
-// //如果是移动在两个兄弟节点之间
|
|
|
-// if nextSort > 0 {
|
|
|
-// //下一个兄弟节点
|
|
|
-// //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
|
|
|
-// if prevSort == nextSort || prevSort == chartClassifyInfo.Sort {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// updateSortStr := `sort + 2`
|
|
|
-//
|
|
|
-// //变更分类
|
|
|
-// if prevClassify != nil {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr, source)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
-// }
|
|
|
-//
|
|
|
-// //变更指标
|
|
|
-// if prevChartInfo != nil {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateSortStr)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, 0, updateSortStr)
|
|
|
-// }
|
|
|
-// } else {
|
|
|
-// //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
|
|
|
-// if nextSort-prevSort == 1 {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// updateSortStr := `sort + 1`
|
|
|
-//
|
|
|
-// //变更分类
|
|
|
-// if prevClassify != nil {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ClassifyId, prevSort, updateSortStr, source)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
-// }
|
|
|
-//
|
|
|
-// //变更指标
|
|
|
-// if prevChartInfo != nil {
|
|
|
-// //变更兄弟节点的排序
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateSortStr)
|
|
|
-// } else {
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, prevSort, 0, updateSortStr)
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// chartClassifyInfo.Sort = prevSort + 1
|
|
|
-// chartClassifyInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// } else if prevClassify == nil && nextClassify == nil && prevChartInfo == nil && nextChartInfo == nil && parentClassifyId > 0 {
|
|
|
-// //处理只拖动到目录里,默认放到目录底部的情况
|
|
|
-// var maxSort int
|
|
|
-// maxSort, err = GetChartClassifyMaxSort(parentClassifyId, source)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("查询组内排序信息失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// chartClassifyInfo.Sort = maxSort + 1 //那就是排在组内最后一位
|
|
|
-// chartClassifyInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// } else {
|
|
|
-// // 拖动到父级分类的第一位
|
|
|
-// firstClassify, tmpErr := data_manage.GetFirstChartClassifyByParentId(parentClassifyId)
|
|
|
-// if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
-// if firstClassify != nil && firstClassify.ClassifyId > 0 && firstClassify.Sort == 0 {
|
|
|
-// updateSortStr := ` sort + 1 `
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, firstClassify.ClassifyId-1, 0, updateSortStr, source)
|
|
|
-// //该分类下的所有指标也需要+1
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, 0, 0, updateSortStr)
|
|
|
-// } else {
|
|
|
-// //如果该分类下存在指标,且第一个指标的排序等于0,那么需要调整排序
|
|
|
-// firstChart, tErr := data_manage.GetFirstChartInfoByClassifyId(parentClassifyId)
|
|
|
-// if tErr != nil && !utils.IsErrNoRow(tErr) {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tErr.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-//
|
|
|
-// //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
-// if firstChart != nil && firstChart.ChartClassifyId > 0 && firstChart.Sort == 0 {
|
|
|
-// updateSortStr := ` sort + 1 `
|
|
|
-// _ = data_manage.UpdateChartInfoSortByClassifyId(parentClassifyId, 0, firstChart.ChartInfoId-1, updateSortStr)
|
|
|
-// _ = data_manage.UpdateChartClassifySortByParentId(parentClassifyId, 0, 0, updateSortStr, source)
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// chartClassifyInfo.Sort = 0 //那就是排在第一位
|
|
|
-// chartClassifyInfo.ModifyTime = time.Now()
|
|
|
-// updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
-// }
|
|
|
-//
|
|
|
-// //更新
|
|
|
-// if len(updateCol) > 0 {
|
|
|
-// err = chartClassifyInfo.Update(updateCol)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("修改失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// //更新对应分类的root_id和层级
|
|
|
-// if oldParentId != parentClassifyId {
|
|
|
-// if len(classifyIds) > 0 {
|
|
|
-// levelStep := chartClassifyInfo.Level - oldLevel
|
|
|
-// err = data_manage.UpdateChartClassifyChildByParentClassifyId(classifyIds, chartClassifyInfo.RootId, levelStep)
|
|
|
-// if err != nil {
|
|
|
-// errMsg = "移动失败"
|
|
|
-// err = errors.New("更新子分类失败,Err:" + err.Error())
|
|
|
-// return
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// return
|
|
|
-//}
|
|
|
+func movePublicChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify, nextClassify *data_manage.ChartPublicClassify, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, prevSort, nextSort, source int) (err error, errMsg string) {
|
|
|
+ updateCol := make([]string, 0)
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+
|
|
|
+ // 移动对象为分类, 判断分类是否存在
|
|
|
+ oldParentId := chartClassifyInfo.ParentId
|
|
|
+ oldLevel := chartClassifyInfo.Level
|
|
|
+ var classifyIds []int
|
|
|
+ if oldParentId != parentClassifyId {
|
|
|
+ //更新子分类对应的level
|
|
|
+ childList, e, m := GetChartChildClassifyByPublicClassifyId(chartClassifyInfo.ChartPublicClassifyId)
|
|
|
+ if e != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("查询子分类失败,Err:" + e.Error() + m)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(childList) > 0 {
|
|
|
+ for _, v := range childList {
|
|
|
+ if v.ChartClassifyId == chartClassifyInfo.ChartPublicClassifyId {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ classifyIds = append(classifyIds, v.ChartClassifyId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
|
|
|
+ if chartClassifyInfo.ParentId != parentClassifyId && parentClassifyId != 0 {
|
|
|
+ if chartClassifyInfo.Level != parentChartClassifyInfo.Level+1 { //禁止层级调整
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("不支持目录层级变更")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartClassifyInfo.ParentId = parentChartClassifyInfo.ChartPublicClassifyId
|
|
|
+ chartClassifyInfo.RootId = parentChartClassifyInfo.RootId
|
|
|
+ chartClassifyInfo.Level = parentChartClassifyInfo.Level + 1
|
|
|
+ chartClassifyInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "ParentId", "RootId", "Level", "ModifyTime")
|
|
|
+ } else if chartClassifyInfo.ParentId != parentClassifyId && parentClassifyId == 0 {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("不支持目录层级变更")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if prevSort > 0 {
|
|
|
+ //如果是移动在两个兄弟节点之间
|
|
|
+ if nextSort > 0 {
|
|
|
+ //下一个兄弟节点
|
|
|
+ //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
|
|
|
+ if prevSort == nextSort || prevSort == chartClassifyInfo.Sort {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ updateSortStr := `sort + 2`
|
|
|
+ updateChartSortStr := ` public_sort + 2`
|
|
|
+
|
|
|
+ //变更分类
|
|
|
+ if prevClassify != nil {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ChartPublicClassifyId, prevClassify.Sort, updateSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ //变更指标
|
|
|
+ if prevChartInfo != nil {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateChartSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, 0, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
|
|
|
+ if nextSort-prevSort == 1 {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ updateSortStr := `sort + 1`
|
|
|
+ updateChartSortStr := `public_sort + 1`
|
|
|
+
|
|
|
+ //变更分类
|
|
|
+ if prevClassify != nil {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, prevClassify.ChartPublicClassifyId, prevSort, updateSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, prevSort, updateSortStr, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ //变更指标
|
|
|
+ if prevChartInfo != nil {
|
|
|
+ //变更兄弟节点的排序
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, prevChartInfo.ChartInfoId, updateChartSortStr, source)
|
|
|
+ } else {
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, prevSort, 0, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ chartClassifyInfo.Sort = prevSort + 1
|
|
|
+ chartClassifyInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
+ } else if prevClassify == nil && nextClassify == nil && prevChartInfo == nil && nextChartInfo == nil && parentClassifyId > 0 {
|
|
|
+ //处理只拖动到目录里,默认放到目录底部的情况
|
|
|
+ var maxSort int
|
|
|
+ maxSort, err = GetChartPublicClassifyMaxSort(parentClassifyId, source)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("查询组内排序信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartClassifyInfo.Sort = maxSort + 1 //那就是排在组内最后一位
|
|
|
+ chartClassifyInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
+ } else {
|
|
|
+ // 拖动到父级分类的第一位
|
|
|
+ firstClassify, tmpErr := obj.GetFirstChartClassifyByParentId(parentClassifyId)
|
|
|
+ if tmpErr != nil && !utils.IsErrNoRow(tmpErr) {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tmpErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
+ if firstClassify != nil && firstClassify.ChartPublicClassifyId > 0 && firstClassify.Sort == 0 {
|
|
|
+ updateSortStr := ` sort + 1 `
|
|
|
+ updateChartSortStr := ` public_sort + 1 `
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, firstClassify.ChartPublicClassifyId-1, 0, updateSortStr, source)
|
|
|
+ //该分类下的所有指标也需要+1
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, 0, 0, updateChartSortStr, source)
|
|
|
+ } else {
|
|
|
+ //如果该分类下存在指标,且第一个指标的排序等于0,那么需要调整排序
|
|
|
+ firstChart, tErr := data_manage.GetFirstChartInfoByPublicClassifyId(parentClassifyId)
|
|
|
+ if tErr != nil && !utils.IsErrNoRow(tErr) {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
|
|
|
+ if firstChart != nil && firstChart.ChartClassifyId > 0 && firstChart.Sort == 0 {
|
|
|
+ updateSortStr := ` sort + 1 `
|
|
|
+ _ = obj.UpdateChartClassifySortByParentId(parentClassifyId, 0, 0, updateSortStr, source)
|
|
|
+
|
|
|
+ updateChartSortStr := ` public_sort + 1 `
|
|
|
+ _ = data_manage.UpdateChartInfoPublicSortByClassifyId(parentClassifyId, 0, firstChart.ChartInfoId-1, updateChartSortStr, source)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ chartClassifyInfo.Sort = 0 //那就是排在第一位
|
|
|
+ chartClassifyInfo.ModifyTime = time.Now()
|
|
|
+ updateCol = append(updateCol, "Sort", "ModifyTime")
|
|
|
+ }
|
|
|
+
|
|
|
+ oldClassifyIdPath := chartClassifyInfo.ChartPublicClassifyIdPath
|
|
|
+ oldClassifyNamePath := chartClassifyInfo.ChartPublicClassifyNamePath
|
|
|
+ newClassifyNamePath := fmt.Sprint(parentChartClassifyInfo.ChartPublicClassifyNamePath, `|`, chartClassifyInfo.ChartPublicClassifyName)
|
|
|
+ newClassifyIdPath := fmt.Sprint(parentChartClassifyInfo.ChartPublicClassifyIdPath, `,`, chartClassifyInfo.ChartPublicClassifyId)
|
|
|
+
|
|
|
+ //更新
|
|
|
+ if len(updateCol) > 0 {
|
|
|
+ chartClassifyInfo.ChartPublicClassifyNamePath = newClassifyNamePath
|
|
|
+ chartClassifyInfo.ChartPublicClassifyIdPath = newClassifyIdPath
|
|
|
+ updateCol = append(updateCol, "ChartPublicClassifyNamePath", "ChartPublicClassifyIdPath")
|
|
|
+
|
|
|
+ err = chartClassifyInfo.Update(updateCol)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("修改失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //更新对应分类的root_id和层级
|
|
|
+ if oldParentId != parentClassifyId {
|
|
|
+ if len(classifyIds) > 0 {
|
|
|
+ levelStep := chartClassifyInfo.Level - oldLevel
|
|
|
+ err = obj.UpdateChartClassifyChildByParentClassifyId(classifyIds, chartClassifyInfo.RootId, levelStep)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("更新子分类失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更改了上级分类,那么需要同步去更改自己的分类全路径
|
|
|
+ tmpErr := obj.UpdateChartClassifyNameAndNamePathByOldClassifyIdPath(oldClassifyIdPath, newClassifyIdPath, oldClassifyNamePath, newClassifyNamePath)
|
|
|
+ if tmpErr != nil {
|
|
|
+ utils.FileLog.Error(fmt.Sprintf("更新分类全路径失败,分类id:%d;失败原因Err:%s", chartClassifyInfo.ChartPublicClassifyId, tmpErr.Error()))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetPublicChartClassifyMaxSort(parentId, source int) (maxSort int, err error) {
|
|
|
+ //获取该层级下最大的排序数
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+ classifyMaxSort, err := obj.GetChartClassifyMaxSort(parentId, source)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ maxSort = classifyMaxSort
|
|
|
+ chartMaxSort, err := data_manage.GetChartInfoMaxPublicSortByClassifyId(parentId)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if maxSort < chartMaxSort {
|
|
|
+ maxSort = chartMaxSort
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetChartChildClassifyByPublicClassifyId(targetClassifyId int) (targetList []*data_manage.ChartClassifyIdItems, err error, errMsg string) {
|
|
|
+ obj := data_manage.ChartPublicClassify{}
|
|
|
+ //判断是否是挂在顶级目录下
|
|
|
+ targetClassify, err := obj.GetChartClassifyById(targetClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ if utils.IsErrNoRow(err) {
|
|
|
+ errMsg = "当前分类不存在"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ errMsg = "获取失败"
|
|
|
+ err = errors.New("获取分类信息失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ orderStr := ` order by level asc, sort asc, chart_public_classify_id asc`
|
|
|
+ tmpList, err := obj.GetChartClassifyByRootIdLevel(targetClassify.RootId, targetClassify.Source, orderStr)
|
|
|
+ if err != nil && !utils.IsErrNoRow(err) {
|
|
|
+ errMsg = "获取失败"
|
|
|
+ err = errors.New("获取数据失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ idMap := make(map[int]struct{})
|
|
|
+ if len(tmpList) > 0 {
|
|
|
+ for _, v := range tmpList {
|
|
|
+ if v.ChartPublicClassifyId == targetClassify.ChartPublicClassifyId {
|
|
|
+ idMap[v.ChartPublicClassifyId] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, v := range tmpList {
|
|
|
+ if _, ok := idMap[v.ParentId]; ok {
|
|
|
+ idMap[v.ChartPublicClassifyId] = struct{}{}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for _, v := range tmpList {
|
|
|
+ if _, ok := idMap[v.ChartPublicClassifyId]; ok {
|
|
|
+ targetItem := new(data_manage.ChartClassifyIdItems)
|
|
|
+ targetItem.ChartClassifyId = v.ChartPublicClassifyId
|
|
|
+ targetItem.ParentId = v.ParentId
|
|
|
+ targetItem.RootId = v.RootId
|
|
|
+ targetItem.UniqueCode = v.UniqueCode
|
|
|
+ targetItem.Level = v.Level
|
|
|
+ targetItem.ChartClassifyName = v.ChartPublicClassifyName
|
|
|
+ targetList = append(targetList, targetItem)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return
|
|
|
+}
|