Roc 1 年之前
父节点
当前提交
f9fd4e96de

+ 108 - 0
controllers/data_manage/edb_info_calculate.go

@@ -1732,3 +1732,111 @@ func (this *ChartInfoController) CalculateMapping() {
 	br.Msg = "保存成功"
 	br.Data = item
 }
+
+// CalculateComputeCorrelation
+// @Title 拟合残差计算相关性
+// @Description 拟合残差计算相关性接口
+// @Param	request	body data_manage.EdbInfoCalculateBatchSaveReq true "type json string"
+// @Success Ret=200 返回指标id
+// @router /edb_info/calculate/compute_correlation [post]
+func (this *ChartInfoController) CalculateComputeCorrelation() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req data_manage.EdbInfoCalculateBatchSaveReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if len(req.EdbInfoIdArr) != 2 {
+		br.Msg = "选择的指标异常,请重新选择"
+		return
+	}
+	fromEdbInfoId := req.EdbInfoIdArr[0].EdbInfoId
+
+	//校验时间格式
+	//数据格式: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
+	}
+
+	if fromEdbInfoId <= 0 {
+		br.Msg = "请选择指标"
+		return
+	}
+
+	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 {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	respItem, err := data.CalculateComputeCorrelation(string(reqJson))
+	if err != nil {
+		br.Msg = "新增失败"
+		br.ErrMsg = "新增失败,Err:" + err.Error()
+		return
+	}
+
+	if respItem.Ret == 200 {
+		br.Data = respItem.Data
+	} else {
+		br.Data = ``
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "计算成功"
+	br.IsAddLog = true
+}

+ 60 - 0
controllers/data_manage/predict_edb_info_calculate.go

@@ -366,3 +366,63 @@ func (this *PredictEdbInfoController) BatchCalculateBatchSave() {
 	br.Data = resp
 	br.IsAddLog = true
 }
+
+// CalculateComputeCorrelation
+// @Title 拟合残差计算相关性(预测指标)
+// @Description 拟合残差计算相关性(预测指标)接口
+// @Param	request	body data_manage.PredictEdbInfoCalculateBatchSaveReq true "type json string"
+// @Success Ret=200 返回指标id
+// @router /predict_edb_info/calculate/compute_correlation [post]
+func (this *PredictEdbInfoController) CalculateComputeCorrelation() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req data_manage.PredictEdbInfoCalculateBatchSaveReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	//传入操作人
+	req.AdminId = sysUser.AdminId
+	req.AdminName = sysUser.RealName
+
+	// 添加计算指标
+	reqJson, err := json.Marshal(req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	respItem, err := data.PredictCalculateComputeCorrelation(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
+	}
+
+	resp := respItem.Data
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "计算成功"
+	br.Data = resp
+	br.IsAddLog = true
+}

+ 18 - 0
routers/commentsRouter.go

@@ -1393,6 +1393,15 @@ func init() {
 			Filters:          nil,
 			Params:           nil})
 
+	beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:ChartInfoController"],
+		beego.ControllerComments{
+			Method:           "CalculateComputeCorrelation",
+			Router:           `/edb_info/calculate/compute_correlation`,
+			AllowHTTPMethods: []string{"post"},
+			MethodParams:     param.Make(),
+			Filters:          nil,
+			Params:           nil})
+
 	beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:ChartInfoController"],
 		beego.ControllerComments{
 			Method:           "CalculateDetail",
@@ -3202,6 +3211,15 @@ func init() {
 			Filters:          nil,
 			Params:           nil})
 
+	beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:PredictEdbInfoController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:PredictEdbInfoController"],
+		beego.ControllerComments{
+			Method:           "CalculateComputeCorrelation",
+			Router:           `/predict_edb_info/calculate/compute_correlation`,
+			AllowHTTPMethods: []string{"post"},
+			MethodParams:     param.Make(),
+			Filters:          nil,
+			Params:           nil})
+
 	beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:PredictEdbInfoController"] = append(beego.GlobalControllerRouter["hongze/hz_eta_api/controllers/data_manage:PredictEdbInfoController"],
 		beego.ControllerComments{
 			Method:           "CalculateSave",

+ 32 - 0
services/data/base_edb_lib.go

@@ -287,6 +287,38 @@ func SaveAdjustEdbInfo(param string) (resp *models.BaseResponse, err error) {
 	return
 }
 
+// CalculateComputeCorrelationResp 拟合残差计算相关性的值返回
+type CalculateComputeCorrelationResp struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        float64
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+
+// CalculateComputeCorrelation 拟合残差计算相关性的值
+func CalculateComputeCorrelation(edbInfoCalculateBatchSaveReqStr string) (resp *CalculateComputeCorrelationResp, err error) {
+	_, resultByte, err := postAddEdbData(edbInfoCalculateBatchSaveReqStr, "calculate/compute_correlation")
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// PredictCalculateComputeCorrelation 拟合残差计算相关性的值(预测指标)
+func PredictCalculateComputeCorrelation(edbInfoCalculateBatchSaveReqStr string) (resp *CalculateComputeCorrelationResp, err error) {
+	_, resultByte, err := postAddEdbData(edbInfoCalculateBatchSaveReqStr, "predict_calculate/compute_correlation")
+	err = json.Unmarshal(resultByte, &resp)
+	if err != nil {
+		return
+	}
+	return
+}
+
 // postRefreshEdbData 刷新指标数据
 func postRefreshEdbData(param map[string]interface{}, urlStr string) (resp *models.BaseResponse, err error) {
 	postUrl := utils.EDB_LIB_URL + urlStr