From 4dc00a72e6229e7fdcd6055132cfb4128da1774f Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 14:53:40 +0800
Subject: [PATCH] 宁夏万通需求:生产领料取消三个字段必填;来料检验质检方案与产品物料解绑
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueSaveReqVO.java | 3 -
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 2 +
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java | 34 ++++++++++------
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java | 12 +++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateServiceImpl.java | 10 +++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateService.java | 8 ++++
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java | 20 +++++-----
7 files changed, 63 insertions(+), 26 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java
index cdd5397..e4f02e4 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/template/MesQcTemplateItemController.java
@@ -28,6 +28,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
@@ -91,13 +92,22 @@
}
@GetMapping("/list-by-item-and-type")
- @Operation(summary = "鏍规嵁鐗╂枡鎴栧伐鍗�/浠诲姟鍜屾娴嬬绫昏幏鍙栧彲鐢ㄨ川妫�鏂规")
+ @Operation(summary = "鏍规嵁鐗╂枡鎴栧伐鍗�/浠诲姟鍜屾娴嬬绫昏幏鍙栧彲鐢ㄨ川妫�鏂规锛堟湭鎸囧畾鐗╂枡/宸ュ崟/浠诲姟鏃惰繑鍥炶妫�娴嬬绫讳笅鍏ㄩ儴鍚敤鏂规锛�")
@PreAuthorize("@ss.hasPermission('mes:qc-template:query')")
public CommonResult<List<MesQcTemplateItemOptionRespVO>> getTemplateItemOptionList(
@RequestParam(value = "qcType", required = false) Integer qcType,
@RequestParam(value = "itemId", required = false) Long itemId,
@RequestParam(value = "workOrderId", required = false) Long workOrderId,
@RequestParam(value = "taskId", required = false) Long taskId) {
+ // 鏈寚瀹氱墿鏂�/宸ュ崟/浠诲姟鏃讹紝鎸夋娴嬬绫昏繑鍥炲叏閮ㄥ惎鐢ㄧ殑璐ㄦ鏂规锛堜笉闄愬埗浜у搧鐗╂枡鍏宠仈锛�
+ if (itemId == null && workOrderId == null && taskId == null && qcType != null) {
+ List<MesQcTemplateItemOptionRespVO> options = templateService.getEnabledTemplateListByType(qcType)
+ .stream().map(template -> new MesQcTemplateItemOptionRespVO()
+ .setTemplateId(template.getId()).setTemplateCode(template.getCode())
+ .setTemplateName(template.getName()))
+ .collect(Collectors.toList());
+ return success(options);
+ }
List<MesQcTemplateItemDO> list = templateItemService.getTemplateItemList(
itemId, qcType, workOrderId, taskId);
if (CollUtil.isEmpty(list)) {
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueSaveReqVO.java
index b84e0ea..2918ba7 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueSaveReqVO.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueSaveReqVO.java
@@ -22,8 +22,7 @@
@NotBlank(message = "棰嗘枡鍗曞悕绉颁笉鑳戒负绌�")
private String name;
- @Schema(description = "鐢熶骇浠诲姟 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
- @NotNull(message = "鐢熶骇浠诲姟 ID 涓嶈兘涓虹┖")
+ @Schema(description = "鐢熶骇浠诲姟 ID", example = "1")
private Long taskId;
@Schema(description = "鐢熶骇宸ュ崟 ID", example = "1")
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
index d93fca2..44b3741 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
@@ -393,6 +393,8 @@
ErrorCode QC_NO_TEMPLATE_FOR_ITEM = new ErrorCode(1_040_603_008, "鐗╂枡銆恵}銆戞湭閰嶇疆 IQC 妫�娴嬫ā鏉匡紝璇峰厛鍦ㄨ川閲忕鐞嗕腑閰嶇疆");
ErrorCode QC_IQC_SOURCE_DOC_PARAMS_MISSING = new ErrorCode(1_040_603_006, "鏉ユ簮鍗曟嵁绫诲瀷闈炵┖鏃讹紝鏉ユ簮鍗曟嵁 ID 鍜屾潵婧愬崟鎹 ID 涓嶈兘涓虹┖");
ErrorCode QC_IQC_CHECK_RESULT_EMPTY = new ErrorCode(1_040_603_007, "瀹屾垚妫�楠屽崟鍓嶏紝妫�娴嬬粨鏋滃繀椤诲~鍐�");
+ ErrorCode QC_IQC_TEMPLATE_IS_DISABLE = new ErrorCode(1_040_603_009, "鎵�閫夎川妫�鏂规銆恵}銆戝凡绂佺敤锛岃閲嶆柊閫夋嫨宸插惎鐢ㄧ殑璐ㄦ鏂规");
+ ErrorCode QC_IQC_TEMPLATE_TYPE_NOT_MATCH = new ErrorCode(1_040_603_010, "鎵�閫夎川妫�鏂规銆恵}銆戠殑妫�娴嬬绫讳笉鍖呭惈鏉ユ枡妫�楠岋紝璇烽噸鏂伴�夋嫨妫�娴嬬绫诲寘鍚潵鏂欐楠岀殑璐ㄦ鏂规");
// ========== MES 璐ㄩ噺绠$悊-鏉ユ枡妫�楠岃锛�1-040-603-100锛� ==========
ErrorCode QC_IQC_LINE_NOT_EXISTS = new ErrorCode(1_040_603_100, "鏉ユ枡妫�楠岃涓嶅瓨鍦�");
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
index 353da9a..1281815 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java
@@ -7,6 +7,7 @@
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.hutool.core.util.ObjectUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo.MesQcIqcSaveReqVO;
@@ -16,6 +17,7 @@
import cn.iocoder.yudao.module.mes.service.qc.imports.MesQcImportHelper;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.arrivalnotice.MesWmArrivalNoticeLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.qc.iqc.MesQcIqcMapper;
@@ -27,6 +29,7 @@
import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService;
import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService;
import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateItemService;
+import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateService;
import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService;
import cn.iocoder.yudao.module.mes.service.wm.outsourcereceipt.MesWmOutsourceReceiptService;
import cn.iocoder.yudao.module.mes.controller.admin.qc.ncr.vo.MesQcNcrSaveReqVO;
@@ -65,6 +68,8 @@
@Resource
private MesQcTemplateItemService templateItemService;
@Resource
+ private MesQcTemplateService templateService;
+ @Resource
private MesQcIqcLineService iqcLineService;
@Resource
private MesQcDefectRecordService defectRecordService;
@@ -101,22 +106,25 @@
// 1.2 鏍¢獙鏉ユ簮鍗曟嵁鍙傛暟锛屽苟楠岃瘉鏁版嵁瀛樺湪
String sourceDocCode = validateAndGetSourceDocCode(
createReqVO.getSourceDocType(), createReqVO.getSourceDocId(), createReqVO.getSourceLineId());
- // 1.3 鏍规嵁浜у搧 + IQC 绫诲瀷鏌ユ壘鍙敤璐ㄦ鏂规锛堟敮鎸佸墠绔樉寮忔寚瀹氾級
- List<MesQcTemplateItemDO> templateItems = templateItemService.getTemplateItemList(
- createReqVO.getItemId(), MesQcTypeEnum.IQC.getType(), null, null);
- if (CollUtil.isEmpty(templateItems)) {
- throw exception(QC_NO_TEMPLATE);
- }
- MesQcTemplateItemDO templateItem = templateItems.get(0);
+ // 1.3 纭畾璐ㄦ鏂规锛氭樉寮忔寚瀹氭椂鏍¢獙鏂规鏈韩鍙敤锛堜笉瑕佹眰涓庝骇鍝佺墿鏂欑粦瀹氾級锛涙湭鎸囧畾鏃舵寜鐗╂枡宸茬粦瀹氭柟妗堝厹搴�
+ Long templateId;
if (createReqVO.getTemplateId() != null) {
- templateItem = templateItems.stream()
- .filter(item -> Objects.equals(item.getTemplateId(), createReqVO.getTemplateId()))
- .findFirst().orElse(null);
- if (templateItem == null) {
- throw exception(QC_NO_TEMPLATE); // 鎸囧畾浜嗘柟妗堜絾涓嶅湪鍖归厤鍒楄〃涓紝鎷掔粷
+ MesQcTemplateDO template = templateService.getTemplate(createReqVO.getTemplateId());
+ if (template == null) {
+ throw new ServiceException(QC_TEMPLATE_NOT_EXISTS.getCode(), StrUtil.format(
+ "鎵�閫夎川妫�鏂规涓嶅瓨鍦紙ID={}锛夛紝鍙兘宸茶鍒犻櫎锛岃鍒锋柊鍚庨噸鏂伴�夋嫨璐ㄦ鏂规", createReqVO.getTemplateId()));
}
+ if (!CommonStatusEnum.isEnable(template.getStatus())) {
+ throw exception(QC_IQC_TEMPLATE_IS_DISABLE, template.getName());
+ }
+ if (!CollUtil.contains(template.getTypes(), MesQcTypeEnum.IQC.getType())) {
+ throw exception(QC_IQC_TEMPLATE_TYPE_NOT_MATCH, template.getName());
+ }
+ templateId = template.getId();
+ } else {
+ templateId = templateItemService.getRequiredTemplateByItemIdAndType(
+ createReqVO.getItemId(), MesQcTypeEnum.IQC.getType()).getTemplateId();
}
- Long templateId = templateItem.getTemplateId();
// 2. 鎻掑叆涓昏〃
MesQcIqcDO iqc = BeanUtils.toBean(createReqVO, MesQcIqcDO.class)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateService.java
index 96adfb7..1a9b3ba 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateService.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateService.java
@@ -90,4 +90,12 @@
*/
MesQcTemplateDO validateTemplateExists(Long id);
+ /**
+ * 鑾峰緱鎸囧畾妫�娴嬬绫荤殑鍚敤璐ㄦ鏂规鍒楄〃锛堟湭鎸囧畾鐗╂枡绛変笂涓嬫枃鏃剁殑涓嬫媺閫夋嫨锛�
+ *
+ * @param qcType 妫�娴嬬绫�
+ * @return 璐ㄦ鏂规鍒楄〃
+ */
+ List<MesQcTemplateDO> getEnabledTemplateListByType(Integer qcType);
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateServiceImpl.java
index 912153b..0a08ba7 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.qc.template.vo.MesQcTemplatePageReqVO;
@@ -17,6 +18,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -119,5 +121,13 @@
return templateMapper.selectByIds(ids);
}
+ @Override
+ public List<MesQcTemplateDO> getEnabledTemplateListByType(Integer qcType) {
+ return templateMapper.selectList().stream()
+ .filter(template -> CommonStatusEnum.isEnable(template.getStatus())
+ && CollUtil.contains(template.getTypes(), qcType))
+ .collect(Collectors.toList());
+ }
+
}
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
index 3164436..0b52b25 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
@@ -91,11 +91,11 @@
validateProductIssueSaveData(createReqVO);
// 2. 浠� task 鑷姩甯﹀叆 workOrderId 鍜� workstationId
- MesProTaskDO task = taskService.validateTaskExists(createReqVO.getTaskId());
- if (createReqVO.getWorkOrderId() == null) {
+ MesProTaskDO task = createReqVO.getTaskId() != null ? taskService.validateTaskExists(createReqVO.getTaskId()) : null;
+ if (task != null && createReqVO.getWorkOrderId() == null) {
createReqVO.setWorkOrderId(task.getWorkOrderId());
}
- if (createReqVO.getWorkstationId() == null) {
+ if (task != null && createReqVO.getWorkstationId() == null) {
createReqVO.setWorkstationId(task.getWorkstationId());
}
@@ -115,11 +115,11 @@
validateProductIssueSaveData(updateReqVO);
// 2. 浠� task 鑷姩甯﹀叆 workOrderId 鍜� workstationId
- MesProTaskDO task = taskService.validateTaskExists(updateReqVO.getTaskId());
- if (updateReqVO.getWorkOrderId() == null) {
+ MesProTaskDO task = updateReqVO.getTaskId() != null ? taskService.validateTaskExists(updateReqVO.getTaskId()) : null;
+ if (task != null && updateReqVO.getWorkOrderId() == null) {
updateReqVO.setWorkOrderId(task.getWorkOrderId());
}
- if (updateReqVO.getWorkstationId() == null) {
+ if (task != null && updateReqVO.getWorkstationId() == null) {
updateReqVO.setWorkstationId(task.getWorkstationId());
}
@@ -398,10 +398,10 @@
*/
private void validateProductIssueSaveData(MesWmProductIssueSaveReqVO reqVO) {
validateCodeUnique(reqVO.getId(), reqVO.getCode());
- // 鏍¢獙 task 瀛樺湪
- MesProTaskDO task = taskService.validateTaskExists(reqVO.getTaskId());
- // 鏍¢獙 task 鍏宠仈鐨勫伐鍗曞凡纭
- Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : task.getWorkOrderId();
+ // 鏍¢獙 task 瀛樺湪锛堢敓浜т换鍔¢潪蹇呭~锛屾湭閫夋椂璺宠繃锛�
+ MesProTaskDO task = reqVO.getTaskId() != null ? taskService.validateTaskExists(reqVO.getTaskId()) : null;
+ // 鏍¢獙鍏宠仈鐨勫伐鍗曞凡纭
+ Long workOrderId = reqVO.getWorkOrderId() != null ? reqVO.getWorkOrderId() : (task != null ? task.getWorkOrderId() : null);
if (workOrderId != null) {
workOrderService.validateWorkOrderConfirmed(workOrderId);
}
--
Gitblit v1.9.3