shjung 9 сар өмнө
parent
commit
f00a051f64

+ 3 - 0
rota-utic-client/conf/rota-utic-client.yml

@@ -0,0 +1,3 @@
+spring:
+  profiles:
+    active: dev

+ 4 - 0
rota-utic-server/conf/rota-utic-server.yml

@@ -0,0 +1,4 @@
+spring:
+  profiles:
+    active: dev
+

+ 285 - 0
rota-utic-server/reference/DataBase.SQL

@@ -0,0 +1,285 @@
+
+-- db_comm.pc
+
+-- SEL_Center
+
+-- struct
+-- {
+--     char    szID[MAX_FETCH_ROWS][SIZE_CENTER_ID+1];         /* 센터 ID                       */
+--     char    szName[MAX_FETCH_ROWS][SIZE_CENTER_NAME+1];     /* 센터 NAME                     */
+--     char    szCommIP[MAX_FETCH_ROWS][SIZE_CENTER_IP+1];     /* 통신 IP                       */
+--     int     nCommPort[MAX_FETCH_ROWS];                      /* 통신 포트                     */
+--     char    szUser[MAX_FETCH_ROWS][SIZE_CENTER_USER+1];     /* 사용자명                      */
+--     char    szPwd[MAX_FETCH_ROWS][SIZE_CENTER_PWD+1];       /* 사용자비밀번호                */
+--     int     nHeartbeatCycle[MAX_FETCH_ROWS];                /* 허트비트 주기                 */
+--     int     nResTime[MAX_FETCH_ROWS];                       /* 응답시간                      */
+--     int     nDatagramSize[MAX_FETCH_ROWS];                  /* 데이터그램 크기               */
+-- } rec;
+
+/*
+************************************************************************************************
+*  센터 테이블에서 서버 정보를 읽어온다.
+************************************************************************************************
+*/
+SELECT SUBSTR(centerid, 1, 10), SUBSTR(centerinfo, 1, 20),
+       ipaddress, commport, 
+       datexuser, datexpasswd, heartbeatcycle, restime, datagramsize
+  FROM CENTER
+  WHERE centerflag = 'M'
+    AND exeyn = 'Y'
+  ORDER BY centerid;
+
+/*
+************************************************************************************************
+*  센터 테이블에서 클라이언트 정보를 읽어온다.
+************************************************************************************************
+*/
+SELECT SUBSTR(centerid, 1, 10), SUBSTR(centerinfo, 1, 20),
+       ipaddress, commport,
+       datexuser, datexpasswd, heartbeatcycle, restime, datagramsize
+  FROM CENTER
+ WHERE centerflag = 'L'
+   AND exeyn = 'Y'
+ORDER BY centerid;
+
+
+-- db_asnc.pc
+
+-- INS_RcvTraffic
+
+-- struct
+-- {
+--     char  szRegDate[MAX_DB_INS_ROWS][SIZE_DATETIME+1];
+--     char  szFromCenterId[MAX_DB_INS_ROWS][SIZE_CENTER_ID+1];
+--     char  szLinkNumber[MAX_DB_INS_ROWS][SIZE_LINK_ID+1];
+--     char  szToCenterId[MAX_DB_INS_ROWS][SIZE_CENTER_ID+1];
+--     int   nSpeedRate[MAX_DB_INS_ROWS];
+--     int   nTravelTimeQuantity[MAX_DB_INS_ROWS];
+--     int   nDelayQuanity[MAX_DB_INS_ROWS];
+--     int   nDensityRate[MAX_DB_INS_ROWS];
+-- } rec;
+
+INSERT INTO RCV_LINK_TRAFFIC(regdate,
+                             fromcenterid,
+                             linknumber,
+                             tocenterid,
+                             logdate,
+                             speedrate,
+                             traveltimequantity,
+                             delayquanity,
+                             densityrate
+)
+VALUES(TO_DATE(:rec.szRegDate, 'YYYYMMDDHH24MISS'),
+       :rec.szFromCenterId,
+       :rec.szLinkNumber,
+       :rec.szToCenterId,
+       SYSDATE,
+       :rec.nSpeedRate,
+       :rec.nTravelTimeQuantity,
+       :rec.nDelayQuanity,
+       :rec.nDensityRate
+      );
+
+-- INS_RcvIncident
+
+-- struct
+-- {
+--     char  szToCenterId[MAX_DB_ROWS_SMALL][SIZE_CENTER_ID+1];
+--     char  szLinkNumber[MAX_DB_ROWS_SMALL][SIZE_LINK_ID+1];
+--     char  szNodeNumber[MAX_DB_ROWS_SMALL][SIZE_NODE_ID+1];
+--     char  szFromCenterId[MAX_DB_ROWS_SMALL][SIZE_CENTER_ID+1];
+--     char  szContactOrganizationNameText[MAX_DB_ROWS_SMALL][128+1];
+--     int   nDescriptionTypeIncidentCode[MAX_DB_ROWS_SMALL];
+--     char  szDescriptionTypeIncidentOther[MAX_DB_ROWS_SMALL][256+1];
+--     int   nIncidentVehiclesInvolvedCode[MAX_DB_ROWS_SMALL];
+--     char  szIncidentVehiclesInvolvedOther[MAX_DB_ROWS_SMALL][256+1];
+--     int   nIncidentStatusCode[MAX_DB_ROWS_SMALL];
+--     char  szIncidentStatusOther[MAX_DB_ROWS_SMALL][256+1];
+--     int   nUpdateTypeCode[MAX_DB_ROWS_SMALL];
+--     char  szUpdateTypeOther[MAX_DB_ROWS_SMALL][256+1];
+-- } rec;
+
+INSERT INTO RCV_INCIDENT(tocenterid,
+                         link_linkidnumber,
+                         node_nodeidnumber,
+                         logdate,
+                         fromcenterid,
+                         contactorganizationnametext,
+                         descriptiontypeincidentcode,
+                         descriptiontypeincidentother,
+                         incidentvehiclesinvolvedcode,
+                         incidentvehiclesinvolvedother,
+                         incidentstatuscode,
+                         incidentstatusother,
+                         updatetypecode,
+                         updatetypeother,
+                         sendyn)
+VALUES(:rec.szToCenterId,
+       :rec.szLinkNumber,
+       :rec.szNodeNumber,
+       SYSDATE,
+       :rec.szFromCenterId,
+       :rec.szContactOrganizationNameText,
+       :rec.nDescriptionTypeIncidentCode,
+       :rec.szDescriptionTypeIncidentOther,
+       :rec.nIncidentVehiclesInvolvedCode,
+       :rec.szIncidentVehiclesInvolvedOther,
+       :rec.nIncidentStatusCode,
+       :rec.szIncidentStatusOther,
+       :rec.nUpdateTypeCode,
+       :rec.szUpdateTypeOther,
+       'N');
+
+
+-- INS_RcvLog
+INSERT INTO RCV_LOG(logdate, infokind, tocenterid, dupkey, fromcenterid, datacnt)
+VALUES(SYSDATE, :pLog->szInfoKind, :pLog->szToCenterId, NVL(:pLog->szDupKey, 'DupKey'), :pLog->szFromCenterId, :pLog->DataCnt);
+
+-- INS_CenterReceive
+INSERT INTO CENTER_RECEIVE@UTISDB(LOGDATE, CENTERID, INFOTYPE, SEQ, DATACNT)
+VALUES(SYSDATE, :pLog->szFromCenterId, 'R1', :seq, :pLog->DataCnt);
+
+
+-- db_svcp.pc
+
+-- SEL_CheckTraffic
+SELECT TO_CHAR(regdate, 'YYYYMMDDHH24MISS')
+FROM TRAFFIC_CENTER@UTISDB
+WHERE regdate > (SYSDATE - 15/1440)
+  AND ROWNUM < 2;
+
+-- SEL_TrafficCenter
+
+-- struct
+-- {
+--     char    szLinkId[MAX_FETCH_ROWS][SIZE_LINK_ID+1];
+--     int     nSpeed[MAX_FETCH_ROWS];
+--     int     nTravelTime[MAX_FETCH_ROWS];
+--     int     nTrafficGrade[MAX_FETCH_ROWS];
+--     int     nDataResType[MAX_FETCH_ROWS];
+-- } rec;
+
+SELECT linkid,
+       NVL(speed, 0) speed,
+       NVL(traveltime, 0) traveltime,
+       NVL(TO_NUMBER(trafficgrade), 0) trafficgrade,
+       DECODE(datarestype, 'S', 1, 0) datarestype
+FROM TRAFFIC_CENTER@UTISDB
+WHERE regdate > (SYSDATE - 15/1440)
+  AND linklevel = 1
+  AND missvalueyn = 'R'
+--AND datarestype IN ('P', 'G', 'S')
+ORDER BY linkid;
+
+-- INS_SndIncident
+INSERT INTO SND_INCIDENT(tocenterid, link_linkidnumber, logdate, fromcenterid, node_nodeidnumber,
+                         contactorganizationnametext, descriptiontypeincidentcode, descriptiontypeincidentother,
+                         incidentvehiclesinvolvedcode, incidentvehiclesinvolvedother, incidentstatuscode,
+                         incidentstatusother, updatetypecode, updatetypeother, sendyn)
+SELECT '%s',
+        LINK_ID,
+        SYSDATE,
+        '%s',
+        INCIDENT_ID,
+        '경찰청정보연계',
+        TO_NUMBER(INCIDENT_TYPE_CD),
+        SUBSTRB(REPLACE(INCIDENT_TITLE,'::',' '),1,255),
+        TO_NUMBER(INCIDENT_SUBTYPE_CD),
+        SUBSTRB(INCIDENT_DESC,1,255),
+        NVL(TO_NUMBER(SUBSTR(INCIDENT_TYPE_CD,4,2)), 2),
+        TO_CHAR(LOCATION_DATA_X, '000.000000000000')||TO_CHAR(LOCATION_DATA_Y, '00.0000000000000')||ADDRESS_NEW,
+        TO_NUMBER(SUBSTR(INCIDENT_GRADE_CD,5,1)),
+        TO_CHAR(REPORT_DATE, 'YYYYMMDDHH24MISS')||TO_CHAR(START_DATE, 'YYYYMMDDHH24MISS')||TO_CHAR(END_DATE, 'YYYYMMDDHH24MISS'),
+        'N'
+   FROM UTISINCI.TB_IMS_DATA@UTISDB I, CENTER_REGION R
+  WHERE NOT EXISTS (SELECT 'X'
+                      FROM SND_INCIDENT
+                     WHERE I.INCIDENT_ID = node_nodeidnumber
+                       AND tocenterid = '%s')
+                       AND REPORT_DATE > SYSDATE - 720/1440
+                       AND R.centerid = '%s'
+                       AND LENGTH(LINK_ID) = 10
+                       AND LOCATION_DATA_X > 100
+                       AND LOCATION_DATA_Y < 100
+                       AND INCIDENT_GRADE_CD IN ('A0401','A0402')
+                       AND R.regioncd = TO_NUMBER(SUBSTR(LINK_ID, 1, 3)
+                   )
+-- pToCenterId, pFromCenterId, pToCenterId, pToCenterId);
+
+
+-- struct
+-- {
+--     char    szLinkId[MAX_FETCH_ROWS][SIZE_LINK_ID+1];
+--     char    szNodeId[MAX_FETCH_ROWS][SIZE_NODE_ID+1];
+--     char    szContactOrganizationNameText[MAX_FETCH_ROWS][128+1];
+--     int     nDescriptionTypeIncidentCode[MAX_FETCH_ROWS];
+--     char    szDescriptionTypeIncidentOther[MAX_FETCH_ROWS][256+1];
+--     int     nIncidentVehiclesInvolvedCode[MAX_FETCH_ROWS];
+--     char    szIncidentVehiclesInvolvedOther[MAX_FETCH_ROWS][256+1];
+--     int     nIncidentStatusCode[MAX_FETCH_ROWS];
+--     char    szIncidentStatusOther[MAX_FETCH_ROWS][256+1];
+--     int     nUpdateTypeCode[MAX_FETCH_ROWS];
+--     char    szUpdateTypeOther[MAX_FETCH_ROWS][256+1];
+-- } rec;
+
+-- SEL_SndIncident
+SELECT link_linkidnumber, node_nodeidnumber, contactorganizationnametext,
+       descriptiontypeincidentcode, descriptiontypeincidentother,
+       incidentvehiclesinvolvedcode, incidentvehiclesinvolvedother,
+       incidentstatuscode, incidentstatusother,
+       updatetypecode, updatetypeother
+FROM SND_INCIDENT
+WHERE tocenterid = :pToCenterId
+  AND logdate > SYSDATE - 720/1440
+  AND fromcenterid = :pFromCenterId
+  AND sendyn != 'Y'
+  AND ROWNUM < 100;
+
+-- UPD_SndIncident
+UPDATE SND_INCIDENT
+SET sendyn = 'Y'
+WHERE tocenterid = :pToCenterId
+  AND logdate > SYSDATE - 720/1440
+  AND fromcenterid = :pFromCenterId
+  AND sendyn != 'Y'
+  AND ROWNUM < 100;
+
+
+-- INS_SndLog
+INSERT INTO SND_LOG(logdate, infokind, tocenterid, fromcenterid, datacnt)
+VALUES(SYSDATE, :pLog->szInfoKind, :pLog->szToCenterId, :pLog->szFromCenterId, :pLog->DataCnt);
+
+-- INS_CenterSend
+INSERT INTO CENTER_SEND@UTISDB(logdate, centerid, infotype, datacnt)
+VALUES(SYSDATE, :pLog->szToCenterId, :pInfoType, :pLog->DataCnt);
+
+-- DEL_CheckIncident
+DELETE SND_INCIDENT S
+WHERE EXISTS (SELECT 'X'
+                FROM INCIDENT_CENTER@UTISDB
+               WHERE incidentid = S.node_nodeidnumber
+                 AND reportdate != TO_DATE(SUBSTR(S.updatetypeother, 1, 14), 'YYYYMMDDHH24MISS'));
+
+
+
+-- db_delp.pc
+
+-- DEL_SndIncident
+DELETE FROM SND_INCIDENT
+WHERE logdate < SYSDATE - 720/1440;
+
+-- DEL_SndLog
+DELETE FROM SND_LOG
+WHERE logdate < SYSDATE - 2;
+
+-- DEL_RcvTraffic
+DELETE FROM RCV_LINK_TRAFFIC
+WHERE logdate < SYSDATE - 15/1440;
+
+-- DEL_RcvIncident
+DELETE FROM RCV_INCIDENT
+WHERE logdate < SYSDATE - 3;
+
+-- DEL_RcvLog
+DELETE FROM RCV_LOG
+WHERE logdate < SYSDATE - 1;

