1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package services
- import (
- "eta/eta_forum_hub/models"
- "eta/eta_forum_hub/models/mgodb"
- "fmt"
- )
- func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
- for _, reqData := range req {
- if reqData.EdbType == 1 {
- err = AddOrUpdateEdbData(reqData.EdbCode, reqData.DataList)
- if err != nil {
- return
- }
- } else {
- err = AddOrUpdateEdbDataCalculate(reqData.EdbCode, reqData.DataList)
- if err != nil {
- return
- }
- }
- }
- return
- }
- func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
- addList := make([]interface{}, 0)
- existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
- if err != nil {
- err = fmt.Errorf("查询指标数据出错 error, %v", err)
- return
- }
- existMap := make(map[string]string, len(existList))
- for _, exist := range existList {
- existMap[exist.DataTime] = exist.Value
- }
- for _, v := range dataList {
- if oldVal, ok := existMap[v.DataTime]; !ok {
- v.EdbInfoId = 0
- addList = append(addList, v)
- } else {
- if v.Value != oldVal {
- err = mgodb.ModifyValueEdbDataValue(v.EdbCode, v.DataTime, v.Value)
- if err != nil {
- err = fmt.Errorf("更新指标数据出错 error, %v", err)
- return
- }
- }
- }
- }
- if len(addList) > 0 {
- err = mgodb.InsertEdbDataBatch(addList)
- }
- return
- }
- func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
- addList := make([]interface{}, 0)
- existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
- if err != nil {
- err = fmt.Errorf("查询指标数据出错 error, %v", err)
- return
- }
- existMap := make(map[string]string, len(existList))
- for _, exist := range existList {
- existMap[exist.DataTime] = exist.Value
- }
- for _, v := range dataList {
- if oldVal, ok := existMap[v.DataTime]; !ok {
- v.EdbInfoId = 0
- addList = append(addList, v)
- } else {
- if v.Value != oldVal {
- err = mgodb.ModifyValueEdbCalculateDataValue(v.EdbCode, v.DataTime, v.Value)
- if err != nil {
- err = fmt.Errorf("更新指标数据出错 error, %v", err)
- return
- }
- }
- }
- }
- if len(addList) > 0 {
- err = mgodb.InsertEdbCalculateDataBatch(addList)
- }
- return
- }
|