From 74863c38a407b1e0f36250dfa0c63e5da7fe5f66 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 18:06:51 +0800
Subject: [PATCH] WMS功能完善

---
 src/main/resources/mapper/WrkMastLogMapper.xml                      |    1 
 src/main/webapp/static/js/pakStore/emptyOut.js                      |    1 
 src/main/java/com/zy/common/config/AdminInterceptor.java            |    4 
 src/main/java/com/zy/common/config/ControllerResAdvice.java         |   15 
 src/main/java/com/zy/asrs/task/JlerScheduler.java                   |   12 
 src/main/java/com/zy/asrs/controller/DigitalTwinController.java     |  212 +++++-----
 src/main/java/com/zy/asrs/controller/WorkController.java            |   16 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java     |    1 
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java          |   10 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailDto.java    |   11 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java     |    2 
 src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java         |  169 ++++++--
 src/main/java/com/zy/asrs/service/DigitalTwinService.java           |    4 
 src/main/webapp/static/js/wrkMastLog/wrkMastLog.js                  |    1 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java         |   65 +++
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java          |   17 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java       |   19 
 src/main/resources/application-dev.yml                              |    5 
 src/main/resources/mapper/ViewInOutMapper.xml                       |   15 
 src/main/java/com/zy/asrs/controller/MesController.java             |    4 
 src/main/java/com/zy/asrs/controller/TaskLogController.java         |    4 
 src/main/webapp/static/js/pakStore/pakStore.js                      |   14 
 src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java             |    9 
 src/main/java/com/zy/asrs/service/MobileService.java                |    2 
 src/main/java/com/zy/asrs/service/WorkService.java                  |    7 
 src/main/resources/mapper/ViewDigitalTwinMapper.xml                 |   97 +++--
 src/main/java/com/zy/system/controller/UserController.java          |    3 
 src/main/webapp/views/pakStore/pakStore.html                        |   12 
 src/main/resources/mapper/ViewWorkInMapper.xml                      |   70 +++
 src/main/webapp/views/task/task.html                                |    4 
 src/main/java/com/zy/asrs/controller/TaskController.java            |    2 
 src/main/resources/mapper/ViewStayTimeMapper.xml                    |   59 +++
 src/main/resources/mapper/WrkMastMapper.xml                         |    1 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java                    |    8 
 src/main/java/com/zy/asrs/controller/MobileController.java          |    4 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java     |    7 
 src/main/resources/mapper/ViewStockUseMapper.xml                    |   13 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtInAndOutBoundVo.java |   10 
 src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java   |    4 
 src/main/resources/mapper/LocCountMapper.xml                        |   15 
 src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java  |  187 ++++++---
 41 files changed, 794 insertions(+), 322 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
index decee80..2779f9a 100644
--- a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
+++ b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
@@ -31,16 +31,16 @@
 //    @ManagerAuth
     public R overview(@RequestParam(required = false) String areaId){
 
-        //digitalTwinService.overview(areaId);
+        DtOverviewVo dtOverviewVo = digitalTwinService.overview(areaId);
 
-        DtOverviewVo dtOverviewVo = DtOverviewVo.builder()
-                .totalLoc(999)
-                .useLoc(900)
-                .idleLoc(99)
-                .todayOutbound(160)
-                .todayWarehousing(170)
-                .remainingStock(180)
-                .build();
+//        DtOverviewVo dtOverviewVo = DtOverviewVo.builder()
+//                .totalLoc(999)
+//                .useLoc(900)
+//                .idleLoc(99)
+//                .todayOutbound(160)
+//                .todayWarehousing(170)
+//                .remainingStock(180)
+//                .build();
 
         return R.ok().add(dtOverviewVo);
     }
@@ -57,19 +57,19 @@
     public R recentOrder(@RequestParam(required = false) String startDate,
                          @RequestParam(required = false) String endDate){
 
-//        digitalTwinService.order(startDate, endDate);
+        List<DtOrderVo> orderVoList = digitalTwinService.order(startDate, endDate);
 
-        DtOrderVo dtOrderVo = DtOrderVo.builder()
-                .orderDate("2025-10-22")
-                .orderNum(156)
-                .build();
-        DtOrderVo dtOrderVo2 = DtOrderVo.builder()
-                .orderDate("2025-10-23")
-                .orderNum(166)
-                .build();
-        List<DtOrderVo> orderVoList = new ArrayList<>();
-        orderVoList.add(dtOrderVo);
-        orderVoList.add(dtOrderVo2);
+//        DtOrderVo dtOrderVo = DtOrderVo.builder()
+//                .orderDate("2025-10-22")
+//                .orderNum(156)
+//                .build();
+//        DtOrderVo dtOrderVo2 = DtOrderVo.builder()
+//                .orderDate("2025-10-23")
+//                .orderNum(166)
+//                .build();
+//        List<DtOrderVo> orderVoList = new ArrayList<>();
+//        orderVoList.add(dtOrderVo);
+//        orderVoList.add(dtOrderVo2);
 
         return R.ok().add(orderVoList);
     }
@@ -88,19 +88,19 @@
                            @RequestParam(required = false) String startDate,
                          @RequestParam(required = false) String endDate){
 
-//        digitalTwinService.recentLoc(areaId, startDate, endDate);
+        List<DtLocVo> locVoList = digitalTwinService.recentLoc(areaId, startDate, endDate);
 
-        DtLocVo dtLocVo = DtLocVo.builder()
-                .locDate("2025-10-22")
-                .idleNum(208)
-                .build();
-        DtLocVo dtLocVo2 = DtLocVo.builder()
-                .locDate("2025-10-23")
-                .idleNum(177)
-                .build();
-        List<DtLocVo> locVoList = new ArrayList<>();
-        locVoList.add(dtLocVo);
-        locVoList.add(dtLocVo2);
+//        DtLocVo dtLocVo = DtLocVo.builder()
+//                .locDate("2025-10-22")
+//                .idleNum(208)
+//                .build();
+//        DtLocVo dtLocVo2 = DtLocVo.builder()
+//                .locDate("2025-10-23")
+//                .idleNum(177)
+//                .build();
+//        List<DtLocVo> locVoList = new ArrayList<>();
+//        locVoList.add(dtLocVo);
+//        locVoList.add(dtLocVo2);
 
         return R.ok().add(locVoList);
     }
@@ -119,21 +119,21 @@
                            @RequestParam(required = false) String startDate,
                            @RequestParam(required = false) String endDate){
 
-//        digitalTwinService.inAndOutBound(areaId, startDate, endDate);
+        List<DtInAndOutBoundVo> inAndOutBoundVoList = digitalTwinService.inAndOutBound(areaId, startDate, endDate);
 
-        DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder()
-                .boundDate("2025-10-22")
-                .inBoundNum(237)
-                .outBoundNum(487)
-                .build();
-        DtInAndOutBoundVo dtInAndOutBoundVo2 = DtInAndOutBoundVo.builder()
-                .boundDate("2025-10-23")
-                .inBoundNum(187)
-                .outBoundNum(287)
-                .build();
-        List<DtInAndOutBoundVo> inAndOutBoundVoList = new ArrayList<>();
-        inAndOutBoundVoList.add(dtInAndOutBoundVo);
-        inAndOutBoundVoList.add(dtInAndOutBoundVo2);
+//        DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder()
+//                .boundDate("2025-10-22")
+//                .inBoundNum(237)
+//                .outBoundNum(487)
+//                .build();
+//        DtInAndOutBoundVo dtInAndOutBoundVo2 = DtInAndOutBoundVo.builder()
+//                .boundDate("2025-10-23")
+//                .inBoundNum(187)
+//                .outBoundNum(287)
+//                .build();
+//        List<DtInAndOutBoundVo> inAndOutBoundVoList = new ArrayList<>();
+//        inAndOutBoundVoList.add(dtInAndOutBoundVo);
+//        inAndOutBoundVoList.add(dtInAndOutBoundVo2);
 
         return R.ok().add(inAndOutBoundVoList);
     }
@@ -152,31 +152,31 @@
                              @RequestParam(required = false) Integer pageIndex,
                              @RequestParam(required = false) Integer pageSize){
 
-//        digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize);
+        List<DtDetainMatVo> detainMatVoList = digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize);
 
-        DtDetainMatVo dtDetainMatVo = DtDetainMatVo.builder()
-                .belongAreaId("A1")
-                .belongAreaName("鍒�鍏峰簱")
-                .matId("mat10001")
-                .matName("閬撳叿鎶�")
-                .lokId("loc1001")
-                .lokName("搴撲綅10001")
-                .detainTime(765)
-                .inBoundTime("2025-10-11T11:15:16")
-                .build();
-        DtDetainMatVo dtDetainMatVo2 = DtDetainMatVo.builder()
-                .belongAreaId("A1")
-                .belongAreaName("鍒�鍏峰簱")
-                .matId("mat10002")
-                .matName("閬撳叿鎶�")
-                .lokId("loc1002")
-                .lokName("搴撲綅10002")
-                .detainTime(665)
-                .inBoundTime("2025-10-10T11:15:16")
-                .build();
-        List<DtDetainMatVo> detainMatVoList = new ArrayList<>();
-        detainMatVoList.add(dtDetainMatVo);
-        detainMatVoList.add(dtDetainMatVo2);
+//        DtDetainMatVo dtDetainMatVo = DtDetainMatVo.builder()
+//                .belongAreaId("A1")
+//                .belongAreaName("鍒�鍏峰簱")
+//                .matId("mat10001")
+//                .matName("閬撳叿鎶�")
+//                .lokId("loc1001")
+//                .lokName("搴撲綅10001")
+//                .detainTime(765)
+//                .inBoundTime("2025-10-11T11:15:16")
+//                .build();
+//        DtDetainMatVo dtDetainMatVo2 = DtDetainMatVo.builder()
+//                .belongAreaId("A1")
+//                .belongAreaName("鍒�鍏峰簱")
+//                .matId("mat10002")
+//                .matName("閬撳叿鎶�")
+//                .lokId("loc1002")
+//                .lokName("搴撲綅10002")
+//                .detainTime(665)
+//                .inBoundTime("2025-10-10T11:15:16")
+//                .build();
+//        List<DtDetainMatVo> detainMatVoList = new ArrayList<>();
+//        detainMatVoList.add(dtDetainMatVo);
+//        detainMatVoList.add(dtDetainMatVo2);
 
         return R.ok().add(detainMatVoList);
     }
