|
@@ -110,6 +110,12 @@ func GetBaseFromEiaSteoIndexAll() (list []*BaseFromEiaSteoIndex, err error) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+func lastDayOfMonth(year int, month time.Month) string {
|
|
|
+ firstDay := time.Date(year, month, 1, 0, 0, 0, 0, time.Local)
|
|
|
+ nextMonth := firstDay.AddDate(0, 1, 0)
|
|
|
+ return nextMonth.Add(-time.Second * 1).Format(utils.FormatDate)
|
|
|
+}
|
|
|
+
|
|
|
// HandleEiaSteoData 数据处理
|
|
|
func HandleEiaSteoData(dataList map[string]interface{}, indexInfo *BaseFromEiaSteoIndex) (err error) {
|
|
|
o := orm.NewOrmUsingDB("data")
|
|
@@ -133,7 +139,9 @@ func HandleEiaSteoData(dataList map[string]interface{}, indexInfo *BaseFromEiaSt
|
|
|
|
|
|
existMap := make(map[string]*BaseFromEiaSteoData)
|
|
|
for _, v := range existList {
|
|
|
- existMap[v.DataTime.Format(utils.FormatDate)] = v
|
|
|
+ // 产品要求每个月的最后一天,为了兼容之前每个月第一天的数据
|
|
|
+ dateTime := lastDayOfMonth(v.DataTime.Year(), v.DataTime.Month())
|
|
|
+ existMap[dateTime] = v
|
|
|
}
|
|
|
|
|
|
// 待添加的数据列表
|
|
@@ -152,7 +160,6 @@ func HandleEiaSteoData(dataList map[string]interface{}, indexInfo *BaseFromEiaSt
|
|
|
err = tmpErr
|
|
|
return
|
|
|
}
|
|
|
- // 需求要求的日期起始时间
|
|
|
initDate := time.Date(2010, time.January, 1, 0, 0, 0, 0, time.Local)
|
|
|
if currDate.Before(initDate) {
|
|
|
continue
|
|
@@ -163,7 +170,10 @@ func HandleEiaSteoData(dataList map[string]interface{}, indexInfo *BaseFromEiaSt
|
|
|
if currDate.Before(startDate) {
|
|
|
startDate = currDate
|
|
|
}
|
|
|
- date = currDate.Format(utils.FormatDate)
|
|
|
+ // 产品要求每个月的最后一天
|
|
|
+ date = lastDayOfMonth(currDate.Year(), currDate.Month())
|
|
|
+ currDate, _ = time.ParseInLocation(utils.FormatDate, date, time.Local)
|
|
|
+ // date = currDate.Format(utils.FormatDate)
|
|
|
//fmt.Println("date:", date)
|
|
|
|
|
|
tmpBaseFromEiaSteoData, ok := existMap[date]
|
|
@@ -180,10 +190,15 @@ func HandleEiaSteoData(dataList map[string]interface{}, indexInfo *BaseFromEiaSt
|
|
|
} else {
|
|
|
nowVal := decimal.NewFromFloat(tmpBaseFromEiaSteoData.Value)
|
|
|
//fmt.Println(date, "=========", nowVal.Equal(valDecimal))
|
|
|
+ var updateCols []string
|
|
|
if !nowVal.Equal(valDecimal) {
|
|
|
tmpBaseFromEiaSteoData.Value = val
|
|
|
tmpBaseFromEiaSteoData.ModifyTime = time.Now()
|
|
|
- _, err = to.Update(tmpBaseFromEiaSteoData, "Value", "ModifyTime")
|
|
|
+ updateCols = append(updateCols, "value")
|
|
|
+ updateCols = append(updateCols, "modify_time")
|
|
|
+ }
|
|
|
+ if len(updateCols) > 0 {
|
|
|
+ _, err = to.Update(tmpBaseFromEiaSteoData, updateCols...)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|