From 071b6b6eb7add4aa6e067b87259697101bff4119 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 01 十二月 2025 17:00:46 +0800
Subject: [PATCH] #AGV

---
 src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java |   39 +++++++++
 src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java      |    9 ++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java  |   84 ++++++++++++++++++++
 src/main/java/com/zy/asrs/controller/MobileController.java     |    7 +
 src/main/java/com/zy/common/constant/HIKApiConstant.java       |   15 +++
 src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java         |   38 +++++++++
 src/main/java/com/zy/asrs/service/MobileService.java           |    3 
 7 files changed, 194 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 95e7cda..506cf88 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -60,6 +60,13 @@
     @Resource
     private StaDescService staDescService;
 
+
+    @PostMapping("/agv/callEmptyCar")
+    @ManagerAuth
+    public R pdaAgvFinishedCall(@RequestBody AgvCallParams params){
+        return mobileService.callEmptyCar(params);
+    }
+
     @RequestMapping("/pda/WarehouseOut/v1")
     @ManagerAuth(memo = "骞舵澘閫斾腑鎷f枡-鍙傝�冨康鍒�")
     public R WarehouseOutV1(@RequestBody CombParam combParam) {
diff --git a/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java b/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java
new file mode 100644
index 0000000..741bdda
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/ForwardAGVTaskDTO.java
@@ -0,0 +1,39 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ForwardAGVTaskDTO {
+    private String reqCode;
+    private String reqTime;
+    private String taskTyp;
+    private String ctnrCode;
+    private List<PositionCodePaths> positionCodePath;
+    private String clientCode = "";
+    private String tokenCode = "";
+    private String ctnrTyp = "";
+    private String ctnrNum = "";
+    private String wbCode = "";
+    private String podCode = "";
+    private String podDir = "";
+    private String podTyp = "";
+    private String materialLot = "";
+    private String priority = "";
+    private String taskCode;
+    private String agvCode = "";
+    private String data = "";
+
+    @Data
+    public static class PositionCodePaths{
+        private String positionCode;
+        private String type;
+
+        public PositionCodePaths(String positionCode, String type){
+            this.positionCode = positionCode;
+            this.type = type;
+
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java b/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java
new file mode 100644
index 0000000..817a561
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/HIKApiDTO.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class HIKApiDTO {
+    /**
+     * 婧愮珯
+     */
+    private String org;
+    /**
+     * 婧愮珯绫诲瀷
+     */
+    private String orgType;
+    /**
+     * 鐩爣绔�
+     */
+    private String tar;
+    /**
+     * 鐩爣绔欑被鍨�
+     */
+    private String tarType;
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    private String taskType;
+    /**
+     * 瀹瑰櫒绫诲瀷
+     */
+    private String ctnrType;
+    /**
+     * 浼樺厛绾�
+     */
+    private String priority;
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java b/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java
new file mode 100644
index 0000000..7aa7104
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/result/HIKResultDTO.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.entity.result;
+
+import lombok.Data;
+
+@Data
+public class HIKResultDTO {
+    private boolean success = false;
+    private String message;
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 2455c90..e0b38c2 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -8,6 +8,7 @@
 import com.zy.asrs.entity.param.*;
 
 import java.util.Date;
+import java.util.Map;
 
 public interface MobileService {
 
@@ -99,4 +100,6 @@
      * @version 1.0
      */
     R OutCallAgv(AgvCallParams params, Long userId);
+
+    R callEmptyCar(AgvCallParams params);
 }
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 2c9a489..5587732 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,13 +8,16 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
-import com.zy.asrs.enums.CommonEnum;
+import com.zy.asrs.entity.result.ForwardAGVTaskDTO;
+import com.zy.asrs.entity.result.HIKApiDTO;
+import com.zy.asrs.entity.result.HIKResultDTO;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.common.constant.HIKApiConstant;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
@@ -1272,6 +1275,31 @@
         return R.ok();
     }
 
+    @Override
+    public R callEmptyCar(AgvCallParams params) {
+
+        List<LocCache> locSts = locCacheService.selectList(new EntityWrapper<LocCache>().eq("loc_sts", LocStsType.LOC_STS_TYPE_D.type));
+        if (locSts.isEmpty()){
+            throw new CoolException("鏆傛棤绌烘澘搴撲綅");
+        }
+
+        HIKApiDTO hikApiDTO =new HIKApiDTO()
+                .setOrg(locSts.get(0).getLocNo())
+                .setOrgType("05")
+                .setTar(params.getTarSite())
+                .setTarType("05")
+                .setTaskType("GT5")
+                .setPriority("1")
+                .setCtnrType("2")
+                ;
+        HIKResultDTO hikResultDTO = sendAgvTask(hikApiDTO, HIKApiConstant.AGV_CALL_IN_PATH);
+        if (!hikResultDTO.isSuccess()){
+            return R.error(hikResultDTO.getMessage());
+        }
+
+        return R.ok();
+    }
+
     /**
      * @author Ryan
      * @date 2025/9/25
@@ -1429,4 +1457,58 @@
             throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
         }
     }
+
+
+    public HIKResultDTO sendAgvTask(HIKApiDTO haiKangApiDTO,String path){
+        HIKResultDTO result = new HIKResultDTO();
+
+        ForwardAGVTaskDTO forwardAGVTaskParam = new ForwardAGVTaskDTO();
+        forwardAGVTaskParam.setReqCode(UUID.randomUUID().toString().replace("-", ""));
+        forwardAGVTaskParam.setClientCode("IWMS");
+        forwardAGVTaskParam.setTaskTyp(haiKangApiDTO.getTaskType());
+        forwardAGVTaskParam.setCtnrTyp(haiKangApiDTO.getCtnrType());
+        forwardAGVTaskParam.setPriority(haiKangApiDTO.getPriority());
+        List<ForwardAGVTaskDTO.PositionCodePaths> positionCodePathsList = new ArrayList<>();
+        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType()));
+        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType()));
+        forwardAGVTaskParam.setPositionCodePath(positionCodePathsList);
+
+        String body = JSON.toJSONString(forwardAGVTaskParam);
+        String response = "";
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(HIKApiConstant.AGV_IP)
+                    .setPath(path)
+                    .setJson(body)
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger("code").equals(0)) {
+                result.setSuccess(true);
+            } else {
+                result.setMessage(jsonObject.getString("message"));
+                log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIKApiConstant.AGV_IP + path, body, response);
+            }
+//            {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
+        } catch (Exception e) {
+            result.setMessage(e.getMessage());
+            log.error("鍙戦�乤gv浠诲姟寮傚父", e);
+        } finally {
+            try {
+                // 淇濆瓨鎺ュ彛鏃ュ織
+                apiLogService.save(
+                        "鍙戦�乤gv浠诲姟",
+                        HIKApiConstant.AGV_IP + path,
+                        null,
+                        "127.0.0.1",
+                        body,
+                        response,
+                        result.isSuccess()
+                );
+            } catch (Exception e) {
+                log.error("", e);
+            }
+        }
+        return result;
+    }
 }
diff --git a/src/main/java/com/zy/common/constant/HIKApiConstant.java b/src/main/java/com/zy/common/constant/HIKApiConstant.java
new file mode 100644
index 0000000..88d1d7f
--- /dev/null
+++ b/src/main/java/com/zy/common/constant/HIKApiConstant.java
@@ -0,0 +1,15 @@
+package com.zy.common.constant;
+
+
+public class HIKApiConstant {
+
+    // AGV IP鍦板潃
+    public static final String AGV_IP = "10.0.100.110:8182";
+
+    // 鍏ュ簱鍛煎彨AGV鍙栬揣
+    public static final String AGV_CALL_IN_PATH = "/rcms/services/rest/hikRpcService/genAgvSchedulingTask";
+
+    // AGV缁戝畾浠撲綅
+    public static final String AGV_BIND_PATH = "/rcms/services/rest/hikRpcService/bindCtnrAndBin";
+
+}

--
Gitblit v1.9.1