From 3495965b99dfcbf191eefb8294a8de05bedc160a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 04 九月 2026 13:40:34 +0800
Subject: [PATCH] feat(mes): 新增批量查询方法并优化IPQC/IQC导出功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java
index 0273c75..86d79a9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/rqc/MesQcRqcServiceImpl.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.service.qc.rqc;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -21,6 +22,9 @@
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
import cn.iocoder.yudao.module.mes.service.wm.returnissue.MesWmReturnIssueLineService;
import cn.iocoder.yudao.module.mes.service.wm.returnsales.MesWmReturnSalesLineService;
+import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO;
+import cn.iocoder.yudao.module.mes.service.qc.ncr.MesQcNcrService;
+import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
@@ -39,7 +43,7 @@
/**
* MES 閫�璐ф楠屽崟锛圧QC锛� Service 瀹炵幇绫�
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Service
@Validated
@@ -77,14 +81,30 @@
@Resource
private AdminUserApi adminUserApi;
+ @Resource
+ @Lazy
+ private MesQcNcrService ncrService;
+
@Override
@Transactional(rollbackFor = Exception.class)
public Long createRqc(MesQcRqcSaveReqVO createReqVO) {
// 1.1 鏍¢獙鏁版嵁
validateRqcSaveData(createReqVO);
- // 1.2 鏍规嵁鐗╂枡 + 妫�楠岀被鍨嬭嚜鍔ㄥ尮閰嶆ā鏉�
- MesQcTemplateItemDO templateItem = templateItemService.getRequiredTemplateByItemIdAndType(
- createReqVO.getItemId(), createReqVO.getType());
+ // 1.2 鏍规嵁鐗╂枡 + RQC 妫�娴嬬绫绘煡鎵惧彲鐢ㄨ川妫�鏂规锛堟敮鎸佸墠绔樉寮忔寚瀹氾級
+ List<MesQcTemplateItemDO> templateItems = templateItemService.getTemplateItemList(
+ createReqVO.getItemId(), MesQcTypeEnum.RQC.getType(), null, null);
+ if (CollUtil.isEmpty(templateItems)) {
+ throw exception(QC_NO_TEMPLATE);
+ }
+ MesQcTemplateItemDO templateItem = templateItems.get(0);
+ if (createReqVO.getTemplateId() != null) {
+ templateItem = templateItems.stream()
+ .filter(available -> Objects.equals(available.getTemplateId(), createReqVO.getTemplateId()))
+ .findFirst().orElse(null);
+ if (templateItem == null) {
+ throw exception(QC_NO_TEMPLATE); // 鎸囧畾浜嗘柟妗堜絾涓嶅湪鍖归厤鍒楄〃涓紝鎷掔粷
+ }
+ }
Long templateId = templateItem.getTemplateId();
// 1.3 鑾峰彇鏉ユ簮鍗曟嵁缂栧彿
String sourceDocCode = validateAndGetSourceDocCode(
@@ -149,11 +169,37 @@
MesQcRqcDO updateObj = new MesQcRqcDO().setId(id).setStatus(MesQcStatusEnum.FINISHED.getStatus());
rqcMapper.updateById(updateObj);
- // 3. 鍥炲啓鏉ユ簮鍗曟嵁
+ // 3. 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR
+ generateNcrIfNeeded(rqc);
+
+ // 4. 鍥炲啓鏉ユ簮鍗曟嵁
writeBackSourceDoc(rqc);
}
/**
+ * 涓嶅悎鏍兼椂鑷姩鍒涘缓 NCR锛堜笉鍚堟牸鍝佸鐞嗗崟锛�
+ *
+ * @param rqc 閫�璐ф楠屽崟
+ */
+ private void generateNcrIfNeeded(MesQcRqcDO rqc) {
+ BigDecimal unqualifiedQty = rqc.getUnqualifiedQuantity();
+ if (unqualifiedQty == null || unqualifiedQty.compareTo(BigDecimal.ZERO) <= 0) {
+ return;
+ }
+ String ncrCode = "NCR" + java.time.LocalDateTime.now()
+ .format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+ MesQcNcrSaveReqVO saveReqVO = new MesQcNcrSaveReqVO();
+ saveReqVO.setCode(ncrCode);
+ saveReqVO.setName("涓嶅悎鏍煎搧澶勭悊鍗�");
+ saveReqVO.setQcType(MesQcTypeEnum.RQC.getType());
+ saveReqVO.setQcId(rqc.getId());
+ saveReqVO.setItemId(rqc.getItemId());
+ saveReqVO.setUnqualifiedQuantity(unqualifiedQty);
+ saveReqVO.setDefectDescription("鐢遍��璐ф楠�(" + rqc.getCode() + ")鑷姩鐢熸垚");
+ ncrService.createNcr(saveReqVO);
+ }
+
+ /**
* 鍥炲啓鏉ユ簮鍗曟嵁锛圧QC 瀹屾垚鍚庯級
*
* <p>鏍规嵁 sourceDocType 鍒嗗彂锛�
--
Gitblit v1.9.3