|
@@ -64,8 +64,8 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
DataTime: dataTime,
|
|
|
Value: val,
|
|
|
Status: v.Status,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
+ CreateTime: v.CreateTime,
|
|
|
+ ModifyTime: v.ModifyTime,
|
|
|
DataTimestamp: v.DataTimestamp,
|
|
|
}
|
|
|
addList = append(addList, tmp)
|
|
@@ -80,7 +80,7 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
} else {
|
|
|
delete(deleteMap, v.DataTime)
|
|
|
if val != oldObj.Value {
|
|
|
- err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
|
|
|
+ err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val, v.ModifyTime)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
|
return
|
|
@@ -102,7 +102,7 @@ func AddOrUpdateEdbData(edbCode string, dataList []*models.EdbDataBase) (err err
|
|
|
}
|
|
|
removeNum := len(removeDateList)
|
|
|
if removeNum > 0 {
|
|
|
- err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDateList(edbCode, removeDateList)
|
|
|
+ err = mgodb.DeleteEdbInfoDataByEdbCodeAndDateList(edbCode, removeDateList)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
return
|
|
@@ -153,8 +153,8 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
DataTime: dataTime,
|
|
|
Value: val,
|
|
|
Status: v.Status,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
+ CreateTime: v.CreateTime,
|
|
|
+ ModifyTime: v.ModifyTime,
|
|
|
DataTimestamp: v.DataTimestamp,
|
|
|
}
|
|
|
addList = append(addList, tmp)
|
|
@@ -169,7 +169,7 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
} else {
|
|
|
delete(deleteMap, v.DataTime)
|
|
|
if val != oldObj.Value {
|
|
|
- err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
|
|
|
+ err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val, v.ModifyTime)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
|
return
|
|
@@ -191,7 +191,7 @@ func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*models.EdbDataBase)
|
|
|
}
|
|
|
removeNum := len(removeDateList)
|
|
|
if removeNum > 0 {
|
|
|
- err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbCode, removeDateList)
|
|
|
+ err = mgodb.DeleteEdbCalculateDataByEdbCodeAndDateList(edbCode, removeDateList)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
return
|
|
@@ -372,23 +372,32 @@ func GetEdbDataTbzForSeason(frequency string, tmpDataList []*models.EdbDataList,
|
|
|
}
|
|
|
|
|
|
// AddOrUpdateEdbDataWithOpType 根据操作类型,更新指标数据
|
|
|
-func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBaseWithOpType) (err error) {
|
|
|
+func AddOrUpdateEdbDataWithOpType(edbInfoId int, dataList []*models.EdbDataBaseWithOpType, minDataTime string, maxDataTime string) (err error) {
|
|
|
// 指标数据为空则不更新
|
|
|
if len(dataList) == 0 {
|
|
|
return
|
|
|
}
|
|
|
addList := make([]interface{}, 0)
|
|
|
- existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
|
|
|
+ minDataTimeT, err := time.ParseInLocation(utils.FormatDate, minDataTime, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ maxDataTimeT, err := time.ParseInLocation(utils.FormatDate, maxDataTime, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ existList, err := mgodb.GetEdbDataList(edbInfoId, minDataTimeT, maxDataTimeT)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
|
return
|
|
|
}
|
|
|
existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
|
|
|
- deleteMap := make(map[string]struct{}, len(existList))
|
|
|
+ removeDateList := make([]time.Time, 0)
|
|
|
for _, exist := range existList {
|
|
|
tmp := exist.DataTime.Format(utils.FormatDate)
|
|
|
existMap[tmp] = exist
|
|
|
- deleteMap[tmp] = struct{}{}
|
|
|
}
|
|
|
for _, v := range dataList {
|
|
|
dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
@@ -402,66 +411,58 @@ func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBase
|
|
|
return
|
|
|
}
|
|
|
if oldObj, ok := existMap[v.DataTime]; !ok {
|
|
|
- if len(addList) >0 && v.OpType == "delete" {
|
|
|
- err = mgodb.InsertEdbDataBatch(addList)
|
|
|
- if err != nil {
|
|
|
- err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
|
|
|
- return
|
|
|
- }
|
|
|
- addList = make([]interface{}, 0)
|
|
|
- continue
|
|
|
- }
|
|
|
if v.OpType == "insert" || v.OpType == "update" {
|
|
|
tmp := &mgodb.EdbDataBase{
|
|
|
- EdbInfoId: 0,
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
EdbCode: v.EdbCode,
|
|
|
DataTime: dataTime,
|
|
|
Value: val,
|
|
|
Status: v.Status,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
+ CreateTime: v.CreateTime,
|
|
|
+ ModifyTime: v.ModifyTime,
|
|
|
DataTimestamp: v.DataTimestamp,
|
|
|
}
|
|
|
addList = append(addList, tmp)
|
|
|
+ if len(addList) >500 {
|
|
|
+ err = mgodb.InsertEdbDataBatch(addList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ addList = make([]interface{}, 0)
|
|
|
+ continue
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
if v.OpType != "delete" {
|
|
|
- if val != oldObj.Value {
|
|
|
- err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val)
|
|
|
+ if v.ModifyTime.After(oldObj.ModifyTime) {
|
|
|
+ err = mgodb.ModifyValueEdbDataValue(oldObj.EdbDataId, val, v.ModifyTime)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
|
return
|
|
|
}
|
|
|
}else if v.OpType == "delete" {
|
|
|
+ removeDateList = append(removeDateList, dataTime)
|
|
|
// 删除数据
|
|
|
- err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
|
|
|
- if err != nil {
|
|
|
- err = fmt.Errorf("删除指标数据出错 error, %v", err)
|
|
|
- return
|
|
|
+ // err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
|
|
|
+ // if err != nil {
|
|
|
+ // err = fmt.Errorf("删除指标数据出错 error, %v", err)
|
|
|
+ // return
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//遍历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
|
|
|
- // }
|
|
|
- // }
|
|
|
+ {
|
|
|
+ removeNum := len(removeDateList)
|
|
|
+ if removeNum > 0 {
|
|
|
+ err = mgodb.DeleteEdbInfoDataByEdbInfoIdAndDateList(edbInfoId, removeDateList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if len(addList) > 0 {
|
|
@@ -471,23 +472,28 @@ func AddOrUpdateEdbDataWithOpType(edbCode string, dataList []*models.EdbDataBase
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func AddOrUpdateEdbDataCalculateWithOpType(edbCode string, dataList []*models.EdbDataBaseWithOpType) (err error) {
|
|
|
+func AddOrUpdateEdbDataCalculateWithOpType(edbInfoId int, dataList []*models.EdbDataBaseWithOpType, minDataTime string, maxDataTime string) (err error) {
|
|
|
// 指标数据为空则不更新
|
|
|
if len(dataList) == 0 {
|
|
|
return
|
|
|
}
|
|
|
addList := make([]interface{}, 0)
|
|
|
- existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
|
|
|
+ minDataTimeT, err := time.ParseInLocation(utils.FormatDate, minDataTime, time.Local)
|
|
|
if err != nil {
|
|
|
- err = fmt.Errorf("查询指标数据出错 error, %v", err)
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ maxDataTimeT, err := time.ParseInLocation(utils.FormatDate, maxDataTime, time.Local)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("日期格式错误 error, %v", err)
|
|
|
return
|
|
|
}
|
|
|
+ existList, err := mgodb.GetEdbCalculateDataList(edbInfoId, minDataTimeT, maxDataTimeT)
|
|
|
existMap := make(map[string]*mgodb.EdbDataBase, len(existList))
|
|
|
- deleteMap := make(map[string]struct{}, len(existList))
|
|
|
+ removeDateList := make([]time.Time, 0)
|
|
|
for _, exist := range existList {
|
|
|
tmp := exist.DataTime.Format(utils.FormatDate)
|
|
|
existMap[tmp] = exist
|
|
|
- deleteMap[tmp] = struct{}{}
|
|
|
}
|
|
|
for _, v := range dataList {
|
|
|
dataTime, e := time.ParseInLocation(utils.FormatDate, v.DataTime, time.Local)
|
|
@@ -501,65 +507,52 @@ func AddOrUpdateEdbDataCalculateWithOpType(edbCode string, dataList []*models.Ed
|
|
|
return
|
|
|
}
|
|
|
if oldObj, ok := existMap[v.DataTime]; !ok {
|
|
|
- if len(addList) >0 && v.OpType == "delete" {
|
|
|
- err = mgodb.InsertEdbCalculateDataBatch(addList)
|
|
|
- if err != nil {
|
|
|
- err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
|
|
|
- return
|
|
|
- }
|
|
|
- addList = make([]interface{}, 0)
|
|
|
- continue
|
|
|
- }
|
|
|
if v.OpType == "insert" || v.OpType == "update" {
|
|
|
tmp := &mgodb.EdbDataBase{
|
|
|
- EdbInfoId: 0,
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
EdbCode: v.EdbCode,
|
|
|
DataTime: dataTime,
|
|
|
Value: val,
|
|
|
Status: v.Status,
|
|
|
- CreateTime: time.Now(),
|
|
|
- ModifyTime: time.Now(),
|
|
|
+ CreateTime: v.CreateTime,
|
|
|
+ ModifyTime: v.ModifyTime,
|
|
|
DataTimestamp: v.DataTimestamp,
|
|
|
}
|
|
|
addList = append(addList, tmp)
|
|
|
+ if len(addList) >500 {
|
|
|
+ err = mgodb.InsertEdbCalculateDataBatch(addList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("批量新增指标数据失败 error, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ addList = make([]interface{}, 0)
|
|
|
+ continue
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
if v.OpType != "delete" {
|
|
|
- if val != oldObj.Value {
|
|
|
- err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val)
|
|
|
+ if v.ModifyTime.After(oldObj.ModifyTime) {
|
|
|
+ err = mgodb.ModifyValueEdbCalculateDataValue(oldObj.EdbDataId, val, v.ModifyTime)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("更新指标数据出错 error, %v", err)
|
|
|
return
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- // 删除数据
|
|
|
- err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDate(v.EdbCode, v.DataTime)
|
|
|
- if err != nil {
|
|
|
- err = fmt.Errorf("删除指标数据出错 error, %v", err)
|
|
|
- return
|
|
|
- }
|
|
|
+ } else if v.OpType == "delete" {
|
|
|
+ removeDateList = append(removeDateList, dataTime)
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
//遍历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.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbCode, removeDateList)
|
|
|
- // if err != nil {
|
|
|
- // err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
- // return
|
|
|
- // }
|
|
|
- // }
|
|
|
+ {
|
|
|
+ removeNum := len(removeDateList)
|
|
|
+ if removeNum > 0 {
|
|
|
+ err = mgodb.DeleteEdbCalculateDataByEdbInfoIdAndDateList(edbInfoId, removeDateList)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("删除多余日期失败,error, %v", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if len(addList) > 0 {
|
|
|
err = mgodb.InsertEdbCalculateDataBatch(addList)
|