@@ -191,35 +191,49 @@
 //    @ManagerAuth
     public R equipment(@RequestParam(required = false) String areaId){
 
-        DtEquipmentVo dtDetainMatVo = DtEquipmentVo.builder()
-                .equipmentId("eq1001")
-                .equipmentName("鍫嗗灈鏈�1")
-                .equipmentType(1)
-                .belongAreaId("A1")
-                .belongAreaName("鍒�鍏峰簱")
-                .verticalSpeed(288)
-                .horizontalSpeed(203)
-                .voltage(48)
-                .status(1)
-                .operateMethod(1)
-                .build();
-        DtEquipmentVo dtDetainMatVo2 = DtEquipmentVo.builder()
-                .equipmentId("eq1002")
-                .equipmentName("鍫嗗灈鏈�2")
-                .equipmentType(1)
-                .belongAreaId("A1")
-                .belongAreaName("鍒�鍏峰簱")
-                .verticalSpeed(208)
-                .horizontalSpeed(253)
-                .voltage(48)
-                .status(1)
-                .operateMethod(1)
-                .build();
-        List<DtEquipmentVo> dtEquipmentVoList = new ArrayList<>();
-        dtEquipmentVoList.add(dtDetainMatVo);
-        dtEquipmentVoList.add(dtDetainMatVo2);
+        return R.ok(digitalTwinService.equipment(areaId));
+//        DtEquipmentVo dtDetainMatVo = DtEquipmentVo.builder()
+//                .equipmentId("eq1001")
+//                .equipmentName("鍫嗗灈鏈�1")
+//                .equipmentType(1)
+//                .belongAreaId("A1")
+//                .belongAreaName("鍒�鍏峰簱")
+//                .verticalSpeed(288)
+//                .horizontalSpeed(203)
+//                .voltage(48)
+//                .status(1)
+//                .operateMethod(1)
+//                .build();
+//        DtEquipmentVo dtDetainMatVo2 = DtEquipmentVo.builder()
+//                .equipmentId("eq1002")
+//                .equipmentName("鍫嗗灈鏈�2")
+//                .equipmentType(1)
+//                .belongAreaId("A1")
+//                .belongAreaName("鍒�鍏峰簱")
+//                .verticalSpeed(208)
+//                .horizontalSpeed(253)
+//                .voltage(48)
+//                .status(1)
+//                .operateMethod(1)
+//                .build();
+//        List<DtEquipmentVo> dtEquipmentVoList = new ArrayList<>();
+//        dtEquipmentVoList.add(dtDetainMatVo);
+//        dtEquipmentVoList.add(dtDetainMatVo2);
+//
+//        return R.ok().add(dtEquipmentVoList);
+    }
 
-        return R.ok().add(dtEquipmentVoList);
+    /**
+     * 搴撲綅鍜屽簱瀛樿鎯�,鏁板瓧瀛敓鐢�
+     *
+     * @param areaId
+     * @return
+     */
+    @RequestMapping(value = "/warehouseDetail2")
+//    @ManagerAuth
+    public R warehouseDetail2(@RequestParam(required = false) String areaId) {
+
+        return R.ok(digitalTwinService.warehouseDetail2(areaId));
     }
 
     /**
diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index a243f80..a452518 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -69,7 +69,9 @@
 
     // 涓嬪彂杩愯緭浠诲姟锛宮es璋冪敤涓嬪垁06(鍛煎彨agv鎼繍)
     @PostMapping("/api/mes/submitTask")
-    public JSONObject submitTask(@RequestBody TransTask param){
+    @AppAuth(memo = "涓嬪垁(閫�鍒�)")
+    public JSONObject submitTask(@RequestHeader(required = false) String appkey,@RequestBody TransTask param,HttpServletRequest request){
+        auth(appkey, param, request);
         log.info("涓嬪垁(閫�鍒�)锛歿}",JSONObject.toJSONString(param));
         // 缁堢偣涓虹┖锛岃绠楁帴椹充綅
         BasStation basStation = null;
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 5befdc3..8756d2a 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -105,10 +105,10 @@
     @RequestMapping("/pda/WarehouseOutPickMerge/v1")
     @ManagerAuth(memo = "鎷f枡閫斾腑骞舵澘")
     public R WarehouseOutPickMergeV1(@RequestBody WarehouseOutPickMergeParam param) {
-        if (Cools.isEmpty(param,param.getLocNo(),param.getBarcode(),param.getCombMats())) {
+        if (Cools.isEmpty(param,param.getBarcode(),param.getCombMats())) {
             return R.parse("鍙傛暟涓嶈兘涓虹┖锛�");
         }
-        return mobileService.WarehouseOutPickMergeV1(param, getHostId(), getUserId());
+        return mobileService.WarehouseOutPickMergeV1(param, getUserId());
     }
 
     @RequestMapping("/pick/in")
diff --git a/src/main/java/com/zy/asrs/controller/TaskController.java b/src/main/java/com/zy/asrs/controller/TaskController.java
index b453629..25bd153 100644
--- a/src/main/java/com/zy/asrs/controller/TaskController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskController.java
@@ -103,7 +103,7 @@
             return R.ok("宸ヤ綔妗e凡鍙栨秷");
         } else if (type == 3) {
             taskService.pickWrkMast(workNo, getUserId());
-            return R.ok("宸ヤ綔妗e凡鎷f枡");
+            return R.ok("宸ヤ綔妗e凡杞崲");
         }
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/TaskLogController.java b/src/main/java/com/zy/asrs/controller/TaskLogController.java
index 1c642ba..c1c3d9a 100644
--- a/src/main/java/com/zy/asrs/controller/TaskLogController.java
+++ b/src/main/java/com/zy/asrs/controller/TaskLogController.java
@@ -42,7 +42,9 @@
         excludeTrash(param);
         convert(param, wrapper);
         allLike(TaskLog.class, param.keySet(), wrapper, condition);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+            wrapper.orderBy("modi_time", false);
+        }
         return R.ok(taskLogService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java
index 6de7c6e..1cf5362 100644
--- a/src/main/java/com/zy/asrs/controller/WorkController.java
+++ b/src/main/java/com/zy/asrs/controller/WorkController.java
@@ -88,14 +88,16 @@
     }
 
     @RequestMapping("/full/store/put/start")
-    @ManagerAuth(memo = "鍏ㄦ澘鍏ュ簱")
+    @ManagerAuth(memo = "WEB缁勬墭")
     public R fullStorePutStart(@RequestBody FullStoreParam fullStoreParam) {
-        try {
-            String locNo = workService.startupFullPutStore(fullStoreParam, getUserId());
-            return R.ok("鍏ュ簱鍚姩鎴愬姛").add(locNo);
-        } catch (Exception e){
-            return R.error("鍏ュ簱鍚姩澶辫触==>"+e.getMessage());
-        }
+        workService.webComb(fullStoreParam,getUserId());
+        return R.ok("缁勬墭鎴愬姛");
+//        try {
+//            String locNo = workService.startupFullPutStore(fullStoreParam, getUserId());
+//            return R.ok("鍏ュ簱鍚姩鎴愬姛").add(locNo);
+//        } catch (Exception e){
+//            return R.error("鍏ュ簱鍚姩澶辫触==>"+e.getMessage());
+//        }
     }
 
     @RequestMapping("/plate/out/start")
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index e4d3c58..08dade6 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -327,6 +327,14 @@
     @TableField("take_none")
     private String takeNone;
 
+    /**
+     * 澶栭儴浠诲姟缂栧彿
+     */
+    @ApiModelProperty(value= "澶栭儴浠诲姟缂栧彿")
+    @TableField("task_no")
+    private String taskNo;
+
+
     public WrkMastLog() {
     }
 
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java
index 29129c9..7890539 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java
@@ -5,7 +5,6 @@
 
 // 鏁板瓧瀛敓锛氬憜婊炲搧淇℃伅
 @Data
