From 0b3cdb1e0c2f495edb971c585bd6b4b0456bf93a Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期二, 14 四月 2026 14:55:34 +0800
Subject: [PATCH] 字段变更 增加类型

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java      |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderWorkTypeServiceImpl.java |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/BaseMatParms.java        |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java     |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java                        |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java            |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java                       |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java          |   16 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java     |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java        |   32 +++++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java                 |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java       |    8 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java                  |    5 +
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java                  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java         |  128 +++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java                          |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java                          |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java                |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java  |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java                  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java       |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java           |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java     |    2 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java                             |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java                   |   12 ++
 26 files changed, 220 insertions(+), 46 deletions(-)

diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java
index 913dd80..8cff632 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/LocItem.java
@@ -63,7 +63,7 @@
      * 涓氬姟绫诲瀷
      */
     @ApiModelProperty(value= "涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     /**
      * 鐗╂枡ID
@@ -242,7 +242,7 @@
 
     public LocItem() {}
 
-    public LocItem(Long locId, Long orderId, String type, Long orderItemId, Short wkType, Long matnrId, String maktx, String matnrCode, String trackCode, String unit, Double anfme, String batch, String splrBatch, String spec, String model, String fieldsIndex, Integer status, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
+    public LocItem(Long locId, Long orderId, String type, Long orderItemId, String wkType, Long matnrId, String maktx, String matnrCode, String trackCode, String unit, Double anfme, String batch, String splrBatch, String spec, String model, String fieldsIndex, Integer status, Integer deleted, Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
         this.locId = locId;
         this.orderId = orderId;
         this.type = type;
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java
index ed849f8..8f3b94b 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/ErpOpParams.java
@@ -32,7 +32,7 @@
     @ApiModelProperty(value = "璁㈠崟绫诲瀷锛�1 鍑哄簱鍗曪紱2 鍏ュ簱鍗曪紱3 璋冩嫧鍗�", required = true)
     private Integer orderType;
 
-    @ApiModelProperty(value = "涓氬姟绫诲瀷锛屽锛氶噰璐叆搴撳崟銆侀攢鍞嚭搴撳崟銆佽皟鎷ㄧ敵璇峰崟绛�", required = true)
+    @ApiModelProperty(value = "涓氬姟绫诲瀷 wk_type 瀛楀吀/鏋氫妇瀵瑰簲", required = true)
     private String wkType;
 
     @ApiModelProperty(value = "娣诲姞鏃堕棿锛屾敮鎸� yyyy-MM-dd HH:mm:ss 鎴栨椂闂存埑锛堢/姣锛�")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/BaseMatParms.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/BaseMatParms.java
index e982f9e..a6e9654 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/BaseMatParms.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/BaseMatParms.java
@@ -60,5 +60,9 @@
     @ApiModelProperty("鏉″舰鐮�")
     private String barcode;
 
+    @ApiModelProperty("鎵规锛堢┖鍒欐棤鎵规锛屼粎鎸夌墿鏂欑紪鐮佸敮涓�锛涙湁鍊煎垯鐗╂枡缂栫爜+鎵规鍞竴锛�")
+    @JsonAlias({"batchNo", "charg", "lot"})
+    private String batch;
+
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index 81635dd..6c79eb9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -1096,7 +1096,7 @@
                 .setType(order.getType())
                 .setUpdateBy(loginUserId)
                 .setCreateBy(loginUserId)
-                .setWkType(Short.parseShort(order.getWkType()));
+                .setWkType(order.getWkType());
         if (!stockService.save(stock)) {
             throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
         }
@@ -1117,7 +1117,7 @@
                     .setUpdateBy(loginUserId)
                     .setUpdateBy(loginUserId)
                     .setOrderItemId(asnOrderItem.getId())
-                    .setWkType(Short.parseShort(order.getWkType()))
+                    .setWkType(order.getWkType())
                     .setType(order.getType());
             locItems.add(item);
         });
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
index a647b93..fac8af9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
@@ -151,7 +151,7 @@
                 taskItem.setTaskId(task.getId())
                         .setOrderType(OrderType.ORDER_CHECK.type)
                         .setSourceCode(diffItem.getOrderCode())
-                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
+                        .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)
                         .setAnfme(diffItem.getCheckQty())
                         .setWorkQty(0.0)
                         .setBatch(diffItem.getBatch())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
