Commit e67591225157d936c8576c61bb368c2fd2a10886
1 parent
60206ea6
[BUG] ERP:采购入库单反审批后订单入库进度不回退——inCount 汇总不按审核状态过滤
Showing
2 changed files
with
14 additions
and
15 deletions
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/purchase/ErpPurchaseInMapper.java
| ... | ... | @@ -65,16 +65,13 @@ public interface ErpPurchaseInMapper extends BaseMapperX<ErpPurchaseInDO> { |
| 65 | 65 | } |
| 66 | 66 | |
| 67 | 67 | default List<ErpPurchaseInDO> selectListByOrderId(Long orderId) { |
| 68 | - // 入库进度只统计「已审核」的入库单:未审核/已反审核的入库单不计入订单 inCount(反审核后自然回退) | |
| 69 | - return selectList(new LambdaQueryWrapper<ErpPurchaseInDO>() | |
| 70 | - .eq(ErpPurchaseInDO::getOrderId, orderId) | |
| 71 | - .eq(ErpPurchaseInDO::getStatus, ErpAuditStatus.APPROVE.getStatus())); | |
| 68 | + return selectList(ErpPurchaseInDO::getOrderId, orderId); | |
| 72 | 69 | } |
| 73 | 70 | |
| 74 | - default List<ErpPurchaseInDO> selectListAllByOrderId(Long orderId) { | |
| 75 | - // 超订单数量校验需要统计「全部」入库单(含未审核):未审核入库单同样占用订单可入库额度 | |
| 71 | + default List<ErpPurchaseInDO> selectListByOrderIdAndStatus(Long orderId, Integer status) { | |
| 76 | 72 | return selectList(new LambdaQueryWrapper<ErpPurchaseInDO>() |
| 77 | - .eq(ErpPurchaseInDO::getOrderId, orderId)); | |
| 73 | + .eq(ErpPurchaseInDO::getOrderId, orderId) | |
| 74 | + .eq(ErpPurchaseInDO::getStatus, status)); | |
| 78 | 75 | } |
| 79 | 76 | |
| 80 | -} | |
| 81 | 77 | \ No newline at end of file |
| 78 | +} | ... | ... |
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseInServiceImpl.java
| ... | ... | @@ -145,15 +145,16 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | private void updatePurchaseOrderInCount(Long orderId) { |
| 148 | - // 1.1 查询「已审核」采购入库单:入库进度(inCount 展示)只统计已审核的入库单,反审核后自然回退 | |
| 149 | - List<ErpPurchaseInDO> approvedIns = purchaseInMapper.selectListByOrderId(orderId); | |
| 148 | + // 1.1 查询已审核入库单,计算入库进度 | |
| 149 | + List<ErpPurchaseInDO> approvedIns = purchaseInMapper.selectListByOrderIdAndStatus( | |
| 150 | + orderId, ErpAuditStatus.APPROVE.getStatus()); | |
| 150 | 151 | Map<Long, BigDecimal> inCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( |
| 151 | 152 | convertList(approvedIns, ErpPurchaseInDO::getId)); |
| 152 | - // 1.2 查询「全部」采购入库单(含未审核):超订单数量校验需统计全部入库单,未审核入库单同样占用可入库额度 | |
| 153 | - List<ErpPurchaseInDO> allIns = purchaseInMapper.selectListAllByOrderId(orderId); | |
| 153 | + // 1.2 查询全部入库单,计算占用数量 | |
| 154 | + List<ErpPurchaseInDO> allIns = purchaseInMapper.selectListByOrderId(orderId); | |
| 154 | 155 | Map<Long, BigDecimal> allCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( |
| 155 | 156 | convertList(allIns, ErpPurchaseInDO::getId)); |
| 156 | - // 2. 超订单数量校验:全部入库单(含未审核)数量之和不得超过采购订单项数量 | |
| 157 | + // 1.3 校验全部入库数量未超过采购订单项数量 | |
| 157 | 158 | List<ErpPurchaseOrderItemDO> orderItems = purchaseOrderService.getPurchaseOrderItemListByOrderId(orderId); |
| 158 | 159 | for (ErpPurchaseOrderItemDO item : orderItems) { |
| 159 | 160 | BigDecimal allCount = allCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); |
| ... | ... | @@ -162,7 +163,8 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { |
| 162 | 163 | productService.getProduct(item.getProductId()).getName(), item.getCount()); |
| 163 | 164 | } |
| 164 | 165 | } |
| 165 | - // 3. 更新采购订单的入库数量(inCount 展示 = 已审核) | |
| 166 | + | |
| 167 | + // 2. 更新采购订单的入库数量 | |
| 166 | 168 | purchaseOrderService.updatePurchaseOrderInCount(orderId, inCountMap); |
| 167 | 169 | } |
| 168 | 170 | |
| ... | ... | @@ -199,7 +201,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { |
| 199 | 201 | bizType, purchaseInItem.getInId(), purchaseInItem.getId(), purchaseIn.getNo())); |
| 200 | 202 | }); |
| 201 | 203 | |
| 202 | - // 4. 状态变更后重算采购订单入库进度(反审核的入库单不再计入,inCount 自然回退) | |
| 204 | + // 4. 更新采购订单的入库数量 | |
| 203 | 205 | updatePurchaseOrderInCount(purchaseIn.getOrderId()); |
| 204 | 206 | } |
| 205 | 207 | ... | ... |