Roc 2 years ago
parent
commit
d67a1dabc0

+ 2 - 2
controllers/base_from_calculate.go

@@ -1014,10 +1014,10 @@ func (this *CalculateController) BatchEdit() {
 			return
 		}
 		sourName = "环比值"
-		err = models.EditCalculateHbz(edbInfo, &req, fromEdbInfo, formulaInt)
+		err = models.EditCalculateHbz(edbInfo, &req, fromEdbInfo, formulaInt, edbInfo.CalculateFormula)
 	} else if req.Source == utils.DATA_SOURCE_CALCULATE_HCZ {
 		sourName = "环差值"
-		err = models.EditCalculateHcz(edbInfo, &req, fromEdbInfo, formulaInt)
+		err = models.EditCalculateHcz(edbInfo, &req, fromEdbInfo, formulaInt, edbInfo.CalculateFormula)
 	} else if req.Source == utils.DATA_SOURCE_CALCULATE_BP {
 		sourName = "变频"
 		err = models.EditCalculateBp(edbInfo, &req, fromEdbInfo)

+ 2 - 2
models/edb_data_calculate_hbz.go

@@ -91,7 +91,7 @@ func AddCalculateHbz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 }
 
 // EditCalculateHbz 环比值
-func EditCalculateHbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, formulaInt int) (err error) {
+func EditCalculateHbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, formulaInt int, oldCalculateFormula string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -130,7 +130,7 @@ func EditCalculateHbz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 		err = errors.New("判断指标是否改变失败,Err:" + err.Error())
 		return
 	}
