From 290e5fd2e74efe19326f56e38c3391aaae23ffc5 Mon Sep 17 00:00:00 2001
From: IZCD4L12RTSW0VZ\Administrator <skyouc>
Date: 星期三, 24 十二月 2025 17:14:09 +0800
Subject: [PATCH] Merge branch 'jsxswms' of http://47.97.1.152:5880/r/zy-asrs into jsxswms

---
 src/main/resources/mapper/OrderMapper.xml                         |   10 
 src/main/java/com/zy/asrs/service/OrderService.java               |   11 
 src/main/resources/mapper/OrderPakinMapper.xml                    |    1 
 src/main/java/com/zy/api/controller/AgvScheduleController.java    |    3 
 src/main/java/com/zy/api/entity/OrderParams.java                  |    5 
 src/main/webapp/static/js/adjustOrder/adjustOrder.js              |  243 +++---
 src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java |  110 ++-
 src/main/java/com/zy/api/enums/MatLocType.java                    |   14 
 src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java    |  255 ++++++-
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java       |    4 
 src/main/java/com/zy/asrs/utils/Utils.java                        |   11 
 src/main/java/com/zy/api/service/KopenApiService.java             |   28 
 src/main/java/com/zy/asrs/entity/BasStation.java                  |   12 
 src/main/java/com/zy/api/entity/dto/XSR.java                      |    8 
 src/main/java/com/zy/asrs/entity/Mat.java                         |   49 -
 src/main/java/com/zy/common/constant/MesConstant.java             |   14 
 src/main/java/com/zy/asrs/entity/ViewWorkInBean.java              |   47 +
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java     |  165 +++-
 src/main/resources/application-dev.yml                            |    2 
 src/main/java/com/zy/common/model/DetlDto.java                    |   41 
 src/main/webapp/static/js/common.js                               |    4 
 src/main/java/com/zy/asrs/controller/OutController.java           |   22 
 src/main/java/com/zy/api/entity/OrderItemsParam.java              |    7 
 src/main/java/com/zy/asrs/service/MobileService.java              |   16 
 src/main/java/com/zy/asrs/entity/CheckOrderDetl.java              |   12 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java       |   24 
 src/main/resources/mapper/ViewWorkInMapper.xml                    |    4 
 src/main/java/com/zy/asrs/controller/LocCacheController.java      |   11 
 src/main/webapp/static/js/report/workIn.js                        |    4 
 src/main/webapp/static/js/locCache/locCache.js                    |   51 +
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java            |   34 +
 src/main/resources/mapper/TaskMapper.xml                          |    4 
 src/main/webapp/views/locCache/locCache.html                      |   60 -
 src/main/webapp/views/report/viewWorkIn.html                      |    2 
 src/main/java/com/zy/asrs/controller/MobileController.java        |   24 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java        |    6 
 src/main/java/com/zy/api/entity/ReportOrderParams.java            |    7 
 src/main/java/com/zy/asrs/enums/TaskStatusType.java               |   40 +
 src/main/java/com/zy/common/CodeBuilder.java                      |    2 
 src/main/java/com/zy/asrs/enums/LocStsType.java                   |   12 
 src/main/java/com/zy/asrs/entity/LocCache.java                    |    8 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java      |    9 
 src/main/java/com/zy/asrs/mapper/OrderMapper.java                 |    6 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java      |  433 ++++++++++---
 src/main/resources/mapper/OrderDetlPakoutMapper.xml               |    3 
 src/main/java/com/zy/api/controller/KopenApiController.java       |   72 +
 46 files changed, 1,315 insertions(+), 595 deletions(-)

diff --git a/src/main/java/com/zy/api/controller/AgvScheduleController.java b/src/main/java/com/zy/api/controller/AgvScheduleController.java
index 7a4a0e0..507ad1b 100644
--- a/src/main/java/com/zy/api/controller/AgvScheduleController.java
+++ b/src/main/java/com/zy/api/controller/AgvScheduleController.java
@@ -31,9 +31,6 @@
         if (Objects.isNull(params)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(params.getType())) {
-            return R.error("鎼繍绫诲瀷涓嶈兘涓虹┖锛侊紒");
-        }
         return agvScheduleService.callAgvCarry(params);
     }
 
diff --git a/src/main/java/com/zy/api/controller/KopenApiController.java b/src/main/java/com/zy/api/controller/KopenApiController.java
index 122fa3f..f426e4a 100644
--- a/src/main/java/com/zy/api/controller/KopenApiController.java
+++ b/src/main/java/com/zy/api/controller/KopenApiController.java
@@ -1,14 +1,16 @@
 package com.zy.api.controller;
 
 
-import com.core.common.R;
-import com.zy.api.entity.OrderParams;
+import com.zy.api.controller.params.PageRequestParams;
 import com.zy.api.entity.PubOrderParams;
 import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockAdjustParams;
 import com.zy.api.entity.StockUpOrderParams;
 import com.zy.api.entity.SyncMatParmas;
 import com.zy.api.entity.dto.XSR;
 import com.zy.api.service.KopenApiService;
+import com.zy.common.web.BaseController;
+
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 
@@ -26,7 +28,7 @@
 @Slf4j
 @RestController
 @RequestMapping("/kopen")
-public class KopenApiController {
+public class KopenApiController  extends BaseController{
 
     @Autowired
     private KopenApiService kopenApiService;
@@ -41,19 +43,19 @@
      */
     @ApiOperation("涓婃灦娲惧伐鍗�")
     @PostMapping("/sendInDispatch")
-    public XSR receiveOrders(@RequestBody PubOrderParams params) {
+    public XSR receiveOrders(@RequestBody List<PubOrderParams> params) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(params.getType())) {
-            return XSR.error("鍗曟嵁绫诲瀷涓嶈兘涓虹┖锛�");
-        }
+//        if (Objects.isNull(params.getType())) {
+//            return XSR.error("鍗曟嵁绫诲瀷涓嶈兘涓虹┖锛�");
+//        }
         return kopenApiService.receiveOrders(params);
     }
 
     /**
      * 涓婃父涓嬪彂闆朵欢鏁版嵁鍙樻洿
-     * s
+     * 
      * @author Ryan
      * @date 2025/11/24 15:19
      * @param params
@@ -68,7 +70,6 @@
         return kopenApiService.basMatupdate(params);
     }
 
-
     /**
      * 涓婃灦娲惧伐鍗曞弽棣�
      * @author Ryan
@@ -78,13 +79,13 @@
      */
     @ApiOperation("涓婃灦娲惧伐鍗曞弽棣�")
     @PostMapping("/getInDispatchResult")
-    public XSR getInDispatchResult(@RequestBody ReportOrderParam params) {
+    public XSR getInDispatchResult(@RequestBody List<ReportOrderParam> params) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) {
-            return XSR.error("鍙栨秷鏉′欢涓嶈兘涓虹┖锛侊紒");
-        }
+//        if (Objects.isNull(params.getKopen_id()) && Objects.isNull(params.getInv_no()) && Objects.isNull(params.getDispatch_no())) {
+//            return XSR.error("鍙栨秷鏉′欢涓嶈兘涓虹┖锛侊紒");
+//        }
         return kopenApiService.getInDispatchResult(params);
     }
 
@@ -97,13 +98,13 @@
      */
     @ApiOperation("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�")
     @PostMapping("/sendOutDispatch")
-    public XSR sendStockPrepareDispatch(@RequestBody PubOrderParams params) {
+    public XSR sendStockPrepareDispatch(@RequestBody List<PubOrderParams> params) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
-            return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
-        }
+//        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+//            return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
+//        }
         return kopenApiService.sendOutDispatch(params);
     }
 
@@ -137,17 +138,46 @@
      */
     @ApiOperation("澶囪揣鍗曚笅鍙�")
     @PostMapping("/getOutDetails")
-    public XSR getOutDetails(@RequestBody StockUpOrderParams params) {
+    public XSR getOutDetails(@RequestBody List<StockUpOrderParams> params) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
-        }
-        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
-            return XSR.error("涓婃姤璁㈠崟鍒楄〃涓嶈兘涓虹┖锛侊紒");
         }
         return kopenApiService.getOutDetails(params);
     }
 
 
+    /**
+     * 鏌ヨWMS搴撳瓨淇℃伅
+     * @author Ryan
+     * @date 2025/11/24 15:22
+     * @param params
+     * @return com.core.common.R
+     */
+    @ApiOperation("鏌ヨWMS搴撳瓨淇℃伅")
+    @PostMapping("/getStockInfo")
+    public XSR getStockInfo(@RequestBody PageRequestParams params) {
+        return kopenApiService.getStockInfo(params);
+    }
+
+
+    /**
+     * 闆朵欢鎹熸孩鍗曚笅鍙�
+     * @author Ryan
+     * @date 2025/11/24 15:22
+     * @param params
+     * @return com.core.common.R
+     */
+    @ApiOperation("闆朵欢鎹熸孩鍗曚笅鍙�")
+    @PostMapping("/sendBSBYDetails")
+    public XSR sendStockAdjust(@RequestBody List<StockAdjustParams> params) {
+        if (Objects.isNull(params) || params.isEmpty()) {
+            return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return kopenApiService.sendStockAdjust(params, 1L);
+    }
+
+
     
 
+
 }
diff --git a/src/main/java/com/zy/api/entity/OrderItemsParam.java b/src/main/java/com/zy/api/entity/OrderItemsParam.java
index 11d1e63..30f3613 100644
--- a/src/main/java/com/zy/api/entity/OrderItemsParam.java
+++ b/src/main/java/com/zy/api/entity/OrderItemsParam.java
@@ -6,7 +6,6 @@
 import lombok.experimental.Accessors;
 import java.io.Serializable;
 
-
 @Data
 @Accessors(chain = true)
 @ApiModel(value = "OrderItemsParam", description = "璁㈠崟鏄庣粏鍙傛暟")
@@ -42,4 +41,10 @@
     @ApiModelProperty("鎹嗙粦/鍙枡/鏁伴噺鏁伴噺")
     private Integer pick_qty;
 
+    @ApiModelProperty("鎹熸孩鏁伴噺")
+    private Integer bsby_qty;
+
+    @ApiModelProperty("鎵樼洏缂栧彿")
+    private String location_no;
+
 }
diff --git a/src/main/java/com/zy/api/entity/OrderParams.java b/src/main/java/com/zy/api/entity/OrderParams.java
index 0dcdc30..e09e9a9 100644
--- a/src/main/java/com/zy/api/entity/OrderParams.java
+++ b/src/main/java/com/zy/api/entity/OrderParams.java
@@ -1,7 +1,6 @@
 package com.zy.api.entity;
 
 import java.io.Serializable;
-import java.util.List;
 
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -57,8 +56,8 @@
     private String cus_address;
 
 
-
-
+    @ApiModelProperty("WMS ID")
+    private String wms_id;
 
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
diff --git a/src/main/java/com/zy/api/entity/ReportOrderParams.java b/src/main/java/com/zy/api/entity/ReportOrderParams.java
index 848c55b..99585b2 100644
--- a/src/main/java/com/zy/api/entity/ReportOrderParams.java
+++ b/src/main/java/com/zy/api/entity/ReportOrderParams.java
@@ -45,4 +45,11 @@
         @ApiModelProperty("宸紓鏁伴噺")
         private Integer diff_qty;
 
+        @ApiModelProperty("鍘熶笂鏋舵淳宸ユ暟閲�")
+        private Integer old_qty;
+
+        @ApiModelProperty("鍙樻洿鏁伴噺")
+        private Integer new_qty;
+
+
 }
diff --git a/src/main/java/com/zy/api/entity/dto/XSR.java b/src/main/java/com/zy/api/entity/dto/XSR.java
index d241e06..842a586 100644
--- a/src/main/java/com/zy/api/entity/dto/XSR.java
+++ b/src/main/java/com/zy/api/entity/dto/XSR.java
@@ -10,7 +10,7 @@
 
 @Data
 @Accessors(chain = true)
-@ApiModel(value = "BaseResponse", description = "鍩虹鍝嶅簲")
+@ApiModel(value = "XSR", description = "鍩虹鍝嶅簲")
 public class XSR<T> {
     private static final String SUCCESS_CODE = "200";
     private static final String FAIL_CODE = "500";
@@ -23,7 +23,7 @@
 
     private String returnMessage;
 
-    private T data;
+    private T result;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@@ -47,7 +47,7 @@
                 .setSuccess(true)
                 .setMessage("鎿嶄綔鎴愬姛")
                 .setReturnMessage("鎿嶄綔鎴愬姛")
-                .setData(data);
+                .setResult(data);
     }
 
     public static <T> XSR<T> ok(T data, String message) {
@@ -56,7 +56,7 @@
                 .setSuccess(true)
                 .setMessage(message)
                 .setReturnMessage(message)
-                .setData(data);
+                .setResult(data);
     }
 
     public static <T> XSR<T> error(String message) {
diff --git a/src/main/java/com/zy/api/enums/MatLocType.java b/src/main/java/com/zy/api/enums/MatLocType.java
index 8d683ab..714ac23 100644
--- a/src/main/java/com/zy/api/enums/MatLocType.java
+++ b/src/main/java/com/zy/api/enums/MatLocType.java
@@ -48,4 +48,18 @@
             return null;
         }
     }
+
+
+    
+    public static String getMatTag(String type) {
+        if (type.equals(MatLocType.AUTOMATED.type)) {
+            return MatType.LARGE.type;
+        } else if (type.equals(MatLocType.SO_HOLDING.type)) {
+            return MatType.MIDDEL.type;
+        } else if (type.equals(MatLocType.EO_HOLDING.type)) {
+            return MatType.SMALL.type;
+        } else {
+            return null;
+        }
+    }
 }
diff --git a/src/main/java/com/zy/api/service/KopenApiService.java b/src/main/java/com/zy/api/service/KopenApiService.java
index b368a52..1cdb3a5 100644
--- a/src/main/java/com/zy/api/service/KopenApiService.java
+++ b/src/main/java/com/zy/api/service/KopenApiService.java
@@ -2,8 +2,10 @@
 
 import java.util.List;
 
+import com.zy.api.controller.params.PageRequestParams;
 import com.zy.api.entity.PubOrderParams;
 import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockAdjustParams;
 import com.zy.api.entity.StockUpOrderParams;
 import com.zy.api.entity.SyncMatParmas;
 import com.zy.api.entity.dto.XSR;
@@ -18,7 +20,7 @@
      * @param params
      * @return com.core.common.R
      */
-    XSR receiveOrders(PubOrderParams params);
+    XSR receiveOrders(List<PubOrderParams> params);
 
     /**
      * 鍩虹闆朵欢鍙樻洿
@@ -42,14 +44,14 @@
      * @param params
      * @return
      */
-    XSR getInDispatchResult(ReportOrderParam params);
+    XSR getInDispatchResult(List<ReportOrderParam> params);
 
     /**
      * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
      * @param params
      * @return
      */
-    XSR sendOutDispatch(PubOrderParams params);
+    XSR sendOutDispatch(List<PubOrderParams> params);
 
     /**
      * 澶囪揣鍗曚笅鍙�
@@ -58,5 +60,23 @@
      * @param params
      * @return com.core.common.R
      */
-    XSR getOutDetails(StockUpOrderParams params);
+    XSR getOutDetails(List<StockUpOrderParams> params);
+
+    /**
+     * 鏌ヨWMS搴撳瓨淇℃伅
+     * @author Ryan
+     * @date 2025/11/24 15:22
+     * @param params
+     * @return com.core.common.R
+     */
+    XSR getStockInfo(PageRequestParams params);
+
+    /**
+     * 闆朵欢鎹熸孩鍗曚笅鍙�
+     * @author Ryan
+     * @date 2025/11/24 15:22
+     * @param params
+     * @return com.core.common.R
+     */
+    XSR sendStockAdjust(List<StockAdjustParams> params, Long userId);
 }
diff --git a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
index b66d76f..a268ab6 100644
--- a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
@@ -15,6 +15,7 @@
 import com.zy.asrs.entity.result.HIKResultDTO;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.enums.TaskIOType;
+import com.zy.asrs.enums.TaskStatusType;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.LocCacheService;
 import com.zy.asrs.service.TaskService;
