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 }