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

- 扩展查询条件,增加数据类型筛选
- 优化数据损坏数量的计算逻辑,处理空值情况
- 保证统计服务的准确性和健壮性
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)); .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>() return selectList(new LambdaQueryWrapperX<FactoryDataDO>()
.eq(FactoryDataDO::getFactoryId, factoryId) .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); FactoryDataTotalVO selectDataSum(@Param("factoryId") Long factoryId, @Param("date") LocalDate[] date);

View File

@ -76,7 +76,9 @@ public class FactoryDataServiceImpl implements FactoryDataService {
dataSizeService.updateData(updateReqVO); 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()) { if (factoryDataDOS != null && !factoryDataDOS.isEmpty()) {
// 更新 // 更新
@ -87,13 +89,13 @@ public class FactoryDataServiceImpl implements FactoryDataService {
//出库数据 //出库数据
case 1: case 1:
data.setTotalNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getOutNum).sum()); 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; break;
//入库数据 //入库数据
case 2: case 2:
data.setTotalNum(updateReqVO.getItems().stream().mapToInt(FactoryDataSizeSaveReqVO::getInNum).sum()); 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());
} }
}); });