From beaba1bf3a30053408a860479f9150b02169a7c8 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 24 八月 2026 17:04:16 +0800
Subject: [PATCH] feat(mes): 添加种子质检功能模块
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
index de727f9..e50290c 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/batch/MesProBatchServiceImpl.java
@@ -15,6 +15,7 @@
import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchWorkerMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.pro.pallet.MesProPalletMapper;
import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
+import cn.iocoder.yudao.module.mes.enums.pro.MesProBagTypeEnum;
import cn.iocoder.yudao.module.mes.enums.pro.MesProBatchStatusEnum;
import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
@@ -67,6 +68,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public Long createBatch(MesProBatchSaveReqVO createReqVO) {
+ validateBagType(createReqVO.getBagType());
// 1. 鏍¢獙鍏宠仈鏁版嵁锛堝搧绉嶃�佷骇绾裤�佺敓浜т汉鍛橈級
MesMdmItemDO item = mdmItemService.validateItemExists(createReqVO.getItemId());
MesProLineDO line = lineService.validateLineExistsAndEnable(createReqVO.getLineId());
@@ -80,6 +82,7 @@
.setCode(code)
.setLineCode(line.getCode())
.setLineName(line.getName())
+ .setBagType(createReqVO.getBagType())
.setBagQuantity(0)
.setPalletQuantity(0)
.setStatus(MesProBatchStatusEnum.DRAFT.getStatus());
@@ -96,6 +99,12 @@
// 1. 鏍¢獙瀛樺湪 + 鐘舵�侊紙鑽夌/鐢熶骇涓墠鍏佽淇敼锛�
MesProBatchDO oldBatch = validateBatchExists(updateReqVO.getId());
validateBatchEditable(oldBatch);
+ // 2. 宸茬敓鎴愯鐮佹垨鎵樼洏鐮佸悗涓嶅厑璁镐慨鏀硅鍨嬶紙閬垮厤鍚屼竴鎵规闃堝�煎彉鍖栧鑷村綊闆嗛敊涔憋級
+ if (updateReqVO.getBagType() != null && !Objects.equals(oldBatch.getBagType(), updateReqVO.getBagType())
+ && (bagQuantityOrPalletCreated(oldBatch))) {
+ throw exception(PRO_BATCH_BAG_TYPE_NOT_ALLOW_CHANGE);
+ }
+ validateBagType(updateReqVO.getBagType());
// 2. 鏍¢獙鍏宠仈鏁版嵁锛堢敓浜т汉鍛橈級
validateRelations(updateReqVO);
@@ -157,6 +166,9 @@
}
if (!valid) {
throw exception(PRO_BATCH_STATUS_INVALID);
+ }
+ if (MesProBatchStatusEnum.PRODUCING.getStatus().equals(status)) {
+ validateBagType(batch.getBagType());
}
// 3. 鏇存柊鐘舵��
batchMapper.updateById(new MesProBatchDO().setId(id).setStatus(status));
@@ -246,6 +258,23 @@
}
/**
+ * 鏍¢獙鍖呰琚嬪瀷鏈夋晥
+ */
+ private void validateBagType(Integer bagType) {
+ if (bagType != null && MesProBagTypeEnum.valueOfType(bagType) == null) {
+ throw exception(PRO_BATCH_BAG_TYPE_INVALID);
+ }
+ }
+
+ /**
+ * 鍒ゆ柇鎵规鏄惁宸茬敓鎴愯鐮佹垨鎵樼洏鐮侊紙鐢ㄤ簬绂佹淇敼琚嬪瀷锛�
+ */
+ private boolean bagQuantityOrPalletCreated(MesProBatchDO batch) {
+ return (batch.getBagQuantity() != null && batch.getBagQuantity() > 0)
+ || (batch.getPalletQuantity() != null && batch.getPalletQuantity() > 0);
+ }
+
+ /**
* 鎻掑叆鎵规鐢熶骇浜哄憳閰嶇疆
*/
private void insertBatchWorkers(Long batchId, List<MesProBatchSaveReqVO.Worker> workers) {
--
Gitblit v1.9.3