|
@@ -62,9 +62,34 @@ func (this *ReportController) List() {
|
|
|
currentIndex = 1
|
|
|
}
|
|
|
startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
-
|
|
|
+ classifyList, err := models.GetClassifyList()
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取数据失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ classifyMap := make(map[int]*models.ClassifyView)
|
|
|
+ isHas := false
|
|
|
+ for _, v := range classifyList {
|
|
|
+ if v.Id == classifyId && classifyId != 0 {
|
|
|
+ isHas = true
|
|
|
+ }
|
|
|
+ classifyMap[v.Id] = v
|
|
|
+ }
|
|
|
+ if !isHas && classifyId != 0 {
|
|
|
+ br.Msg = "分类不存在"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ leafClassifyIds := getLeafClassifyIds(classifyMap, classifyId)
|
|
|
+ classifyIdMap := make(map[int]struct{})
|
|
|
+ for _, v := range leafClassifyIds {
|
|
|
+ classifyIdMap[v] = struct{}{}
|
|
|
+ }
|
|
|
var total int
|
|
|
var reportList []*models.ReportList
|
|
|
+ classifyFirstIds := make([]int, 0)
|
|
|
+ classifySecondIds := make([]int, 0)
|
|
|
+ classifyThirdIds := make([]int, 0)
|
|
|
switch level {
|
|
|
case 2:
|
|
|
classifyIds, err := models.GetClassifyIdsListById(chartPermissionId)
|
|
@@ -78,26 +103,44 @@ func (this *ReportController) List() {
|
|
|
br.ErrMsg = "获取数据失败,品种id:" + strconv.Itoa(chartPermissionId)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ classifyIds = utils.Unique(classifyIds)
|
|
|
// 根据分类筛选报告
|
|
|
var selectedClassifyId []int
|
|
|
if classifyId > 0 {
|
|
|
for _, v := range classifyIds {
|
|
|
- if v == classifyId {
|
|
|
+ if _, ok := classifyIdMap[v]; ok {
|
|
|
selectedClassifyId = append(selectedClassifyId, v)
|
|
|
- break
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
selectedClassifyId = classifyIds
|
|
|
}
|
|
|
- tmptotal, err := models.GetReportCountByClassifyIds(selectedClassifyId, condition)
|
|
|
+
|
|
|
+ classifyList, err := models.GetClassifyListByIds(selectedClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取报告列表失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range classifyList {
|
|
|
+ switch v.Level {
|
|
|
+ case 1:
|
|
|
+ classifyFirstIds = append(classifyFirstIds, v.Id)
|
|
|
+ case 2:
|
|
|
+ classifySecondIds = append(classifySecondIds, v.Id)
|
|
|
+ case 3:
|
|
|
+ classifyThirdIds = append(classifyThirdIds, v.Id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tmptotal, err := models.GetReportCountByClassifyIds(classifyFirstIds, classifySecondIds, classifyThirdIds, condition)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取数据失败"
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
total = tmptotal
|
|
|
- tmpReportList, err := models.GetReportListByClassifyIds(selectedClassifyId, condition, startSize, pageSize)
|
|
|
+ tmpReportList, err := models.GetReportListByClassifyIds(classifyFirstIds, classifySecondIds, classifyThirdIds, condition, startSize, pageSize)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取报告列表失败"
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
@@ -126,26 +169,43 @@ func (this *ReportController) List() {
|
|
|
br.Msg = "该品种下没有绑定分类"
|
|
|
return
|
|
|
}
|
|
|
+ classifyIds = utils.Unique(classifyIds)
|
|
|
// 根据分类筛选报告
|
|
|
var selectedClassifyId []int
|
|
|
if classifyId > 0 {
|
|
|
for _, v := range classifyIds {
|
|
|
- if v == classifyId {
|
|
|
+ if _, ok := classifyIdMap[v]; ok {
|
|
|
selectedClassifyId = append(selectedClassifyId, v)
|
|
|
- break
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
selectedClassifyId = classifyIds
|
|
|
}
|
|
|
- tmptotal, err := models.GetReportCountByClassifyIds(selectedClassifyId, condition)
|
|
|
+
|
|
|
+ classifyList, err := models.GetClassifyListByIds(selectedClassifyId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取报告列表失败"
|
|
|
+ br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range classifyList {
|
|
|
+ switch v.Level {
|
|
|
+ case 1:
|
|
|
+ classifyFirstIds = append(classifyFirstIds, v.Id)
|
|
|
+ case 2:
|
|
|
+ classifySecondIds = append(classifySecondIds, v.Id)
|
|
|
+ case 3:
|
|
|
+ classifyThirdIds = append(classifyThirdIds, v.Id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tmptotal, err := models.GetReportCountByClassifyIds(classifyFirstIds, classifySecondIds, classifyThirdIds, condition)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取数据失败"
|
|
|
br.ErrMsg = "获取数据失败,Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
total = tmptotal
|
|
|
- tmpReportList, err := models.GetReportListByClassifyIds(selectedClassifyId, condition, startSize, pageSize)
|
|
|
+ tmpReportList, err := models.GetReportListByClassifyIds(classifyFirstIds, classifySecondIds, classifyThirdIds, condition, startSize, pageSize)
|
|
|
if err != nil {
|
|
|
br.Msg = "获取报告列表失败"
|
|
|
br.ErrMsg = "获取报告列表失败,Err:" + err.Error()
|
|
@@ -168,6 +228,25 @@ func (this *ReportController) List() {
|
|
|
br.Data = resp
|
|
|
}
|
|
|
|
|
|
+func getLeafClassifyIds(classifyMap map[int]*models.ClassifyView, keyId int) []int {
|
|
|
+ var leafClassifyIds []int
|
|
|
+ curClassify := classifyMap[keyId]
|
|
|
+ if curClassify.HasChild == 0 {
|
|
|
+ leafClassifyIds = append(leafClassifyIds, curClassify.Id)
|
|
|
+ return leafClassifyIds
|
|
|
+ }
|
|
|
+ for _, v := range classifyMap {
|
|
|
+ if v.ParentId == curClassify.Id {
|
|
|
+ if v.HasChild == 0 {
|
|
|
+ leafClassifyIds = append(leafClassifyIds, v.Id)
|
|
|
+ } else {
|
|
|
+ leafClassifyIds = append(leafClassifyIds, getLeafClassifyIds(classifyMap, v.Id)...)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return leafClassifyIds
|
|
|
+}
|
|
|
+
|
|
|
// @Title 研报详情
|
|
|
// @Description 研报详情接口
|
|
|
// @Param ReportId query int true "报告id"
|