From 3eee2147f220634b620b7ed84c97fbd8257205d5 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期二, 13 一月 2026 13:21:44 +0800
Subject: [PATCH] 修改了AGV的接口以及mas获取的数据

---
 src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java         |   36 ++
 src/main/resources/mapper/ViewDigitalTwinMapper.xml                |   82 +++---
 src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java             |    4 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java        |    5 
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java              |    8 
 src/main/java/com/zy/common/model/TaskDto.java                     |    6 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java             |   10 
 src/main/java/com/zy/asrs/controller/DigitalTwinController.java    |  100 +------
 src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java   |    8 
 src/main/java/com/zy/asrs/controller/MobileController.java         |    8 
 src/main/java/com/zy/common/web/WcsController.java                 |    2 
 src/main/java/com/zy/asrs/entity/digitaltwin/DtDetainMatVo.java    |    1 
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java         |   12 
 src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java |  170 +++++++++++++
 src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java    |    4 
 src/main/java/com/zy/asrs/entity/mes/MesReturn.java                |    4 
 src/main/java/com/zy/asrs/service/DigitalTwinService.java          |    2 
 src/main/resources/application-dev.yml                             |    5 
 src/main/resources/mapper/LocCountMapper.xml                       |   15 
 src/main/java/com/zy/asrs/controller/OutController.java            |   23 +
 src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java |  170 ++++++++-----
 src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java            |   11 
 src/main/java/com/zy/asrs/service/OrderPakoutService.java          |    5 
 23 files changed, 439 insertions(+), 252 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
index 5bfbd16..628091d 100644
--- a/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
+++ b/src/main/java/com/zy/asrs/controller/DigitalTwinController.java
@@ -89,19 +89,6 @@
                            @RequestParam(required = false) String 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);
-
         return R.ok().add(locVoList);
     }
 
@@ -120,8 +107,7 @@
                                  @RequestParam(required = false) String endDate){
 
         List<DtInAndOutBoundVo> inAndOutBoundVoList = digitalTwinService.inAndOutBound(areaId, startDate, endDate);
-
-
+//
 //        DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder()
 //                .boundDate("2025-10-22")
 //                .inBoundNum(237)
@@ -154,31 +140,6 @@
                              @RequestParam(required = false) Integer 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);
-
         return R.ok().add(detainMatVoList);
     }
 
@@ -192,35 +153,7 @@
 //    @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().add(dtEquipmentVoList);
+        return R.ok(digitalTwinService.equipment(areaId));
     }
 
     /**
@@ -232,10 +165,8 @@
     @RequestMapping(value = "/warehouseDetail")
 //    @ManagerAuth
     public R warehouseDetail(@RequestParam(required = false) String areaId){
-        List<DtLocDetailVo> dtLocDetailVoList = digitalTwinService.warehouseDetail(areaId);
 
-        return R.ok().add(dtLocDetailVoList);
-    }
+        return R.ok(digitalTwinService.warehouseDetail(areaId));
 //        List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>();
 //        DtLocDetailVo dtLocDetailVo = new DtLocDetailVo();
 //        dtLocDetailVo.setLocNo("CA0100202");
@@ -289,17 +220,20 @@
 //        locDetl2.setMaktx("鍒�鎶�");
 //        dtLocDetailVo2.setLocDetl(locDetl2);
 //        dtLocDetailVoList.add(dtLocDetailVo2);
+
+
+//        LocDetl locDetl2 = new LocDetl();
+//        locDetl2.setLocNo("1001");
+//        locDetl2.setAreaId(10010L);
+//        locDetl2.setAreaName("鍒�鍏峰簱");
+//        locDetl2.setMatnr("mat10001");
+//        locDetl2.setMaktx("鍒�鎶�");
 //
-//
-////        LocDetl locDetl2 = new LocDetl();
-////        locDetl2.setLocNo("1001");
-////        locDetl2.setAreaId(10010L);
-////        locDetl2.setAreaName("鍒�鍏峰簱");
-////        locDetl2.setMatnr("mat10001");
-////        locDetl2.setMaktx("鍒�鎶�");
-////
-//////        List<LocDetl> locDetlList = new ArrayList<>();
-//////        locDetlList.add(locDetl);
-//////        locDetlList.add(locDetl2);
+////        List<LocDetl> locDetlList = new ArrayList<>();
+////        locDetlList.add(locDetl);
+////        locDetlList.add(locDetl2);
+
+//        return R.ok().add(dtLocDetailVoList);
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 06df109..0a4fad1 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -644,9 +644,7 @@
                         break;
                     }
                 }
-                if (boo) {
-                    settle.remove(orderPakin);
-                }else {
+                if (!boo) {
                     list.add(orderPakin.getOrderNo());
                 }
             }else {
@@ -670,9 +668,7 @@
                         break;
                     }
                 }
-                if (boo) {
-                    settle.remove(orderPakout);
-                }else {
+                if (!boo) {
                     list.add(orderPakout.getOrderNo());
                 }
             }else {
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index ee83f6d..5ace63f 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -12,6 +12,7 @@
 import com.zy.common.model.TaskDto;
 import com.zy.common.web.BaseController;
 import lombok.Synchronized;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -27,6 +28,7 @@
  */
 
 @RestController
