修复更新库存*内装数

This commit is contained in:
zjf committed 2025-08-12 00:22:29 +08:00
1 parent 7c7c55d90e
commit f105a19caf
1 file changed
+25 -5
@@ -107,6 +107,10 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
List<SmErpInventoryRecordsItemEntity> cgPlanItemEntities = BeanUtils.toBean(items, SmErpInventoryRecordsItemEntity.class);
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
Set<Long> units = cgPlanItemEntities.stream().map(s -> s.getUnitId()).collect(Collectors.toSet());
List<SmErpUnitEntity> smErpUnitEntities = smErpUnitMapper.selectList(new LambdaQueryWrapper<SmErpUnitEntity>().in(SmErpUnitEntity::getId, units));
Map<Long, SmErpUnitEntity> unitMap = smErpUnitEntities.stream().collect(Collectors.toMap(SmErpUnitEntity::getId, unit -> unit));
for (SmErpInventoryRecordsItemEntity cgPlanItemEntity : cgPlanItemEntities) {
cgPlanItemEntity.setInventoryId(smErpCgDdEntity.getId());
cgPlanItemEntity.setDeptId(deptId);
@@ -115,10 +119,11 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Double quantity = cgPlanItemEntity.getQuantity();
String orderType = smErpCgDdEntity.getOrderType();
cgPlanItemEntity.setOrderType(orderType);
Integer packageNum = unitMap.get(cgPlanItemEntity.getUnitId()).getPackageNum();
if (orderType.equals(OrderTypeEnum.RK.getType())){
updateStockDTO.setIncrCount(quantity);
updateStockDTO.setIncrCount(packageNum*quantity);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
updateStockDTO.setIncrCount(-quantity);
updateStockDTO.setIncrCount(-packageNum*quantity);
}else if (orderType.equals(OrderTypeEnum.No.getType())){
//无需更新库存
}else {
@@ -460,6 +465,9 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
List<InventoryRecordEditItemDTO> items = inventoryRecordEditDTO.getItems();
List<UpdateStockDTO> updateStockDTOS = new ArrayList<>();
List<SmErpInventoryRecordsItemEntity> smErpInventoryRecordsItemEntityList = new ArrayList<>();
Set<Long> units = items.stream().map(s -> s.getUnitId()).collect(Collectors.toSet());
List<SmErpUnitEntity> smErpUnitEntities = smErpUnitMapper.selectList(new LambdaQueryWrapper<SmErpUnitEntity>().in(SmErpUnitEntity::getId, units));
Map<Long, SmErpUnitEntity> unitMap = smErpUnitEntities.stream().collect(Collectors.toMap(SmErpUnitEntity::getId, unit -> unit));
for (InventoryRecordEditItemDTO item : items){
SmErpInventoryRecordsItemEntity smErpInventoryRecordsItemEntity = new SmErpInventoryRecordsItemEntity();
@@ -470,10 +478,11 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
Double quantity = item.getQuantity();
String orderType = item.getOrderType();
smErpInventoryRecordsItemEntity.setOrderType(orderType);
Integer packageNum = unitMap.get(item.getUnitId()).getPackageNum();
if (orderType.equals(OrderTypeEnum.RK.getType())){
updateStockDTO.setIncrCount(quantity);
updateStockDTO.setIncrCount(packageNum*quantity);
}else if (orderType.equals(OrderTypeEnum.CK.getType())){
updateStockDTO.setIncrCount(-quantity);
updateStockDTO.setIncrCount(packageNum*-quantity);
}else {
throw new RuntimeException("订单类型错误");
}
@@ -499,11 +508,22 @@ public class SmErpInventoryRecordsServiceImpl extends ServiceImpl<SmErpInventory
List<SmErpInventoryRecordsItemEntity> dataBaseSmErpInventoryRecordsItemEntityList = smErpInventoryRecordsItemMapper
.selectList(new LambdaQueryWrapper<SmErpInventoryRecordsItemEntity>().eq(SmErpInventoryRecordsItemEntity::getInventoryId, inventoryRecordEditDTO.getId()));
Set<Long> unitsRemoved = dataBaseSmErpInventoryRecordsItemEntityList.stream().map(s -> s.getUnitId()).collect(Collectors.toSet());
List<SmErpUnitEntity> smErpUnitEntitiesRemoved = smErpUnitMapper.selectList(new LambdaQueryWrapper<SmErpUnitEntity>().in(SmErpUnitEntity::getId, unitsRemoved));
Map<Long, SmErpUnitEntity> unitMapRemoved = smErpUnitEntitiesRemoved.stream().collect(Collectors.toMap(SmErpUnitEntity::getId, unit -> unit));
//这部分是数据库原本添加的库存数据,需要全部减掉,重新添加更新的库存数据进去
dataBaseSmErpInventoryRecordsItemEntityList.forEach(item -> {
Integer packageNum = unitMapRemoved.get(item.getUnitId()).getPackageNum();
UpdateStockDTO updateStockDTO = new UpdateStockDTO();
updateStockDTO.setId(item.getErpSpuId());
updateStockDTO.setIncrCount(-item.getQuantity());
if (item.getOrderType().equals(OrderTypeEnum.RK.getType())){
updateStockDTO.setIncrCount(-packageNum *item.getQuantity());
}
if (item.getOrderType().equals(OrderTypeEnum.CK.getType())){
updateStockDTO.setIncrCount(packageNum *item.getQuantity());
}
updateStockDTOS.add(updateStockDTO);
});