-@Builder
 public class DtDetainMatVo {
 
     // 褰掑睘搴撳尯ID
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java
index 67d9fe7..3143b81 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java
@@ -4,7 +4,7 @@
 import lombok.Data;
 
 @Data
-@Builder
+
 public class DtEquipmentVo {
 
     // 璁惧ID
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtInAndOutBoundVo.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtInAndOutBoundVo.java
index e983dbe..00225d4 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtInAndOutBoundVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtInAndOutBoundVo.java
@@ -3,15 +3,17 @@
 import lombok.Builder;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 // 鏁板瓧瀛敓锛氭寜澶╁嚭鍏ュ簱鏁伴噺
 @Data
-@Builder
+//@Builder
 public class DtInAndOutBoundVo {
 
     // 鏃ユ湡
     private String boundDate;
     // 鍏ュ簱鏁伴噺
-    private Integer inBoundNum;
+    private BigDecimal inBoundNum;
     // 鍑哄簱鏁伴噺
-    private Integer outBoundNum;
-}
+    private BigDecimal outBoundNum;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailDto.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailDto.java
new file mode 100644
index 0000000..0706728
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailDto.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.entity.digitaltwin;
+
+import lombok.Data;
+
+@Data
+public class DtLocDetailDto {
+    // 搴撲綅鍙�
+    private String locNo;
+    // 搴撲綅鐘舵�侊紝O绌哄簱浣嶏紙鑻辨枃涓嶆槸鏁板瓧锛夛紱F 鍦ㄥ簱锛汥 绌烘澘锛汸 鍑哄簱涓紱R 鍑哄簱棰勭害锛汼 鍏ュ簱棰勭害锛涘叾浠� 鍏朵粬锛�
+    private String locSts;
+}
diff --git a/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
index cfd9da0..9f2eec2 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtLocDetailVo.java
@@ -25,7 +25,12 @@
     // 灞�
     private Integer lev1;
 
+    // 搴撲綅淇℃伅
+    private LocMast locMast;
     // 搴撳瓨淇℃伅
-    private List<StockDetl> locDetl;
+    private LocDetl locDetl;
+
+    // 搴撳瓨淇℃伅
+    private List<StockDetl> locDetls;
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java b/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java
index 33f1999..103b0f8 100644
--- a/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java
@@ -7,6 +7,7 @@
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -15,12 +16,12 @@
 
     List<Double> overview(@Param("areaId")String areaId);
 
-    List<DtOrderVo> recentOrder(@Param("startTime")String startTime, @Param("endTime")String endTime);
+    List<DtOrderVo> recentOrder(@Param("startTime") Date startTime, @Param("endTime")Date endTime);
 
-    List<DtInAndOutBoundVo> recentInBound(@Param("areaId")String areaId, @Param("startTime")String startTime, @Param("endTime")String endTime);
+    List<DtInAndOutBoundVo> recentInBound(@Param("areaId")String areaId, @Param("startTime")Date startTime, @Param("endTime")Date endTime);
 
-    List<DtInAndOutBoundVo> recentOutBound(@Param("areaId")String areaId, @Param("startTime")String startTime, @Param("endTime")String endTime);
+    List<DtInAndOutBoundVo> recentOutBound(@Param("areaId")String areaId, @Param("startTime")Date startTime, @Param("endTime")Date endTime);
 
-    List<DtDetainMatVo> recentDetainMat(@Param("areaId")String areaId, @Param("startTime")String startTime,
+    List<DtDetainMatVo> recentDetainMat(@Param("areaId")String areaId, @Param("startTime")Date startTime,
                                         @Param("pageIndex")Integer pageIndex, @Param("pageSize")Integer pageSize);
 }
diff --git a/src/main/java/com/zy/asrs/service/DigitalTwinService.java b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
index c8f1f55..c523fe8 100644
--- a/src/main/java/com/zy/asrs/service/DigitalTwinService.java
+++ b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
@@ -51,6 +51,8 @@
      * @param areaId
      * @return
      */
+    List<DtLocDetailVo> warehouseDetail2(String areaId);
+
     R warehouseDetail(String areaId);
 
     /**
@@ -68,4 +70,6 @@
      *
      */
     void locNumCount();
+
+    DtEquipmentVo equipment(String areaId);
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 3354ce9..36d7f91 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -19,7 +19,7 @@
     /**
      * 鎷f枡閫斾腑骞舵澘
      */
-    R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId);
+    R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long userId);
 
     /**
      * 骞舵澘鍏ュ簱
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 8d34c6e..6a94867 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -28,6 +28,13 @@
     void startupFullTakeStore(StockOutParam param, Long userId);
 
     /**
+     * web绔粍鎵�
+     * @param fullStoreParam
+     * @param userId
+     */
+    void webComb(FullStoreParam fullStoreParam, Long userId);
+
+    /**
      * 瀹㈡埛杞崲
      */
     void turnOverOut(EmptyPlateOutParam param, Long userId);
diff --git a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
index 0a14629..48197f3 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.R;
+import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.entity.LocCount;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocMast;
@@ -10,12 +11,16 @@
 import com.zy.asrs.entity.mes.StockDetl;
 import com.zy.asrs.mapper.DigitalTwinMapper;
 import com.zy.asrs.mapper.LocCountMapper;
+import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.DigitalTwinService;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.LocMastService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -63,24 +68,32 @@
      */
     public List<DtOrderVo> order(String startDate, String endDate) {
 
-        String startTime;
-        String endTime;
+        Date startTime = new Date();
+        Date endTime = new Date();
         if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()){
             Date now = new Date();
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(now);
             calendar.add(Calendar.DAY_OF_MONTH, -7);
-            Date start = calendar.getTime();
+            startTime = calendar.getTime();
+            endTime = now;
 
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            endDate = sdf.format(now);
-            startDate = sdf.format(start);
+        } else {
+            SimpleDateFormat sdf =
+                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+            try {
+                startTime  = sdf.parse(startDate);
+                endTime = sdf.parse(endDate);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
         }
-        startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
-        endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
         List<DtOrderVo> dbOrder = digitalTwinMapper.recentOrder(startTime, endTime);
         // 绌烘棩鏈熻ˉ鍏�
-
+        for (DtOrderVo dtOrderVo : dbOrder) {
+            dtOrderVo.setOrderDate(dtOrderVo.getOrderDate());
+        }
 
         return dbOrder;
     }
@@ -95,27 +108,34 @@
      */
     public List<DtInAndOutBoundVo> inAndOutBound(String areaId, String startDate, String endDate) {
 
-        List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>();
-
-        String startTime;
-        String endTime;
+        Date startTime = new Date();
+        Date endTime = new Date();
         if (startDate == null || endDate == null || startDate.isEmpty() || endDate.isEmpty()){
             Date now = new Date();
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(now);
             calendar.add(Calendar.DAY_OF_MONTH, -7);
-            Date start = calendar.getTime();
+            startTime = calendar.getTime();
+            endTime = now;
 
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
-            endDate = sdf.format(now);
-            startDate = sdf.format(start);
+        } else {
+            SimpleDateFormat sdf =
+                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
+            try {
+                startTime  = sdf.parse(startDate);
+                endTime = sdf.parse(endDate);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
         }
-        startTime = startDate.substring(0, 4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8) + "00:00:00";
-        endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00";
+
         List<DtInAndOutBoundVo> dtInBoundVos = digitalTwinMapper.recentInBound(areaId, startTime, endTime);
         List<DtInAndOutBoundVo> dtOutBoundVos = digitalTwinMapper.recentOutBound(areaId, startTime, endTime);
 
         // 鏍煎紡鏁寸悊
+        List<DtInAndOutBoundVo> dtInAndOutBoundVos = new ArrayList<>(dtInBoundVos);
+        dtInAndOutBoundVos.addAll(dtOutBoundVos);
 
         return dtInAndOutBoundVos;
     }
@@ -140,12 +160,10 @@
         calendar.setTime(now);
         calendar.add(Calendar.DAY_OF_MONTH, -overDayNum);
         Date start = calendar.getTime();
-        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String startTime = sdf.format(start);
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//        Date startTime = sdf.parse(start);
 
-        List<DtDetainMatVo> dbDetainMats = digitalTwinMapper.recentDetainMat(areaId, startTime, pageIndex, pageSize);
-
-        return dbDetainMats;
+        return digitalTwinMapper.recentDetainMat(areaId, start, pageIndex, pageSize);
     }
 
     @Resource
@@ -160,36 +178,73 @@
      * @param areaId
      * @return
      */