+@Slf4j
 public class OutController extends BaseController {
 
     @Autowired
@@ -379,16 +381,17 @@
                 }
             }
             if (issued > 0) {
-                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-                locDto.setBrand(orderDetl.getBrand());
-                locDto.setStandby1(orderDetl.getStandby1());
-                locDto.setStandby2(orderDetl.getStandby2());
-                locDto.setStandby3(orderDetl.getStandby3());
-                locDto.setBoxType1(orderDetl.getBoxType1());
-                locDto.setBoxType2(orderDetl.getBoxType2());
-                locDto.setBoxType3(orderDetl.getBoxType3());
-                locDto.setLack(Boolean.TRUE);
-                locDtos.add(locDto);
+//                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+//                locDto.setBrand(orderDetl.getBrand());
+//                locDto.setStandby1(orderDetl.getStandby1());
+//                locDto.setStandby2(orderDetl.getStandby2());
+//                locDto.setStandby3(orderDetl.getStandby3());
+//                locDto.setBoxType1(orderDetl.getBoxType1());
+//                locDto.setBoxType2(orderDetl.getBoxType2());
+//                locDto.setBoxType3(orderDetl.getBoxType3());
+//                locDto.setLack(Boolean.TRUE);
+//                locDtos.add(locDto);
+                return R.error("搴撳瓨涓嶈冻");
             }
         }
         R pakout = pakout(locDtos);
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..ca04694 100644
--- a/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java
+++ b/src/main/java/com/zy/asrs/entity/digitaltwin/DtEquipmentVo.java
@@ -1,10 +1,14 @@
 package com.zy.asrs.entity.digitaltwin;
 
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 @Data
 @Builder
+@AllArgsConstructor
+@NoArgsConstructor
 public class DtEquipmentVo {
 
     // 璁惧ID
diff --git a/src/main/java/com/zy/asrs/entity/mes/MesReturn.java b/src/main/java/com/zy/asrs/entity/mes/MesReturn.java
index bbecda1..c1b477d 100644
--- a/src/main/java/com/zy/asrs/entity/mes/MesReturn.java
+++ b/src/main/java/com/zy/asrs/entity/mes/MesReturn.java
@@ -11,10 +11,10 @@
     // 1锛氭垚鍔燂紱2锛氬け璐�
     @JsonProperty("Success")
     @JSONField(name = "Success")
-    private String Success;
+    private String success;
     // 澶辫触娑堟伅
     @JsonProperty("Message")
     @JSONField(name = "Message")
-    private String Message;
+    private String message;
 
 }
diff --git a/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java b/src/main/java/com/zy/asrs/mapper/DigitalTwinMapper.java
index 33f1999..f50fde8 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);
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/service/DigitalTwinService.java b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
index d56961f..1b02d7d 100644
--- a/src/main/java/com/zy/asrs/service/DigitalTwinService.java
+++ b/src/main/java/com/zy/asrs/service/DigitalTwinService.java
@@ -67,4 +67,6 @@
      *
      */
     void locNumCount();
+
+    DtEquipmentVo equipment(String areaId);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderPakoutService.java b/src/main/java/com/zy/asrs/service/OrderPakoutService.java
index 60a6c8e..dff48ff 100644
--- a/src/main/java/com/zy/asrs/service/OrderPakoutService.java
+++ b/src/main/java/com/zy/asrs/service/OrderPakoutService.java
@@ -1,10 +1,13 @@
 package com.zy.asrs.service;
 
 import com.baomidou.mybatisplus.service.IService;
