Prechádzať zdrojové kódy

fix:拟合残差达梦数据库日期格式问题

Roc 3 mesiacov pred
rodič
commit
4a6ea007fd

+ 1 - 1
models/base_from_manual.go

@@ -207,7 +207,7 @@ func RefreshEdbDataFromManual(edbInfoId int, edbCode, startDate string) (err err
 		addSql = strings.TrimRight(addSql, ",")
 		err = global.DEFAULT_DmSQL.Exec(addSql).Error
 		if err != nil {
-			fmt.Println("RefreshAllEdbDataByManual add Err", err.Error())
+			//fmt.Println("RefreshAllEdbDataByManual add Err", err.Error())
 			return
 		}
 	}

+ 1 - 1
models/base_from_python.go

@@ -321,7 +321,7 @@ func AnalysisPythonCode(pythonCode, edbName string) (edbInfoList []*EdbInfo) {
 		}
 	}
 	for _, v := range tmpEdbCodeList {
-		fmt.Println(v)
+		//fmt.Println(v)
 		item, _ := GetEdbInfoOnlyByEdbCode(v)
 		if item != nil {
 			edbInfoList = append(edbInfoList, item)

+ 18 - 9
models/edb_data_calculate_nhcc.go

@@ -414,16 +414,18 @@ func refreshAllCalculateNhcc(to *gorm.DB, edbInfo *EdbInfo, existItemA, existIte
 	condition += " AND edb_info_id=? "
 	pars = append(pars, edbInfo.EdbInfoId)
 
-	var dataList []*EdbDataCalculateNhcc
-	sql := ` SELECT * FROM edb_data_calculate_nhcc WHERE edb_info_id=? ORDER BY data_time DESC `
-	err = to.Raw(sql, edbInfo.EdbInfoId).Scan(&dataList).Error
+	//获取年化指标所有数据
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.SubSource)
+	//var dataList []*EdbDataCalculateNhcc
+	//sql := ` SELECT * FROM edb_data_calculate_nhcc WHERE edb_info_id=? ORDER BY data_time DESC `
+	//err = to.Raw(sql, edbInfo.EdbInfoId).Scan(&dataList).Error
 	if err != nil {
 		return
 	}
 	var dateArr []string
-	dataMap := make(map[string]*EdbDataCalculateNhcc)
+	dataMap := make(map[string]*EdbData)
 	removeDataTimeMap := make(map[string]int) //需要移除的日期数据
-	for _, v := range dataList {
+	for _, v := range existDataList {
 		dateArr = append(dateArr, v.DataTime)
 		dataMap[v.DataTime] = v
 		removeDataTimeMap[v.DataTime] = 1
@@ -500,7 +502,8 @@ func refreshAllCalculateNhcc(to *gorm.DB, edbInfo *EdbInfo, existItemA, existIte
 		bDecimal := decimal.NewFromFloat(bData.Value)
 		b2Decimal := decimal.NewFromFloat(b2Val)
 
-		val, _ := bDecimal.Sub(b2Decimal).Round(4).Float64()
+		valDeci := bDecimal.Sub(b2Decimal)
+		val, _ := valDeci.Round(4).Float64()
 
 		// 判断之前有没有该数据
 		existData, ok := dataMap[currDate]
@@ -520,9 +523,15 @@ func refreshAllCalculateNhcc(to *gorm.DB, edbInfo *EdbInfo, existItemA, existIte
 			addDataList = append(addDataList, edbDataNhcc)
 		} else {
 			// 如果有的话,还需要判断值是否一致,一致则不处理,不一致则修改
-			if existData.Value != val {
-				existData.Value = val
-				_ = to.Model(existData).Select([]string{"Value"}).Updates(existData).Error
+
+			tmpExistVal, tmpErr := decimal.NewFromString(existData.Value)
+			if tmpErr != nil {
+				err = tmpErr
+				return
+			}
+
+			if !tmpExistVal.Equal(valDeci) {
+				err = ModifyEdbDataById(edbInfo.Source, edbInfo.SubSource, existData.EdbDataId, valDeci.String())
 				if err != nil {
 					return
 				}

+ 3 - 3
models/predict_edb_data_calculate_nszydbpjjs.go

@@ -214,8 +214,8 @@ func RefreshAllPredictCalculateNszydpjjs(edbInfoId, source, subSource, formulaIn
 // refreshAllPredictCalculateNszydpjjs 更新全部N数值移动平均计算
 func refreshAllPredictCalculateNszydpjjs(to *gorm.DB, edbInfoId, source, subSource, formulaInt int, fromEdbInfo *EdbInfo, edbCode, startDate string) (latestDateStr string, latestValue float64, err error) {
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	fmt.Println(edbInfoIdStr)
-	fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
+	//fmt.Println(edbInfoIdStr)
+	//fmt.Println("refreshAllCalculateNszydpjjs startDate:", startDate)
 
 	// 获取关联指标数据
 	dataTableName := GetEdbDataTableName(source, subSource)
@@ -343,7 +343,7 @@ func refreshAllPredictCalculateNszydpjjs(to *gorm.DB, edbInfoId, source, subSour
 			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
 			err = to.Exec(sql, edbInfoId, removeDateList).Error
 			if err != nil {
-				fmt.Println("refreshAllPredictCalculateNszydpjjs add data ;delete Err", err.Error())
+				//fmt.Println("refreshAllPredictCalculateNszydpjjs add data ;delete Err", err.Error())
 				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
 				return
 			}