index 5c324d6..47fd125 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -625,7 +625,7 @@
                         .setBarcode(task.getBarcode())
                         .setLocCode(task.getOrgLoc())
                         .setType(order.getType())
-                        .setWkType(Short.parseShort(order.getWkType()))
+                        .setWkType(order.getWkType())
                         .setSourceId(orderItem.getOrderId())
                         .setSourceCode(orderItem.getOrderCode())
                         .setUpdateTime(new Date())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index 8a7d865..db3b68b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -24,7 +24,6 @@
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl;
 import com.vincent.rsf.server.system.constant.DictTypeCode;
 import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
@@ -69,7 +68,7 @@
     @Autowired
     private MatnrGroupService matnrGroupService;
     @Autowired
-    private MatnrServiceImpl matnrService;
+    private MatnrService matnrService;
     @Autowired
     private AsnOrderService asnOrderService;
     @Autowired
@@ -260,16 +259,18 @@
     public void syncMatnrs(List<BaseMatParms> matnrs) {
         List<Matnr> syncMatnrs = new ArrayList<>();
         if (!matnrs.isEmpty()) {
+            assertUniqueMatnrInSyncList(matnrs);
             matnrs.forEach(matnr -> {
                 Matnr mat = new Matnr();
                 if (Objects.isNull(matnr.getMatnr())) {
                     throw new RuntimeException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒");
                 }
                 BeanUtils.copyProperties(matnr, mat);
-                mat.setCode(matnr.getMatnr()).setName(matnr.getMaktx());
+                mat.setCode(matnr.getMatnr()).setName(matnr.getMaktx())
+                        .setBatch(matnrService.normalizeMatnrBatchValue(matnr.getBatch()));
                 if (!Objects.isNull(matnr.getGroupName())) {
                     MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getName, matnr.getGroupName()), false);
-                    if (Objects.isNull(matnrGroup)) {
+                    if (!Objects.isNull(matnrGroup)) {
                         mat.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId());
                     }
                 }
@@ -278,6 +279,21 @@
 
             if (!matnrService.saveOrUpdateBatch(syncMatnrs)) {
                 throw new CoolException("鐗╂枡淇℃伅淇濆瓨鎴愬姛锛侊紒");
+            }
+        }
+    }
+
+    private void assertUniqueMatnrInSyncList(List<BaseMatParms> matnrs) {
+        Set<String> keys = new HashSet<>();
+        for (BaseMatParms p : matnrs) {
+            if (StringUtils.isBlank(p.getMatnr())) {
+                continue;
+            }
+            String key = p.getMatnr().trim() + "\u0000" + matnrService.normalizeMatnrBatchValue(p.getBatch());
+            if (!keys.add(key)) {
+                throw new CoolException("鍚屾鍒楄〃涓墿鏂欑紪鐮佷笌鎵规閲嶅锛�" + p.getMatnr().trim()
+                        + (StringUtils.isNotBlank(matnrService.normalizeMatnrBatchValue(p.getBatch()))
+                        ? " / " + matnrService.normalizeMatnrBatchValue(p.getBatch()) : ""));
             }
         }
     }
@@ -1310,7 +1326,7 @@
         Integer operateType = baseMatParms.getOperateType();
         // 3 绂佺敤 / 4 鍚敤锛氫粎鏇存柊鐘舵�侊紙status 1 姝e父 0 鍐荤粨锛�
         if (Integer.valueOf(3).equals(operateType) || Integer.valueOf(4).equals(operateType)) {
-            Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, baseMatParms.getMatnr()));
+            Matnr matnr = matnrService.getOneByCodeAndBatch(baseMatParms.getMatnr(), baseMatParms.getBatch());
             if (matnr == null) {
                 throw new CoolException("鐗╂枡涓嶅瓨鍦紝鏃犳硶鎵ц绂佺敤/鍚敤锛侊紒");
             }
