shjung hace 11 meses
padre
commit
df48a8cfd5

+ 70 - 0
src/main/java/com/its/rota/server/controller/ItsRotaServerController.java

@@ -0,0 +1,70 @@
+package com.its.rota.server.controller;
+
+import com.its.rota.server.dto.CenterDto;
+import com.its.rota.server.dto.NET;
+import com.its.rota.server.repository.ApplicationRepository;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/info")
+public class ItsRotaServerController {
+
+    private final ApplicationRepository repo;
+
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public String info() {
+        String sep = System.getProperty("line.separator");
+        String heading = "---------------------------------------------------------------------------------------------------------";
+
+        CenterDto center = ApplicationRepository.center;
+
+        StringBuilder sb = new StringBuilder();
+        sb.append(heading + sep);
+        sb.append("ITS Rota Server Running Information" + sep);
+        sb.append(heading + sep);
+        sb.append(String.format("%s, %s:%d, Traffic Time: %s",
+                center.getCenterId(), center.getIpAddress(), center.getCommPort(), ApplicationRepository.checkTrafficTime) + sep);
+        sb.append(heading + sep);
+        sb.append(String.format("%s %-15.15s %-8.8s %-20.20s %-20.20s %-20.20s %7s %s",
+                "---", "IP Address", "Network",
+                "Connect Time", "Disconnect Time",
+                "Last Send Time", "Count", "Center Name") + sep);
+        sb.append(heading + sep);
+        int total = 0;
+        int onLine = 0;
+        List<String> keySet = new ArrayList<>(this.repo.getCenterMap().keySet());
+        Collections.sort(keySet);
+        for (String key : keySet) {
+            CenterDto region = this.repo.getCenterMap().get(key);
+            if (region == null) {
+                continue;
+            }
+            total++;
+            String commStatus = "Closed";
+            if (region.getNetState().getState() != NET.CLOSED) {
+                commStatus = "Connect";
+                onLine++;
+            }
+            sb.append(String.format("%s %-15.15s %-8.8s %-20.20s %-20.20s %-20.20s %7d %s",
+                    region.getCenterId(), region.getIpAddress(), commStatus,
+                    region.getNetState().getConnectTimeString(), region.getNetState().getDisconnectTimeString(),
+                    region.getTraffic().getLastSendTime(), region.getTraffic().getTotalSends(),
+                    region.getCenterInfo()) + sep);
+
+        }
+        sb.append(heading + sep);
+        sb.append(String.format("Total : %d, OnLine(Connect): %d", total, onLine) + sep);
+        sb.append(heading + sep);
+        return sb.toString();
+    }
+
+
+}

+ 10 - 0
src/main/java/com/its/rota/server/dto/SendTrafficInfo.java

@@ -1,5 +1,6 @@
 package com.its.rota.server.dto;
 
+import com.its.app.common.utils.SysUtils;
 import lombok.Data;
 
 @Data
@@ -9,8 +10,17 @@ public class SendTrafficInfo {
     private long sendTime;
     private int sendIdx;
 
+    private String lastSendTime = "----/--/-- --:--:--";
+    private int totalSends;
+
     public void init(long baseTime) {
         this.baseTime = baseTime;
         this.sendIdx = 0;
+        this.totalSends = 0;
+    }
+
+    public void setSendData(int sends) {
+        this.lastSendTime = SysUtils.getSysTime();
+        this.totalSends += sends;
     }
 }

+ 1 - 0
src/main/java/com/its/rota/server/repository/ApplicationRepository.java

@@ -36,6 +36,7 @@ public class ApplicationRepository {
     public static final AttributeKey<CenterDto> CENTER_ATTRIBUTE_KEY = AttributeKey.valueOf("centerInfo");
     public static final CenterDto center = new CenterDto();
     public static List<TbTrafficCenter> traffics = new ArrayList<>();
+    public static String checkTrafficTime = "";
 
     private final HashMap<String, CenterDto> centerMap = new HashMap<>();
     private final HashMap<String, CenterDto> ipAddressMap = new HashMap<>();

+ 3 - 5
src/main/java/com/its/rota/server/service/ItsRotaServerService.java

@@ -32,10 +32,8 @@ public class ItsRotaServerService {
     private final IncidentMapper incidentMapper;
     private final TrafficMapper mapper;
     private boolean isRunning = false;
-    private String checkTrafficTime = "";
     private boolean isRunningCheckIncident = false;
 
-
     @PostConstruct
     private void init() {
         log.info("ItsRotaServerService.init: start.");
@@ -73,13 +71,13 @@ public class ItsRotaServerService {
             List<TbCheckTraffic> result = this.mapper.selCheckTraffic();
             if (!result.isEmpty()) {
                 String trafficTime = result.get(0).getRegDate();
-                log.info("ItsRotaServerService.checkSendTraffic: checkTrafficTime: {}, currTrafficTime: {}.", this.checkTrafficTime, trafficTime);
-                if (!this.checkTrafficTime.equals(trafficTime)) {
+                log.info("ItsRotaServerService.checkSendTraffic: checkTrafficTime: {}, currTrafficTime: {}.", ApplicationRepository.checkTrafficTime, trafficTime);
+                if (!ApplicationRepository.checkTrafficTime.equals(trafficTime)) {
                     resetCenterTrafficSend();
                     elapsed1.reset();
                     List<TbTrafficCenter> traffics = this.mapper.selTrafficCenter();
                     log.info("ItsRotaServerService.selTrafficCenter: {} EA. {}", traffics.size(), Elapsed.elapsedTimeStr(elapsed1.nanoSeconds()));
-                    this.checkTrafficTime = trafficTime;
+                    ApplicationRepository.checkTrafficTime = trafficTime;
 
                     ApplicationRepository.traffics = traffics;
 

+ 3 - 0
src/main/java/com/its/rota/server/xnet/server/process/request/AiPublicationTraffic.java

@@ -63,6 +63,9 @@ public class AiPublicationTraffic {
             c2c.setPdu(pdus);
 
             result = center.sendData(c2c, "AI_Publication-CurrentLinkState");
+            if (result) {
+                center.getTraffic().setSendData(lists.getCurrentLinkState().size());
+            }
         }
         catch (Exception e) {
             log.error("AiPublicationTraffic.run: [{}, {}]. Packet send Exception. will be closed. {}", center.getLogKey(), center.getIpAddress(), e.getMessage());