+import com.core.common.R;
 import com.zy.asrs.entity.OrderPakout;
 import com.zy.asrs.entity.OrderDetlPakout;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.common.model.LocDto;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -34,4 +37,6 @@
     OrderPakout selectOrderMoveStatus();
     OrderPakout selectOrderMoveStatusInitial();
 
+    R pakout(List<LocDto> locDtos);
+
 }
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 ef681e9..935062a 100644
--- a/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -1,15 +1,22 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.entity.LocCount;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.digitaltwin.*;
 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.LocMastService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -57,21 +64,27 @@
      */
     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) {
@@ -91,27 +104,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;
     }
@@ -136,13 +156,14 @@
         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
+    private LocMastService locMastService;
 
     /**
      * 鏌ヨ搴撳瓨鍜屽簱浣嶈缁嗕俊鎭�
@@ -151,31 +172,39 @@
      * @return
      */
     public List<DtLocDetailVo> warehouseDetail(String areaId) {
-        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;
+        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());
+//        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;
     }
 
     /**
@@ -203,11 +232,11 @@
         }
 
         List<LocCount> locCounts;
-        if(areaId.isEmpty()){
-            locCounts = locCountMapper.getByDate(Integer.parseInt(startDate), Integer.parseInt(endDate));
-        } else {
-            locCounts = locCountMapper.getByAreaAndDate(areaId, Integer.parseInt(startDate), Integer.parseInt(endDate));
-        }
+//        if(areaId.isEmpty()){
+        locCounts = locCountMapper.getByDate(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();
@@ -227,29 +256,30 @@
      *
      */
     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) {
+        BasCrnp crnp = basCrnpService.selectOne(new EntityWrapper<>());
+        return DtEquipmentVo.builder()
+                .equipmentId("1").equipmentName("鍫嗗灈鏈�1").equipmentType(1)
+                .belongAreaId("C").belongAreaName("鑱旂粨鍣ㄥ簱").verticalSpeed(Integer.valueOf(Cools.isEmpty(crnp.getCtlHp()) ? "0" : crnp.getCtlHp()))
+                .horizontalSpeed(Integer.valueOf( Cools.isEmpty(crnp.getCtlRest()) ? "0" : 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 468d906..54e1104 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -978,6 +978,10 @@
 
                     set.add(mesOutApplyItem.getTrayid());
                     Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
+                    if (Cools.isEmpty(mat)) {
+                        log.error("鐗╂枡缂栧彿涓嶅瓨鍦�: {}", mesOutApplyItem.getItemno());
+                        throw new CoolException("鐗╂枡缂栧彿涓嶅瓨鍦�: " + mesOutApplyItem.getItemno());
+                    }
                     OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
                     orderDetlPakout.setOrderId(orderPakout.getId());
                     orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
@@ -1108,7 +1112,9 @@
         Date now = new Date();
         Task task = new Task();
         task.setWrkNo(workNo);
-        task.setTaskType("ZX-AGV");
+        //08-1鏄┖鎵樼洏杞簭浠诲姟
+        //08-2鏄墿鏂欒浆搴忎换鍔�
+        task.setTaskType("ZX-AGV-"+transTask.getTransType());
         task.setWrkSts(301L);//301.AGV浠诲姟鍒涘缓
         task.setIoType(3);//3.绔欏埌绔�
         task.setIoPri(10.00);
@@ -1232,7 +1238,7 @@
         if ("Y".equals(allow.getStatus())) {
             String TaskNo = allow.getTaskno();
             if(allow.getTaskno().contains("-")){
-                TaskNo = allow.getTaskno().split("-")[0];
+                TaskNo = allow.getTaskno().substring(0, allow.getTaskno().length() - 2);
             }
             Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", TaskNo));
             if (Cools.isEmpty(task)) {
@@ -1324,7 +1330,7 @@
         if ("Y".equals(allow.getStatus())) {
             String TaskNo = allow.getTaskno();
             if(allow.getTaskno().contains("-")){
-                TaskNo = allow.getTaskno().split("-")[0];
+                TaskNo = allow.getTaskno().substring(0, allow.getTaskno().length() - 2);
             }
             Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", TaskNo));
             if (Cools.isEmpty(task)) {
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
index 2e41247..d0b7de7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
@@ -2,21 +2,23 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.entity.param.OpenOrderPakoutParam;
 import com.zy.asrs.mapper.OrderDetlPakoutMapper;
 import com.zy.asrs.mapper.OrderPakoutMapper;
 import com.zy.asrs.service.*;
 import com.zy.common.model.DetlDto;
+import com.zy.common.model.LocDto;
+import com.zy.common.model.TaskDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,6 +40,19 @@
     private WrkDetlService wrkDetlService;
     @Autowired
     private OrderDetlPakoutServiceImpl orderDetlPakoutService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private StaDescService staDescService;
+    @Autowired
+    private WorkService workService;
+    @Autowired
+    private BasDevpService basDevpService;
+
+    @Resource
+    private OrderPakoutService orderPakOutService;
 
     @Override
     public OrderPakout selectByNo(String orderNo) {
@@ -203,4 +218,153 @@
         return this.baseMapper.selectOrderMoveStatusInitial();
     }
 
+    @Override
+    public R pakout(List<LocDto> locDtos) {
+        if (Cools.isEmpty(locDtos)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        List<LocDto> locDtoArrayList = new ArrayList<>();
+        for (LocDto locDto : locDtos) {
+            if (locDto.getFrozen() != 1 && locDto.getFrozenLoc() != 1) {
+                locDtoArrayList.add(locDto);
+            }
+        }
+        locDtos = locDtoArrayList;
+        if (Cools.isEmpty(locDtos)) {
+            return R.parse("搴撳瓨/搴撲綅琚喕缁擄紝璇峰鐞嗗悗鍑哄簱锛侊紒锛�");
+        }
+        boolean lack = true;
+        for (LocDto locDto : locDtos) {
+            if (!locDto.isLack()) {
+                lack = false;
+                break;
+            }
+        }
+        if (lack) {
+            return R.error("搴撳瓨涓嶈冻");
+        }
+
+        List<TaskDto> taskDtos = new ArrayList<>();
+        // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+        for (LocDto locDto : locDtos) {
+            if (locDto.isLack()) {
+                continue;
+            }
+            TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
+            if (TaskDto.has(taskDtos, taskDto)) {
+                TaskDto dto = TaskDto.find(taskDtos, taskDto);
+                assert dto != null;
+                dto.getLocDtos().addAll(taskDto.getLocDtos());
+            } else {
+                taskDtos.add(taskDto);
+            }
+        }
+        OrderPakout orderPakout = orderPakOutService.selectByNo(locDtos.get(0).getOrderNo());
+
+        //閰嶇洏鍑哄簱鍗曠敤锛� i=5鏃舵垨鑰呭嚭搴撳埌鏈�鍚庢椂涓嬪彂绌烘澘鍑哄簱浠诲姟
+        int i = 0;
+        //闇�瑕佸嚭搴撶殑鎵樼洏鏁伴噺
+        int size = taskDtos.size();
+        //浼樺厛绾�
+        int ioPri = 50;
+        //宸蹭笅绌烘澘鍑哄簱浠诲姟鏁伴噺
+        int j = 1;
+        // -----------------------------------------------------------------------------------------------
+        for (TaskDto taskDto : taskDtos) {
+            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+            workService.stockOut(staNo, taskDto, 9995L, ioPri);
+            ioPri--;
+            i++;
+            //閰嶇洏鍑哄簱鍗曚娇鐢紝涓嬪彂闇�瑕佸嚭鐨勭┖鏉夸换鍔�
+            if (orderPakout.getDocType() == 11) {
+                if (i == size) {
+                    for (; j <= orderPakout.getPayType(); j++) {
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", taskDto.getLocNo()));
+                        Integer locType = Integer.valueOf(locMast1.getLocType2());
+                        //閰嶇洏 鍑哄簱鍗曞嚭搴撳尯鍩熸椂Q-L4鏃�,鍑哄ぇ鎵樼洏绌烘澘
+                        if(!Cools.isEmpty(orderPakout.getCstmrName())&&orderPakout.getCstmrName().equals("Q-L4")){
+                            locType = 2;
+                        }
+                        String bar = "";
+                        //鍏蜂綋寰呭畾
+//                        if(!Cools.isEmpty(orderPakout.getShipCode())&&orderPakout.getShipCode().equals("A01")){
+//                            bar = "A01";
+//                        }
+                        LocMast locMast = new LocMast();
+                        if (Cools.isEmpty(bar)) {
+                            locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                    .eq("loc_sts", "D").eq("loc_type2", locType).orderBy("row1",false));
+                        } else {
+                            locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                    .eq("loc_sts", "D").eq("loc_type2", locType).like("barcode", bar).orderBy("row1",false));
+                        }
+
+                        if (Cools.isEmpty(locMast)) {
+                            return R.error("搴撳瓨娌℃湁绌烘澘");
+                        }
+                        String locNo = locMast.getLocNo();
+                        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+                        emptyPlateOutParam.setOutSite(303);
+                        emptyPlateOutParam.setLocNos(new ArrayList<String>() {{
+                            add(locNo);
+                        }});
+                        String agvSta = "";
+                        if (locMast.getLocType3() == 2) {
+                            agvSta = "Z-LZP26";
+                        }else if(locType ==2){
+
+                        } else {
+                            agvSta = orderPakout.getCstmrName();//agv鐩爣绔欑偣浣嶇疆
+                        }
+                        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam, ioPri, agvSta);
+                        ioPri--;
+
+                    }
+                } else if (i == 4) {
+                    LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", taskDto.getLocNo()));
+                    Integer locType = Integer.valueOf(locMast1.getLocType2());
+                    //閰嶇洏 鍑哄簱鍗曞嚭搴撳尯鍩熸椂Q-L4鏃�,鍑哄ぇ鎵樼洏绌烘澘
+                    if(orderPakout.getCstmrName().equals("Q-L4")){
+                        locType = 2;
+                    }
+
+                    String bar = "";
+                    if (!Cools.isEmpty(orderPakout.getShipCode()) && orderPakout.getShipCode().equals("A01")) {
+                        bar = "A01";
+                    }
+                    LocMast locMast = null;
+                    if (Cools.isEmpty(bar)) {
+                        locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("loc_sts", "D").eq("loc_type2", locType).orderBy("row1",false));
+                    } else {
+                        locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("loc_sts", "D").eq("loc_type2", locType).like("barcode", bar).orderBy("row1",false));
+                    }
+
+                    if (Cools.isEmpty(locMast)) {
+                        return R.error("搴撳瓨娌℃湁绌烘澘");
+                    }
+                    String locNo = locMast.getLocNo();
+                    EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+                    emptyPlateOutParam.setOutSite(303);
+                    emptyPlateOutParam.setLocNos(new ArrayList<String>() {{
+                        add(locNo);
+                    }});
+                    String agvSta = "";
+                    if (locMast.getLocType3() == 2) {
+                        agvSta = "Z-LZP26";
+                    }else if(locType ==2){
+
+                    } else {
+                        agvSta = orderPakout.getCstmrName();//agv鐩爣绔欑偣浣嶇疆
+                    }
+                    WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam, ioPri, agvSta);
+                    ioPri--;
+                    j++;
+                }
+            }
+        }
+        return R.ok();
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
index 46ab32e..fb1cba4 100644
--- a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
@@ -3,10 +3,10 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.Task;
-import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.OrderPakoutService;
 import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.WrkDetlService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.service.impl.BasDevpServiceImpl;
 import com.zy.asrs.task.core.ReturnT;
@@ -34,7 +34,11 @@
     @Autowired
     private WrkMastService wrkMastService;
     @Autowired
+    private WrkDetlService wrkDetlService;
+    @Autowired
     private BasDevpServiceImpl basDevpService;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
 
     /**
      * 婊℃澘鍜岀┖鏉垮嚭搴撲换鍔★紝鍑哄埌杈撻�佺嚎鍚庡垱寤篈GV鎼繍浠诲姟
@@ -61,19 +65,41 @@
             Task task1 = taskService.selectOne(new EntityWrapper<Task>()
                     .in("source_sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo())
                     .in("sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo()));
-            if (Cools.isEmpty(task1)) {
 
+            if (Cools.isEmpty(task1)) {
                 //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
                 // 淇濆瓨宸ヤ綔妗�
                 Task task = new Task();
                 Date date = new Date();
                 String TaskNo = wrkMast.getWrkNo() + "aa" + date.getTime();
+                String taskType = "AGV";
+                List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
+
+                if (wrkMast.getIoType()!=110){
+                    if (wrkDetls != null && !Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
+                        TaskNo = wrkDetls.get(0).getOrderNo();
+                        taskType = "KB-AGV";
+                    }
+
+                }else{
+                    if (wrkDetls != null && !Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
+                        OrderPakout orderPakout = orderPakoutService.selectByNo(wrkDetls.get(0).getOrderNo());
+                        if (orderPakout.getDocType()==11){
+                            taskType = "PP-AGV";
+                        }else if (orderPakout.getDocType()==12){
+                            taskType = "ZP-AGV";
+                        }
+
+                    }
+
+                }
+
                 task.setWrkNo(wrkMast.getWrkNo())
                         .setTaskNo(TaskNo)
                         .setIoTime(date)
                         .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
                         .setIoType(ioType) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�  4.绔欏埌鍖哄煙
-                        .setTaskType("agv")
+                        .setTaskType(taskType)
                         .setIoPri(10D)
                         .setFullPlt("Y") // 婊℃澘锛歒
                         .setPicking("N") // 鎷f枡
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index ac352f3..410abbd 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -138,7 +138,7 @@
     }
 
     // 鍏ュ簱璁㈠崟瀹屾垚涓婃姤-棰嗘枡鍗曪紝鍘熸潗鏂�
-    @Scheduled(cron = "0/30 * * * * ? ")
+    //@Scheduled(cron = "0/30 * * * * ? ")
     @Async("orderThreadPool")
     void inOrderCompleteReport() {
         String erpReport = Parameter.get().getErpReport();
@@ -256,9 +256,9 @@
         }
     }
 
-    // 鍑哄簱鍗曚笂鎶�
-    @Scheduled(cron = "0/30 * * * * ? ")
-    @Async("orderThreadPool")
+    // 瑁呴厤鍗曡嚜鍔ㄥ嚭搴�
+    @Scheduled(cron = "0/3 * * * * ? ")
+//    @Async("orderThreadPool")
     void AutoOutOrderPinOut() throws InterruptedException {
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
@@ -318,7 +318,7 @@
                 if (boo){
                     continue;
                 }
-                R pakout = outController.pakout(locDtos);
+                R pakout = orderPakoutService.pakout(locDtos);
                 break;
             }
 
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index c574b8c..1e685d1 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.DigitalTwinService;
 import com.zy.asrs.service.MesService;
 import com.zy.asrs.service.TaskService;
 import com.zy.asrs.service.WrkMastService;
@@ -35,6 +36,13 @@
     @Resource
     private MesService mesService;
     // TODO锛歳eporterTask()
+    @Resource
+    private DigitalTwinService digitalTwinService;
+
+    @Scheduled(cron = "0 50 23 * * ?")
+    private void locNumCount() {
+        digitalTwinService.locNumCount();
+    }
 
     @Scheduled(cron = "0/3 * * * * ? ")
     private void execute(){
diff --git a/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java b/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
index 07c89f7..cfdec07 100644
--- a/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
@@ -47,15 +47,15 @@
         Boolean flag2 = false;
 
         if(stationProperties.getStation().contains(task.getStaNo())){
-            taskType = "YLIN";
+            taskType = "LJIN";
             flag1 = true;
         }
         if (stationProperties.getStation().contains(task.getSourceStaNo())){
-            taskType = "YLOUT";
+            taskType = "LJOUT";
             flag2 = true;
         }
-        if(flag1&&flag2){
-            taskType = "YLBOTH";
+        if(flag1 && flag2){
+            taskType = "LJBOTH";
         }
         //AGV鍖哄煙涓棤娉曠敤-
         String StaNo = task.getStaNo();
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index e593217..1dc74b3 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -614,19 +614,20 @@
         if (wrkMast != null) {
             if (wrkMast.getIoType()==110&& wrkMast.getWrkSts()>12){
                 wrkMast.setWrkSts(32L);//32.绛夊緟缁勬墭
-            }else if (wrkMast.getIoType()==101){
+            }else if (wrkMast.getIoType()==101 && wrkMast.getWrkSts()>12){
                 wrkMast.setWrkSts(15L);//15.鍑哄簱鏇存柊瀹屾垚
             }else if (wrkMast.getIoType()==103 && wrkMast.getWrkSts()>12){
                 wrkMast.setWrkSts(20L);//20.绛夊緟鍥炲簱
             }
             wrkMast.setModiTime(new Date());
+            wrkMast.setOveMk("Y");
             wrkMastService.updateById(wrkMast);
             task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
             task.setModiTime(new Date());
             taskService.updateById(task);
 
             //瀵硅浆搴忔惉杩愬畬鎴愮殑浠诲姟缁撴灉鍙嶉缁檓es
-        }else if(task.getTaskType().equals("ZX-AGV")){
+        }else if(task.getTaskType().equals("ZX-AGV-08-1")||task.getTaskType().equals("ZX-AGV-08-2")){
             HashMap<String,Object> map = new HashMap<>();
             map.put("taskno", task.getTaskNo());
             String mesUrl = url+"AGVArrivalCompletedFit";
diff --git a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
index 3e6b2d5..5c1da06 100644
--- a/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
+++ b/src/main/java/com/zy/asrs/utils/OrderInAndOutUtil.java
@@ -543,7 +543,9 @@
 
     public static OrderDetl selectItem(boolean sign,String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3){
         try{
-            Object invoke = implement(OrderMethodVo.SELECT_ITEM2).invoke(getOrderInAndOutType(sign), orderNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3);
+            Method m = implement(OrderMethodVo.SELECT_ITEM2);
+            OrderInAndOutType t = getOrderInAndOutType(sign);
+            Object invoke = m.invoke(t, orderNo, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3);
             return aOrderDetl(invoke);
         } catch (Exception e) {
             throw new CoolException(e.getCause().getMessage());
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index af369cf..d840ae6 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -109,7 +109,11 @@
                     }
                 }
                 if (dto.getAnfme() > locDetl.getAnfme()) {
-                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
+                    throw new CoolException(String.format(
+                            "鍑哄簱鏁伴噺[%s]瓒呰繃搴撳瓨鏁伴噺[%s]锛岀墿鏂欙細%s锛屾壒娆★細%s",
+                            dto.getAnfme(), locDetl.getAnfme(),
+                            dto.getMatnr(), dto.getBatch()
+                    ));
                 }
                 if (dto.getAnfme().equals(locDetl.getAnfme())) {
                     sameNumber++;
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 5166311..9ac8e9f 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -66,7 +66,7 @@
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
-        if (Cools.isEmpty(param.getSourceStaNo())||param.getBarcode().length()==8) {
+        if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("鎵樼洏涓嶈兘涓虹┖鎴栬�呮墭鐩樼爜涓嶄负鍏綅");
         }
         List<WaitPakin> waitPakins = null;
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index aa6cb38..8efb6f7 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -135,7 +135,7 @@
 #mes瀵规帴
 mes:
 
-  url: http://192.9.100.173:8088/prod-api/basicmodel/WmsFit/Api/
+  url: http://172.26.160.5:80/dev-api/basicmodel/WmsFit/Api/
   #榛樿鎺ュ彛鎿嶄綔浜哄憳id
   defaultUserId: 30
 
@@ -143,8 +143,7 @@
 hik:
   switch: true
   url: http://172.26.11.98:80/rcs/rtas/
-  station: 402,401,307,Z-LZL41,Z-LZL42
-
+  station: 402,401,307,Z-LVL10, Z-LVL11,Z-LVL12, Z-LVL13,Z-LVL14, Z-LVL15,Z-LVL16, Z-LVL17,Z-LVL18, Z-LVL19,Z-LVL05, Z-LVL06,Z-LVL07, Z-LVL08, Z-LVL09, Z-LZH19, Z-LZH20, Z-LZH21, Z-LZH22, Z-LZH23, Z-LZH24
 #鍗庢檽瀵规帴
 hx:
   url: http://172.26.3.131:8300/api/robot/
diff --git a/src/main/resources/mapper/LocCountMapper.xml b/src/main/resources/mapper/LocCountMapper.xml
index 60bc842..eee2542 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 957e7e4..371ddb7 100644
--- a/src/main/resources/mapper/ViewDigitalTwinMapper.xml
+++ b/src/main/resources/mapper/ViewDigitalTwinMapper.xml
@@ -3,39 +3,32 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.asrs.mapper.DigitalTwinMapper">
 
-    <resultMap id="dtOrderMap" type="com.zy.asrs.entity.digitaltwin.DtOrderVo">
-        <constructor>
-            <arg column="orderDate" javaType="java.util.Date"/>
-            <arg column="orderNum" javaType="java.lang.Integer"/>
-        </constructor>
-    </resultMap>
-
     <!--鎬昏锛氭�诲簱浣嶃�佸凡鐢ㄥ簱浣嶃�佷粖鏃ュ簱瀛樸�佷粖鏃ュ嚭搴撱�佷粖鏃ュ叆搴�-->
     <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">
@@ -65,9 +58,9 @@
         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>
 
@@ -75,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>

--
Gitblit v1.9.1