@@ -1322,12 +1338,13 @@
             return R.ok();
         }
         // 1 鏂板 / 2 淇敼 / 涓嶄紶锛氭湁鍒欐洿鏂般�佹棤鍒欐柊澧�
-        Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, baseMatParms.getMatnr()));
+        Matnr matnr = matnrService.getOneByCodeAndBatch(baseMatParms.getMatnr(), baseMatParms.getBatch());
         if (Objects.isNull(matnr)) {
             Matnr matnr1 = new Matnr();
             BeanUtils.copyProperties(baseMatParms, matnr1);
             matnr1.setCode(baseMatParms.getMatnr());
             matnr1.setName(baseMatParms.getMaktx());
+            matnr1.setBatch(matnrService.normalizeMatnrBatchValue(baseMatParms.getBatch()));
             if (!Objects.isNull(baseMatParms.getGroupName())) {
                 MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>()
                         .eq(MatnrGroup::getName, baseMatParms.getGroupName()));
@@ -1349,7 +1366,8 @@
             matnr.setName(baseMatParms.getMaktx())
                     .setColor(baseMatParms.getColor())
                     .setModel(baseMatParms.getModel())
-                    .setSpec(baseMatParms.getSpec());
+                    .setSpec(baseMatParms.getSpec())
+                    .setBatch(matnrService.normalizeMatnrBatchValue(baseMatParms.getBatch()));
 
             if (!matnrService.updateById(matnr)) {
                 throw new CoolException("鐗╂枡鏇存柊澶辫触锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
index aedda15..395562e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -75,7 +75,7 @@
      * 涓氬姟绫诲瀷
      */
     @ApiModelProperty(value= "涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     /**
      * 鐗╂枡ID
@@ -268,7 +268,7 @@
 
     public LocItem() {}
 
-    public LocItem(Long locId,Long orderId,String type,Long orderItemId,Short wkType,Long matnrId,String maktx,String matnrCode,String trackCode,String unit,Double anfme,String batch,String splrBatch,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public LocItem(Long locId,Long orderId,String type,Long orderItemId,String wkType,Long matnrId,String maktx,String matnrCode,String trackCode,String unit,Double anfme,String batch,String splrBatch,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.locId = locId;
         this.orderId = orderId;
         this.type = type;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
index fa8574c..c05493b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
@@ -77,7 +77,7 @@
      * 涓氬姟绫诲瀷
      */
     @ApiModelProperty(value= "涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     /**
      * 鐗╂枡ID
@@ -240,7 +240,7 @@
 
     public LocItemWorking() {}
 
-    public LocItemWorking(Long locId,String locCode,Long orderId,String type,Long orderItemId,Short wkType,Long matnrId,String maktx,String platItemId,String platOrderCode,String platWorkCode,String projectCode,String matnrCode,String trackCode,String unit,Double anfme,Double qty,Double workQty,String batch,String splrBatch,Long splrId,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public LocItemWorking(Long locId,String locCode,Long orderId,String type,Long orderItemId,String wkType,Long matnrId,String maktx,String platItemId,String platOrderCode,String platWorkCode,String projectCode,String matnrCode,String trackCode,String unit,Double anfme,Double qty,Double workQty,String batch,String splrBatch,Long splrId,String spec,String model,String fieldsIndex,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.locId = locId;
         this.locCode = locCode;
         this.orderId = orderId;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
index 1cf77fb..6719ea4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Matnr.java
@@ -55,6 +55,10 @@
     @ApiModelProperty(value= "鐗╂枡缂栫爜")
     private String code;
 
+    /** 鎵规锛涚┖涓茶〃绀烘棤鎵规锛屾鏃剁墿鏂欑紪鐮佸叏灞�鍞竴锛涢潪绌烘椂鐗╂枡缂栫爜+鎵规缁勫悎鍞竴 */
+    @ApiModelProperty(value = "鎵规")
+    private String batch;
+
     /**
      * 璐т富ID
      */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java
index 93b810e..b72a7b3 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Stock.java
@@ -72,7 +72,7 @@
      * 涓氬姟绫诲瀷
      */
     @ApiModelProperty(value= "涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     /**
      * 搴撳瓨鏁伴噺
@@ -144,7 +144,7 @@
 
     public Stock() {}
 
-    public Stock(String code,String sourceCode,Long sourceId,String type,Short wkType,Double anfme,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public Stock(String code,String sourceCode,Long sourceId,String type,String wkType,Double anfme,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.code = code;
         this.sourceCode = sourceCode;
         this.sourceId = sourceId;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
index d24d459..6b9a70c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskItem.java
@@ -81,7 +81,7 @@
     private String orderType;
 
     @ApiModelProperty("涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     @ApiModelProperty("鍗曟嵁鏄庣粏ID")
     private Long orderItemId;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
index 6133efe..bfb4ddb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ViewStockManage.java
@@ -38,7 +38,7 @@
     private String type;
 
     @ApiModelProperty("涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     @ApiModelProperty("璁㈠崟鏄庣粏ID")
     private Long orderItemId;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
index 4cefb08..9ac241b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaitPakinItem.java
@@ -50,7 +50,7 @@
     private String type;
 
     @ApiModelProperty("涓氬姟绫诲瀷")
-    private Short wkType;
+    private String wkType;
 
     @ApiModelProperty("缁勬嫋鏄庣粏ID")
     private Long source;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java
index 3c3945e..1701653 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java
@@ -31,6 +31,10 @@
     @ExcelComment(example = "matnr123")
     private String code;
 
+    @Excel(name = "鎵规")
+    @ExcelComment(notNull = false, example = "鐣欑┖琛ㄧず鏃犳壒娆�")
+    private String batch;
+
 
     @Excel(name = "璐т富鏍囪瘑")
     @ExcelComment(example = "123")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
index 6ff6f2f..08a2619 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/OrderWorkType.java
@@ -13,6 +13,7 @@
     ORDER_WORK_TYPE_PROD("2", "鐢熶骇鍏ュ簱鍗�"),
     ORDER_WORK_TYPE_PURCHASE("3", "棰嗘枡閫�鍥炲叆搴撳崟"),
     ORDER_WORK_TYPE_SALE("4", "閿�鍞��鍥炲叆搴撳崟"),
+    ORDER_WORK_TYPE_SALES_RETURN_D004("D004", "閿�鍞��璐�"),
     ORDER_WORK_TYPE_OTHER_IN("5", "鍏跺畠鍏ュ簱鍗�"),
     ORDER_WORK_TYPE_OTHER_TERANSFER_IN("6", "璋冩嫈鍏ュ簱鍗�"),
     ORDER_WORK_TYPE_OTHER_TERANSFER("8", "璋冩嫈鍏ュ簱鍗�"),//椤圭洰涓存椂淇敼
@@ -45,6 +46,10 @@
             return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
             return OrderWorkType.ORDER_WORK_TYPE_SALE.type;
+        } else if (desc.equalsIgnoreCase(OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.type)) {
+            return OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.desc)) {
+            return OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc)) {
             return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
@@ -86,6 +91,10 @@
             return OrderType.ORDER_IN.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.desc)) {
             return OrderType.ORDER_IN.type;
+        } else if (desc.equalsIgnoreCase(OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.type)) {
+            return OrderType.ORDER_IN.type;
+        } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.desc)) {
+            return OrderType.ORDER_IN.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc)) {
             return OrderType.ORDER_IN.type;
         } else if (desc.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.desc)) {
@@ -119,6 +128,8 @@
             return OrderWorkType.ORDER_WORK_TYPE_PURCHASE.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SALE.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_SALE.desc;
+        } else if (type.equalsIgnoreCase(OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.type)) {
+            return OrderWorkType.ORDER_WORK_TYPE_SALES_RETURN_D004.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)) {
             return OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.desc;
         } else if (type.equals(OrderWorkType.ORDER_WORK_TYPE_SUPPLIER.type)) {
@@ -144,6 +155,5 @@
         }
         return null;
     }
-
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
index b326886..eb18f72 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/MatnrService.java
@@ -29,4 +29,9 @@
     PageParam<Matnr, BaseParam>  getPages(Map<String, Object> map);
 
     List<Matnr> getMatnrTempletes(List<MatnrsTemplate> list);
+
+    /** 鏃犳壒娆$粺涓�涓虹┖涓诧紝渚夸簬 (code,batch) 鍞竴 */
+    String normalizeMatnrBatchValue(String batch);
+
+    Matnr getOneByCodeAndBatch(String code, String batchNullable);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 5473012..c18ad67 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -253,10 +253,10 @@
         if (Objects.isNull(matnr)) {
             throw new CoolException("鏁版嵁閿欒锛氱墿鏂�" + wkOrderItem.getMatnrCode() + "涓嶅瓨鍦紒锛�");
         }
-        // 澶嶅埗鏃舵帓闄� id锛岄伩鍏嶇墿鏂� id 瑕嗙洊鍗曟嵁鏄庣粏 id锛屽鑷� saveOrUpdate 璇垽涓烘柊澧炶�岄噸澶嶆彃鍏ワ紙鍑哄簱鍗曠紪杈戜繚瀛樺悗 1 鏉″彉 2 鏉★級
-        BeanUtils.copyProperties(matnr, wkOrderItem, "id");
+        // 澶嶅埗鏃舵帓闄� id銆乥atch銆乻plr_batch锛氭槑缁嗘壒娆℃潵鑷�氱煡鍗曡锛屼笉涓庣墿鏂欎富鏁版嵁 batch 娣风敤
+        BeanUtils.copyProperties(matnr, wkOrderItem, "id", "batch", "splrBatch");
         wkOrderItem.setMatnrCode(matnr.getCode())
-                .setSplrBatch(!Objects.isNull(wkOrderItem.getBatch()) ? wkOrderItem.getBatch() : null)
+                .setSplrBatch(StringUtils.isNotBlank(wkOrderItem.getBatch()) ? wkOrderItem.getBatch() : null)
                 .setMatnrId(matnr.getId())
                 .setMaktx(matnr.getName());
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
index 8405e90..6d0b1da 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java
@@ -315,7 +315,7 @@
                     TaskItem taskItem = new TaskItem();
                     taskItem.setTaskId(task.getId())
                             .setOrderType(OrderType.ORDER_CHECK.type)
-                            .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
+                            .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)
                             .setAnfme(item.getAnfme())
                             .setWorkQty(0.0)
                             .setBatch(checkParam.getBatch())
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 0a6add5..cb3c483 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -367,17 +367,17 @@
                         .setUpdateTime(new Date())
                         .setOrderType(OrderType.ORDER_OUT.type);
                 if (map.getType().equals(Constants.TASK_TYPE_ORDER_OUT_STOCK)) {
-                    taskItem.setWkType(Short.parseShort(order.getWkType()))
+                    taskItem.setWkType(order.getWkType())
                             .setSourceCode(order.getCode())
                             .setSourceId(order.getId())
                             .setOrderItemId(item.getOrderItemId());
                 } else if (map.getType().equals(Constants.TASK_TYPE_WAVE_OUT_STOCK)) {
                     taskItem.setSourceId(wave.getId())
-                            .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER.type))
+                            .setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER.type)
                             .setSourceCode(wave.getCode())
                             .setSource(item.getSource());
                 } else if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK) || map.getType().equals(Constants.TASK_TYPE_OUT_STOCK)) {
-                    taskItem.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))
+                    taskItem.setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)
                             .setSource(item.getId())
                             .setSourceId(item.getLocId())
                             .setSourceCode(item.getLocCode());
