Browse Source

feat:新增了排序设置

Roc 1 year ago
parent
commit
069ac3e3e0

+ 71 - 18
controllers/data_manage/edb_info_refresh.go

@@ -254,6 +254,8 @@ func buildTree(items []*edb_refresh.BaseClassifyItems, parentId int) []*edb_refr
 // @Param   SysUserId   query   string  false       "创建人"
 // @Param   Frequency   query   string  false       "频度"
 // @Param   Keyword   query   string  false       "关键词"
+// @Param   SortParam   query   string  false       "排序字段参数,用来排序的字段, 枚举值:'data_time':日期"
+// @Param   SortType   query   string  true       "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
 // @Success 200 {object} data_manage.RefreshBaseEdbInfoResp
 // @router /edb_info/refresh/edb_list [get]
 func (c *EdbInfoController) RefreshEdbList() {
@@ -273,6 +275,9 @@ func (c *EdbInfoController) RefreshEdbList() {
 	keyword := c.GetString("Keyword")
 	status := c.GetString("Status")
 
+	sortParam := c.GetString("SortParam")
+	sortType := c.GetString("SortType")
+
 	pageSize, _ := c.GetInt("PageSize")
 	currentIndex, _ := c.GetInt("CurrentIndex")
 	var startSize int
@@ -285,7 +290,7 @@ func (c *EdbInfoController) RefreshEdbList() {
 	}
 	startSize = utils.StartIndex(currentIndex, pageSize)
 
-	total, list, err := getList(source, subSource, classifyId, terminalCode, sysUserId, frequency, keyword, status, startSize, pageSize)
+	total, list, err := getList(source, subSource, classifyId, terminalCode, sysUserId, frequency, keyword, status, startSize, pageSize, sortParam, sortType)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -394,8 +399,10 @@ func (c *EdbInfoController) SaveEdbRefreshDefaultConfig() {
 	}
 
 	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
+	// 配置的map,避免同一种类型配置同一个时间
+	configMap := make(map[string]string)
 	for _, v := range req.List {
-		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay <= 0 {
+		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
 			br.Msg = "请选择具体日期"
 			br.IsSendEmail = false
 			return
@@ -406,6 +413,15 @@ func (c *EdbInfoController) SaveEdbRefreshDefaultConfig() {
 			br.IsSendEmail = false
 			return
 		}
+
+		// 配置的map,避免同一种类型配置同一个时间
+		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
+		if _, ok := configMap[key]; ok {
+			br.Msg = "刷新频率和日期不能重复"
+			br.IsSendEmail = false
+			return
+		}
+		configMap[key] = key
 	}
 
 	addList := make([]*edb_refresh.EdbRefreshDefaultConfig, 0)
@@ -472,8 +488,11 @@ func (c *EdbInfoController) SaveEdbRefreshConfig() {
 	}
 
 	tmpArr := []string{"每周", "每旬", "每月", "每季", "每半年", "每年"}
+
+	// 配置的map,避免同一种类型配置同一个时间
+	configMap := make(map[string]string)
 	for _, v := range req.List {
-		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay <= 0 {
+		if utils.InArrayByStr(tmpArr, v.RefreshFrequency) && v.RefreshFrequencyDay < 0 {
 			br.Msg = "请选择具体日期"
 			br.IsSendEmail = false
 			return
@@ -484,13 +503,22 @@ func (c *EdbInfoController) SaveEdbRefreshConfig() {
 			br.IsSendEmail = false
 			return
 		}
+
+		// 配置的map,避免同一种类型配置同一个时间
+		key := fmt.Sprint(v.RefreshFrequency, "_", v.RefreshFrequencyDay, "_", v.RefreshTime)
+		if _, ok := configMap[key]; ok {
+			br.Msg = "刷新频率和日期不能重复"
+			br.IsSendEmail = false
+			return
+		}
+		configMap[key] = key
 	}
 
 	edbIdList := make([]int, 0)
 	// 指标id列表
 	if req.IsSelectAll {
 		// 如果是列表全选
-		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000)
+		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000, "", "")
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -609,7 +637,7 @@ func (c *EdbInfoController) SaveEdbRefreshStatus() {
 	// 指标id列表
 	if req.IsSelectAll {
 		// 如果是列表全选
-		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000)
+		_, edbList, err := getList(req.Source, req.SubSource, req.ClassifyId, req.TerminalCode, req.SysUserId, req.Frequency, req.Keyword, req.Status, 0, 100000, "", "")
 		if err != nil && err.Error() != utils.ErrNoRow() {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -644,7 +672,7 @@ func (c *EdbInfoController) SaveEdbRefreshStatus() {
 	}
 
 	isStop := 0
-	if req.ModifyStatus == `禁用` {
+	if req.ModifyStatus == `暂停` {
 		isStop = 1
 	}
 
@@ -683,15 +711,17 @@ func (c *EdbInfoController) SaveEdbRefreshStatus() {
 // @return total int
 // @return list []*data_manage.BaseEdbInfo
 // @return err error
-func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequency, keyword, status string, startSize, pageSize int) (total int, list []*data_manage.BaseEdbInfo, err error) {
+func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequency, keyword, status string, startSize, pageSize int, sortParam, sortType string) (total int, list []*data_manage.BaseEdbInfo, err error) {
 	var pars []interface{}
 	var condition string
 
 	list = make([]*data_manage.BaseEdbInfo, 0)
 
-	isStop := 0
-	if status == `禁用` {
+	isStop := -1
+	if status == `暂停` {
 		isStop = 1
+	} else if status == "启用" {
+		isStop = 0
 	}
 
 	switch source {
@@ -731,10 +761,16 @@ func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequen
 				pars = utils.GetLikeKeywordPars(pars, keyword, 2)
 			}
 		}
-		condition += " AND is_stop = ? "
-		pars = append(pars, isStop)
 
-		total, list, err = data_manage.GetMysteelChemicalBaseInfo(condition, pars, startSize, pageSize)
+		if isStop >= 0 {
+			condition += " AND is_stop = ? "
+			pars = append(pars, isStop)
+		}
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,base_from_mysteel_chemical_index_id desc ", sortParam, sortType)
+		}
+		total, list, err = data_manage.GetMysteelChemicalBaseInfo(condition, pars, sortStr, startSize, pageSize)
 	case utils.DATA_SOURCE_YS: // 有色
 		if classifyId > 0 {
 			condition += " AND classify_id = ? "
@@ -767,13 +803,25 @@ func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequen
 			}
 		}
 
-		condition += " AND is_stop = ? "
-		pars = append(pars, isStop)
+		if isStop >= 0 {
+			condition += " AND is_stop = ? "
+			pars = append(pars, isStop)
+		}
+
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,base_from_smm_index_id desc ", sortParam, sortType)
+		}
 
-		total, list, err = data_manage.GetSmmBaseInfo(condition, pars, startSize, pageSize)
+		total, list, err = data_manage.GetSmmBaseInfo(condition, pars, sortStr, startSize, pageSize)
 	default:
-		condition += ` AND source = ? AND sub_source = ? AND no_update = ?`
-		pars = append(pars, source, subSource, isStop)
+		condition += ` AND source = ? AND sub_source = ? `
+		pars = append(pars, source, subSource)
+
+		if isStop >= 0 {
+			condition += " AND no_update = ? "
+			pars = append(pars, isStop)
+		}
 
 		if classifyId > 0 {
 			condition += " AND classify_id = ? "
@@ -811,7 +859,12 @@ func getList(source, subSource, classifyId int, terminalCode, sysUserId, frequen
 			}
 		}
 
-		total, list, err = data_manage.GetEdbBaseInfo(condition, pars, startSize, pageSize)
+		sortStr := ``
+		if sortParam != `` {
+			sortStr = fmt.Sprintf("%s %s,edb_info_id desc ", sortParam, sortType)
+		}
+
+		total, list, err = data_manage.GetEdbBaseInfo(condition, pars, sortStr, startSize, pageSize)
 	}
 
 	return

+ 9 - 2
models/data_manage/edb_info.go

@@ -1738,7 +1738,7 @@ type EdbInfoSmmExistCheckResp struct {
 }
 
 // GetEdbBaseInfo 获取指标库数据列表
-func GetEdbBaseInfo(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+func GetEdbBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	// 数量汇总
 	totalSql := ` SELECT count(1) FROM edb_info WHERE 1=1 `
@@ -1755,8 +1755,15 @@ func GetEdbBaseInfo(condition string, pars []interface{}, startSize, pageSize in
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY edb_info_id ASC  LIMIT ?,? `
+
+	if orderBy != "" {
+		sql += ` ORDER BY ` + orderBy
+	} else {
+		sql += ` ORDER BY edb_info_id ASC `
+	}
+	sql += `  LIMIT ?,? `
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
+
 	return
 }
 

+ 9 - 2
models/data_manage/mysteel_chemical_index.go

@@ -362,7 +362,7 @@ type RefreshBaseEdbInfoResp struct {
 }
 
 // GetMysteelChemicalBaseInfo 获取钢联化工数据列表
-func GetMysteelChemicalBaseInfo(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+func GetMysteelChemicalBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 
 	// 数量汇总
@@ -380,7 +380,14 @@ func GetMysteelChemicalBaseInfo(condition string, pars []interface{}, startSize,
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY base_from_mysteel_chemical_index_id ASC  LIMIT ?,? `
+
+	if orderBy != "" {
+		sql += ` ORDER BY ` + orderBy
+	} else {
+		sql += ` ORDER BY base_from_mysteel_chemical_index_id ASC `
+	}
+	sql += `  LIMIT ?,? `
+
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }

+ 9 - 2
models/data_manage/smm_data.go

@@ -232,7 +232,7 @@ func GetExportSmmIndexDataByCodes(indexCodes []string) (items []*ExportSmmIndexD
 }
 
 // GetSmmBaseInfo 获取有色数据列表
-func GetSmmBaseInfo(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
+func GetSmmBaseInfo(condition string, pars []interface{}, orderBy string, startSize, pageSize int) (total int, items []*BaseEdbInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 
 	// 数量汇总
@@ -250,7 +250,14 @@ func GetSmmBaseInfo(condition string, pars []interface{}, startSize, pageSize in
 	if condition != "" {
 		sql += condition
 	}
-	sql += ` ORDER BY base_from_smm_index_id ASC  LIMIT ?,? `
+
+	if orderBy != "" {
+		sql += ` ORDER BY ` + orderBy
+	} else {
+		sql += ` ORDER BY base_from_smm_index_id ASC `
+	}
+	sql += `  LIMIT ?,? `
+
 	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
 	return
 }