|
@@ -3,7 +3,10 @@ package services
|
|
import (
|
|
import (
|
|
"eta/eta_forum_hub/models"
|
|
"eta/eta_forum_hub/models"
|
|
"eta/eta_forum_hub/models/mgodb"
|
|
"eta/eta_forum_hub/models/mgodb"
|
|
|
|
+ "eta/eta_forum_hub/utils"
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "strconv"
|
|
|
|
+ "time"
|
|
)
|
|
)
|
|
|
|
|
|
func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
|
|
func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
|
|
@@ -23,24 +26,39 @@ func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
|
|
|
|
|
|
+func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err error) {
|
|
addList := make([]interface{}, 0)
|
|
addList := make([]interface{}, 0)
|
|
existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
|
|
existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
|
|
if err != nil {
|
|
if err != nil {
|
|
err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- existMap := make(map[string]string, len(existList))
|
|
|
|
|
|
+ existMap := make(map[time.Time]*mgodb.EdbDataBase, len(existList))
|
|
for _, exist := range existList {
|
|
for _, exist := range existList {
|
|
- existMap[exist.DataTime] = exist.Value
|
|
|
|
|
|
+ existMap[exist.DataTime] = exist
|
|
}
|
|
}
|
|
for _, v := range dataList {
|
|
for _, v := range dataList {
|
|
- if oldVal, ok := existMap[v.DataTime]; !ok {
|
|
|
|
- v.EdbInfoId = 0
|
|
|
|
- addList = append(addList, v)
|
|
|
|
|
|
+ dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
|
|
+ if e != nil {
|
|
|
|
+ err = fmt.Errorf("时间格式化出错 error, %v", e)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ val, e := strconv.ParseFloat(v.Value, 64)
|
|
|
|
+ if e != nil {
|
|
|
|
+ err = fmt.Errorf("指标数据格式化出错 error, %v", e)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if oldObj, ok := existMap[dataTime]; !ok {
|
|
|
|
+ tmp := &mgodb.EdbDataBase{
|
|
|
|
+ DataTime: dataTime,
|
|
|
|
+ Value: val,
|
|
|
|
+ CreateTime: time.Now(),
|
|
|
|
+ ModifyTime: time.Now(),
|
|
|
|
+ }
|
|
|
|
+ addList = append(addList, tmp)
|
|
} else {
|
|
} else {
|
|
- if v.Value != oldVal {
|
|
|
|
- err = mgodb.ModifyValueEdbDataValue(v.EdbCode, v.DataTime, v.Value)
|
|
|
|
|
|
+ if val != oldObj.Value {
|
|
|
|
+ err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
|
|
if err != nil {
|
|
if err != nil {
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
return
|
|
return
|
|
@@ -54,24 +72,39 @@ func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err erro
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
-func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
|
|
|
|
|
|
+func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase) (err error) {
|
|
addList := make([]interface{}, 0)
|
|
addList := make([]interface{}, 0)
|
|
existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
|
|
existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
|
|
if err != nil {
|
|
if err != nil {
|
|
err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- existMap := make(map[string]string, len(existList))
|
|
|
|
|
|
+ existMap := make(map[time.Time]*mgodb.EdbDataBase, len(existList))
|
|
for _, exist := range existList {
|
|
for _, exist := range existList {
|
|
- existMap[exist.DataTime] = exist.Value
|
|
|
|
|
|
+ existMap[exist.DataTime] = exist
|
|
}
|
|
}
|
|
for _, v := range dataList {
|
|
for _, v := range dataList {
|
|
- if oldVal, ok := existMap[v.DataTime]; !ok {
|
|
|
|
- v.EdbInfoId = 0
|
|
|
|
- addList = append(addList, v)
|
|
|
|
|
|
+ dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
|
|
+ if e != nil {
|
|
|
|
+ err = fmt.Errorf("时间格式化出错 error, %v", e)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ val, e := strconv.ParseFloat(v.Value, 64)
|
|
|
|
+ if e != nil {
|
|
|
|
+ err = fmt.Errorf("指标数据格式化出错 error, %v", e)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if oldObj, ok := existMap[dataTime]; !ok {
|
|
|
|
+ tmp := &mgodb.EdbDataBase{
|
|
|
|
+ DataTime: dataTime,
|
|
|
|
+ Value: val,
|
|
|
|
+ CreateTime: time.Now(),
|
|
|
|
+ ModifyTime: time.Now(),
|
|
|
|
+ }
|
|
|
|
+ addList = append(addList, tmp)
|
|
} else {
|
|
} else {
|
|
- if v.Value != oldVal {
|
|
|
|
- err = mgodb.ModifyValueEdbCalculateDataValue(v.EdbCode, v.DataTime, v.Value)
|
|
|
|
|
|
+ if val != oldObj.Value {
|
|
|
|
+ err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
|
|
if err != nil {
|
|
if err != nil {
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
return
|
|
return
|