+    public List<DtLocDetailVo> warehouseDetail2(String areaId) {
+        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<>());
+        return locMastList.stream()
+                .map(loc -> {
+                    DtLocDetailVo vo = new DtLocDetailVo();
+                    BeanUtils.copyProperties(loc, vo);
+                    return vo;
+                })
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 鏌ヨ搴撳瓨鍜屽簱浣嶈缁嗕俊鎭�
+     *
+     * @param areaId
+     * @return
+     */
     public R warehouseDetail(String areaId) {
-        List<LocDetl> locDetls;
-        locDetls = locDetlService.selectList(new EntityWrapper<>());
+        List<DtLocDetailVo> locDetailVos = new ArrayList<>();
 
-        List<String> locNoList = locDetls.stream().map(LocDetl::getLocNo).distinct().collect(Collectors.toList());
-        List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
-        for (String locNo: locNoList) {
-
-            LocMast locMast = locMastService.selectById(locNo);
+        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","F"));
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<>());
+        for (LocMast locMast : locMasts) {
             DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
-            dtLocDetailVo.setLocNo(locNo);
+            dtLocDetailVo.setLocMast(locMast);
+            dtLocDetailVo.setLocNo(locMast.getLocNo());
             dtLocDetailVo.setLocSts(locMast.getLocSts());
             dtLocDetailVo.setRow1(locMast.getRow1());
             dtLocDetailVo.setBay1(locMast.getBay1());
             dtLocDetailVo.setLev1(locMast.getLev1());
-
-            List<LocDetl> locDetlList2 = locDetls.parallelStream().filter(o-> o.getLocNo().equals(locNo)).collect(Collectors.toList());
-            List<StockDetl> stockDetls = new ArrayList<>();
-            for(LocDetl locDetl:locDetlList2) {
-                StockDetl stockDetl = new StockDetl();
-                stockDetl.setMatnr(locDetl.getMatnr());
-                stockDetl.setMaktx(locDetl.getMaktx());
-                stockDetl.setAnfme(locDetl.getAnfme());
-                stockDetls.add(stockDetl);
+            for (LocDetl locDetl : locDetls) {
+                List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+                if (locDetl1.size() == 1) {
+                    dtLocDetailVo.setLocDetl(locDetl1.get(0));
+//                    dtLocDetailVo.setAreaId(locDetl.getAreaId());
+//                    dtLocDetailVo.setAreaName(locDetl.getAreaName());
+                }
             }
-            dtLocDetailVo.setLocDetl(stockDetls);
-            dtLocDetailVoList.add(dtLocDetailVo);
+            locDetailVos.add(dtLocDetailVo);
         }
 
-        return R.ok(dtLocDetailVoList);
+        return R.ok(locDetailVos);
+//        List<DtLocDetailVo> locDetailVos = new ArrayList<>();
+//
+//        List<LocMast> locMasts = new ArrayList<>();
+//        List<LocDetl> locDetls = new ArrayList<>();
+//
+//        for (LocMast locMast : locMasts) {
+//            DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
+//            dtLocDetailVo.setLocMast(locMast);
+//            dtLocDetailVo.setLocNo(locMast.getLocNo());
+//            dtLocDetailVo.setLocSts(locMast.getLocSts());
+//            dtLocDetailVo.setRow1(locMast.getRow1());
+//            dtLocDetailVo.setBay1(locMast.getBay1());
+//            dtLocDetailVo.setLev1(locMast.getLev1());
+//            for (LocDetl locDetl : locDetls) {
+//                List<LocDetl> locDetl1 = locDetls.parallelStream().filter(a -> a.getLocNo().equals(locDetl.getLocNo())).collect(Collectors.toList());
+//                if (locDetl1 != null && locDetl1.size() == 1) {
+//                    dtLocDetailVo.setLocDetl(locDetl1.get(0));
+//                    dtLocDetailVo.setAreaId(locDetl.getAreaId());
+//                    dtLocDetailVo.setAreaName(locDetl.getAreaName());
+//                }
+//            }
+//            locDetailVos.add(dtLocDetailVo);
+//        }
+//
+//        return locDetailVos;
     }
 
     /**
@@ -217,11 +272,11 @@
         }
 
         List<LocCount> locCounts;
-        if(areaId.isEmpty()){
+//        if(areaId.isEmpty()){
             locCounts = locCountMapper.getByDate(Integer.parseInt(startDate), Integer.parseInt(endDate));
-        } else {
-            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
-        }
+//        } else {
+//            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
+//        }
 
         for (LocCount locCount : locCounts) {
             String date = locCount.getDate().toString();
@@ -240,30 +295,34 @@
      * 瀹氭湡缁熻鍓╀綑搴撳瓨
      *
      */
+    @Transactional
     public void locNumCount() {
 
-        List<LocCount> result = new ArrayList<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
         String date = sdf.format(new Date());
 
         List<LocCount> totalLoc = locCountMapper.totalLoc();
         List<LocCount> useLoc = locCountMapper.useLoc();
-        for (LocCount locCount : totalLoc) {
-            LocCount locCount1 = new LocCount();
-            locCount1.setDate(Integer.valueOf(date));
-            locCount1.setAreaId(locCount.getAreaId());
-            locCount1.setLocNum(locCount1.getLocNum());
-            for (LocCount locCount2 : useLoc) {
-                if(locCount1.getAreaId().equals(locCount2.getAreaId())){
-                    locCount1.setRemainNum(locCount1.getLocNum() - locCount2.getLocNum());
-                }
-            }
-            result.add(locCount1);
-        }
 
-        for (LocCount locCount  : result) {
-            locCountMapper.insertOrUpdate(locCount);
-        }
+        LocCount locCount1 = new LocCount();
+        locCount1.setDate(Integer.valueOf(date));
+        locCount1.setLocNum(totalLoc.get(0).getLocNum());
+        locCount1.setRemainNum(locCount1.getLocNum() - useLoc.get(0).getLocNum());
+
+        locCountMapper.insertOrUpdate(locCount1);
+    }
+
+    @Resource
+    private BasCrnpService basCrnpService;
+
+    @Override
+    public DtEquipmentVo equipment(String areaId) {
+        return new DtEquipmentVo();
+//        BasCrnp crnp = basCrnpService.selectOne(new EntityWrapper<>());
+//        return DtEquipmentVo.builder()
+//                .equipmentId("1").equipmentName("鍫嗗灈鏈�1").equipmentType(1)
+//                .belongAreaId("A").belongAreaName("鍔犲伐搴�").verticalSpeed(Integer.valueOf(crnp.getCtlHp()))
+//                .horizontalSpeed(Integer.valueOf(crnp.getCtlRest())).voltage(220).status(crnp.getCrnErr() == 0 ? 1 : 3).operateMethod(crnp.getCrnSts() == 3 ? 1 : 3).build();
     }
 
 
diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index 97ce139..b2fa41e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -714,9 +714,9 @@
         // 涓嬪彂缁橰CS
         RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
         // 妯℃澘鍚�
-        if(transTask.getCurStationId().startsWith("LL") || transTask.getCurStationId().startsWith("LG")) { // 璧风偣浜х嚎
+        if(transTask.getCurStationId().startsWith("LL") || transTask.getCurStationId().startsWith("LJ")|| transTask.getCurStationId().startsWith("LG") || transTask.getCurStationId().startsWith("LT")) { // 璧风偣浜х嚎
             rcsTaskSubmit.setTaskType("DJ1");
-        } else if(transTask.getNextStationId().startsWith("LL") || transTask.getNextStationId().startsWith("LG")) { // 缁堢偣浜х嚎
+        } else if(transTask.getNextStationId().startsWith("LL") || transTask.getNextStationId().startsWith("LJ")|| transTask.getNextStationId().startsWith("LG") || transTask.getNextStationId().startsWith("LT")) { // 缁堢偣浜х嚎
             rcsTaskSubmit.setTaskType("DJ2");
         }
         rcsTaskSubmit.setRobotTaskCode(transTask.getTaskno());
@@ -850,7 +850,7 @@
      */
     public int applyInStation(TransParent apply) {
 
-        String url = MES_URL + (apply.getProductLineId().equals("LL") ? "AGVTransportPalletNotice" : "Aprs/AGVTransportPalletNotice");
+        String url = MES_URL + (apply.getProductLineId().equals("LL") || apply.getProductLineId().equals("LJ") ? "AGVTransportPalletNotice" : "Aprs/AGVTransportPalletNotice");
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
         if (!StringUtils.isEmpty(response) && response.contains("Success")){
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
@@ -962,7 +962,7 @@
      */
     public int outStation(TransParent apply) {
 
-        String url = MES_URL + (apply.getProductLineId().equals("LL") ? "AGVDepartureCompleted" : "Aprs/AGVDepartureCompleted");
+        String url = MES_URL + (apply.getProductLineId().equals("LL") || apply.getProductLineId().equals("LJ") ? "AGVDepartureCompleted" : "Aprs/AGVDepartureCompleted");
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
         if (!StringUtils.isEmpty(response) && response.contains("Success")){
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
@@ -1010,7 +1010,7 @@
                 stockDetl.setAnfme(locDetl.getAnfme());
                 stockDetls.add(stockDetl);
             }
-            dtLocDetailVo.setLocDetl(stockDetls);
+            dtLocDetailVo.setLocDetls(stockDetls);
             dtLocDetailVoList.add(dtLocDetailVo);
         }
 
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 a008dca..32ba6a8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -300,9 +300,15 @@
 
     @Override
     @Transactional
-    public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) {
+    public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long userId) {
+        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+        if(wrkMast1 == null) {
+            return R.parse("璇ユ潯鐮佷笉瀛樺湪浠诲姟锛�" + param.getBarcode());
+        } else if(wrkMast1.getIoType() != 103) {
+            return R.parse("璇ヤ换鍔″嚭搴撶被鍨嬩笉涓烘嫞鏂欏嚭搴擄細" + wrkMast1.getIoType());
+        }
         //鍒ゆ柇搴撲綅鐘舵��
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo()));
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast1.getSourceLocNo()));
         if (Cools.isEmpty(locMast)) {
             return R.error("璇ュ簱浣嶄笉瀛樺湪");
         }
@@ -319,9 +325,9 @@
         wrkMast.setIoType(8); // 鍏ュ嚭搴撶姸鎬侊細8.鎷f枡閫斾腑骞舵澘
         wrkMast.setIoPri(13D); // 浼樺厛绾�
         wrkMast.setCrnNo(1);
-        wrkMast.setSourceStaNo(1 + "");
-        wrkMast.setStaNo(1 + "");
-        wrkMast.setLocNo(param.getLocNo());
+        wrkMast.setSourceStaNo(104 + "");
+        wrkMast.setStaNo(106 + "");
+        wrkMast.setLocNo(locMast.getLocNo());
         wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -761,7 +767,8 @@
         }
 
         int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
