|
|
@ -260,10 +260,21 @@ public class ScreenProjectDataServiceImpl extends BaseServiceImpl<ScreenProjectD |
|
|
|
//库中无数据,范围性删除无意义,只是针对在数据库有历史数据的情况下,保证对同一天进行反
|
|
|
|
//复采集时数不会重复
|
|
|
|
if(!CollectionUtils.isEmpty(meta)){ |
|
|
|
int affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId,dateId); |
|
|
|
while (affectedRows > NumConstant.ZERO) { |
|
|
|
affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId, dateId); |
|
|
|
int count = baseDao.getProjectCount(customerId, dateId); |
|
|
|
if (meta.size() < count) { |
|
|
|
//meta的数据量小于表里的数据量,意味着指定部分数据进行重新抽取,只需要删除指定的项目数据即可
|
|
|
|
List<String> projectIds = meta.stream().map(ScreenProjectDataDTO::getProjectId).collect(Collectors.toList()); |
|
|
|
List<List<String>> projectPartition = ListUtils.partition(projectIds, NumConstant.FIFTY); |
|
|
|
projectPartition.forEach(part -> { |
|
|
|
baseDao.deleteByProjectIds(customerId, part); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
int affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId,dateId); |
|
|
|
while (affectedRows > NumConstant.ZERO) { |
|
|
|
affectedRows = baseDao.deleteByProjectTimeAndCustomerId(customerId, dateId); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<List<ScreenProjectDataDTO>> partition = ListUtils.partition(meta, NumConstant.ONE_HUNDRED); |
|
|
|
partition.forEach(part -> { |
|
|
|
List<ScreenProjectDataEntity> list = ConvertUtils.sourceToTarget(part, ScreenProjectDataEntity.class); |
|
|
|