From a8bb23b90b99f1898c2a0d0335115c69a6db761d Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 24 一月 2026 08:33:19 +0800
Subject: [PATCH] 添加了联结器库特殊站点时调用AGV特殊模板,添加人员入侵系统检测到有人时急停AGV的接口,修复AGV工作档没有任务号的漏洞

---
 src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java       |    5 +
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java       |   47 ++++++++++++---
 src/main/java/com/zy/asrs/controller/LocDetlController.java      |    2 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java      |   28 +++++----
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java    |    4 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java           |    2 
 src/main/resources/application-dev.yml                           |    2 
 src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java |   24 ++++++-
 src/main/resources/mapper/TaskMapper.xml                         |    2 
 src/main/java/com/zy/asrs/controller/MesController.java          |   23 +++++++
 src/main/java/com/zy/asrs/service/MesService.java                |    2 
 11 files changed, 105 insertions(+), 36 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index 619459d..a9213d4 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -306,7 +306,7 @@
             if (Cools.isEmpty(mat)) {
                 continue;
             }
-            if (!Cools.isEmpty(mat                                                                          .getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) {
+            if (!Cools.isEmpty(mat.getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) {
                 abnormalLocDetlParam.setStoreMax(mat.getStoreMax());
                 abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate());
                 abnormalLocDetlParam.setStoreMin(mat.getStoreMin());
diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index 3497c5a..a690371 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -13,6 +13,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 
 @RestController
 @Slf4j
@@ -118,4 +119,26 @@
         return mesService.queryInventory(itemno,orderNo);
     }
 
+    @PostMapping("/api/mes/pauseAGV")
+    public MesReturn AGVPause(@RequestBody JSONObject param) throws IOException {
+        MesReturn mesReturn = new MesReturn();
+        int AGVType;
+        if (param.containsKey("zoneCode")){
+            param.put("mapCode", "BB");
+            param.put("invoke", "FREEZE");
+            AGVType = 1;
+        }else {
+            AGVType = 2;
+        }
+        if (mesService.AGVPause(param, AGVType) == 1){
+            mesReturn.setSuccess("1");
+            mesReturn.setMessage("鎴愬姛");
+            return mesReturn;
+        }else {
+            mesReturn.setSuccess("2");
+            mesReturn.setMessage("澶辫触");
+            return mesReturn;
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/MesService.java b/src/main/java/com/zy/asrs/service/MesService.java
index f88f88b..f3ba28b 100644
--- a/src/main/java/com/zy/asrs/service/MesService.java
+++ b/src/main/java/com/zy/asrs/service/MesService.java
@@ -147,4 +147,6 @@
     int outStation(TransParent apply);
 
     MesReturn queryInventory(String itemno,String orderNo);
+
+    int AGVPause(JSONObject params, int AGVType);
 }
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 54e1104..d49c220 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -1,23 +1,21 @@
 package com.zy.asrs.service.impl;
 
-import com.alibaba.excel.util.DateUtils;
 import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.DateUtils;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.mes.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.entity.rcs.*;
 import com.zy.asrs.mapper.AgvInfoMapper;
 import com.zy.asrs.mapper.MatItemBarcodeMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.OrderInAndOutUtil;
-import com.zy.common.model.DetlDto;
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
 import lombok.extern.slf4j.Slf4j;
@@ -30,16 +28,22 @@
 import javax.annotation.Resource;
 import java.text.ParseException;
 import java.util.*;
-import java.util.concurrent.ExecutionException;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 @Slf4j
 @Service
 public class MesServiceImpl implements MesService {
-
     @Value("${mes.url}")
     public String MES_URL;
+
+    // 娴峰悍RCS鍦板潃
+    @Value("${hik.url}")
+    private String HIK_URL;
+
+    // 鍗庢檽RCS鍦板潃
+    @Value("${hx.url}")
+    private String HX_URL;
+
     @Value("${wms.currentName}")
     public String WMS_CURRENT_NAME;
     @Value("${wms.wmsTransStartStation1}")
@@ -243,7 +247,7 @@
             OrderPakin orderPakin = new OrderPakin();
             orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             orderPakin.setOrderNo(entry.getKey());
-            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakin.setOrderTime(DateUtils.convert(now));
             orderPakin.setDocType(docType);
             orderPakin.setSettle(1L);
             orderPakin.setStatus(1);
@@ -553,7 +557,7 @@
             OrderPakin orderPakin = new OrderPakin();
             orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             orderPakin.setOrderNo(mesInApply.getOrderNo());
-            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakin.setOrderTime(DateUtils.convert(now));
             orderPakin.setDocType(docType);
             orderPakin.setSettle(settle);
             orderPakin.setStatus(1);
@@ -956,7 +960,7 @@
             OrderPakout orderPakout = new OrderPakout();
             orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             orderPakout.setOrderNo(mesCallOutApply.getOrderNo());
-            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakout.setOrderTime(DateUtils.convert(now));
             orderPakout.setDocType(docType.getDocId());
             orderPakout.setSettle(settle);
             orderPakout.setStatus(1);
@@ -1031,7 +1035,7 @@
             OrderPakin orderPakin = new OrderPakin();
             orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             orderPakin.setOrderNo(mesCallOutApply.getOrderNo());
-            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakin.setOrderTime(DateUtils.convert(now));
             orderPakin.setDocType(docType.getDocId());
             orderPakin.setSettle(1L);
             orderPakin.setStatus(1);
@@ -1396,6 +1400,27 @@
         return mesReturn;
     }
 
+    @Override
+    public int AGVPause(JSONObject params, int AGVType){
+        MesReturn mesReturn = new MesReturn();
+
+        String hik_url = "api/robot/controller/zone/pause";
+        String hx_url = "";
+        String URL = "";
+        if (AGVType == 1){
+            URL = HIK_URL + hik_url;
+        }else {
+            URL = HX_URL + hx_url;
+        }
+
+        String response = RcsServiceImpl.sendPost(URL, JSONObject.toJSONString(params));
+        JSONObject jsonObject = JSON.parseObject(response);
+        if (!StringUtils.isEmpty(response) && jsonObject.getString("code").equals("SUCCESS")) {
+                return 1;
+        }else
+            return 2;
+    }
+
     // endregion
 
     /**
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 c16434d..6364b12 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1331,7 +1331,7 @@
     @Transactional
     public R callEmptyBinOutBound(String staNo, String locType, String palletFormat, String agvTaskNo, Long userId) {
         EntityWrapper<LocMast> wrapper = new EntityWrapper<>();
-        wrapper.eq("loc_sts", 'D').eq("loc_type2", locType);
+        wrapper.eq("loc_sts", "D").eq("loc_type2", Integer.parseInt(locType));
         if (palletFormat != null && !palletFormat.isEmpty()) {
             wrapper.like("barcode", palletFormat);
         }
@@ -1380,12 +1380,12 @@
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("N");
         wrkMast.setUserNo(agvTaskNo);
+        wrkMast.setUserNo(String.valueOf(agvTaskNo));
         wrkMast.setAppeUser(userId);
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
         wrkMast.setMemo(staNo);
-        wrkMast.setUserNo(String.valueOf(agvTaskNo));
         wrkMastService.insert(wrkMast);
 
         // 鏇存柊搴撲綅鐘舵��
diff --git a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
index c53aa0d..684dc50 100644
--- a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
@@ -76,11 +76,14 @@
                 List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
 
                 if (wrkMast.getIoType()==110){
-                    TaskNo = wrkDetls.get(0).getOrderNo();
+                    if (wrkMast == null){
+                        TaskNo = 55555 + "aa" + date.getTime();
+                    }
                     taskType = "ZX-AGV-08-1";
                 }else{
                     if (wrkDetls != null && !Cools.isEmpty(wrkDetls.get(0).getOrderNo())){
                         OrderPakout orderPakout = orderPakoutService.selectByNo(wrkDetls.get(0).getOrderNo());
+                        TaskNo = wrkDetls.get(0).getOrderNo();
                         if (orderPakout.getDocType()==11){
                             taskType = "PP-AGV";
                         }else if (orderPakout.getDocType()==12){
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 410abbd..1e31768 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();
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 cfdec07..f9eb275 100644
--- a/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
@@ -45,18 +45,32 @@
         String taskType = "PP";
         Boolean flag1 = false;
         Boolean flag2 = false;
-
+        Boolean cpFlag1 = false;
+        Boolean cpFlag2 = false;
         if(stationProperties.getStation().contains(task.getStaNo())){
-            taskType = "LJIN";
-            flag1 = true;
+            if (task.getStaNo().equals("Z-LVL18")){
+                taskType = "LJCPIN";
+                cpFlag1 = true;
+            }else {
+                taskType = "LJIN";
+                flag1 = true;
+            }
         }
         if (stationProperties.getStation().contains(task.getSourceStaNo())){
-            taskType = "LJOUT";
-            flag2 = true;
+            if (task.getSourceStaNo().equals("Z-LVL18")){
+                cpFlag2 = true;
+                taskType = "LJCPOUT";
+            }else{
+                taskType = "LJOUT";
+                flag2 = true;
+            }
         }
         if(flag1 && flag2){
             taskType = "LJBOTH";
         }
+        if (cpFlag1 && cpFlag2){
+            taskType = "LJCPBOTH";
+        }
         //AGV鍖哄煙涓棤娉曠敤-
         String StaNo = task.getStaNo();
         String SourceStaNo = task.getSourceStaNo();
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 1d1278b..c9a3aed 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -628,19 +628,21 @@
 
             //瀵硅浆搴忔惉杩愬畬鎴愮殑浠诲姟缁撴灉鍙嶉缁檓es
         }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());
-            map.put("StationId", task.getSourceStaNo());
-            String mesUrl = url+"AGVArrivalCompletedFit";
-            String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
-            if (!StringUtils.isEmpty(response) && response.contains("Success")){
-                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                if("1".equals(mesReturn.getSuccess())) {
-                    task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
-                    task.setModiTime(new Date());
-                    taskService.updateById(task);
-                }else {
-                    return new ReturnT<>(500, mesReturn.getMessage());
+            if(!task.getStaNo().equals("307")){
+                HashMap<String,Object> map = new HashMap<>();
+                map.put("taskno", task.getTaskNo());
+                map.put("StationId", task.getSourceStaNo());
+                String mesUrl = url+"AGVArrivalCompletedFit";
+                String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
+                if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                    if("1".equals(mesReturn.getSuccess())) {
+                        task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+                        task.setModiTime(new Date());
+                        taskService.updateById(task);
+                    }else {
+                        return new ReturnT<>(500, mesReturn.getMessage());
+                    }
                 }
             }
         }else {
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 8efb6f7..871500f 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -12,7 +12,7 @@
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     username: sa
     password: sa@123
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jnejc-ljqwms
+    url: jdbc:sqlserver://172.26.11.80:1433;databasename=jnejc-ljqwms
 #    username: sa
 #    password: Skyouc#23
 #    url: jdbc:sqlserver://192.168.4.24:1433;databasename=jsxswms
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
index 37b366b..86e6ec7 100644
--- a/src/main/resources/mapper/TaskMapper.xml
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@
 
     </resultMap>
     <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
-        select * from agv_task where wrk_sts = 305 order by upd_mk,error_time,io_time,wrk_no
+        select * from agv_task where wrk_sts = 304 order by upd_mk,error_time,io_time,wrk_no
     </select>
 
 </mapper>

--
Gitblit v1.9.1