@@ -502,7 +502,7 @@
                         .setSource(item.getId())
                         .setUpdateTime(new Date())
                         .setOrderType(OrderType.ORDER_IN.type)
-                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type));
+                        .setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type);
                 taskItems.add(taskItem);
             }
             if (!taskItemService.saveBatch(taskItems)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
index 7f51d3f..e6d89f7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
@@ -26,17 +26,22 @@
 import com.vincent.rsf.server.system.service.FieldsService;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import org.apache.commons.lang3.StringUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service("matnrService")
 public class MatnrServiceImpl extends ServiceImpl<MatnrMapper, Matnr> implements MatnrService {
 
@@ -45,6 +50,126 @@
 
     @Autowired
     private FieldsService fieldsService;
+
+    @Override
+    public String normalizeMatnrBatchValue(String batch) {
+        return StringUtils.isBlank(batch) ? "" : batch.trim();
+    }
+
+    @Override
+    public Matnr getOneByCodeAndBatch(String code, String batchNullable) {
+        if (StringUtils.isBlank(code)) {
+            return null;
+        }
+        String nb = normalizeMatnrBatchValue(batchNullable);
+        return this.getOne(new LambdaQueryWrapper<Matnr>()
+                .eq(Matnr::getCode, code.trim())
+                .eq(Matnr::getBatch, nb), false);
+    }
+
+    private void normalizeMatnrBatchOnEntity(Matnr entity) {
+        if (entity == null) {
+            return;
+        }
+        entity.setBatch(normalizeMatnrBatchValue(entity.getBatch()));
+    }
+
+    private void assertUniqueMatnr(Matnr entity) {
+        if (entity == null || StringUtils.isBlank(entity.getCode())) {
+            return;
+        }
+        normalizeMatnrBatchOnEntity(entity);
+        LambdaQueryWrapper<Matnr> w = new LambdaQueryWrapper<Matnr>()
+                .eq(Matnr::getCode, entity.getCode().trim())
+                .eq(Matnr::getBatch, entity.getBatch());
+        if (entity.getId() != null) {
+            w.ne(Matnr::getId, entity.getId());
+        }
+        if (this.count(w) > 0) {
+            String nb = entity.getBatch();
+            throw new CoolException(StringUtils.isBlank(nb)
+                    ? "鐗╂枡缂栫爜宸插瓨鍦紙鏃犳壒娆★級锛�" + entity.getCode().trim()
+                    : "鐗╂枡缂栫爜涓庢壒娆$粍鍚堝凡瀛樺湪锛�" + entity.getCode().trim() + " / " + nb);
+        }
+    }
+
+    private void assertNoDuplicateMatnrKeysInList(List<Matnr> list) {
+        if (list == null || list.isEmpty()) {
+            return;
+        }
+        Set<String> keys = new HashSet<>();
+        for (Matnr m : list) {
+            if (m == null || StringUtils.isBlank(m.getCode())) {
+                continue;
+            }
+            normalizeMatnrBatchOnEntity(m);
+            String key = m.getCode().trim() + "\u0000" + m.getBatch();
+            if (!keys.add(key)) {
+                throw new CoolException("瀵煎叆鏁版嵁涓墿鏂欑紪鐮佷笌鎵规閲嶅锛�" + m.getCode().trim()
+                        + (StringUtils.isNotBlank(m.getBatch()) ? " / " + m.getBatch() : ""));
+            }
+        }
+    }
+
+    @Override
+    public boolean save(Matnr entity) {
+        normalizeMatnrBatchOnEntity(entity);
+        assertUniqueMatnr(entity);
+        return super.save(entity);
+    }
+
+    @Override
+    public boolean updateById(Matnr entity) {
+        normalizeMatnrBatchOnEntity(entity);
+        assertUniqueMatnr(entity);
+        return super.updateById(entity);
+    }
+
+    @Override
+    public boolean saveOrUpdate(Matnr entity) {
+        normalizeMatnrBatchOnEntity(entity);
+        assertUniqueMatnr(entity);
+        return super.saveOrUpdate(entity);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveBatch(Collection<Matnr> entityList) {
+        if (entityList == null || entityList.isEmpty()) {
+            return true;
+        }
+        for (Matnr m : entityList) {
+            normalizeMatnrBatchOnEntity(m);
+            assertUniqueMatnr(m);
+        }
+        return super.saveBatch(entityList);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveBatch(Collection<Matnr> entityList, int batchSize) {
+        if (entityList == null || entityList.isEmpty()) {
+            return true;
+        }
+        for (Matnr m : entityList) {
+            normalizeMatnrBatchOnEntity(m);
+            assertUniqueMatnr(m);
+        }
+        return super.saveBatch(entityList, batchSize);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveOrUpdateBatch(Collection<Matnr> entityList, int batchSize) {
+        if (entityList == null || entityList.isEmpty()) {
+            return true;
+        }
+        for (Matnr m : entityList) {
+            normalizeMatnrBatchOnEntity(m);
+            assertUniqueMatnr(m);
+        }
+        return super.saveOrUpdateBatch(entityList, batchSize);
+    }
 
     /**
      * @return
@@ -67,6 +192,7 @@
          * 鑾峰彇瀵煎叆鐗╂枡妯℃澘
          */
         List<Matnr> matnrs = getMatnrTempletes(list);
+        assertNoDuplicateMatnrKeysInList(matnrs);
 
         if (!this.saveBatch(matnrs)) {
             throw new CoolException("瀵煎叆澶辫触锛侊紒");
@@ -86,6 +212,7 @@
             Matnr matnr = new Matnr();
             matnr.setBarcode(template.getBarcode())
                     .setCode(template.getCode())
+                    .setBatch(normalizeMatnrBatchValue(template.getBatch()))
                     .setName(template.getName())
                     .setId(null)
                     .setDescrible(template.getDescrible())
@@ -277,6 +404,7 @@
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_MATNR_CODE, null);
             matnr1.setCode(ruleCode);
         }
+        normalizeMatnrBatchOnEntity(matnr1);
         /**
          * 鎵╁睍瀛楁瀛樺叆搴�
          */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderWorkTypeServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderWorkTypeServiceImpl.java
index 2ee979b..a80d5fa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderWorkTypeServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderWorkTypeServiceImpl.java
@@ -48,13 +48,14 @@
         if (label == null || label.isEmpty()) {
             return null;
         }
+        String trim = label.trim();
         for (DictData d : listAll()) {
-            if (label.equals(d.getLabel())) {
+            if (trim.equals(d.getLabel())) {
                 return d.getValue();
             }
         }
         // 鍥為��鍒版灇涓�
-        return OrderWorkType.getWorkType(label);
+        return OrderWorkType.getWorkType(trim);
     }
 
     @Override
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index a4c5f10..f5cd546 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -777,7 +777,7 @@
                         throw new CoolException("鍑哄簱鍗曟嵁涓嶅瓨鍦紒锛�");
                     }
                     boolean isStockRevise = locItem.getWkType() != null
-                            && locItem.getWkType().equals(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type));
+                            && Objects.equals(locItem.getWkType(), OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type);
                     if (isStockRevise) {
                         log.info("搴撳瓨璋冩暣浜х敓鐨勫簱瀛橈紝鑷姩鍒涘缓WkOrderItem - 鍑哄簱鍗旾D锛歿}锛岀墿鏂橧D锛歿}锛屾壒娆★細{}",
                                 outId, locItem.getMatnrId(), locItem.getBatch());
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
index 01f744a..fb44d5c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java
@@ -223,7 +223,7 @@
                 BeanUtils.copyProperties(logItem, locDetl);
                 locDetl.setLocId(finalLoc.getId())
                         .setType(OrderType.ORDER_REVISE.type)
-                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type))
+                        .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_REVISE.type)
                         .setLocCode(finalLoc.getCode())
                         .setAnfme(logItem.getReviseQty())
                         // 濡傛灉batch涓嶄负绌猴紝鍚屾椂璁剧疆splrBatch锛屼互渚挎煡璇㈡椂鑳藉尮閰�
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 581c448..1c5e211 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -1212,7 +1212,7 @@
                             throw new CoolException("搴撲綅淇℃伅淇敼澶辫触锛侊紒");
                         }
                         //鍑哄簱