@@ -24,8 +25,10 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
@@ -48,47 +51,80 @@
      * @version 1.0
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R callAgvCarry(CallAgvParams params) {
-        if (params.getType().equals(OrderType.ORDER_OUT.type)) {
-            //缂撳瓨鍖哄嚭搴�
-        } else if (params.getType().equals(OrderType.ORDER_IN.type)) {
-            //缂撳瓨鍖哄叆搴�
-        } else {
-
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
+        if (Objects.isNull(params.getWrkNo())) {
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+
+        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
+        if (Objects.isNull(task)) {
+            return R.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+        }
+
+        if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+                .contains(task.getIoType())) {
+            // 鍏ュ簱
+            task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_IN.type);
+        } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+                .contains(task.getIoType())) {
+            // 鍑哄簱
+            task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_OUT.type);
+        }
+
+        if (!taskService.updateById(task)) {
+            throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+        }
+
         return R.ok();
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R callback(CallAgvParams params) {
-        //TODO 1. 鎼繍瀹屾垚锛屼慨鏀圭珯鐐瑰簱浣嶇姸鎬�
-        if (params.getType().equals(OrderType.ORDER_OUT.type)) {
-            //鍑哄簱鍗�
-            if (params.getStatus().equals("RUNING")) {
-                LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", params.getOrgLoc()));
-                if (Objects.isNull(locCache)) {
-                    throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦紒锛�");
-                }
-                if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
-                    locCache.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
-                }
-            } else if (params.getStatus().equals("FINISHED")) {
-                Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
-                if (Objects.isNull(task)) {
-                    throw new CoolException("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
-                }
-                if (!taskService.updateById(task)) {
-                    throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
-                }
-            }
-        } else {
-            //鍏ュ簱鍗�
-
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getWrkNo())) {
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
+        if (Objects.isNull(task)) {
+            return R.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
         }
 
-        return null;
-    }
+//        if (!Arrays.asList(TaskStatusType.AGV_TASK_ISSUED_IN.type, TaskStatusType.AGV_TASK_ISSUED_OUT.type).contains(task.getIoType())) {
+//            return R.error("");
+//        }
+//
+        if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+                .contains(task.getIoType())) {
+            // 鍏ュ簱
+            if (params.getStatus().equals("RUNNING")) {
+                task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_IN.type);
+            } else if (params.getStatus().equals("FINISHED")){
+                task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_IN.type);
 
+            }
+        } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+                .contains(task.getIoType())) {
+            // 鍑哄簱
+            if (params.getStatus().equals("RUNNING")) {
+                task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_OUT.type);
+            } else if (params.getStatus().equals("FINISHED")){
+                task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_OUT.type);
+            }
+        }
+
+        if (!taskService.updateById(task)) {
+            throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+
+        return R.ok("鎵ц瀹屾垚 锛侊紒");
+    }
 
     public HIKResultDTO sendAgvTask(HIKApiDTO haiKangApiDTO, String path) {
         HIKResultDTO result = new HIKResultDTO();
@@ -99,8 +135,10 @@
         forwardAGVTaskParam.setCtnrTyp(haiKangApiDTO.getCtnrType());
         forwardAGVTaskParam.setPriority(haiKangApiDTO.getPriority());
         List<ForwardAGVTaskDTO.PositionCodePaths> positionCodePathsList = new ArrayList<>();
-        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType()));
-        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType()));
+        positionCodePathsList
+                .add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType()));
+        positionCodePathsList
+                .add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType()));
         forwardAGVTaskParam.setPositionCodePath(positionCodePathsList);
         String body = JSON.toJSONString(forwardAGVTaskParam);
         String response = "";
@@ -118,7 +156,7 @@
                 result.setMessage(jsonObject.getString("message"));
                 log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIKApiConstant.AGV_IP + path, body, response);
             }
-//            {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
+            // {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
         } catch (Exception e) {
             result.setMessage(e.getMessage());
             log.error("鍙戦�乤gv浠诲姟寮傚父", e);
@@ -132,14 +170,12 @@
                         "127.0.0.1",
                         body,
                         response,
-                        result.isSuccess()
-                );
+                        result.isSuccess());
             } catch (Exception e) {
                 log.error("", e);
             }
         }
         return result;
     }
-
 
 }
diff --git a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
index 7573e27..0c96d13 100644
--- a/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/KopenApiServiceImpl.java
@@ -2,13 +2,16 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.R;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
+import com.zy.api.controller.params.PageRequestParams;
 import com.zy.api.entity.OrderItemsParam;
 import com.zy.api.entity.OrderParams;
 import com.zy.api.entity.OutOrderParams;
 import com.zy.api.entity.PubOrderParams;
 import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.StockAdjustParams;
 import com.zy.api.entity.StockUpOrderParams;
 import com.zy.api.entity.SyncMatParmas;
 import com.zy.api.entity.dto.XSR;
@@ -16,12 +19,18 @@
 import com.zy.api.enums.OrderType;
 import com.zy.api.enums.OrderWkType;
 import com.zy.api.service.KopenApiService;
+import com.zy.asrs.entity.CheckOrder;
+import com.zy.asrs.entity.CheckOrderDetl;
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.Mat;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.enums.CommonEnum;
 import com.zy.asrs.enums.OrderSettle;
 import com.zy.asrs.enums.OrderTypeEnum;
+import com.zy.asrs.service.CheckOrderDetlService;
+import com.zy.asrs.service.CheckOrderService;
+import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.MatService;
 import com.zy.asrs.service.OrderDetlService;
 import com.zy.asrs.service.OrderService;
@@ -33,6 +42,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -47,21 +57,32 @@
     private OrderDetlService orderDetlService;
     @Autowired
     private MatService matService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private CheckOrderService checkOrderService;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private CheckOrderDetlService checkOrderDetlService;
 
     /**
      * 鎺ユ敹涓嬪彂璁㈠崟淇℃伅
      *
-     * @param params
+     * @param orderParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 14:49
      */
     @Override
-    public XSR receiveOrders(PubOrderParams params) {
-        if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) {
-            return XSR.error("褰撳墠绫诲瀷涓嶆槸涓婃灦娲惧伐鍗曪紒锛�");
-        }
-        addOrUpdateOrders(params, "add");
+    public XSR receiveOrders(List<PubOrderParams> orderParams) {
+        orderParams.forEach(params -> {
+            if (params.getType().equals(OrderWkType.getTypeVal(params.getType()))) {
+                throw new CoolException("褰撳墠绫诲瀷涓嶆槸涓婃灦娲惧伐鍗曪紒锛�");
+            }
+            addOrUpdateOrders(params, "add");
+        });
+
         return XSR.ok("鍗曟嵁涓嬪彂鎴愬姛锛侊紒");
     }
 
@@ -73,7 +94,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public XSR getInDispatchResult(ReportOrderParam params) {
+    public XSR getInDispatchResult(List<ReportOrderParam> params) {
         if (Objects.isNull(params)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
@@ -106,29 +127,31 @@
     /**
      * 澶囪揣鎸囩ず娲惧伐鍗曚笅鍙�
      *
-     * @param params
+     * @param pubOrderParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 15:21
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public XSR sendOutDispatch(PubOrderParams params) {
-        if (Objects.isNull(params)) {
+    public XSR sendOutDispatch(List<PubOrderParams> pubOrderParams) {
+        if (Objects.isNull(pubOrderParams) || pubOrderParams.isEmpty()) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 鏍¢獙鍙傛暟
-        if (Objects.isNull(params.getDispatch_no())) {
-            return XSR.error("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getKopen_id())) {
-            return XSR.error("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getCompany_id())) {
-            return XSR.error("鍏徃ID涓嶈兘涓虹┖锛侊紒");
-        }
+        pubOrderParams.forEach(params -> {
+            // 鏍¢獙鍙傛暟
+            if (Objects.isNull(params.getDispatch_no())) {
+                throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getKopen_id())) {
+                throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getCompany_id())) {
+                throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+            }
 
-        addOrUpdateOrders(params, "add");
+            addOrUpdateOrders(params, "add");
+        });
 
         return XSR.ok("澶囪揣鎸囩ず娲惧伐鍗曚笅鍙戞垚鍔燂紒锛�");
     }
@@ -321,6 +344,7 @@
                 // 澶囪揣鍗曞嚭搴�
                 newOrder.setOrderNo(params.getPick_no());
                 newOrder.setNumber(params.getDispatch_no());
+                newOrder.setShipCode(params.getOrder_no());
                 newOrder.setCstmrName(params.getCus_id());
                 newOrder.setTel(params.getCus_address());
                 newOrder.setDocType(Long.parseLong(OrderTypeEnum.STOCK.type + ""));
@@ -396,53 +420,172 @@
     /**
      * 澶囪揣鍗曚笅鍙�
      *
-     * @param params
+     * @param stockUpParams
      * @return com.core.common.R
      * @author Ryan
      * @date 2025/11/24 15:40
      */
     @Override
-    public XSR getOutDetails(StockUpOrderParams params) {
-        if (Objects.isNull(params)) {
+    public XSR getOutDetails(List<StockUpOrderParams> stockUpParams) {
+        if (Objects.isNull(stockUpParams)) {
             return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 鏍¢獙鍙傛暟
-        if (Objects.isNull(params.getDispatch_no())) {
-            return XSR.error("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getKopen_id())) {
-            return XSR.error("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
-        }
-        if (Objects.isNull(params.getCompany_id())) {
-            return XSR.error("鍏徃ID涓嶈兘涓虹┖锛侊紒");
-        }
-        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
-            return XSR.error("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
-        }
-
-        List<OrderItemsParam> items = new ArrayList<>();
-        if (params.getDetails() != null) {
-            for (OutOrderParams detail : params.getDetails()) {
-                if (detail.getPartList() != null) {
-                    items.addAll(detail.getPartList());
+        stockUpParams.forEach(params -> {
+            if (Objects.isNull(params.getDispatch_no())) {
+                throw new CoolException("娲惧伐鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getKopen_id())) {
+                throw new CoolException("娴佹按鍙蜂笉鑳戒负绌猴紒锛�");
+            }
+            if (Objects.isNull(params.getCompany_id())) {
+                throw new CoolException("鍏徃ID涓嶈兘涓虹┖锛侊紒");
+            }
+            if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+                throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+            }
+            List<OrderItemsParam> items = new ArrayList<>();
+            if (params.getDetails() != null) {
+                for (OutOrderParams detail : params.getDetails()) {
+                    if (detail.getPartList() != null) {
+                        items.addAll(detail.getPartList());
+                    }
                 }
             }
-        }
 
-        params.getDetails().forEach(item -> {
-            PubOrderParams pubOrderParams = new PubOrderParams();
-            BeanUtils.copyProperties(params, pubOrderParams);
-            pubOrderParams.setType(item.getType())
-                    .setPick_no(item.getPick_no())
-                    .setCus_address(item.getCus_address())
-                    .setOrder_no(item.getOrder_no())
-                    .setUpdate_time(params.getUpdate_time())
-                    .setCus_id(item.getCus_id());
-            pubOrderParams.setDetails(item.getPartList());
-            addOrUpdateOrders(pubOrderParams, "add");
+            params.getDetails().forEach(item -> {
+                PubOrderParams pubOrderParams = new PubOrderParams();
+                BeanUtils.copyProperties(params, pubOrderParams);
+                pubOrderParams.setType(item.getType())
+                        .setPick_no(item.getPick_no())
+                        .setCus_address(item.getCus_address())
+                        .setOrder_no(item.getOrder_no())
+                        .setUpdate_time(params.getUpdate_time())
+                        .setCus_id(item.getCus_id());
+                pubOrderParams.setDetails(item.getPartList());
+                addOrUpdateOrders(pubOrderParams, "add");
+            });
         });
 
         return XSR.ok("澶囪揣鍗曚笅鍙戞垚鍔燂紒锛�");
     }
 
+    /**
+     * 鏌ヨWMS搴撳瓨淇℃伅
+     *
+     * @param params
+     * @return com.core.common.R
+     */
+    @Override
+    public XSR getStockInfo(PageRequestParams params) {
+        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+        if (!Objects.isNull(params.getPro_id())) {
+            wrapper.eq("supp_code", params.getPro_id());
+        }
+        if (!Objects.isNull(params.getPro_komcode())) {
+            wrapper.eq("matnr", params.getPro_komcode());
+        }
+
+        Page<LocDetl> locDetls = locDetlService.selectPage(new Page<>(params.getCurr(), params.getLimit()),  wrapper);
+
+        return XSR.ok(locDetls.getRecords());
+    }
+
+    /**
+     * 闆朵欢鎹熸孩鍗曚笅鍙�
+     * 
+     * @author Ryan
+     * @date 2025/11/24 15:22
+     * @param params
+     * @return com.core.common.R
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public XSR sendStockAdjust(List<StockAdjustParams> params, Long userId) {
+        if (Objects.isNull(params)) {
+            return XSR.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        params.forEach(param -> {
+            gentCheckOrders(param, userId);
+        });
+
+        return XSR.ok("闆朵欢鎹熸孩鍗曚笅鍙戞垚鍔燂紒锛�");
+    }
+
+    /** 鐢熸垚鏂扮殑闆朵欢鎹熸孩鍗� 
+     * @param userId */
+    @Transactional(rollbackFor = Exception.class)   
+    public void gentCheckOrders(StockAdjustParams params, Long userId) {
+        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+            throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+        }
+        // 鏍¢獙鍙傛暟
+        if (Objects.isNull(params.getBsby_no())) {
+            throw new CoolException("鎹熸孩鍗曠紪鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+
+        CheckOrder checkOrder = checkOrderService
+                .selectOne(new EntityWrapper<CheckOrder>().eq("order_no", params.getBsby_no()));
+        if (!Objects.isNull(checkOrder)) {
+            throw new CoolException("鎹熸孩鍗曞凡瀛樺湪锛侊紒");
+        }
+
+        CheckOrder order = new CheckOrder();
+        order.setOrderNo(params.getBsby_no());
+        order.setCstmrName(params.getCompany_id());
+        order.setDefNumber(params.getKopen_id());
+        order.setDocType(4L);
+        order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+        order.setSettle(Long.valueOf(CommonEnum.COMMON_ENUM_Y.type + ""));
+        order.setStatus(CommonEnum.COMMON_ENUM_Y.type);
+        order.setOrderTime(params.getUpdate_time());
+        order.setMemo(params.getResason());
+        order.setShipName(params.getReason_name());
+        order.setCreateTime(new Date());
+        order.setUpdateTime(new Date());
+
+        if (!checkOrderService.insert(order)) {
+            throw new CoolException("鎹熸孩鍗曟柊澧炲け璐ワ紒锛�");
+        }
+
+        if (Objects.isNull(params.getDetails()) || params.getDetails().isEmpty()) {
+            throw new CoolException("璁㈠崟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+        }
+
+        params.getDetails().forEach(item -> {
+            CheckOrderDetl checkOrderDetl = new CheckOrderDetl();
+            //閫氳繃鎵樼洏锛� 鐗╂枡缂栫爜锛� 渚涘簲鍟嗙紪鐮佹煡璇㈠簱瀛樻槑缁�
+            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                    .eq("matnr", item.getPro_komcode())
+                    .eq("zpallet", item.getLocation_no())
+                    .eq("supp_code", item.getPro_id()));
+            if (Objects.isNull(locDetl)) {
+                throw new CoolException("搴撳瓨涓嶅瓨鍦紒锛�");
+            }
+            BeanUtils.copyProperties(locDetl, checkOrderDetl);
+            checkOrderDetl.setLocDetlId(locDetl.getId());
+            checkOrderDetl.setOrderId(order.getId());
+            checkOrderDetl.setOrderNo(order.getOrderNo());
+            checkOrderDetl.setMatnr(locDetl.getMatnr());
+            checkOrderDetl.setMaktx(locDetl.getMaktx());
+            checkOrderDetl.setBatch(locDetl.getBatch());
+            checkOrderDetl.setSpecs(locDetl.getSpecs());
+            checkOrderDetl.setThreeCode(locDetl.getThreeCode());
+            checkOrderDetl.setSuppCode(locDetl.getSuppCode());
+            checkOrderDetl.setStandby1(locDetl.getSuppCode());
+            checkOrderDetl.setAnfme(new BigDecimal(locDetl.getAnfme().toString()));
+            checkOrderDetl.setDiffQty(BigDecimal.ZERO);
+            checkOrderDetl.setWorkQty(BigDecimal.ZERO);
+            checkOrderDetl.setStatus(1);
+            checkOrderDetl.setZpallet(locDetl.getZpallet());
+            checkOrderDetl.setCreateBy(userId);
+            checkOrderDetl.setCreateTime(new Date());
+            checkOrderDetl.setUpdateBy(userId);
+            checkOrderDetl.setUpdateTime(new Date());
+
+            if (!checkOrderDetlService.insert(checkOrderDetl)) {
+                throw new CoolException("淇濆瓨鐩樼偣鍗曟槑缁嗗け璐�");
+            }
+        });
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/controller/LocCacheController.java b/src/main/java/com/zy/asrs/controller/LocCacheController.java
index 10f96cb..e58146f 100644
--- a/src/main/java/com/zy/asrs/controller/LocCacheController.java
+++ b/src/main/java/com/zy/asrs/controller/LocCacheController.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.entity.LocCache;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.param.LocMastInitParam;
+import com.zy.asrs.enums.LocAreaType;
 import com.zy.asrs.service.LocCacheService;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
@@ -77,7 +78,15 @@
         if (Cools.isEmpty(locCache) || null==locCache.getLocNo()){
             return R.error();
         }
-        locCacheService.updateById(locCache);
+        LocCache cache = locCacheService.selectOne(new EntityWrapper<LocCache>()
+        .eq("loc_no", locCache.getLocNo()));
+        if (Cools.isEmpty(cache)){
+            return R.error("搴撲綅涓嶅瓨鍦�");
+        }
+        cache.setSort(locCache.getSort());
+        if (!locCacheService.updateById(cache)) {
+            return R.error("鏇存柊澶辫触");
+        }
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 2679d9f..1ca86a6 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -66,6 +66,13 @@
         return mobileService.collectionPakinView(params);
     }
 
+    /**
+     * SO/EO 鍖虹粍鎵�
+     * @author Ryan
+     * @date 2025/12/18 15:19
+     * @param params
+     * @return com.core.common.R
+     */
     @PostMapping("/agv/collectionPakin/auth")
     @ManagerAuth
     public R pdaAgvCollectionPakin(@RequestBody CollectionPakinParams params) {
@@ -337,6 +344,23 @@
         return R.ok("缁勬墭鎴愬姛");
     }
 
+    /**
+     * @author Ryan
+     * @date 2025/9/24
+     * @description: 鍛煎彨AGV杩斿洖
+     * @version 1.0
+     */
+    @ManagerAuth(memo = "鍛煎彨AGV杩斿洖")
+    @RequestMapping("/agv/call/back")
+    public R callAgvBack(@RequestBody AgvCallParams callAgvBackParam) {
+        if (Objects.isNull(callAgvBackParam.getOrgSite())) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+        }
+    
+       return mobileService.agvCallback(callAgvBackParam, getUserId());
+    }
+
+
     @ManagerAuth(memo = "缂撳啿搴撶‘璁や笂鏋�(妯℃嫙鐗╃悊鎸夐挳)")
     @RequestMapping("/cache/comb/pub")
     public R cacheCombPub(@RequestBody CompleteParam combParam) {
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index ec8168e..7717dcc 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -146,21 +146,30 @@
             List<Long> areaIds = basAreas.stream()
                     .map(BasAreas::getId)
                     .collect(Collectors.toList());
+            Map<Long, Double> locDetlUsage = new HashMap<>();
             for (OrderDetlPakout orderDetl : orderDetlPakouts) {
                 double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
                 if (issued <= 0.0D) {
                     continue;
                 }
-                List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
+                List<LocDetl> locDetls = locDetlService.queryStockAll(null, null,orderDetl.getMatnr(), orderDetl.getBatch(),
                         orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3(),areaIds);
                 for (LocDetl locDetl : locDetls) {
                     if (issued > 0) {
-                        LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                                issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
+                        Long detlId = locDetl.getId();
+                        Double used = locDetlUsage.getOrDefault(detlId, 0.0);
+                        Double available = locDetl.getAnfme() - used;
+                        if (available <= 0.000001) {
+                            continue;
+                        }
+
+                        Double currentIssue = (issued >= available) ? available : issued;
+
+                        LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), currentIssue);
                         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                         locDto.setFrozen(locDetl.getFrozen());
                         locDto.setFrozenLoc(locMast.getFrozen());
-                        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
+                        List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), currentIssue >= available ? 101 : 103);
                         locDto.setStaNos(staNos);
                         locDto.setBrand(orderDetl.getBrand());
 
@@ -171,9 +180,10 @@
                         locDto.setBoxType2(orderDetl.getBoxType2());
                         locDto.setBoxType3(orderDetl.getBoxType3());
                         locDtos.add(locDto);
-                        exist.add(locDetl.getLocNo());
+                        
+                        locDetlUsage.put(detlId, used + currentIssue);
                         // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-                        issued = issued - locDetl.getAnfme();
+                        issued = issued - currentIssue;
                     } else {
                         break;
                     }
diff --git a/src/main/java/com/zy/asrs/entity/BasStation.java b/src/main/java/com/zy/asrs/entity/BasStation.java
index f2f4b9d..7d73f68 100644
--- a/src/main/java/com/zy/asrs/entity/BasStation.java
+++ b/src/main/java/com/zy/asrs/entity/BasStation.java
@@ -311,17 +311,17 @@
             return null;
         }
         if (this.locSts.equals(LocStsType.LOC_STS_TYPE_O.type)) {
-            return LocStsType.LOC_STS_TYPE_O.type +  "." +  LocStsType.LOC_STS_TYPE_O.desc;
+            return  LocStsType.LOC_STS_TYPE_O.desc;
         } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_R.type)) {
-            return LocStsType.LOC_STS_TYPE_R.type +  "." +  LocStsType.LOC_STS_TYPE_R.desc;
+            return  LocStsType.LOC_STS_TYPE_R.desc;
         } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_S.type)) {
-            return LocStsType.LOC_STS_TYPE_S.type +  "." +  LocStsType.LOC_STS_TYPE_S.desc;
+            return  LocStsType.LOC_STS_TYPE_S.desc;
         } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_F.type)) {
-            return LocStsType.LOC_STS_TYPE_F.type +  "." +  LocStsType.LOC_STS_TYPE_F.desc;
+            return  LocStsType.LOC_STS_TYPE_F.desc;
         } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_X.type)) {
-            return LocStsType.LOC_STS_TYPE_X.type +  "." +  LocStsType.LOC_STS_TYPE_X.desc;
+            return LocStsType.LOC_STS_TYPE_X.desc;
         } else if (this.locSts.equals(LocStsType.LOC_STS_TYPE_D.type)) {
-            return LocStsType.LOC_STS_TYPE_D.type +  "." +  LocStsType.LOC_STS_TYPE_D.desc;
+            return LocStsType.LOC_STS_TYPE_D.desc;
         }
         return null;
     }
diff --git a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
index 04afc24..bf76f08 100644
--- a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -5,9 +5,7 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.enums.CheckStatusEnum;
 import com.zy.asrs.service.OrderService;
-import com.zy.asrs.entity.Order;
 import com.baomidou.mybatisplus.annotations.TableField;
-import com.core.common.SpringUtils;
 import com.zy.common.utils.Synchro;
 import com.zy.system.service.UserService;
 import com.zy.system.entity.User;
@@ -16,15 +14,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.springframework.format.annotation.DateTimeFormat;
-import com.core.common.SpringUtils;
-import com.zy.system.service.UserService;
-import com.zy.system.entity.User;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/src/main/java/com/zy/asrs/entity/LocCache.java b/src/main/java/com/zy/asrs/entity/LocCache.java
index 8fad291..3309548 100644
--- a/src/main/java/com/zy/asrs/entity/LocCache.java
+++ b/src/main/java/com/zy/asrs/entity/LocCache.java
@@ -1,12 +1,10 @@
 package com.zy.asrs.entity;
 
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.core.common.SpringUtils;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.service.BasWhsTypeService;
-import com.zy.asrs.service.BasCrnpService;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -17,6 +15,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+
 import java.io.Serializable;
 
 @Data
@@ -27,7 +27,7 @@
 
 
     @ApiModelProperty("涓婚敭ID")
-    @TableId
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
@@ -214,7 +214,7 @@
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_D.type)) {
             return LocStsType.LOC_STS_TYPE_D.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_O.type)) {
-            return LocStsType.LOC_STS_TYPE_F.desc;
+            return LocStsType.LOC_STS_TYPE_O.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_R.type)) {
             return LocStsType.LOC_STS_TYPE_R.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_S.type)) {
diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java
index 491b94e..6efecb1 100644
--- a/src/main/java/com/zy/asrs/entity/Mat.java
+++ b/src/main/java/com/zy/asrs/entity/Mat.java
@@ -380,52 +380,7 @@
         this.memo = memo;
     }
 
