From 6d910029b6c81db0a2b66caa66952781397b153a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 29 八月 2026 13:45:52 +0800
Subject: [PATCH] feat(mes): 实现H5溯源页面与二维码内容集成
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java | 71 +++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
index a84dda6..313063f 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java
@@ -6,11 +6,18 @@
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchGenerateReqVO;
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.mdm.MesMdmItemDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.pro.batch.MesProBatchDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.sn.MesWmSnDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.batch.MesWmBatchMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.sn.MesWmSnMapper;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
@@ -24,6 +31,7 @@
import org.springframework.validation.annotation.Validated;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -34,7 +42,7 @@
/**
* 鎵规绠$悊 Service 瀹炵幇绫�
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Service
@Validated
@@ -51,6 +59,8 @@
@Resource
private MesMdmItemService mdmItemService;
+ @Resource
+ private MesWmSnMapper snMapper;
@Resource
private MdmItemBatchConfigApi itemBatchConfigApi;
@Resource
@@ -372,4 +382,63 @@
return batchMapper.selectCountByToolId(toolId);
}
+ @Override
+ public List<MesWmBatchPurchaseSourceRespVO> getPurchaseSourceList(String code) {
+ return batchMapper.selectPurchaseSourceList(code);
+ }
+
+ @Override
+ public List<MesWmBatchSalesTargetRespVO> getSalesTargetList(String code) {
+ return batchMapper.selectSalesTargetList(code);
+ }
+
+ @Override
+ public List<MesWmBatchProcessTraceRespVO> getProcessTraceList(String code) {
+ List<MesWmBatchProcessTraceRespVO> list = batchMapper.selectProcessTraceList(code);
+ if (CollUtil.isEmpty(list)) {
+ return list;
+ }
+ // 鎸夊伐鍗曘�佸伐搴忓簭鍙枫�佷簨浠舵椂闂存帓搴忥紙sort 鍙兘涓虹┖锛岀┖鍊煎厹搴曪級
+ list.sort(Comparator.comparing(MesWmBatchProcessTraceRespVO::getWorkOrderId,
+ Comparator.nullsLast(Comparator.naturalOrder()))
+ .thenComparing(MesWmBatchProcessTraceRespVO::getProcessSort,
+ Comparator.nullsLast(Comparator.naturalOrder()))
+ .thenComparing(MesWmBatchProcessTraceRespVO::getEventTime,
+ Comparator.nullsLast(Comparator.naturalOrder())));
+ return list;
+ }
+
+ @Override
+ public MesWmBatchDO getBatchBySn(String sn) {
+ MesWmSnDO snDO = snMapper.selectOne(MesWmSnDO::getCode, sn);
+ if (snDO == null || StrUtil.isBlank(snDO.getBatchCode())) {
+ return null;
+ }
+ return batchMapper.selectByCode(snDO.getBatchCode());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public MesWmBatchDO getOrCreateByProBatch(MesProBatchDO proBatch) {
+ if (proBatch == null || StrUtil.isBlank(proBatch.getCode())) {
+ return null;
+ }
+ // 1. 澶嶇敤宸叉湁浠撳簱鎵规锛堝悓涓�鐢熶骇鎵规鍙凤級
+ MesWmBatchDO existing = batchMapper.selectByCode(proBatch.getCode());
+ if (existing != null) {
+ return existing;
+ }
+ // 2. 鏂板缓浠撳簱鎵规锛氫互鐢熶骇鎵规鍙蜂綔涓轰粨搴撴壒娆″彿锛岃川閲忕姸鎬佺疆涓哄緟妫�楠�
+ MesWmBatchDO batch = MesWmBatchDO.builder()
+ .code(proBatch.getCode())
+ .itemId(proBatch.getItemId())
+ .produceDate(proBatch.getProduceDate())
+ .receiptDate(java.time.LocalDateTime.now())
+ .qualityStatus(MesWmQualityStatusEnum.PENDING.getStatus())
+ .remark("鐢熶骇鎵规鑷姩妗ユ帴")
+ .build();
+ batchMapper.insert(batch);
+ return batch;
+ }
+
}
--
Gitblit v1.9.3