修复工厂数据统计查询和计算问题

- 扩展查询条件,增加数据类型筛选
- 优化数据损坏数量的计算逻辑,处理空值情况
- 保证统计服务的准确性和健壮性
This commit is contained in:
furongxin 2024-10-13 21:29:56 +08:00
parent 3aa9fec844
commit 7e70308c23
2 changed files with 8 additions and 5 deletions

View File

@ -31,11 +31,12 @@ public interface FactoryDataMapper extends BaseMapperX<FactoryDataDO> {
.eqIfPresent(FactoryDataDO::getDataType, type));
}
default List<FactoryDataDO> selectListByFactoryAndDate(Long factoryId, String date) {
default List<FactoryDataDO> selectListByFactoryAndDate(Long factoryId, String date, Integer type) {
return selectList(new LambdaQueryWrapperX<FactoryDataDO>()
.eq(FactoryDataDO::getFactoryId, factoryId)
.eq(FactoryDataDO::getDate, date));
.eq(FactoryDataDO::getDate, date)
.eq(FactoryDataDO::getDataType, type));
}
FactoryDataTotalVO selectDataSum(@Param("factoryId") Long factoryId, @Param("date") LocalDate[] date);

View File

@ -76,7 +76,9 @@ public class FactoryDataServiceImpl implements FactoryDataService {
dataSizeService.updateData(updateReqVO);
//校验 出入库统计数据是否存在
List<FactoryDataDO> factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(), updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
List<FactoryDataDO> factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(),
updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")),
updateReqVO.getType());
if (factoryDataDOS != null && !factoryDataDOS.isEmpty()) {
// 更新
@ -87,13 +89,13 @@ public class FactoryDataServiceImpl implements FactoryDataService {
//出库数据
case 1:
data.setTotalNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getOutNum).sum());
data.setDamageNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getOutDamageNum).sum());
data.setDamageNum(updateReqVO.getItems().stream().mapToInt(date -> Optional.ofNullable(date.getOutDamageNum()).orElse(0)).sum());
break;
//入库数据
case 2:
data.setTotalNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getInNum).sum());
data.setDamageNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getInDamageNum).sum());
data.setDamageNum(updateReqVO.getItems().stream().mapToInt(date -> Optional.ofNullable(date.getInDamageNum()).orElse(0)).sum());
}
});