rdluck 3 years ago
parent
commit
97dcff89d7
2 changed files with 46 additions and 22 deletions
  1. 43 20
      models/data_manage/edb_info_calculate_bp.go
  2. 3 2
      services/data/edb_info.go

+ 43 - 20
models/data_manage/edb_info_calculate_bp.go

@@ -42,28 +42,40 @@ func RefreshCalculateBp(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate,
 		return
 	}
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	//计算数据
-
 	//计算数据
 	var condition string
 	var pars []interface{}
 	condition += " AND edb_info_id=? "
 	pars = append(pars, fromEdbInfo.EdbInfoId)
-
 	if startDate != "" {
 		condition += " AND data_time>=? "
 		pars = append(pars, startDate)
 	}
+
 	if endDate != "" {
 		condition += " AND data_time<=? "
 		pars = append(pars, endDate)
 	}
-
 	dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 0)
 	if err != nil {
 		return err
 	}
-	existMap := make(map[string]string)
+
+	var existCondition string
+	var existPars []interface{}
+	existCondition += " AND edb_info_id=? "
+	existPars = append(existPars, edbInfoId)
+	dataExistList, err := GetEdbDataListAll(existCondition, existPars, utils.DATA_SOURCE_CALCULATE_BP, 0)
+	if err != nil {
+		return err
+	}
+
+	existDataMap := make(map[string]*EdbInfoSearchData)
+	for _, v := range dataExistList {
+		existDataMap[v.DataTime] = v
+	}
+
+	addExistMap := make(map[string]string)
 	dataLen := len(dataList)
 	addSql := ` INSERT INTO edb_data_calculate_bp(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
 	var isAdd bool
@@ -83,31 +95,42 @@ func RefreshCalculateBp(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate,
 			}
 		}
 		for k := 1; k <= day; k++ {
-			needDay := currentDate.AddDate(0, 0, k).Format(utils.FormatDate)
-			existKey := edbCode + needDay
-			if _, ok := existMap[existKey]; !ok {
+			needDayForm := currentDate.AddDate(0, 0, k)
+			if needDayForm.Before(time.Now()) {
+				needDay := needDayForm.Format(utils.FormatDate)
+				if _, ok := existDataMap[needDay]; !ok {
+					existKey := edbCode + needDay
+					if _, ok := addExistMap[existKey]; !ok {
+						currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+						timestamp := currentDate.UnixNano() / 1e6
+						timestampStr := fmt.Sprintf("%d", timestamp)
+						valStr := decimal.NewFromFloat(currentItem.Value).String()
+						isAdd = true
+						addSql += GetAddSql(edbInfoIdStr, edbCode, needDay, timestampStr, valStr)
+					}
+					addExistMap[existKey] = needDay
+				}
+			}
+		}
+
+		if _, ok := existDataMap[currentItem.DataTime]; !ok {
+			existKey := edbCode + currentItem.DataTime
+			if _, ok := addExistMap[existKey]; !ok {
 				currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
 				timestamp := currentDate.UnixNano() / 1e6
 				timestampStr := fmt.Sprintf("%d", timestamp)
 				valStr := decimal.NewFromFloat(currentItem.Value).String()
-				addSql += GetAddSql(edbInfoIdStr, edbCode, needDay, timestampStr, valStr)
+				isAdd = true
+				addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, valStr)
 			}
-			existMap[existKey] = needDay
+			addExistMap[existKey] = currentItem.DataTime
 		}
-		existKey := edbCode + currentItem.DataTime
-		if _, ok := existMap[existKey]; !ok {
-			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
-			timestamp := currentDate.UnixNano() / 1e6
-			timestampStr := fmt.Sprintf("%d", timestamp)
-			valStr := decimal.NewFromFloat(currentItem.Value).String()
-			addSql += GetAddSql(edbInfoIdStr, edbCode, currentItem.DataTime, timestampStr, valStr)
-		}
-		existMap[existKey] = currentItem.DataTime
 	}
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		_, err = o.Raw(addSql).Exec()
 		if err != nil {
+			fmt.Println("add err:" + err.Error())
 			return err
 		}
 	}
@@ -139,4 +162,4 @@ func GetEdbInfoCalculateBpDetail(edbInfoId int) (item *EdbInfoCalculateTbzDetail
 			WHERE a.edb_info_id=? `
 	err = o.Raw(sql, edbInfoId).QueryRow(&item)
 	return
-}
+}

+ 3 - 2
services/data/edb_info.go

@@ -243,8 +243,9 @@ func RefreshDataFromCalculateAll() (err error) {
 	var pars []interface{}
 	condition += " AND edb_type=? "
 	pars = append(pars, 2)
-	//condition += " AND edb_info_id=? "
-	//pars = append(pars, 100691)
+
+	//condition += " AND source=? "
+	//pars = append(pars, utils.DATA_SOURCE_CALCULATE_BP)
 
 	items, err := data_manage.GetEdbInfoByCondition(condition, pars, 0)
 	if err != nil {