瀏覽代碼

更换终端编码

xyxie 2 周之前
父節點
當前提交
59f3b45811
共有 2 個文件被更改,包括 74 次插入20 次删除
  1. 51 20
      controllers/data_stat/edb_terminal.go
  2. 23 0
      models/data_manage/mysteel_chemical_index.go

+ 51 - 20
controllers/data_stat/edb_terminal.go

@@ -424,34 +424,65 @@ func (c *EdbTerminalController) SetEdbInfoTerminal() {
 		return
 	}
 
-	// 更新指标的终端编码
-	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
-	}
+	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
+		}
 
-	if count <= 0 {
-		br.Msg = "指标ID不存在"
-		br.ErrMsg = "指标ID不存在"
-		return
+		if count <= 0 {
+			br.Msg = "指标ID不存在"
+			br.ErrMsg = "指标ID不存在"
+			return
+		}
 	}
-
+	
 	if len(req.EdbInfoIds) != int(count) {
 		br.Msg = "指标和数据源不匹配"
 		br.ErrMsg = "指标和数据源不匹配"
 		return
 	}
 
-	// 更新指标的终端编码
-	err = data_manage.UpdateEdbInfoTerminal(req.EdbInfoIds, 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

+ 23 - 0
models/data_manage/mysteel_chemical_index.go

@@ -793,3 +793,26 @@ func GetNoEdbMysteelChemicalIndexPageList(condition string, pars []interface{},
 	err = o.Raw(sql, pars...).Find(&items).Error
 	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
+}