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/dal/mysql/wm/batch/MesWmBatchMapper.java | 72 +++++++++++++++++++++++++++++++++++
1 files changed, 71 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
index db221d8..36f617d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
@@ -1,11 +1,15 @@
package cn.iocoder.yudao.module.mes.dal.mysql.wm.batch;
+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.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPageReqVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchProcessTraceRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchPurchaseSourceRespVO;
+import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchSalesTargetRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper;
@@ -15,7 +19,7 @@
/**
* 鎵规绠$悊 Mapper
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Mapper
public interface MesWmBatchMapper extends BaseMapperX<MesWmBatchDO> {
@@ -50,6 +54,37 @@
}
/**
+ * 鍒嗛〉鏌ヨ锛堝甫瀹㈡埛鏉冮檺杩囨护锛�
+ */
+ default PageResult<MesWmBatchDO> selectPage(MesWmBatchPageReqVO reqVO, List<Long> permittedClientIds) {
+ LambdaQueryWrapperX<MesWmBatchDO> wrapper = new LambdaQueryWrapperX<MesWmBatchDO>()
+ .likeIfPresent(MesWmBatchDO::getCode, reqVO.getCode())
+ .eqIfPresent(MesWmBatchDO::getItemId, reqVO.getItemId())
+ .eqIfPresent(MesWmBatchDO::getVendorId, reqVO.getVendorId())
+ .eqIfPresent(MesWmBatchDO::getClientId, reqVO.getClientId())
+ .likeIfPresent(MesWmBatchDO::getSalesOrderCode, reqVO.getSalesOrderCode())
+ .likeIfPresent(MesWmBatchDO::getPurchaseOrderCode, reqVO.getPurchaseOrderCode())
+ .eqIfPresent(MesWmBatchDO::getWorkOrderId, reqVO.getWorkOrderId())
+ .eqIfPresent(MesWmBatchDO::getTaskId, reqVO.getTaskId())
+ .eqIfPresent(MesWmBatchDO::getWorkstationId, reqVO.getWorkstationId())
+ .eqIfPresent(MesWmBatchDO::getToolId, reqVO.getToolId())
+ .eqIfPresent(MesWmBatchDO::getMoldId, reqVO.getMoldId())
+ .likeIfPresent(MesWmBatchDO::getLotNumber, reqVO.getLotNumber())
+ .eqIfPresent(MesWmBatchDO::getQualityStatus, reqVO.getQualityStatus())
+ .betweenIfPresent(MesWmBatchDO::getProduceDate, reqVO.getProduceDate())
+ .betweenIfPresent(MesWmBatchDO::getExpireDate, reqVO.getExpireDate())
+ .betweenIfPresent(MesWmBatchDO::getReceiptDate, reqVO.getReceiptDate())
+ .orderByDesc(MesWmBatchDO::getId);
+// if (permittedClientIds != null) {
+// if (CollUtil.isEmpty(permittedClientIds)) {
+// return PageResult.empty();
+// }
+// wrapper.in(MesWmBatchDO::getClientId, permittedClientIds);
+// }
+ return selectPage(reqVO, wrapper);
+ }
+
+ /**
* 鏍规嵁鍙傛暟鏌ヨ鍖归厤鐨勭涓�鏉℃壒娆¤褰�
* <p>
* 浣跨敤 NULL 鍊肩簿纭尮閰嶏紝杩斿洖 ID 鏈�灏忕殑鎵规
@@ -60,6 +95,11 @@
default MesWmBatchDO selectFirst(MesWmBatchDO batch) {
LambdaQueryWrapper<MesWmBatchDO> query = new LambdaQueryWrapper<>();
query.eq(MesWmBatchDO::getItemId, batch.getItemId());
+ if (ObjUtil.isNull(batch.getReelNo())) {
+ query.isNull(MesWmBatchDO::getReelNo);
+ } else {
+ query.eq(MesWmBatchDO::getReelNo, batch.getReelNo());
+ }
if (ObjUtil.isNull(batch.getVendorId())) {
query.isNull(MesWmBatchDO::getVendorId);
} else {
@@ -133,6 +173,12 @@
// 杩斿洖 ID 鏈�灏忕殑鎵规
query.orderByAsc(MesWmBatchDO::getId);
+ if (batch.getReelNo() != null) {
+ // 鏁版嵁搴撴帓搴忚鍒欏彲鑳藉拷鐣ュぇ灏忓啓鎴栨湯灏剧┖鏍硷紱鐩樺彿蹇呴』鎸夎緭鍏ュ�肩簿纭尮閰嶃��
+ return selectList(query).stream()
+ .filter(candidate -> batch.getReelNo().equals(candidate.getReelNo()))
+ .findFirst().orElse(null);
+ }
query.last("LIMIT 1");
return selectOne(query);
}
@@ -153,4 +199,28 @@
*/
List<MesWmBatchDO> selectListByBackward(String batchCode);
+ /**
+ * 鏌ヨ鎵规閲囪喘鏉ユ簮锛堥噰璐叆搴撳崟 + IQC锛�
+ *
+ * @param batchCode 鎵规鍙�
+ * @return 閲囪喘鏉ユ簮鍒楄〃
+ */
+ List<MesWmBatchPurchaseSourceRespVO> selectPurchaseSourceList(String batchCode);
+
+ /**
+ * 鏌ヨ鎵规閿�鍞幓鍚戯紙閿�鍞嚭搴撳崟 + OQC锛�
+ *
+ * @param batchCode 鎵规鍙�
+ * @return 閿�鍞幓鍚戝垪琛�
+ */
+ List<MesWmBatchSalesTargetRespVO> selectSalesTargetList(String batchCode);
+
+ /**
+ * 鏌ヨ鎵规宸ュ簭娴佽浆锛堜骇鍑�/鎶曞叆浜嬩欢锛�
+ *
+ * @param batchCode 鎵规鍙�
+ * @return 宸ュ簭娴佽浆鍒楄〃
+ */
+ List<MesWmBatchProcessTraceRespVO> selectProcessTraceList(String batchCode);
+
}
--
Gitblit v1.9.3