317699326@qq.com 4 日 前
コミット
f1d4e1c2f1
2 ファイル変更28 行追加2 行削除
  1. 27 2
      models/edb_data_calculate_ljzzy.go
  2. 1 0
      models/edb_info.go

+ 27 - 2
models/edb_data_calculate_ljzzy.go

@@ -245,6 +245,7 @@ func refreshAllCalculateLjzzy(to *gorm.DB, edbInfoId, source, subSource int, fro
 		dataMap[v.DataTime] = v.Value
 		removeDateMap[v.DataTime] = true
 	}
+
 	existDataMap := make(map[string]string)
 	for yk, yv := range yearMap {
 		_, oneMonthOk := yv[1]
@@ -253,10 +254,12 @@ func refreshAllCalculateLjzzy(to *gorm.DB, edbInfoId, source, subSource int, fro
 			continue
 		}
 		for i := 1; i <= 12; i++ {
-			fmt.Println(yk, i, yv[i])
 			dataCurrentItem := yv[i]
 			var date string
 			var val float64
+
+			//fmt.Println("delete:", yk, i, yv[i], dataCurrentItem)
+
 			if dataCurrentItem != nil {
 				if i == 1 || i == 2 {
 					if _, mok := yv[1]; mok { //1月有值
@@ -314,6 +317,18 @@ func refreshAllCalculateLjzzy(to *gorm.DB, edbInfoId, source, subSource int, fro
 						val, _ = a.Sub(b).Float64()
 					}
 				}
+			} else {
+				if i == 1 && len(yv) > 1 {
+					_, mok := yv[1]
+					_, tok := yv[2]
+
+					if !mok && tok {
+						year := strconv.Itoa(yk)
+						month := strconv.Itoa(i)
+						_, date = utils.GetMonthStartAndEnd(year, month)
+						delete(removeDateMap, date)
+					}
+				}
 			}
 			if date != "" {
 				//saveValue := utils.SubFloatToString(val, 4)
@@ -393,7 +408,17 @@ func calculateLjzzy(edbInfoId int, date, edbInfoIdStr, edbCode, dataTableName, a
 		}
 		existDataMap[date] = date
 	} else {
-		if existVal != saveValue {
+		existValFloat, err := decimal.NewFromString(existVal)
+		if err != nil {
+			return "", false, err
+		}
+		saveValueFloat, err := decimal.NewFromString(saveValue)
+		if err != nil {
+			return "", false, err
+		}
+
+		if !existValFloat.Equal(saveValueFloat) {
+			//fmt.Println("modify:", existVal, saveValue)
 			sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
 			sql = fmt.Sprintf(sql, dataTableName)
 			err = to.Exec(sql, saveValue, edbInfoId, date).Error

+ 1 - 0
models/edb_info.go

@@ -464,6 +464,7 @@ func GetEdbDataListAllByMysqlTo(to *gorm.DB, source, subSource int, findEdbDataL
 	} else {
 		sql += ` ORDER BY data_time DESC `
 	}
+
 	err = to.Raw(sql, pars...).Find(&items).Error
 	if err != nil {
 		return