浏览代码

Merge remote-tracking branch 'origin/custom'

Roc 10 月之前
父节点
当前提交
5cd98b3336

+ 6 - 2
controllers/base_from_calculate.go

@@ -511,8 +511,12 @@ func (this *CalculateController) BatchSave() {
 	}
 
 	//生成指标编码
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C` + time.Now().Format("060102") + randStr
+	edbCode, err := utils.GenerateEdbCode(1, "")
+	if err != nil {
+		br.Msg = "指标生成失败"
+		br.ErrMsg = "指标编码生成失败,Err:" + err.Error()
+		return
+	}
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 

+ 13 - 4
controllers/base_from_predict_calculate.go

@@ -193,8 +193,13 @@ func addPredictCalculate(br *models.BaseResponse, req models.EdbInfoCalculateSav
 	}
 
 	// 指标入库
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C2` + time.Now().Format("060102") + randStr
+	//生成指标编码
+	edbCode, err := utils.GenerateEdbCode(1, "2")
+	if err != nil {
+		br.Msg = "指标生成失败"
+		br.ErrMsg = "指标编码生成失败,Err:" + err.Error()
+		return
+	}
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 	edbInfo := &models.EdbInfo{
@@ -591,8 +596,12 @@ func (this *PredictCalculateController) CalculateBatchSave() {
 	}
 
 	//生成指标编码
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C` + time.Now().Format("060102") + randStr
+	edbCode, err := utils.GenerateEdbCode(1, "2")
+	if err != nil {
+		br.Msg = "指标生成失败"
+		br.ErrMsg = "指标编码生成失败,Err:" + err.Error()
+		return
+	}
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 

+ 7 - 2
controllers/base_from_python.go

@@ -154,8 +154,13 @@ func (this *PythonController) Add() {
 		return
 	}
 	//指标code生成
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C` + time.Now().Format("060102") + randStr
+	//生成指标编码
+	edbCode, err := utils.GenerateEdbCode(1, "")
+	if err != nil {
+		br.Msg = "指标生成失败"
+		br.ErrMsg = "指标编码生成失败,Err:" + err.Error()
+		return
+	}
 
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)

+ 6 - 2
models/base_from_adjust.go

@@ -48,8 +48,12 @@ func SaveAdjustEdb(req SaveAdjustEdbReq) (edbInfo *EdbInfo, err error, errMsg st
 	var edbCode string
 	if req.EdbInfoId <= 0 {
 		//指标code生成
-		randStr := utils.GetRandDigit(4)
-		edbCode = `C` + time.Now().Format("060102") + randStr
+		//生成指标编码
+		edbCode, err = utils.GenerateEdbCode(1, "")
+		if err != nil {
+			err = errors.New("指标编码生成失败,Err:" + err.Error())
+			return
+		}
 
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 		uniqueCode := utils.MD5(utils.DATA_PREFIX + "_" + timestamp)

+ 14 - 5
services/base_from_calculate.go

@@ -160,8 +160,13 @@ func EdbCalculateBatchSave(req models.EdbInfoCalculateBatchSaveReq, lang string)
 	}
 
 	//生成指标编码
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C` + time.Now().Format("060102") + randStr
+	edbCode, err := utils.GenerateEdbCode(1, "")
+	if err != nil {
+		errMsg = "指标编码生成失败:Err:" + err.Error()
+		err = fmt.Errorf("指标生成失败")
+		return
+	}
+
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 
@@ -984,9 +989,13 @@ func EdbCalculateAdd(req models.EdbInfoCalculateSaveReq, lang string) (edbInfo *
 			return
 		}
 	}
-
-	randStr := utils.GetRandDigit(4)
-	edbCode := `C` + time.Now().Format("060102") + randStr
+	//生成指标编码
+	edbCode, err := utils.GenerateEdbCode(1, "")
+	if err != nil {
+		errMsg = "生成计算指标失败,AddEdbInfo Err:" + err.Error()
+		err = fmt.Errorf("指标编码生成失败,Err:" + err.Error())
+		return
+	}
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	uniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 

+ 33 - 0
utils/common.go

@@ -7,6 +7,7 @@ import (
 	"encoding/base64"
 	"encoding/hex"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"github.com/shopspring/decimal"
 	"image"
@@ -1256,3 +1257,35 @@ func DateConvMysqlConvMongo(dateCon string) string {
 	}
 	return cond
 }
+
+// GenerateEdbCodeMap 当前已经生成的指标编码map(暂时不做定时数据清理了,因为数据不大,我们至少每个月会重启一次,所以暂时不做定时数据清理)
+var GenerateEdbCodeMap = map[string]bool{}
+
+// GenerateEdbCode
+// @Description:  生成指标编码
+// @author: Roc
+// @datetime 2024-06-05 09:49:53
+// @param num int
+// @param pre string 前缀
+// @return edbCode string
+// @return err error
+func GenerateEdbCode(num int, pre string) (edbCode string, err error) {
+	if num >= 10 {
+		err = errors.New("指标编码生成失败,请重新生成")
+		return
+	}
+
+	// 4位随机数
+	randStr := GetRandDigit(4)
+	// 年月日时分秒+4位随机数
+	edbCode = `C` + pre + time.Now().Format(FormatShortDateTimeUnSpace) + randStr
+
+	if _, ok := GenerateEdbCodeMap[edbCode]; ok {
+		num++
+		edbCode, err = GenerateEdbCode(num, pre)
+	}
+
+	GenerateEdbCodeMap[edbCode] = true
+
+	return
+}