From b3fe06c151dc8455649bf0a46e481ceb83e3ea2a Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 13:37:54 +0800
Subject: [PATCH] feat: 完成好水川 MOM 需求1/2/4/5/8(装箱、BOM成本、销售合同、劳动合同、留样)
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
index 66354a9..460f645 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
@@ -8,6 +8,9 @@
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackagePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO;
+import cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder.MesProWorkOrderMapper;
+import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageMapper;
import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum;
@@ -17,8 +20,11 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
+import java.math.BigDecimal;
import java.util.List;
+import java.util.Map;
import java.util.Objects;
+import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@@ -38,6 +44,10 @@
@Resource
private MesWmPackageLineService packageLineService;
+ @Resource
+ private MesWmPackageLineMapper packageLineMapper;
+ @Resource
+ private MesProWorkOrderMapper workOrderMapper;
@Resource
private MesWmBarcodeService barcodeService;
@Resource
@@ -100,6 +110,7 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void finishPackage(Long id) {
// 鏍¢獙瀛樺湪涓斾负鑽夌
validatePackageExistsAndDraft(id);
@@ -107,6 +118,23 @@
// 鏇存柊鐘舵�佷负宸插畬鎴�
packageMapper.updateById(new MesWmPackageDO()
.setId(id).setStatus(MesWmPackageStatusEnum.FINISHED.getStatus()));
+
+ // 鎸夌敓浜у伐鍗曟眹鎬绘湰娆¤绠辨暟閲忎笌绠辨暟锛岀疮鍔犲埌宸ュ崟骞堕噸绠楄绠辩姸鎬�
+ Map<Long, List<MesWmPackageLineDO>> linesByWorkOrder = packageLineMapper.selectListByPackageId(id).stream()
+ .filter(line -> line.getWorkOrderId() != null)
+ .collect(Collectors.groupingBy(MesWmPackageLineDO::getWorkOrderId));
+ linesByWorkOrder.forEach((workOrderId, lines) -> {
+ BigDecimal quantity = lines.stream()
+ .map(MesWmPackageLineDO::getQuantity)
+ .filter(Objects::nonNull)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ int boxCount = lines.stream()
+ .map(MesWmPackageLineDO::getBoxCount)
+ .filter(Objects::nonNull)
+ .mapToInt(Integer::intValue).sum();
+ workOrderMapper.updatePackedQuantity(workOrderId, quantity, boxCount);
+ workOrderMapper.updatePackingStatus(workOrderId);
+ });
}
@Override
--
Gitblit v1.9.3