-	if count > 0 && strconv.Itoa(formulaInt) == edbInfo.CalculateFormula { // 指标未被替换,同时N值未修改,无需重新计算
+	if count > 0 && strconv.Itoa(formulaInt) == oldCalculateFormula { // 指标未被替换,同时N值未修改,无需重新计算
 		return
 	}
 

+ 2 - 2
models/edb_data_calculate_hcz.go

@@ -92,7 +92,7 @@ func AddCalculateHcz(req *EdbInfoCalculateBatchSaveReq, fromEdbInfo *EdbInfo, ed
 }
 
 // EditCalculateHcz 修改环差值指标
-func EditCalculateHcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, formulaInt int) (err error) {
+func EditCalculateHcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromEdbInfo *EdbInfo, formulaInt int, oldCalculateFormula string) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()
 	if err != nil {
@@ -131,7 +131,7 @@ func EditCalculateHcz(edbInfo *EdbInfo, req *EdbInfoCalculateBatchEditReq, fromE
 		err = errors.New("判断指标是否改变失败,Err:" + err.Error())
 		return
 	}
-	if count > 0 && strconv.Itoa(formulaInt) == edbInfo.CalculateFormula { // 指标未被替换,同时N值未修改,无需重新计算
+	if count > 0 && strconv.Itoa(formulaInt) == oldCalculateFormula { // 指标未被替换,同时N值未修改,无需重新计算
 		return
 	}
 

+ 31 - 5
models/edb_data_calculate_ljztbpj.go

@@ -69,7 +69,7 @@ func AddCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo, second
 		condition += " AND data_time <= ? AND edb_info_id=? "
 		pars = append(pars, lastEdbData.DataTime, firstEdbInfo.EdbInfoId)
 
-		firstDataList, tmpErr := GetEdbDataListAll(condition, pars, firstEdbInfo.Source, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, firstEdbInfo.Source, 0)
 		if tmpErr != nil {
 			err = tmpErr
 			return
@@ -226,9 +226,9 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 	edbInfo.Frequency = req.Frequency
 	edbInfo.Unit = req.Unit
 	edbInfo.ClassifyId = req.ClassifyId
-	edbInfo.CalculateFormula = req.Formula
+	//edbInfo.CalculateFormula = req.Formula
 	edbInfo.ModifyTime = time.Now()
-	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime")
+	_, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "ModifyTime")
 	if err != nil {
 		return
 	}
@@ -352,6 +352,32 @@ func EditCalculateLjztbpj(req *EdbInfoCalculateBatchEditReq, edbInfo, firstEdbIn
 			return
 		}
 
+		//获取待拼接指标最近一年的12月份日期
+		{
+			var condition string
+			var pars []interface{}
+
+			//获取待拼接指标最近的个12月31日有值的年份
+			condition += " AND data_time like ? AND edb_info_id=? "
+			pars = append(pars, "%12-31", firstEdbInfo.EdbInfoId)
+
+			lastEdbData, tmpErr := GetLastEdbData(condition, pars, firstEdbInfo.Source)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			lastDateTime, tmpErr := time.ParseInLocation(utils.FormatDate, lastEdbData.DataTime, time.Local)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+			edbInfo.CalculateFormula = lastDateTime.Format(utils.FormatDate)
+			_, err = to.Update(edbInfo, "CalculateFormula")
+			if err != nil {
+				return
+			}
+
+		}
 		// 重新计算
 		err = refreshAllCalculateLjztbpj(to, edbInfo, existItemA, existItemB)
 	}
@@ -448,7 +474,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 		pars = append(pars, startCalculationDate, existItemA.FromEdbInfoId)
 
 		//第一个指标的数据列表
-		firstDataList, tmpErr := GetEdbDataListAll(condition, pars, existItemA.FromSource, 0)
+		firstDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemA.FromSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}
@@ -486,7 +512,7 @@ func refreshAllCalculateLjztbpj(to orm.TxOrmer, edbInfo *EdbInfo, existItemA, ex
 		pars = append(pars, startCalculationDate, existItemB.FromEdbInfoId)
 
 		//第二个指标的数据列表
-		secondDataList, tmpErr := GetEdbDataListAll(condition, pars, existItemB.FromSource, 0)
+		secondDataList, tmpErr := GetEdbDataListAllByTo(to, condition, pars, existItemB.FromSource, 0)
 		if tmpErr != nil {
 			return tmpErr
 		}

+ 1 - 1
models/edb_data_calculate_nszydbpjjs.go

@@ -205,7 +205,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 	condition += " AND edb_info_id=? "
 	pars = append(pars, edbInfoId)
 
-	existDataList, err := GetEdbDataListAllByTo(to, condition, pars, source, 0)
+	existDataList, err := GetEdbDataListAllV1ByTo(to, condition, pars, source, 0)
 	if err != nil {
 		fmt.Println("existDataList GetEdbDataListAll Err:" + err.Error())
 		return err

+ 1 - 1
models/edb_data_calculate_time_shift.go

@@ -251,7 +251,7 @@ func refreshAllCalculateTimeShift(to orm.TxOrmer, edbInfoId, source, formulaInt,
 		shiftDay = -shiftDay
 	}
 
-	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
+	dataList, err := GetEdbDataListAllByTo(to, condition, pars, fromEdbInfo.Source, 0)
 	if err != nil {
 		return err
 	}

+ 21 - 2
models/edb_info.go

@@ -129,6 +129,25 @@ func GetEdbDataListAll(condition string, pars []interface{}, source, order int)
 	return
 }
 
+// GetEdbDataListAllByTo 根据事务链接获取指标数据列表 order:1升序,其余值为降序
+func GetEdbDataListAllByTo(to orm.TxOrmer, condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchData, err error) {
+	sql := ``
+	tableName := GetEdbDataTableName(source)
+	sql = ` SELECT * FROM %s WHERE 1=1 `
+	sql = fmt.Sprintf(sql, tableName)
+
+	if condition != "" {
+		sql += condition
+	}
+	if order == 1 {
+		sql += ` ORDER BY data_time ASC `
+	} else {
+		sql += ` ORDER BY data_time DESC `
+	}
+	_, err = to.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
 // EdbInfoMaxAndMinInfo 指标最新数据记录结构体
 type EdbInfoMaxAndMinInfo struct {
 	MinDate     string  `description:"最小日期"`
@@ -262,8 +281,8 @@ func GetEdbDataListAllV1(condition string, pars []interface{}, source, order int
 	return
 }
 
-// GetEdbDataListAllByTo 通过事务链接获取数据列表
-func GetEdbDataListAllByTo(to orm.TxOrmer, condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchDataV1, err error) {
+// GetEdbDataListAllV1ByTo 通过事务链接获取数据列表
+func GetEdbDataListAllV1ByTo(to orm.TxOrmer, condition string, pars []interface{}, source, order int) (item []*EdbInfoSearchDataV1, err error) {
 	sql := ``
 	tableName := GetEdbDataTableName(source)
 	sql = ` SELECT * FROM %s WHERE 1=1 `