From d18505cc87fa30a5b202057bbcc4236986efc80a Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 11 三月 2026 13:16:55 +0800
Subject: [PATCH] 纽维盛wms初始化-截至现在wms2.0已完善(带数据库)

---
 src/main/java/com/zy/asrs/task/WcsScheduler.java                          |   37 +
 src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java        |   77 ++
 src/main/java/com/zy/asrs/task/handler/OrderPakoutMoveHistoryHandler.java |   14 
 src/main/webapp/views/apiLog/apiLog.html                                  |    6 
 src/main/java/com/zy/common/config/AdminInterceptor.java                  |    4 
 src/main/resources/mapper/LocDetlMapper.xml                               |    2 
 src/main/resources/mapper/LocMastMapper.xml                               |   14 
 src/main/java/com/zy/asrs/task/handler/OrderPakinMoveHistoryHandler.java  |    6 
 src/main/java/com/zy/asrs/entity/OrderDetlPakin.java                      |    2 
 src/main/java/com/zy/asrs/entity/param/MatSyncParam.java                  |    2 
 src/main/java/com/zy/asrs/controller/WaitPakinController.java             |    2 
 src/main/java/com/zy/asrs/task/handler/WcsSchedulerHandler.java           |  103 +++
 src/main/java/com/zy/common/web/param/GetLocNoChangeParam.java            |   13 
 src/main/java/com/zy/common/model/StartupDto.java                         |    6 
 src/main/java/com/zy/common/web/AuthController.java                       |   33 
 src/main/java/com/zy/asrs/utils/Utils.java                                |   10 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java               |   72 +-
 src/main/java/com/zy/asrs/mapper/LocMastMapper.java                       |    2 
 src/main/resources/application-dev.yml                                    |   21 
 src/main/java/com/zy/asrs/controller/MatController.java                   |    3 
 src/main/java/com/zy/common/service/CommonService.java                    |   71 ++
 version/bak/nwswms.bak                                                    |    0 
 src/main/java/com/zy/system/controller/UserController.java                |    3 
 src/main/java/com/zy/asrs/entity/OrderDetlPakinLog.java                   |   18 
 src/main/java/com/zy/asrs/entity/param/QueryCombParam.java                |   10 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java                          |    4 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java                    |   24 
 src/main/java/com/zy/asrs/entity/OrderDetlPakoutLog.java                  |   18 
 src/main/resources/mapper/OrderDetlMapper.xml                             |    2 
 src/main/java/com/zy/asrs/entity/OrderPakinLog.java                       |    4 
 src/main/java/com/zy/asrs/entity/WaitPakinLog.java                        |   11 
 src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java             |   25 
 src/main/java/com/zy/asrs/entity/OrderPakoutLog.java                      |    4 
 src/main/java/com/zy/system/entity/license/AbstractServerInfos.java       |    6 
 src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java            |   25 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java               |   66 +-
 src/main/webapp/static/js/waitPakinLog/waitPakinLog.js                    |    5 
 src/main/webapp/views/login.html                                          |    3 
 src/main/java/com/zy/asrs/controller/OrderPakinController.java            |   15 
 src/main/java/com/zy/system/entity/license/CustomLicenseManager.java      |   38 
 src/main/java/com/zy/common/web/WcsController.java                        |  352 +++++++++++-
 src/main/java/com/zy/asrs/controller/WorkController.java                  |   38 
 src/main/java/com/zy/asrs/service/OpenService.java                        |    2 
 src/main/java/com/zy/system/timer/LoadingConfigTimer.java                 |    9 
 src/main/java/com/zy/asrs/service/ApiLogService.java                      |    2 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java             |   50 
 src/main/java/com/zy/asrs/entity/TaskLog.java                             |    2 
 src/main/java/com/zy/asrs/controller/OutController.java                   |    6 
 src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java         |   77 ++
 src/main/java/com/zy/asrs/service/WorkService.java                        |    4 
 src/main/java/com/zy/asrs/controller/OrderController.java                 |   21 
 src/main/java/com/zy/asrs/controller/OpenController.java                  |  194 ++++++
 src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java                |   10 
 src/main/webapp/static/js/apiLog/apiLog.js                                |    8 
 src/main/java/com/zy/asrs/entity/WrkMast.java                             |    9 
 src/main/resources/mapper/WrkMastMapper.xml                               |    3 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java                |    2 
 src/main/resources/mapper/OrderDetlPakinMapper.xml                        |    2 
 /dev/null                                                                 |   39 -
 src/main/java/com/zy/common/web/param/SearchLocParam.java                 |    7 
 src/main/java/com/zy/common/web/param/NotifyDto.java                      |   42 +
 src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java        |    6 
 src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java            |    4 
 63 files changed, 1,289 insertions(+), 381 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index f6c3aeb..f517f8a 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -63,8 +63,7 @@
     public R pdaSearch(@RequestParam(required = false) String condition) {
         EntityWrapper<Mat> wrapper = new EntityWrapper<>();
         if (!Cools.isEmpty(condition)) {
-//            wrapper.like("matnr", condition).or().like("maktx", condition);
-            wrapper.like("matnr", condition).or().like("specs", condition);
+            wrapper.like("matnr", condition).or().like("maktx", condition);
         }
         wrapper.orderBy("create_time", false);
         List<Mat> mats = matService.selectList(wrapper);
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 1f5a85f..0d11f16 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,24 +1,25 @@
 package com.zy.asrs.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.AppAuth;
 import com.core.common.*;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.param.MatSyncParam;
-import com.zy.asrs.entity.param.OpenOrderCompleteParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.entity.param.OpenOrderPakoutParam;
-import com.zy.asrs.service.OpenService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.*;
+import com.zy.asrs.mapper.ReportQueryMapper;
+import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
 import com.zy.common.web.BaseController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * Created by vincent on 2022/4/8
@@ -35,6 +36,180 @@
 
     @Autowired
     private OpenService openService;
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    @Resource
+    private WrkDetlService wrkDetlService;
+
+    @Resource
+    private WaitPakinService waitPakinService;
+
+    @Resource
+    private ReportQueryMapper reportQueryMapper;
+
+    @Resource
+    private LocDetlService locDetlService;
+
+    @Resource
+    private MatService matService;
+
+    /**
+     * 浠诲姟鏌ヨ鎺ュ彛
+     */
+    @PostMapping("/queryTask")
+    public synchronized R queryTask(@RequestBody QueryTaskParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getTaskNo())) {
+            return R.error("浠诲姟鍙穂taskNo]涓嶈兘涓虹┖");
+        }
+        WrkMast wrkMast = wrkMastService.selectById(param.getTaskNo());
+        if (wrkMast == null) {
+            return R.error("浠诲姟涓嶅瓨鍦�");
+        }
+
+        List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(Integer.valueOf(param.getTaskNo()));
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("taskNo", param.getTaskNo());
+        map.put("ioType", wrkMast.getIoType());
+        map.put("wrkDetls", wrkDetls);
+        return R.ok().add(map);
+    }
+
+    /**
+     * 缁勬墭鏌ヨ鎺ュ彛
+     */
+    @PostMapping("/queryComb")
+    public synchronized R queryComb(@RequestBody QueryCombParam param) {
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getBarcode())) {
+            return R.error("鎵樼洏鐮乕barcode]涓嶈兘涓虹┖");
+        }
+
+        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("barcode", param.getBarcode());
+        map.put("combDetls", waitPakins);
+        return R.ok().add(map);
+    }
+
+    /**
+     * 搴撳瓨淇℃伅鏌ヨ鎺ュ彛
+     */
+    @GetMapping("/queryLoc")
+    public synchronized R queryLoc() {
+        List<Map<String, Object>> pie = new ArrayList<>();
+        LocChartPie locUseRate = reportQueryMapper.getLocUseRate();
+
+        if (locUseRate != null) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("name", "鍦ㄥ簱");
+            map.put("value", locUseRate.getFqty());
+            pie.add(map);
+
+            Map<String, Object> map1 = new HashMap<>();
+            map1.put("name", "绌�");
+            map1.put("value", locUseRate.getOqty());
+            pie.add(map1);
+
+            Map<String, Object> map2 = new HashMap<>();
+            map2.put("name", "浣跨敤");
+            map2.put("value", locUseRate.getUqty());
+            pie.add(map2);
+
+            Map<String, Object> map3 = new HashMap<>();
+            map3.put("name", "绂佺敤");
+            map3.put("value", locUseRate.getXqty());
+            pie.add(map3);
+        }
+
+        // 鎬诲簱浣嶆暟
+        Integer total = (int) Arith.add(0, locUseRate.getFqty(), locUseRate.getOqty(), locUseRate.getUqty(), locUseRate.getXqty());
+        // 浣跨敤涓�
+        Integer used = locUseRate.getFqty() + locUseRate.getUqty();
+        // 搴撲綅浣跨敤鐜�
+        double usedDivides = Arith.divides(3, used, total);
+        double usedPr = Arith.multiplys(1, usedDivides, 100);
+
+        return R.ok(
+                Cools.add("pie", pie)
+                        .add("stockCount", locUseRate.getFqty())
+                        .add("emptyCount", locUseRate.getOqty())
+                        .add("disableCount", locUseRate.getXqty())
+                        .add("total", total)
+                        .add("used", used)
+                        .add("usedPr", usedPr)
+        );
+    }
+
+    @GetMapping("/line/charts")
+    public R locIoLineCharts(){
+        Map<String,Object> map=new HashMap<String, Object>();
+        List<AxisBean> list = new ArrayList<AxisBean>();
+
+        List<WorkChartAxis> listChart = reportQueryMapper.getChartAxis();
+
+        if(listChart!=null) {
+            ArrayList<Integer> data1 = new ArrayList<Integer>();
+            ArrayList<Integer> data2 = new ArrayList<Integer>();
+
+            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DATE, -12);
+            for(int i=0;i<12;i++) {
+                boolean flag = true;
+                calendar.add(Calendar.DATE, 1);
+                String str = sf.format(calendar.getTime());
+                for(WorkChartAxis workChart : listChart) {
+                    if(str.equals(workChart.getYmd())) {
+                        data1.add(workChart.getInqty());
+                        data2.add(workChart.getOutqty());
+                        flag = false;
+                        break;
+                    }
+                }
+                if(flag) {
+                    data1.add(0);
+                    data2.add(0);
+                }
+            }
+            AxisBean inqty = new AxisBean();
+            inqty.setName("鍏ュ簱鏁伴噺");
+            Integer[] array1 = new Integer[data1.size()];
+            inqty.setData(data1.toArray(array1));
+            list.add(inqty);
+            AxisBean outqty = new AxisBean();
+            outqty.setName("鍑哄簱鏁伴噺");
+            Integer[] array2 = new Integer[data2.size()];
+            outqty.setData(data2.toArray(array2));
+            list.add(outqty);
+        }
+        map.put("rows",list);
+        return R.ok(map);
+    }
+
+    /**
+     * 搴撳瓨鏁版嵁
+     */
+    @GetMapping("/locDetl/statistics")
+    public R locDetlStatistics(){
+        HashMap<String, Object> param = new HashMap<>();
+        Page<LocDetl> stockStatis = locDetlService.getStockStatis(toPage(1, 100, param, LocDetl.class));
+        for (LocDetl locDetl : stockStatis.getRecords()) {
+            Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+            if (mat != null) {
+                locDetl.sync(mat);
+            }
+        }
+        return R.ok(stockStatis);
+    }
 
     @PostMapping("/order/matSync/default/v2")
 //    @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
@@ -55,7 +230,7 @@
     }
 
     @PostMapping("/order/matSync/default/v1")
-//    @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛")
+    @AppAuth(memo = "鐗╂枡鍚屾")
     public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey,
                                       @RequestBody(required = false) MatSyncParam param,
                                       HttpServletRequest request) {
@@ -88,6 +263,7 @@
      * 娣诲姞鍏ュ簱鍗�
      */
     @PostMapping("/order/pakin/default/v1")
+    @AppAuth(memo = "ERP鍚屾鍏ュ簱鍗�")
     public synchronized R pakinOrderCreate(@RequestHeader(required = false) String appkey,
                                            @RequestBody OpenOrderPakinParam param,
                                            HttpServletRequest request) {
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index 6d94cdf..e6b1073 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -14,6 +14,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 
 @RestController
@@ -38,6 +40,25 @@
     @Autowired
     private WrkMastLogService wrkMastLogService;
 
+    @Resource
+    private OrderDetlPakinService orderDetlPakinService;
+
+    @RequestMapping(value = "/order/list/orderNo")
+    public R orderListorderNo(@RequestParam String orderNo) {
+        //鏁伴噺淇敼鎴愪负瀹屾垚鏁伴噺
+        List<OrderDetlPakin> orderDetl1 = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_no", orderNo));
+        List<OrderDetlPakin> orderDetls= new ArrayList<>();
+        for (OrderDetlPakin o: orderDetl1) {
+            BigDecimal c1 = new BigDecimal(o.getEnableQty()).setScale(2,BigDecimal.ROUND_HALF_UP);
+            o.setAnfme(c1.doubleValue());
+            if (c1.doubleValue() == 0.0){
+                continue;
+            }
+            orderDetls.add(o);
+        }
+        return R.ok(orderDetls);
+    }
+
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
     public R navList(@RequestParam(required = false) String orderNo) {
diff --git a/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java b/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
index 1b18ad7..d3028e3 100644
--- a/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderDetlPakinController.java
@@ -69,7 +69,11 @@
                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
             } else {
-                wrapper.like(entry.getKey(), val);
+                if (entry.getKey().equals("order_id")) {
+                    wrapper.eq(entry.getKey(),val);
+                } else {
+                    wrapper.like(entry.getKey(), val);
+                }
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/controller/OrderPakinController.java b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
index e136ea0..ee1c89e 100644
--- a/src/main/java/com/zy/asrs/controller/OrderPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderPakinController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -45,7 +46,7 @@
 
     @RequestMapping(value = "/order/nav/list/auth")
     @ManagerAuth
-    public R navList(@RequestParam(required = false) String orderNo) {
+    public R navList(@RequestParam(required = false) String orderNo){
         EntityWrapper<OrderPakin> wrapper = new EntityWrapper<>();
         if (!Cools.isEmpty(orderNo)) {
             wrapper.like("order_no", orderNo);
@@ -53,7 +54,7 @@
         wrapper.le("settle", 2).eq("status", 1);
         wrapper.orderBy("create_time", false);
         List<OrderPakin> orders = orderService.selectList(wrapper);
-        // 淇濈暀鍑哄簱鍗�
+        // 淇濈暀鍏ュ簱鍗�
         if (!Cools.isEmpty(orders)) {
             Iterator<OrderPakin> iterator = orders.iterator();
             while (iterator.hasNext()) {
@@ -61,14 +62,20 @@
                 if (order.getDocType() != null) {
                     DocType docType = docTypeService.selectById(order.getDocType());
                     if (docType != null) {
-                        if (docType.getPakout() == 0) {
+                        if (docType.getPakout() == 1) {
                             iterator.remove();
                         }
                     }
                 }
             }
         }
-        return R.ok().add(orders);
+        JSONArray jsonArray = new JSONArray();
+        for(OrderPakin orderPakin: orders) {
+            JSONObject object = new JSONObject();
+            object.put("order_no",orderPakin.getOrderNo());
+            jsonArray.add(object);
+        }
+        return R.ok().add(jsonArray);
     }
 
     @RequestMapping(value = "/order/head/page/auth")
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 0c5feea..bad233c 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -146,7 +146,7 @@
                         locDto.setBoxType2(orderDetl.getBoxType2());
                         locDto.setBoxType3(orderDetl.getBoxType3());
                         locDtos.add(locDto);
-                        exist.add(locDetl.getLocNo());
+                        exist.add(locDetl.getLocNo() + "_" + locDetl.getMatnr() + "_" + locDetl.getBatch());
                         // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
                         issued = issued - locDetl.getAnfme();
                     } else {
@@ -216,8 +216,8 @@
         }
         // -----------------------------------------------------------------------------------------------
         for (TaskDto taskDto : taskDtos) {
-            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
-            workService.stockOut(staNo, taskDto, getUserId());
+//            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+            workService.stockOut(taskDto.getStaNo(), taskDto, getUserId());
         }
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/WaitPakinController.java b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
index 86ffe38..9c7d22b 100644
--- a/src/main/java/com/zy/asrs/controller/WaitPakinController.java
+++ b/src/main/java/com/zy/asrs/controller/WaitPakinController.java
@@ -112,7 +112,7 @@
                 }
             }
         }
-        return R.ok();
+        return R.ok("鍒犻櫎鎴愬姛");
     }
 
     @RequestMapping(value = "/waitPakin/export/auth")
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index 579770b..54d3225 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -18,10 +18,7 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 宸ヤ綔娴佹帴鍙f帶鍒跺櫒
@@ -51,20 +48,23 @@
     @ManagerAuth()
     public R availableTakeSite() {
         List<Map<String, Object>> result = new ArrayList<>();
-        List<Integer> outSite = basDevpService.getAvailableOutSite(101);
-        for (Integer siteId : outSite) {
+//        List<Integer> outSite = basDevpService.getAvailableOutSite(101);
+//        for (Integer siteId : outSite) {
+        List<Integer> siteList = Arrays.asList(1101, 1201, 1206, 1301, 1306, 1408);
+        for (Integer site : siteList) {
             Map<String, Object> map = new HashMap<>();
-            map.put("siteId", siteId);
-            map.put("desc", siteId + "锛堝叏鏉垮嚭搴撳彛锛�");
+            map.put("siteId", site);
+            map.put("desc", site + "锛堝嚭搴撳彛锛�");
             result.add(map);
         }
-        List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103);
-        for (Integer siteId : pickOutSite) {
-            Map<String, Object> map = new HashMap<>();
-            map.put("siteId", siteId);
-            map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�");
-            result.add(map);
-        }
+//        }
+//        List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103);
+//        for (Integer siteId : pickOutSite) {
+//            Map<String, Object> map = new HashMap<>();
+//            map.put("siteId", siteId);
+//            map.put("desc", siteId + "锛堟嫞鏂欏嚭搴撳彛锛�");
+//            result.add(map);
+//        }
         return R.ok().add(result);
     }
 
@@ -78,13 +78,15 @@
     @RequestMapping("/available/take/check/site")
     @ManagerAuth()
     public R availableTakeCheckSite() {
-        return R.ok().add(basDevpService.getAvailableOutSite(107));
+          return R.ok(Arrays.asList(1101, 1201, 1206, 1301, 1306, 1408));
+//        return R.ok().add(basDevpService.getAvailableOutSite(107));
     }
 
     @RequestMapping("/available/empty/take/site")
     @ManagerAuth()
     public R availableEmptyTakeSite() {
-        return R.ok().add(basDevpService.getAvailableEmptyOutSite());
+        return R.ok(Arrays.asList(1101, 1201, 1206, 1301, 1306, 1408));
+//        return R.ok().add(basDevpService.getAvailableEmptyOutSite());
     }
 
     @RequestMapping("/full/store/put/start")
@@ -174,7 +176,7 @@
     @ManagerAuth(memo = "鐢熸垚浠诲姟")
     public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) {
         StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId());