-                        if (item.getWkType().equals(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))) {
+                        if (Objects.equals(item.getWkType(), OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)) {
                             //搴撳瓨鍑哄簱
                         } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_WAVE_TYPE.val)) {
                             WaveItem waveItem = waveItemService.getById(item.getSource());
@@ -1234,7 +1234,7 @@
                                 throw new CoolException("娉㈡鏇存柊澶辫触锛侊紒");
                             }
 
-                        } else if (item.getWkType().equals(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER.type))) {
+                        } else if (Objects.equals(item.getWkType(), OrderWorkType.ORDER_WORK_TYPE_OTHER.type)) {
                             //鍏跺畠鍑哄簱
 
                         } else {
@@ -1772,12 +1772,12 @@
         }
 
         //娣诲姞鍑哄叆搴撹褰曚俊鎭�
-        Map<Short, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getWkType));
+        Map<String, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getWkType));
         /***鑾峰彇搴撳瓨鍑哄簱鍊硷紝濡傛灉涓虹┖琛ㄧず姝e父鍗曟嵁鍑哄簱锛岄潪绌鸿〃鏄庢槸搴撳瓨鍑哄簱
          * 1. 搴撳瓨鍑哄簱娌℃湁鍗曟嵁淇℃伅锛屽崟鎹俊鎭粯璁や负绌�
          * 2. 鍗曟嵁搴撳瓨闇�閫氳繃娉㈡鏌ヨ鍘熷鍗曟嵁淇℃伅锛屽皢鍗曟嵁淇℃伅濉叆stock涓�
          * */
