From d3e57f662fc00214c9d1b1caa9a4dd542a9d2e1e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 31 七月 2026 13:47:29 +0800
Subject: [PATCH] 采购订单入库批次关联

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseRequestStatusEnum.java                            |   20 +++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java                           |   12 +-
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/request/ErpPurchaseRequestRespVO.java |   31 ++++
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseOrderInStatusConvert.java                       |   48 ++++++++
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseRequestStatusConvert.java                       |   48 ++++++++
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java                            |   20 +++
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/batch/MesWmBatchServiceImpl.java                        |  159 ++++++++++++--------------
 yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java      |   15 ++
 8 files changed, 254 insertions(+), 99 deletions(-)

diff --git a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java b/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
index f4f17ec..b9ec1ed 100644
--- a/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
+++ b/yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.framework.excel.core.util;
 
+import cn.idev.excel.ExcelWriter;
 import cn.idev.excel.FastExcelFactory;
 import cn.idev.excel.converters.longconverter.LongStringConverter;
 import cn.iocoder.yudao.framework.common.util.http.HttpUtils;
@@ -33,12 +34,22 @@
     public static <T> void write(HttpServletResponse response, String filename, String sheetName,
                                  Class<T> head, List<T> data) throws IOException {
         // 杈撳嚭 Excel
-        FastExcelFactory.write(response.getOutputStream(), head)
+        ExcelWriter excelWriter = FastExcelFactory.write(response.getOutputStream(), head)
                 .autoCloseStream(false) // 涓嶈鑷姩鍏抽棴锛屼氦缁� Servlet 鑷繁澶勭悊
                 .registerWriteHandler(new ColumnWidthMatchStyleStrategy()) // 鍩轰簬 column 闀垮害锛岃嚜鍔ㄩ�傞厤銆傛渶澶� 255 瀹藉害
                 .registerWriteHandler(new SelectSheetWriteHandler(head)) // 鍩轰簬鍥哄畾 sheet 瀹炵幇涓嬫媺妗�
                 .registerConverter(new LongStringConverter()) // 閬垮厤 Long 绫诲瀷涓㈠け绮惧害
-                .sheet(sheetName).doWrite(data);
+                .build();
+        try {
+            excelWriter.write(data, FastExcelFactory.writerSheet(sheetName).build());
+        } finally {
+            // finish() 灏� workbook 鍐欏叆鍒� response 杈撳嚭娴�
+            excelWriter.finish();
+            // close() 瑙﹀彂 dispose() 娓呯悊涓存椂鏂囦欢锛�
+            // POI SXSSFWorkbook.dispose() 鍙兘杈撳嚭 WARN "Failed to dispose sheet"锛�
+            // 杩欐槸 POI 宸茬煡闂锛堜复鏃舵枃浠舵竻鐞嗘椂 BufferedWriter 宸插叧闂級锛屼笉褰卞搷瀵煎嚭缁撴灉
+            excelWriter.close();
+        }
         // 璁剧疆 header 鍜� contentType銆傚啓鍦ㄦ渶鍚庣殑鍘熷洜鏄紝閬垮厤鎶ラ敊鏃讹紝鍝嶅簲 contentType 宸茬粡琚慨鏀逛簡
         response.addHeader("Content-Disposition", "attachment;filename=" + HttpUtils.encodeUtf8(filename));
         response.setContentType("application/vnd.ms-excel;charset=UTF-8");
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/request/ErpPurchaseRequestRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/request/ErpPurchaseRequestRespVO.java
index 3debc10..0ebadb5 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/request/ErpPurchaseRequestRespVO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/request/ErpPurchaseRequestRespVO.java
@@ -1,5 +1,8 @@
 package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.request;
 
+import cn.idev.excel.annotation.ExcelIgnore;
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
 import cn.iocoder.yudao.module.system.api.storage.dto.StorageBlobRespDTO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -11,75 +14,95 @@
 
 @Schema(description = "绠$悊鍚庡彴 - ERP 閲囪喘鐢宠 Response VO")
 @Data
+@ExcelIgnoreUnannotated
 public class ErpPurchaseRequestRespVO {
 
     @Schema(description = "缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelIgnore
     private Long id;
 
     @Schema(description = "閲囪喘鐢宠鍗曞彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "CGSQ001")
+    @ExcelProperty("閲囪喘鐢宠鍗曞彿")
     private String no;
 
     @Schema(description = "鐘舵��", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
+    @ExcelProperty(value = "鐘舵��", converter = cn.iocoder.yudao.module.erp.convert.ErpPurchaseRequestStatusConvert.class)
     private Integer status;
 
-    @Schema(description = "宸ヤ綔娴佺紪鍙�", example = "1043")
-    private String processInstanceId;
-
     @Schema(description = "鐢宠浜虹紪鍙�", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("鐢宠浜虹紪鍙�")
     private Long requestUserId;
 
     @Schema(description = "鐢宠浜哄鍚�", example = "寮犱笁")
+    @ExcelProperty("鐢宠浜哄鍚�")
     private String requestUserName;
 
     @Schema(description = "鐢宠閮ㄩ棬缂栧彿", example = "1")
+    @ExcelProperty("鐢宠閮ㄩ棬缂栧彿")
     private Long requestDeptId;
 
     @Schema(description = "鐢宠閮ㄩ棬鍚嶇О", example = "鐢熶骇閮�")
+    @ExcelProperty("鐢宠閮ㄩ棬鍚嶇О")
     private String requestDeptName;
 
     @Schema(description = "鐢宠鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("鐢宠鏃堕棿")
     private LocalDateTime requestTime;
 
     @Schema(description = "鐢宠鐞嗙敱", example = "鐢熶骇闇�瑕�")
+    @ExcelProperty("鐢宠鐞嗙敱")
     private String requestReason;
 
     @Schema(description = "渚涘簲鍟嗙紪鍙�", example = "1")
+    @ExcelProperty("渚涘簲鍟嗙紪鍙�")
     private Long supplierId;
 
     @Schema(description = "渚涘簲鍟嗗悕绉�", example = "渚涘簲鍟咥")
+    @ExcelProperty("渚涘簲鍟嗗悕绉�")
     private String supplierName;
 
     @Schema(description = "瀹氶噾閲戦", example = "1000.00")
+    @ExcelProperty("瀹氶噾閲戦")
     private BigDecimal depositPrice;
 
     @Schema(description = "鍚堣鏁伴噺", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("鍚堣鏁伴噺")
     private BigDecimal totalCount;
 
     @Schema(description = "鍚堣浠锋牸", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("鍚堣浠锋牸")
     private BigDecimal totalPrice;
 
     @Schema(description = "浜у搧鍚嶇О鍒楄〃", example = "浜у搧A,浜у搧B")
+    @ExcelProperty("浜у搧鍚嶇О鍒楄〃")
     private String productNames;
 
     @Schema(description = "鐢熸垚鐨勯噰璐鍗曠紪鍙�", example = "1")
+    @ExcelIgnore
     private Long orderId;
 
     @Schema(description = "鐢熸垚鐨勯噰璐鍗曞彿", example = "CGDD001")
+    @ExcelProperty("閲囪喘璁㈠崟鍙�")
     private String orderNo;
 
-    @Schema(description = "鍏ュ簱鐘舵�侊紙0:鏈叆搴� 1:閮ㄥ垎鍏ュ簱 2:鍏ㄩ儴鍏ュ簱锛�", example = "0")
+    @Schema(description = "鍏ュ簱鐘舵��", example = "0")
+    @ExcelProperty(value = "鍏ュ簱鐘舵��", converter = cn.iocoder.yudao.module.erp.convert.ErpPurchaseOrderInStatusConvert.class)
     private Integer inStatus;
 
     @Schema(description = "澶囨敞", example = "澶囨敞")
+    @ExcelProperty("澶囨敞")
     private String remark;
 
     @Schema(description = "闄勪欢鍒楄〃")
+    @ExcelIgnore
     private List<StorageBlobRespDTO> attachmentList;
 
     @Schema(description = "鍒涘缓鏃堕棿")
+    @ExcelProperty("鍒涘缓鏃堕棿")
     private LocalDateTime createTime;
 
     @Schema(description = "鐢宠鏄庣粏鍒楄〃")
+    @ExcelIgnore
     private java.util.List<Item> items;
 
     @Schema(description = "鐢宠鏄庣粏椤�")
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseOrderInStatusConvert.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseOrderInStatusConvert.java
new file mode 100644
index 0000000..d5cf42c
--- /dev/null
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseOrderInStatusConvert.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.erp.convert;
+
+import cn.idev.excel.converters.Converter;
+import cn.idev.excel.enums.CellDataTypeEnum;
+import cn.idev.excel.metadata.GlobalConfiguration;
+import cn.idev.excel.metadata.data.ReadCellData;
+import cn.idev.excel.metadata.data.WriteCellData;
+import cn.idev.excel.metadata.property.ExcelContentProperty;
+import cn.iocoder.yudao.module.erp.enums.ErpPurchaseOrderInStatusEnum;
+
+/**
+ * ERP 閲囪喘鍏ュ簱鐘舵�� Excel 杞崲鍣�
+ * <p>
+ * 灏� Integer 鍏ュ簱鐘舵�佺爜杞崲涓轰腑鏂囧悕绉�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+public class ErpPurchaseOrderInStatusConvert implements Converter<Integer> {
+
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return Integer.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty,
+                                               GlobalConfiguration globalConfiguration) {
+        if (value == null) {
+            return new WriteCellData<>("");
+        }
+        ErpPurchaseOrderInStatusEnum statusEnum = ErpPurchaseOrderInStatusEnum.fromStatus(value);
+        return new WriteCellData<>(statusEnum != null ? statusEnum.getName() : String.valueOf(value));
+    }
+
+    @Override
+    public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
+                                     GlobalConfiguration globalConfiguration) {
+        String label = cellData.getStringValue();
+        ErpPurchaseOrderInStatusEnum statusEnum = ErpPurchaseOrderInStatusEnum.fromName(label);
+        return statusEnum != null ? statusEnum.getStatus() : null;
+    }
+
+}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseRequestStatusConvert.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseRequestStatusConvert.java
new file mode 100644
index 0000000..eb1a32e
--- /dev/null
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/convert/ErpPurchaseRequestStatusConvert.java
@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.erp.convert;
+
+import cn.idev.excel.converters.Converter;
+import cn.idev.excel.enums.CellDataTypeEnum;
+import cn.idev.excel.metadata.GlobalConfiguration;
+import cn.idev.excel.metadata.data.ReadCellData;
+import cn.idev.excel.metadata.data.WriteCellData;
+import cn.idev.excel.metadata.property.ExcelContentProperty;
+import cn.iocoder.yudao.module.erp.enums.ErpPurchaseRequestStatusEnum;
+
+/**
+ * ERP 閲囪喘鐢宠鐘舵�� Excel 杞崲鍣�
+ * <p>
+ * 灏� Integer 鐘舵�佺爜杞崲涓轰腑鏂囧悕绉帮紝鐢ㄤ簬 Excel 瀵煎嚭
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+public class ErpPurchaseRequestStatusConvert implements Converter<Integer> {
+
+    @Override
+    public Class<?> supportJavaTypeKey() {
+        return Integer.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty,
+                                               GlobalConfiguration globalConfiguration) {
+        if (value == null) {
+            return new WriteCellData<>("");
+        }
+        ErpPurchaseRequestStatusEnum statusEnum = ErpPurchaseRequestStatusEnum.fromStatus(value);
+        return new WriteCellData<>(statusEnum != null ? statusEnum.getName() : String.valueOf(value));
+    }
+
+    @Override
+    public Integer convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
+                                     GlobalConfiguration globalConfiguration) {
+        String label = cellData.getStringValue();
+        ErpPurchaseRequestStatusEnum statusEnum = ErpPurchaseRequestStatusEnum.fromName(label);
+        return statusEnum != null ? statusEnum.getStatus() : null;
+    }
+
+}
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java
index c1e5a9a..f56a937 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseOrderInStatusEnum.java
@@ -30,4 +30,24 @@
         return ARRAYS;
     }
 
+    /**
+     * 鏍规嵁鐘舵�佺爜鑾峰彇鏋氫妇
+     */
+    public static ErpPurchaseOrderInStatusEnum fromStatus(Integer status) {
+        return Arrays.stream(values())
+                .filter(e -> e.getStatus().equals(status))
+                .findFirst()
+                .orElse(null);
+    }
+
+    /**
+     * 鏍规嵁鍚嶇О鑾峰彇鏋氫妇
+     */
+    public static ErpPurchaseOrderInStatusEnum fromName(String name) {
+        return Arrays.stream(values())
+                .filter(e -> e.getName().equals(name))
+                .findFirst()
+                .orElse(null);
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseRequestStatusEnum.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseRequestStatusEnum.java
index 6eb1ad3..ad9493f 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseRequestStatusEnum.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErpPurchaseRequestStatusEnum.java
@@ -35,4 +35,24 @@
         return ARRAYS;
     }
 
+    /**
+     * 鏍规嵁鐘舵�佺爜鑾峰彇鏋氫妇
+     */
+    public static ErpPurchaseRequestStatusEnum fromStatus(Integer status) {
+        return Arrays.stream(values())
+                .filter(e -> e.getStatus().equals(status))
+                .findFirst()
+                .orElse(null);
+    }
+
+    /**
+     * 鏍规嵁鍚嶇О鑾峰彇鏋氫妇
+     */
+    public static ErpPurchaseRequestStatusEnum fromName(String name) {
+        return Arrays.stream(values())
+                .filter(e -> e.getName().equals(name))
+                .findFirst()
+                .orElse(null);
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
index fd04fdd..a8b26d5 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/batch/MesWmBatchMapper.java
@@ -72,12 +72,12 @@
                 .betweenIfPresent(MesWmBatchDO::getExpireDate, reqVO.getExpireDate())
                 .betweenIfPresent(MesWmBatchDO::getReceiptDate, reqVO.getReceiptDate())
                 .orderByDesc(MesWmBatchDO::getId);
-        if (permittedClientIds != null) {
-            if (CollUtil.isEmpty(permittedClientIds)) {
-                return PageResult.empty();
-            }
-            wrapper.in(MesWmBatchDO::getClientId, permittedClientIds);
-        }
+//        if (permittedClientIds != null) {
+//            if (CollUtil.isEmpty(permittedClientIds)) {
+//                return PageResult.empty();
+//            }
+//            wrapper.in(MesWmBatchDO::getClientId, permittedClientIds);
+//        }
         return selectPage(reqVO, wrapper);
     }
 
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 bed3c88..a84dda6 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
@@ -97,122 +97,107 @@
         // 2. 鏍规嵁閰嶇疆鏍¢獙蹇呭~鍙傛暟骞舵竻绌轰笉闇�瑕佺殑鍙傛暟
         MesWmBatchDO batch = MesWmBatchDO.builder().itemId(reqVO.getItemId()).build();
         if (config != null) {
+            // ========== 蹇呭~鏍¢獙锛坒lag=true 琛ㄧず璇ュ瓧娈典负蹇呭~锛� ==========
             // 鐢熶骇鏃ユ湡
-            if (Boolean.TRUE.equals(config.getProduceDateFlag())) {
-                if (ObjUtil.isNull(reqVO.getProduceDate())) {
-                    throw exception(WM_BATCH_PRODUCE_DATE_REQUIRED);
-                }
-                batch.setProduceDate(reqVO.getProduceDate());
+            if (Boolean.TRUE.equals(config.getProduceDateFlag()) && ObjUtil.isNull(reqVO.getProduceDate())) {
+                throw exception(WM_BATCH_PRODUCE_DATE_REQUIRED);
             }
             // 鍏ュ簱鏃ユ湡
-            if (Boolean.TRUE.equals(config.getReceiptDateFlag())) {
-                if (ObjUtil.isNull(reqVO.getReceiptDate())) {
-                    throw exception(WM_BATCH_RECEIPT_DATE_REQUIRED);
-                }
-                batch.setReceiptDate(reqVO.getReceiptDate());
+            if (Boolean.TRUE.equals(config.getReceiptDateFlag()) && ObjUtil.isNull(reqVO.getReceiptDate())) {
+                throw exception(WM_BATCH_RECEIPT_DATE_REQUIRED);
             }
             // 鏈夋晥鏈�
-            if (Boolean.TRUE.equals(config.getExpireDateFlag())) {
-                if (ObjUtil.isNull(reqVO.getExpireDate())) {
-                    throw exception(WM_BATCH_EXPIRE_DATE_REQUIRED);
-                }
-                batch.setExpireDate(reqVO.getExpireDate());
+            if (Boolean.TRUE.equals(config.getExpireDateFlag()) && ObjUtil.isNull(reqVO.getExpireDate())) {
+                throw exception(WM_BATCH_EXPIRE_DATE_REQUIRED);
             }
             // 渚涘簲鍟�
-            if (Boolean.TRUE.equals(config.getVendorFlag())) {
-                if (ObjUtil.isNull(reqVO.getVendorId())) {
-                    throw exception(WM_BATCH_VENDOR_REQUIRED);
-                }
-                batch.setVendorId(reqVO.getVendorId());
+            if (Boolean.TRUE.equals(config.getVendorFlag()) && ObjUtil.isNull(reqVO.getVendorId())) {
+                throw exception(WM_BATCH_VENDOR_REQUIRED);
             }
             // 瀹㈡埛
-            if (Boolean.TRUE.equals(config.getClientFlag())) {
-                if (ObjUtil.isNull(reqVO.getClientId())) {
-                    throw exception(WM_BATCH_CLIENT_REQUIRED);
-                }
-                batch.setClientId(reqVO.getClientId());
+            if (Boolean.TRUE.equals(config.getClientFlag()) && ObjUtil.isNull(reqVO.getClientId())) {
+                throw exception(WM_BATCH_CLIENT_REQUIRED);
             }
             // 閲囪喘璁㈠崟缂栧彿
-            if (Boolean.TRUE.equals(config.getPurchaseOrderCodeFlag())) {
-                if (ObjUtil.isNull(reqVO.getPurchaseOrderCode())) {
-                    throw exception(WM_BATCH_PURCHASE_ORDER_CODE_REQUIRED);
-                }
-                batch.setPurchaseOrderCode(reqVO.getPurchaseOrderCode());
+            if (Boolean.TRUE.equals(config.getPurchaseOrderCodeFlag()) && ObjUtil.isNull(reqVO.getPurchaseOrderCode())) {
+                throw exception(WM_BATCH_PURCHASE_ORDER_CODE_REQUIRED);
             }
             // 閿�鍞鍗曠紪鍙�
-            if (Boolean.TRUE.equals(config.getSalesOrderCodeFlag())) {
-                if (ObjUtil.isNull(reqVO.getSalesOrderCode())) {
-                    throw exception(WM_BATCH_CUSTOMER_ORDER_CODE_REQUIRED);
-                }
-                batch.setSalesOrderCode(reqVO.getSalesOrderCode());
+            if (Boolean.TRUE.equals(config.getSalesOrderCodeFlag()) && ObjUtil.isNull(reqVO.getSalesOrderCode())) {
+                throw exception(WM_BATCH_CUSTOMER_ORDER_CODE_REQUIRED);
             }
             // 鐢熶骇宸ュ崟
-            if (Boolean.TRUE.equals(config.getWorkOrderFlag())) {
-                if (ObjUtil.isNull(reqVO.getWorkOrderId())) {
-                    throw exception(WM_BATCH_WORK_ORDER_REQUIRED);
-                }
-                batch.setWorkOrderId(reqVO.getWorkOrderId());
+            if (Boolean.TRUE.equals(config.getWorkOrderFlag()) && ObjUtil.isNull(reqVO.getWorkOrderId())) {
+                throw exception(WM_BATCH_WORK_ORDER_REQUIRED);
             }
             // 鐢熶骇浠诲姟
-            if (Boolean.TRUE.equals(config.getTaskFlag())) {
-                if (ObjUtil.isNull(reqVO.getTaskId())) {
-                    throw exception(WM_BATCH_TASK_REQUIRED);
-                }
-                batch.setTaskId(reqVO.getTaskId());
+            if (Boolean.TRUE.equals(config.getTaskFlag()) && ObjUtil.isNull(reqVO.getTaskId())) {
+                throw exception(WM_BATCH_TASK_REQUIRED);
             }
             // 宸ヤ綔绔�
-            if (Boolean.TRUE.equals(config.getWorkstationFlag())) {
-                if (ObjUtil.isNull(reqVO.getWorkstationId())) {
-                    throw exception(WM_BATCH_WORKSTATION_REQUIRED);
-                }
-                batch.setWorkstationId(reqVO.getWorkstationId());
+            if (Boolean.TRUE.equals(config.getWorkstationFlag()) && ObjUtil.isNull(reqVO.getWorkstationId())) {
+                throw exception(WM_BATCH_WORKSTATION_REQUIRED);
             }
             // 宸ュ叿
-            if (Boolean.TRUE.equals(config.getToolFlag())) {
-                if (ObjUtil.isNull(reqVO.getToolId())) {
-                    throw exception(WM_BATCH_TOOL_REQUIRED);
-                }
-                batch.setToolId(reqVO.getToolId());
+            if (Boolean.TRUE.equals(config.getToolFlag()) && ObjUtil.isNull(reqVO.getToolId())) {
+                throw exception(WM_BATCH_TOOL_REQUIRED);
             }
             // 妯″叿
-            if (Boolean.TRUE.equals(config.getMoldFlag())) {
-                if (ObjUtil.isNull(reqVO.getMoldId())) {
-                    throw exception(WM_BATCH_MOLD_REQUIRED);
-                }
-                batch.setMoldId(reqVO.getMoldId());
+            if (Boolean.TRUE.equals(config.getMoldFlag()) && ObjUtil.isNull(reqVO.getMoldId())) {
+                throw exception(WM_BATCH_MOLD_REQUIRED);
             }
             // 鐢熶骇鎵瑰彿
-            if (Boolean.TRUE.equals(config.getLotNumberFlag())) {
-                if (ObjUtil.isNull(reqVO.getLotNumber())) {
-                    throw exception(WM_BATCH_LOT_NUMBER_REQUIRED);
-                }
-                batch.setLotNumber(reqVO.getLotNumber());
+            if (Boolean.TRUE.equals(config.getLotNumberFlag()) && ObjUtil.isNull(reqVO.getLotNumber())) {
+                throw exception(WM_BATCH_LOT_NUMBER_REQUIRED);
             }
             // 璐ㄩ噺鐘舵��
-            if (Boolean.TRUE.equals(config.getQualityStatusFlag())) {
-                if (ObjUtil.isNull(reqVO.getQualityStatus())) {
-                    throw exception(WM_BATCH_QUALITY_STATUS_REQUIRED);
-                }
-                batch.setQualityStatus(reqVO.getQualityStatus());
+            if (Boolean.TRUE.equals(config.getQualityStatusFlag()) && ObjUtil.isNull(reqVO.getQualityStatus())) {
+                throw exception(WM_BATCH_QUALITY_STATUS_REQUIRED);
             }
         }
-        // 鏃犳壒娆¢厤缃椂锛屼娇鐢ㄤ紶鍏ョ殑鍙傛暟锛堝鏉炬ā寮忥紝閫傜敤浜庤嚜瀹氫箟鍏ュ簱绛夊満鏅級
-        else {
-            if (reqVO.getProduceDate() != null) {
-                batch.setProduceDate(reqVO.getProduceDate());
-            }
-            if (reqVO.getReceiptDate() != null) {
-                batch.setReceiptDate(reqVO.getReceiptDate());
-            }
-            if (reqVO.getExpireDate() != null) {
-                batch.setExpireDate(reqVO.getExpireDate());
-            }
-            if (reqVO.getVendorId() != null) {
-                batch.setVendorId(reqVO.getVendorId());
-            }
-            if (reqVO.getClientId() != null) {
-                batch.setClientId(reqVO.getClientId());
-            }
+
+        // ========== 淇濆瓨瀛楁锛堟棤璁烘湁鏃犻厤缃紝鍙璋冪敤鏂逛紶浜嗗氨淇濆瓨锛� ==========
+        if (reqVO.getProduceDate() != null) {
+            batch.setProduceDate(reqVO.getProduceDate());
+        }
+        if (reqVO.getReceiptDate() != null) {
+            batch.setReceiptDate(reqVO.getReceiptDate());
+        }
+        if (reqVO.getExpireDate() != null) {
+            batch.setExpireDate(reqVO.getExpireDate());
+        }
+        if (reqVO.getVendorId() != null) {
+            batch.setVendorId(reqVO.getVendorId());
+        }
+        if (reqVO.getClientId() != null) {
+            batch.setClientId(reqVO.getClientId());
+        }
+        if (reqVO.getPurchaseOrderCode() != null) {
+            batch.setPurchaseOrderCode(reqVO.getPurchaseOrderCode());
+        }
+        if (reqVO.getSalesOrderCode() != null) {
+            batch.setSalesOrderCode(reqVO.getSalesOrderCode());
+        }
+        if (reqVO.getWorkOrderId() != null) {
+            batch.setWorkOrderId(reqVO.getWorkOrderId());
+        }
+        if (reqVO.getTaskId() != null) {
+            batch.setTaskId(reqVO.getTaskId());
+        }
+        if (reqVO.getWorkstationId() != null) {
+            batch.setWorkstationId(reqVO.getWorkstationId());
+        }
+        if (reqVO.getToolId() != null) {
+            batch.setToolId(reqVO.getToolId());
+        }
+        if (reqVO.getMoldId() != null) {
+            batch.setMoldId(reqVO.getMoldId());
+        }
+        if (reqVO.getLotNumber() != null) {
+            batch.setLotNumber(reqVO.getLotNumber());
+        }
+        if (reqVO.getQualityStatus() != null) {
+            batch.setQualityStatus(reqVO.getQualityStatus());
         }
 
         // 3.1 鎯呭喌涓�锛氫紶鍏ヤ簡 batchCode锛屾煡璇㈡槸鍚﹀瓨鍦ㄨ鎵规鍙�

--
Gitblit v1.9.3