|
@@ -1587,8 +1587,8 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- var reqList []data_manage.BatchEdbInfoCalculateBatchSaveReq
|
|
|
- err := json.Unmarshal(this.Ctx.Input.RequestBody, &reqList)
|
|
|
+ var req data_manage.BatchEdbInfoCalculateBatchSaveReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
if err != nil {
|
|
|
br.Msg = "参数解析异常!"
|
|
|
br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
@@ -1599,17 +1599,89 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
Fail: make([]data_manage.BatchEdbInfoCalculateBatchSaveFailResp, 0),
|
|
|
Success: make([]data_manage.BatchEdbInfoCalculateBatchSaveSuccessResp, 0),
|
|
|
}
|
|
|
- redisKeyList := make([]string, 0) //需要清理的缓存key列表
|
|
|
- defer func() {
|
|
|
- for _, redisKey := range redisKeyList {
|
|
|
- utils.Rc.Delete(redisKey)
|
|
|
+ /* redisKeyList := make([]string, 0) //需要清理的缓存key列表
|
|
|
+ defer func() {
|
|
|
+ for _, redisKey := range redisKeyList {
|
|
|
+ utils.Rc.Delete(redisKey)
|
|
|
+ }
|
|
|
+ }()*/
|
|
|
+
|
|
|
+ var formulaInt int
|
|
|
+ switch req.Source {
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS, utils.DATA_SOURCE_CALCULATE_HBZ, utils.DATA_SOURCE_CALCULATE_HCZ, utils.DATA_SOURCE_CALCULATE_TIME_SHIFT, utils.DATA_SOURCE_CALCULATE_CJJX:
|
|
|
+ if req.Formula == "" {
|
|
|
+ br.Msg = "请输入N值"
|
|
|
+ return
|
|
|
}
|
|
|
- }()
|
|
|
+ formulaInt, _ = strconv.Atoi(req.Formula)
|
|
|
+ if formulaInt <= 0 {
|
|
|
+ br.Msg = "N值输入错误,请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_ZJPJ:
|
|
|
+ //直接拼接指标
|
|
|
+ //校验时间格式
|
|
|
+ _, err = time.ParseInLocation(utils.FormatDate, req.Formula, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "拼接日期有误,请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_NHCC: //拟合残差指标
|
|
|
+ //指标校验
|
|
|
+ if len(req.EdbInfoIdArr) != 2 {
|
|
|
+ br.Msg = "选择的指标异常,请重新选择"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fromEdbInfoId := req.EdbInfoIdArr[0].EdbInfoId
|
|
|
+ if fromEdbInfoId <= 0 {
|
|
|
+ br.Msg = "请选择指标"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //校验时间格式
|
|
|
+ //数据格式:2022-11-01,2022-11-10
|
|
|
+ timeList := strings.Split(req.Formula, ",")
|
|
|
+ if len(timeList) != 2 {
|
|
|
+ br.Msg = "选择的指标异常,请重新选择"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ startDate, err := time.ParseInLocation(utils.FormatDate, timeList[0], time.Local)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "开始日期有误,请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ endDate, err := time.ParseInLocation(utils.FormatDate, timeList[1], time.Local)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "结束日期有误,请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if utils.GetTimeSubDay(startDate, endDate) < 2 {
|
|
|
+ br.Msg = "日期间隔不得少于两天"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ case utils.DATA_SOURCE_CALCULATE_ZSXY: // 指数修匀
|
|
|
+ if req.Formula == "" {
|
|
|
+ br.Msg = "请填写alpha值"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ alpha, e := strconv.ParseFloat(req.Formula, 64)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "alpha值输入错误, 请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if alpha <= 0 || alpha >= 1 {
|
|
|
+ br.Msg = "alpha值输入错误, 请重新输入"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- for _, v := range reqList {
|
|
|
- req := v.CalculateInfo
|
|
|
- req.EdbName = strings.Trim(req.EdbName, " ")
|
|
|
- if req.EdbName == "" {
|
|
|
+ if len(req.EdbList) > 100 {
|
|
|
+ br.Msg = "最多只能选择100个指标"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ reqEdbList := make([]*data_manage.CalculateEdbInfoItem, 0)
|
|
|
+ for _, v := range req.EdbList {
|
|
|
+ v.EdbName = strings.Trim(v.EdbName, " ")
|
|
|
+ if v.EdbName == "" {
|
|
|
resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
CalculateId: v.CalculateId,
|
|
|
Msg: "指标名称不能为空",
|
|
@@ -1617,7 +1689,7 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- if req.Frequency == "" {
|
|
|
+ if v.Frequency == "" {
|
|
|
resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
CalculateId: v.CalculateId,
|
|
|
Msg: "频率不能为空",
|
|
@@ -1625,7 +1697,7 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- if req.Unit == "" {
|
|
|
+ if v.Unit == "" {
|
|
|
resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
CalculateId: v.CalculateId,
|
|
|
Msg: "单位不能为空",
|
|
@@ -1633,7 +1705,7 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- if req.ClassifyId <= 0 {
|
|
|
+ if v.ClassifyId <= 0 {
|
|
|
resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
CalculateId: v.CalculateId,
|
|
|
Msg: "请选择分类",
|
|
@@ -1641,105 +1713,6 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
continue
|
|
|
}
|
|
|
|
|
|
- fromEdbInfoId := req.FromEdbInfoId
|
|
|
-
|
|
|
- var formulaInt int
|
|
|
- switch req.Source {
|
|
|
- case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS, utils.DATA_SOURCE_CALCULATE_HBZ, utils.DATA_SOURCE_CALCULATE_HCZ, utils.DATA_SOURCE_CALCULATE_TIME_SHIFT, utils.DATA_SOURCE_CALCULATE_CJJX:
|
|
|
- if req.Formula == "" {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "请选择分类",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- formulaInt, _ = strconv.Atoi(req.Formula)
|
|
|
- if formulaInt <= 0 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "N值输入错误,请重新输入",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- case utils.DATA_SOURCE_CALCULATE_ZJPJ:
|
|
|
- //直接拼接指标
|
|
|
- //校验时间格式
|
|
|
- _, err = time.ParseInLocation(utils.FormatDate, req.Formula, time.Local)
|
|
|
- if err != nil {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "拼接日期有误,请重新输入",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- case utils.DATA_SOURCE_CALCULATE_NHCC: //拟合残差指标
|
|
|
- //指标校验
|
|
|
- if len(req.EdbInfoIdArr) != 2 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "选择的指标异常,请重新选择",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- fromEdbInfoId = req.EdbInfoIdArr[0].EdbInfoId
|
|
|
-
|
|
|
- //校验时间格式
|
|
|
- //数据格式:2022-11-01,2022-11-10
|
|
|
- timeList := strings.Split(req.Formula, ",")
|
|
|
- if len(timeList) != 2 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "选择时间有误,请重新输入",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- startDate, err := time.ParseInLocation(utils.FormatDate, timeList[0], time.Local)
|
|
|
- if err != nil {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "开始日期有误,请重新输入",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- endDate, err := time.ParseInLocation(utils.FormatDate, timeList[1], time.Local)
|
|
|
- if err != nil {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "结束日期有误,请重新输入",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- if utils.GetTimeSubDay(startDate, endDate) < 2 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "日期间隔不得少于两天",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- case utils.DATA_SOURCE_CALCULATE_ZSXY: // 指数修匀
|
|
|
- if req.Formula == "" {
|
|
|
- br.Msg = "请填写alpha值"
|
|
|
- return
|
|
|
- }
|
|
|
- alpha, e := strconv.ParseFloat(req.Formula, 64)
|
|
|
- if e != nil {
|
|
|
- br.Msg = "alpha值输入错误, 请重新输入"
|
|
|
- return
|
|
|
- }
|
|
|
- if alpha <= 0 || alpha >= 1 {
|
|
|
- br.Msg = "alpha值输入错误, 请重新输入"
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if fromEdbInfoId <= 0 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "请选择指标",
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
//加入缓存机制,避免创建同一个名称的指标 start
|
|
|
redisKey := fmt.Sprint("edb_info:calculate:batch:save:", sysUser.AdminId, ":", req.Source, ":", v.CalculateId)
|
|
|
isExist := utils.Rc.IsExist(redisKey)
|
|
@@ -1751,75 +1724,35 @@ func (this *ChartInfoController) BatchCalculateBatchSave() {
|
|
|
continue
|
|
|
} else {
|
|
|
//设置3分钟缓存
|
|
|
- utils.Rc.SetNX(redisKey, 1, time.Second*300)
|
|
|
- redisKeyList = append(redisKeyList, redisKey)
|
|
|
- }
|
|
|
- //加入缓存机制,避免创建同一个名称的指标 end
|
|
|
-
|
|
|
- req2 := &data_manage.EdbInfoCalculateBatchSaveReqByEdbLib{
|
|
|
- AdminId: sysUser.AdminId,
|
|
|
- AdminName: sysUser.RealName,
|
|
|
- EdbInfoId: req.EdbInfoId,
|
|
|
- EdbName: req.EdbName,
|
|
|
- Frequency: req.Frequency,
|
|
|
- Unit: req.Unit,
|
|
|
- ClassifyId: req.ClassifyId,
|
|
|
- Formula: req.Formula, //N数值移动平均计算、环比值、环差值
|
|
|
- FromEdbInfoId: req.FromEdbInfoId,
|
|
|
- CalculateFormula: req.CalculateFormula,
|
|
|
- Source: req.Source,
|
|
|
- MoveType: req.MoveType,
|
|
|
- MoveFrequency: req.MoveFrequency,
|
|
|
-
|
|
|
- //CalculateFormula: edbInfo.CalculateFormula,
|
|
|
- EdbInfoIdArr: req.EdbInfoIdArr,
|
|
|
- Calendar: req.Calendar,
|
|
|
- }
|
|
|
-
|
|
|
- // 调用指标库去更新
|
|
|
- reqJson, err := json.Marshal(req2)
|
|
|
- if err != nil {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "参数解析异常!",
|
|
|
- ErrMsg: "参数解析失败,Err:" + err.Error(),
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
- respItem, err := data.BatchSaveEdbCalculateData(string(reqJson))
|
|
|
- if err != nil {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: "新增失败!",
|
|
|
- ErrMsg: "新增失败,Err:" + err.Error(),
|
|
|
- })
|
|
|
- continue
|
|
|
+ //utils.Rc.SetNX(redisKey, 1, time.Second*300)
|
|
|
+ //redisKeyList = append(redisKeyList, redisKey)
|
|
|
}
|
|
|
- if respItem.Ret != 200 {
|
|
|
- resp.Fail = append(resp.Fail, data_manage.BatchEdbInfoCalculateBatchSaveFailResp{
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- Msg: respItem.Msg,
|
|
|
- ErrMsg: respItem.ErrMsg,
|
|
|
- })
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- result := respItem.Data
|
|
|
-
|
|
|
- //添加es
|
|
|
- data.AddOrEditEdbInfoToEs(result.EdbInfoId)
|
|
|
- resp.Success = append(resp.Success, data_manage.BatchEdbInfoCalculateBatchSaveSuccessResp{
|
|
|
- ClassifyId: req.ClassifyId,
|
|
|
- CalculateId: v.CalculateId,
|
|
|
- EdbInfoId: result.EdbInfoId,
|
|
|
- UniqueCode: result.UniqueCode,
|
|
|
- })
|
|
|
+ reqEdbList = append(reqEdbList, v)
|
|
|
+ }
|
|
|
+ req.EdbList = reqEdbList
|
|
|
+ // 调用指标库去更新
|
|
|
+ reqJson, err := json.Marshal(req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ respItem, err := data.BatchSaveEdbCalculateMultiData(string(reqJson))
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "新增失败!"
|
|
|
+ br.ErrMsg = "新增失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if respItem.Ret != 200 {
|
|
|
+ br.Msg = respItem.Msg
|
|
|
+ br.ErrMsg = respItem.ErrMsg
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Msg = "批量保存成功"
|
|
|
- br.Data = resp
|
|
|
+ br.Data = respItem.Data
|
|
|
br.IsAddLog = true
|
|
|
}
|
|
|
|