Roc 2 rokov pred
rodič
commit
36773e53c9
2 zmenil súbory, kde vykonal 59 pridanie a 2 odobranie
  1. 11 1
      models/edb_data_base.go
  2. 48 1
      models/edb_data_calculate_bp.go

+ 11 - 1
models/edb_data_base.go

@@ -131,6 +131,16 @@ func GetAllEdbDataList(edbInfoId, source int) (existDataList []*EdbData, err err
 	return
 }
 
+// GetAllEdbDataListByTo 获取所有的指标数据列表
+func GetAllEdbDataListByTo(to orm.TxOrmer, edbInfoId, source int) (existDataList []*EdbData, err error) {
+	dataTableName := GetEdbDataTableName(source)
+	fmt.Println("dataTableName:", dataTableName)
+	sql := `SELECT * FROM %s WHERE edb_info_id=? order by data_time asc`
+	sql = fmt.Sprintf(sql, dataTableName)
+	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
+	return
+}
+
 //新版本
 type EdbDataV1 struct {
 	EdbDataId     int `orm:"column(edb_data_id);pk"`
@@ -142,4 +152,4 @@ type EdbDataV1 struct {
 	CreateTime    time.Time
 	ModifyTime    time.Time
 	DataTimestamp int64
-}
+}

+ 48 - 1
models/edb_data_calculate_bp.go

@@ -374,7 +374,7 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 	fmt.Println("source:", source)
 
 	//获取变频指标所有数据
-	existDataList, err := GetAllEdbDataList(edbInfoId, source)
+	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source)
 	if err != nil {
 		return
 	}
@@ -482,6 +482,53 @@ func refreshAllCalculateBp(to orm.TxOrmer, edbInfoId, source int, fromEdbInfo *E
 			//	removeDateList = append(removeDateList, v.DataTime)
 			//}
 		}
+	} else {
+		existMap := make(map[string]string)
+		dataLen := len(dataList)
+
+		for i := 0; i < dataLen; i++ {
+			//当期
+			currentItem := dataList[i]
+			currentDate, _ := time.Parse(utils.FormatDate, currentItem.DataTime)
+			var day int
+			var preItem *EdbInfoSearchData
+			var preDate time.Time
+			if i == 0 {
+				day = int(time.Now().Sub(currentDate).Hours() / float64(24))
+				preDate = time.Now()
+			} else {
+				j := i - 1
+				if j < dataLen {
+					preItem = dataList[j]
+					preDate, _ = time.Parse(utils.FormatDate, preItem.DataTime)
+					day = int(preDate.Sub(currentDate).Hours() / float64(24))
+					utils.FileLog.Info("preItem.DataTime:" + preItem.DataTime + ";currentItem.DataTime" + currentItem.DataTime)
+				}
+			}
+			for k := 0; k <= day; k++ {
+				needDay := preDate.AddDate(0, 0, -k)
+				needDayStr := needDay.Format(utils.FormatDate)
+				existKey := edbCode + needDayStr
+				if _, ok := existMap[existKey]; !ok {
+					timestamp := needDay.UnixNano() / 1e6
+					timestampStr := fmt.Sprintf("%d", timestamp)
+					valStr := decimal.NewFromFloat(currentItem.Value).String()
+					addSql += GetAddSql(edbInfoIdStr, edbCode, needDayStr, timestampStr, valStr)
+					isAdd = true
+				}
+				existMap[existKey] = needDayStr
+			}
+			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)
+				isAdd = true
+			}
+			existMap[existKey] = currentItem.DataTime
+		}
 	}
 
 	// 删除不需要的指标数据