shjung há 10 meses atrás
pai
commit
3abbee89e4

+ 45 - 47
src/main/java/com/ggits/comm/server/dto/IntStatusDto.java

@@ -56,46 +56,43 @@ public class IntStatusDto implements Serializable {
     @Getter
     private byte[] kafkaData;
 
-    // nodeid       4
-    // status       1   //교차로 상태(0: 통신이상, 1: 정상, 2: 점멸, 3: 소등, 4: 수동진행, 5: 현시유지)
-    // time         4
-    // oper Mode    1   //제어기 운영모드 코드(0:SCU 고정주기 모드, 1:감응하지 않는 OFFLINE 제어모드, 2:감응되는 OFFLINE 제어모드, 4:감응되는 온라인 제어모드, 5:감응하지 않는 온라인 제어모드)
-    // a ring phase 1   //RING A의 PHASE (0 ~ 7)
-    // b ring phase 1   //RING B의 PHASE (0 ~ 7)
-    // mapNodeId    1   //맵 번호( 0 : 일반제, 1~5: 시차제, 6 : 전용맵)
-    // reserved     7   //reserved
-
-//    nodeid                        4
-//    time                          4
-//    version                       1   // 1, 2
-//    COMM_ON_OFF_FLAG	            1   N	CHAR(1)	    Y			통신 ON/OFF 여부(0: 정상, 1: 통신 FAIL)
-//    CONTRLR_OPER_MODE_CD	        1   N	CHAR(1)	    Y			제어기 운영모드 코드(0:SCU 고정주기 모드, 1:감응하지 않는 OFFLINE 제어모드, 2:감응되는 OFFLINE 제어모드, 4:감응되는 온라인 제어모드, 5:감응하지 않는 온라인 제어모드)
-//    A_RING_PHASE_VAL	            1   N	NUMBER(3)	Y			A 링 현시값(0~7)
-//    B_RING_PHASE_VAL	            1   N	NUMBER(3)	Y			B 링 현시값(0~7)
-//    SIGLIGHT_TURNOFF_FLAG	        1   N	CHAR(1)	    Y			신호등 소등 여부(1: 소등, 0: 정상)
-//    SIGLIGHT_BLINK_FLAG	        1   N	CHAR(1)	    Y			신호등 점멸 여부(1: 점멸, 0: 정상)
-//    CONTRLR_MANUAL_FLAG	        1   N	CHAR(1)	    Y			제어기 수동 여부(1 : ON(수동),  0 : OFF(자동))
-//    CONTRLR_TMDIFF_CONTRL_FLAG    1	N	CHAR(1)	    Y			제어기 시차 제어 여부(시차제 좌회전 여부 1: 수행중, 0: 수행 안함)
-//    MAP_NO	                    1   N	NUMBER(1)	Y			맵 번호( 0 : 일반제, 1~5: 시차제, 6 : 전용맵)
-//    INT_SIG_CYCLE_CNT	            1   N	NUMBER(3)	Y			교차로 신호 주기 카운트
-//    INT_SIG_CYCLE_LEN	            1   N	NUMBER(3)	Y			교차로 신호 주기 값
-//    A_RING_1_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 1현시값
-//    A_RING_2_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 2현시값
-//    A_RING_3_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 3현시값
-//    A_RING_4_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 4현시값
-//    A_RING_5_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 5현시값
-//    A_RING_6_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 6현시값
-//    A_RING_7_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 7현시값
-//    A_RING_8_PHASE_VAL	        1   N	NUMBER(3)	Y			A링 8현시값
-//    B_RING_1_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 1현시값
-//    B_RING_2_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 2현시값
-//    B_RING_3_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 3현시값
-//    B_RING_4_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 4현시값
-//    B_RING_5_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 5현시값
-//    B_RING_6_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 6현시값
-//    B_RING_7_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 7현시값
-//    B_RING_8_PHASE_VAL	        1   N	NUMBER(3)	Y			B링 8현시값
-//    PPC_CONTRL_FLAG	            1   N	CHAR(1)	    Y			PPC제어여부(0: PPC Disable 1: PPC Enabled)
+
+//노드 ID       제어기 번호(노드 ID)                                             4  BYTE
+//버전          버전정보                                                         1  BYTE
+//                1-운영현시정보 사용, 시차제 좌회전 여부, 주기 주기길이 사용,
+//                2-운영현시정보 사용안함, 교차로 연등, 주기 주기길이 사용안함
+//
+//시각      UTC Time(1970년 1월 1일 0시 0분 0초 이후부터 현재까지 시간-초)       4  BYTE
+//제어기 운영 상태                                                               1  BYTE
+//            7   센터와 통신 FAIL 상태  0 : 정상, 1 : 통신 FAIL
+//            6~4 현재 운영중인 맵 번호 ( 0 : 일반제, 1~5: 시차제, 6 : 전용맵)
+//            3   시차제 좌회전 여부(버전정보 1) 1: 수행중,  0: 수행 안함
+//                교차로 연등(버전정보 2) 1: 연등 교차로, 0: 일반교차로
+//            2~0 교통신호기 운영 모드
+//                0: SCU 고정주기 모드
+//                1: 감응하지 않는 OFFLINE 제어모드
+//                2: 감응되는 OFFLINE 제어모드
+//                4: 감응되는 온라인 제어모드
+//                5: 감응하지 않는 온라인 제어모드
+//A링 현시                                                                       1  BYTE
+//            7~5 RING A의 PHASE (0∼7)
+//            4~0 RING A의 STEP (0∼31)
+//B링 현시                                                                       1  BYTE
+//            7~5 RING B의 PHASE (0∼7)
+//            4~0 RING B의 STEP (0∼31)
+//제어기 상태                                                                    1  BYTE
+//            7   POLICE PANEL 수동진행S/W상태 (1: ON,  0: OFF)
+//            6   POLICE PANEL 수동 S/W 상태 (1: ON,  0: OFF)
+//            5   POLICE PANEL 점멸 S/W 상태 (1: ON,  0: OFF)
+//            4   POLICE PANEL 소등 S/W 상태 (1: ON,  0: OFF)
+//            3   모순 상태 (1: 모순, 0: 정상)
+//            2   소등 상태 (1: 소등, 0: 정상)
+//            1   점멸 상태 (1: 점멸, 0: 정상)
+//            0   PPC 제어 상태 (0: PPC Disable  1: PPC Enabled)
+//주기Count 주기 Count(초), 버전정보가 1인 경우 정보가 유효함                             1  BYTE
+//주기 길이 현재 주기의 길이(초), 버전정보가 1인 경우 정보가 유효함                       1  BYTE
+//운영 현시 운영현시(A Ring 8 BYTE + B Ring 8 BYTE), 버전정보가 1인 경우 정보가 유효함    16 BYTE
+
 
     public IntStatusDto(String regionCd, int intNo, long nodeId) {
         this.regionCd = regionCd;
@@ -103,10 +100,10 @@ public class IntStatusDto implements Serializable {
         this.nodeId = nodeId;
         this.kafkaData = new byte[MAX_KAFKA_DATA_SIZE];
 
-        this.kafkaData[0] = (byte)((nodeId      ) & 0x000000FF);
-        this.kafkaData[1] = (byte)((nodeId >> 8 ) & 0x000000FF);
-        this.kafkaData[2] = (byte)((nodeId >> 16) & 0x000000FF);
-        this.kafkaData[3] = (byte)((nodeId >> 24) & 0x000000FF);
+        this.kafkaData[0] = (byte)((nodeId >> 24) & 0x000000FF);
+        this.kafkaData[1] = (byte)((nodeId >> 16) & 0x000000FF);
+        this.kafkaData[2] = (byte)((nodeId >> 8 ) & 0x000000FF);
+        this.kafkaData[3] = (byte)((nodeId      ) & 0x000000FF);
         this.kafkaData[4] = (byte)0x02;
 
         initStatus(0);
@@ -147,10 +144,11 @@ public class IntStatusDto implements Serializable {
         this.PPC_CONTRL_FLAG    = "0";         //	N	CHAR(1)	Y
 
         int idx = 5;
-        this.kafkaData[idx++] = (byte)((unixTimestamp      ) & 0x000000FF);
-        this.kafkaData[idx++] = (byte)((unixTimestamp >> 8 ) & 0x000000FF);
-        this.kafkaData[idx++] = (byte)((unixTimestamp >> 16) & 0x000000FF);
         this.kafkaData[idx++] = (byte)((unixTimestamp >> 24) & 0x000000FF);
+        this.kafkaData[idx++] = (byte)((unixTimestamp >> 16) & 0x000000FF);
+        this.kafkaData[idx++] = (byte)((unixTimestamp >> 8 ) & 0x000000FF);
+        this.kafkaData[idx++] = (byte)((unixTimestamp      ) & 0x000000FF);
+
         for (int ii = idx; ii < MAX_KAFKA_DATA_SIZE; ii++) {
             this.kafkaData[ii] = (byte)0x00;
         }

+ 7 - 7
src/main/java/com/ggits/comm/server/process/dbms/DbmsDataProcess.java

@@ -95,13 +95,13 @@ public class DbmsDataProcess {
                     }
                     List<IntStatusDto> intStatusLists = (List<IntStatusDto>)data.getData();
                     cnt = this.sigIntDao.updateStatus(intStatusLists);
-                    log.info("INT_STATUS_UPDATE: [{}, {}], {}",
-                            data.getRegionCd(), data.getRegionId(),
-                            String.format("%4d/%4d EA. Pop(%5d)/Parsing(%5d)/Dbms(%5d)/Total(%5d) ms.",
-                                    intStatusLists.size(), cnt,
-                                    data.getPopTimestamp(), data.getParsingTimestamp(),
-                                    System.currentTimeMillis() - start,
-                                    System.currentTimeMillis() - data.getTimestamp()));
+//                    log.info("INT_STATUS_UPDATE: [{}, {}], {}",
+//                            data.getRegionCd(), data.getRegionId(),
+//                            String.format("%4d/%4d EA. Pop(%5d)/Parsing(%5d)/Dbms(%5d)/Total(%5d) ms.",
+//                                    intStatusLists.size(), cnt,
+//                                    data.getPopTimestamp(), data.getParsingTimestamp(),
+//                                    System.currentTimeMillis() - start,
+//                                    System.currentTimeMillis() - data.getTimestamp()));
 
                     intStatusLists.clear();
                     break;

+ 2 - 2
src/main/java/com/ggits/comm/server/process/work/GgitsPacketWorker.java

@@ -160,9 +160,9 @@ public class GgitsPacketWorker extends AbstractAppWorker implements Runnable {
                           ((data.buffer[idx++] & 0xFF) << 8)  |
                            (data.buffer[idx++] & 0xFF);
 
+                operStts  = data.buffer[idx++] & 0xFF;
                 aRingCode = data.buffer[idx++] & 0xFF;
                 bRingCode = data.buffer[idx++] & 0xFF;
-                operStts  = data.buffer[idx++] & 0xFF;
                 lcStts    = data.buffer[idx++] & 0xFF;
                 holdPhase = data.buffer[idx++] & 0xFF;
                 omitPhase = data.buffer[idx++] & 0xFF;
@@ -240,7 +240,7 @@ public class GgitsPacketWorker extends AbstractAppWorker implements Runnable {
                     status.CONTRLR_MANUAL_FLAG = manualFlag;                    // 제어기 수동 여부(1 : ON(수동),  0 : OFF(자동))
                     status.PPC_CONTRL_FLAG = ppcControl;                        // PPC제어여부(0: PPC Disable 1: PPC Enabled)
 
-                    if (intDto.getNodeId() > 0) {
+                    if (intDto.getNodeId() > 1000000000) {
                         status.setOperStatus(operStts);
                         status.setPhase(aRingCode, aRingStep, bRingCode, bRingStep, holdPhase);
                         status.setStatus(lcStts, holdPhase);