| | |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi; |
| | | import cn.iocoder.yudao.module.aftersales.api.AfterSaleTicketApi; |
| | | import cn.iocoder.yudao.module.aftersales.api.dto.AfterSaleWarehouseReturnStageReqDTO; |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.exception.ServiceException; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLinePageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.returnsales.vo.line.MesWmReturnSalesLineSaveReqVO; |
| | |
| | | @Service |
| | | @Validated |
| | | public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineService { |
| | | |
| | | @Resource |
| | | private AfterSaleTicketApi afterSaleTicketApi; |
| | | |
| | | @Resource |
| | | private MesWmReturnSalesLineMapper returnSalesLineMapper; |
| | |
| | | /** |
| | | * 校验物料批次管理 |
| | | * |
| | | * @param returnId 退货单ID |
| | | * @param returnSales 退货单 |
| | | * @param itemId 物料ID |
| | | * @param batchId 批次ID |
| | | */ |
| | |
| | | return batchService.validateBatchExists(batchId, itemId); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public void bindRqcForFinish(Long lineId, Long returnId, Long rqcId, Long itemId, BigDecimal checkQuantity) { |
| | | MesWmReturnSalesLineDO line = returnSalesLineMapper.selectOne(new LambdaQueryWrapperX<MesWmReturnSalesLineDO>() |
| | | .eq(MesWmReturnSalesLineDO::getId, lineId).last("FOR UPDATE")); |
| | | if (line == null || !Objects.equals(line.getReturnId(), returnId) |
| | | || !Objects.equals(line.getItemId(), itemId) |
| | | || !Objects.equals(line.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus()) |
| | | || (line.getRqcId() != null && !Objects.equals(line.getRqcId(), rqcId)) |
| | | || line.getQuantity() == null || checkQuantity == null |
| | | || line.getQuantity().compareTo(checkQuantity) != 0) { |
| | | throw new ServiceException(400, "退货检验须对应唯一待检退货行,物料和检验数量必须与退货行一致"); |
| | | } |
| | | returnSalesLineMapper.updateById(new MesWmReturnSalesLineDO().setId(lineId).setRqcId(rqcId)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | line -> Objects.equals(line.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus())); |
| | | if (allInspected) { |
| | | returnSalesService.updateReturnSalesStatus(sourceDocId, MesWmReturnSalesStatusEnum.APPROVING.getStatus()); |
| | | MesWmReturnSalesDO returnSales = returnSalesService.getReturnSales(sourceDocId); |
| | | if (returnSales != null && returnSales.getSaleOrderId() != null) { |
| | | afterSaleTicketApi.onWarehouseReturnQualityFinished(new AfterSaleWarehouseReturnStageReqDTO() |
| | | .setSaleOrderId(returnSales.getSaleOrderId()) |
| | | .setReturnSalesId(returnSales.getId()) |
| | | .setReturnSalesCode(returnSales.getCode()) |
| | | .setQualityResult("全部待检行已完成检验")); |
| | | } |
| | | } |
| | | } |
| | | } |