Browse Source

Merge remote-tracking branch 'origin/master' into debug

Roc 3 years ago
parent
commit
e5744b911d

+ 272 - 2
controllers/base_from_calculate.go

@@ -19,7 +19,7 @@ type CalculateController struct {
 // Add
 // @Title 编辑指标接口
 // @Description 编辑指标接口
-// @Success 200 {object} data_manage.EditEdbInfoReq
+// @Success 200 {object} models.EditEdbInfoReq
 // @router /add [post]
 func (this *CalculateController) Add() {
 	br := new(models.BaseResponse).Init()
@@ -245,7 +245,7 @@ func (this *CalculateController) Add() {
 // CalculateBatchSave
 // @Title 累计值转月-同比值-同差等计算新增
 // @Description 累计值转月-同比值-同差等计算新增接口
-// @Param	request	body data_manage.EdbInfoCalculateBatchSaveReq true "type json string"
+// @Param	request	body models.EdbInfoCalculateBatchSaveReq true "type json string"
 // @Success Ret=200 返回指标id
 // @router /batch/save [post]
 func (this *CalculateController) CalculateBatchSave() {
@@ -529,3 +529,273 @@ func (this *CalculateController) CalculateBatchSave() {
 	br.Data = resp
 	br.IsAddLog = true
 }
+
+// Refresh
+// @Title 刷新计算指标接口
+// @Description 刷新计算指标接口
+// @Success 200 {object} models.RefreshEdbInfoReq
+// @router /refresh [post]
+func (this *CalculateController) Refresh() {
+	br := new(models.BaseResponse).Init()
+	var cacheKey string
+	defer func() {
+		utils.Rc.Delete(cacheKey)
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	source := utils.DATA_SOURCE_LT
+	var req models.RefreshEdbInfoReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	if req.EdbCode == "" {
+		br.Msg = "请输入指标编码!"
+		br.ErrMsg = "请输入指标编码,指标编码为空"
+		return
+	}
+	if req.EdbInfoId <= 0 {
+		br.Msg = "请输入指标ID!"
+		br.ErrMsg = "请输入指标ID"
+		return
+	}
+	edbInfo, err := models.GetEdbInfoById(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "指标不存在!"
+		br.ErrMsg = "指标不存在"
+		return
+	}
+
+	cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(edbInfo.Source) + "_" + req.EdbCode
+	if !utils.Rc.IsExist(cacheKey) {
+		utils.Rc.SetNX(cacheKey, 1, 1*time.Minute)
+
+		startDate := req.StartDate
+		var errMsg string
+		endDate := time.Now().Format(utils.FormatDate)
+		edbInfoId := edbInfo.EdbInfoId
+
+		switch edbInfo.Source {
+		case utils.DATA_SOURCE_CALCULATE:
+			startDate = edbInfo.StartDate
+			sTime, err := time.Parse(utils.FormatDate, edbInfo.EndDate)
+			if err != nil {
+				return
+			}
+			startDate = sTime.Format(utils.FormatDate)
+
+			var edbInfoIdBytes []string
+			calculateMap, err := models.GetEdbInfoCalculateDetail(edbInfo.EdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateDetail Err:" + err.Error()
+				break
+			}
+			var formulaStr string
+			edbInfoList := make([]*models.EdbInfo, 0)
+
+			for _, v := range calculateMap {
+				formulaStr += v.FromTag + ","
+				edbInfoIdBytes = append(edbInfoIdBytes, v.FromTag)
+				edbInfo, _ := models.GetEdbInfoById(v.FromEdbInfoId)
+				edbInfoList = append(edbInfoList, edbInfo)
+			}
+			err = models.RefreshAllCalculate(edbInfoList, edbInfo.EdbInfoId, source, edbInfo.EdbCode, edbInfo.CalculateFormula, startDate, endDate, edbInfoIdBytes)
+			if err != nil {
+				errMsg = "RefreshCalculate Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_LJZZY: //刷新累计值转月值
+			calculateLjzzy, err := models.GetEdbInfoCalculateLjzzyDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateLjzzyDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateLjzzy.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			err = models.RefreshAllCalculateLjzzy(edbInfoId, source, fromEdbInfo, calculateLjzzy.EdbCode, startDate, endDate)
+			if err != nil {
+				errMsg = "RefreshAllCalculateLjzzy Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_TBZ: //刷新同比值
+			calculateTbz, err := models.GetEdbInfoCalculateTbzDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			err = models.RefreshAllCalculateTbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
+			if err != nil {
+				errMsg = "RefreshAllCalculateTbz Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_TCZ: //同差值
+			calculateTcz, err := models.GetEdbInfoCalculateTczDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateTczDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateTcz.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			err = models.RefreshAllCalculateTcz(edbInfoId, source, fromEdbInfo, calculateTcz.EdbCode, startDate, endDate)
+			if err != nil {
+				errMsg = "RefreshCalculateTcz Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_NSZYDPJJS: //N数值移动平均计算
+			calculateNszydpjjs, err := models.GetEdbInfoCalculateNszydpjjsDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateNszydpjjsDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateNszydpjjs.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
+			startDate = edbInfo.StartDate
+			err = models.RefreshAllCalculateNszydpjjs(edbInfoId, edbInfo.Source, formulaInt, fromEdbInfo, calculateNszydpjjs.EdbCode, startDate)
+			if err != nil {
+				errMsg = "RefreshCalculateNszydpjjs Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_HBZ: //刷新环比值
+			calculateTbz, err := models.GetEdbInfoCalculateHbzDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateHbzDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
+			err = models.RefreshAllCalculateHbz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+			if err != nil {
+				errMsg = "RefreshAllCalculateHbz Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_HCZ: //刷新环差值
+			calculateTbz, err := models.GetEdbInfoCalculateHczDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateHczDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			formulaInt, _ := strconv.Atoi(edbInfo.CalculateFormula)
+			err = models.RefreshAllCalculateHcz(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate, formulaInt)
+			if err != nil {
+				errMsg = "RefreshAllCalculateHcz Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_BP: //刷新变频
+			calculateTbz, err := models.GetEdbInfoCalculateBpDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculateTbz.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			err = models.RefreshAllCalculateBp(edbInfoId, source, fromEdbInfo, calculateTbz.EdbCode, startDate, endDate)
+			if err != nil {
+				errMsg = "RefreshAllCalculateBp Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_TIME_SHIFT:
+			calculate, err := models.GetEdbInfoCalculateMappingDetail(edbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoCalculateTbzDetail Err:" + err.Error()
+				break
+			}
+			fromEdbInfo, err := models.GetEdbInfoById(calculate.FromEdbInfoId)
+			if err != nil {
+				errMsg = "GetEdbInfoById Err:" + err.Error()
+				break
+			}
+			startDate = edbInfo.StartDate
+			endDate = time.Now().Format(utils.FormatDate)
+			formulaInt, _ := strconv.Atoi(calculate.CalculateFormula)
+			err = models.RefreshAllCalculateTimeShift(edbInfoId, source, formulaInt, calculate.MoveType, fromEdbInfo, calculate.EdbCode, startDate, endDate, calculate.MoveFrequency)
+			if err != nil {
+				errMsg = "RefreshAllCalculateTimeShift Err:" + err.Error()
+			}
+		case utils.DATA_SOURCE_CALCULATE_ZJPJ: //刷新直接拼接
+			err = models.RefreshAllCalculateZjpj(edbInfo)
+			if err != nil {
+				errMsg = "RefreshAllCalculateZjpj Err:" + err.Error()
+				break
+			}
+		case utils.DATA_SOURCE_CALCULATE_LJZTBPJ: //刷新累计值同比拼接
+			err = models.RefreshAllCalculateLjztbpj(edbInfo)
+			if err != nil {
+				errMsg = "RefreshAllCalculateLjztbpj Err:" + err.Error()
+				break
+			}
+		default:
+			br.Msg = "来源异常,请联系相关开发!"
+			br.ErrMsg = "来源异常,请联系相关开发"
+			return
+		}
+		if errMsg != `` {
+			br.Msg = "刷新指标失败!"
+			br.ErrMsg = "刷新指标失败,err:" + errMsg
+			return
+		}
+
+		maxAndMinItem, err := models.GetEdbInfoMaxAndMinInfo(source, edbInfo.EdbCode)
+		if err != nil {
+			br.Msg = "刷新指标失败!"
+			br.ErrMsg = "获取指标最大最小值失败,err:" + errMsg
+			return
+		}
+
+		if maxAndMinItem != nil {
+			err = models.ModifyEdbInfoMaxAndMinInfo(edbInfoId, maxAndMinItem)
+			if err != nil {
+				br.Msg = "刷新指标失败!"
+				br.ErrMsg = "修改指标最大最小值失败,err:" + errMsg
+				return
+			}
+		}
+		br.Ret = 200
+		br.Success = true
+		br.Msg = "获取成功"
+	} else {
+		br.Ret = 501
+		br.Success = true
+		br.Msg = "系统处理中,请稍后重试"
+	}
+}

+ 153 - 0
models/base_from_calculate.go

@@ -120,6 +120,131 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
 	return
 }
 
+// RefreshAllCalculate 刷新全部数据
+func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string) (err error) {
+	o := orm.NewOrm()
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshAllCalculate,Err:" + err.Error())
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+	fmt.Println(startDate, endDate)
+	saveDataMap := make(map[string]map[int]float64)
+	for _, v := range edbInfoIdArr {
+		var condition string
+		var pars []interface{}
+		condition += " AND edb_info_id=? "
+		pars = append(pars, v.EdbInfoId)
+		if startDate != "" {
+			condition += " AND data_time>=? "
+			pars = append(pars, startDate)
+		}
+		if endDate != "" {
+			condition += " AND data_time<=? "
+			pars = append(pars, endDate)
+		}
+		fmt.Println("v.Source:", v.Source)
+		dataList, err := GetEdbDataListAll(condition, pars, v.Source, 1)
+		if err != nil {
+			return err
+		}
+		dataMap := make(map[string]float64)
+		for _, dv := range dataList {
+			if val, ok := saveDataMap[dv.DataTime]; ok {
+				if _, ok := val[v.EdbInfoId]; !ok {
+					val[v.EdbInfoId] = dv.Value
+				}
+			} else {
+				temp := make(map[int]float64)
+				temp[v.EdbInfoId] = dv.Value
+				saveDataMap[dv.DataTime] = temp
+			}
+		}
+		item := new(CalculateItems)
+		item.EdbInfoId = v.EdbInfoId
+		item.DataMap = dataMap
+	}
+
+	formulaMap := services.CheckFormula(formulaStr)
+	addSql := ` INSERT INTO edb_data_calculate(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
+	var isAdd bool
+
+	//获取指标所有数据
+	dataList := make([]*EdbData, 0)
+	dataTableName := GetEdbDataTableName(source)
+	sql := `SELECT * FROM %s WHERE edb_info_id=? `
+	sql = fmt.Sprintf(sql, dataTableName)
+	_, err = o.Raw(sql, edbInfoId).QueryRows(&dataList)
+	if err != nil {
+		return err
+	}
+	dataMap := make(map[string]string)
+	for _, v := range dataList {
+		dataMap[v.DataTime] = v.Value
+	}
+	edbInfoIdStr := strconv.Itoa(edbInfoId)
+	existDataMap := make(map[string]string)
+	for sk, sv := range saveDataMap {
+		fmt.Println(sk, sv)
+		formulaStr = strings.ToUpper(formulaStr)
+		formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
+		if formulaFormStr != "" {
+			utils.FileLog.Info("formulaFormStr:%s", formulaFormStr)
+			expression := formula.NewExpression(formulaFormStr)
+			calResult, err := expression.Evaluate()
+			if err != nil {
+				err = errors.New("计算失败:Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
+				fmt.Println(err)
+				return err
+			}
+			calVal, err := calResult.Float64()
+			if err != nil {
+				err = errors.New("计算失败:获取计算值失败 Err:" + err.Error() + ";formulaStr:" + formulaFormStr)
+				fmt.Println(err)
+				return err
+			}
+
+			saveValue := utils.SubFloatToString(calVal, 4)
+			if existVal, ok := dataMap[sk]; !ok {
+				dataTime, _ := time.Parse(utils.FormatDate, sk)
+				timestamp := dataTime.UnixNano() / 1e6
+				timeStr := fmt.Sprintf("%d", timestamp)
+
+				if _, existOk := existDataMap[sk]; !existOk {
+					addSql += GetAddSql(edbInfoIdStr, edbCode, sk, timeStr, saveValue)
+					isAdd = true
+				}
+				existDataMap[sk] = sk
+			} else {
+				if existVal != saveValue {
+					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
+					sql = fmt.Sprintf(sql, dataTableName)
+					_, err = o.Raw(sql, saveValue, edbInfoId, sk).Exec()
+					if err != nil {
+						return err
+					}
+				}
+			}
+		}
+	}
+	if isAdd {
+		addSql = strings.TrimRight(addSql, ",")
+		_, err = o.Raw(addSql).Exec()
+		if err != nil {
+			fmt.Println("RefreshAllCalculate add Err", err.Error())
+			return
+		}
+	}
+	return
+}
+
 // ReplaceFormula 替换计算方式
 func ReplaceFormula(edbInfoIdArr []*EdbInfo, valArr map[int]float64, formulaMap map[string]string, formulaStr string, edbInfoIdBytes []string) string {
 	funMap := GetFormulaMap()
@@ -209,3 +334,31 @@ type EdbInfoCalculateBatchEditReq struct {
 		FromTag   string `description:"指标对应标签"`
 	}
 }
+
+type EdbInfoCalculateDetail struct {
+	EdbInfoCalculateId int       `orm:"column(edb_info_calculate_id);pk"`
+	EdbInfoId          int       `description:"指标id"`
+	EdbCode            string    `description:"指标编码"`
+	FromEdbInfoId      int       `description:"计算指标id"`
+	FromEdbCode        string    `description:"计算指标编码"`
+	FromEdbName        string    `description:"计算指标名称"`
+	FromSource         int       `description:"计算指标来源"`
+	FromSourceName     string    `description:"计算指标来源名称"`
+	FromTag            string    `description:"来源指标标签"`
+	Sort               int       `description:"计算指标名称排序"`
+	CreateTime         time.Time `description:"创建时间"`
+	ModifyTime         time.Time `description:"修改时间"`
+	StartDate          string    `description:"开始日期"`
+	EndDate            string    `description:"结束日期"`
+	EdbType            int       `description:"指标类型:1:基础指标,2:计算指标"`
+}
+
+func GetEdbInfoCalculateDetail(edbInfoId int) (list []*EdbInfoCalculateDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date,b.edb_type FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? ORDER BY sort ASC `
+
+	_, err = o.Raw(sql, edbInfoId).QueryRows(&list)
+	return
+}

+ 26 - 0
models/edb_data_calculate_bp.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateBpDetail struct {
+	EdbInfoCalculateBpId int       `orm:"column(edb_info_calculate_bp_id);pk"`
+	EdbInfoId            int       `description:"指标id"`
+	EdbCode              string    `description:"指标编码"`
+	FromEdbInfoId        int       `description:"计算指标id"`
+	FromEdbCode          string    `description:"计算指标编码"`
+	FromEdbName          string    `description:"计算指标名称"`
+	FromSource           int       `description:"计算指标来源"`
+	FromSourceName       string    `description:"计算指标来源名称"`
+	FromTag              string    `description:"来源指标标签"`
+	Sort                 int       `description:"计算指标名称排序"`
+	CreateTime           time.Time `description:"创建时间"`
+	ModifyTime           time.Time `description:"修改时间"`
+	StartDate            string    `description:"开始日期"`
+	EndDate              string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateBpDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateBp 变频
 func AddCalculateBp(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_hbz.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateHbzDetail struct {
+	EdbInfoCalculateTbzId int       `orm:"column(edb_info_calculate_tbz_id);pk"`
+	EdbInfoId             int       `description:"指标id"`
+	EdbCode               string    `description:"指标编码"`
+	FromEdbInfoId         int       `description:"计算指标id"`
+	FromEdbCode           string    `description:"计算指标编码"`
+	FromEdbName           string    `description:"计算指标名称"`
+	FromSource            int       `description:"计算指标来源"`
+	FromSourceName        string    `description:"计算指标来源名称"`
+	FromTag               string    `description:"来源指标标签"`
+	Sort                  int       `description:"计算指标名称排序"`
+	CreateTime            time.Time `description:"创建时间"`
+	ModifyTime            time.Time `description:"修改时间"`
+	StartDate             string    `description:"开始日期"`
+	EndDate               string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateHbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateHbz 新增环比值指标
 func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_hcz.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateHczDetail struct {
+	EdbInfoCalculateHczId int       `orm:"column(edb_info_calculate_hcz_id);pk"`
+	EdbInfoId             int       `description:"指标id"`
+	EdbCode               string    `description:"指标编码"`
+	FromEdbInfoId         int       `description:"计算指标id"`
+	FromEdbCode           string    `description:"计算指标编码"`
+	FromEdbName           string    `description:"计算指标名称"`
+	FromSource            int       `description:"计算指标来源"`
+	FromSourceName        string    `description:"计算指标来源名称"`
+	FromTag               string    `description:"来源指标标签"`
+	Sort                  int       `description:"计算指标名称排序"`
+	CreateTime            time.Time `description:"创建时间"`
+	ModifyTime            time.Time `description:"修改时间"`
+	StartDate             string    `description:"开始日期"`
+	EndDate               string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateHczDetail(edbInfoId int) (item *EdbInfoCalculateHczDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateHcz 新增环差值指标
 func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_ljzzy.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateLjzzyDetail struct {
+	EdbInfoCalculateLjzzyId int       `orm:"column(edb_info_calculate_ljzzy_id);pk"`
+	EdbInfoId               int       `description:"指标id"`
+	EdbCode                 string    `description:"指标编码"`
+	FromEdbInfoId           int       `description:"计算指标id"`
+	FromEdbCode             string    `description:"计算指标编码"`
+	FromEdbName             string    `description:"计算指标名称"`
+	FromSource              int       `description:"计算指标来源"`
+	FromSourceName          string    `description:"计算指标来源名称"`
+	FromTag                 string    `description:"来源指标标签"`
+	Sort                    int       `description:"计算指标名称排序"`
+	CreateTime              time.Time `description:"创建时间"`
+	ModifyTime              time.Time `description:"修改时间"`
+	StartDate               string    `description:"开始日期"`
+	EndDate                 string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateLjzzyDetail(edbInfoId int) (item *EdbInfoCalculateLjzzyDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateLjzzy 累计值转月
 func AddCalculateLjzzy(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_nszydbpjjs.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateNszydpjjsDetail struct {
+	EdbInfoCalculateNszydpjjsId int       `orm:"column(edb_info_calculate_nszydpjjs_id);pk"`
+	EdbInfoId                   int       `description:"指标id"`
+	EdbCode                     string    `description:"指标编码"`
+	FromEdbInfoId               int       `description:"计算指标id"`
+	FromEdbCode                 string    `description:"计算指标编码"`
+	FromEdbName                 string    `description:"计算指标名称"`
+	FromSource                  int       `description:"计算指标来源"`
+	FromSourceName              string    `description:"计算指标来源名称"`
+	FromTag                     string    `description:"来源指标标签"`
+	Sort                        int       `description:"计算指标名称排序"`
+	CreateTime                  time.Time `description:"创建时间"`
+	ModifyTime                  time.Time `description:"修改时间"`
+	StartDate                   string    `description:"开始日期"`
+	EndDate                     string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateNszydpjjsDetail(edbInfoId int) (item *EdbInfoCalculateNszydpjjsDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateNszydpjjs N数值移动平均计算
 func AddCalculateNszydpjjs(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string, formulaInt int) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_tbz.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateTbzDetail struct {
+	EdbInfoCalculateTbzId int       `orm:"column(edb_info_calculate_tbz_id);pk"`
+	EdbInfoId             int       `description:"指标id"`
+	EdbCode               string    `description:"指标编码"`
+	FromEdbInfoId         int       `description:"计算指标id"`
+	FromEdbCode           string    `description:"计算指标编码"`
+	FromEdbName           string    `description:"计算指标名称"`
+	FromSource            int       `description:"计算指标来源"`
+	FromSourceName        string    `description:"计算指标来源名称"`
+	FromTag               string    `description:"来源指标标签"`
+	Sort                  int       `description:"计算指标名称排序"`
+	CreateTime            time.Time `description:"创建时间"`
+	ModifyTime            time.Time `description:"修改时间"`
+	StartDate             string    `description:"开始日期"`
+	EndDate               string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateTbzDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateTbz 同比值
 func AddCalculateTbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 26 - 0
models/edb_data_calculate_tcz.go

@@ -11,6 +11,32 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateTczDetail struct {
+	EdbInfoCalculateTczId int       `orm:"column(edb_info_calculate_tcz_id);pk"`
+	EdbInfoId             int       `description:"指标id"`
+	EdbCode               string    `description:"指标编码"`
+	FromEdbInfoId         int       `description:"计算指标id"`
+	FromEdbCode           string    `description:"计算指标编码"`
+	FromEdbName           string    `description:"计算指标名称"`
+	FromSource            int       `description:"计算指标来源"`
+	FromSourceName        string    `description:"计算指标来源名称"`
+	FromTag               string    `description:"来源指标标签"`
+	Sort                  int       `description:"计算指标名称排序"`
+	CreateTime            time.Time `description:"创建时间"`
+	ModifyTime            time.Time `description:"修改时间"`
+	StartDate             string    `description:"开始日期"`
+	EndDate               string    `description:"结束日期"`
+}
+
+func GetEdbInfoCalculateTczDetail(edbInfoId int) (item *EdbInfoCalculateTczDetail, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateTcz 同差值
 func AddCalculateTcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()

+ 31 - 0
models/edb_data_calculate_time_shift.go

@@ -11,6 +11,37 @@ import (
 	"time"
 )
 
+type EdbInfoCalculateMappingView struct {
+	EdbInfoCalculateMappingId int       `orm:"column(edb_info_calculate_mapping_id);pk"`
+	EdbInfoId                 int       `description:"计算指标id"`
+	Source                    int       `description:"计算指标来源"`
+	SourceName                string    `description:"计算指标来源名称"`
+	EdbCode                   string    `description:"计算指标编码"`
+	FromEdbInfoId             int       `description:"基础指标id"`
+	FromEdbCode               string    `description:"基础指标编码"`
+	FromEdbName               string    `description:"基础指标名称"`
+	FromSource                int       `description:"基础指标来源"`
+	FromSourceName            string    `description:"基础指标来源名称"`
+	FromTag                   string    `description:"来源指标标签"`
+	Sort                      int       `description:"计算指标名称排序"`
+	CreateTime                time.Time `description:"创建时间"`
+	ModifyTime                time.Time `description:"修改时间"`
+	StartDate                 string    `description:"开始日期"`
+	EndDate                   string    `description:"结束日期"`
+	CalculateFormula          string    `description:"N值"`
+	MoveType                  int       `description:"移动方式:1:领先(默认),2:滞后"`
+	MoveFrequency             string    `description:"移动频度"`
+}
+
+func GetEdbInfoCalculateMappingDetail(edbInfoId int) (item *EdbInfoCalculateMappingView, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT a.*,b.start_date,b.end_date,b.calculate_formula,b.move_type,b.move_frequency FROM edb_info_calculate_mapping AS a
+			INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
+			WHERE a.edb_info_id=? `
+	err = o.Raw(sql, edbInfoId).QueryRow(&item)
+	return
+}
+
 // AddCalculateTimeShift 时间移位
 func AddCalculateTimeShift(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, edbCode, uniqueCode string, sysUserId int, sysUserRealName string) (edbInfoId int, err error) {
 	o := orm.NewOrm()