Browse Source

Merge branch 'bug/5782' into debug

Roc 4 months ago
parent
commit
c877a5a703

+ 1 - 1
controllers/base_from_business.go

@@ -313,7 +313,7 @@ func (c *BusinessIndexController) Edit() {
 	}
 
 	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
-	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(0, req.EdbInfoId, req.EdbName, c.Lang)
+	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(utils.EDB_INFO_TYPE, req.EdbInfoId, req.EdbName, c.Lang)
 	if err != nil {
 		br.Msg = "判断指标名称是否存在失败"
 		br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()

+ 3 - 3
controllers/base_from_calculate.go

@@ -226,7 +226,7 @@ func (this *CalculateController) Edit() {
 	}
 
 	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
-	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(0, req.EdbInfoId, req.EdbName, this.Lang)
+	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(utils.EDB_INFO_TYPE, req.EdbInfoId, req.EdbName, this.Lang)
 	if err != nil {
 		br.Msg = "判断指标名称是否存在失败"
 		br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
@@ -514,7 +514,7 @@ func (this *CalculateController) BatchSave() {
 	//加入缓存机制,避免创建同一个名称的指标 end
 
 	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
-	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(0, req.EdbInfoId, req.EdbName, this.Lang)
+	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(utils.EDB_INFO_TYPE, req.EdbInfoId, req.EdbName, this.Lang)
 	if err != nil {
 		br.Msg = "判断指标名称是否存在失败"
 		br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()
@@ -882,7 +882,7 @@ func (this *CalculateController) BatchEdit() {
 	}
 
 	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
-	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(0, req.EdbInfoId, req.EdbName, this.Lang)
+	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(utils.EDB_INFO_TYPE, req.EdbInfoId, req.EdbName, this.Lang)
 	if err != nil {
 		br.Msg = "判断指标名称是否存在失败"
 		br.ErrMsg = "判断指标名称是否存在失败,Err:" + err.Error()

+ 1 - 1
logic/predict_edb.go

@@ -1123,7 +1123,7 @@ func AddStaticPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, frequency
 	edbCode := sourceEdbInfo.EdbCode + "_" + time.Now().Format(utils.FormatShortDateTimeUnSpace)
 
 	// 根据指标名称和指标ID校验库中是否还存在其他同名指标
-	existEdbName, err := CheckExistByEdbNameAndEdbInfoId(1, 0, edbName, lang)
+	existEdbName, err := CheckExistByEdbNameAndEdbInfoId(utils.PREDICT_EDB_INFO_TYPE, 0, edbName, lang)
 	if err != nil {
 		errMsg = "判断指标名称是否存在失败"
 		err = errors.New("判断指标名称是否存在失败,Err:" + err.Error())

+ 26 - 11
models/edb_data_calculate_bp.go

@@ -433,18 +433,26 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 			if _, ok := existMap[existKey]; !ok {
 				timestamp := needDay.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
-				valStr := decimal.NewFromFloat(currentItem.Value).String()
+
+				currValDeci := decimal.NewFromFloat(currentItem.Value)
 				if prevItem != nil && needDayStr != currentItem.DataTime {
-					valStr = decimal.NewFromFloat(prevItem.Value).String()
+					currValDeci = decimal.NewFromFloat(prevItem.Value)
 				}
+				currValStr := currValDeci.String()
 				tmpExistData, ok2 := existDataMap[needDayStr]
 				if !ok2 {
-					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, valStr)
+					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, currValStr)
 					isAdd = true
 				} else {
-					//如果对应的值不匹配
-					if tmpExistData.Value != valStr {
-						err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, valStr)
+					// 已经入库的数据值
+					tmpExistVal, tmpErr := decimal.NewFromString(tmpExistData.Value)
+					if tmpErr != nil {
+						err = tmpErr
+						return
+					}
+					// 如果已经入库的数据值 与 当前计算出来的值 不匹配,那么就去更新
+					if !tmpExistVal.Equal(currValDeci) {
+						err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, currValStr)
 						if err != nil {
 							return err
 						}
@@ -459,15 +467,22 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 			currentDate, _ := time.ParseInLocation(utils.FormatDate, currentItem.DataTime, time.Local)
 			timestamp := currentDate.UnixNano() / 1e6
 			timestampStr := fmt.Sprintf("%d", timestamp)
-			valStr := decimal.NewFromFloat(currentItem.Value).String()
+			currValDeci := decimal.NewFromFloat(currentItem.Value)
+			currValStr := currValDeci.String()
 			tmpExistData, ok2 := existDataMap[currentItem.DataTime]
 			if !ok2 {
-				addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, valStr)
+				addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, currValStr)
 				isAdd = true
 			} else {
-				//如果对应的值不匹配
-				if tmpExistData.Value != valStr {
-					err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, valStr)
+				// 已经入库的数据值
+				tmpExistVal, tmpErr := decimal.NewFromString(tmpExistData.Value)
+				if tmpErr != nil {
+					err = tmpErr
+					return
+				}
+				// 如果已经入库的数据值 与 当前计算出来的值 不匹配,那么就去更新
+				if !tmpExistVal.Equal(currValDeci) {
+					err = ModifyEdbDataById(source, subSource, tmpExistData.EdbDataId, currValStr)
 					if err != nil {
 						return err
 					}

+ 1 - 1
services/base_from_calculate.go

@@ -947,7 +947,7 @@ func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq, lang string) (edbInfo *
 	}
 
 	// 校验指标名称是否存在
-	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(0, 0, req.EdbName, lang)
+	existEdbName, err := logic.CheckExistByEdbNameAndEdbInfoId(utils.EDB_INFO_TYPE, 0, req.EdbName, lang)
 	if err != nil {
 		errMsg = "判断指标名称是否存在失败,Err:" + err.Error()
 		err = fmt.Errorf("判断指标名称是否存在失败")