|
@@ -34,9 +34,11 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
return
|
|
|
}
|
|
|
existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
|
|
|
+ deleteMap := make(map[string]struct{}, len(existList))
|
|
|
for _, exist := range existList {
|
|
|
tmp := exist.DataTime.In(time.Local).Format(utils.FormatDate)
|
|
|
existMap[tmp] = exist
|
|
|
+ deleteMap[tmp] = struct{}{}
|
|
|
}
|
|
|
for _, v := range dataList {
|
|
|
dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
@@ -70,6 +72,7 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
addList = make([]interface{}, 0)
|
|
|
}
|
|
|
} else {
|
|
|
+ delete(deleteMap, v.DataTime)
|
|
|
if val != oldObj.Value {
|
|
|
err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
|
|
|
if err != nil {
|
|
@@ -79,9 +82,32 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //遍历deletemap,找出需要删除的日期
|
|
|
+ {
|
|
|
+ removeDateList := make([]time.Time, 0)
|
|
|
+ for dateTime := range deleteMap {
|
|
|
+ dateT, e := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ removeDateList = append(removeDateList, dateT)
|
|
|
+ }
|
|
|
+ removeNum := len(removeDateList)
|
|
|
+ if removeNum > 0 {
|
|
|
+ err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(edbCode, removeDateList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if len(addList) > 0 {
|
|
|
err = mgodb.InsertEdbDataBatch(addList)
|
|
|
}
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -93,9 +119,11 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
return
|
|
|
}
|
|
|
existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
|
|
|
+ deleteMap := make(map[string]struct{}, len(existList))
|
|
|
for _, exist := range existList {
|
|
|
tmp := exist.DataTime.In(time.Local).Format(utils.FormatDate)
|
|
|
existMap[tmp] = exist
|
|
|
+ deleteMap[tmp] = struct{}{}
|
|
|
}
|
|
|
for _, v := range dataList {
|
|
|
dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
@@ -129,6 +157,7 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
addList = make([]interface{}, 0)
|
|
|
}
|
|
|
} else {
|
|
|
+ delete(deleteMap, v.DataTime)
|
|
|
if val != oldObj.Value {
|
|
|
err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
|
|
|
if err != nil {
|
|
@@ -138,6 +167,27 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //遍历deleteMap,找出需要删除的日期
|
|
|
+ {
|
|
|
+ removeDateList := make([]time.Time, 0)
|
|
|
+ for dateTime := range deleteMap {
|
|
|
+ dateT, e := time.ParseInLocation(utils.FormatDate, dateTime, time.Local)
|
|
|
+ if e != nil {
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ removeDateList = append(removeDateList, dateT)
|
|
|
+ }
|
|
|
+ removeNum := len(removeDateList)
|
|
|
+ if removeNum > 0 {
|
|
|
+ err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDate(edbCode, removeDateList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
if len(addList) > 0 {
|
|
|
err = mgodb.InsertEdbCalculateDataBatch(addList)
|
|
|
}
|