|
@@ -6,6 +6,7 @@ import (
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
+ "sort"
|
|
|
)
|
|
|
|
|
|
// MoveReportChapter
|
|
@@ -365,3 +366,55 @@ func CheckChapterAuthByReportChapterInfo(sysUser *system.Admin, createAdminId in
|
|
|
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+// ResortFreeChapter 自由布局章节重新排序页脚
|
|
|
+func ResortFreeChapter(reportId int) (err error) {
|
|
|
+ // 获取排序后的章节列表
|
|
|
+ chapters, e := models.GetChapterListByReportId(reportId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取报告章节列表失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sortChapter := make(map[int]int)
|
|
|
+ for _, v := range chapters {
|
|
|
+ // 如果存在任一章节未发布,那么无需重排
|
|
|
+ if v.PublishState != 2 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sortChapter[v.ReportChapterId] = v.Sort
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取自由章节布局,根据章节顺序重新排序
|
|
|
+ layouts, e := report.GetAllReportFreeLayoutListByReportId(reportId)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("获取章节自由布局失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ sort.Slice(layouts, func(i, j int) bool {
|
|
|
+ a := layouts[i]
|
|
|
+ b := layouts[j]
|
|
|
+ if a.ReportChapterId == b.ReportChapterId {
|
|
|
+ return a.Page < b.Page
|
|
|
+ }
|
|
|
+ return sortChapter[a.ReportChapterId] < sortChapter[b.ReportChapterId]
|
|
|
+ })
|
|
|
+
|
|
|
+ // 重排序并进行更新
|
|
|
+ updateLayouts := make([]*report.ReportFreeLayout, 0)
|
|
|
+ var resort int
|
|
|
+ for _, layout := range layouts {
|
|
|
+ resort += 1
|
|
|
+ if layout.Page != resort {
|
|
|
+ layout.Page = resort
|
|
|
+ updateLayouts = append(updateLayouts, layout)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(updateLayouts) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if e = report.ResetReportFreeLayoutsPage(updateLayouts); e != nil {
|
|
|
+ err = fmt.Errorf("批量更新自由布局页脚失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|