-        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
+//        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
+        int countWrk = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()).ne("wrk_sts",15));
         int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
         if (countLoc > 0 || countWrk > 0 || countwait > 0) {
             throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index f3dd197..02bf153 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -487,13 +487,13 @@
                             mesService.outStation(apply);
                             // agv缁х画鎵ц
                             // 婧愮珯鐐规槸浜х嚎锛岀绔欏畬鎴愬悗缁檙cs鍙嶉缁х画鎵ц
-                            if(task.getSourceStaNo().contains("TOOL")) {
-                                TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
-                                inOutStationAllow.setTaskno(robotTaskCode);
-                                inOutStationAllow.setStatus("Y");
-                                inOutStationAllow.setAgvCode(singleRobotCode);
-                                mesService.allowOutStation(inOutStationAllow);
-                            }
+//                            if(task.getSourceStaNo().contains("TOOL")) {
+//                                TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+//                                inOutStationAllow.setTaskno(robotTaskCode);
+//                                inOutStationAllow.setStatus("Y");
+//                                inOutStationAllow.setAgvCode(singleRobotCode);
+//                                mesService.allowOutStation(inOutStationAllow);
+//                            }
                         }
                     } break;
                     case ARRIVE_ON_STATION: {
@@ -527,6 +527,9 @@
                         if(transType.equals("01") && arrivalStation.getStationID().contains("XL") || arrivalStation.getStationID().contains("TOOL")) {
                             path = "ToolArrivalNotice";
                         }
+                        if (arrivalStation.getStationID().startsWith("LG") || arrivalStation.getStationID().startsWith("LT")) {
+                            path = "Aprs/" + path;
+                        }
                         mesService.arriveOnStation(arrivalStation,path);
                     } break;
                     default: {} break;
diff --git a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
index 6e602da..1b0199b 100644
--- a/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/TaskServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.TaskMapper;
@@ -14,6 +15,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -35,6 +37,9 @@
     @Autowired
     private TaskDetlLogService taskDetlLogService;
 
+    @Resource
+    private BasStationService basStationService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void completeWrkMast(String workNo, Long userId) {
@@ -42,13 +47,37 @@
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getWrkSts() == 304) {
-            throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+        Date now = new Date();
+        // 缁堢偣鏄帴椹充綅 鍙兘瀹屾垚305
+        if (wrkMast.getStaNo().startsWith("A")) {
+            if(wrkMast.getWrkSts() == 305) {
+                throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+            }
+            wrkMast.setWrkSts(305L);
+            // 缁戝畾绔欑偣
+            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
+            if (basStation.getBarcode().equals(wrkMast.getBarcode())) {
+                basStation.setLocSts("F");
+                basStation.setModiTime(now);
+                basStation.setModiUser(userId);
+                basStationService.updateById(basStation);
+            }
+        } else {
+            // 璧风偣鏄帴椹充綅 鍙兘瀹屾垚304
+            if (wrkMast.getWrkSts() == 304) {
+                throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+            }
+            wrkMast.setWrkSts(304L);
+            // 瑙g粦绔欑偣
+            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
+            if (basStation.getBarcode().equals(wrkMast.getBarcode())) {
+                basStation.setLocSts("O");
+                basStation.setModiTime(now);
+                basStation.setModiUser(userId);
+                basStationService.updateById(basStation);
+            }
         }
 
-        wrkMast.setWrkSts(304L);
-
-        Date now = new Date();
         wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
         wrkMast.setCrnEndTime(now);
         wrkMast.setModiTime(now);
@@ -60,61 +89,68 @@
         }
     }
 
+    @Resource
+    private MobileService mobileService;
+
     @Override
     @Transactional
     public void pickWrkMast(String workNo, Long userId) {
-        Task wrkMast = this.selectById(workNo);
+        Task wrkMast = this.selectOne(new EntityWrapper<Task>().eq("wrk_no", workNo));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
-        // 鍏ュ嚭搴撶被鍨嬪垽鏂�
-        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
-            throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
+        R r = mobileService.djReturn(wrkMast.getBarcode());
+        if(!r.get("code").equals(200)) {
+            throw new CoolException(""+r.get("msg"));
         }
-        // 宸ヤ綔鐘舵�佸垽鏂�
-        if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
-            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
-        }
-        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-//        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
-//            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+//        // 鍏ュ嚭搴撶被鍨嬪垽鏂�
+//        if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
+//            throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�");
 //        }
-        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-        if (!taskLogService.save(wrkMast.getWrkNo())) {
-            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("鍏ュ簱璺緞涓嶅瓨鍦�");
+//        // 宸ヤ綔鐘舵�佸垽鏂�
+//        if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) {
+//            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�");
 //        }
-        Date now = new Date();
-        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-//        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.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
-        wrkMast.setModiTime(now);
-        wrkMast.setModiUser(userId);
-        if (!this.updateById(wrkMast)) {
-            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-        }
-        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-        LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
-        locMast.setLocSts("Q");
-        locMast.setModiTime(now);
-        locMast.setModiUser(userId);
-        if (!locCacheService.updateById(locMast)) {
-            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
-        }
+//        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+////        if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
+////            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+////        }
+//        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+//        if (!taskLogService.save(wrkMast.getWrkNo())) {
+//            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("鍏ュ簱璺緞涓嶅瓨鍦�");
+////        }
+//        Date now = new Date();
+//        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+////        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.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+//        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+//        wrkMast.setModiTime(now);
+//        wrkMast.setModiUser(userId);
+//        if (!this.updateById(wrkMast)) {
+//            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+//        }
+//        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+//        LocCache locMast = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
+//        locMast.setLocSts("Q");
+//        locMast.setModiTime(now);
+//        locMast.setModiUser(userId);
+//        if (!locCacheService.updateById(locMast)) {
+//            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
+//        }
     }
 
     @Override
@@ -131,8 +167,35 @@
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
-        if(wrkMast.getWrkSts() >= 304) {
-            throw new CoolException("宸ヤ綔鐘舵�佸凡缁忓畬鎴愶細" + wrkMast.getWrkSts());
+        // 缁堢偣鏄帴椹充綅
+        if (wrkMast.getStaNo().startsWith("A")) {
+//            if(wrkMast.getWrkSts() == 305) {
+//                throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+//            }
+            // 瑙g粦绔欑偣
+            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getStaNo()));
+            if (basStation.getBarcode().equals(wrkMast.getBarcode())) {
+                basStation.setLocSts("O");
+                basStation.setBarcode("");
+                basStation.setModiTime(now);
+                basStation.setModiUser(userId);
+                basStationService.updateById(basStation);
+            }
+
+        } else {
+            // 璧风偣鏄帴椹充綅 鍙兘瀹屾垚304
+            if (wrkMast.getWrkSts() == 304) {
+                throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+            }
+            // 瑙g粦绔欑偣
+            BasStation basStation = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", wrkMast.getSourceStaNo()));
+            if (basStation.getBarcode().equals(wrkMast.getBarcode())) {
+                basStation.setLocSts("O");
+                basStation.setBarcode("");
+                basStation.setModiTime(now);
+                basStation.setModiUser(userId);
+                basStationService.updateById(basStation);
+            }
         }
 
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
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 494de65..e3c903e 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -24,6 +24,7 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -209,6 +210,70 @@
     }
 
     @Override
+    public void webComb(FullStoreParam param, Long userId) {
+        if (Cools.isEmpty(param.getBarcode(), param.getList())) {
+            throw new CoolException(BaseRes.PARAM);
+        }
+        if (param.getList().size() < 1) {
+            throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
+        }
+        // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
+                eq("zpallet", param.getBarcode())
+                .eq("io_status", "N")) > 0) {
+            throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+        }
+
+        if (param.getBarcode().length() != 8) {
+            throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
+        }
+
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+        int countWrk = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode",param.getBarcode()).ne("wrk_sts",15));
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
+        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+            throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
+        }
+
+        Date now = new Date();
+
+        List<DetlDto> detlDtos = new ArrayList<>();
+        param.getList().forEach(elem -> {
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getBrand(), elem.getStandby1(), elem.getStandby2(), elem.getStandby3(),
+                    elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
+            if (DetlDto.has(detlDtos, detlDto)) {
+                DetlDto one = DetlDto.findDto(detlDtos, detlDto);
+                assert one != null;
+                one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+            } else {
+                detlDtos.add(detlDto);
+            }
+        });
+
+        for (DetlDto detlDto : detlDtos) {
+            Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+            }
+            WaitPakin waitPakin = new WaitPakin();
+            BeanUtils.copyProperties(mat, waitPakin);
+            waitPakin.setMemo("");
+            waitPakin.setBatch(detlDto.getBatch());
+            waitPakin.setZpallet(param.getBarcode());
+            waitPakin.setIoStatus("N");
+            waitPakin.setAnfme(detlDto.getAnfme());
+            waitPakin.setStatus("Y");
+            waitPakin.setAppeUser(userId);
+            waitPakin.setAppeTime(now);
+            waitPakin.setModiUser(userId);
+            waitPakin.setModiTime(now);
+            if (!waitPakinService.insert(waitPakin)) {
+                throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+            }
+        }
+    }
+
+    @Override
     @Transactional
     public void turnOverOut(EmptyPlateOutParam param, Long userId) {
         try {
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
index 1951327..bea3d86 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
@@ -37,7 +37,9 @@
         WrkMastLog mastLog = new WrkMastLog();
         BeanUtils.copyProperties(mast, mastLog);
 //        mastLog.setLogId(mast.getId());
-
+        mastLog.setWrkSts(mast.getWrkSts().intValue());
+        mastLog.setSourceStaNo(Integer.valueOf(mast.getSourceStaNo()));
+        mastLog.setStaNo(Integer.valueOf(mast.getStaNo()));
         if (!wrkMastLogService.insert(mastLog)) {
             throw new CoolException("浠诲姟鏃ュ織淇濆瓨澶辫触锛侊紒");
         }
diff --git a/src/main/java/com/zy/asrs/task/JlerScheduler.java b/src/main/java/com/zy/asrs/task/JlerScheduler.java
index 1989eca..b6c640d 100644
--- a/src/main/java/com/zy/asrs/task/JlerScheduler.java
+++ b/src/main/java/com/zy/asrs/task/JlerScheduler.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.OrderPakout;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.DigitalTwinService;
 import com.zy.asrs.service.OrderPakoutService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.task.handler.JlerHandler;
@@ -67,5 +68,16 @@
         }
     }
 
