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,16 +65,13 @@ public interface ErpPurchaseInMapper extends BaseMapperX<ErpPurchaseInDO> { | ||
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | default List<ErpPurchaseInDO> selectListByOrderId(Long orderId) { | 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 | return selectList(new LambdaQueryWrapper<ErpPurchaseInDO>() | 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 | \ No newline at end of file | 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,15 +145,16 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { | ||
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | private void updatePurchaseOrderInCount(Long orderId) { | 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 | Map<Long, BigDecimal> inCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( | 151 | Map<Long, BigDecimal> inCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( |
| 151 | convertList(approvedIns, ErpPurchaseInDO::getId)); | 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 | Map<Long, BigDecimal> allCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( | 155 | Map<Long, BigDecimal> allCountMap = purchaseInItemMapper.selectOrderItemCountSumMapByInIds( |
| 155 | convertList(allIns, ErpPurchaseInDO::getId)); | 156 | convertList(allIns, ErpPurchaseInDO::getId)); |
| 156 | - // 2. 超订单数量校验:全部入库单(含未审核)数量之和不得超过采购订单项数量 | 157 | + // 1.3 校验全部入库数量未超过采购订单项数量 |
| 157 | List<ErpPurchaseOrderItemDO> orderItems = purchaseOrderService.getPurchaseOrderItemListByOrderId(orderId); | 158 | List<ErpPurchaseOrderItemDO> orderItems = purchaseOrderService.getPurchaseOrderItemListByOrderId(orderId); |
| 158 | for (ErpPurchaseOrderItemDO item : orderItems) { | 159 | for (ErpPurchaseOrderItemDO item : orderItems) { |
| 159 | BigDecimal allCount = allCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); | 160 | BigDecimal allCount = allCountMap.getOrDefault(item.getId(), BigDecimal.ZERO); |
| @@ -162,7 +163,8 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { | @@ -162,7 +163,8 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { | ||
| 162 | productService.getProduct(item.getProductId()).getName(), item.getCount()); | 163 | productService.getProduct(item.getProductId()).getName(), item.getCount()); |
| 163 | } | 164 | } |
| 164 | } | 165 | } |
| 165 | - // 3. 更新采购订单的入库数量(inCount 展示 = 已审核) | 166 | + |
| 167 | + // 2. 更新采购订单的入库数量 | ||
| 166 | purchaseOrderService.updatePurchaseOrderInCount(orderId, inCountMap); | 168 | purchaseOrderService.updatePurchaseOrderInCount(orderId, inCountMap); |
| 167 | } | 169 | } |
| 168 | 170 | ||
| @@ -199,7 +201,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { | @@ -199,7 +201,7 @@ public class ErpPurchaseInServiceImpl implements ErpPurchaseInService { | ||
| 199 | bizType, purchaseInItem.getInId(), purchaseInItem.getId(), purchaseIn.getNo())); | 201 | bizType, purchaseInItem.getInId(), purchaseInItem.getId(), purchaseIn.getNo())); |
| 200 | }); | 202 | }); |
| 201 | 203 | ||
| 202 | - // 4. 状态变更后重算采购订单入库进度(反审核的入库单不再计入,inCount 自然回退) | 204 | + // 4. 更新采购订单的入库数量 |
| 203 | updatePurchaseOrderInCount(purchaseIn.getOrderId()); | 205 | updatePurchaseOrderInCount(purchaseIn.getOrderId()); |
| 204 | } | 206 | } |
| 205 | 207 |