| | |
| | | } |
| | | // 1.2 检查每个行的明细数量是否完成上架 |
| | | List<MesWmReturnSalesLineDO> lines = returnSalesLineService.getReturnSalesLineListByReturnId(id); |
| | | if (CollUtil.isEmpty(lines)) { |
| | | throw exception(WM_RETURN_SALES_NO_LINE); |
| | | } |
| | | if (CollUtil.isNotEmpty(lines)) { |
| | | // 批量查询所有明细 |
| | | List<MesWmReturnSalesDetailDO> allDetails = returnSalesDetailService.getReturnSalesDetailListByReturnId(id); |
| | |
| | | allDetails, MesWmReturnSalesDetailDO::getLineId); |
| | | // 检查每行的明细数量 |
| | | for (MesWmReturnSalesLineDO line : lines) { |
| | | if (ObjUtil.notEqual(line.getQualityStatus(), MesWmQualityStatusEnum.PASS.getStatus())) { |
| | | throw exception(WM_RETURN_SALES_LINE_NOT_QUALIFIED); |
| | | } |
| | | List<MesWmReturnSalesDetailDO> details = detailMap.getOrDefault(line.getId(), Collections.emptyList()); |
| | | BigDecimal totalDetailQuantity = CollectionUtils.getSumValue(details, |
| | | MesWmReturnSalesDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |
| | | // 对比行数量与明细总数量,不满足直接抛出 |
| | | if (line.getQuantity().compareTo(totalDetailQuantity) > 0) { |
| | | if (line.getQuantity() == null || line.getQuantity().compareTo(totalDetailQuantity) != 0) { |
| | | MesMdmItemDO item = mdmItemService.validateItemExistsAndEnable(line.getItemId()); |
| | | throw exception(WM_RETURN_SALES_DETAIL_QUANTITY_MISMATCH, |
| | | item.getCode() + " " + item.getName() + " 未完成上架"); |