+    @Resource
+    private DigitalTwinService digitalTwinService;
+
+    /**
+     * 瀹氭椂缁熻姣忓ぉ鍓╀綑搴撳瓨
+     */
+    @Scheduled(cron = "0 50 23 * * ?")
+    private void locNumCount() {
+        digitalTwinService.locNumCount();
+    }
+
 }
 
diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 795e7a1..7ede2ec 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -122,8 +122,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){
+            // 45鍒嗛挓鍚庤繃鏈�
+            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 2700000){
                 Http.response(response, BaseRes.DENIED);
                 return false;
             }
diff --git a/src/main/java/com/zy/common/config/ControllerResAdvice.java b/src/main/java/com/zy/common/config/ControllerResAdvice.java
index d48b27f..b30f16a 100644
--- a/src/main/java/com/zy/common/config/ControllerResAdvice.java
+++ b/src/main/java/com/zy/common/config/ControllerResAdvice.java
@@ -1,6 +1,7 @@
 package com.zy.common.config;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.entity.mes.MesReturn;
@@ -75,6 +76,20 @@
                             String.valueOf(mesReturn.getSuccess()).equalsIgnoreCase("1")
                     );
                 }
+                if (o instanceof JSONObject) {
+                    String appkey = request.getHeader("appkey");
+                    Object reqCache = request.getAttribute("cache");
+                        // 淇濆瓨鎺ュ彛鏃ュ織
+                        apiLogService.save(
+                                String.valueOf(appAuth),
+                                request.getRequestURI(),
+                                appkey,
+                                IpTools.gainRealIp(request),
+                                reqCache==null?"": JSON.toJSONString(reqCache),
+                                JSON.toJSONString(o),
+                                String.valueOf(((JSONObject) o).get("Success")).equalsIgnoreCase("1")
+                        );
+                }
             }
         }
         return o;
diff --git a/src/main/java/com/zy/system/controller/UserController.java b/src/main/java/com/zy/system/controller/UserController.java
index a823f5a..98825f2 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/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 27054ef..35bedfd 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -126,7 +126,8 @@
 
 #mes瀵规帴
 mes:
-  url: http://172.26.11.250/dev-api/basicmodel/Api/WMS/
+  url: http://192.9.100.173:8088/prod-api/basicmodel/Api/WMS/
+  #  url: http://172.26.11.250/dev-api/basicmodel/Api/WMS/
   #榛樿鎺ュ彛鎿嶄綔浜哄憳id
   defaultUserId: 30
 
@@ -140,5 +141,5 @@
 
 #鍒�鍏风鐞嗙郴缁熷鎺�
 dj:
-  url: http://172.26.11.2/
+  url: http://172.26.11.2:8080/
 
diff --git a/src/main/resources/mapper/LocCountMapper.xml b/src/main/resources/mapper/LocCountMapper.xml
index 60bc842..ab431a3 100644
--- a/src/main/resources/mapper/LocCountMapper.xml
+++ b/src/main/resources/mapper/LocCountMapper.xml
@@ -22,11 +22,18 @@
     </select>
 
     <insert id="insertOrUpdate" parameterType="com.zy.asrs.entity.LocCount">
