xyxie 1 долоо хоног өмнө
parent
commit
7c3b6061ac

+ 62 - 85
controllers/data_stat/edb_terminal.go

@@ -324,36 +324,62 @@ func (c *EdbTerminalController) GetEdbInfoList() {
 		br.IsSendEmail = false
 		return
 	}
-	
 
 	condition := ``
 	var pars []interface{}
-
-	
-	condition += " AND e.source = ?"
-	pars = append(pars, source)
-	if terminalCode != "" {
-		condition += " AND e.terminal_code = ?"
-		pars = append(pars, terminalCode)
-	}
-	if keyword != "" {
-		condition += " AND (e.edb_name like ? or e.edb_code like ?)"
-		pars = append(pars, "%"+keyword+"%")
-		pars = append(pars, "%"+keyword+"%")
-	}
-
-	list, err := data_manage.GetSimpleEdbListPageByCondition(condition, pars, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
-	}
+	var list []*data_manage.EdbInfoTerminalList
+	var count int64
+	var err error
+	indexTableName := data_manage.EdbSourceIdMap[source].IndexTableName
+	if indexTableName != "" {
+		if terminalCode != "" {
+			condition += " AND e.terminal_code = ?"
+			pars = append(pars, terminalCode)
+		}
+		if keyword != "" {
+			condition += " AND (e.index_name like ? or e.index_code like ?)"
+			pars = append(pars, "%"+keyword+"%")
+			pars = append(pars, "%"+keyword+"%")
+		}
+		list, err = data_manage.GetSimpleBaseIndexListPageByCondition(indexTableName, condition, pars, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		count, err = data_manage.GetSimpleBaseIndexListCountByCondition(indexTableName, condition, pars)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		
+	}else{
+		condition += " AND e.source = ?"
+		pars = append(pars, source)
+		if terminalCode != "" {
+			condition += " AND e.terminal_code = ?"
+			pars = append(pars, terminalCode)
+		}
+		if keyword != "" {
+			condition += " AND (e.edb_name like ? or e.edb_code like ?)"
+			pars = append(pars, "%"+keyword+"%")
+			pars = append(pars, "%"+keyword+"%")
+		}
 	
-	count, err := data_manage.GetSimpleEdbListCountByCondition(condition, pars)
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
-		return
+		list, err = data_manage.GetSimpleEdbListPageByCondition(condition, pars, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		
+		count, err = data_manage.GetSimpleEdbListCountByCondition(condition, pars)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
 	}
 
 	page := paging.GetPaging(currentIndex, pageSize, int(count))	
@@ -408,9 +434,9 @@ func (c *EdbTerminalController) SetEdbInfoTerminal() {
 		return
 	}
 
-	if len(req.EdbInfoIds) <= 0 {
-		br.Msg = "指标ID不能为空"
-		br.ErrMsg = "指标ID不能为空"
+	if len(req.EdbCodes) <= 0 {
+		br.Msg = "指标编码不能为空"
+		br.ErrMsg = "指标编码不能为空"
 		return
 	}
 	
@@ -428,66 +454,17 @@ func (c *EdbTerminalController) SetEdbInfoTerminal() {
 		return
 	}
 
-	var count int64
-	edbCodeList := make([]string, 0)
-	if req.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
-		// 查询对应的指标编码
-		edbIds := make([]string, 0)
-		for _, v := range req.EdbInfoIds {
-			edbIds = append(edbIds, strconv.Itoa(v))
-		}
-		edbInfoList, err := data_manage.GetEdbInfoListByEdbInfoId(edbIds)
-		if err != nil {
-			br.Msg = "设置失败"
-			br.ErrMsg = "设置失败,Err:" + err.Error()
-			return
-		}
-		count = int64(len(edbInfoList))
-		for _, v := range edbInfoList {
-			edbCodeList = append(edbCodeList, v.EdbCode)
-		}
-	}else {
-		// 更新指标的终端编码
-		condition := " and e.edb_info_id in (?) and e.source = ?"
-		pars := []interface{}{req.EdbInfoIds, req.Source}
-		count, err := data_manage.GetSimpleEdbListCountByCondition(condition, pars)
-		if err != nil {
-			br.Msg = "设置失败"
-			br.ErrMsg = "设置失败,Err:" + err.Error()
-			return
-		}
+	edbCodeList := req.EdbCodes
 
-		if count <= 0 {
-			br.Msg = "指标ID不存在"
-			br.ErrMsg = "指标ID不存在"
-			return
-		}
-	}
 	
-	if len(req.EdbInfoIds) != int(count) {
-		br.Msg = "指标和数据源不匹配"
-		br.ErrMsg = "指标和数据源不匹配"
+	// 更新数据源里的终端编码
+	err = data_manage.UpdatBaseIndexTerminalCode(edbCodeList, req.TerminalCode, req.Source)
+	if err != nil {
+		br.Msg = "设置失败"
+		br.ErrMsg = "设置失败,Err:" + err.Error()
 		return
 	}
-
-	// 如果是钢联指标,则还需要变更数据源里的终端编码
-	if req.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
-		// 更新数据源里的终端编码
-		err = data_manage.UpdateMysteelChemicalTerminalCode(edbCodeList, req.TerminalCode)
-		if err != nil {
-			br.Msg = "设置失败"
-			br.ErrMsg = "设置失败,Err:" + err.Error()
-			return
-		}
-	}else{
-		// 更新指标的终端编码
-		err = data_manage.UpdateEdbInfoTerminal(req.EdbInfoIds, req.TerminalCode, req.Source)
-		if err != nil {
-			br.Msg = "设置失败"
-			br.ErrMsg = "设置失败,Err:" + err.Error()
-			return
-		}
-	}
+	
 
 	br.Ret = 200
 	br.Success = true

+ 40 - 9
models/data_manage/edb_terminal.go

@@ -182,7 +182,7 @@ type EdbTerminalDirInfo struct {
 }
 
 type EdbInfoTerminalList struct {
-	EdbInfoId    int    `gorm:"column:edb_info_id"`
+	//EdbInfoId    int    `gorm:"column:edb_info_id"`
 	EdbCode  string `gorm:"column:edb_code"`
 	EdbName  string `gorm:"column:edb_name"`
 	TerminalCode string `gorm:"column:terminal_code"`
@@ -201,19 +201,24 @@ func GetSimpleEdbListCountByCondition(condition string, pars []interface{}) (cou
 	return
 }
 
-type SetEdbInfoTerminalReq struct {
-	EdbInfoIds []int `description:"指标ID"`
-	TerminalCode string `description:"要更换的终端编码"`
-	Source int `description:"指标来源类型"`
+func GetSimpleBaseIndexListPageByCondition(indexTableName string, condition string, pars []interface{}, pageIndex int, pageSize int) (list []*EdbInfoTerminalList, err error) {
+	sql := `SELECT e.index_code as edb_code, e.index_name as edb_name, e.terminal_code, t.name as terminal_name FROM ` + indexTableName + ` e left join edb_terminal t on e.terminal_code = t.terminal_code WHERE 1=1 ` + condition + ` LIMIT ?, ?`
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, append(pars, pageIndex, pageSize)...).Find(&list).Error
+	return
 }
 
-
-func UpdateEdbInfoTerminal(edbInfoIds []int, terminalCode string, source int) (err error) {
-	o := global.DbMap[utils.DbNameIndex]
-	err = o.Exec("UPDATE edb_info SET terminal_code = ? WHERE edb_info_id IN (?) AND source = ?", terminalCode, edbInfoIds, source).Error
+func GetSimpleBaseIndexListCountByCondition(indexTableName string, condition string, pars []interface{}) (count int64, err error) {
+	sql := `SELECT COUNT(*) FROM ` + indexTableName + ` e left join edb_terminal t on e.terminal_code = t.terminal_code WHERE 1=1 ` + condition
+	err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Count(&count).Error
 	return
 }
 
+type SetEdbInfoTerminalReq struct {
+	EdbCodes []string `description:"指标编码"`
+	TerminalCode string `description:"要更换的终端编码"`
+	Source int `description:"指标来源类型"`
+}
+
 type IndexNumBySource struct {
 	SubSource int
 	Num int
@@ -244,3 +249,29 @@ func GetTerminalCodeBySourceAndIsApi(source int, isApi int) (terminalCode []stri
 	err = o.Raw(sql, source, isApi).Find(&terminalCode).Error
 	return
 }
+
+// 更新终端编码
+func UpdatBaseIndexTerminalCode(indexCodes []string, terminalCode string, source int) (err error) {
+	tableName := EdbSourceIdMap[source].IndexTableName
+	var sql string
+	// 通过事务更新
+	o := global.DbMap[utils.DbNameIndex].Begin()
+	defer func() {
+		if err != nil {
+			_ = o.Rollback()
+			return
+		}
+		_ = o.Commit()
+	}()
+	if tableName != "" {
+		sql = ` UPDATE ` + tableName + ` SET terminal_code = ? WHERE index_code in (?) `
+		err = o.Exec(sql, terminalCode, indexCodes).Error
+		if err != nil {
+			return
+		}
+	}
+	// 更新edb_info的终端编码
+	sql = ` UPDATE edb_info SET terminal_code = ? WHERE source = ? AND edb_code in (?) `
+	err = o.Exec(sql, terminalCode, source, indexCodes).Error
+	return
+}

+ 0 - 21
models/data_manage/mysteel_chemical_index.go

@@ -794,25 +794,4 @@ func GetNoEdbMysteelChemicalIndexPageList(condition string, pars []interface{},
 	return
 }
 
-// 更新终端编码
-func UpdateMysteelChemicalTerminalCode(indexCodes []string, terminalCode string) (err error) {
-	// 通过事务更新
-	o := global.DbMap[utils.DbNameIndex].Begin()
-	defer func() {
-		if err != nil {
-			_ = o.Rollback()
-			return
-		}
-		_ = o.Commit()
-	}()
-	sql := ` UPDATE base_from_mysteel_chemical_index SET terminal_code = ? WHERE index_code in (?) `
-	err = o.Exec(sql, terminalCode, indexCodes).Error
-	if err != nil {
-		return
-	}
 
-	// 更新edb_info的终端编码
-	sql = ` UPDATE edb_info SET terminal_code = ? WHERE source = ? AND edb_code in (?) `
-	err = o.Exec(sql, terminalCode, utils.DATA_SOURCE_MYSTEEL_CHEMICAL, indexCodes).Error
-	return
-}