From e9e8c6915e0f46d4ee9d4b0c8e0d7da77e35bba5 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 02 二月 2026 13:59:53 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/wms/TaskReportService.java                  |  110 +++++++++++++++++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/SiemensConveyorStationService.java |   18 +---
 zy-acs-manager/src/main/resources/application.yml                                                          |    7 +
 version/doc/RCS开发进度表.xlsx                                                                                  |    0 
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/HttpGo.java                                   |   10 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConveyorProperties.java                      |   26 +-----
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/UplinkProperties.java                        |   38 +++++++++
 7 files changed, 175 insertions(+), 34 deletions(-)

diff --git "a/version/doc/RCS\345\274\200\345\217\221\350\277\233\345\272\246\350\241\250.xlsx" "b/version/doc/RCS\345\274\200\345\217\221\350\277\233\345\272\246\350\241\250.xlsx"
index d60d657..510f983 100644
--- "a/version/doc/RCS\345\274\200\345\217\221\350\277\233\345\272\246\350\241\250.xlsx"
+++ "b/version/doc/RCS\345\274\200\345\217\221\350\277\233\345\272\246\350\241\250.xlsx"
Binary files differ
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConveyorProperties.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConveyorProperties.java
index 438e4f2..bcdaba6 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConveyorProperties.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/ConveyorProperties.java
@@ -1,5 +1,6 @@
 package com.zy.acs.manager.common.config;
 
+import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
@@ -10,6 +11,7 @@
  * 杈撻�佺嚎plc绯荤粺閰嶇疆
  * Created by luxiaotao on 2018/10/15
  */
+@Data
 @Configuration
 @ConfigurationProperties(prefix = "convey-plc")
 public class ConveyorProperties {
@@ -28,27 +30,7 @@
 
     private Integer port;
 
-    public static String getHostName() {
-        return HOST_NAME;
-    }
+    // millisecond
+    private Integer timeout = 15 * 1000;
 
-    public static void setHostName(String hostName) {
-        HOST_NAME = hostName;
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    public void setHost(String host) {
-        this.host = host;
-    }
-
-    public Integer getPort() {
-        return port;
-    }
-
-    public void setPort(Integer port) {
-        this.port = port;
-    }
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/UplinkProperties.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/UplinkProperties.java
new file mode 100644
index 0000000..7efae5d
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/UplinkProperties.java
@@ -0,0 +1,38 @@
+package com.zy.acs.manager.common.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * 涓婃父鏈嶅姟绯荤粺閰嶇疆
+ * Created by luxiaotao on 2018/10/15
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "uplink")
+public class UplinkProperties {
+
+    public static String HOST_NAME;
+
+    static {
+        try {
+            HOST_NAME = InetAddress.getLocalHost().getHostName();
+        } catch (UnknownHostException e) {
+            System.err.println("find hostname err");
+        }
+    }
+
+    private Boolean enabled;
+
+    private String host;
+
+    private Integer port;
+
+    // millisecond
+    private Integer timeout = 60 * 1000;
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/HttpGo.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/HttpGo.java
index 0bc5e84..73f1d69 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/HttpGo.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/utils/HttpGo.java
@@ -264,6 +264,16 @@
         }
     }
 
