|
@@ -466,12 +466,10 @@ func movePublicChartOrClassify(parentChartClassifyInfo, chartClassifyInfo, prevC
|
|
|
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
|
|
|
+ // 移动指标
|
|
|
+ return moveChartPublicV2(chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, source)
|
|
|
+ //return moveChartPublic(prevClassify, nextClassify, chartInfo, prevChartInfo, nextChartInfo, parentClassifyId, prevSort, nextSort, source)
|
|
|
}
|
|
|
|
|
|
// moveChartPublic
|
|
@@ -905,3 +903,87 @@ func GetChartChildClassifyByPublicClassifyId(targetClassifyId int) (targetList [
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// moveChartPublicV2
|
|
|
+func moveChartPublicV2(chartInfo, prevChartInfo, nextChartInfo *data_manage.ChartInfo, parentClassifyId int, source int) (err error, errMsg string) {
|
|
|
+ if chartInfo == nil {
|
|
|
+ err = fmt.Errorf("当前图表有误")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取父级分类下所有图表(除当前图表的有序排列)
|
|
|
+ charts, e := data_manage.GetPublicChartsByClassifyId(parentClassifyId, source, chartInfo.ChartInfoId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取分类下所有图表失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 先判断是否改变了分类
|
|
|
+ var updateCols []string
|
|
|
+ updateCols = append(updateCols, "PublicSort")
|
|
|
+ if chartInfo.ChartClassifyId != parentClassifyId {
|
|
|
+ chartInfo.ChartPublicClassifyId = parentClassifyId
|
|
|
+ chartInfo.ModifyTime = time.Now()
|
|
|
+ updateCols = append(updateCols, "ChartPublicClassifyId", "ModifyTime")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断移动的位置
|
|
|
+ var moveTop, moveMiddle, moveBottom bool
|
|
|
+ var prevChartId int
|
|
|
+ if prevChartInfo != nil && nextChartInfo != nil {
|
|
|
+ moveMiddle = true
|
|
|
+ prevChartId = prevChartInfo.ChartInfoId
|
|
|
+ }
|
|
|
+ if prevChartInfo == nil && nextChartInfo != nil {
|
|
|
+ moveTop = true
|
|
|
+ }
|
|
|
+ if prevChartInfo != nil && nextChartInfo == nil {
|
|
|
+ moveBottom = true
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据移动位置重新生成完整的排序
|
|
|
+ updates := make([]*data_manage.ChartInfo, 0)
|
|
|
+ var sort int
|
|
|
+ for k, v := range charts {
|
|
|
+ sort += 1
|
|
|
+ // 插入顶部
|
|
|
+ if moveTop && k == 0 {
|
|
|
+ chartInfo.PublicSort = sort
|
|
|
+ updates = append(updates, chartInfo)
|
|
|
+ sort += 1
|
|
|
+ if v.PublicSort != sort {
|
|
|
+ v.PublicSort = sort
|
|
|
+ updates = append(updates, v)
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 底部
|
|
|
+ if moveBottom && k == (len(charts)-1) {
|
|
|
+ if v.PublicSort != sort {
|
|
|
+ v.PublicSort = sort
|
|
|
+ updates = append(updates, v)
|
|
|
+ }
|
|
|
+ sort += 1
|
|
|
+ chartInfo.PublicSort = sort
|
|
|
+ updates = append(updates, chartInfo)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ // 中间
|
|
|
+ if moveMiddle && v.ChartInfoId == prevChartId {
|
|
|
+ chartInfo.PublicSort = sort
|
|
|
+ updates = append(updates, chartInfo)
|
|
|
+ sort += 1
|
|
|
+ }
|
|
|
+ if v.PublicSort == sort {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v.PublicSort = sort
|
|
|
+ updates = append(updates, v)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新
|
|
|
+ if len(updates) > 0 {
|
|
|
+ err = data_manage.UpdatePublicChartsSort(updates, chartInfo.ChartInfoId, updateCols)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|