shjung пре 11 месеци
родитељ
комит
1ede06973d

+ 69 - 0
src/main/java/com/its/rota/client/controller/ItsRotaClientController.java

@@ -0,0 +1,69 @@
+package com.its.rota.client.controller;
+
+import com.its.rota.client.dto.CenterDto;
+import com.its.rota.client.dto.NET;
+import com.its.rota.client.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 ItsRotaClientController {
+
+    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 Client Running Information" + sep);
+        sb.append(heading + sep);
+        sb.append(String.format("%s, %s", center.getCenterId(), center.getIpAddress()) + 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 Recv Time", "Count", "Center Name") + sep);
+        sb.append(heading + sep);
+        int total = 0;
+        int onLine = 0;
+        List<String> keySet = new ArrayList<>(this.repo.getRegionCenterMap().keySet());
+        Collections.sort(keySet);
+        for (String key : keySet) {
+            CenterDto region = this.repo.getRegionCenterMap().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().getLastRecvTime(), region.getTraffic().getTotalRecv(),
+                    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();
+    }
+
+
+}

+ 5 - 1
src/main/java/com/its/rota/client/dto/CenterDto.java

@@ -1,6 +1,5 @@
 package com.its.rota.client.dto;
 
-import com.beanit.enums.eAuthInfo;
 import com.beanit.its.C2CAuthenticatedMessage;
 import com.beanit.utils.ItsAsnSequence;
 import io.netty.channel.ChannelFuture;
@@ -35,6 +34,9 @@ public class CenterDto implements Serializable {
     private ItsAsnSequence seq;
     private NetState netState;
 
+    private RecvTrafficInfo traffic;
+    private RecvIncidentInfo incident;
+
     public void setCenter(CenterDto dto) {
         this.idx = dto.getIdx();
         this.centerId = dto.getCenterId();
@@ -49,6 +51,8 @@ public class CenterDto implements Serializable {
         this.commLogging = dto.isCommLogging();
         this.seq = new ItsAsnSequence();
         this.netState = new NetState();
+        this.traffic = new RecvTrafficInfo();
+        this.incident = new RecvIncidentInfo();
     }
     public String getLogKey() {
         return this.centerId;

+ 25 - 0
src/main/java/com/its/rota/client/dto/RecvIncidentInfo.java

@@ -0,0 +1,25 @@
+package com.its.rota.client.dto;
+
+import com.its.app.common.utils.SysUtils;
+import lombok.Data;
+
+@Data
+public class RecvIncidentInfo {
+
+    private long baseTime;
+    private long recvTime;
+    private int recvIdx;
+
+    private String lastRecvTime = "----/--/-- --:--:--";
+    private int totalRecv;
+
+    public RecvIncidentInfo() {
+        this.baseTime = System.currentTimeMillis();
+        this.totalRecv = 0;
+    }
+
+    public void setRecvData(int recvCount) {
+        this.lastRecvTime = SysUtils.getSysTime();
+        this.totalRecv = recvCount;
+    }
+}

+ 29 - 0
src/main/java/com/its/rota/client/dto/RecvTrafficInfo.java

@@ -0,0 +1,29 @@
+package com.its.rota.client.dto;
+
+import com.its.app.common.utils.SysUtils;
+import lombok.Data;
+
+@Data
+public class RecvTrafficInfo {
+
+    private long baseTime;
+    private long recvTime;
+    private int recvIdx;
+
+    private String lastRecvTime = "----/--/-- --:--:--";
+    private int totalRecv;
+
+    public RecvTrafficInfo() {
+        init(System.currentTimeMillis());
+    }
+    public void init(long baseTime) {
+        this.baseTime = baseTime;
+        this.recvIdx = 0;
+        this.totalRecv = 0;
+    }
+
+    public void setRecvData(int recvCount) {
+        this.lastRecvTime = SysUtils.getSysTime();
+        this.totalRecv = recvCount;
+    }
+}

+ 4 - 0
src/main/java/com/its/rota/client/entity/TbCenter.java

@@ -3,6 +3,8 @@ package com.its.rota.client.entity;
 import com.beanit.utils.ItsAsnSequence;
 import com.its.rota.client.dto.CenterDto;
 import com.its.rota.client.dto.NetState;
+import com.its.rota.client.dto.RecvIncidentInfo;
+import com.its.rota.client.dto.RecvTrafficInfo;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -39,6 +41,8 @@ public class TbCenter {
                 .commLogging(false)
                 .seq(new ItsAsnSequence())
                 .netState(new NetState())
+                .traffic(new RecvTrafficInfo())
+                .incident(new RecvIncidentInfo())
                 .build();
     }
 }

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

@@ -155,7 +155,7 @@ public class ApplicationRepository {
                 if (dto.getHeartBeat() > 300) {
                     dto.setHeartBeat(300);
                 }
-                if (!"L99".equals(dto.getCenterId())) continue;
+//                if (!"L99".equals(dto.getCenterId())) continue;
                 this.regionCenterMap.put(dto.getCenterId(), dto);
             }
         }

+ 2 - 0
src/main/java/com/its/rota/client/xnet/client/process/response/CurrentLinkStateResponse.java

@@ -89,6 +89,7 @@ public class CurrentLinkStateResponse implements ItsAsnResponse {
             if (!list.isEmpty()) {
                 this.dbmsDataProcess.add(new DbmsData(this.center, DbmsData.DBMS_DATA_RCV_LINK_TRAFFIC, this.regDate, list));
             }
+            this.center.getTraffic().setRecvData(list.size());
 //            for (CurrentLinkState obj : list) {
 //            }
         }
@@ -101,6 +102,7 @@ public class CurrentLinkStateResponse implements ItsAsnResponse {
             if (!list.isEmpty()) {
                 this.dbmsDataProcess.add(new DbmsData(this.center, DbmsData.DBMS_DATA_RCV_INCIDENT, this.regDate, list));
             }
+            this.center.getIncident().setRecvData(list.size());
 //            for (IncidentConditions obj : list) {
 //            }
         }

+ 2 - 0
src/main/java/com/its/rota/client/xnet/client/process/response/IncidentConditionsResponse.java

@@ -89,6 +89,7 @@ public class IncidentConditionsResponse implements ItsAsnResponse {
             if (!list.isEmpty()) {
                 this.dbmsDataProcess.add(new DbmsData(this.center, DbmsData.DBMS_DATA_RCV_LINK_TRAFFIC, this.regDate, list));
             }
+            this.center.getTraffic().setRecvData(list.size());
 //            for (CurrentLinkState obj : list) {
 //            }
         }
@@ -101,6 +102,7 @@ public class IncidentConditionsResponse implements ItsAsnResponse {
             if (!list.isEmpty()) {
                 this.dbmsDataProcess.add(new DbmsData(this.center, DbmsData.DBMS_DATA_RCV_INCIDENT, this.regDate, list));
             }
+            this.center.getIncident().setRecvData(list.size());
 //            for (IncidentConditions obj : list) {
 //            }
         }