-        return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
+        return R.ok("浠诲姟鍙凤細" + startupDto.getTaskNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
     }
 
     @RequestMapping("/deal/preHave/start")
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java b/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
index 12e97b1..6543430 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlPakin.java
@@ -529,7 +529,7 @@
 
     public Double getEnableQty() {
         if (null != this.anfme && this.workQty != null) {
-            return this.anfme - this.workQty;
+            return this.anfme - this.workQty - this.qty;
         }
         return null;
     }
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlPakinLog.java b/src/main/java/com/zy/asrs/entity/OrderDetlPakinLog.java
index 1a5ab5a..8f4b9f8 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlPakinLog.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlPakinLog.java
@@ -23,7 +23,7 @@
 import java.util.Objects;
 
 @Data
-@TableName("man_order_detl_pakin_log")
+@TableName("man_order_detl_log_pakin")
 public class OrderDetlPakinLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -32,7 +32,7 @@
      * ID
      */
     @ApiModelProperty(value = "ID")
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id")
     private Long id;
 
     /**
@@ -186,12 +186,12 @@
     @ApiModelProperty(value = "閲嶉噺")
     private Double weight;
 
-    /**
-     * 闀垮害
-     */
-    @ApiModelProperty(value = "闀垮害")
-    @TableField("man_length")
-    private Double manLength;
+//    /**
+//     * 闀垮害
+//     */
+//    @ApiModelProperty(value = "闀垮害")
+//    @TableField("man_length")
+//    private Double manLength;
 
     /**
      * 浣撶Н
@@ -379,7 +379,7 @@
         this.itemNum = itemNum;
         this.safeQty = safeQty;
         this.weight = weight;
-        this.manLength = manLength;
+//        this.manLength = manLength;
         this.volume = volume;
         this.threeCode = threeCode;
         this.supp = supp;
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlPakoutLog.java b/src/main/java/com/zy/asrs/entity/OrderDetlPakoutLog.java
index 7482b6c..1cc87a3 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlPakoutLog.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlPakoutLog.java
@@ -22,7 +22,7 @@
 import java.util.Date;
 
 @Data
-@TableName("man_order_detl_pakout_log")
+@TableName("man_order_detl_log_pakout")
 public class OrderDetlPakoutLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -31,7 +31,7 @@
      * ID
      */
     @ApiModelProperty(value = "ID")
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id")
     private Long id;
 
     /**
@@ -185,12 +185,12 @@
     @ApiModelProperty(value = "閲嶉噺")
     private Double weight;
 
-    /**
-     * 闀垮害
-     */
-    @ApiModelProperty(value = "闀垮害")
-    @TableField("man_length")
-    private Double manLength;
+//    /**
+//     * 闀垮害
+//     */
+//    @ApiModelProperty(value = "闀垮害")
+//    @TableField("man_length")
+//    private Double manLength;
 
     /**
      * 浣撶Н
@@ -378,7 +378,7 @@
         this.itemNum = itemNum;
         this.safeQty = safeQty;
         this.weight = weight;
-        this.manLength = manLength;
+//        this.manLength = manLength;
         this.volume = volume;
         this.threeCode = threeCode;
         this.supp = supp;
diff --git a/src/main/java/com/zy/asrs/entity/OrderPakinLog.java b/src/main/java/com/zy/asrs/entity/OrderPakinLog.java
index a61321b..21287db 100644
--- a/src/main/java/com/zy/asrs/entity/OrderPakinLog.java
+++ b/src/main/java/com/zy/asrs/entity/OrderPakinLog.java
@@ -20,7 +20,7 @@
 import java.util.Date;
 
 @Data
-@TableName("man_order_pakin_log")
+@TableName("man_order_log_pakin")
 public class OrderPakinLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -29,7 +29,7 @@
      * ID
      */
     @ApiModelProperty(value = "ID")
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id")
     private Long id;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/OrderPakoutLog.java b/src/main/java/com/zy/asrs/entity/OrderPakoutLog.java
index cba4446..1707c44 100644
--- a/src/main/java/com/zy/asrs/entity/OrderPakoutLog.java
+++ b/src/main/java/com/zy/asrs/entity/OrderPakoutLog.java
@@ -20,7 +20,7 @@
 import java.util.Date;
 
 @Data
-@TableName("man_order_pakout_log")
+@TableName("man_order_log_pakout")
 public class OrderPakoutLog implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -29,7 +29,7 @@
      * ID
      */
     @ApiModelProperty(value = "ID")
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id")
     private Long id;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/TaskLog.java b/src/main/java/com/zy/asrs/entity/TaskLog.java
index cd3b222..e8c4855 100644
--- a/src/main/java/com/zy/asrs/entity/TaskLog.java
+++ b/src/main/java/com/zy/asrs/entity/TaskLog.java
@@ -466,7 +466,7 @@
         WrkMastService service = SpringUtils.getBean(WrkMastService.class);
         WrkMast wrkMast = service.selectById(this.wrkNo);
         if (!Cools.isEmpty(wrkMast)) {
-            return String.valueOf(wrkMast.getId());
+            return String.valueOf(wrkMast.getWrkNo());
         }
         return null;
     }
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
index f9a25de..9966d87 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakinLog.java
@@ -7,6 +7,8 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.service.BasProcessProceduresService;
 import com.zy.asrs.service.BasQualityTestingService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -275,6 +277,15 @@
         return this.boxType1;
     }
 
+    public String getAppeUser$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
     public String getBoxType2$() {
         BasQualityTestingService service = SpringUtils.getBean(BasQualityTestingService.class);
         BasQualityTesting basQualityTesting = service.selectOne(new EntityWrapper<BasQualityTesting>().eq("box_type", this.boxType1));
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 2f643bf..a3c7ba9 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -22,14 +22,11 @@
 
     private static final long serialVersionUID = 1L;
 
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
     /**
      * 宸ヤ綔鍙�
      */
     @ApiModelProperty(value = "宸ヤ綔鍙�")
-    @TableField("wrk_no")
+    @TableId(value = "wrk_no", type = IdType.INPUT)
     private Integer wrkNo;
 
     @ApiModelProperty("浠诲姟绫诲瀷锛� agv, crn")
@@ -398,7 +395,7 @@
         if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
-        return null;
+        return this.staNo;
     }
 
     public String getSourceStaNo$() {
@@ -407,7 +404,7 @@
         if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
-        return null;
+        return this.sourceStaNo;
     }
 
     public String getSourceLocNo$() {
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 27472d2..c969fbb 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -403,7 +403,7 @@
         if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
-        return null;
+        return String.valueOf(this.staNo);
     }
 
     public String getSourceStaNo$() {
@@ -412,7 +412,7 @@
         if (!Cools.isEmpty(basDevp)) {
             return String.valueOf(basDevp.getDevNo());
         }
-        return null;
+        return String.valueOf(this.sourceStaNo);
     }
 
     public String getSourceLocNo$() {
diff --git a/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java b/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
index ccb3419..aea78c1 100644
--- a/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
@@ -33,7 +33,7 @@
         /**
          * 鍟嗗搧鍒嗙被
          */
-        private String groupCode;
+        private String groupCode = "鍏ㄩ儴";
 
         /**
          * 鍒嗙被鍚嶇О
diff --git a/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java b/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java
new file mode 100644
index 0000000..4dfdfec
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/QueryCombParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class QueryCombParam {
+
+    private String barcode;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
new file mode 100644
index 0000000..c37e5ae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/QueryTaskParam.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class QueryTaskParam {
+
+    private String taskNo;
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index c897114..5a7d7ae 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -64,4 +64,6 @@
      * @return 搴撲綅鍙�
      */
     String findFirstFrozenLocNo(@Param("locNoList") List<String> locNoList);
+
+    List<LocMast> selectLocByTypeAndRowsToList(@Param("locType") Integer locType,@Param("rows") List<Integer> rows);
 }
diff --git a/src/main/java/com/zy/asrs/service/ApiLogService.java b/src/main/java/com/zy/asrs/service/ApiLogService.java
index 8e3c698..bc15354 100644
--- a/src/main/java/com/zy/asrs/service/ApiLogService.java
+++ b/src/main/java/com/zy/asrs/service/ApiLogService.java
@@ -7,6 +7,8 @@
 
     void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success);
 
+    void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success, String error);
+
     boolean clearWeekBefore();
 
 }
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 0d2fa0e..6e85104 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -19,7 +19,7 @@
     List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param);
 
     /**
-     * 娣诲姞鍏ュ簱鍗�
+     * 娣诲姞鍑哄簱鍗�
      */
     void pakoutOrderCreate(OpenOrderPakoutParam param);
 
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index e9b91c0..722dbaa 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -40,9 +40,9 @@
      * @param locDetls 寰呭嚭搴撶墿鏂�
      * @param ioType   鍏ュ嚭搴撶被鍨�
      */