-        IF EXISTS (SELECT date FROM asr_loc_count WHERE date = #{model.date} AND area_id = #{model.areaId})
-            INSERT INTO asr_loc_count(date, area_id, loc_num, remain_num)
-            VALUES (#{model.date}, #{model.areaId}, #{model.locNum}, #{model.remainNum})
+        IF EXISTS (SELECT 1 FROM asr_loc_count WHERE date = #{model.date})
+        BEGIN
+        UPDATE asr_loc_count
+        SET loc_num = #{model.locNum},
+        remain_num = #{model.remainNum}
+        WHERE date = #{model.date}
+        END
         ELSE
-            UPDATE asr_loc_count SET loc_num = #{model.locNum}, remain_num = #{model.remainNum}
+        BEGIN
+        INSERT INTO asr_loc_count(date, area_id, loc_num, remain_num)
+        VALUES (#{model.date}, #{model.areaId}, #{model.locNum}, #{model.remainNum})
+        END
     </insert>
 
     <select id="totalLoc" resultType="com.zy.asrs.entity.LocCount">
diff --git a/src/main/resources/mapper/ViewDigitalTwinMapper.xml b/src/main/resources/mapper/ViewDigitalTwinMapper.xml
index 4f909df..3fa11af 100644
--- a/src/main/resources/mapper/ViewDigitalTwinMapper.xml
+++ b/src/main/resources/mapper/ViewDigitalTwinMapper.xml
@@ -6,45 +6,61 @@
     <!--鎬昏锛氭�诲簱浣嶃�佸凡鐢ㄥ簱浣嶃�佷粖鏃ュ簱瀛樸�佷粖鏃ュ嚭搴撱�佷粖鏃ュ叆搴�-->
     <select id="overview" resultType="Double">
         SELECT COUNT(*) FROM asr_loc_mast WHERE loc_sts != 'Z'
-            <if test="areaId != null">
-                and area_id = #{areaId}
-            </if>
+        <!--            <if test="areaId != null">-->
+        <!--                and area_id = #{areaId}-->
+        <!--            </if>-->
         UNION ALL
         SELECT COUNT(*) FROM asr_loc_mast WHERE loc_sts = 'F' or loc_sts = 'P' or loc_sts = 'Q' or loc_sts = 'R' or loc_sts = 'S' or loc_sts = 'X'
-        <if test="areaId != null">
-            and area_id = #{areaId}
-        </if>
+        <!--        <if test="areaId != null">-->
+        <!--            and area_id = #{areaId}-->
+        <!--        </if>-->
         UNION ALL
         SELECT ISNULL(SUM(anfme), 0) FROM asr_loc_detl
-        <if test="areaId != null">
-            WHERE area_id = #{areaId}
-        </if>
+        <!--        <if test="areaId != null">-->
+        <!--            WHERE area_id = #{areaId}-->
+        <!--        </if>-->
         UNION ALL
         SELECT ISNULL(SUM(anfme), 0) FROM asr_wrkin_view WHERE CONVERT(VARCHAR, io_time, 23) = CONVERT(VARCHAR, GETDATE(), 23)
-        <if test="areaId != null">
-            and area_id = #{areaId}
-        </if>
+        <!--        <if test="areaId != null">-->
+        <!--            and area_id = #{areaId}-->
+        <!--        </if>-->
         UNION ALL
         SELECT ISNULL(SUM(anfme), 0) FROM asr_wrkout_view WHERE CONVERT(VARCHAR, io_time, 23) = CONVERT(VARCHAR, GETDATE(), 23)
-        <if test="areaId != null">
-            and area_id = #{areaId}
-        </if>
+        <!--        <if test="areaId != null">-->
+        <!--            and area_id = #{areaId}-->
+        <!--        </if>-->
     </select>
 
     <select id="recentOrder" resultType="com.zy.asrs.entity.digitaltwin.DtOrderVo">
-        SELECT CONVERT(VARCHAR, order_time, 23) as orderDate, COUNT(*) AS orderNum
-        FROM man_order
+
+        SELECT
+        FORMAT(orderDate, 'yyyyMMdd') as orderDate,
+        COUNT(*) as orderNum
+        FROM (
+        SELECT
+        CAST(order_time AS DATE) as orderDate
+        FROM man_order_pakin
         WHERE order_time BETWEEN #{startTime} AND #{endTime}
-        GROUP BY CONVERT(VARCHAR, order_time, 23)
+
+        UNION ALL
+
+        SELECT
+        CAST(order_time AS DATE) as orderDate
+        FROM man_order_pakout
+        WHERE order_time BETWEEN #{startTime} AND #{endTime}
+        ) combined
+        GROUP BY orderDate
+        ORDER BY orderDate
+
     </select>
 
     <select id="recentInBound" resultType="com.zy.asrs.entity.digitaltwin.DtInAndOutBoundVo">
         SELECT CONVERT(VARCHAR, io_time, 23) AS boundDate, SUM(anfme) AS inBoundNum
         FROM asr_wrkin_view
         WHERE io_time BETWEEN #{startTime} AND #{endTime}
-        <if test="areaId != null">
-            and area_id = #{areaId}
-        </if>
+<!--        <if test="areaId != null">-->
+<!--            and area_id = #{areaId}-->
+<!--        </if>-->
         GROUP BY CONVERT(VARCHAR, io_time, 23)
     </select>
 
@@ -52,28 +68,31 @@
         SELECT CONVERT(VARCHAR, io_time, 23) AS boundDate, SUM(anfme) AS outBoundNum
         FROM asr_wrkout_view
         WHERE io_time BETWEEN #{startTime} AND #{endTime}
-        <if test="areaId != null">
-            and area_id = #{areaId}
-        </if>
+<!--        <if test="areaId != null">-->
+<!--            and area_id = #{areaId}-->
+<!--        </if>-->
         GROUP BY CONVERT(VARCHAR, io_time, 23)
     </select>
 
     <select id="recentDetainMat" resultType="com.zy.asrs.entity.digitaltwin.DtDetainMatVo">
-        select
-        *
-        from (
-            select
-                ROW_NUMBER() OVER(Order by t.io_time desc) as row , *
-            from (
-                SELECT area_id AS belongAreaId, area_name AS belongAreaName, matnr AS matId, maktx AS matName,
-                       loc_no AS lokId, '' AS lokName,
-                       DATEDIFF(MINUTE, appe_time, GETDATE()) AS detainTime, appe_time AS inBoundTime
-                    FROM asr_loc_detl WHERE appe_time &lt; #{startTime}
-                <if test="areaId != null">
-                    and area_id = #{areaId}
-                </if>
-                ) t
-        ) a where 1=1 and a.row between ((#{pageIndex}-1)*#{pageSize}+1) and (#{pageIndex}*#{pageSize})
+        SELECT *
+        FROM (
+        SELECT
+        ROW_NUMBER() OVER(ORDER BY t.inBoundTime DESC) AS rownum,
+        t.*
+        FROM (
+        SELECT
+        matnr AS matId,
+        maktx AS matName,
+        loc_no AS lokId,
+        '' AS lokName,
+        DATEDIFF(MINUTE, appe_time, GETDATE()) AS detainTime,
+        appe_time AS inBoundTime
+        FROM asr_loc_detl
+        WHERE appe_time &lt;= #{startTime}
+        ) t
+        ) a
+        WHERE a.rownum BETWEEN ((#{pageIndex}-1)*#{pageSize}+1) AND (#{pageIndex}*#{pageSize})
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ViewInOutMapper.xml b/src/main/resources/mapper/ViewInOutMapper.xml
index 8152776..64694b1 100644
--- a/src/main/resources/mapper/ViewInOutMapper.xml
+++ b/src/main/resources/mapper/ViewInOutMapper.xml
@@ -19,9 +19,22 @@
 			]]>			
 		</if>
 </sql>
+	<resultMap id="ViewInOutMap" type="com.zy.asrs.entity.ViewInOutBean">
 
+		<result column="ymd" property="ymd"/>
+		<result column="source_sta_no" property="source_sta_no"/>
+
+		<result column="sto_qty" property="sto_qty"/>
+		<result column="ret_qty" property="ret_qty"/>
+		<result column="total_qty" property="total_qty"/>
+
+		<!-- 鏌ヨ鏉′欢瀛楁锛堜竴鑸笉浠� SQL 杩斿洖锛屼篃鍐欎笂涓嶅奖鍝嶏級 -->
+		<result column="begin_date" property="begin_date"/>
+		<result column="end_date" property="end_date"/>
+
+	</resultMap>
 <!-- 鍒嗛〉鏌ヨ鎵�鏈変俊鎭� -->
-<select id="queryViewInOutList" parameterType="com.zy.asrs.entity.ViewInOutBean" resultType="com.zy.asrs.entity.ViewInOutBean">
+<select id="queryViewInOutList" parameterType="com.zy.asrs.entity.ViewInOutBean" resultMap="ViewInOutMap">
 select * from ( 
 select *,ROW_NUMBER() OVER(Order by ymd desc) as rowid
  from asr_sta_inout_view
diff --git a/src/main/resources/mapper/ViewStayTimeMapper.xml b/src/main/resources/mapper/ViewStayTimeMapper.xml
index 2b01a4f..2793723 100644
--- a/src/main/resources/mapper/ViewStayTimeMapper.xml
+++ b/src/main/resources/mapper/ViewStayTimeMapper.xml
@@ -38,9 +38,66 @@
 			]]>
 		</if>
 </sql>
+	<resultMap id="ViewStayTimeMap" type="com.zy.asrs.entity.ViewStayTimeBean">
 
+		<!-- 鍒嗛〉 / 琛屽彿 -->
+		<result column="row" property="row"/>
+		<result column="stay_time" property="stay_time"/>
+
+		<!-- 鏃堕棿鏉′欢 -->
+		<result column="begin_date" property="begin_date"/>
+		<result column="end_date" property="end_date"/>
+
+		<!-- 鍩虹淇℃伅 -->
+		<result column="loc_no" property="loc_no"/>
+		<result column="zpallet" property="zpallet"/>
+		<result column="anfme" property="anfme"/>
+		<result column="matnr" property="matnr"/>
+		<result column="maktx" property="maktx"/>
+		<result column="batch" property="batch"/>
+
+		<!-- 鈿狅笍 鐗瑰埆娉ㄦ剰杩欎釜 -->
+		<result column="order_no" property="orderNo"/>
+
+		<result column="specs" property="specs"/>
+		<result column="model" property="model"/>
+		<result column="color" property="color"/>
+		<result column="brand" property="brand"/>
+		<result column="unit" property="unit"/>
+		<result column="price" property="price"/>
+		<result column="sku" property="sku"/>
+		<result column="units" property="units"/>
+		<result column="barcode" property="barcode"/>
+		<result column="origin" property="origin"/>
+		<result column="manu" property="manu"/>
+		<result column="manu_date" property="manu_date"/>
+		<result column="item_num" property="item_num"/>
+		<result column="safe_qty" property="safe_qty"/>
+		<result column="weight" property="weight"/>
+		<result column="man_length" property="man_length"/>
+		<result column="volume" property="volume"/>
+		<result column="three_code" property="three_code"/>
+		<result column="supp" property="supp"/>
+		<result column="supp_code" property="supp_code"/>
+
+		<!-- 鏍囧織浣� -->
+		<result column="be_batch" property="be_batch"/>
+		<result column="dead_time" property="dead_time"/>
+		<result column="dead_warn" property="dead_warn"/>
+		<result column="source" property="source"/>
+		<result column="inspect" property="inspect"/>
+		<result column="danger" property="danger"/>
+
+		<!-- 瀹¤瀛楁 -->
+		<result column="modi_user" property="modi_user"/>
+		<result column="modi_time" property="modi_time"/>
+		<result column="appe_user" property="appe_user"/>
+		<result column="appe_time" property="appe_time"/>
+		<result column="memo" property="memo"/>
+
+	</resultMap>
 <!-- 鍒嗛〉鏌ヨ鎵�鏈変俊鎭� -->
-<select id="queryViewStayTimeList" parameterType="com.zy.asrs.entity.ViewStayTimeBean" resultType="com.zy.asrs.entity.ViewStayTimeBean">
+<select id="queryViewStayTimeList" parameterType="com.zy.asrs.entity.ViewStayTimeBean" resultMap="ViewStayTimeMap">
 	select
 	*
 	from (
diff --git a/src/main/resources/mapper/ViewStockUseMapper.xml b/src/main/resources/mapper/ViewStockUseMapper.xml
index cb6440b..cf1c9e0 100644
--- a/src/main/resources/mapper/ViewStockUseMapper.xml
+++ b/src/main/resources/mapper/ViewStockUseMapper.xml
@@ -9,9 +9,20 @@
 			and row1 like '%' + #{row1} + '%'
 		</if>
 </sql>
+	<resultMap id="ViewStockUseMap" type="com.zy.asrs.entity.ViewStockUseBean">
+		<id column="row1" property="row1"/>
 
+		<result column="total_qty"  property="total_qty"/>
+		<result column="full_qty"   property="full_qty"/>
+		<result column="null_qty"   property="null_qty"/>
+		<result column="forbid_qty" property="forbid_qty"/>
+		<result column="empty_qty"  property="empty_qty"/>
+		<!--		<result column="use_qty"    property="use_qty"/>-->
+		<result column="full_rate"  property="full_rate"/>
+		<result column="occ_rate"   property="occ_rate"/>
+	</resultMap>
 <!-- 鍒嗛〉鏌ヨ鎵�鏈変俊鎭� -->
-<select id="queryViewStockUseList" parameterType="com.zy.asrs.entity.ViewStockUseBean" resultType="com.zy.asrs.entity.ViewStockUseBean">
+<select id="queryViewStockUseList" parameterType="com.zy.asrs.entity.ViewStockUseBean" resultMap="ViewStockUseMap">
 select top (#{pageSize}) * from asr_stk_use_view 
 <where>
 	row1 not in (select top ((#{pageNumber}-1)*#{pageSize}) row1 from asr_stk_use_view 
diff --git a/src/main/resources/mapper/ViewWorkInMapper.xml b/src/main/resources/mapper/ViewWorkInMapper.xml
index 0f5d0cd..b928e19 100644
--- a/src/main/resources/mapper/ViewWorkInMapper.xml
+++ b/src/main/resources/mapper/ViewWorkInMapper.xml
@@ -83,10 +83,76 @@
 			]]>
 		</if>
 </sql>
+	<resultMap id="ViewWorkInMap" type="com.zy.asrs.entity.ViewWorkInBean">
 
+		<!-- 鍒嗛〉 / 琛屽彿 / 鍋滅暀鏃堕暱 -->
+		<result column="row" property="row"/>
+		<result column="stay_time" property="stay_time"/>
+
+		<!-- 鏌ヨ鏉′欢 -->
+		<result column="begin_date" property="begin_date"/>
+		<result column="end_date" property="end_date"/>
+		<result column="query_date" property="query_date"/>
+
+		<!-- 鍫嗗灈鏈� / 鏃堕棿 -->
+		<result column="crn_str_time" property="crn_str_time"/>
+		<result column="crn_end_time" property="crn_end_time"/>
+
+		<!-- 浣滀笟淇℃伅 -->
+		<result column="wrk_no" property="wrk_no"/>
+		<result column="io_time" property="io_time"/>
+
+		<!-- 搴撳瓨淇℃伅 -->
+		<result column="loc_no" property="loc_no"/>
+		<result column="zpallet" property="zpallet"/>
+		<result column="anfme" property="anfme"/>
+		<result column="matnr" property="matnr"/>
+		<result column="maktx" property="maktx"/>
+		<result column="batch" property="batch"/>
+
+		<!-- 鈿狅笍 娉ㄨВ鍦� XML 涓棤鏁堬紝蹇呴』鎵嬪姩 -->
+		<result column="order_no" property="orderNo"/>
+
+		<result column="specs" property="specs"/>
+		<result column="model" property="model"/>
+		<result column="color" property="color"/>
+		<result column="brand" property="brand"/>
+		<result column="unit" property="unit"/>
+		<result column="price" property="price"/>
+		<result column="sku" property="sku"/>
+		<result column="units" property="units"/>
+		<result column="barcode" property="barcode"/>
+		<result column="origin" property="origin"/>
+		<result column="manu" property="manu"/>
+		<result column="manu_date" property="manu_date"/>
+		<result column="item_num" property="item_num"/>
+		<result column="safe_qty" property="safe_qty"/>
+		<result column="weight" property="weight"/>
+		<result column="man_length" property="man_length"/>
+		<result column="volume" property="volume"/>
+		<result column="three_code" property="three_code"/>
+		<result column="supp" property="supp"/>
+		<result column="supp_code" property="supp_code"/>
+
+		<!-- 鏍囧織 / 绛栫暐 -->
+		<result column="be_batch" property="be_batch"/>
+		<result column="dead_time" property="dead_time"/>
+		<result column="dead_warn" property="dead_warn"/>
+		<result column="source" property="source"/>
+		<result column="inspect" property="inspect"/>
+		<result column="danger" property="danger"/>
+
+		<!-- 瀹¤瀛楁 -->
+		<result column="modi_user" property="modi_user"/>
+		<result column="modi_time" property="modi_time"/>
+		<result column="appe_user" property="appe_user"/>
+		<result column="appe_time" property="appe_time"/>
+		<result column="memo" property="memo"/>
+
+	</resultMap>
 <!-- 鍏ュ簱缁熻 -->
 <!-- 鍒嗛〉鏌ヨ鎵�鏈変俊鎭� -->
-<select id="queryViewWorkInList" parameterType="com.zy.asrs.entity.ViewWorkInBean" resultType="com.zy.asrs.entity.ViewWorkInBean">
+<select id="queryViewWorkInList" parameterType="com.zy.asrs.entity.ViewWorkInBean" resultMap="ViewWorkInMap">
 	select
 	*
 	from (
@@ -122,7 +188,7 @@
 
 <!-- 鍑哄簱缁熻 -->
 <!-- 鍒嗛〉鏌ヨ鎵�鏈変俊鎭� -->
-<select id="queryViewWorkOutList" parameterType="com.zy.asrs.entity.ViewWorkInBean" resultType="com.zy.asrs.entity.ViewWorkInBean">
+<select id="queryViewWorkOutList" parameterType="com.zy.asrs.entity.ViewWorkInBean" resultMap="ViewWorkInMap">
 
 
 	select
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index 8a91989..b484e56 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -61,6 +61,7 @@
         <result column="full_plt" property="fullPlt" />
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
+        <result column="task_no" property="taskNo" />
     </resultMap>
     <sql id="queryWhere">
         <where>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index f6e0a06..27fe5f3 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -60,6 +60,7 @@
         <result column="full_plt" property="fullPlt" />
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
+        <result column="task_no" property="taskNo" />
     </resultMap>
 
     <select id="selectToBeCompleteData" resultMap="BaseResultMap">
diff --git a/src/main/webapp/static/js/pakStore/emptyOut.js b/src/main/webapp/static/js/pakStore/emptyOut.js
index 8bbc97c..88cb0ea 100644
--- a/src/main/webapp/static/js/pakStore/emptyOut.js
+++ b/src/main/webapp/static/js/pakStore/emptyOut.js
@@ -55,6 +55,7 @@
             ,{field: 'row1', align: 'center',title: '鎺�'}
             ,{field: 'bay1', align: 'center',title: '鍒�'}
             ,{field: 'lev1', align: 'center',title: '灞�'}
+            ,{field: 'barcode', align: 'center',title: '鏂欑鐮�'}
             ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){
                     var html = "<input value='fullPlt' type='checkbox' disabled=鈥榙isabled鈥� lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
                     if(row.fullPlt === 'Y'){html += " checked ";}
diff --git a/src/main/webapp/static/js/pakStore/pakStore.js b/src/main/webapp/static/js/pakStore/pakStore.js
index 863b89f..3f5f9ec 100644
--- a/src/main/webapp/static/js/pakStore/pakStore.js
+++ b/src/main/webapp/static/js/pakStore/pakStore.js
@@ -79,9 +79,14 @@
                         return;
                     }
                 }
-                let devpNo = $('#putSiteSelect').val();
+                let devpNo = $('#barcode').val();
                 if (isEmpty(devpNo)) {
-                    layer.msg("璇烽�夋嫨鍏ュ簱绔�", {icon: 2});
+                    layer.msg("璇疯緭鍏ユ枡绠辩爜", {icon: 2});
+                    return;
+                }
+                // 8 浣嶇函鏁板瓧鏍¢獙
+                if (!/^\d{8}$/.test(devpNo)) {
+                    layer.msg("鏂欑鐮佸繀椤绘槸 8 浣嶇函鏁板瓧", { icon: 2 });
                     return;
                 }
                 console.log(matCodeData)
@@ -89,7 +94,7 @@
                     url: baseUrl+"/full/store/put/start",
                     headers: {'token': localStorage.getItem('token')},
                     data: JSON.stringify({
-                        devpNo: Number(devpNo),
+                        barcode: devpNo,
                         list: matCodeData
                     }),
                     contentType:'application/json;charset=UTF-8',
@@ -97,8 +102,9 @@
                     async: false,
                     success: function (res) {
                         if (res.code === 200){
-                            layer.msg("鍏ュ簱鍚姩鎴愬姛锛岀洰鏍囧簱浣嶏細" + res.data, {icon: 1});
+                            layer.msg(res.msg, {icon: 1});
                             matCodeData = [];
+                            $('#barcode').val("");
                             $('#focusMatByMat').val("");
                             tableIns.reload({data: matCodeData,done:function (res) { limit(); getInBound();}});
                         } else if (res.code === 403){
diff --git a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
index 9f7c461..8b0266d 100644
--- a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
+++ b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js
@@ -33,6 +33,7 @@
             ,{field: 'staNo$', align: 'center',title: '鐩爣绔�'}
             ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'}
             ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'}
+            ,{field: 'taskNo', align: 'center',title: 'CTU浠诲姟鍙�', width:140}
             // ,{field: 'picking', align: 'center',title: '鎷f枡', templet:function(row){
             //         var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'";
             //         if(row.picking === 'Y'){html += " checked ";}
diff --git a/src/main/webapp/views/pakStore/pakStore.html b/src/main/webapp/views/pakStore/pakStore.html
index fc396cb..8761e0a 100644
--- a/src/main/webapp/views/pakStore/pakStore.html
+++ b/src/main/webapp/views/pakStore/pakStore.html
@@ -98,12 +98,14 @@
         <div class="layui-form">
             <div class="layui-btn-container">
                 <!-- 1.閫夋嫨鍏ュ簱鍙� -->
-                <span id="staNoSpan">鍏ュ簱鍙o細</span>
-                <select id="putSiteSelect" lay-verify="required">
-                    <option value="">璇烽�夋嫨绔欑偣</option>
-                </select>
+                <span id="staNoSpan">鏂欑鐮侊細
+                    <input id="barcode" class="layui-input" type="text" autocomplete="off" style="width: 120px">
+                </span>
+                <!--                <select id="putSiteSelect" lay-verify="required">-->
+                <!--                    <option value="">璇烽�夋嫨绔欑偣</option>-->
+                <!--                </select>-->
                 <!-- 2.鍚姩鍏ュ簱 -->
-                <button class="layui-btn layui-btn-normal layui-btn-lg" id="btn-comb" lay-event="comb" style="">鍚姩鍏ュ簱</button>
+                <button class="layui-btn layui-btn-normal layui-btn-lg" id="btn-comb" lay-event="comb">缁勬墭</button>
             </div>
         </div>
     </script>
diff --git a/src/main/webapp/views/task/task.html b/src/main/webapp/views/task/task.html
index b3e97a7..1dd2b5e 100644
--- a/src/main/webapp/views/task/task.html
+++ b/src/main/webapp/views/task/task.html
@@ -59,8 +59,8 @@
     <a class="layui-btn layui-btn-xs btn-detlShow" lay-event="detlShow">鏄庣粏</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs btn-complete" lay-event="complete">瀹屾垚</a>
     <a class="layui-btn layui-btn-primary layui-btn-xs btn-cancel" lay-event="cancel">鍙栨秷</a>
-    {{#if (d.ioType === 103) { }}
-    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">鎷�</a>
+    {{#if (d.wrkSts === 305) { }}
+    <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">鍥�</a>
     {{# } }}
     {{#if (d.ioType === 107) { }}
     <a class="layui-btn layui-btn-warm layui-btn-xs btn-pick" lay-event="pick">鐩�</a>

--
Gitblit v1.9.1