+ 22 - 0
rota-utic-server/reference/HELP.md

@@ -0,0 +1,22 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.5.1/maven-plugin/reference/html/)
+* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.5.1/maven-plugin/reference/html/#build-image)
+* [Spring Boot Actuator](https://docs.spring.io/spring-boot/docs/2.5.1/reference/htmlsingle/#production-ready)
+* [MyBatis Framework](https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/)
+* [Spring for Apache Kafka](https://docs.spring.io/spring-boot/docs/2.5.1/reference/htmlsingle/#boot-features-kafka)
+* [Spring Data JPA](https://docs.spring.io/spring-boot/docs/2.5.1/reference/htmlsingle/#boot-features-jpa-and-spring-data)
+* [Spring Data MongoDB](https://docs.spring.io/spring-boot/docs/2.5.1/reference/htmlsingle/#boot-features-mongodb)
+
+### Guides
+The following guides illustrate how to use some features concretely:
+
+* [Building a RESTful Web Service with Spring Boot Actuator](https://spring.io/guides/gs/actuator-service/)
+* [MyBatis Quick Start](https://github.com/mybatis/spring-boot-starter/wiki/Quick-Start)
+* [Accessing Data with JPA](https://spring.io/guides/gs/accessing-data-jpa/)
+* [Accessing Data with MongoDB](https://spring.io/guides/gs/accessing-data-mongodb/)
+

+ 2 - 0
rota-utic-server/reference/ggits-comm-server-itcs-itcs123.bat

@@ -0,0 +1,2 @@
+echo "itcs, itcs123"
+telnet 192.168.10.66

+ 2 - 0
rota-utic-server/reference/sig-kafka-server.bat

@@ -0,0 +1,2 @@
+echo "cvim/cvim123!!"
+ssh -p 22 cvim@192.168.11.23

+ 58 - 0
rota-utic-server/reference/start.sh

@@ -0,0 +1,58 @@
+#!/bin/sh
+
+#SERVICE_HOME=$(dirname $0)
+USER_HOME=/home/asnuser
+SERVICE_HOME=/home/asnuser/bin
+
+usage() {
+	echo "Usage:" $0 "[ggits/sig]"
+	echo "RUN its-rota-server:"    $0 "server"
+	echo "RUN its-rota-client:"    $0 "client"
+	echo "RUN its-rota-scheduler:" $0 "scheduler"
+	exit
+}
+
+case $1 in
+  server)
+    SERVICE_NAME=its-rota-server
+    SERVICE_VERSION=0.0.1
+    ;;
+  client)
+    SERVICE_NAME=its-rota-client
+    SERVICE_VERSION=0.0.1
+    ;;
+  scheduler)
+    SERVICE_NAME=its-rota-scheduler
+    SERVICE_VERSION=0.0.1
+    ;;
+  *)
+    usage
+    ;;
+esac
+
+EXE_NAME=${SERVICE_HOME}/$SERVICE_NAME-$SERVICE_VERSION.jar
+PID_NAME=$SERVICE_NAME.pid
+SERVICE_PID=$SERVICE_HOME/conf/$PID_NAME
+
+export JAVA_OPT="-server"
+export JAVA_OPT="$JAVA_OPT -Xlog:gc*:file=${USER_HOME}/logs/${SERVICE_NAME}/${SERVICE_NAME}.gc.log"
+
+if [ ! -z "$SERVICE_PID" ]; then
+  if [ -f "$SERVICE_PID" ]; then
+    echo "$SERVICE_NAME is already running...."
+    exit
+  fi
+fi
+
+java $JAVA_OPT -jar $EXE_NAME &
+
+echo "$SERVICE_NAME is started...."
+
+sleep 1
+
+ps -eaf | grep $SERVICE_NAME | grep -v grep |grep -v tail |wc -l
+
+sleep 1
+
+ps -eaf | grep $SERVICE_NAME | grep -v grep |grep -v tail
+

+ 22 - 0
rota-utic-server/reference/startall.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#SERVICE_HOME=$(dirname $0)
+USER_HOME=/home/asnuser
+SERVICE_HOME=/home/asnuser/bin
+
+${SERVICE_HOME}/stopall.sh
+sleep 1
+
+${SERVICE_HOME}/start.sh server
+sleep 1
+
+${SERVICE_HOME}/start.sh client
+sleep 1
+
+${SERVICE_HOME}/start.sh scheduler
+sleep 1
+
+${SERVICE_HOME}/stat.sh
+
+
+

+ 9 - 0
rota-utic-server/reference/stat.sh

@@ -0,0 +1,9 @@
+#!/bin/sh
+
+export SERVICE_NAME=its-rota-
+
+ps -eaf | grep $SERVICE_NAME | grep -v grep | grep -v tail | grep -v kafka | grep java | wc -l
+
+sleep 1
+
+ps -eaf | grep $SERVICE_NAME | grep -v grep | grep -v tail | grep -v kafka | grep java

+ 60 - 0
rota-utic-server/reference/stop.sh

@@ -0,0 +1,60 @@
+#!/bin/sh
+
+#SERVICE_HOME=$(dirname $0)
+USER_HOME=/home/asnuser
+SERVICE_HOME=/home/asnuser/bin
+
+usage() {
+	echo "Usage:" $0 "[ggits/sig]"
+	echo "RUN its-rota-server:"    $0 "server"
+	echo "RUN its-rota-client:"    $0 "client"
+	echo "RUN its-rota-scheduler:" $0 "scheduler"
+	exit
+}
+
+case $1 in
+  server)
+    SERVICE_NAME=its-rota-server
+    SERVICE_VERSION=0.0.1
+    ;;
+  client)
+    SERVICE_NAME=its-rota-client
+    SERVICE_VERSION=0.0.1
+    ;;
+  scheduler)
+    SERVICE_NAME=its-rota-scheduler
+    SERVICE_VERSION=0.0.1
+    ;;
+  *)
+    usage
+    ;;
+esac
+
+EXE_NAME=$SERVICE_NAME-$SERVICE_VERSION.jar
+PID_NAME=$SERVICE_NAME.pid
+SERVICE_PID=$SERVICE_HOME/conf/$PID_NAME
+
+if [ ! -z "$SERVICE_PID" ]; then
+  if [ -f "$SERVICE_PID" ]; then
+    kill -15 `cat "$SERVICE_PID"` >/dev/null 2>&1
+    echo "$SERVICE_NAME stopping.........."
+  else
+    echo "$SERVICE_NAME is not running...."
+    exit
+  fi
+fi
+
+LOOP=$(seq 0 9)
+for i in $LOOP
+do
+  sleep 1
+  if [ -f "$SERVICE_PID" ]; then
+    echo "$SERVICE_NAME stopping.........."
+  else
+    echo "$SERVICE_NAME stopped.........."
+    exit
+  fi
+done
+
+echo "$SERVICE_NAME cannot be terminated......."
+ps -eaf | grep $SERVICE_NAME | grep -v grep

+ 16 - 0
rota-utic-server/reference/stopall.sh

@@ -0,0 +1,16 @@
+#!/bin/sh
+
+#SERVICE_HOME=$(dirname $0)
+USER_HOME=/home/asnuser
+SERVICE_HOME=/home/asnuser/bin
+
+${SERVICE_HOME}/stop.sh server
+sleep 1
+
+${SERVICE_HOME}/stop.sh client
+sleep 1
+
+${SERVICE_HOME}/stop.sh scheduler
+sleep 1
+
+${SERVICE_HOME}/stat.sh