From f02d0df2f1dfc7a8b775cf50d45375e57628a5ef Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 10 十一月 2026 11:26:22 +0800
Subject: [PATCH] feat(ncr): 完善NCR处置联动逻辑与关闭校验
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java | 32 +++++++++++++++++++++++++++++++-
1 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
index 9381df2..e8663fc 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnsales/MesWmReturnSalesLineServiceImpl.java
@@ -4,7 +4,11 @@
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;
@@ -42,6 +46,9 @@
@Service
@Validated
public class MesWmReturnSalesLineServiceImpl implements MesWmReturnSalesLineService {
+
+ @Resource
+ private AfterSaleTicketApi afterSaleTicketApi;
@Resource
private MesWmReturnSalesLineMapper returnSalesLineMapper;
@@ -185,7 +192,7 @@
/**
* 鏍¢獙鐗╂枡鎵规绠$悊
*
- * @param returnId 閫�璐у崟ID
+ * @param returnSales 閫�璐у崟
* @param itemId 鐗╂枡ID
* @param batchId 鎵规ID
*/
@@ -200,6 +207,21 @@
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
@@ -246,6 +268,14 @@
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("鍏ㄩ儴寰呮琛屽凡瀹屾垚妫�楠�"));
+ }
}
}
}
--
Gitblit v1.9.3