+    // ======================== tools ========================
+    public String buildUrl(String host, Integer port, String path) {
+        return buildUrl(host, port, path, false);
+    }
+
+    public String buildUrl(String host, Integer port, String path, boolean ssl) {
+        String p = (path == null) ? "" : (path.startsWith("/") ? path : ("/" + path));
+        return (ssl ? "https" : "http") + "://" + host + ":" + port + p;
+    }
+
     // ===================== Demo (main) =====================
 
     public static void main(String[] args) throws Exception {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/SiemensConveyorStationService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/SiemensConveyorStationService.java
index 05a08f7..6185045 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/SiemensConveyorStationService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/conveyor/SiemensConveyorStationService.java
@@ -33,20 +33,22 @@
 
     @PostConstruct
     public void init() {
+        int timeoutSeconds = conveyorProperties.getTimeout() / 1000;
         this.http = HttpGo.builder()
-                .connectTimeout(Duration.ofSeconds(8))
-                .readTimeout(Duration.ofSeconds(15))
+                .connectTimeout(Duration.ofSeconds(timeoutSeconds))
+                .readTimeout(Duration.ofSeconds(timeoutSeconds))
 //                .defaultHeader("User-Agent", "HttpGo/1.0")
-                // .trustAllSsl(true) // ONLY if you really need it (self-signed internal)
+//                .trustAllSsl(true) // ONLY if you really need it (self-signed internal)
                 .build();
     }
+
 
     @Override
     public boolean allowAgvWork(Sta sta, Task task, Segment seg, StaReserveType type) {
         final String staNo = sta.getStaNo();
 
         // url
-        String url = this.buildUrl("/cv/station/query");
+        String url = this.http.buildUrl(conveyorProperties.getHost(), conveyorProperties.getPort(), "/cv/station/query");
         // headers
         Map<String, String> headers = new HashMap<>();
         // params
@@ -104,14 +106,6 @@
         }
         // ok
         return true;
-    }
-
-    private String buildUrl(String path) {
-        String host = conveyorProperties.getHost();
-        Integer port = conveyorProperties.getPort();
-
-        String p = (path == null) ? "" : (path.startsWith("/") ? path : ("/" + path));
-        return "http://" + host + ":" + port + p;
     }
 
     private HttpResult<List<ConveyorStaDto>> postForResult(String url
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/wms/TaskReportService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/wms/TaskReportService.java
new file mode 100644
index 0000000..6a7b56b
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/integrate/wms/TaskReportService.java
@@ -0,0 +1,110 @@
+package com.zy.acs.manager.core.integrate.wms;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.zy.acs.framework.common.Cools;
+import com.zy.acs.framework.common.R;
+import com.zy.acs.manager.common.config.UplinkProperties;
+import com.zy.acs.manager.common.utils.HttpGo;
+import com.zy.acs.manager.core.integrate.dto.HttpResult;
+import com.zy.acs.manager.core.service.ThreadPoolRegulator;
+import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.service.TaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+@Slf4j
+@Service
+public class TaskReportService {
+
+    @Autowired
+    private UplinkProperties uplinkProperties;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private ThreadPoolRegulator threadPoolRegulator;
+
+    private HttpGo http;
+
+    @PostConstruct
+    public void init() {
+        int timeoutSeconds = uplinkProperties.getTimeout() / 1000;
+        this.http = HttpGo.builder()
+                .connectTimeout(Duration.ofSeconds(timeoutSeconds))
+                .readTimeout(Duration.ofSeconds(timeoutSeconds))
+//                .defaultHeader("User-Agent", "HttpGo/1.0")
+//                .trustAllSsl(true) // ONLY if you really need it (self-signed internal)
+                .build();
+    }
+
+    public boolean reportFinished(Task task) {
+        // block
+//        Future<R> future = threadPoolRegulator.getInstance().submit(() -> {
+//            mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true);
+//            return success();
+//        });
+//        System.out.println(JSON.toJSONString(future.get()));
+
+        // non-block
+        CompletableFuture<?> completableFuture = CompletableFuture.supplyAsync(() -> {
+//            mapDataDispatcher.modifyDynamicMatrix(null, null, param.getAgvNo(), true);
+//            avoidWaveCalculator.calcDynamicNodeByVehicle(agv, null);
+            return R.ok();
+        }, threadPoolRegulator.getInstance());
+
+        // url
+        String url = this.http.buildUrl(uplinkProperties.getHost(), uplinkProperties.getPort(), "/cv/station/query");
+        // headers
+        Map<String, String> headers = new HashMap<>();
+        // params
+        Map<String, Object> params = new HashMap<>();
+
+        HttpResult<?> result;
+        try {
+            result = postForResult(url, headers, params);
+            Integer code = result.getCode();
+            if (null == code || 200 != code) {
+                return false;
+            }
+            Object data = result.getData();
+            if (Cools.isEmpty(data)) {
+                return false;
+            }
+        } catch (Exception e) {
+            log.error("");
+            return false;
+        }
+        return true;
+    }
+
+    private HttpResult<?> postForResult(String url
+            , Map<String, String> headers, Map<String, Object> params) throws Exception {
+        String json = JSON.toJSONString(params);
+        HttpGo.HttpResponse response = this.http.postJson(url, headers, json);
+
+        int status = response.statusCode();
+        if (status != 200) {
+            throw new RuntimeException("Uplink HTTP error: status=" + status + ", body=" + response.body());
+        }
+
+        String body = response.body();
+        if (Cools.isEmpty(body)) {
+            throw new RuntimeException("Uplink empty response body.");
+        }
+
+        HttpResult<?> result = JSON.parseObject(body, new TypeReference<HttpResult<?>>() {});
+        if (result == null) {
+            throw new RuntimeException("Uplink parse HttpResult failed: body=" + body);
+        }
+        return result;
+    }
+
+
+}
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index 94987b1..1b15456 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -53,6 +53,13 @@
 convey-plc:
   host: 10.10.10.222
   port: 9090
+  timeout: 15000
+
+uplink:
+  enabled: true
+  host: 10.10.10.222
+  port: 9090
+  timeout: 30000
 
 floyd:
   enable: false

--
Gitblit v1.9.1