From e10c196ff7348a4461e8facee10a208779244ece Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期三, 30 九月 2026 15:33:30 +0800
Subject: [PATCH] 宁夏万通需求:出库单行支持主/辅单位录入;考勤节假日配置改为时间段;物料型号维护;设备批量删除;来料检验默认方案解析

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java |   38 ++++++++++++++++++++++++++++++++++----
 1 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
index 22b985d..20d39d4 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/miscissue/MesWmMiscIssueLineServiceImpl.java
@@ -7,6 +7,7 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscissue.MesWmMiscIssueLineDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.wm.miscissue.MesWmMiscIssueLineMapper;
 import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService;
+import cn.iocoder.yudao.module.mes.service.wm.unitconvert.MesWmItemUnitConvertService;
 import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
@@ -14,10 +15,12 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MISC_ISSUE_LINE_NOT_EXISTS;
+import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_MISC_ISSUE_LINE_QUANTITY_REQUIRED;
 
 /**
  * MES 鏉傞」鍑哄簱鍗曡 Service 瀹炵幇绫�
@@ -39,6 +42,8 @@
     private MesMdmItemService mdmItemService;
     @Resource
     private MesWmWarehouseAreaService warehouseAreaService;
+    @Resource
+    private MesWmItemUnitConvertService itemUnitConvertService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -46,11 +51,14 @@
         // 1. 鏍¢獙鏁版嵁
         validateMiscIssueLineSaveData(createReqVO.getIssueId(), createReqVO);
 
-        // 2. 鏂板琛�
+        // 2. 鍙屽崟浣嶆崲绠楋細鎸夊綍鍏ュ崟浣嶆崲绠椾负鐗╂枡涓诲崟浣嶆暟閲�
+        fillPrimaryQuantity(createReqVO);
+
+        // 3. 鏂板琛�
         MesWmMiscIssueLineDO line = BeanUtils.toBean(createReqVO, MesWmMiscIssueLineDO.class);
         miscIssueLineMapper.insert(line);
 
-        // 3.鑷姩鍒涘缓鏄庣粏
+        // 4.鑷姩鍒涘缓鏄庣粏
         createReqVO.setId(line.getId());
         miscIssueDetailService.createMiscIssueDetail(createReqVO);
         return line.getId();
@@ -64,14 +72,36 @@
         // 1.2 鏍¢獙鏁版嵁
         validateMiscIssueLineSaveData(line.getIssueId(), updateReqVO);
 
-        // 2. 鏇存柊琛�
+        // 2. 鍙屽崟浣嶆崲绠楋細鎸夊綍鍏ュ崟浣嶆崲绠椾负鐗╂枡涓诲崟浣嶆暟閲�
+        fillPrimaryQuantity(updateReqVO);
+
+        // 3. 鏇存柊琛�
         MesWmMiscIssueLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmMiscIssueLineDO.class);
         miscIssueLineMapper.updateById(updateObj);
 
-        // 3. 鏇存柊鏄庣粏锛堝熀浜庤淇℃伅锛�
+        // 4. 鏇存柊鏄庣粏锛堝熀浜庤淇℃伅锛�
         miscIssueDetailService.updateMiscIssueDetail(updateReqVO);
     }
 
+    /**
+     * 鍙屽崟浣嶆崲绠楋細閫夋嫨浜嗗綍鍏ュ崟浣嶆椂锛屾寜銆屽綍鍏ユ暟閲� 脳 鎹㈢畻姣旂巼銆嶅緱鍒扮墿鏂欎富鍗曚綅鍙e緞鐨勫嚭搴撴暟閲�
+     *
+     * 鎹㈢畻缁撴灉鍐欏洖璇锋眰鍙傛暟锛屼娇琛屼笌 1:1 鏄庣粏鐨勫彛寰勪繚鎸佷竴鑷达紱鏈寜杈呭崟浣嶅綍鍏ユ椂蹇呴』鐩存帴濉啓鍑哄簱鏁伴噺
+     */
+    private void fillPrimaryQuantity(MesWmMiscIssueLineSaveReqVO reqVO) {
+        if (reqVO.getEnterUnitMeasureId() != null) {
+            BigDecimal primaryQuantity = itemUnitConvertService.convertToPrimaryUnit(
+                    reqVO.getItemId(), reqVO.getItemModelId(),
+                    reqVO.getEnterUnitMeasureId(), reqVO.getEnterQuantity());
+            if (primaryQuantity != null) {
+                reqVO.setQuantity(primaryQuantity);
+            }
+        }
+        if (reqVO.getQuantity() == null) {
+            throw exception(WM_MISC_ISSUE_LINE_QUANTITY_REQUIRED);
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteMiscIssueLine(Long id) {

--
Gitblit v1.9.3