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/productsales/MesWmProductSalesLineServiceImpl.java | 23 +++++++++++++++++++++++
1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
index 30303e7..e3f90be 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java
@@ -7,11 +7,13 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLineSaveReqVO;
+import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales.MesWmProductSalesLineMapper;
import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum;
+import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
import cn.iocoder.yudao.module.mes.service.wm.batch.MesWmBatchService;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.batch.MesWmBatchDO;
@@ -25,6 +27,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.List;
import java.util.Objects;
@@ -50,6 +54,8 @@
@Resource
private MesMdmItemService mdmItemService;
@Resource
+ private MesMdItemService mdItemService;
+ @Resource
private MesWmBatchService batchService;
@Resource
@Lazy
@@ -68,6 +74,7 @@
// 鏂板
MesWmProductSalesLineDO line = BeanUtils.toBean(createReqVO, MesWmProductSalesLineDO.class);
+ line.setBoxCount(calculateBoxCount(line.getItemId(), line.getQuantity()));
productSalesLineMapper.insert(line);
return line.getId();
}
@@ -82,6 +89,7 @@
// 鏇存柊
MesWmProductSalesLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductSalesLineDO.class);
+ updateObj.setBoxCount(calculateBoxCount(updateObj.getItemId(), updateObj.getQuantity()));
productSalesLineMapper.updateById(updateObj);
// 妫�鏌ユ槸鍚﹂渶瑕佸垱寤� OQC 妫�楠屽崟锛氫粠涓嶉渶瑕佹楠屽彉涓洪渶瑕佹楠�
@@ -167,6 +175,21 @@
}
/**
+ * 鎸� 鏁伴噺 / 鐗╂枡姣忕鏁伴噺 鍚戜笂鍙栨暣璁$畻绠辨暟锛涙湭缁存姢姣忕鏁伴噺鏃惰繑鍥� 0
+ */
+ private int calculateBoxCount(Long itemId, BigDecimal quantity) {
+ if (itemId == null || quantity == null) {
+ return 0;
+ }
+ MesMdItemDO item = mdItemService.getItem(itemId);
+ if (item == null || item.getBoxQuantity() == null
+ || item.getBoxQuantity().compareTo(BigDecimal.ZERO) <= 0) {
+ return 0;
+ }
+ return quantity.divide(item.getBoxQuantity(), 0, RoundingMode.CEILING).intValue();
+ }
+
+ /**
* 鏍规嵁 batchCode 瑙f瀽 batchId
*/
private void fillBatchId(MesWmProductSalesLineSaveReqVO reqVO) {
--
Gitblit v1.9.3