-//    Mat mat = new Mat(
-//            null,    // 缂栧彿
-//            null,    // 鎵�灞炲綊绫�
-//            null,    // 鍟嗗搧缂栧彿
-//            null,    // 鍟嗗搧鍚嶇О
-//            null,    // 鍒悕
-//            null,    // 瑙勬牸
-//            null,    // 鍨嬪彿
-//            null,    // 棰滆壊
-//            null,    // 鍝佺墝
-//            null,    // 鍗曚綅
-//            null,    // 鍗曚环
-//            null,    // sku
-//            null,    // 鍗曚綅閲�
-//            null,    // 鏉$爜
-//            null,    // 浜у湴
-//            null,    // 鍘傚
-//            null,    // 鐢熶骇鏃ユ湡
-//            null,    // 鍝侀」鏁�
-//            null,    // 瀹夊叏搴撳瓨閲�
-//            null,    // 閲嶉噺
-//            null,    // 闀垮害
-//            null,    // 浣撶Н
-//            null,    // 涓夋柟缂栫爜
-//            null,    // 渚涘簲鍟�
-//            null,    // 渚涘簲鍟嗙紪鐮�
-//            null,    // 鏄惁鎵规
-//            null,    // 淇濊川鏈�
-//            null,    // 棰勮澶╂暟
-//            null,    // 鍒惰喘
-//            null,    // 瑕佹眰妫�楠�
-//            null,    // 鍗遍櫓鍝�
-//            null,    // 鐘舵�乕闈炵┖]
-//            null,    // 娣诲姞浜哄憳
-//            null,    // 娣诲姞鏃堕棿
-//            null,    // 淇敼浜哄憳
-//            null,    // 淇敼鏃堕棿
-//            null    // 澶囨敞
-//    );
-
     public String getTagId$(){
-//        TagService service = SpringUtils.getBean(TagService.class);
-//        Tag tag = service.selectById(this.tagId);
-//        if (!Cools.isEmpty(tag)){
-//            return String.valueOf(tag.getName());
-//        }
         return MatLocType.getTagName(this.tagId + "");
     }
 
@@ -443,6 +398,10 @@
         return null;
     }
 
