| | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void stockReturnSales(Long id) { |
| | | // 1.1 校验存在 + 待上架状态 |
| | | MesWmReturnSalesDO returnSales = validateReturnSalesExists(id); |
| | | MesWmReturnSalesDO returnSales = returnSalesMapper.selectByIdForUpdate(id); |
| | | if (returnSales == null) throw exception(WM_RETURN_SALES_NOT_EXISTS); |
| | | if (ObjUtil.notEqual(MesWmReturnSalesStatusEnum.APPROVED.getStatus(), returnSales.getStatus())) { |
| | | throw exception(WM_RETURN_SALES_STATUS_NOT_APPROVED); |
| | | } |
| | |
| | | allDetails, MesWmReturnSalesDetailDO::getLineId); |
| | | // 检查每行的明细数量 |
| | | for (MesWmReturnSalesLineDO line : lines) { |
| | | if (line.getNcrDispositionId() != null && Objects.equals(line.getQualityStatus(), MesWmQualityStatusEnum.FAIL.getStatus())) { |
| | | if (!detailMap.getOrDefault(line.getId(), Collections.emptyList()).isEmpty()) { |
| | | throw exception(WM_RETURN_SALES_LINE_NOT_QUALIFIED); |
| | | } |
| | | continue; // 不合格数量由 NCR 独立处理,不在原退货单再次入库 |
| | | } |
| | | if (ObjUtil.notEqual(line.getQualityStatus(), MesWmQualityStatusEnum.PASS.getStatus())) { |
| | | throw exception(WM_RETURN_SALES_LINE_NOT_QUALIFIED); |
| | | } |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void cancelReturnSales(Long id) { |
| | | // 校验存在 |
| | | MesWmReturnSalesDO returnSales = validateReturnSalesExists(id); |
| | | MesWmReturnSalesDO returnSales = returnSalesMapper.selectByIdForUpdate(id); |
| | | if (returnSales == null) throw exception(WM_RETURN_SALES_NOT_EXISTS); |
| | | // 已完成和已取消不允许取消 |
| | | if (ObjectUtils.equalsAny(returnSales.getStatus(), |
| | | MesWmReturnSalesStatusEnum.FINISHED.getStatus(), |
| | |
| | | public Boolean checkReturnSalesQuantity(Long id) { |
| | | List<MesWmReturnSalesLineDO> lines = returnSalesLineService.getReturnSalesLineListByReturnId(id); |
| | | for (MesWmReturnSalesLineDO line : lines) { |
| | | if (line.getNcrDispositionId() != null && Objects.equals(line.getQualityStatus(), MesWmQualityStatusEnum.FAIL.getStatus())) { |
| | | continue; |
| | | } |
| | | List<MesWmReturnSalesDetailDO> details = returnSalesDetailService.getReturnSalesDetailListByLineId(line.getId()); |
| | | BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, |
| | | MesWmReturnSalesDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); |