-    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
+    void stockOut(Integer staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
 
-    void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+    void stockOut(Integer staNo, TaskDto taskDto, Long userId);
 
     /**
      * 绌烘澘鍏ュ簱
diff --git a/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
index 6977b08..f64c22c 100644
--- a/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
@@ -44,6 +44,31 @@
         }
     }
 
+    @Async
+    @Override
+    public void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success,String error) {
+        Date now = new Date();
+        ApiLog apiLog = new ApiLog(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 鏃ュ織缂栧彿
+                namespace,    // 鍚嶇О绌洪棿
+                url,    // 鎺ュ彛鍦板潃
+                appkey,    // 骞冲彴瀵嗛挜
+                String.valueOf(now.getTime()),    // 鏃堕棿鎴�
+                ip,    // 瀹㈡埛绔疘P
+                request,    // 璇锋眰鍐呭
+                response,
+                error,    // 寮傚父鍐呭
+                success ? 1 : 0,    // 缁撴灉
+                1,    // 鐘舵��
+                now,    // 娣诲姞鏃堕棿
+                null,    // 淇敼鏃堕棿
+                null    // 澶囨敞
+        );
+        if (!this.insert(apiLog)) {
+            log.error("鎺ュ彛璋冪敤鏃ュ織淇濆瓨澶辫触锛�");
+        }
+    }
+
     @Override
     public boolean clearWeekBefore() {
         return this.baseMapper.clearWeekBefore() > 0;
diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
index 56573d8..c751422 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -49,21 +49,24 @@
             throw new CoolException(devpNo + "绔欑偣涓嶅瓨鍦�");
         }
         if (pakin) {
-            if (station.getAutoing() == null || !station.getAutoing().equals("Y")) {
-                throw new CoolException(devpNo + "绔欑偣涓嶆槸鑷姩鐘舵��");
+            if(station.getCanining()==null || !station.getAutoing().equals("Y")) {
+                throw new CoolException(devpNo+"绔欑偣涓嶆槸鑳藉叆鐘舵��");
             }
-            if (station.getLoading() == null || !station.getLoading().equals("Y")) {
-                throw new CoolException(devpNo + "绔欑偣鏃犵墿");
-            }
-            if (station.getWrkNo() != null && station.getWrkNo() > 0 && station.getWrkNo() < 9990) {
-                throw new CoolException(devpNo + "绔欑偣宸叉湁宸ヤ綔鍙�");
-            }
+//            if (station.getAutoing() == null || !station.getAutoing().equals("Y")) {
+//                throw new CoolException(devpNo + "绔欑偣涓嶆槸鑷姩鐘舵��");
+//            }
+//            if (station.getLoading() == null || !station.getLoading().equals("Y")) {
+//                throw new CoolException(devpNo + "绔欑偣鏃犵墿");
+//            }
+//            if (station.getWrkNo() != null && station.getWrkNo() > 0 && station.getWrkNo() < 9990) {
+//                throw new CoolException(devpNo + "绔欑偣宸叉湁宸ヤ綔鍙�");
+//            }
 //            if(!station.getInEnable().equals("Y")) {
 //                throw new CoolException(devpNo+"绔欑偣涓嶆槸鍙叆鐘舵��");
 //            }
-            if (wrkMastService.getWorkingMast(devpNo) > 0) {
-                throw new CoolException(devpNo + "绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�");
-            }
+//            if (wrkMastService.getWorkingMast(devpNo) > 0) {
+//                throw new CoolException(devpNo + "绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�");
+//            }
         }
         return station;
     }
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 64cef33..705a37b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -562,22 +562,22 @@
             throw new CoolException(BaseRes.PARAM);
         }
         Integer suplus = null;
-        if (loadingConfigTimer.getZpalletManage()) {
-            BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
-            if (Objects.isNull(container)) {
-                throw new CoolException("鏁版嵁閿欒锛氬鍣ㄧ爜涓嶅瓨鍦紒锛�");
-            }
-            if (container.getMixMax() < param.getCombMats().size()) {
-                throw new CoolException("瓒呭嚭瀹瑰櫒鏈�澶ф贩瑁呮暟閲忥紝褰撳墠瀹瑰櫒鏈�澶ф暟閲忎负锛�" + container.getMixMax() + "!!");
-            }
-            Set<String> matnrs = param.getCombMats().stream().map(CombParam.CombMat::getMatnr).collect(Collectors.toSet());
-            List<Mat> mats = matService.selectList(new EntityWrapper<Mat>().in("matnr", matnrs));
-            Set<Long> tagIds = mats.stream().map(Mat::getTagId).collect(Collectors.toSet());
-            if (tagIds.size() > 1) {
-                throw new CoolException("缁勬墭鐗╂枡绫诲瀷涓嶄竴鑷达紝鍙湁鐩稿悓鐨勭墿鏂欏垎绫绘墠鍙互缁勬墭锛侊紒");
-            }
-            suplus = container.getMixMax();
-        }
+//        if (loadingConfigTimer.getZpalletManage()) {
+//            BasContainer container = basContainerService.selectOne(new EntityWrapper<BasContainer>().eq("barcode", param.getBarcode()));
+//            if (Objects.isNull(container)) {
+//                throw new CoolException("鏁版嵁閿欒锛氬鍣ㄧ爜涓嶅瓨鍦紒锛�");
+//            }
+//            if (container.getMixMax() < param.getCombMats().size()) {
+//                throw new CoolException("瓒呭嚭瀹瑰櫒鏈�澶ф贩瑁呮暟閲忥紝褰撳墠瀹瑰櫒鏈�澶ф暟閲忎负锛�" + container.getMixMax() + "!!");
+//            }
+//            Set<String> matnrs = param.getCombMats().stream().map(CombParam.CombMat::getMatnr).collect(Collectors.toSet());
+//            List<Mat> mats = matService.selectList(new EntityWrapper<Mat>().in("matnr", matnrs));
+//            Set<Long> tagIds = mats.stream().map(Mat::getTagId).collect(Collectors.toSet());
+//            if (tagIds.size() > 1) {
+//                throw new CoolException("缁勬墭鐗╂枡绫诲瀷涓嶄竴鑷达紝鍙湁鐩稿悓鐨勭墿鏂欏垎绫绘墠鍙互缁勬墭锛侊紒");
+//            }
+//            suplus = container.getMixMax();
+//        }
 
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
         if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
@@ -599,7 +599,7 @@
 
         Date now = new Date();
         // 鏃犲崟缁勬墭
-        if (Cools.isEmpty(param.getOrderNo())) {
+        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
@@ -619,9 +619,9 @@
                 if (Cools.isEmpty(mat)) {
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
-                if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
-                    throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + "鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + mat.getUpQty());
-                }
+//                if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
+//                    throw new CoolException("鐗╂枡锛�" + detlDto.getMatnr() + "鍗曟鏈�澶х粍鎵樹笂闄愪负锛�" + mat.getUpQty());
+//                }
                 WaitPakin waitPakin = new WaitPakin();
                 BeanUtils.copyProperties(mat, waitPakin);
                 waitPakin.setBatch(detlDto.getBatch());
@@ -646,10 +646,14 @@
                 if (Cools.isEmpty(order) || order.getSettle() > 2) {
                     throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
                 }
-                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
-                OrderDetlPakin detls = orderDetlPakinService.selectOne(new EntityWrapper<OrderDetlPakin>()
+                Wrapper<OrderDetlPakin> wrapper = new EntityWrapper<OrderDetlPakin>()
                         .eq("order_id", order.getId())
-                        .eq("matnr", elem.getMatnr()));
+                        .eq("matnr", elem.getMatnr());
+                if(!Cools.isEmpty(elem.getBatch())) {
+                    wrapper.eq("batch",elem.getBatch());
+                }
+                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+                OrderDetlPakin detls = orderDetlPakinService.selectOne(wrapper);
 
                 if (Objects.isNull(detls)) {
                     throw new CoolException("鏁版嵁閿欒锛氬崟鎹槑缁嗕笉瀛樺湪锛侊紒");
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 4fe2a16..c64114c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -489,15 +489,15 @@
                 // 鍒嗙被
                 Long tagId;
                 // 涓�绾у垎绫�
-                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
-                    Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2);
+                if (!Cools.isEmpty(matParam.getGroupName())) {
+                    Tag priTag = tagService.selectByName(matParam.getGroupName(), 2);
                     if (priTag == null) {
                         Tag top = tagService.getTop();
                         NodeUtils nodeUtils = new NodeUtils();
                         nodeUtils.executePath(top.getId());
                         priTag = new Tag(
                                 null,    // 缂栧彿
-                                matParam.getGroupCode(),    // 鍚嶇О
+                                matParam.getGroupName(),    // 鍚嶇О
                                 top.getId(),    // 鐖剁骇
                                 top.getName(),    // 鐖剁骇鍚嶇О
                                 nodeUtils.path.toString(),    // 鍏宠仈璺緞
@@ -521,36 +521,36 @@
                         }
                     }
                     // 浜岀骇鍒嗙被
-                    Tag secTag = tagService.selectByName(matParam.getGroupName(), 3);
-                    if (secTag == null) {
-                        NodeUtils nodeUtils = new NodeUtils();
-                        nodeUtils.executePath(priTag.getId());
-                        secTag = new Tag(
-                                null,    // 缂栧彿
-                                matParam.getGroupName(),    // 鍚嶇О
-                                priTag.getId(),    // 鐖剁骇
-                                priTag.getName(),    // 鐖剁骇鍚嶇О
-                                nodeUtils.path.toString(),    // 鍏宠仈璺緞
-                                nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
-                                0,    // 绫诲瀷
-                                null,    // 璐熻矗浜�
-                                null,    // 鍥剧墖
-                                null,    // 绠�瑕佹弿杩�
-                                null,    // 鏁伴噺
-                                3,    // 绛夌骇
-                                null,    // 鎺掑簭
-                                1,    // 鐘舵��
-                                now,    // 娣诲姞鏃堕棿
-                                null,    // 娣诲姞浜哄憳
-                                now,    // 淇敼鏃堕棿
-                                null,    // 淇敼浜哄憳
-                                null    // 澶囨敞
-                        );
-                        if (tagMapper.insert(secTag) == 0) {
-                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-                        }
-                    }
-                    tagId = secTag.getId();
+//                    Tag secTag = tagService.selectByName(matParam.getGroupName(), 3);
+//                    if (secTag == null) {
+//                        NodeUtils nodeUtils = new NodeUtils();
+//                        nodeUtils.executePath(priTag.getId());
+//                        secTag = new Tag(
+//                                null,    // 缂栧彿
+//                                matParam.getGroupName(),    // 鍚嶇О
+//                                priTag.getId(),    // 鐖剁骇
+//                                priTag.getName(),    // 鐖剁骇鍚嶇О
+//                                nodeUtils.path.toString(),    // 鍏宠仈璺緞
+//                                nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+//                                0,    // 绫诲瀷
+//                                null,    // 璐熻矗浜�
+//                                null,    // 鍥剧墖
+//                                null,    // 绠�瑕佹弿杩�
+//                                null,    // 鏁伴噺
+//                                3,    // 绛夌骇
+//                                null,    // 鎺掑簭
+//                                1,    // 鐘舵��
+//                                now,    // 娣诲姞鏃堕棿
+//                                null,    // 娣诲姞浜哄憳
+//                                now,    // 淇敼鏃堕棿
+//                                null,    // 淇敼浜哄憳
+//                                null    // 澶囨敞
+//                        );
+//                        if (tagMapper.insert(secTag) == 0) {
+//                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                        }
+//                    }
+                    tagId = priTag.getId();
                 } else {
                     tagId = tagService.getTop().getId();
                 }
diff --git a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
index 1b995a3..f9f7b2d 100644
--- a/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.service.StaDescService;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.List;
 
 @Service("staDescService")
@@ -17,7 +18,8 @@
 
     @Override
     public List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo) {
-        return this.baseMapper.queryOutStaNosByLocNo(locNo, typeNo);
+        return Arrays.asList(1101, 1201, 1206, 1301, 1306, 1408);
+//        return this.baseMapper.queryOutStaNosByLocNo(locNo, typeNo);
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index e443df3..e3430a6 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -119,7 +119,7 @@
             throw new CoolException("鏌ヨ搴撲綅澶辫触锛侊紒==銆媠tartupFullPutStore ==銆� commonService.getLocNo");
         }
         // 鐢熸垚宸ヤ綔鍙�
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -184,7 +184,7 @@
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
-        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+//        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -204,7 +204,7 @@
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
             if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                 // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-                stockOut(staNo, locDetlDtos, null, userId);
+                stockOut(param.getOutSite(), locDetlDtos, null, userId);
             } else {
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
@@ -293,7 +293,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
+    public void stockOut(Integer outSta, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
         Set<String> locNos = new HashSet<>();
@@ -325,14 +325,14 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(dto.getLocNo());
 
-            Integer outSta = staNo.getDevNo();
+//            Integer outSta = staNo.getDevNo();
 //            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
 //            if(locMast.getCrnNo()==2){
 //                outSta = ioType == 101 ? 204 : 202;
 //            }
 
             // 鑾峰彇璺緞
-            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+//            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
             // 鐢熸垚宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
             // 鐢熸垚宸ヤ綔妗�
@@ -343,8 +343,8 @@
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
             wrkMast.setIoPri(13D); // 浼樺厛绾э細13
             wrkMast.setCrnNo(locMast.getCrnNo());
-            wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
-            wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+            wrkMast.setSourceStaNo("0"); // 婧愮珯
+            wrkMast.setStaNo(String.valueOf(outSta)); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
             wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
@@ -396,7 +396,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+    public void stockOut(Integer staNo, TaskDto taskDto, Long userId) {
         Date now = new Date();
         List<LocDto> locDtos = taskDto.getLocDtos();
         for (LocDto locDto : locDtos) {
@@ -410,7 +410,7 @@
         String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
         OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo);
         int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
-        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+//        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
         // 鐢熸垚宸ヤ綔妗�
@@ -421,8 +421,8 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         wrkMast.setIoPri(13D); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
-        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
+        wrkMast.setSourceStaNo("0"); // 婧愮珯
+        wrkMast.setStaNo(String.valueOf(staNo)); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -494,7 +494,7 @@
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
         StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
-        int workNo = dto.getWorkNo();
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -569,15 +569,15 @@
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
             // 鑾峰彇婧愮珯
-            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                    .eq("type_no", 110)
-                    .eq("stn_no", param.getOutSite())
-                    .eq("crn_no", locMast.getCrnNo());
-            StaDesc staDesc = staDescService.selectOne(wrapper);
-            Integer sourceStaNo = staDesc.getCrnStn();
-            if (Cools.isEmpty(sourceStaNo)) {
-                throw new CoolException("妫�绱㈡簮绔欏け璐�");
-            }
+//            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+//                    .eq("type_no", 110)
+//                    .eq("stn_no", param.getOutSite())
+//                    .eq("crn_no", locMast.getCrnNo());
+//            StaDesc staDesc = staDescService.selectOne(wrapper);
+//            Integer sourceStaNo = staDesc.getCrnStn();
+//            if (Cools.isEmpty(sourceStaNo)) {
+//                throw new CoolException("妫�绱㈡簮绔欏け璐�");
+//            }
             Date now = new Date();
             // 淇濆瓨宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
@@ -586,7 +586,7 @@
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
             wrkMast.setIoPri(10D);
-            wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
+            wrkMast.setSourceStaNo("0"); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite() + ""); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
@@ -683,7 +683,7 @@
     @Transactional
     public void locCheckOut(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
-        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+//        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -703,7 +703,7 @@
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
             if (locMast.getLocSts().equals("F")) {
                 // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱
-                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
+                stockOut(param.getOutSite(), locDetlDtos, IoWorkType.CHECK_OUT, userId);
             } else {
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎鐨勫簱浣嶏紝搴撲綅鍙凤細" + locMast.getLocNo() + " 銆佸綋鍓嶇姸鎬侊細" + locMast.getLocSts() + "-" + locMast.getLocSts$());
             }
@@ -1239,22 +1239,22 @@
             throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
         }
         // 鑾峰彇鐩爣绔�
-        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                .eq("type_no", wrkMast.getIoType() - 50)
-                .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-        StaDesc staDesc = staDescService.selectOne(wrapper);
-        if (Cools.isEmpty(staDesc)) {
-            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
-        }
+//        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+//                .eq("type_no", wrkMast.getIoType() - 50)
+//                .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+//                .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+//        StaDesc staDesc = staDescService.selectOne(wrapper);
+//        if (Cools.isEmpty(staDesc)) {
+//            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+//        }
         Date now = new Date();
         // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-        Integer staNo = staDesc.getCrnStn();
+//        Integer staNo = staDesc.getCrnStn();
         // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
         wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
         wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
-        wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
+        wrkMast.setStaNo("0"); // 鐩爣绔�
         wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
         wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
         wrkMast.setModiTime(now);
@@ -1279,7 +1279,7 @@
         }
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1((short) 1);
-        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
+        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list, null);
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java b/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
deleted file mode 100644
index f761770..0000000
--- a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.zy.asrs.task;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.OrderPakout;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.*;
-import com.zy.asrs.task.handler.AutoLocMoveHandler;
-import com.zy.common.properties.SlaveWmsParameterProperties;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Slf4j
-@Component
-public class AutoLocMoveScheduler {
-
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private WorkService workService;
-    @Autowired
-    private AutoLocMoveHandler autoLocMoveHandler;
-    @Autowired
-    private BasCrnpService basCrnpService;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private SlaveWmsParameterProperties slaveWmsParameterProperties;
-    @Autowired
-    private OrderService orderService;
-    @Autowired
-    private OrderPakoutService orderPakoutService;
-    @Autowired
-    private OrderDetlService orderDetlService;
-
-
-    //瀹氭椂鍑哄簱   缁忓吀鍙屼几
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLocAutoLocMove() {
-        if (slaveWmsParameterProperties.isAutoLocMoveBoolean()) {
-            Config config = configService.selectConfigByCode("AutoLocMove");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus();
-            if (!Cools.isEmpty(orderPakout)) {
-//                autoMoveService.selectList()
-            } else {
-                orderPakout = orderPakoutService.selectOrderMoveStatusInitial();
-                if (Cools.isEmpty(orderPakout)) {
-                    return;
-                }
-                orderPakout.setMoveStatus(2);
-                orderPakoutService.updateById(orderPakout);
-            }
-        }
-    }
-
-    //瀹氭椂鍑哄簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc11() {
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()) {
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1; crnNo < crnCount; crnNo++) {
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)) {
-                    autoLocMoveHandler.start(crnNo, 11);
-                }
-            }
-        }
-    }
-
-    //瀹氭椂鍏ュ簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc111() {
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()) {
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1; crnNo < crnCount; crnNo++) {
-                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
-                if (basCrnp == null) {
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)) {
-                    autoLocMoveHandler.start(crnNo, 111);
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java b/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
deleted file mode 100644
index 9fe4ff7..0000000
--- a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.zy.asrs.task;
-
-import com.core.common.Cools;
-import com.zy.asrs.task.handler.BareBoardHandler;
-import com.zy.common.properties.SlaveWmsParameterProperties;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-/**
- * Created by Monkey D. Luffy on 2023.10.25
- * 骞垮痉瀹滅..............浠ヤ笅.............骞垮痉瀹滅.............鑷姩琛ョ┖鏉垮啀浼樺寲
- */
-@Component
-public class BareBoardScheduler {
-
-    @Autowired
-    private BareBoardHandler bareBoardHandler;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private SlaveWmsParameterProperties slaveWmsParameterProperties;
-
-    /*
-     * 鑷姩璋冪┖鏉垮嚭搴�
-     * */
-    @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute() {
-        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()) {
-            Config config = configService.selectConfigByCode("AutomaticFillingBoard");
-            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")) {
-                for (Integer staNo : slaveWmsParameterProperties.getAutomaticFillingBoardStaNos()) {
-                    bareBoardHandler.start(110, staNo, "D");
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java b/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
deleted file mode 100644
index 766e6f5..0000000
--- a/src/main/java/com/zy/asrs/task/CheckDeepScheduler.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.zy.asrs.task;
-
-import com.zy.asrs.service.LocDetlService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WorkService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.asrs.task.handler.CheckDeepHandler;
-import com.zy.common.properties.SlaveProperties;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.text.ParseException;
-
-@Component
-@Slf4j
-public class CheckDeepScheduler {
-
-    @Value("${wcs-slave.doubleDeep}")
-    private boolean confirmDeep;
-    @Autowired
-    private LocDetlService locDetlService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private WorkService workService;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private SlaveProperties slaveProperties;
-
-    @Autowired
-    private CheckDeepHandler checkDeepHandler;
-
-    /**
-     * 灏嗕袱涓繁搴撲綅鍚堝苟涓烘繁娴呭簱浣�,鐗╂枡鍙风浉鍚岋紝婧愬簱浣嶅叆搴撴棩鏈熸棭浜庣洰鏍囧簱浣嶅搴旀繁搴撲綅鍏ュ簱鏃ユ湡锛屽簱浣嶇姸鎬侀兘涓篎
-     */
-//    @Scheduled(cron = "0/30 * * * * ?")
-    private void execute() throws ParseException {
-//        if (!confirmDeep) return;
-        if (true) return;
-
-        ReturnT<String> result = checkDeepHandler.start();
-        if (!result.isSuccess()) {
-            log.error("搴撲綅绉昏浆===>>娴呭簱浣嶇Щ杞埌娣卞簱浣嶅け璐�");
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java b/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
deleted file mode 100644
index c3ad608..0000000
--- a/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.zy.asrs.task;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasCrnpService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.asrs.task.handler.LocMoveAllHandler;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.properties.SlaveProperties;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created by vincent on 2020/7/7
- */
-@Slf4j
-@Component
-public class LocMoveAllScheduler {
-
-    //@Value("${loc-move.enable}")
-    private boolean enable = false;
-    //@Value("${loc-move.crn1}")
-    private boolean crn1 = false;
-    //@Value("${loc-move.crn2}")
-    private boolean crn2 = false;
-
-
-    @Autowired
-    private LocMoveAllHandler locMoveAllHandler;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private BasCrnpService basCrnpService;
-    @Autowired
-    private SlaveProperties slaveProperties;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute() {
-        if (!enable) return;
-
-        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
-        if (basCrnps.isEmpty()) {
-            return;
-        }
-        Iterator<BasCrnp> iterator = basCrnps.iterator();
-        while (iterator.hasNext()) {
-            BasCrnp basCrnp = iterator.next();
-            if (basCrnp.getCrnNo() == 1 && !crn1) {
-                iterator.remove();
-            }
-            if (basCrnp.getCrnNo() == 2 && !crn2) {
-                iterator.remove();
-            }
-        }
-        if (basCrnps.isEmpty()) {
-            return;
-        }
-        for (BasCrnp basCrnp : basCrnps) {
-            if (basCrnp.getCrnSts() != 3) continue;
-            if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) continue;
-            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11));
-            if (Cools.isEmpty(wrkMasts) || wrkMasts.size() == 0) {
-                LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("crn_no", basCrnp.getCrnNo()).orderBy("appe_time", true));//绌烘澘鎵�鍦�
-                if (Cools.isEmpty(locMastStart)) {
-                    continue;
-                }
-                if (Utils.isShallowLoc(slaveProperties, locMastStart.getLocNo())) {
-                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, locMastStart.getLocNo());
-                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
-                    if (locNo != null && locNo.getLocSts().equals("D")) {
-                        locMastStart = locNo;
-                    }
-                }
-                LocMast locMastEnd = locMastService.selectOne(new EntityWrapper<LocMast>()
-                        .eq("loc_sts", "O")
-                        .eq("crn_no", basCrnp.getCrnNo())
-                        //.eq("loc_type1", locMastStart.getLocType1())
-                        .ne("modi_user", 77)
-                        .orderBy("lev1", true));//鐩爣
-                if (Cools.isEmpty(locMastEnd)) {
-                    continue;
-                }
-                if (Utils.isShallowLoc(slaveProperties, locMastEnd.getLocNo())) {
-                    String shallowLocNo = Utils.getDeepLoc(slaveProperties, locMastEnd.getLocNo());
-                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
-                    if (locNo != null && locNo.getModiUser() != 77L && locNo.getLocSts().equals("O")) {
-                        locMastEnd = locNo;
-                    }
-                }
-//                if (Cools.isEmpty(locMastStart) || Cools.isEmpty(locMastEnd)){
-
-                ReturnT<String> result = locMoveAllHandler.start(locMastStart, locMastEnd, basCrnp.getCrnNo());
-                if (!result.isSuccess()) {
-                    log.error("澶勭悊澶辫触");
-                }
-            }
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 382c7fb..5b315d8 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -48,41 +48,25 @@
     }
 
 
-    @Scheduled(cron = "0/30 * * * * ? ")
+    @Scheduled(cron = "0/15 * * * * ? ")
     @Async("orderThreadPool")
     public void completeOrderPakin() {
         if (loadingConfigTimer.getErpReport()) {
             List<OrderPakin> orders = orderPakinService.selectComplete();
             for (OrderPakin order : orders) {
-                try {
-                    ReturnT<String> result = orderPakinSyncHandler.startOrderReport(order);
-                    if (!result.isSuccess()) {
-                        log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
-                    }
-                } catch (Exception e) {
-                    log.error(e.getMessage());
-                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
-                }
+                orderPakinSyncHandler.startOrderReport(order);
             }
         }
     }
 
 
-    @Scheduled(cron = "0/30 * * * * ? ")
+    @Scheduled(cron = "0/15 * * * * ? ")
     @Async("orderThreadPool")
     public void completeOrderPakout() {
         if (loadingConfigTimer.getErpReport()) {
             List<OrderPakout> orders = orderPakoutService.selectComplete();
             for (OrderPakout order : orders) {
-                try {
-                    ReturnT<String> result = orderPakoutSyncHandler.startOrderReport(order);
-                    if (!result.isSuccess()) {
-                        log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
-                    }
-                } catch (Exception e) {
-                    log.error(e.getMessage());
-                    log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
-                }
+                orderPakoutSyncHandler.startOrderReport(order);
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/task/PlcLogScheduler.java b/src/main/java/com/zy/asrs/task/PlcLogScheduler.java
deleted file mode 100644
index 4a8b718..0000000
--- a/src/main/java/com/zy/asrs/task/PlcLogScheduler.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.zy.asrs.task;
-
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.asrs.task.handler.PlcLogHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-/**
- * Created by vincent on 2020/7/7
- */
-@Component
-public class PlcLogScheduler {
-
-    private static final Logger log = LoggerFactory.getLogger(PlcLogScheduler.class);
-
-    @Autowired
-    private PlcLogHandler plcLogHandler;
-
-    @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute() {
-        ReturnT<String> returnT = plcLogHandler.start();
-        if (!returnT.isSuccess()) {
-            log.error(returnT.getMsg());
-        }
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/WcsScheduler.java b/src/main/java/com/zy/asrs/task/WcsScheduler.java
new file mode 100644
index 0000000..d6f9456
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/WcsScheduler.java
@@ -0,0 +1,37 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.handler.WcsSchedulerHandler;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 涓嬩綅WCS绯荤粺鐩稿叧瀹氭椂浠诲姟
+ * @createDate 2026/3/4 15:04
+ */
+@Component
+public class WcsScheduler {
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    @Resource
+    private WcsSchedulerHandler wcsSchedulerHandler;
+
+    /**
+     * 瀹氭椂浠诲姟璇诲彇鍑哄簱浠诲姟娲惧彂缁橶CS
+     */
+    @Scheduled(cron = "0/10 * * * * ? ")
+    private void outboundTaskDispatch() {
+        List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 11, 101, 103, 107, 110).eq("wrk_sts", 11));
+        for (WrkMast wrkMast : wrkMastList) {
+            wcsSchedulerHandler.outboundTaskDispatch(wrkMast);
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoLocMoveHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoLocMoveHandler.java
deleted file mode 100644
index 25ad6e2..0000000
--- a/src/main/java/com/zy/asrs/task/handler/AutoLocMoveHandler.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.zy.asrs.task.handler;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.LocDetl;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.result.FindLocNoAttributeVo;
-import com.zy.asrs.service.LocDetlService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WorkService;
-import com.zy.asrs.task.AbstractHandler;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.common.model.StartupDto;
-import com.zy.common.service.CommonService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Map;
-
-
-/**
- * Created by vincent on 2023/7/7
- */
-@Slf4j
-@Service
-public class AutoLocMoveHandler extends AbstractHandler<String> {
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private LocDetlService locDetlService;
-    @Autowired
-    private WorkService workService;
-
-    @Transactional(isolation = Isolation.REPEATABLE_READ)
-    public ReturnT<String> start(Integer crnNo, Integer ioType) {
-        try {
-            //11  绌挎绉诲崟杈�
-            if (ioType == 11) {
-                for (int bay = 1; bay < 27; bay++) {
-                    for (int lev = 1; lev < 6; lev++) {
-                        List<LocMast> locMasts = locMastService.selectLocMastShuttleMoveUnilateral(bay, lev, crnNo);
-                        if (!Cools.isEmpty(locMasts) && locMasts.size() < 4) {
-                            for (LocMast locMast : locMasts) {
-                                LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
-//                                StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 6 : 5, ioType, crnNo == 1 ? 917 : 918, locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(), null);
-                                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
-
-                                StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 917 : 918, findLocNoAttributeVo, null);
-                                workService.locMove(locMast.getLocNo(), startupDto.getLocNo(), 9527L);
-                            }
-                            return SUCCESS;
-                        }
-                    }
-                }
-            } else {//11  鍗曡竟绉荤┛姊�
-                List<Map<String, Object>> list = locDetlService.selectLocDetlUnilateralMoveShuttleMap(crnNo);//111   鍗曡竟绉荤┛姊�
-                for (Map<String, Object> map : list) {
-                    String matnr = map.getOrDefault("matnr", "").toString();//鐗╂枡鍙�
-                    String batch = map.getOrDefault("batch", "").toString();//鎵瑰彿
-                    String grade = map.getOrDefault("brand", "").toString();//绛夌骇
-                    int count = Integer.parseInt(map.get("count").toString());//鍗曡竟搴撴暟閲�
-                    if (count < 4) {
-                        continue;
-                    }
-
-                    List<LocDetl> locDetlList = locDetlService.selectLocDetlUnilateralMoveShuttle(matnr, batch, grade, crnNo);
-                    for (LocDetl locDetl : locDetlList) {
-//                        StartupDto startupDto = commonService.getLocNo(crnNo == 1 ? 4 : 3, ioType, crnNo == 1 ? 901 : 932, locDetl.getMatnr(), locDetl.getBatch(), locDetl.getBrand(), null);
-                        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl);
-
-                        StartupDto startupDto = commonService.getLocNo(ioType, crnNo == 1 ? 901 : 932, findLocNoAttributeVo, null);
-                        workService.locMove(locDetl.getLocNo(), startupDto.getLocNo(), 9527L);
-                    }
-                }
-                return SUCCESS;
-            }
-        } catch (Exception e) {
-            log.error("鑷姩绉诲簱鍑洪敊,鍫嗗灈鏈哄彿{}锛屽伐浣滅被鍨媨}", crnNo, ioType);
-        }
-        return SUCCESS;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
deleted file mode 100644
index 5dd3767..0000000
--- a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.zy.asrs.task.handler;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Cools;
-import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.StaDesc;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasCrnpService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.StaDescService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.task.AbstractHandler;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.common.model.enums.WorkNoType;
-import com.zy.common.service.CommonService;
-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.Date;
-import java.util.List;
-
-/**
- * Created by Monkey D. Luffy on 2023.10.25
- * 骞垮痉瀹滅..............浠ヤ笅.............骞垮痉瀹滅.............鑷姩琛ョ┖鏉垮啀浼樺寲
- */
-@Slf4j
-@Service
-@Transactional
-public class BareBoardHandler extends AbstractHandler<String> {
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private CommonService commonService;
-    @Autowired
-    private StaDescService staDescService;
-    @Autowired
-    private BasCrnpService basCrnpService;
-
-    public ReturnT<String> start(Integer ioType, Integer staNo, String locStsTarget) {
-        try {
-            if (wrkMastService.selectWrkMastBareBoardStaNo(ioType, staNo) != 0) {
-                return null;
-            }
-            // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
-            ArrayList<Integer> crns = new ArrayList<>();
-            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
-            for (BasCrnp basCrnp : basCrnps) {
-                crns.add(basCrnp.getCrnNo());
-            }
-            for (BasCrnp basCrnp : basCrnpService.selectList(new EntityWrapper<>())) {
-                crns.add(basCrnp.getCrnNo());
-            }
-            if (Cools.isEmpty(crns) || crns.size() == 0) {
-                return null;
-            }
-
-            boolean sign = true;
-            for (Integer crnNo : crns) {
-                sign = true;
-
-                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", locStsTarget).eq("crn_no", crnNo));
-
-                if (Cools.isEmpty(locMast)) {
-//                    throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
-                    sign = false;
-                }
-                if (sign && !locMast.getLocSts().equals(locStsTarget)) {
-//                    throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
-                    sign = false;
-                }
-                if (sign) {
-                    // 鑾峰彇婧愮珯
-                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                            .eq("type_no", ioType)
-                            .eq("stn_no", staNo)
-                            .eq("crn_no", crnNo);
-                    StaDesc staDesc = staDescService.selectOne(wrapper);
-                    if (Cools.isEmpty(staDesc)) {
-                        sign = false;
-                        continue;
-                    }
-                    Integer sourceStaNo = staDesc.getCrnStn();
-                    if (Cools.isEmpty(sourceStaNo)) {
-//                    throw new CoolException("妫�绱㈡簮绔欏け璐�");
-                        sign = false;
-                    }
-                    if (sign) {
-                        Date now = new Date();
-                        // 淇濆瓨宸ヤ綔妗�
-                        WrkMast wrkMast = new WrkMast();
-                        wrkMast.setWrkNo(workNo);
-                        wrkMast.setIoTime(now);
-                        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵��
-                        wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-                        wrkMast.setIoPri(10D);
-                        wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
-                        wrkMast.setStaNo(staNo + ""); // 鐩爣绔�
-                        wrkMast.setCrnNo(locMast.getCrnNo());
-                        wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
-                        wrkMast.setFullPlt(ioType.equals(110) ? "N" : "Y"); // 婊℃澘锛歒
-                        wrkMast.setPicking("N"); // 鎷f枡
-                        wrkMast.setExitMk("N"); // 閫�鍑�
-                        wrkMast.setEmptyMk(ioType.equals(110) ? "Y" : "N"); // 绌烘澘
-                        wrkMast.setLinkMis("N");
-                        wrkMast.setAppeUser(9999L);
-                        wrkMast.setAppeTime(now);
-                        wrkMast.setModiUser(9999L);
-                        wrkMast.setModiTime(now);
-                        boolean res = wrkMastService.insert(wrkMast);
-                        if (!res) {
-                            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-                        }
-                        // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-                        if (locMast.getLocSts().equals(locStsTarget)) {
-                            locMast.setLocSts("R");
-                            locMast.setModiUser(9999L);
-                            locMast.setModiTime(now);
-                            if (!locMastService.updateById(locMast)) {
-                                throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
-                            } else {
-                                return SUCCESS;
-                            }
-                        }
-                    }
-                }
-            }
-            if (!sign) {
-                log.error("鏈煡鍒板彲鍑哄簱鐨勭┖鏉匡紒锛侊紒");
-                return null;
-            }
-        } catch (Exception e) {
-            log.error("寮傚父锛侊紒锛�" + e);
-            return null;
-        }
-        return SUCCESS;
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java b/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
deleted file mode 100644
index 44ac08e..0000000
--- a/src/main/java/com/zy/asrs/task/handler/CheckDeepHandler.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package com.zy.asrs.task.handler;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.*;
-import com.zy.asrs.task.AbstractHandler;
-import com.zy.asrs.task.core.ReturnT;
-import com.zy.asrs.utils.Utils;
-import com.zy.common.properties.SlaveProperties;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-
-import java.util.List;
-
-/**
- * Created by vincent on 2020/7/6
- */
-@Service
-@Slf4j
-public class CheckDeepHandler extends AbstractHandler<String> {
-
-    @Value("${wcs-slave.doubleDeep}")
-    private boolean confirmDeep;
-    @Autowired
-    private LocDetlService locDetlService;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private WorkService workService;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasCrnpService basCrnpService;
-    @Autowired
-    private SlaveProperties slaveProperties;
-
-    @Transactional
-    public synchronized ReturnT<String> start() {
-        try {
-            for (int crnNo = 1; crnNo < 3; crnNo++) {
-                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                        .eq("crn_no", crnNo)
-                        .last(" and wrk_sts in (2,3,4,11,12)")
-                );
-                if (wrkMasts.size() > 0) continue;
-
-                //鏆傚仠绉诲簱
-                BasCrnp crnp = basCrnpService.selectById(crnNo);
-                if (!Cools.isEmpty(crnp) && !Cools.isEmpty(crnp.getTankQty()) && crnp.getTankQty() == 0) {
-                    continue;
-                }
-
-                List<LocMast> locMasts = locMastService.queryShallowLocFMast(crnNo);
-                if (null == locMasts) continue;
-
-                for (LocMast sourceLoc : locMasts) {
-                    String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
-                    LocMast destLoc = locMastService.selectById(deep);
-
-                    if (!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
-                        //鏌ユ壘婧愬簱浣嶆槸鍚︽湁杞Щ浠诲姟,濡傛灉鏈�,涓嶇敓鎴愬簱浣嶇Щ杞�
-                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-                                .eq("source_loc_no", sourceLoc.getLocNo()));
-                        if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
-                                (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
-                            workService.locMove(sourceLoc.getLocNo(), deep, 1L);
-                        }
-                    }
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        }
-        return SUCCESS;
-    }
-
-    /**
-     * 閬嶅巻搴撳瓨涓紝娴呭簱浣嶇姸鎬丗锛屾繁搴撲綅鐘舵�丱鐨勬暟鎹紝鐢熸垚搴撲綅绉昏浆宸ヤ綔妗e皢娴呭簱浣嶇Щ杞埌瀵瑰簲娣卞簱浣嶄腑鍘�
-     */
-//    private void locMoveToDeep(int crnNo){
-//        if (!confirmDeep) return;
-//        List<LocMast> locMasts = locMastService.queryShallowLocFMast();
-//
-//
-//        if (null == locMasts) return;
-//
-//        for (LocMast sourceLoc : locMasts){
-//            String deep = Utils.getDeepLoc(slaveProperties, sourceLoc.getLocNo());
-//            LocMast destLoc = locMastService.selectById(deep);
-//
-//            if(!Cools.isEmpty(sourceLoc) && !Cools.isEmpty(destLoc)) {
-//                //鏌ユ壘婧愬簱浣嶆槸鍚︽湁杞Щ浠诲姟,濡傛灉鏈�,涓嶇敓鎴愬簱浣嶇Щ杞�
-//                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-//                        .eq("source_loc_no", sourceLoc.getLocNo()));
-//                if (Cools.isEmpty(wrkMast) && destLoc.getLocSts().equals("O") &&
-//                        (sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D"))) {
-//                    workService.locMove(sourceLoc.getLocNo(), deep, 1L);
-//                }
-//            }
-//        }
-//
-//    }
-
-//    @Transactional
-//    public synchronized ReturnT<String> start1() {
-//        try {
-//            for (int crnNo = 1; crnNo < 6; crnNo++){
-//                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-//                        .eq("crn_no",crnNo)
-//                        .last(" and wrk_sts in (2,3,4,11,12)")
-//                );
-//                if (wrkMasts.size() > 0) continue;
-//
-//                //鏆傚仠绉诲簱
-//                BasCrnp crnp = basCrnpService.selectById(crnNo);
-//                if(!Cools.isEmpty(crnp) && crnp.getOrigin()!=0){
-//                    continue;
-//                }
-//
-//                //閬嶅巻搴撳瓨涓紝娣辨祬搴撲綅鐘舵�侀兘涓篎锛岀墿鏂欎笉鐩稿悓锛屾垨鑰呮祬搴撲綅鍏ュ簱鏃ユ湡姣旀繁搴撲綅鏃╃殑搴撲綅锛屽仛搴撲綅绉昏浆绉诲埌鏂扮殑娣卞簱浣嶄腑鍘�
-//                boolean flag0 = false;
-//                List<LocMast> locMasts = locMastService.queryNeedMoveShallLoc(crnNo);
-//                for (LocMast locMast : locMasts) {
-//                    //澶氱瑪鏄庣粏鐨勪笉鍋氱Щ杞皟鏁�
-//                    List<LocDetl> shallowLocDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-//                            .eq("loc_no", locMast.getLocNo()));
-//                    String deepLoc = Utils.getDeepLoc(slaveProperties, locMast.getLocNo());
-//                    List<LocDetl> deepLocDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-//                            .eq("loc_no", deepLoc));
-//
-//                    if ((!Cools.isEmpty(shallowLocDetls) && shallowLocDetls.size()>1)
-//                        || (!Cools.isEmpty(deepLocDetls) && deepLocDetls.size()>1)) {
-//                        continue;
-//                    }
-//
-//                    LocMast targetLoc = locMastService.queryEmptyDeepLoc(crnNo);
-//                    if(!Cools.isEmpty(targetLoc)) {
-//                        workService.locMove(locMast.getLocNo(), targetLoc.getLocNo(), 1L);
-//                        log.info("娴呭簱浣嶇Щ杞埌娣卞簱浣�:鐢熸垚搴撲綅绉昏浆浠诲姟鎴愬姛[娴呭埌娣盷===>>" + locMast.getLocNo() + "---" + targetLoc.getLocNo());
-//                        flag0 = true;
-//                    }
-//                    break;
-//                }
-//                if(flag0) continue;
-//
-////                List<LocMast> ignoreLocs = new ArrayList<>();
-//                List<LocMast> allDeeps = locMastService.selectAllDeepLoc(crnNo);
-//                for (LocMast sourceDeep : allDeeps) {
-//
-//                    LocDetl sourceLoc = locDetlService.selectOne(new EntityWrapper<LocDetl>()
-//                            .eq("loc_no", sourceDeep.getLocNo()).orderBy("mat_no"));
-//                    if(Cools.isEmpty(sourceLoc)){
-//                        continue;
-//                    }
-//
-//                    boolean moveFlag = false;//姣忔鎵ц涓�绗�
-////                    //濡傛灉杩欎釜搴撲綅宸茬粡琚搷浣滆繃浜�,鐩存帴璺宠繃
-////                    Boolean flag = false;
-////                    for (LocMast ignoreLoc : ignoreLocs) {
-////                        if (ignoreLoc.getLocNo() == sourceDeep.getLocNo()) {
-////                            flag = true;
-////                            break;
-////                        }
-////                    }
-////                    if (flag) {
-////                        continue;
-////                    }
-//
-//                    List<LocMast> allDeepsWithCrnNo = locMastService.selectAllDeepLocWithCrnNo(sourceDeep.getCrnNo(),
-//                            sourceLoc.getMatNo(), sourceLoc.getItemBatch(), sourceLoc.getSpecs());
-//                    for (LocMast targetDeep : allDeepsWithCrnNo) {
-//                        if(targetDeep.getLocNo().equals(sourceDeep.getLocNo())){
-//                            continue;
-//                        }
-////                        LocDetl sourceLoc = locDetlService.selectOne(new EntityWrapper<LocDetl>()
-////                                .eq("loc_no", sourceDeep.getLocNo()));
-//
-//                        LocDetl targetLoc = locDetlService.selectOne(new EntityWrapper<LocDetl>()
-//                                .eq("loc_no", targetDeep.getLocNo()));
-//                        //澶氱瑪鏄庣粏鐨勪笉鍋氱Щ杞皟鏁�
-//                        List<LocDetl> sourceLocDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-//                                .eq("loc_no", sourceDeep.getLocNo()));
-//                        List<LocDetl> targetLocDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
-//                                .eq("loc_no", targetDeep.getLocNo()));
-//
-//                        if (Cools.isEmpty(targetLoc)
-//                                || (!Cools.isEmpty(sourceLocDetls) && sourceLocDetls.size()>1)
-//                                || (!Cools.isEmpty(targetLocDetls) && targetLocDetls.size()>1)) {
-//                            continue;
-//                        }
-//
-//                        //鐗╂枡鍙风浉鍚岋紝婧愬簱浣嶅叆搴撴棩鏈熸棭浜庣洰鏍囧簱浣嶅搴旀繁搴撲綅鍏ュ簱鏃ユ湡锛屽簱浣嶇姸鎬侀兘涓篎
-//                        if (sourceLoc.getMatNo().equals(targetLoc.getMatNo())
-//                                && sourceLoc.getItemBatch().equals(targetLoc.getItemBatch())
-//                                && sourceLoc.getSpecs().equals(targetLoc.getSpecs())
-//                                && sourceLoc.getAppeTime().getTime() < targetLoc.getAppeTime().getTime()
-//                                && sourceDeep.getLocSts().equals("F") && targetDeep.getLocSts().equals("F")) {
-//
-////                    System.out.println("鎴愬姛: "+sourceDeep +"-----" +targetDeep);
-//                            String shallow = convertShallow(targetDeep.getLocNo());
-//                            LocMast shallowLoc = locMastService.selectById(shallow);
-//                            if(!Cools.isEmpty(shallowLoc) && shallowLoc.getLocSts().equals("O")) {
-//                                workService.locMove(sourceDeep.getLocNo(), shallow, 1L);
-//                                log.info("娣卞簱浣嶅悎骞跺畾鏃朵换鍔�:鐢熸垚搴撲綅绉昏浆浠诲姟鎴愬姛[娣卞埌娴匽===>>" + sourceDeep.getLocNo() + "---" + shallow);
-//                                moveFlag=true;
-////                                ignoreLocs.add(sourceDeep);
-////                                ignoreLocs.add(targetDeep);
-//                                break;
-//                            }
-//                        }
-//                    }
-//                    if(moveFlag) break;
-//                }
-//
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//            return FAIL.setMsg(e.getMessage());
-//        }
-//        return SUCCESS;
-//    }
-
-    /**
-     * 灏嗘繁搴撲綅杞负瀵瑰簲娴呭簱浣�
-     *
-     * @param deep
-     * @return
-     */
-    private String convertShallow(String deep) {
-        String shallLoc = "";
-        Integer mastInt = Integer.parseInt(deep.substring(0, 2));
-        if (mastInt % 2 == 0) {
-            mastInt -= 1;
-        } else if (mastInt % 2 == 1) {
-            mastInt += 1;
-        }
-        if (mastInt < 10) {
-            shallLoc = "0" + mastInt + deep.substring(2, 7);
-        } else {
-            shallLoc = mastInt + deep.substring(2, 7);
-        }
-        return shallLoc;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java b/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java
deleted file mode 100644
index 9bce74b..0000000
--- a/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.zy.asrs.task.handler;
-
-
-import com.zy.asrs.entity.LocMast;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WorkService;
-import com.zy.asrs.task.AbstractHandler;
-import com.zy.asrs.task.core.ReturnT;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-
-/**
- * Created by vincent on 2020/7/6
- */
-@Slf4j
-@Service
-public class LocMoveAllHandler extends AbstractHandler<String> {
-
-    @Autowired
-    private WorkService workService;
-    @Autowired
-    private LocMastService locMastService;
-    private final Integer BAY = 28;//YINGTAN
-
-
-    @Transactional
-    public ReturnT<String> start(LocMast locMastStart, LocMast locMastEnd, Integer crnNo) {
-        try {
-            LocMast locMastEndNew = null;
-
-
-            workService.locMove(locMastStart.getLocNo(), locMastEnd.getLocNo(), 77L);
-        } catch (Exception e) {
-            log.error("fail", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        }
-        return SUCCESS;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakinMoveHistoryHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakinMoveHistoryHandler.java
index b056247..a8c4b8d 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakinMoveHistoryHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakinMoveHistoryHandler.java
@@ -43,7 +43,7 @@
         for (OrderPakin order : settleEqual6) {
             List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectByOrderId(order.getId());
             moveBoth(order, orderDetls);
-            log.info("宸插畬鎴愬崟鎹Щ鍔ㄨ嚦鍘嗗彶琛ㄦ垚鍔� =====>" + order);
+            log.info("宸插畬鎴愬崟鎹Щ鍔ㄨ嚦鍘嗗彶琛ㄦ垚鍔� =====>" + order.getOrderNo());
         }
         return SUCCESS;
     }
@@ -57,7 +57,7 @@
                 orderDetl.setUpdateTime(now);
                 OrderDetlPakinLog orderDetlLog = new OrderDetlPakinLog();
                 Synchro.Copy(orderDetl, orderDetlLog);
-                orderDetlLog.setId(null);
+                orderDetlLog.setId(orderDetl.getId());
                 orderDetlPakinLogMapper.insert(orderDetlLog);
                 orderDetlPakinService.deleteById(orderDetl.getId());
             }
@@ -67,7 +67,7 @@
             order.setUpdateTime(now);
             OrderPakinLog orderPakinLog = new OrderPakinLog();
             Synchro.Copy(order, orderPakinLog);
-            orderPakinLog.setId(null);
+            orderPakinLog.setId(order.getId());
             orderPakinLogMapper.insert(orderPakinLog);
             orderPakinService.deleteById(order.getId());
         }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
index 2797bac..fe1f8e8 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakinSyncHandler.java
@@ -1,5 +1,8 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.OrderDetlPakin;
 import com.zy.asrs.entity.OrderPakin;
@@ -9,11 +12,15 @@
 import com.zy.asrs.service.OrderPakinService;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.timer.LoadingConfigTimer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -29,20 +36,70 @@
     private OrderDetlPakinService orderDetlPakinService;
     @Autowired
     private ApiLogService apiLogService;
-    @Autowired
-    private DocTypeService docTypeService;
+
+    @Resource
+    private LoadingConfigTimer loadingConfigTimer;
 
 
     @Transactional
-    public ReturnT<String> startOrderReport(OrderPakin order) {
-        DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
-        }
-        long settle = 6L;
-        List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectByOrderId(order.getId());
+    public void startOrderReport(OrderPakin order) {
 
-        return SUCCESS;
+        // 鏋勯�犺姹備綋
+        JSONObject param = new JSONObject();
+        param.put("orderNo", order.getOrderNo());
+        List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectByOrderId(order.getId());
+        JSONArray detl = new JSONArray();
+        for (OrderDetlPakin orderDetlPakin : orderDetls) {
+            JSONObject object = new JSONObject();
+            object.put("matnr", orderDetlPakin.getMatnr());
+            object.put("batch", orderDetlPakin.getBatch());
+            object.put("anfme", orderDetlPakin.getQty());
+            detl.add(object);
+        }
+        param.put("matList", detl);
+
+        String response = "";
+        boolean success = false;
+        String errorMsg = null;
+        String requestJson = param.toJSONString();
+        String url = loadingConfigTimer.getErpReportURL() + loadingConfigTimer.getErpInReportPath();
+        String nameSpaces = "鍏ュ簱鍗曚笂鎶�";
+        try {
+
+//            response = new HttpHandler.Builder()
+//                    .setUri(loadingConfigTimer.getErpReportURL())
+//                    .setPath(loadingConfigTimer.getErpInReportPath())
+//                    .setJson(requestJson)
+//                    .build()
+//                    .doPost();
+//            JSONObject jsonObject = JSON.parseObject(response);
+//            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+                orderPakinService.updateSettle(order.getId(), 6L, null);
+                log.info("鍏ュ簱鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", order.getOrderNo());
+                success = true;
+//            } else {
+//                errorMsg = response;
+//                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+//            }
+        } catch (Exception e) {
+            errorMsg = e.getMessage();
+            log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+        } finally {
+            try {
+                apiLogService.save(
+                        nameSpaces,
+                        url,
+                        null,
+                        "127.0.0.1",
+                        requestJson,
+                        response,
+                        success,
+                        errorMsg
+                );
+            } catch (Exception e) {
+                log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+            }
+        }
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakoutMoveHistoryHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakoutMoveHistoryHandler.java
index 597f17f..18e4152 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakoutMoveHistoryHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakoutMoveHistoryHandler.java
@@ -51,24 +51,24 @@
 
 
     private void moveBoth(OrderPakout order, List<OrderDetlPakout> orderDetls) {
-        Date now = new Date();
+//        Date now = new Date();
         if (!Cools.isEmpty(orderDetls)) {
             for (OrderDetlPakout orderDetl : orderDetls) {
-                orderDetl.setUpdateBy(0L);
-                orderDetl.setUpdateTime(now);
+//                orderDetl.setUpdateBy(0L);
+//                orderDetl.setUpdateTime(now);
                 OrderDetlPakoutLog orderDetlLog = new OrderDetlPakoutLog();
                 Synchro.Copy(orderDetl, orderDetlLog);
-                orderDetlLog.setId(null);
+//                orderDetlLog.setId(orderDetl.getId());
                 orderDetlPakoutLogMapper.insert(orderDetlLog);
                 orderDetlPakoutService.deleteById(orderDetl.getId());
             }
         }
         if (!Cools.isEmpty(order)) {
-            order.setUpdateBy(0L);
-            order.setUpdateTime(now);
+//            order.setUpdateBy(0L);
+//            order.setUpdateTime(now);
             OrderPakoutLog orderPakinLog = new OrderPakoutLog();
             Synchro.Copy(order, orderPakinLog);
-            orderPakinLog.setId(null);
+//            orderPakinLog.setId(order.getId());
             orderPakoutLogMapper.insert(orderPakinLog);
             orderPakoutService.deleteById(order.getId());
         }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
index 0e15d5f..18b0996 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderPakoutSyncHandler.java
@@ -1,6 +1,10 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.OrderDetlPakin;
 import com.zy.asrs.entity.OrderDetlPakout;
 import com.zy.asrs.entity.OrderPakout;
 import com.zy.asrs.service.ApiLogService;
@@ -9,11 +13,14 @@
 import com.zy.asrs.service.OrderPakoutService;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.utils.HttpHandler;
+import com.zy.system.timer.LoadingConfigTimer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -29,20 +36,70 @@
     private OrderDetlPakoutService orderDetlPakoutService;
     @Autowired
     private ApiLogService apiLogService;
-    @Autowired
-    private DocTypeService docTypeService;
+
+    @Resource
+    private LoadingConfigTimer loadingConfigTimer;
 
 
     @Transactional
-    public ReturnT<String> startOrderReport(OrderPakout order) {
-        DocType docType = docTypeService.selectById(order.getDocType());
-        if (null == docType) {
-            return SUCCESS;
-        }
-        long settle = 6L;
-        List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(order.getId());
+    public void startOrderReport(OrderPakout order) {
 
-        return SUCCESS;
+        // 鏋勯�犺姹備綋
+        JSONObject param = new JSONObject();
+        param.put("orderNo", order.getOrderNo());
+        List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectByOrderId(order.getId());
+        JSONArray detl = new JSONArray();
+        for (OrderDetlPakout orderDetlPakout : orderDetls) {
+            JSONObject object = new JSONObject();
+            object.put("matnr", orderDetlPakout.getMatnr());
+            object.put("batch", orderDetlPakout.getBatch());
+            object.put("anfme", orderDetlPakout.getQty());
+            detl.add(object);
+        }
+        param.put("matList", detl);
+
+        String response = "";
+        boolean success = false;
+        String errorMsg = null;
+        String requestJson = param.toJSONString();
+        String url = loadingConfigTimer.getErpReportURL() + loadingConfigTimer.getErpOutReportPath();
+        String nameSpaces = "鍑哄簱鍗曚笂鎶�";
+        try {
+
+//            response = new HttpHandler.Builder()
+//                    .setUri(loadingConfigTimer.getErpReportURL())
+//                    .setPath(loadingConfigTimer.getErpOutReportPath())
+//                    .setJson(requestJson)
+//                    .build()
+//                    .doPost();
+//            JSONObject jsonObject = JSON.parseObject(response);
+//            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+                orderPakoutService.updateSettle(order.getId(), 6L, null);
+                log.info("鍑哄簱鍗曟嵁涓婃姤鎴愬姛锛屽崟鎹紪鍙凤細{}", order.getOrderNo());
+                success = true;
+//            } else {
+//                errorMsg = response;
+//                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+//            }
+        } catch (Exception e) {
+            errorMsg = e.getMessage();
+            log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+        } finally {
+            try {
+                apiLogService.save(
+                        nameSpaces,
+                        url,
+                        null,
+                        "127.0.0.1",
+                        requestJson,
+                        response,
+                        success,
+                        errorMsg
+                );
+            } catch (Exception e) {
+                log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+            }
+        }
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/PlcLogHandler.java b/src/main/java/com/zy/asrs/task/handler/PlcLogHandler.java
deleted file mode 100644
index d2cecf1..0000000
--- a/src/main/java/com/zy/asrs/task/handler/PlcLogHandler.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.zy.asrs.task.handler;
-
-import com.zy.asrs.task.AbstractHandler;
-import com.zy.asrs.task.core.ReturnT;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-
-/**
- * Created by vincent on 2020/7/7
- */
-@Service
-public class PlcLogHandler extends AbstractHandler<String> {
-
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
-    @Transactional
-    public ReturnT<String> start() {
-        try {
-            // 涓嬩綅鏈哄懡浠よ浆鍘嗗彶妗�
-            int updateCount = jdbcTemplate.update("insert into asr_stk_hplc select * from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();");
-            if (updateCount > 0) {
-                int deleteCount = jdbcTemplate.update("delete from asr_stk_plcm where dateadd(day,7,io_time) <= getdate();");
-                if (deleteCount <= 0) {
-                    exceptionHandle("鍫嗗灈鏈�&PLC鍛戒护杞巻鍙叉。閿欒 ! ");
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return FAIL.setMsg(e.getMessage());
-        }
-        return SUCCESS;
-    }
-
-}
diff --git a/src/main/java/com/zy/asrs/task/handler/WcsSchedulerHandler.java b/src/main/java/com/zy/asrs/task/handler/WcsSchedulerHandler.java
new file mode 100644
index 0000000..765e985
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/WcsSchedulerHandler.java
@@ -0,0 +1,103 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.StartupDto;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @author pang.jiabao
+ * @description 涓嬩綅WCS绯荤粺鐩稿叧瀹氭椂浠诲姟澶勭悊
+ * @createDate 2026/3/4 15:23
+ */
+@Component
+@Slf4j
+public class WcsSchedulerHandler {
+
+    @Value("${wcs.URL}")
+    private String wcsAddress;
+
+    @Value("${wcs.createOutTask}")
+    private String createOutTask;
+
+    @Value("${wcs.createLocMoveTask}")
+    private String createLocMoveTask;
+
+    @Resource
+    private ApiLogService apiLogService;
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    public void outboundTaskDispatch(WrkMast wrkMast) {
+        StartupDto startupDto = new StartupDto();
+        startupDto.setTaskNo(wrkMast.getWrkNo());
+        startupDto.setTaskPri(wrkMast.getIoPri());
+
+
+        String nameSpaces = "鍑哄簱浠诲姟娲惧彂";
+        String path = createOutTask;
+        if (wrkMast.getIoType() == 11 ) {
+            path = createLocMoveTask;
+            nameSpaces = "绉诲簱浠诲姟娲惧彂";
+            startupDto.setSourceLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo()));
+            startupDto.setLocNo(Utils.locToLocNo(wrkMast.getLocNo()));
+        } else {
+            startupDto.setStaNo(Integer.valueOf(wrkMast.getStaNo()));
+            startupDto.setLocNo(Utils.locToLocNo(wrkMast.getSourceLocNo()));
+        }
+
+        String response = "";
+        boolean success = false;
+        String errorMsg = null;
+        String requestJson = JSON.toJSONString(startupDto);
+        String url = wcsAddress + "/" + path;
+        try {
+
+            response = new HttpHandler.Builder()
+                    .setUri(wcsAddress)
+                    .setPath(path)
+                    .setJson(requestJson)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("200")) {
+                wrkMast.setWrkSts(12L);
+                wrkMast.setCrnStrTime(new Date());
+                wrkMastService.updateById(wrkMast);
+                success = true;
+            } else {
+                errorMsg = response;
+                log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛澶辫触锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response);
+            }
+        } catch (Exception e) {
+            errorMsg = e.getMessage();
+            log.error(nameSpaces + "璋冪敤澶栭儴鎺ュ彛寮傚父锛寀rl锛歿}锛宺equest锛歿}锛宺esponse锛歿}", url, requestJson, response, e);
+        } finally {
+            try {
+                apiLogService.save(
+                        nameSpaces,
+                        url,
+                        null,
+                        "127.0.0.1",
+                        requestJson,
+                        response,
+                        success,
+                        errorMsg
+                );
+            } catch (Exception e) {
+                log.error(nameSpaces + "淇濆瓨鎺ュ彛鏃ュ織澶辫触", e);
+            }
+        }
+    }
+}
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 173d232..ec30a9f 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -64,7 +64,7 @@
             // 鍏ュ簱 --------------------------------------------------------------------------------
             if (wrkMast.getWrkSts() == 5) {
                 // 鍏ㄦ澘鍏ュ簱
-                if (wrkMast.getIoType() == 1) {
+                if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10) {
                     // 鍏ュ簱閫氱煡鍗�
                     if (!Cools.isEmpty(wrkMast.getBarcode())) {
                         // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 3cc7605..0fa4b8a 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -625,4 +625,14 @@
         return result;
     }
 
+    public static String locToLocNo(String locNo){//0100203
+        int row = Integer.parseInt(locNo.substring(0, 2));
+        int bay = Integer.parseInt(locNo.substring(2, 5));
+        int lev = Integer.parseInt(locNo.substring(5, 7));
+        return row + "-" +bay + "-" + lev;
+    }
+
+    public static String getLocNo(Number row, Number bay, Number lev) {
+        return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
+    }
 }
diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 52ccccf..d921455 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -128,8 +128,8 @@
             User user = userService.selectById(userLogin.getUserId());
 //            String deToken = Cools.deTokn(token, user.getPassword());
 //            long timestamp = Long.parseLong(deToken.substring(0, 13));
-            // 15鍒嗛挓鍚庤繃鏈�
-            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 900000) {
+            // 60鍒嗛挓鍚庤繃鏈�
+            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 3600000) {
                 Http.response(response, BaseRes.DENIED);
                 return false;
             }
diff --git a/src/main/java/com/zy/common/model/StartupDto.java b/src/main/java/com/zy/common/model/StartupDto.java
index b0ecc3e..a7f7205 100644
--- a/src/main/java/com/zy/common/model/StartupDto.java
+++ b/src/main/java/com/zy/common/model/StartupDto.java
@@ -16,6 +16,10 @@
 
     private String locNo;
 
-    private Integer workNo;
+    private Integer taskNo;
+
+    private Double taskPri;
+
+    private String sourceLocNo;
 
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 65775b0..0398d40 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -7,6 +7,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
+import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
@@ -18,7 +19,9 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -445,7 +448,7 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(crnNo);
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
@@ -890,7 +893,7 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(crnNo);
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
@@ -1003,7 +1006,7 @@
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = getWorkNo(0);
         // 杩斿洖dto
-        startupDto.setWorkNo(workNo);
+        startupDto.setTaskNo(workNo);
         startupDto.setCrnNo(crnNo);
         startupDto.setSourceStaNo(sourceStaNo);
         startupDto.setLocNo(locNo);
@@ -1024,4 +1027,66 @@
         }
     }
 
+    @Resource
+    private LocMastMapper locMastMapper;
+
+    public StartupDto getLocNoNew(int ioType, Integer sourceStaNo, Integer locType, List<Integer> rows) {
+        // 瀵绘壘鍒扮殑搴撲綅
+        LocMast locMast = null;
+
+        // 鎸夊簱浣嶇被鍨嬭幏鍙栧簱浣�
+        List<LocMast> locMasts = locMastMapper.selectLocByTypeAndRowsToList(locType,rows);
+
+        // todo 濡傛灉褰撳墠绫诲瀷搴撲綅鍓╀綑涓嶅锛屾槸涓�鐩存斁婊★紝杩樻槸鍏煎鍒颁笅涓�绉嶅簱浣嶇被鍨�
+        // 鑰冭檻绉诲簱闇�瑕佸悓绫诲瀷搴撲綅锛岃繖閲岄檺鍒朵笉鑳芥斁婊★紝鍏煎涓嬩竴绉嶅簱浣嶇被鍨�
+        if (locMasts.size() <= 4) {
+            switch (locType) {
+                case 0:
+                    return getLocNoNew(ioType, sourceStaNo, 1,rows);
+                case 1:
+                    return getLocNoNew(ioType, sourceStaNo, 2,rows);
+                case 2:
+                    return getLocNoNew(ioType, sourceStaNo, 3,rows);
+                case 3:
+                    log.warn("褰撳墠搴撲綅鎺掞細{}锛屽墿浣檣}涓敤浜庣Щ搴擄紝鏃犳硶鍗犵敤",rows,locMasts.size());
+                    return null;
+                default:
+            }
+        }
+
+        // 鍏堝彇娣卞簱浣�
+        Optional<LocMast> first = locMasts.stream().filter(o -> o.getRow1() == 1 || o.getRow1() == 4 || o.getRow1() == 5 || o.getRow1() == 8|| o.getRow1() == 9 || o.getRow1() == 12).findFirst();
+        if (first.isPresent()) {
+            locMast = first.get();
+        } else {
+            // 娣卞簱浣嶉噷闈㈡病鏈変粠娴呭簱浣嶉噷闈㈠彇
+            Optional<LocMast> first2 = locMasts.stream().filter(o -> o.getRow1() == 2 || o.getRow1() == 3 || o.getRow1() == 6 || o.getRow1() == 7 || o.getRow1() == 10 || o.getRow1() == 11).findFirst();
+            if(first2.isPresent()) {
+                locMast = first2.get();
+            }
+        }
+
+        if (locMast == null) {
+            return null;
+        }
+
+        // 鏍规嵁鍏ュ簱绫诲瀷鍜屾簮绔欑偣鑾峰彇宸ヤ綔璺緞
+//        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", ioType).eq("stn_no", sourceStaNo).eq("crn_no",locMast.getCrnNo()));
+//        if (staDesc == null) {
+//            log.error("鑾峰彇宸ヤ綔璺緞寮傚父,绫诲瀷锛歿}锛屾簮绔欑偣锛歿}锛屽簱浣嶏細{}",ioType,sourceStaNo,locMast.getLocNo());
+//            return null;
+//        }
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        StartupDto startupDto = new StartupDto();
+        startupDto.setTaskNo(workNo);
+        startupDto.setCrnNo(locMast.getCrnNo());
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setStaNo(0);
+        startupDto.setLocNo(locMast.getLocNo());
+        startupDto.setTaskPri(13D);
+
+        return startupDto;
+    }
 }
diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index efb9aa2..06b92cc 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -52,40 +52,37 @@
     @Autowired
     private LoadingConfigTimer loadingConfigTimer;
 
-    @PostMapping("/login.action")
+    @RequestMapping("/login.action")
     @ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "鐧诲綍")
-    public R loginAction(@RequestBody Map<String, String> param) {
+    public R loginAction(String username, String password){
         //楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
-        if (!licenseTimer.getSystemSupport()) {
+        if (!licenseTimer.getSystemSupport()){
             return R.parse(CodeRes.SYSTEM_20001);
         }
+        if (username.equals("super") && password.equals(Cools.md5(superPwd))) {
+            Map<String, Object> res = new HashMap<>();
+            res.put("username", username);
+            res.put("token", Cools.enToken(System.currentTimeMillis() + username, superPwd));
+            return R.ok(res);
+        }
         EntityWrapper<User> userWrapper = new EntityWrapper<>();
-        userWrapper.eq("username", param.get("username"));
+        userWrapper.eq("username", username);
         User user = userService.selectOne(userWrapper);
-        if (Cools.isEmpty(user)) {
-            if (param.get("username").equals("super") && param.get("password").equals(Cools.md5(superPwd))) {
-                Map<String, Object> res = new HashMap<>();
-                res.put("username", param.get("username"));
-                res.put("token", Cools.enToken(System.currentTimeMillis() + param.get("username"), superPwd));
-                return R.ok(res);
-            }
+        if (Cools.isEmpty(user)){
             return R.parse(CodeRes.USER_10001);
         }
-        if (user.getStatus() != 1) {
+        if (user.getStatus()!=1){
             return R.parse(CodeRes.USER_10002);
         }
-        if (!user.getPassword().equals(param.get("password"))) {
+        if (!user.getPassword().equals(password)){
             return R.parse(CodeRes.USER_10003);
         }
-        String token = Cools.enToken(System.currentTimeMillis() + param.get("username"), user.getPassword());
-        if (loadingConfigTimer.getTokenNumber() == 1) {
-            userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()).eq("system", "WMS"));
-        }
+        String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword());
+        userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()));
         UserLogin userLogin = new UserLogin();
         userLogin.setUserId(user.getId());
         userLogin.setToken(token);
         userLogin.setCreateTime(new Date());
-        userLogin.setSystem("WMS");
         userLoginService.insert(userLogin);
         Map<String, Object> res = new HashMap<>();
         res.put("username", user.getUsername());
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 9e11712..fd06609 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -8,18 +8,25 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
+import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.CodeRes;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
+import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
+import com.zy.common.web.param.GetLocNoChangeParam;
+import com.zy.common.web.param.NotifyDto;
 import com.zy.common.web.param.SearchLocParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -50,22 +57,83 @@
     @Autowired
     private WorkService workService;
 
+    @Resource
+    private WrkMastLogService wrkMastLogService;
+
     @PostMapping("/pakin/loc/v1")
     @ResponseBody
     public synchronized R getLocNo(@RequestBody SearchLocParam param) {
         log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
-        if (Cools.isEmpty(param.getIoType())) {
-            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
-        }
+//        if (Cools.isEmpty(param.getIoType())) {
+//            return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�");
+//        }
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
-        List<WaitPakin> waitPakins = null;
+        if (param.getRow().length == 0) {
+            return R.error("WCS涓婃姤鏃犲彲鐢ㄨ澶�");
+        }
+//        //wcs璋冪敤姝ゆ帴鍙e悜缁勬墭琛ㄦ彃鍏ヤ竴鏉℃暟鎹ā鎷熺粍鎵�
+//        WaitPakin waitPakin = new WaitPakin();
+//        waitPakin.setZpallet(param.getBarcode());
+//        waitPakin.setBatch("20260305002");
+//        waitPakin.setAnfme(100.0D);
+//        waitPakin.setMatnr("YJ2026030509353203");
+//        waitPakin.setMaktx("涓婃媺鏉哶宸﹀墠鍙冲悗姣涘澂");
+//        waitPakin.setSpecs("50001LR-71");
+//        waitPakin.setModel("skv");
+//        waitPakinService.insert(waitPakin);
+//
+//        WaitPakin waitPakin2 = new WaitPakin();
+//        waitPakin2.setZpallet(param.getBarcode());
+//        waitPakin2.setBatch("20260305002");
+//        waitPakin2.setAnfme(100.0D);
+//        waitPakin2.setMatnr("YJ2026030509494873");
+//        waitPakin2.setMaktx("铻烘潌鍏�");
+//        waitPakin2.setSpecs("50001LR-71");
+//        waitPakin2.setModel("skv");
+//        waitPakinService.insert(waitPakin2);
+        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
         if (param.getIoType() == 1) {
             if (Cools.isEmpty(param.getBarcode())) {
                 return R.error("鏉$爜涓嶈兘涓虹┖");
             }
-            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+            WrkMast wrkMast1 = wrkMastService.selectByBarcode(param.getBarcode());
+            if (wrkMast1 != null) {
+                Integer ioType = wrkMast1.getIoType();
+                if ((ioType == 103 || ioType == 107) && wrkMast1.getWrkSts() == 14) {
+                    // 杞崲宸ヤ綔妗�
+                    if (!wrkMastLogService.save(wrkMast1.getWrkNo())) {
+                        throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+                    }
+                    Date now = new Date();
+                    // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+                    wrkMast1.setIoType(wrkMast1.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+                    wrkMast1.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+                    wrkMast1.setSourceStaNo(String.valueOf(param.getSourceStaNo())); // 婧愮珯
+                    wrkMast1.setStaNo("0"); // 鐩爣绔�
+                    wrkMast1.setLocNo(wrkMast1.getSourceLocNo());
+                    wrkMast1.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+                    wrkMast1.setModiTime(now);
+                    if (!wrkMastService.updateById(wrkMast1)) {
+                        throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+                    }
+                    // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+                    LocMast locMast = locMastService.selectById(wrkMast1.getLocNo());
+                    locMast.setLocSts("Q");
+                    locMast.setModiTime(now);
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+                    }
+                }
+                StartupDto startupDto = new StartupDto();
+                startupDto.setTaskNo(wrkMast1.getWrkNo());
+                startupDto.setSourceStaNo(Integer.valueOf(wrkMast1.getSourceStaNo()));
+                startupDto.setTaskPri(wrkMast1.getIoPri());
+                startupDto.setCrnNo(wrkMast1.getCrnNo());
+                startupDto.setLocNo(Utils.locToLocNo(wrkMast1.getLocNo()));
+                return R.ok().add(startupDto);
+            }
             if (Cools.isEmpty(waitPakins)) {
                 WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
                 if (wrkMast != null && wrkMast.getIoType() == 103) {
@@ -84,24 +152,192 @@
         }
 
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
-        sourceStaNo.setLocType1(param.getLocType1());
-        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+//        sourceStaNo.setLocType1(param.getLocType1());
+        LocTypeDto locTypeDto = new LocTypeDto();
+        locTypeDto.setLocType1(param.getLocType1());
+        if(!waitPakins.isEmpty()) { // 鍒ゆ柇鏄惁鏄┖鎵樼洏
+            if (waitPakins.get(0).getMatnr().equals("1") ) {
+                param.setIoType(10);
+            }
+        }
 
         StartupDto dto = null;
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakins != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
+                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins, param.getRow());
                 break;
             case 10://绌烘墭鐩樺叆搴�
-                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode());
+                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(),param.getRow());
                 break;
             default:
                 break;
         }
         log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
         return R.ok().add(dto);
+    }
+
+    @PostMapping("/taskWrk/state")
+    @ResponseBody
+    public R taskWrkState(@RequestBody(required = false) NotifyDto notifyDto){
+        log.info("鏀跺埌WCS璇锋眰涓婃姤鎺ュ彛======>>宸ヤ綔鍙�:{},鍏ュ弬:{}",notifyDto.getSuperTaskNo(),notifyDto);
+        if (Cools.isEmpty(notifyDto.getNotifyType())){
+            return R.error("閫氱煡绫诲瀷涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(notifyDto.getTaskNo())){
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌�");
+        }
+        WrkMast wrkMast = wrkMastService.selectById(notifyDto.getSuperTaskNo());
+        switch (notifyDto.getMsgType()){
+            case "task_complete":
+                if (wrkMast != null && (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57 || wrkMast.getIoType() == 11)){
+                    wrkMast.setWrkSts(4L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>4");
+                    }
+                }else if (wrkMast != null && (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 ||wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110)){
+                    wrkMast.setWrkSts(14L);
+                    if (!wrkMastService.updateById(wrkMast)){
+                        return R.error("淇敼宸ヤ綔妗eけ璐�====>14");
+                    }
+                }
+                break;
+            case "task_cancel":
+                if(wrkMast == null) {
+                    return R.ok("浠诲姟涓嶅瓨鍦�");
+                }
+                workService.cancelWrkMast(notifyDto.getSuperTaskNo(), 9527L);
+        }
+        return R.ok();
+    }
+
+    @PostMapping("/change/loc/v1")
+    @ResponseBody
+    @Transactional
+    public synchronized R getLocNoChange(@RequestBody(required = false) GetLocNoChangeParam param) {
+        log.info("鏀跺埌WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅璇锋眰====>>鍏ュ弬:{}", param);
+        StartupDto dto = applyChangeLocNo(param.getLocNo(), param.getRow());
+        log.info("WCS鐢宠鍦ㄥ簱搴撲綅鏇存崲搴撲綅鎺ュ彛杩斿弬:{}", dto);
+        return R.ok().add(dto);
+    }
+
+    @Transactional
+    public StartupDto applyChangeLocNo(String wcsLocNo, int[] row) {
+        if (row.length == 0) {
+            throw new CoolException(wcsLocNo + "搴撲綅锛學CS涓婃姤鏃犲彲鐢ㄨ澶�");
+        }
+
+        String sourceLocNo = loc(wcsLocNo);
+        LocMast sourceLocMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", sourceLocNo));
+        if (sourceLocMast == null) {
+            throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+        }
+
+        if(!sourceLocMast.getLocSts().equals("F")) {
+            throw new CoolException("婧愬簱浣嶄笉澶勪簬鍦ㄥ簱鐘舵��");
+        }
+        List<LocDetl> locDetlList = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+
+        LocTypeDto locTypeDto = new LocTypeDto();
+        locTypeDto.setLocType1(sourceLocMast.getLocType1());
+
+        StartupDto dto = null;
+        // 鏍规嵁搴撲綅鎺掓槧灏勫爢鍨涙満
+        for(int i = 0; i < row.length/4 ; i ++) {
+            ArrayList<Integer> rows = new ArrayList<>();
+            rows.add(row[i * 4]);
+            rows.add(row[i * 4 + 1]);
+            rows.add(row[i * 4 + 2]);
+            rows.add(row[i * 4 + 3]);
+            dto = commonService.getLocNoNew(1, 0, Integer.valueOf(locTypeDto.getLocType1()),rows);
+            if (dto != null) {
+                break;
+            }
+        }
+        if (dto == null) {
+            throw new CoolException("娌℃湁鍖归厤鍒板簱浣嶏紝妫�鏌ュ彲鐢ㄥ簱浣�/鍫嗗灈鏈烘姤璀�");
+        }
+
+        LocMast loc = locMastService.selectById(dto.getLocNo());
+        if (Cools.isEmpty(loc)){
+            throw new CoolException("鏈壘鍒板簱浣�");
+        }
+        Date now = new Date();
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
+        dto.setTaskNo(workNo);
+
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(12L); // 宸ヤ綔鐘舵��
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(10D);
+        wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+        wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setBarcode(sourceLocMast.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setEmptyMk(sourceLocMast.getLocSts().equals("D") ? "Y" : "N");
+        wrkMast.setLinkMis("N");
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        for (LocDetl locDetl : locDetlList) {
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(locDetl);
+            wrkDetl.setWrkNo(workNo);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAnfme(locDetl.getAnfme());
+            wrkDetl.setAppeTime(now);
+            wrkDetl.setModiTime(now);
+            if (!wrkDetlService.insert(wrkDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (sourceLocMast.getLocSts().equals("D") || sourceLocMast.getLocSts().equals("F")) {
+            sourceLocMast.setLocSts("R"); // R.鍑哄簱棰勭害
+            sourceLocMast.setModiTime(now);
+            if (!locMastService.updateById(sourceLocMast)){
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLocMast.getLocSts$());
+        }
+
+        // 淇敼鐩爣搴撲綅鐘舵��
+        if (loc.getLocSts().equals("O")) {
+            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+            loc.setModiTime(now);
+            if (!locMastService.updateById(loc)) {
+                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+            }
+        } else {
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+        }
+        dto.setLocNo(Utils.locToLocNo(dto.getLocNo()));
+        return dto;
+    }
+
+    public String loc(String locNo){
+        String[] split = locNo.split("-");
+        return Utils.getLocNo(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2]));
+    }
+
+    @Resource
+    private LocMastMapper locMastMapper;
+    @RequestMapping("/auto21")
+    public R auto21(@RequestBody List<Integer> rows) {
+        List<LocMast> locMastList = locMastMapper.selectLocByTypeAndRowsToList(1, rows);
+        return R.ok(locMastList);
     }
 
     @PostMapping("/auto/emptyIn/v1")
@@ -117,7 +353,7 @@
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(dto.getWorkNo());
+        wrkMast.setWrkNo(dto.getTaskNo());
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(1L);
         wrkMast.setIoPri(13D);
@@ -160,16 +396,29 @@
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
+    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins, int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-//        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
-//        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
-//        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0));
-        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0));
-        StartupDto dto = commonService.getLocNo(1, devpNo, findLocNoAttributeVo, locTypeDto);
-        int workNo = dto.getWorkNo();
+//        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0));
+//        StartupDto dto = commonService.getLocNo(1, devpNo, findLocNoAttributeVo, locTypeDto);
+        StartupDto dto = null;
+        // 鏍规嵁搴撲綅鎺掓槧灏勫爢鍨涙満
+        for(int i = 0; i < row.length/4 ; i ++) {
+            ArrayList<Integer> rows = new ArrayList<>();
+            rows.add(row[i * 4]);
+            rows.add(row[i * 4 + 1]);
+            rows.add(row[i * 4 + 2]);
+            rows.add(row[i * 4 + 3]);
+            dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows);
+            if (dto != null) {
+                break;
+            }
+        }
+        if (dto == null) {
+            throw new CoolException("娌℃湁鍖归厤鍒板簱浣嶏紝妫�鏌ュ彲鐢ㄥ簱浣�/鍫嗗灈鏈烘姤璀�");
+        }
+        int workNo = dto.getTaskNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -188,7 +437,7 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -219,11 +468,11 @@
             throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
         }
         // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)) {
-            throw new CoolException("鏇存柊婧愮珯澶辫触");
-        }
+//        sourceStaNo.setWrkNo(workNo);
+//        sourceStaNo.setModiTime(now);
+//        if (!basDevpService.updateById(sourceStaNo)) {
+//            throw new CoolException("鏇存柊婧愮珯澶辫触");
+//        }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
         if (locMast.getLocSts().equals("O")) {
@@ -235,22 +484,40 @@
         } else {
             throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
+        dto.setLocNo(Utils.locToLocNo(dto.getLocNo()));
         return dto;
     }
 
     @Transactional
-    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode) {
+    public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int[] row) {
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+//        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
 
-        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
-        int workNo = dto.getWorkNo();
+//        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
+        StartupDto dto = null;
+        // 鏍规嵁搴撲綅鎺掓槧灏勫爢鍨涙満
+        for(int i = 0; i < row.length/4 ; i ++) {
+            ArrayList<Integer> rows = new ArrayList<>();
+            rows.add(row[i * 4]);
+            rows.add(row[i * 4 + 1]);
+            rows.add(row[i * 4 + 2]);
+            rows.add(row[i * 4 + 3]);
+            dto = commonService.getLocNoNew(1, devpNo, Integer.valueOf(locTypeDto.getLocType1()),rows);
+            if (dto != null) {
+                break;
+            }
+        }
+        if (dto == null) {
+            throw new CoolException("娌℃湁鍖归厤鍒板簱浣嶏紝妫�鏌ュ彲鐢ㄥ簱浣�/鍫嗗灈鏈烘姤璀�");
+        }
+        int workNo = dto.getTaskNo();
+        Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(new Date());
+        wrkMast.setIoTime(now);
         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
         wrkMast.setIoPri(13D); // 浼樺厛绾�
@@ -264,31 +531,36 @@
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("Y");
         wrkMast.setBarcode(barcode);
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
-        wrkMast.setAppeTime(new Date());
-        wrkMast.setModiTime(new Date());
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
-        // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiTime(new Date());
-        if (!basDevpService.updateById(sourceStaNo)) {
-            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                .eq("zpallet", barcode);
+        WaitPakin setParam = new WaitPakin();
+        setParam.setLocNo(dto.getLocNo());
+        setParam.setIoStatus("Y");
+        setParam.setModiTime(now);
+        if (!waitPakinService.update(setParam, wrapper)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
         if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
-            locMast.setModiTime(new Date());
+            locMast.setModiTime(now);
             if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
             throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
+        dto.setLocNo(Utils.locToLocNo(dto.getLocNo()));
         return dto;
     }
 
diff --git a/src/main/java/com/zy/common/web/param/GetLocNoChangeParam.java b/src/main/java/com/zy/common/web/param/GetLocNoChangeParam.java
new file mode 100644
index 0000000..f7f1f42
--- /dev/null
+++ b/src/main/java/com/zy/common/web/param/GetLocNoChangeParam.java
@@ -0,0 +1,13 @@
+package com.zy.common.web.param;
+
+import lombok.Data;
+
+@Data
+public class GetLocNoChangeParam {
+
+    private String locNo;
+
+    //搴撲綅鎺�
+    private int[] row;
+
+}
diff --git a/src/main/java/com/zy/common/web/param/NotifyDto.java b/src/main/java/com/zy/common/web/param/NotifyDto.java
new file mode 100644
index 0000000..9312ddc
--- /dev/null
+++ b/src/main/java/com/zy/common/web/param/NotifyDto.java
@@ -0,0 +1,42 @@
+package com.zy.common.web.param;
+
+import lombok.Data;
+
+@Data
+public class NotifyDto {
+    private Long id;
+
+    //閫氱煡绫诲瀷
+    private String notifyType;
+
+    //璁惧鍙�
+    private Integer device;
+
+    //宸ヤ綔鍙�
+    private String taskNo;
+
+    //涓婄骇绯荤粺宸ヤ綔鍙�
+    private String superTaskNo;
+
+    //娑堟伅绫诲瀷
+    private String msgType;
+
+    //娑堟伅鎻忚堪
+    private String msgDesc;
+
+    //娑堟伅鏁版嵁
+    private String data;
+
+    //澶辫触閲嶈瘯娆℃暟
+    private Integer failTimes = 3;
+
+    //閲嶈瘯娆℃暟
+    private Integer retryTimes = 0;
+
+    //閲嶈瘯闂撮殧榛樿30s
+    private Integer retryTime = 30;
+
+    //涓婃閲嶈瘯鏃堕棿
+    private Long lastRetryTime = 0L;
+
+}
diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java
index 1a170ce..77b8b80 100644
--- a/src/main/java/com/zy/common/web/param/SearchLocParam.java
+++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -8,13 +8,16 @@
 @Data
 public class SearchLocParam {
 
-    private Integer ioType;
+    private Integer ioType = 1;
 
     private Integer sourceStaNo;
 
     private String barcode;
 
-    // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級
+    // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:涓簱浣嶏紝3.楂樺簱浣嶏級
     private Short locType1;
 
+    //搴撲綅鎺�
+    private int[] row;
+
 }
diff --git a/src/main/java/com/zy/system/controller/UserController.java b/src/main/java/com/zy/system/controller/UserController.java
index 1d32309..498fa3c 100644
--- a/src/main/java/com/zy/system/controller/UserController.java
+++ b/src/main/java/com/zy/system/controller/UserController.java
@@ -117,6 +117,9 @@
         if (user.getMobile() != null) {
             entity.setMobile(user.getMobile());
         }
+        if (user.getRoleId() != null) {
+            entity.setRoleId(user.getRoleId());
+        }
         userService.updateById(entity);
         return R.ok();
     }
diff --git a/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
index 1075c92..d7b3416 100644
--- a/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
+++ b/src/main/java/com/zy/system/entity/license/AbstractServerInfos.java
@@ -24,9 +24,9 @@
 
         try {
 //            result.setIpAddress(this.getIpAddress());
-            result.setMacAddress(this.getMacAddress());
-            result.setCpuSerial(this.getCPUSerial());
-            result.setMainBoardSerial(this.getMainBoardSerial());
+//            result.setMacAddress(this.getMacAddress());
+//            result.setCpuSerial(this.getCPUSerial());
+//            result.setMainBoardSerial(this.getMainBoardSerial());
         } catch (Exception e) {
             logger.error("鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭け璐�", e);
         }
diff --git a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
index 36d042f..5d1b65d 100644
--- a/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
+++ b/src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -127,25 +127,25 @@
         LicenseCheck serverCheckModel = getServerInfos();
 
         if (expectedCheckModel != null && serverCheckModel != null) {
-            //鏍¢獙IP鍦板潃
-            if (!checkIpAddress(expectedCheckModel.getIpAddress(), serverCheckModel.getIpAddress())) {
-                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�");
-            }
-
-            //鏍¢獙Mac鍦板潃
-            if (!checkIpAddress(expectedCheckModel.getMacAddress(), serverCheckModel.getMacAddress())) {
-                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�");
-            }
-
-            //鏍¢獙涓绘澘搴忓垪鍙�
-            if (!checkSerial(expectedCheckModel.getMainBoardSerial(), serverCheckModel.getMainBoardSerial())) {
-                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
-            }
-
-            //鏍¢獙CPU搴忓垪鍙�
-            if (!checkSerial(expectedCheckModel.getCpuSerial(), serverCheckModel.getCpuSerial())) {
-                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
-            }
+//            //鏍¢獙IP鍦板潃
+//            if (!checkIpAddress(expectedCheckModel.getIpAddress(), serverCheckModel.getIpAddress())) {
+//                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑IP娌″湪鎺堟潈鑼冨洿鍐�");
+//            }
+//
+//            //鏍¢獙Mac鍦板潃
+//            if (!checkIpAddress(expectedCheckModel.getMacAddress(), serverCheckModel.getMacAddress())) {
+//                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑Mac鍦板潃娌″湪鎺堟潈鑼冨洿鍐�");
+//            }
+//
+//            //鏍¢獙涓绘澘搴忓垪鍙�
+//            if (!checkSerial(expectedCheckModel.getMainBoardSerial(), serverCheckModel.getMainBoardSerial())) {
+//                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑涓绘澘搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
+//            }
+//
+//            //鏍¢獙CPU搴忓垪鍙�
+//            if (!checkSerial(expectedCheckModel.getCpuSerial(), serverCheckModel.getCpuSerial())) {
+//                throw new LicenseContentException("褰撳墠鏈嶅姟鍣ㄧ殑CPU搴忓垪鍙锋病鍦ㄦ巿鏉冭寖鍥村唴");
+//            }
         } else {
             throw new LicenseContentException("涓嶈兘鑾峰彇鏈嶅姟鍣ㄧ‖浠朵俊鎭�");
         }
diff --git a/src/main/java/com/zy/system/timer/LoadingConfigTimer.java b/src/main/java/com/zy/system/timer/LoadingConfigTimer.java
index e9760c4..e472a12 100644
--- a/src/main/java/com/zy/system/timer/LoadingConfigTimer.java
+++ b/src/main/java/com/zy/system/timer/LoadingConfigTimer.java
@@ -35,6 +35,12 @@
     // erp涓婃姤
     private Boolean erpReport = false;
 
+    private String erpInReportPath;
+
+    private String erpOutReportPath;
+
+    private String erpReportURL;
+
 
     @Autowired
     private ConfigService configService;
@@ -46,6 +52,9 @@
         logDeleteDays = configService.getVal("logDeleteDays", Integer.class, logDeleteDays);
         erpReport = configService.getVal("erpReport", Boolean.class, erpReport);
         zpalletManage = configService.getVal("zpalletManage", Boolean.class, zpalletManage);
+        erpOutReportPath = configService.getVal("erpOutReportPath", String.class, erpOutReportPath);
+        erpInReportPath = configService.getVal("erpInReportPath", String.class, erpInReportPath);
+        erpReportURL = configService.getVal("erpReportURL", String.class, erpReportURL);
 
     }
 
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 8301d8b..358a872 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -12,7 +12,7 @@
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     username: sa
     password: sa@123
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=wms
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=nwswms
   mvc:
     static-path-pattern: /**
   redis:
@@ -27,13 +27,6 @@
 
 mybatis-plus:
   mapper-locations: classpath:mapper/*.xml
-    #  global-config:
-    #    field-strategy: 0
-    #  configuration:
-  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-#    map-underscore-to-camel-case: true
-#    cache-enabled: true
-#    call-setters-on-nulls: true
 
 
 super:
@@ -44,12 +37,22 @@
 
 #License鐩稿叧閰嶇疆
 license:
-  subject: asrs2.0
+  subject: nwsasrs
   publicAlias: publicCert
   storePass: public_zhongyang_123456789
   licensePath: license.lic
   publicKeysStorePath: publicCerts.keystore
 
+#wcs瀵规帴
+wcs:
+  URL: http://127.0.0.1:9090/wcs
+  outboundTaskSend: open/outboundTaskSend
+  deviceStatus : open/deviceStatus
+  createOutTask: openapi/createOutTask
+  createLocMoveTask: openapi/createLocMoveTask
+  devicesStatus: openapi/devicesStatus
+  getAllLocInformation: openapi/getAllLocInformation
+
 # 涓嬩綅鏈洪厤缃�
 wcs-slave:
   # 鍙屾繁
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 958190a..673f197 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -545,7 +545,7 @@
 
 
         <if test="locNos != null and locNos.size > 0">
-            and b.loc_no not in
+            and (b.loc_no + '_' + a.matnr + '_' + a.batch) not in
             <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
                 #{item}
             </foreach>
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index cae15d0..5d9eea3 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -203,5 +203,19 @@
             #{item}
         </foreach>
     </select>
+    <select id="selectLocByTypeAndRowsToList" resultType="com.zy.asrs.entity.LocMast">
+        select
+        loc_no as locNo,
+        crn_no as crnNo,
+        row1
+        from asr_loc_mast
+        where loc_sts = 'O'
+        and loc_type1 = #{locType}
+        and row1 in
+        <foreach collection="rows" item="row" open="(" separator="," close=")">
+            #{row}
+        </foreach>
+        order by lev1, bay1, row1
+    </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index f18898e..ec43591 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -149,7 +149,7 @@
     </update>
 
     <update id="decrease">
-        update man_order_detl
+        update man_order_detl_pakin
         set work_qty = work_qty - #{qty}
         where 1=1
         and order_no = #{orderNo}
diff --git a/src/main/resources/mapper/OrderDetlPakinMapper.xml b/src/main/resources/mapper/OrderDetlPakinMapper.xml
index 3f3e522..a9dd0d8 100644
--- a/src/main/resources/mapper/OrderDetlPakinMapper.xml
+++ b/src/main/resources/mapper/OrderDetlPakinMapper.xml
@@ -226,7 +226,7 @@
 
     <update id="increaseQtyByOrderNo">
         update man_order_detl_pakin
-        set qty = qty + #{qty}
+        set qty = qty + #{qty},work_qty = work_qty - #{qty}
         where 1=1
         and order_no = #{orderNo}
         and matnr = #{matnr}
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index afa1793..fe73e47 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -4,7 +4,6 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMast">
-        <id column="id" property="id" />
         <result column="wrk_no" property="wrkNo" />
         <result column="task_type" property="taskType" />
         <result column="inv_wh" property="invWh" />
@@ -72,7 +71,7 @@
         select * from asr_wrk_mast
         where wrk_sts=5
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+        or (wrk_sts=15 and dateadd(mi,1,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
         order by io_time,wrk_no asc
     </select>
diff --git a/src/main/webapp/static/js/apiLog/apiLog.js b/src/main/webapp/static/js/apiLog/apiLog.js
index 1d24b5e..8201f7c 100644
--- a/src/main/webapp/static/js/apiLog/apiLog.js
+++ b/src/main/webapp/static/js/apiLog/apiLog.js
@@ -22,6 +22,7 @@
         height: 'full-120',
         cols: [[
             {type: 'checkbox'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
             // ,{field: 'id', align: 'center',title: 'ID'}
             // ,{field: 'uuid', align: 'center',title: '鏃ュ織缂栧彿'}
             ,{field: 'namespace', align: 'center',title: '鍚嶇О绌洪棿'}
@@ -30,15 +31,14 @@
             // ,{field: 'timestamp', align: 'center',title: '鏃堕棿鎴�'}
             ,{field: 'clientIp', align: 'center',title: 'URL',hide: true}
             ,{field: 'request', align: 'center',title: '璇锋眰鍐呭'}
-            ,{field: 'response', align: 'center',title: '鎿嶄綔鍐呭'}
-            // ,{field: 'err', align: 'center',title: '寮傚父鍐呭'}
+            ,{field: 'response', align: 'center',title: '杩斿洖鍐呭'}
+            ,{field: 'err', align: 'center',title: '寮傚父鍐呭'}
             ,{field: 'result$', align: 'center',title: '缁撴灉', templet: '#resTpl', width: 80}
             // ,{field: 'status$', align: 'center',title: '鐘舵��'}
-            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
             // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
             ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
 
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}
+            // ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 80}
         ]],
         request: {
             pageName: 'curr',
diff --git a/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js b/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
index 54fc129..3a743f8 100644
--- a/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
+++ b/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
@@ -15,8 +15,9 @@
                 html += ">";
                 return html;
             }}
-        ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
-        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true})
+        ,{field: 'appeUser$', align: 'center',title: '鍒涘缓浜哄憳'}
+        ,{field: 'appeTime$', align: 'center',title: '鍒涘缓鏃堕棿'}
+        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'})
     return cols;
 }
 layui.use(['table','laydate', 'form'], function(){
diff --git a/src/main/webapp/views/apiLog/apiLog.html b/src/main/webapp/views/apiLog/apiLog.html
index e35b6a9..3529bd6 100644
--- a/src/main/webapp/views/apiLog/apiLog.html
+++ b/src/main/webapp/views/apiLog/apiLog.html
@@ -26,7 +26,7 @@
                     <div class="layui-inline">
                         <label class="layui-form-label">璇锋眰鍐呭:</label>
                         <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="request" placeholder="璇疯緭鍏ワ紙璁㈠崟鍙锋垨鍝佸彿锛�" autocomplete="off">
+                            <input class="layui-input" type="text" name="request" placeholder="璇疯緭鍏�" autocomplete="off">
                         </div>
                     </div>
                     <div class="layui-inline">&emsp;
@@ -47,8 +47,8 @@
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
 <!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
     </div>
 </script>
 
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index 23f1ef0..853a4f6 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -135,8 +135,7 @@
         let params = {username: username, password: hex_md5(password)}
         $.ajax({
             url: baseUrl + "/login.action",
-            headers: {'Content-Type': 'application/json'},
-            data: JSON.stringify(params),
+            data:params,
             method: 'POST',
             success: function (res) {
                 if (res.code === 200) {
diff --git a/version/bak/nwswms.bak b/version/bak/nwswms.bak
new file mode 100644
index 0000000..55e7bdc
--- /dev/null
+++ b/version/bak/nwswms.bak
Binary files differ

--
Gitblit v1.9.1