+    public String getProType(){
+        return MatLocType.getMatTag(this.tagId + "");
+    }
+
     public String getBeBatch$(){
         if (null == this.beBatch){ return null; }
         switch (this.beBatch){
diff --git a/src/main/java/com/zy/asrs/entity/ViewWorkInBean.java b/src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
index 23f6b0d..8e4b75f 100644
--- a/src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
+++ b/src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.core.common.Cools;
 import com.core.common.SpringUtils;
+import com.zy.asrs.service.MatService;
 import com.zy.system.entity.User;
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
@@ -35,13 +36,16 @@
 	private String crn_end_time;
 
 	@ApiModelProperty(value= "宸ヤ綔鍙�")
-	private Integer wrk_no;
+	@TableField("wrk_no")
+	private Integer wrkNo;
 
 	@ApiModelProperty(value= "宸ヤ綔鏃堕棿")
-	private Date io_time;
+	@TableField("io_time")
+	private Date ioTime;
 
 	@ApiModelProperty(value= "搴撲綅鍙�")
-	private String loc_no;
+	@TableField("loc_no")
+	private String locNo;
 
 	@ApiModelProperty(value= "鎵樼洏鏉$爜")
 	private String zpallet;
@@ -114,13 +118,15 @@
 	private Double volume;
 
 	@ApiModelProperty(value= "涓夋柟缂栫爜")
-	private String three_code;
+	@TableField("three_code")
+	private String threeCode;
 
 	@ApiModelProperty(value= "渚涘簲鍟�")
 	private String supp;
 
 	@ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
-	private String supp_code;
+	@TableField("supp_code")
+	private String suppCode;
 
 	@ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
 	private Integer be_batch;
@@ -141,23 +147,27 @@
 	private Integer danger;
 
 	@ApiModelProperty(value= "淇敼浜哄憳")
-	private Long modi_user;
+	@TableField("modi_user")
+	private Long modiUser;
 
 	@ApiModelProperty(value= "淇敼鏃堕棿")
-	private Object modi_time;
+	@TableField("modi_time")
+	private Object modiTime;
 
 	@ApiModelProperty(value= "鍒涘缓鑰�")
-	private Long appe_user;
+	@TableField("appe_user")
+	private Long appeUser;
 
 	@ApiModelProperty(value= "娣诲姞鏃堕棿")
-	private Object appe_time;
+	@TableField("appe_time")
+	private Object appeTime;
 
 	@ApiModelProperty(value= "澶囨敞")
 	private String memo;
 
 	public String getModiUser$(){
 		UserService service = SpringUtils.getBean(UserService.class);
-		User user = service.selectById(this.modi_user);
+		User user = service.selectById(this.modiUser);
 		if (!Cools.isEmpty(user)){
 			return String.valueOf(user.getUsername());
 		}
@@ -166,7 +176,7 @@
 
 	public String getAppeUser$(){
 		UserService service = SpringUtils.getBean(UserService.class);
-		User user = service.selectById(this.appe_user);
+		User user = service.selectById(this.appeUser);
 		if (!Cools.isEmpty(user)){
 			return String.valueOf(user.getUsername());
 		}
@@ -174,10 +184,21 @@
 	}
 
 	public String getIoTime$(){
-		if (Cools.isEmpty(this.io_time)){
+		if (Cools.isEmpty(this.ioTime)){
 			return "";
 		}
-		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.io_time);
+		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+	}
+
+	public String getTag$() {
+		if (!Cools.isEmpty(this.matnr)){
+			MatService matnrService = SpringUtils.getBean(MatService.class);
+			Mat matnr = matnrService.selectByMatnr(this.matnr);
+			if (!Cools.isEmpty(matnr)){
+				return matnr.getTagId$();
+			}
+		}
+		return "";
 	}
 
 	public void setQuery_date(String query_date) {
diff --git a/src/main/java/com/zy/asrs/enums/LocStsType.java b/src/main/java/com/zy/asrs/enums/LocStsType.java
index fe48c4d..f2bc325 100644
--- a/src/main/java/com/zy/asrs/enums/LocStsType.java
+++ b/src/main/java/com/zy/asrs/enums/LocStsType.java
@@ -3,17 +3,17 @@
 public enum LocStsType {
 
     //绌烘澘
-    LOC_STS_TYPE_D("D", "绌烘澘"),
+    LOC_STS_TYPE_D("D", "D.绌烘澘"),
     //鍦ㄥ簱
-    LOC_STS_TYPE_F("F", "鍦ㄥ簱"),
+    LOC_STS_TYPE_F("F", "F.鍦ㄥ簱"),
     //绌哄簱
-    LOC_STS_TYPE_O("O", "绌哄簱"),
+    LOC_STS_TYPE_O("O", "O.绌哄簱"),
     //绂佺敤
-    LOC_STS_TYPE_X("X", "绂佺敤"),
+    LOC_STS_TYPE_X("X", "X.绂佺敤"),
     //鍏ュ簱棰勭害
-    LOC_STS_TYPE_S("S", "鍏ュ簱棰勭害"),
+    LOC_STS_TYPE_S("S", "S.鍏ュ簱棰勭害"),
     //鍑哄簱棰勭害
-    LOC_STS_TYPE_R("R", "鍑哄簱棰勭害"),
+    LOC_STS_TYPE_R("R", "R.鍑哄簱棰勭害"),
     ;
 
     public String type;
diff --git a/src/main/java/com/zy/asrs/enums/TaskStatusType.java b/src/main/java/com/zy/asrs/enums/TaskStatusType.java
new file mode 100644
index 0000000..a14be9f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/TaskStatusType.java
@@ -0,0 +1,40 @@
+package com.zy.asrs.enums;
+
+/**
+ * 宸ヤ綔鐘舵�佹灇涓�
+ * 鏍规嵁WrkStaus琛ㄧ敓鎴愬搴旀灇涓句俊鎭�
+ */
+public enum TaskStatusType {
+
+    IN_START("1", "1.鐢熸垚鍏ュ簱ID"),
+    DEVICE_MOVE("2", "2.璁惧涓婅蛋"),
+    CRANE_IN_PROGRESS("3", "3.鍚婅溅鍏ュ簱涓�"),
+    INBOUND_COMPLETED("4", "4.鍏ュ簱瀹屾垚"),
+    INBOUND_ARCHIVED("5", "5.搴撳瓨鏇存柊瀹屾垚"),
+    DEVICE_EXIT("6", "6.璁惧涓婇��鍑�"),
+    OUT_START("11", "11.鐢熸垚鍑哄簱ID"),
+    CRANE_OUT_PROGRESS("12", "12.鍚婅溅鍑哄簱涓�"),
+    CRANE_EMPTY_OUT_ERROR("13", "13.鍚婅溅绌哄嚭搴撻敊璇�"),
+    OUTBOUND_COMPLETED("14", "14.宸插嚭搴撴湭纭"),
+    OUTBOUND_ARCHIVED("15", "15.鍑哄簱鏇存柊瀹屾垚"),
+    AGV_IN_START("201", "201.鐢熸垚鍏ュ簱ID"),
+    AGV_TASK_ISSUED_IN("202", "202.浠诲姟涓嬪彂鎴愬姛"),
+    AGV_TASK_RUNNING_IN("203", "203.浠诲姟鎵ц涓�"),
+    AGV_TASK_FINISHED_IN("204", "204.浠诲姟鎵ц瀹屾垚"),
+    AGV_INVENTORY_UPDATED_IN("205", "205.搴撳瓨鏇存柊瀹屾垚"),
+    AGV_OUT_START("301", "301.鐢熸垚鍑哄簱ID"),
+    AGV_TASK_ISSUED_OUT("302", "302.浠诲姟涓嬪彂鎴愬姛"),
+    AGV_TASK_RUNNING_OUT("303", "303.浠诲姟鎵ц涓�"),
+    AGV_TASK_FINISHED_OUT("304", "304.浠诲姟鎵ц瀹屾垚"),
+    AGV_INVENTORY_UPDATED_OUT("305", "305.搴撳瓨鏇存柊瀹屾垚"),
+    ;
+
+    public Long type;
+    public String desc;
+
+    TaskStatusType(String type, String desc) {
+        this.type = Long.valueOf(type);
+        this.desc = desc;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index 69f50ce..ab3ffc7 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.mapper;
 
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.CheckOrder;
 import com.zy.asrs.entity.Order;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -25,4 +26,9 @@
 
     Order selectOrderMoveStatus();
     Order selectOrderMoveStatusInitial();
+    /**
+     * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+     * @return
+     */
+    List<CheckOrder> selectCompleteCheck();
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index bfb42a1..3d2864f 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -149,7 +149,23 @@
      */
     void combInPub(CompleteParam combParam, Long userId);
 
+    /**
+     * SO/EO 鍖虹粍鎵�
+     * @author Ryan
+     * @date 2025/12/18 15:19
+     * @param params
+     * @return com.core.common.R
+     */
     R collectionPakin(CollectionPakinParams params, Long userId);
 
     R collectionPakinView(CollectionPakinParams params);
+
+    /**
+     * 鍛煎彨AGV杩斿洖
+     * @author Ryan
+     * @date 2025/9/24
+     * @param callAgvBackParam
+     * @return com.core.common.R
+     */
+    R agvCallback(AgvCallParams callAgvBackParam, Long userId);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 878002f..667df16 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -1,10 +1,7 @@
 package com.zy.asrs.service;
 
-import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.*;
 import com.baomidou.mybatisplus.service.IService;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.entity.WrkDetl;
-import com.zy.asrs.entity.WrkMast;
 
 import java.util.List;
 
@@ -35,5 +32,11 @@
 
     Order selectOrderMoveStatus();
     Order selectOrderMoveStatusInitial();
+    
+    /**
+     * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+     * @return
+     */
+    List<CheckOrder> selectCompleteCheck();
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index a114a19..b07baec 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -700,13 +700,13 @@
                 OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),
                         elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
+                DetlDto detlDto = new DetlDto(order.getOrderNo(), elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(),
                         elem.getStandby2(), elem.getStandby3(),
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme(),
                         elem.getThreeCode());
                 detlDto.setOrderId(order.getId());
                 detlDto.setOrderNo(order.getOrderNo());
-                if (DetlDto.has(detlDtos, detlDto)) {
+                if (DetlDto.hasOrder(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
                     one.setAnfme(one.getAnfme() + detlDto.getAnfme());
@@ -991,7 +991,7 @@
                 try {
                     response = new HttpHandler.Builder()
                             .setUri(MesConstant.URL)
-                            .setPath(MesConstant.PACK_DOWN_URL)
+                            .setPath(MesConstant.IN_DISPATCH_RESULT)
                             .setJson(JSON.toJSONString(mesCombParam))
                             .build()
                             .doPost();
@@ -999,11 +999,11 @@
                     if (jsonObject.getInteger("code").equals(200)) {
                         success = true;
                     } else if (jsonObject.getInteger("code").equals(500)) {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                 JSON.toJSONString(mesCombParam), response);
                         throw new CoolException(jsonObject.getString("msg"));
                     } else {
-                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PACK_DOWN_URL,
+                        log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                 JSON.toJSONString(mesCombParam), response);
                         throw new CoolException("涓婃姤mes绯荤粺澶辫触");
                     }
@@ -1015,7 +1015,7 @@
                         // 淇濆瓨鎺ュ彛鏃ュ織
                         apiLogService.save(
                                 "鎵撳寘涓嬬嚎甯墭涓婃姤",
-                                MesConstant.URL + MesConstant.PACK_DOWN_URL,
+                                MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
                                 null,
                                 "127.0.0.1",
                                 JSON.toJSONString(mesCombParam),
@@ -1741,6 +1741,7 @@
                     throw new CoolException("鏁版嵁閿欒锛岀珯鐐逛笉瀛樺湪锛侊紒");
                 }
                 station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+                station.setBarcode("");
                 if (!basStationService.updateById(station)) {
                     throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
                 }
@@ -1785,6 +1786,7 @@
         }
 
         station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+        station.setBarcode("");
         if (!basStationService.updateById(station)) {
             throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐�!");
         }
@@ -1806,6 +1808,13 @@
         generateCrnInTask(waitPakins, station, param.getLocType1(), userId);
     }
 
+    /**
+     * SO/EO 鍖虹粍鎵�
+     * @author Ryan
+     * @date 2025/12/18 15:19
+     * @param params
+     * @return com.core.common.R
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R collectionPakin(CollectionPakinParams params, Long userId) {
@@ -2186,8 +2195,14 @@
                     .eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type)
                     .orderAsc(Arrays.asList("row1", "bay1", "lev1"))
                     .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+
+            if (Objects.isNull(locMast)) {
+                throw new CoolException("鏈煡璇㈠埌鍙敤鐨勭┖鏉夸俊鎭紒锛�");
+            }
+
             CrnTaskDetlDTO crnTaskDetlDTO = new CrnTaskDetlDTO().setLocNo(locMast.getLocNo()).setLocDetlList(locDetls);
             locMasts.add(crnTaskDetlDTO);
+
             // 绌烘澘鍑哄簱
             generateTask(locMasts, TaskIOType.MERGE_OUT.type, basDevp, userId, station);
         }
@@ -2295,7 +2310,7 @@
         Task task = new Task();
         task.setWrkNo(workNo)
                 .setIoTime(new Date())
-                .setWrkSts(11L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
                 .setIoType(loc.getLocSts().equals("D") ? 110 : 101) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
                 .setTaskType("agv")
                 .setIoPri(10D)
@@ -2372,11 +2387,6 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public void generateAgvTask(String type, LocCache loc, String orgSite, String barcode, Long userId) {
-        List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
-        if (Objects.isNull(pakins) || pakins.isEmpty()) {
-            throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
-        }
-
         List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("barcode", barcode));
         if (!tasks.isEmpty()) {
             throw new CoolException("鎵樼洏宸插湪浠诲姟鎵ц涓�..");
@@ -2387,7 +2397,7 @@
         Task task = new Task();
         task.setWrkNo(workNo)
                 .setIoTime(new Date())
-                .setWrkSts(1L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                .setWrkSts(201L) // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
                 .setIoType(1) // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
                 .setTaskType("agv")
                 .setIoPri(10D)
@@ -2407,32 +2417,39 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
 
-        for (WaitPakin pakin : pakins) {
-            TaskDetl wrkDetl = new TaskDetl();
-            BeanUtils.copyProperties(pakin, wrkDetl);
-            wrkDetl.setId(null).setWrkNo(workNo)
-                    .setIoTime(new Date())
-                    .setOrderNo(pakin.getOrderNo())
-                    .setAnfme(pakin.getAnfme())
-                    .setZpallet(pakin.getZpallet())
-                    .setBatch(pakin.getBatch())
-                    .setMatnr(pakin.getMatnr())
-                    .setMaktx(pakin.getMaktx())
-                    .setAppeUser(userId)
-                    .setUnit(pakin.getUnit())
-                    .setModel(pakin.getModel())
-                    .setAppeTime(new Date())
-                    .setModiUser(userId);
-            if (!taskDetlService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+        if (!type.equals("agv_back")) {
+            List<WaitPakin> pakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+            if (Objects.isNull(pakins) || pakins.isEmpty()) {
+                throw new CoolException("缁勬墭淇℃伅涓嶅瓨鍦紒锛�");
             }
 
-        }
+            for (WaitPakin pakin : pakins) {
+                TaskDetl wrkDetl = new TaskDetl();
+                BeanUtils.copyProperties(pakin, wrkDetl);
+                wrkDetl.setId(null).setWrkNo(workNo)
+                        .setIoTime(new Date())
+                        .setOrderNo(pakin.getOrderNo())
+                        .setAnfme(pakin.getAnfme())
+                        .setZpallet(pakin.getZpallet())
+                        .setBatch(pakin.getBatch())
+                        .setMatnr(pakin.getMatnr())
+                        .setMaktx(pakin.getMaktx())
+                        .setAppeUser(userId)
+                        .setUnit(pakin.getUnit())
+                        .setModel(pakin.getModel())
+                        .setAppeTime(new Date())
+                        .setModiUser(userId);
+                if (!taskDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
 
-        for (WaitPakin pakin : pakins) {
-            pakin.setIoStatus("Y");
-            if (!waitPakinService.updateById(pakin)) {
-                throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+            }
+
+            for (WaitPakin pakin : pakins) {
+                pakin.setIoStatus("Y");
+                if (!waitPakinService.updateById(pakin)) {
+                    throw new CoolException("鏇存柊缁勬墭淇℃伅澶辫触");
+                }
             }
         }
 
@@ -2454,9 +2471,9 @@
             throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
         }
 
-        if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+        if (station.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type) || station.getLocSts().equals(LocStsType.LOC_STS_TYPE_D.type)) {
             station.setLocSts("R"); // S.鍏ュ簱棰勭害
-//            station.setBarcode(barcode);
+            station.setBarcode(barcode);
             station.setModiTime(new Date());
             station.setModiUser(userId);
             if (!basStationService.updateById(station)) {
@@ -2520,4 +2537,76 @@
         }
         return result;
     }
+
+    /**
+     * 鍛煎彨AGV绌哄彴杞﹁繑鍥�
+     * @author Ryan
+     * @date 2025/9/24
+     * @param callAgvBackParam
+     * @return com.core.common.R
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R agvCallback(AgvCallParams callAgvBackParam, Long userId) {
+        if (Objects.isNull(callAgvBackParam.getOrgSite())) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+        }
+
+        // 鎸夊綋鍓嶆煡鎵惧簱浣嶉『搴忥紝鏌ュ埌涓�涓悗锛屼笉鍐嶅線涓嬫煡璇�
+        LocCache locCache = findPriorityLocCache();
+        
+        if (Objects.isNull(locCache)) {
+            return R.error("鏈煡璇㈠埌鍙敤搴撲綅");
+        }
+
+        // 淇敼鐩爣绔欑偣淇℃伅
+        BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", callAgvBackParam.getOrgSite()));
+        if (Objects.isNull(station)) {
+            throw new CoolException("绔欑偣涓嶅瓨鍦�!!");
+        }
+
+        try {
+            //绌哄彴杞﹀洖搴�
+            generateAgvTask("agv_back", locCache, callAgvBackParam.getOrgSite(), station.getBarcode(), userId);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error(e.getMessage());
+        }
+
+        return R.ok(locCache);
+    }
+
+    /**
+     * 鎸変紭鍏堢骇鏌ユ壘鍙敤搴撲綅
+     * 椤哄簭锛氬叆搴撶紦瀛樺尯 -> SO鍖� -> EO鍖�
+     */
+    private LocCache findPriorityLocCache() {
+        // 1. Try Inbound Cache Area
+        LocCache loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_IN_CACHE);
+        if (loc != null) return loc;
+
+        // 2. Try SO Area
+        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
+        if (loc != null) return loc;
+
+        // 3. Try EO Area
+        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
+        return loc;
+    }
+
+    /**
+     * 鏍规嵁鍖哄煙绫诲瀷鏌ユ壘鍙敤搴撲綅
+     */
+    private LocCache findAvailableLocByAreaType(LocAreaType areaType) {
+        BasAreas area = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", areaType.type));
+        if (area == null) {
+            return null;
+        }
+        return locCacheService.selectOne(new EntityWrapper<LocCache>()
+                .eq("area_id", area.getId())
+                .eq("frozen", 0)
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                .orderAsc(Arrays.asList("loc_no"))
+                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 912bdf6..29f7980 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -209,4 +209,13 @@
         return this.baseMapper.selectOrderMoveStatusInitial();
     }
 
+    /**
+     * 鏌ヨ鎹熸孩鍗曞畬缁撶殑璁㈠崟
+     * @return
+     */
+    @Override
+    public List<CheckOrder> selectCompleteCheck() {
+        return this.baseMapper.selectCompleteCheck();
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index 0543095..a94852e 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -59,7 +59,7 @@
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
             if (!Objects.isNull(station)) {
                 station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
-                station.setBarcode(null);
+                station.setBarcode("");
                 if (!basStationService.updateById(station)) {
                     throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐�!!");
                 }
@@ -214,7 +214,7 @@
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
             if (station.getLocSts().equals("S")) {
                 station.setLocSts("O");
-                station.setBarcode(null);
+                station.setBarcode("");
                 station.setModiTime(new Date());
                 station.setModiUser(userId);
                 if (!basStationService.updateById(station)) {
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 75e2e92..b239a2d 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.task;
 
 import com.core.common.Cools;
+import com.zy.asrs.entity.CheckOrder;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.enums.OrderTypeEnum;
 import com.zy.asrs.service.ApiLogService;
@@ -124,4 +125,37 @@
             }
         }
     }
+
+    /**鎹熸孩鍗曞畬缁撲笂鎶� */
+    @Scheduled(cron = "0/30 * * * * ?")
+    @Async("orderThreadPool")
+    public void completeCheckOrderReport() {
+        if (!ErpReportOld){
+            return;
+        }
+        String erpReport = Parameter.get().getErpReport();
+        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
+            List<CheckOrder> orders = orderService.selectCompleteCheck();
+            for (CheckOrder order : orders) {
+                try {
+                    ReturnT<String> result = orderSyncHandler.startCheckOrderReport(order);
+                    if (!result.isSuccess()) {
+                        log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+                    }
+                } catch (Exception e) {
+                    log.error(e.getMessage());
+                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+                }
+
+                try {
+                    Thread.sleep(300);
+                } catch (InterruptedException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index a4b3d7d..3ebadce 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -2,17 +2,27 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.exception.CoolException;
+import com.zy.api.entity.OrderItemsParam;
+import com.zy.api.entity.OutOrderParams;
+import com.zy.api.entity.PubOrderParams;
 import com.zy.api.entity.ReportOrderParam;
+import com.zy.api.entity.ReportOrderParams;
+import com.zy.api.entity.StockAdjustParams;
+import com.zy.api.entity.StockUpOrderParams;
+import com.zy.api.entity.dto.XSR;
 import com.zy.api.service.KopenApiService;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.enums.OrderTypeEnum;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.CheckOrderDetlServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.MesPakinParam;
@@ -26,7 +36,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Created by vincent on 2020/7/7
@@ -34,6 +46,8 @@
 @Slf4j
 @Service
 public class OrderSyncHandler extends AbstractHandler<String> {
+
+    private final CheckOrderDetlServiceImpl checkOrderDetlService;
 
     @Autowired
     private JdbcTemplate jdbcTemplate;
@@ -46,11 +60,17 @@
     @Autowired
     private DocTypeService docTypeService;
     @Autowired
-    private OrderPakinService  orderPakinService;
+    private OrderPakinService orderPakinService;
     @Autowired
     private OrderDetlPakinService orderDetlPakinService;
     @Autowired
     private KopenApiService kopenApiService;
+    @Autowired
+    private MatService matService;
+
+    OrderSyncHandler(CheckOrderDetlServiceImpl checkOrderDetlService) {
+        this.checkOrderDetlService = checkOrderDetlService;
+    }
 
     @Transactional
     public ReturnT<String> startOrderIssuedOnceMore(Order order) {
@@ -60,7 +80,7 @@
         }
 
         Order order1 = OrderInAndOutUtil.selectByNo(order.getPakinPakoutStatus$(), order.getOrderNo());
-        if (!Cools.isEmpty(order1)){
+        if (!Cools.isEmpty(order1)) {
             return FAIL.setMsg("璇风瓑寰�...璁㈠崟鎵ц妗f姝e湪杞巻鍙叉。妗堬紒锛侊紒");
         }
         List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
@@ -70,12 +90,12 @@
 
         // 鍗曟嵁鏄庣粏妗�
         List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
-        for (OrderDetl orderDetl : orderDetlList){
-            if (orderDetl.getQty().equals(0D)){
+        for (OrderDetl orderDetl : orderDetlList) {
+            if (orderDetl.getQty().equals(0D)) {
                 continue;
             }
             orderDetl.setWorkQty(orderDetl.getQty());
-            orderDetl.setAnfme(orderDetl.getAnfme()-orderDetl.getQty());
+            orderDetl.setAnfme(orderDetl.getAnfme() - orderDetl.getQty());
             orderDetl.setQty(0D);
             orderDetlService.updateById(orderDetl);
         }
@@ -87,7 +107,7 @@
         return SUCCESS;
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> startOrderIssued(Order order) {
         DocType docType = docTypeService.selectById(order.getDocType());
         if (null == docType) {
@@ -95,20 +115,25 @@
         }
         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
 
-        OrderInAndOutUtil.insertOrder(order.getPakinPakoutStatus$(),order);
+        OrderInAndOutUtil.insertOrder(order.getPakinPakoutStatus$(), order);
         // 鍗曟嵁鏄庣粏妗�
         List<DetlDto> list = new ArrayList<>();
         List<OrderDetl> orderDetlList = new ArrayList<>();
 
         for (OrderDetl detail : orderDetls) {
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(),detail.getBrand(),detail.getStandby1(),detail.getStandby2(),detail.getStandby3(),
-                    detail.getBoxType1(),detail.getBoxType2(),detail.getBoxType3(), detail.getAnfme(), detail.getThreeCode());
+            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getBrand(), detail.getStandby1(),
+                    detail.getStandby2(), detail.getStandby3(),
+                    detail.getBoxType1(), detail.getBoxType2(), detail.getBoxType3(), detail.getAnfme(),
+                    detail.getThreeCode());
             if (DetlDto.has(list, dto)) {
-                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
+                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(), dto.getBrand(), dto.getStandby1(),
+                        dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(), dto.getBoxType3());
                 assert detlDto != null;
                 detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
 
-                OrderDetl orderDetl = OrderDetl.find(orderDetlList, dto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3());
+                OrderDetl orderDetl = OrderDetl.find(orderDetlList, dto.getMatnr(), dto.getBatch(), dto.getBrand(),
+                        dto.getStandby1(), dto.getStandby2(), dto.getStandby3(), dto.getBoxType1(), dto.getBoxType2(),
+                        dto.getBoxType3());
                 assert orderDetl != null;
                 orderDetl.setAnfme(orderDetl.getAnfme() + detail.getAnfme());
             } else {
@@ -116,18 +141,17 @@
                 orderDetlList.add(detail);
             }
         }
-        for (OrderDetl orderDetl : orderDetlList){
+        for (OrderDetl orderDetl : orderDetlList) {
             orderDetl.setWorkQty(0D);
-            OrderInAndOutUtil.insertOrderDetl(order.getPakinPakoutStatus$(),order,orderDetl);
-            //灏忔澗锛氬鏋滀笅鍙戝璐ф淳宸ュ崟锛屽垯鐢熸垚澶囪揣鍑哄簱+澶囪揣鍏ュ簱
-            if (order.getDocType().equals(OrderTypeEnum.TRANSFER.type.longValue())){
+            OrderInAndOutUtil.insertOrderDetl(order.getPakinPakoutStatus$(), order, orderDetl);
+            // 灏忔澗锛氬鏋滀笅鍙戝璐ф淳宸ュ崟锛屽垯鐢熸垚澶囪揣鍑哄簱+澶囪揣鍏ュ簱
+            if (order.getDocType().equals(OrderTypeEnum.TRANSFER.type.longValue())) {
                 try {
-                    ifTransfetInsertStockIn(order,orderDetl);
-                }catch (Exception e){
+                    ifTransfetInsertStockIn(order, orderDetl);
+                } catch (Exception e) {
                     throw new CoolException(e.getMessage());
                 }
             }
-
         }
         // 淇敼璁㈠崟鐘舵�� 1.鏈綔涓� ===>> 2.浣滀笟涓�
         if (!orderService.updateSettle(order.getId(), 2L, null)) {
@@ -137,36 +161,34 @@
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void ifTransfetInsertStockIn(Order order, OrderDetl orderDetl){
+    public void ifTransfetInsertStockIn(Order order, OrderDetl orderDetl) {
         OrderPakin orderPakin = new OrderPakin();
-        BeanUtils.copyProperties(order,orderPakin);
+        BeanUtils.copyProperties(order, orderPakin);
         orderPakin.setDocType(OrderTypeEnum.STOCK_IN.type.longValue());
 
-        if (!orderPakinService.insert(orderPakin)){
+        if (!orderPakinService.insert(orderPakin)) {
             throw new CoolException("鎻掑叆澶囪揣鍏ュ簱鍗曞け璐�");
         }
         OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
-        BeanUtils.copyProperties(orderDetl,orderDetlPakin);
+        BeanUtils.copyProperties(orderDetl, orderDetlPakin);
         orderDetlPakin.setOrderId(orderPakin.getId());
 
-
-        if (!orderDetlPakinService.insert(orderDetlPakin)){
+        if (!orderDetlPakinService.insert(orderDetlPakin)) {
             throw new CoolException("鎻掑叆澶囪揣鍏ュ簱鍗曞け璐�");
         }
-
 
     }
 
     @Transactional
     public ReturnT<String> startOrderInAndOutUtil(Order order) {
-        //灏忔澗锛氳疆璁埌澶囪揣娲惧伐鍗曟槸鏌ヨ澶囪揣鍏ュ簱鍗曟槸鍚﹀畬鎴�
-        if (order.getDocType().equals(OrderTypeEnum.STOCK_IN.type.longValue())){
+        // 灏忔澗锛氳疆璁埌澶囪揣娲惧伐鍗曟槸鏌ヨ澶囪揣鍏ュ簱鍗曟槸鍚﹀畬鎴�
+        if (order.getDocType().equals(OrderTypeEnum.STOCK_IN.type.longValue())) {
             return SUCCESS;
         }
-        if (order.getDocType().equals(OrderTypeEnum.TRANSFER.type.longValue())){
+        if (order.getDocType().equals(OrderTypeEnum.TRANSFER.type.longValue())) {
             OrderPakin orderPakin = orderPakinService.selectByNo(order.getOrderNo());
             if (null != orderPakin) {
-                if (!orderPakin.getSettle().equals(4L)){
+                if (!orderPakin.getSettle().equals(4L)) {
                     return SUCCESS;
                 }
             }
@@ -176,32 +198,32 @@
             return SUCCESS;
         }
         Order orderSou = orderService.selectByNo(order.getOrderNo());
-        if (!orderSou.getSettle().equals(2L)){
+        if (!orderSou.getSettle().equals(2L)) {
             return FAIL.setMsg("璁㈠崟鐘舵�佷笉姝g‘锛岃鑱旂郴绠$悊鍛�");
         }
         List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(orderSou.getId());
 
         List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
 
-        for (OrderDetl orderDetlSou : orderDetlList){
-            for (OrderDetl orderDetl : orderDetls){
-                if (orderDetl.getQty().equals(0D)){
+        for (OrderDetl orderDetlSou : orderDetlList) {
+            for (OrderDetl orderDetl : orderDetls) {
+                if (orderDetl.getQty().equals(0D)) {
                     continue;
                 }
-                if (orderDetlSou.beSimilar(orderDetl)){
+                if (orderDetlSou.beSimilar(orderDetl)) {
                     double v = orderDetlSou.getAnfme() - orderDetlSou.getQty();
-                    if (v<orderDetl.getQty() || orderDetl.getQty().equals(v)){
+                    if (v < orderDetl.getQty() || orderDetl.getQty().equals(v)) {
                         orderDetlSou.setQty(orderDetlSou.getAnfme());
                         orderDetl.setQty(orderDetl.getQty() - v);
                         break;
                     } else {
-                        orderDetlSou.setQty(orderDetlSou.getQty()+orderDetl.getQty());
+                        orderDetlSou.setQty(orderDetlSou.getQty() + orderDetl.getQty());
                         orderDetl.setQty(0D);
                     }
                 }
             }
         }
-        for (OrderDetl orderDetlSou : orderDetlList){
+        for (OrderDetl orderDetlSou : orderDetlList) {
             orderDetlService.updateById(orderDetlSou);
         }
         // 淇敼璁㈠崟鐘舵�� 2.浣滀笟涓� ===>> 4.寰呬笂鎶�
@@ -209,18 +231,17 @@
             throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
         }
         // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.缁撴潫
-        OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(),order.getId(),6L,null);
+        OrderInAndOutUtil.updateOrder(order.getPakinPakoutStatus$(), order.getId(), 6L, null);
         return SUCCESS;
     }
 
-
-
     /**
      * 鍗曟嵁涓婃姤
-     * @author Ryan
-     * @date 2025/12/15 16:14
+     *
      * @param order
      * @return com.zy.asrs.task.core.ReturnT<java.lang.String>
+     * @author Ryan
+     * @date 2025/12/15 16:14
      */
     @Transactional
     public ReturnT<String> startOrderReport(Order order) {
@@ -230,34 +251,148 @@
         }
         long settle = 6L;
         List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
-        // 鍏ュ簱瀹屾垚涓婃姤
-        if (docType.getPakin() == 1) {
-            MesPakinParam pakinParam = new MesPakinParam();
-            pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime()));
-            pakinParam.setLgortFrom("5008");
-            pakinParam.setLgortTo("5006");
-            for (OrderDetl orderDetl : orderDetls) {
-                if (!orderDetl.getQty().equals(orderDetl.getAnfme())){
-                    settle = 99L;//浜屾鐢熸垚鍗曟嵁
-                }
-                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
-                pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
-            }
+        if (Integer.valueOf(docType.getDocId() + "").equals(OrderTypeEnum.PICKING.type)) {
+            // 涓婃灦娲惧伐鍗曞畬鎴�
+            ReportOrderParam orderParam = new ReportOrderParam();
+            orderParam.setCompany_id(order.getCstmrName())
+                    .setWms_id(order.getId() + "")
+                    .setOrder_no(order.getOrderNo())
+                    .setType(order.getDocType() + "")
+                    .setInv_no(order.getNumber())
+                    .setPm_tktid(order.getItemName())
+                    .setUpdate_time(Utils.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"))
+                    .setTarget_location("");
 
-            String response = "";
+            List<ReportOrderParams> reportOrderParams = new ArrayList<>();
+            orderDetls.forEach(detl -> {
+                Mat material = matService.selectByMatnr(detl.getMatnr());
+                if (Objects.isNull(material)) {
+                    throw new CoolException("鐗╂枡涓嶅瓨鍦�");
+                }
+                ReportOrderParams itemParam = new ReportOrderParams();
+                // BS Code
+                itemParam.setTotal_serial(detl.getThreeCode())
+                        // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                        .setPro_type(material.getProType())
+                        // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                        .setPro_komcode(detl.getMatnr())
+                        // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                        .setPro_id(detl.getSuppCode())
+                        // 涓婃姤鏃讹紝榛樿鏉ユ簮浣嶇疆鏄痭ull
+                        .setLocation_no(null)
+                        // 涓婃姤鏃讹紝榛樿鐩爣浣嶇疆鏄痭ull
+                        .setLocation_type(null)
+                        // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
+                        .setSj_date(order.getUpdateBy().toString())
+                        // 涓婃姤鏃讹紝榛樿涓婃姤浜烘槸鏇存柊浜�
+                        .setSj_emp(order.getUpdateBy$())
+                        // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
+                        .setPick_qty(detl.getQty().intValue())
+                        // 涓婃姤鏃讹紝榛樿鎹熷潖鏁伴噺鏄�0
+                        .setDamage_qty(0)
+                        // 涓婃姤鏃讹紝榛樿宸紓鏁伴噺鏄�0
+                        .setDiff_qty(0);
+
+                reportOrderParams.add(itemParam);
+            });
+
+            orderParam.setDetails(reportOrderParams);
+
+            XSR response = null;
             boolean success = false;
             try {
-                ReportOrderParam orderParam = new ReportOrderParam();
+                List<ReportOrderParam> orderParams = new ArrayList<>();
+                orderParams.add(orderParam);
+                response = kopenApiService.getInDispatchResult(orderParams);
 
-                kopenApiService.getInDispatchResult(orderParam);
-//                response = new HttpHandler.Builder()
-//                        .setUri(MesConstant.URL)
-//                        .setPath(MesConstant.PAKIN_URL)
-//                        .setJson(JSON.toJSONString(pakinParam))
-//                        .build()
-//                        .doPost();
-//                JSONObject jsonObject = JSON.parseObject(response);
-//                if (jsonObject.getInteger("code").equals(200)) {
+                // if (true) {
+                // success = true;
+                // // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+                // if (!orderService.updateSettle(order.getId(), settle, null)) {
+                // throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                // }
+                // } else {
+                // log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL +
+                // MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response);
+                // throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+                // }
+            } catch (Exception e) {
+                log.error("fail", e);
+                // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg(e.getMessage());
+            } finally {
+                try {
+                    // 淇濆瓨鎺ュ彛鏃ュ織
+                    apiLogService.save(
+                            "涓婃灦娲惧伐鍗曞畬鎴愪笂鎶�",
+                            MesConstant.URL + MesConstant.IN_DISPATCH_RESULT,
+                            null,
+                            "127.0.0.1",
+                            JSON.toJSONString(orderParam),
+                            JSON.toJSONString(response),
+                            success);
+                } catch (Exception e) {
+                    log.error("", e);
+                }
+            }
+        } else if (Integer.valueOf(docType.getDocId() + "").equals(OrderTypeEnum.TRANSFER.type)) {
+            // 澶囪揣娲惧伐鍗曪紙鍑哄簱锛�
+            ReportOrderParam orderParam = new ReportOrderParam();
+            orderParam.setCompany_id(order.getCstmrName())
+                    .setWms_id(order.getId() + "")
+                    .setOrder_no(order.getOrderNo())
+                    .setType(order.getDocType() + "")
+                    .setInv_no(order.getNumber())
+                    .setPm_tktid(order.getItemName())
+                    .setUpdate_time(Utils.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"))
+                    .setTarget_location("");
+
+            List<ReportOrderParams> reportOrderParams = new ArrayList<>();
+            orderDetls.forEach(detl -> {
+                Mat material = matService.selectByMatnr(detl.getMatnr());
+                if (Objects.isNull(material)) {
+                    throw new CoolException("鐗╂枡涓嶅瓨鍦�");
+                }
+                ReportOrderParams itemParam = new ReportOrderParams();
+                // BS Code
+                itemParam.setTotal_serial(detl.getThreeCode())
+                        // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                        .setPro_type(material.getProType())
+                        // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                        .setPro_komcode(detl.getMatnr())
+                        // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                        .setPro_id(detl.getSuppCode())
+                        // 涓婃姤鏃讹紝榛樿鏉ユ簮浣嶇疆鏄痭ull
+                        .setLocation_no(null)
+                        // 涓婃姤鏃讹紝榛樿鐩爣浣嶇疆鏄痭ull
+                        .setLocation_type(null)
+                        // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
+                        .setSj_date(order.getUpdateBy().toString())
+                        // 涓婃姤鏃讹紝榛樿涓婃姤浜烘槸鏇存柊浜�
+                        .setSj_emp(order.getUpdateBy$())
+                        // 涓婃姤鏃讹紝榛樿涓婃姤鏁伴噺鏄鍗曟暟閲�
+                        .setPick_qty(detl.getQty().intValue())
+                        // 涓婃姤鏃讹紝榛樿鎹熷潖鏁伴噺鏄�0
+                        .setDamage_qty(0)
+                        // 涓婃姤鏃讹紝榛樿宸紓鏁伴噺鏄�0
+                        .setDiff_qty(0);
+
+                reportOrderParams.add(itemParam);
+            });
+
+            orderParam.setDetails(reportOrderParams);
+
+            XSR response = null;
+            boolean success = false;
+            try {
+                // response = new HttpHandler.Builder()
+                // .setUri(MesConstant.URL)
+                // .setPath(MesConstant.PAKOUT_URL)
+                // .setJson(JSON.toJSONString(pakoutParam))
+                // .build()
+                // .doPost();
+                // JSONObject jsonObject = JSON.parseObject(response);
+                // if (jsonObject.getInteger("code").equals(200)) {
                 if (true) {
                     success = true;
                     // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
@@ -265,57 +400,79 @@
                         throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                     }
                 } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response);
-                    throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+                            MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT,
+                            JSON.toJSONString(orderParam), JSON.toJSONString(response));
+                    throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
                 }
             } catch (Exception e) {
                 log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg(e.getMessage());
             } finally {
                 try {
                     // 淇濆瓨鎺ュ彛鏃ュ織
                     apiLogService.save(
-                            "鎴愬搧搴撳叆搴撲笂鎶�",
-                            MesConstant.URL + MesConstant.PAKIN_URL,
+                            "澶囪揣娲惧伐鍗曞畬鎴愪笂鎶�",
+                            MesConstant.URL + MesConstant.OUT_DISPATCH_RESULT,
                             null,
                             "127.0.0.1",
-                            JSON.toJSONString(pakinParam),
-                            response,
-                            success
-                    );
-                } catch (Exception e) { log.error("", e); }
-            }
-        }
-        // 鍑哄簱瀹屾垚涓婃姤
-        if (docType.getPakout() == 1) {
-            MesPakoutParam pakoutParam = new MesPakoutParam();
-            pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("鎵嬪姩鍑哄簱鍗�"));
-            pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime()));
-            pakoutParam.setLgortFrom("5006");
-            pakoutParam.setLgortTo("1111");
-            if (!pakoutParam.isTag()) {
-                pakoutParam.setKunnr("C1000");
-            }
-            pakoutParam.setOrderNo(order.getOrderNo());
-            for (OrderDetl orderDetl : orderDetls) {
-                if (!orderDetl.getQty().equals(orderDetl.getAnfme())){
-                    settle = 99L;//浜屾鐢熸垚鍗曟嵁
+                            JSON.toJSONString(orderParam),
+                            JSON.toJSONString(response),
+                            success);
+                } catch (Exception e) {
+                    log.error("", e);
                 }
-                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
-                pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
             }
-            String response = "";
+        } else if (Integer.valueOf(docType.getDocId() + "").equals(OrderTypeEnum.STOCK.type)) {
+            // 澶囪揣鍗曞弽棣�
+            StockUpOrderParams stockUpOrderParams = new StockUpOrderParams();
+            stockUpOrderParams.setCompany_id(order.getCstmrName())
+                    .setWms_id(order.getId() + "")
+                    .setDispatch_no(order.getNumber());
+
+            OutOrderParams pubOrderParams = new OutOrderParams();
+            pubOrderParams.setPick_no(order.getOrderNo())
+                    .setOrder_no(order.getShipCode())
+                    .setCus_id(order.getCstmrName())
+                    .setCus_address(order.getTel());
+
+            List<OrderItemsParam> reportOrderParams = new ArrayList<>();
+            orderDetls.forEach(detl -> {
+                Mat material = matService.selectByMatnr(detl.getMatnr());
+                if (Objects.isNull(material)) {
+                    throw new CoolException("鐗╂枡涓嶅瓨鍦�");
+                }
+                OrderItemsParam itemParam = new OrderItemsParam();
+                // 涓婃姤鏃讹紝榛樿浜у搧绫诲瀷鏄痭ull
+                itemParam.setPro_type(material.getProType());
+                // 涓婃姤鏃讹紝榛樿浜у搧缂栫爜
+                itemParam.setPro_komcode(material.getMatnr());
+                // 涓婃姤鏃讹紝榛樿浜у搧id鏄緵搴斿晢缂栫爜
+                itemParam.setPro_id(detl.getSuppCode());
+
+                // 涓婃姤鏃讹紝榛樿涓婃姤鏃堕棿鏄洿鏂版椂闂�
+                itemParam.setPick_qty(detl.getQty().intValue());
+                reportOrderParams.add(itemParam);
+            });
+            pubOrderParams.setPartList(reportOrderParams);
+
+            List<OutOrderParams> pubOrderParamsList = new ArrayList<>();
+            pubOrderParamsList.add(pubOrderParams);
+            // 璁剧疆娲惧伐鍗曟槑缁�
+            stockUpOrderParams.setDetails(pubOrderParamsList);
+            stockUpOrderParams.setUpdate_time(order.getUpdateBy$());
+
+            XSR response = null;
             boolean success = false;
             try {
-//                response = new HttpHandler.Builder()
-//                        .setUri(MesConstant.URL)
-//                        .setPath(MesConstant.PAKOUT_URL)
-//                        .setJson(JSON.toJSONString(pakoutParam))
-//                        .build()
-//                        .doPost();
-//                JSONObject jsonObject = JSON.parseObject(response);
-//                if (jsonObject.getInteger("code").equals(200)) {
+                // response = new HttpHandler.Builder()
+                // .setUri(MesConstant.URL)
+                // .setPath(MesConstant.PAKOUT_URL)
+                // .setJson(JSON.toJSONString(pakoutParam))
+                // .build()
+                // .doPost();
+                // JSONObject jsonObject = JSON.parseObject(response);
+                // if (jsonObject.getInteger("code").equals(200)) {
                 if (true) {
                     success = true;
                     // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
@@ -323,29 +480,79 @@
                         throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                     }
                 } else {
-                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PAKOUT_URL, JSON.toJSONString(pakoutParam), response);
-                    throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}",
+                            MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
+                            JSON.toJSONString(stockUpOrderParams), JSON.toJSONString(response));
+                    throw new CoolException("涓婃姤KOPEN绯荤粺澶辫触");
                 }
             } catch (Exception e) {
                 log.error("fail", e);
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg(e.getMessage());
             } finally {
                 try {
                     // 淇濆瓨鎺ュ彛鏃ュ織
                     apiLogService.save(
-                            "鎴愬搧搴撳嚭搴撲笂鎶�",
-                            MesConstant.URL + MesConstant.PAKOUT_URL,
+                            "澶囪揣鍗曞畬鎴愪笂鎶�",
+                            MesConstant.URL + MesConstant.OUT_DETAILS_RESULT,
                             null,
                             "127.0.0.1",
-                            JSON.toJSONString(pakoutParam),
-                            response,
-                            success
-                    );
-                } catch (Exception e) { log.error("", e); }
+                            JSON.toJSONString(stockUpOrderParams),
+                            JSON.toJSONString(response),
+                            success);
+                } catch (Exception e) {
+                    log.error("", e);
+                }
             }
+
         }
         return SUCCESS;
     }
 
+    /**
+     * 鎹熸孩鍗曞畬缁撲笂鎶�
+     * 
+     * @param order
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public ReturnT<String> startCheckOrderReport(CheckOrder order) {
+        List<StockAdjustParams> adjustParams = new ArrayList<>();
+
+        StockAdjustParams adjustParam = new StockAdjustParams();
+
+        adjustParam.setCompany_id(order.getCstmrName())
+                .setWms_id(order.getId() + "")
+                .setType(0 + "")
+                .setCompany_id(order.getCstmrName());
+
+        adjustParam.setBsby_no(order.getNumber())
+                .setResason("")
+                .setReason_name("");
+        List<CheckOrderDetl> detls = checkOrderDetlService
+                .selectList(new EntityWrapper<CheckOrderDetl>().eq("order_id", order.getId()));
+        if (Objects.isNull(detls) || detls.isEmpty()) {
+            throw new CoolException("鎹熸孩鍗曡鎯呬笉瀛樺湪");
+        }
+        List<OrderItemsParam> items = new ArrayList<>();
+        detls.forEach(detl -> {
+            Mat material = matService.selectByMatnr(detl.getMatnr());
+            if (Objects.isNull(material)) {
+                throw new CoolException("鐗╂枡涓嶅瓨鍦�");
+            }
+            OrderItemsParam itemParam = new OrderItemsParam();
+            itemParam.setLocation_no(detl.getZpallet())
+                    .setPro_komcode(material.getMatnr())
+                    .setPro_id(detl.getSuppCode())
+                    .setBsby_qty(detl.getDiffQty().intValue());
+            items.add(itemParam);
+        });
+        adjustParam.setDetails(items);
+
+        adjustParams.add(adjustParam);
+
+        return SUCCESS;
+        // TODO Auto-generated method stub
+
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 4277ac2..6d3d458 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.enums.TaskStatusType;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
@@ -132,6 +133,7 @@
         return SUCCESS;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> AgvStart(Task task) {
         try {
             List<TaskDetl> taskDetls = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
@@ -153,7 +155,7 @@
             }
 
             // 鍏ュ簱 --------------------------------------------------------------------------------
-            if (task.getWrkSts() == 5) {
+            if (task.getWrkSts().equals(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type)) {
                 // 鍏ㄦ澘鍏ュ簱
                 if (task.getIoType() == 1) {
                     // 鍏ュ簱閫氱煡鍗�
@@ -183,7 +185,7 @@
                 }
 
                 // 鍑哄簱 --------------------------------------------------------------------------------
-            } else if (task.getWrkSts() == 15) {
+            } else if (task.getWrkSts().equals(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type)) {
 //                if (!Cools.isEmpty(wrkDetls)) {
 //                    if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) {
 //                        exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 3fb7968..1f869e2 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.enums.LocAreaType;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.enums.TaskIOType;
+import com.zy.asrs.enums.TaskStatusType;
 import com.zy.asrs.service.*;
 import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
@@ -430,7 +431,6 @@
                     if (wrkMast.getIoType() == TaskIOType.MERGE_IN.type) {
                         agvSta = wrkMast.getPauseMk();
                     }
-
                     // . 鍒犻櫎缂撳瓨绔欑偣鏄庣粏
                     if (!Objects.isNull(agvSta)) {
                         // 淇敼鐩爣绔欑偣淇℃伅
@@ -444,9 +444,6 @@
                             throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
                         }
                     }
-
-
-
                     break;
                 // 鐩樼偣鍏ュ簱
                 case 57:
@@ -731,10 +728,10 @@
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> AgvStart(Task task) {
         // 4.鍏ュ簱瀹屾垚
-        if (task.getWrkSts() == 4) {
+        if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_IN.type)) {
             return agvDoIn(task);
             // 14.鍑哄簱瀹屾垚
-        } else if (task.getWrkSts() == 14) {
+        } else if (task.getWrkSts().equals(TaskStatusType.AGV_TASK_FINISHED_OUT.type)) {
             return agvDoOut(task);
         }
         return SUCCESS;
@@ -743,7 +740,7 @@
     /**
      * @author Ryan
      * @date 2025/9/25
-     * @description: AGV鍑哄簱浠诲姟
+     * @description: AGV鍑哄簱浠�
      * @version 1.0
      */
     @Transactional(rollbackFor = Exception.class)
@@ -832,9 +829,7 @@
                 throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
             }
 
-
-
-            task.setWrkSts(15L);
+            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
             if (!taskService.updateById(task)) {
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
@@ -870,7 +865,7 @@
             if (!basStationService.updateById(devNo)) {
                 throw new CoolException("绔欑偣淇℃伅淇敼澶辫触锛侊紒");
             }
-            task.setWrkSts(15L);
+            task.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_OUT.type);
             if (!taskService.updateById(task)) {
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
@@ -883,7 +878,6 @@
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> agvDoIn(Task wrkMast) {
         LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
-
         if (!Objects.isNull(wrkMast.getSourceStaNo())) {
             BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>()
                     .eq("dev_no", wrkMast.getSourceStaNo()));
@@ -892,7 +886,7 @@
                 if (!list.contains(station.getLocSts())) {
                     station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                 }
-                station.setBarcode(null);
+                station.setBarcode("");
                 basStationService.updateById(station);
             }
         }
@@ -969,7 +963,7 @@
             if (!locCacheService.updateById(locCache)) {
                 throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒");
             }
-            wrkMast.setWrkSts(5L);
+            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
             wrkMast.setModiTime(new Date());
             if (!taskService.updateById(wrkMast)) {
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
@@ -1064,7 +1058,7 @@
             }
 
             // 淇敼宸ヤ綔涓绘。鐘舵��
-            wrkMast.setWrkSts(5L);
+            wrkMast.setWrkSts(TaskStatusType.AGV_INVENTORY_UPDATED_IN.type);
             wrkMast.setModiTime(now);
             if (!taskService.updateById(wrkMast)) {
                 // exceptionHandle("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 3bcb9d4..1927845 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -654,4 +654,15 @@
         return result;
     }
 
+    /**
+     * 鏃ユ湡杞崲涓哄瓧绗︿覆
+     * @param date 鏃ユ湡
+     * @param format 鏍煎紡
+     * @return 瀛楃涓�
+     */
+    public static String dateToStr(Date date, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        return sdf.format(date);
+    }
+
 }
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index e25557a..dfd72fa 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
         generator.url="192.168.4.15:1433;databasename=jsxsasrs";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="agv_bas_station_detl";
+        generator.table="man_order_pakin_rela";
         generator.packagePath="com.zy.asrs";
         generator.html = false;
         generator.js = false;
diff --git a/src/main/java/com/zy/common/constant/MesConstant.java b/src/main/java/com/zy/common/constant/MesConstant.java
index 0fc2f46..09762d3 100644
--- a/src/main/java/com/zy/common/constant/MesConstant.java
+++ b/src/main/java/com/zy/common/constant/MesConstant.java
@@ -5,13 +5,15 @@
  */
 public class MesConstant {
 
-    public static final String URL = "http://192.168.99.130:80";
+    //灏忕郴缁熸帴鍙e湴鍧�
+    public static final String URL = "http://webservice.kopen.com.cn:1482/kc-api/api/wms/ ";
 
-    public static final String PACK_DOWN_URL = "mes/api/zy/v1/packDown/sendList";
-
-    public static final String PAKIN_URL = "mes/api/zy/v1/warehouse/sendList";
-
-    public static final String PAKOUT_URL = "wmsFinprd/api/zy/v1/packOut/sendList";
+    //涓婃灦娲惧伐鍗曞弽棣�
+    public static final String IN_DISPATCH_RESULT = "getInDispatchResult";
+    //澶囪揣鎸囩ず娲惧伐鍗曞弽棣�
+    public static final String OUT_DISPATCH_RESULT = "getOutDispatchResult";
+    //澶囪揣璁㈠崟鍙嶉
+    public static final String OUT_DETAILS_RESULT = "getOutDetailsResult";
 
 
     /**
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index 6369afb..3b0902f 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -99,19 +99,20 @@
 
     }
 
-//    public DetlDto(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double anfme) {
-//        this.orderNo = orderNo;
-//        this.matnr = matnr;
-//        this.batch = batch;
-//        this.brand = brand;
-//        this.standby1 = standby1;
-//        this.standby2 = standby2;
-//        this.standby3 = standby3;
-//        this.boxType1 = boxType1;
-//        this.boxType2 = boxType2;
-//        this.boxType3 = boxType3;
-//        this.anfme = anfme;
-//    }
+    public DetlDto(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3, Double anfme, String threeCode) {
+        this.orderNo = orderNo;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.brand = brand;
+        this.standby1 = standby1;
+        this.standby2 = standby2;
+        this.standby3 = standby3;
+        this.boxType1 = boxType1;
+        this.boxType2 = boxType2;
+        this.boxType3 = boxType3;
+        this.anfme = anfme;
+        this.threeCode = threeCode;
+    }
 
     public DetlDto(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, Long lineNumber, String boxType1, String boxType2, String boxType3, Double anfme, String threeCode) {
         this.orderNo = orderNo;
@@ -220,6 +221,20 @@
         return false;
     }
 
+    public static boolean hasOrder(List<DetlDto> detlDtos, DetlDto detlDto) {
+        for (DetlDto dto : detlDtos) {
+            if (dto.getOrderNo().equals(detlDto.getOrderNo()) && dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch())
+                    && Cools.eq(dto.getBrand(), detlDto.getBrand()) && Cools.eq(dto.getStandby1(), detlDto.getStandby1())
+                    && Cools.eq(dto.getStandby2(), detlDto.getStandby2()) && Cools.eq(dto.getStandby3(), detlDto.getStandby3())
+                    && Cools.eq(dto.getBoxType1(), detlDto.getBoxType1()) && Cools.eq(dto.getBoxType2(), detlDto.getBoxType2())
+                    && Cools.eq(dto.getBoxType3(), detlDto.getBoxType3()) ) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
     public static boolean hasLineNumber(List<DetlDto> detlDtos, DetlDto detlDto) {
         for (DetlDto dto : detlDtos) {
             if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch())
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 681d5c3..d29e67c 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -30,7 +30,7 @@
   #  global-config:
   #    field-strategy: 0
   configuration:
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: true
     call-setters-on-nulls: true
diff --git a/src/main/resources/mapper/OrderDetlPakoutMapper.xml b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
index 7f70401..fcd4b25 100644
--- a/src/main/resources/mapper/OrderDetlPakoutMapper.xml
+++ b/src/main/resources/mapper/OrderDetlPakoutMapper.xml
@@ -100,6 +100,9 @@
         <if test="matnr!=null and matnr!='' ">
             and mod.matnr like '%' + #{matnr} + '%'
         </if>
+        <if test="doc_type!=null and doc_type!='' ">
+            and mo.doc_type like '%' + #{doc_type} + '%'
+        </if>
         <if test="maktx!=null and maktx!='' ">
             and mod.maktx like '%' + #{maktx} + '%'
         </if>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index f8c5070..270025a 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -118,5 +118,15 @@
         and move_status = 1
         order by update_time
     </select>
+    <select id="selectCompleteCheck" resultType="com.zy.asrs.entity.Order">
+        SELECT TOP
+            20 *
+        FROM
+            man_check_order
+        WHERE
+            settle = 4
+          AND status = 1
+          AND doc_type = 4
+    </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/OrderPakinMapper.xml b/src/main/resources/mapper/OrderPakinMapper.xml
index cd82c6c..f74704b 100644
--- a/src/main/resources/mapper/OrderPakinMapper.xml
+++ b/src/main/resources/mapper/OrderPakinMapper.xml
@@ -61,6 +61,7 @@
         where 1=1
         and settle = 4
         and status = 1
+        and doc_type != 7
         order by create_time asc
     </select>
 
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
index 16d8fda..0006c2d 100644
--- a/src/main/resources/mapper/TaskMapper.xml
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -9,13 +9,13 @@
 
     </resultMap>
     <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
-        select * from agv_task where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
+        select * from agv_task where ((wrk_sts = 204 Or wrk_sts = 304 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
     </select>
 
 
     <select id="selectToBeHistoryData" resultType="com.zy.asrs.entity.Task">
         select * from agv_task
-        where wrk_sts=5 or wrk_sts=15
+        where wrk_sts=205 or wrk_sts=305
         order by io_time,wrk_no asc
     </select>
 
diff --git a/src/main/resources/mapper/ViewWorkInMapper.xml b/src/main/resources/mapper/ViewWorkInMapper.xml
index 0f5d0cd..043a29e 100644
--- a/src/main/resources/mapper/ViewWorkInMapper.xml
+++ b/src/main/resources/mapper/ViewWorkInMapper.xml
@@ -5,8 +5,8 @@
 
 <!-- mapper涓嶆敮鎸乻ql璇彞宓屽鏃讹紝閲囩敤sql鐗囨鍖呭惈鏂瑰紡锛岃В鍐硏ml鏍囩闂 -->
 <sql id="viewWorkInConditionSql">
-		<if test="loc_no!=null and loc_no!='' ">
-			and loc_no like '%' + #{loc_no} + '%'
+		<if test="locNo!=null and locNo!='' ">
+			and loc_no like '%' + #{locNo} + '%'
 		</if>
 		<if test="matnr!=null and matnr!='' ">
 			and matnr like '%' + #{matnr} + '%'
diff --git a/src/main/webapp/static/js/adjustOrder/adjustOrder.js b/src/main/webapp/static/js/adjustOrder/adjustOrder.js
index a5936e9..11ec3ab 100644
--- a/src/main/webapp/static/js/adjustOrder/adjustOrder.js
+++ b/src/main/webapp/static/js/adjustOrder/adjustOrder.js
@@ -3,7 +3,7 @@
     base: baseUrl + "/static/layui/lay/modules/"
 }).extend({
     notice: 'notice/notice',
-}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate','tableMerge','notice'], function () {
+}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate', 'tableMerge', 'notice'], function () {
     var $ = layui.jquery;
     var layer = layui.layer;
     var form = layui.form;
@@ -18,21 +18,21 @@
 
     // 娓叉煋鎼滅储妯℃澘
     $.ajax({
-        url: baseUrl+"/docType/list/auth",
-        headers: {'token': localStorage.getItem('token')},
+        url: baseUrl + "/docType/list/auth",
+        headers: { 'token': localStorage.getItem('token') },
         data: {
             limit: 9999
         },
         method: 'POST',
         success: function (res) {
-            if (res.code === 200){
+            if (res.code === 200) {
                 let template = Handlebars.compile($('#docTypeTpl').html());
                 $('#docType-query').html(template(res.data));
                 layui.form.render('select');
-            } else if (res.code === 403){
-                top.location.href = baseUrl+"/";
+            } else if (res.code === 403) {
+                top.location.href = baseUrl + "/";
             } else {
-                layer.msg(res.msg, {icon: 2})
+                layer.msg(res.msg, { icon: 2 })
             }
         }
     })
@@ -40,19 +40,22 @@
     // 娓叉煋琛ㄦ牸
     var insTb = table.render({
         elem: '#order',
-        url: baseUrl+'/adjustOrder/list/auth',
-        headers: {token: localStorage.getItem('token')},
+        url: baseUrl + '/adjustOrder/list/auth',
+        headers: { token: localStorage.getItem('token') },
         page: true,
         cellMinWidth: 100,
         cols: [[
-            {type: 'numbers'},
-            {field: 'orderNo', title: '鍗曟嵁缂栧彿'},
-            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
-            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
-            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
-            {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
-            {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
-            {align: 'center', title: '鎿嶄綔', toolbar: '#operate',}
+            { type: 'numbers' },
+            { field: 'orderNo', title: '鍗曟嵁缂栧彿' },
+            { field: 'docType$', align: 'center', title: '绫诲瀷', minWidth: 120, width: 120 },
+            { field: 'defNumber', align: 'center', title: '娴佹按鍙�', minWidth: 160, width: 160 },
+            { field: 'cstmrName', align: 'center', title: '鍏徃', minWidth: 160, width: 160 },
+            { field: 'orderTime', title: '璁㈠崟鏃堕棿', minWidth: 200, width: 200 },
+            { field: 'shipName', align: 'center', title: '璋冩暣鍘熷洜' },
+            { field: 'memo', align: 'center', title: '鍘熷洜鎻忚堪' },
+            { field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl', minWidth: 120, width: 120 },
+            { align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160 },
+            { align: 'center', title: '鎿嶄綔', toolbar: '#operate', }
         ]],
         request: {
             pageName: 'curr',
@@ -72,7 +75,7 @@
         done: function (res, curr, count) {
             limit();
             if (res.code === 403) {
-                top.location.href = baseUrl+"/";
+                top.location.href = baseUrl + "/";
             }
             insTbCount = count;
         }
@@ -80,7 +83,7 @@
 
     // 鎼滅储
     form.on('submit(tbSearch)', function (data) {
-        insTb.reload({where: data.field, page: {curr: 1}});
+        insTb.reload({ where: data.field, page: { curr: 1 } });
     });
 
     // 娣诲姞
@@ -94,11 +97,11 @@
         var layEvent = obj.event;
         if (layEvent === 'edit') {
             showEditModel(data);
-        }else if (layEvent === 'adjust') {
+        } else if (layEvent === 'adjust') {
             adjustComplete(data.id);
-        }else if (layEvent === 'export') {
+        } else if (layEvent === 'export') {
             export1(data.id);
-        }else if (layEvent === 'del') {
+        } else if (layEvent === 'del') {
             doDel(data.id);
         } else if (layEvent === 'complete') {
             doModify(data.id, data.orderNo, 4);
@@ -125,15 +128,17 @@
                         height: '450px;',
                         cellMinWidth: 100,
                         cols: [[
-                            {type: 'numbers'},
-                            {field: 'locNo', title: '搴撲綅鍙�', width: 120},
-                            {field: 'zpallet', title: '瀹瑰櫒鐮�', width: 120},
-                            {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                            {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
-                            {field: 'batch', title: '鎵瑰彿'},
-                            {field: 'diffQty', title: '宸紓鏁伴噺', style: 'font-weight: bold'},
-                            {field: 'specs', title: '瑙勬牸'},
-                            {field: 'status$', title: '鐘舵��'}
+                            { type: 'numbers' },
+                            { field: 'locNo', title: '搴撲綅鍙�', width: 120 },
+                            { field: 'zpallet', title: '瀹瑰櫒鐮�', width: 120 },
+                            { field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160 },
+                            { field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160 },
+                            { field: 'suppCode', title: '渚涘簲鍟嗙紪鐮�' },
+                            { field: 'length', align: 'center', title: '閲嶉噺', hide: false }
+                            ,{ field: 'volume', align: 'center', title: '灏哄', hide: false }
+                            ,{ field: 'diffQty', title: '宸紓鏁伴噺', style: 'font-weight: bold' },
+                            { field: 'specs', title: '瑙勬牸' },
+                            { field: 'status$', title: '鐘舵��' }
                         ]],
                         request: {
                             pageName: 'curr',
@@ -179,58 +184,58 @@
                 form.on('submit(orderEditSubmit)', function (data) {
                     // 缁勮鏁版嵁
                     if (xxDataList.length <= 0) {
-                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']});
+                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', { tips: [1, '#ff4c4c'] });
                         return false;
                     }
                     let nList = admin.util.deepClone(xxDataList);
                     layer.load(2);
-                    if (isExpAdd){
+                    if (isExpAdd) {
                         $.ajax({
-                            url: baseUrl+"/checkOrder/form/" + "add" + "/auth",
-                            headers: {'token': localStorage.getItem('token')},
+                            url: baseUrl + "/checkOrder/form/" + "add" + "/auth",
+                            headers: { 'token': localStorage.getItem('token') },
                             data: JSON.stringify({
                                 orderId: Number(data.field.id),
                                 docType: Number(data.field.docType),
                                 orderNo: data.field.orderNo,
                                 locDetlList: nList
                             }),
-                            contentType:'application/json;charset=UTF-8',
+                            contentType: 'application/json;charset=UTF-8',
                             method: 'POST',
                             success: function (res) {
                                 layer.closeAll('loading');
-                                if (res.code === 200){
+                                if (res.code === 200) {
                                     layer.close(dIndex);
                                     $(".layui-laypage-btn")[0].click();
-                                    layer.msg(res.msg, {icon: 1});
-                                } else if (res.code === 403){
-                                    top.location.href = baseUrl+"/";
-                                }else {
-                                    layer.msg(res.msg, {icon: 2});
+                                    layer.msg(res.msg, { icon: 1 });
+                                } else if (res.code === 403) {
+                                    top.location.href = baseUrl + "/";
+                                } else {
+                                    layer.msg(res.msg, { icon: 2 });
                                 }
                             }
                         })
-                    }else {
+                    } else {
                         $.ajax({
-                            url: baseUrl+"/checkOrder/form/" + "modify" + "/auth",
-                            headers: {'token': localStorage.getItem('token')},
+                            url: baseUrl + "/checkOrder/form/" + "modify" + "/auth",
+                            headers: { 'token': localStorage.getItem('token') },
                             data: JSON.stringify({
                                 orderId: Number(data.field.id),
                                 docType: Number(data.field.docType),
                                 orderNo: data.field.orderNo,
                                 checkOrderDetls: nList
                             }),
-                            contentType:'application/json;charset=UTF-8',
+                            contentType: 'application/json;charset=UTF-8',
                             method: 'POST',
                             success: function (res) {
                                 layer.closeAll('loading');
-                                if (res.code === 200){
+                                if (res.code === 200) {
                                     layer.close(dIndex);
                                     $(".layui-laypage-btn")[0].click();
-                                    layer.msg(res.msg, {icon: 1});
-                                } else if (res.code === 403){
-                                    top.location.href = baseUrl+"/";
-                                }else {
-                                    layer.msg(res.msg, {icon: 2});
+                                    layer.msg(res.msg, { icon: 1 });
+                                } else if (res.code === 403) {
+                                    top.location.href = baseUrl + "/";
+                                } else {
+                                    layer.msg(res.msg, { icon: 2 });
                                 }
                             }
                         })
@@ -242,21 +247,21 @@
                 var xxDataList = [];
                 var tbOptions = {
                     elem: '#formSSXMTable',
-                    headers: {token: localStorage.getItem('token')},
+                    headers: { token: localStorage.getItem('token') },
                     data: xxDataList,
                     page: true,
                     height: '350px;',
                     cellMinWidth: 100,
                     cols: [[
-                        {type: 'numbers', title: '#'},
-                        {field: 'locNo', title: '搴撲綅鍙�'},
-                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
-                        {field: 'batch', title: '鎵瑰彿'},
-                        {field: 'specs', title: '瑙勬牸'},
-                        {field: 'anfme', title: '鏁伴噺', minWidth: 110, width: 110},
+                        { type: 'numbers', title: '#' },
+                        { field: 'locNo', title: '搴撲綅鍙�' },
+                        { field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160 },
+                        { field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200 },
+                        { field: 'batch', title: '鎵瑰彿' },
+                        { field: 'specs', title: '瑙勬牸' },
+                        { field: 'anfme', title: '鏁伴噺', minWidth: 110, width: 110 },
                         // {field: 'unit', title: '鍗曚綅', width: 80},
-                        {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
+                        { align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right' }
                     ]],
                     done: function (res) {
                         $(layero).find('.layui-table-view').css('margin', '0');
@@ -265,18 +270,18 @@
                 };
                 if (!isExpAdd) {
                     $.ajax({
-                        url: baseUrl+"/checkOrderDetl/select/all?orderId=" + expTpe.id,
-                        headers: {'token': localStorage.getItem('token')},
+                        url: baseUrl + "/checkOrderDetl/select/all?orderId=" + expTpe.id,
+                        headers: { 'token': localStorage.getItem('token') },
                         method: 'GET',
                         async: false,
                         success: function (res) {
-                            if (res.code === 200){
+                            if (res.code === 200) {
                                 xxDataList = res.data;
                                 tbOptions.data = xxDataList;
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2})
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl + "/";
+                            } else {
+                                layer.msg(res.msg, { icon: 2 })
                             }
                         }
                     })
@@ -287,8 +292,8 @@
                     var data = obj.data;
                     var layEvent = obj.event;
                     if (layEvent === 'del') {
-                        if(data.workQty > 0){
-                            layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", {icon: 2});
+                        if (data.workQty > 0) {
+                            layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", { icon: 2 });
                             return;
                         }
                         layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
@@ -302,13 +307,13 @@
                                     break;
                                 }
                             }
-                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                            insTbSSXM.reload({ data: xxDataList, page: { curr: 1 } });
                         });
                     }
                 });
 
                 // 鍏ㄥ眬鍑芥暟锛岀敤浜庢帴鏀朵粠搴撳瓨鏌ヨ椤甸潰杩斿洖鐨勬暟鎹�
-                window.addCheckOrderTableData = function(data) {
+                window.addCheckOrderTableData = function (data) {
                     // 澶勭悊閫変腑鐨勫簱瀛樻暟鎹�
                     var addedCount = 0;
                     var duplicateCount = 0;
@@ -317,7 +322,7 @@
                         var isDuplicate = false;
                         for (var j = 0; j < xxDataList.length; j++) {
                             if (xxDataList[j].locNo === data[i].locNo && xxDataList[j].matnr === data[i].matnr && xxDataList[j].batch === data[i].batch) {
-                                if (xxDataList[j].diffQty !== 0){
+                                if (xxDataList[j].diffQty !== 0) {
                                     isDuplicate = true;
                                     duplicateCount++;
                                     break;
@@ -325,22 +330,22 @@
 
                             }
                         }
-                        if (data[j].diffQty !== 0){
+                        if (data[j].diffQty !== 0) {
                             isDuplicate = true;
                             duplicateCount++;
                         }
                         // 濡傛灉涓嶉噸澶嶏紝鍒欐坊鍔犲埌鍒楄〃
                         if (!isDuplicate) {
-                            xxDataList.push({...data[i]});
+                            xxDataList.push({ ...data[i] });
                             addedCount++;
                         }
                     }
-                    insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                    insTbSSXM.reload({ data: xxDataList, page: { curr: 1 } });
                     // 鎻愮ず娣诲姞缁撴灉
                     if (duplicateCount > 0) {
-                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹紝' + duplicateCount + ' 鏉℃暟鎹凡蹇界暐', {icon: 1});
+                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹紝' + duplicateCount + ' 鏉℃暟鎹凡蹇界暐', { icon: 1 });
                     } else if (addedCount > 0) {
-                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹�', {icon: 1});
+                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹�', { icon: 1 });
                     }
                 };
 
@@ -350,7 +355,7 @@
 
                 // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥 - 鎻愬彇搴撳瓨
                 function showEditModel2(exp) {
-                    let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+                    let loadIndex = layer.msg('璇锋眰涓�...', { icon: 16, shade: 0.01, time: false });
                     layer.open({
                         type: 2,
                         title: '鎻愬彇搴撳瓨',
@@ -359,7 +364,7 @@
                         area: ['90%', '85%'],
                         shadeClose: true,
                         content: 'checkOrderLocQuery.html',
-                        success: function(layero, index){
+                        success: function (layero, index) {
                             layer.close(loadIndex);
                         }
                     });
@@ -378,25 +383,25 @@
             layer.close(i);
             layer.load(2);
             $.ajax({
-                url: baseUrl+"/checkOrder/delete/auth",
-                headers: {'token': localStorage.getItem('token')},
+                url: baseUrl + "/checkOrder/delete/auth",
+                headers: { 'token': localStorage.getItem('token') },
                 data: {
                     orderId: orderId
                 },
                 method: 'POST',
                 success: function (res) {
                     layer.closeAll('loading');
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         if (insTbCount === 0) {
-                            insTb.reload({page: {curr: 1}});
+                            insTb.reload({ page: { curr: 1 } });
                         } else {
                             $(".layui-laypage-btn")[0].click();
                         }
-                        layer.msg(res.msg, {icon: 1});
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    }else {
-                        layer.msg(res.msg, {icon: 2});
+                        layer.msg(res.msg, { icon: 1 });
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(res.msg, { icon: 2 });
                     }
                 }
             })
@@ -412,25 +417,25 @@
             layer.close(i);
             layer.load(2);
             $.ajax({
-                url: baseUrl+"/checkOrder/complete/auth",
-                headers: {'token': localStorage.getItem('token')},
+                url: baseUrl + "/checkOrder/complete/auth",
+                headers: { 'token': localStorage.getItem('token') },
                 data: {
                     orderId: orderId
                 },
                 method: 'POST',
                 success: function (res) {
                     layer.closeAll('loading');
-                    if (res.code === 200){
+                    if (res.code === 200) {
                         if (insTbCount === 0) {
-                            insTb.reload({page: {curr: 1}});
+                            insTb.reload({ page: { curr: 1 } });
                         } else {
                             $(".layui-laypage-btn")[0].click();
                         }
-                        layer.msg(res.msg, {icon: 1});
-                    } else if (res.code === 403){
-                        top.location.href = baseUrl+"/";
-                    }else {
-                        layer.msg(res.msg, {icon: 2});
+                        layer.msg(res.msg, { icon: 1 });
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(res.msg, { icon: 2 });
                     }
                 }
             })
@@ -442,31 +447,31 @@
         let loadIndex = layer.load(2);
         $.ajax({
             url: baseUrl + "/adjustOrder/complete/auth",
-            headers: {'token': localStorage.getItem('token')},
+            headers: { 'token': localStorage.getItem('token') },
             data: {
                 orderId: id
             },
             method: 'POST',
             success: function (res) {
-                if (res.code === 200){
+                if (res.code === 200) {
                     layer.close(loadIndex);
-                    layer.msg(res.msg, {icon: 1});
-                    insTb.reload({where: null});
-                } else if (res.code === 403){
-                    top.location.href = baseUrl+"/";
+                    layer.msg(res.msg, { icon: 1 });
+                    insTb.reload({ where: null });
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
                 } else {
                     layer.close(loadIndex);
-                    layer.msg(res.msg, {icon: 2})
+                    layer.msg(res.msg, { icon: 2 })
                 }
             }
         })
     }
 
     function export1(id) {
-        notice.msg('姝e湪瀵煎嚭鏂囦欢......', {icon: 4});
+        notice.msg('姝e湪瀵煎嚭鏂囦欢......', { icon: 4 });
         $.ajax({
             url: baseUrl + "/checkOrder/export/auth",
-            headers: {'token': localStorage.getItem('token')},
+            headers: { 'token': localStorage.getItem('token') },
             data: {
                 orderId: id
             },
@@ -486,9 +491,9 @@
                         filename = decodeURIComponent(matches[1].replace(/['"]/g, ''));
                     }
                 }
-                
+
                 // 鍒涘缓涓嬭浇閾炬帴
-                var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
+                var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
                 var link = document.createElement('a');
                 link.href = window.URL.createObjectURL(blob);
                 link.download = filename;
@@ -496,15 +501,15 @@
                 link.click();
                 document.body.removeChild(link);
                 window.URL.revokeObjectURL(link.href);
-                
-                layer.msg('瀵煎嚭鎴愬姛', {icon: 1});
+
+                layer.msg('瀵煎嚭鎴愬姛', { icon: 1 });
             },
             error: function (xhr, status, error) {
                 notice.destroy();
                 if (xhr.status === 403) {
                     top.location.href = baseUrl + "/";
                 } else {
-                    layer.msg('瀵煎嚭澶辫触锛�' + error, {icon: 2});
+                    layer.msg('瀵煎嚭澶辫触锛�' + error, { icon: 2 });
                 }
             }
         });
@@ -512,10 +517,10 @@
 
     function pakout(tableCache, layerIndex) {
         // let loadIndex = layer.load(2);
-        notice.msg('姝e湪鐢熸垚鐩樼偣鍑哄簱浠诲姟......', {icon: 4});
+        notice.msg('姝e湪鐢熸垚鐩樼偣鍑哄簱浠诲姟......', { icon: 4 });
         $.ajax({
             url: baseUrl + "/out/checkPakOut/auth",
-            headers: {'token': localStorage.getItem('token')},
+            headers: { 'token': localStorage.getItem('token') },
             contentType: 'application/json;charset=UTF-8',
             data: JSON.stringify(tableCache),
             method: 'POST',
@@ -523,12 +528,12 @@
                 notice.destroy();
                 if (res.code === 200) {
                     layer.close(layerIndex);
-                    layer.msg(res.msg, {icon: 1});
-                    insTb.reload({where: null});
+                    layer.msg(res.msg, { icon: 1 });
+                    insTb.reload({ where: null });
                 } else if (res.code === 403) {
                     top.location.href = baseUrl + "/";
                 } else {
-                    layer.msg(res.msg, {icon: 2})
+                    layer.msg(res.msg, { icon: 2 })
                 }
             }
         });
@@ -536,7 +541,7 @@
 
     layDate.render({
         elem: '.layui-laydate-range'
-        ,type: 'datetime'
-        ,range: true
+        , type: 'datetime'
+        , range: true
     });
 });
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index e767615..1770a64 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -246,7 +246,7 @@
     {field: 'matnr', align: 'center',title: '鍟嗗搧缂栧彿', sort:true}
     ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', sort:true}
     ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}
-    ,{field: 'standby1', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: false}
+    ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: false}
     ,{field: 'threeCode', align: 'center',title: 'BS Code', hide: false}
     ,{field: 'tag$', align: 'center',title: '闆朵欢绫诲瀷', hide: false}
     ,{field: 'batch', align: 'center',title: '鎵瑰彿', hide: true}
@@ -254,7 +254,7 @@
     ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', hide: false}
     ,{field: 'length', align: 'center',title: '閲嶉噺', hide: false}
     ,{field: 'volume', align: 'center',title: '灏哄', hide: false}
-    ,{field: 'modiTime$', align: 'center',title: '鏇存柊鏃堕棿', hide: false}
+    ,{field: 'modiTime', align: 'center',title: '鏇存柊鏃堕棿', hide: false}
     ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
     ,{field: 'specs', align: 'center',title: '瑙勬牸', hide: true}
     ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
diff --git a/src/main/webapp/static/js/locCache/locCache.js b/src/main/webapp/static/js/locCache/locCache.js
index b44b445..b836a62 100644
--- a/src/main/webapp/static/js/locCache/locCache.js
+++ b/src/main/webapp/static/js/locCache/locCache.js
@@ -23,13 +23,11 @@
         cols: [[{type: 'checkbox'}, {field: 'locNo', align: 'center', title: '搴撲綅鍙�', width: 120}
             , {field: 'barcode', align: 'center', title: '鎵樼洏鐮�'}
             , {field: 'areaName', align: 'center', title: '搴撳尯鍚嶇О'}
-            // , {field: 'whsType$', align: 'center', title: '搴撲綅绫诲瀷'}
-            , {field: 'locSts', align: 'center', title: '搴撲綅鐘舵��'}
+            , {field: 'locSts$', align: 'center', title: '搴撲綅鐘舵��'}
             , {field: 'row1', align: 'center', title: '鎺�'}
             , {field: 'bay1', align: 'center', title: '鍒�'}
             , {field: 'lev1', align: 'center', title: '灞�'}
-            // , {field: 'locType', align: 'center', title: '搴撲綅绫诲瀷'}
-            , {field: 'sort', align: 'center', title: '浼樺厛绾�'}
+            , {field: 'sort', align: 'center', title: '浼樺厛绾�', sort: true}
             , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳'}
             , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿'}
             , {field: 'appeUser$', align: 'center', title: '鍒涘缓鑰�'}
@@ -38,6 +36,8 @@
             , {field: 'frozenMemo', align: 'center', title: '鍐荤粨澶囨敞', hide: true}
             , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}]
         ],
+
+
         request: {
             pageName: 'curr', pageSize: 'limit'
         },
@@ -171,6 +171,49 @@
         })
     });
 
+    // 淇敼浼樺厛绾�
+    form.on('submit(updateProi)', function (data) {
+        var checkStatus = table.checkStatus('locCache').data;
+        if (checkStatus.length === 0) {
+            layer.msg('璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁淇℃伅', {icon: 2});
+            return false;
+        }
+        var sortVal = data.field.identifying;
+        var loadIndex = layer.load(2);
+        var promises = checkStatus.map(function (item) {
+            return new Promise(function (resolve, reject) {
+                $.ajax({
+                    url: baseUrl + "/locCache/update/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        id: item.id,
+                        locNo: item.locNo,
+                        sort: sortVal
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) resolve(res);
+                        else reject(res);
+                    },
+                    error: function (err) {
+                        reject(err);
+                    }
+                });
+            });
+        });
+
+        Promise.all(promises).then(function () {
+            layer.close(loadIndex);
+            layer.closeAll();
+            layer.msg("淇敼鎴愬姛");
+            tableReload(false);
+        }).catch(function (err) {
+            layer.close(loadIndex);
+            layer.msg("淇敼澶辫触: " + (err.msg || "鏈煡閿欒"));
+        });
+        return false;
+    });
+
     function batchModifies() {
         layer.open({
             type: 1,
diff --git a/src/main/webapp/static/js/report/workIn.js b/src/main/webapp/static/js/report/workIn.js
index ec329f9..c774179 100644
--- a/src/main/webapp/static/js/report/workIn.js
+++ b/src/main/webapp/static/js/report/workIn.js
@@ -1,8 +1,8 @@
 var pageCurr;
 function getCol() {
     var cols = [
-        {field: 'ioTime$', align: 'center', title: '鍏ュ簱鏃ユ湡', width: 200}
-        ,{field: 'loc_no', align: 'center',title: '搴撲綅鍙�'}
+        {field: 'ioTime', align: 'center', title: '鍏ュ簱鏃ユ湡', width: 200}
+        ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
     ];
     cols.push.apply(cols, detlCols);
     return cols;
diff --git a/src/main/webapp/views/locCache/locCache.html b/src/main/webapp/views/locCache/locCache.html
index ec258aa..5d019ad 100644
--- a/src/main/webapp/views/locCache/locCache.html
+++ b/src/main/webapp/views/locCache/locCache.html
@@ -30,6 +30,15 @@
                     </div>
                     <div class="layui-inline">
                         <div class="layui-input-inline">
+                            <select name="area_name">
+                                <option value="">搴撳尯鍚嶇О</option>
+                                <option value="鍏ュ簱鍖�">鍏ュ簱鍖�</option>
+                                <option value="闆嗚揣鍖�">闆嗚揣鍖�</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
                             <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�"
                                    autocomplete="off">
                         </div>
@@ -63,57 +72,14 @@
     <div class="layui-form layui-form-pane">
         <div class="layui-form-item">
             <div class="layui-inline">
-                <label class="layui-form-label"><span class="not-null">*</span>搴撳尯鍚嶇О锛�</label>
-                <div class="layui-input-inline cool-auto-complete">
-                    <input id="identifying" name="identifying" class="layui-input" type="text" style="display: none">
-                    <input id="identifying$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)"
-                           type="text" onfocus=this.blur()>
-                    <div class="cool-auto-complete-window">
-                        <input class="cool-auto-complete-window-input" data-key="basAreasQueryBywhsType"
-                               onkeyup="autoLoad(this.getAttribute('data-key'))">
-                        <select class="cool-auto-complete-window-select" data-key="basAreasQueryBywhsTypeSelect"
-                                onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                        </select>
-                    </div>
+                <label class="layui-form-label"><span class="not-null">*</span>浼樺厛绾э細</label>
+                <div class="layui-input-inline">
+                    <input id="identifying" name="identifying" class="layui-input" type="text">
                 </div>
             </div>
         </div>
-        <!-- 搴撲綅绫诲瀷 -->
-        <div class="layui-form-item">
-            <label class="layui-form-label">楂樹綆绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType1">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">浣庡簱浣�</option>
-                    <option value="2">楂樺簱浣�</option>
-                </select>
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">瀹界獎绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType2">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">绐勫簱浣�</option>
-                    <option value="2">瀹藉簱浣�</option>
-                </select>
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">杞婚噸绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType3">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">杞诲簱浣�</option>
-                    <option value="2">閲嶅簱浣�</option>
-                </select>
-            </div>
-        </div>
         <div style="text-align: center; margin-top: 20px">
-            <button class="layui-btn layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">
+            <button class="layui-btn layui-btn-normal" id="updateProi" lay-submit lay-filter="updateProi">
                 纭畾
             </button>
         </div>
diff --git a/src/main/webapp/views/report/viewWorkIn.html b/src/main/webapp/views/report/viewWorkIn.html
index b0caa2e..cf28bc6 100644
--- a/src/main/webapp/views/report/viewWorkIn.html
+++ b/src/main/webapp/views/report/viewWorkIn.html
@@ -21,7 +21,7 @@
 <div id="search-box" class="layui-form layui-card-header">
     <div class="layui-inline">
         <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+            <input class="layui-input" type="text" name="locNo" placeholder="搴撲綅鍙�" autocomplete="off">
         </div>
     </div>
     <div class="layui-inline">

--
Gitblit v1.9.1