-        List<TaskItem> list = listMap.get(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type));
+        List<TaskItem> list = listMap.get(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type);
         if (Objects.isNull(list) || list.isEmpty()) {
             Map<Long, List<TaskItem>> maps = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getSource));
             maps.keySet().forEach(key -> {
@@ -1949,13 +1949,13 @@
             if (!asnOrderService.updateById(wkOrder)) {
                 throw new CoolException("鍑哄簱鍗曟洿鏂板け璐ワ紒锛�");
             }
-            stock.setWkType(Short.parseShort(wkOrder.getWkType()))
+            stock.setWkType(wkOrder.getWkType())
                     .setType(OrderType.ORDER_OUT.type);
         } else if (!Objects.isNull(diffItem)) {
-            stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
+            stock.setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type)
                     .setType(OrderType.ORDER_CHECK.type);
         } else {
-            stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))
+            stock.setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type)
                     .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒")
                     .setType(OrderType.ORDER_OUT.type);
         }
@@ -2691,7 +2691,7 @@
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public synchronized void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) {
+    public synchronized void saveStockItems(List<TaskItem> items, Task task, Long id, String code, String wkType, String type, Long loginUserId) {
         Stock stock = new Stock();
         String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
         if (StringUtils.isBlank(ruleCode)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 5ff3493..52f6778 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -178,7 +178,7 @@
                         .setMatnrCode(areaItem.getMatnrCode());
                 WkOrder order = asnOrderService.getById(areaItem.getAsnId());
                 if (order != null) {
-                    pakinItem.setType(order.getType()).setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
+                    pakinItem.setType(order.getType()).setWkType(order.getWkType());
                 }
                 if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) {
                     throw new CoolException("缁勬墭鏁伴噺涓嶈兘灏忎簬绛変簬闆讹紒锛�");
@@ -303,7 +303,7 @@
                         .setCreateBy(userId)
                         .setMatnrCode(orderItem.getMatnrCode());
                 pakinItem.setType(null == order.getType() ? null : order.getType())
-                        .setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
+                        .setWkType(order.getWkType());
 
                 for (PakinItem waitPakinItem : waitPakin.getItems()) {
                     if (waitPakinItem.getId().equals(orderItem.getId())) {

--
Gitblit v1.9.1