shjung 2 年之前
父节点
当前提交
5ded2fa6d6
共有 51 个文件被更改,包括 243 次插入182 次删除
  1. 4 0
      lombok.config
  2. 13 12
      src/main/java/com/its/op/controller/its/LoginController.java
  3. 9 4
      src/main/java/com/its/op/controller/its/vds/VdsDtctTrafStatController.java
  4. 1 1
      src/main/java/com/its/op/controller/its/vms/TbVmsSymbLibSbt2Controller.java
  5. 3 1
      src/main/java/com/its/op/dto/its/common/DetlTrafIfscDto.java
  6. 3 1
      src/main/java/com/its/op/dto/its/common/DetlTrafLinkDto.java
  7. 3 1
      src/main/java/com/its/op/dto/its/common/DetlTrafRoadDto.java
  8. 5 3
      src/main/java/com/its/op/dto/its/rse/RseOdStatListDataDto.java
  9. 3 1
      src/main/java/com/its/op/dto/its/vms/TbVmsDsplPrstDto.java
  10. 3 1
      src/main/java/com/its/op/dto/its/vms/TbVmsIfscCmtrGradDto.java
  11. 10 1
      src/main/java/com/its/op/dto/its/vms/VmsFormIfscDto.java
  12. 4 4
      src/main/java/com/its/op/entity/domain/EAdjsSorc.java
  13. 4 4
      src/main/java/com/its/op/entity/domain/ECmtrGradCd.java
  14. 4 4
      src/main/java/com/its/op/entity/domain/EDayTypeCd.java
  15. 3 3
      src/main/java/com/its/op/entity/domain/converter/CmtrGradCdConverter.java
  16. 3 3
      src/main/java/com/its/op/entity/domain/converter/DayTypeConverter.java
  17. 2 3
      src/main/java/com/its/op/entity/its/AuditingEntity.java
  18. 4 2
      src/main/java/com/its/op/entity/its/scrs/TbScSgnlCtlr.java
  19. 2 4
      src/main/java/com/its/op/entity/its/vms/TbVmsCtlr.java
  20. 1 1
      src/main/java/com/its/op/entity/its/vms/TbVmsFormColr.java
  21. 1 4
      src/main/java/com/its/op/entity/its/vms/TbVmsIfscTraf.java
  22. 28 10
      src/main/java/com/its/op/global/CmmnCdManager.java
  23. 2 1
      src/main/java/com/its/op/scheduler/ItsApiAfterTaskCompleted.java
  24. 2 1
      src/main/java/com/its/op/scheduler/ItsOpSigPhaseListener.java
  25. 2 1
      src/main/java/com/its/op/scheduler/ItsOpSigPhaseListener_backup.java
  26. 2 1
      src/main/java/com/its/op/scheduler/job/FcltSttsJobThread.java
  27. 2 1
      src/main/java/com/its/op/scheduler/job/SigPhaseJobThread.java
  28. 2 1
      src/main/java/com/its/op/scheduler/job/UnitSttsJobThread.java
  29. 10 9
      src/main/java/com/its/op/security/UserInfrVo.java
  30. 5 1
      src/main/java/com/its/op/security/WebSecurityConfig.java
  31. 7 8
      src/main/java/com/its/op/security/interceptor/ApiInterceptor.java
  32. 1 1
      src/main/java/com/its/op/service/its/oper/TbUserGropMenuAthrService.java
  33. 1 1
      src/main/java/com/its/op/service/its/oper/TbUserInfrService.java
  34. 3 3
      src/main/java/com/its/op/service/its/scrs/ScFileDownloadService.java
  35. 6 6
      src/main/java/com/its/op/service/its/vms/TbVmsDsplPrstService.java
  36. 7 7
      src/main/java/com/its/op/service/its/vms/TbVmsDsplSchService.java
  37. 12 5
      src/main/java/com/its/op/websocket/ItsWebSocketHandler.java
  38. 15 11
      src/main/java/com/its/op/websocket/ItsWebSocketSessionManager.java
  39. 1 2
      src/main/java/com/its/op/xnettcp/client/codec/NettyTcpClientDecoder.java
  40. 1 4
      src/main/java/com/its/op/xnetudp/codec/CenterCommClientEncoder.java
  41. 1 1
      src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_MESSAGE.java
  42. 3 3
      src/main/java/com/its/op/xnetudp/protocol/CENTER_PG_STATE_RES.java
  43. 27 28
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_COMM_MESSAGE.java
  44. 5 5
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_COMMON.java
  45. 0 3
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_IMM_SCNR_DNLD.java
  46. 1 0
      src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_LUMINANCE.java
  47. 1 1
      src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java
  48. 5 4
      src/main/java/com/its/op/xnetudp/thread/CenterCommServerReceiver.java
  49. 3 3
      src/main/java/com/its/utils/ItsUtils.java
  50. 2 2
      src/main/java/com/its/utils/ServiceThread.java
  51. 1 0
      src/main/java/com/its/utils/TimeUtils.java

+ 4 - 0
lombok.config

@@ -0,0 +1,4 @@
+#config.stopBubbling = true
+#lombok.addLombokGeneratedAnnotation = true
+#lombok.extern.findbugs.addSuppressFBWarnings = true
+#lombok.anyConstructor.addConstructorProperties = true

+ 13 - 12
src/main/java/com/its/op/controller/its/LoginController.java

@@ -89,18 +89,19 @@ public class LoginController {
     public String getSessionUserId(HttpServletRequest request) {
         String userId = "";
         UserInfoDto userInfo = getSessionUserInfo(request);
-        if (userInfo != null) {
-             userId = userInfo.getUserId();
-        }
-        else {
-            HttpSession session = request.getSession(false);
-            if (session != null) {
-                String encUserId = (String)session.getAttribute(WebMvcConfig.USER_UUID);
-                if (!"".equals(encUserId)) {
-                    userId = WebMvcConfig.decUserId(encUserId);
-                }
-            }
-        }
+        userId = userInfo.getUserId();
+//        if (userInfo != null) {
+//             userId = userInfo.getUserId();
+//        }
+//        else {
+//            HttpSession session = request.getSession(false);
+//            if (session != null) {
+//                String encUserId = (String)session.getAttribute(WebMvcConfig.USER_UUID);
+//                if (!"".equals(encUserId)) {
+//                    userId = WebMvcConfig.decUserId(encUserId);
+//                }
+//            }
+//        }
         return userId;
     }
 

+ 9 - 4
src/main/java/com/its/op/controller/its/vds/VdsDtctTrafStatController.java

@@ -84,9 +84,14 @@ public class VdsDtctTrafStatController {
             @ApiParam(name = "id", value = "검지기 ID 목록", example = "[00010001,00010002]", required = true)
             @RequestParam List<Long> id
     ) {
-        //String fromDt = FROM_DT + "01000000";
-        String fromDt = FROM_DT + "00000000";
-        String toDt = ItsUtils.getLastDayOfMonth(TO_DT) + "235959";
-        return this.service.findAllMN(FROM_DT, TO_DT, id);
+        String fromDt = FROM_DT;
+        String toDt = TO_DT;
+        if (FROM_DT.length() == 6) {
+            fromDt = FROM_DT + "00000000";
+        }
+        if (TO_DT.length() == 6) {
+            toDt = ItsUtils.getLastDayOfMonth(TO_DT) + "235959";
+        }
+        return this.service.findAllMN(fromDt, toDt, id);
     }
 }

+ 1 - 1
src/main/java/com/its/op/controller/its/vms/TbVmsSymbLibSbt2Controller.java

@@ -55,7 +55,7 @@ public class TbVmsSymbLibSbt2Controller {
 
     @ApiOperation(value = "VMS 소통정보 이미지 신규 ID 조회(TB_VMS_SYMB_LIB)", response = NewIdIntegerDto.class)
     @GetMapping(value = "/new-id", produces = {"application/json; charset=utf8"})
-    public NewIdIntegerDto NewIdIntegerDto() {
+    public NewIdIntegerDto getNewSymbolId() {
         return this.service.getNewSymbolId();
     }
 

+ 3 - 1
src/main/java/com/its/op/dto/its/common/DetlTrafIfscDto.java

@@ -65,7 +65,9 @@ public class DetlTrafIfscDto implements Serializable {
     @Data
     @ToString
     @Builder
-    public static class DetlTrafIfscInfo {
+    public static class DetlTrafIfscInfo implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("가공 일시")  // Y VARCHAR(14)
         @JsonProperty("prcn_dt")
         private String prcnDt;

+ 3 - 1
src/main/java/com/its/op/dto/its/common/DetlTrafLinkDto.java

@@ -63,7 +63,9 @@ public class DetlTrafLinkDto implements Serializable {
     @Data
     @ToString
     @Builder
-    public static class DetlTrafLinkInfo {
+    public static class DetlTrafLinkInfo implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("가공 일시")  // Y VARCHAR(14)
         @JsonProperty("prcn_dt")
         private String prcnDt;

+ 3 - 1
src/main/java/com/its/op/dto/its/common/DetlTrafRoadDto.java

@@ -65,7 +65,9 @@ public class DetlTrafRoadDto implements Serializable {
     @Data
     @ToString
     @Builder
-    public static class DetlTrafRoadInfo {
+    public static class DetlTrafRoadInfo implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("가공 일시")  // Y VARCHAR(14)
         @JsonProperty("prcn_dt")
         private String prcnDt;

+ 5 - 3
src/main/java/com/its/op/dto/its/rse/RseOdStatListDataDto.java

@@ -65,13 +65,13 @@ public class RseOdStatListDataDto implements Serializable {
         return dto;
     }
 
-    public static Comparator<RseOdStatListDataDto> RseOdStatListDataDtoSort = new Comparator<RseOdStatListDataDto>() {
+    public static Comparator<RseOdStatListDataDto> rseOdStatListDataDtoSort = new Comparator<RseOdStatListDataDto>() {
         public int compare(RseOdStatListDataDto s1, RseOdStatListDataDto s2) {
             return (int) (s1.getRSE_CTLR_NMBR() - s2.getRSE_CTLR_NMBR());
         }
     };
 
-    public static Comparator<RseOdStatListDataDto.RseOdTraf> RseOdTrafSort = new Comparator<RseOdStatListDataDto.RseOdTraf>() {
+    public static Comparator<RseOdStatListDataDto.RseOdTraf> rseOdTrafSort = new Comparator<RseOdStatListDataDto.RseOdTraf>() {
         public int compare(RseOdStatListDataDto.RseOdTraf s1, RseOdStatListDataDto.RseOdTraf s2) {
             return (int) (s1.getRSE_CTLR_NMBR() - s2.getRSE_CTLR_NMBR());
         }
@@ -79,7 +79,9 @@ public class RseOdStatListDataDto implements Serializable {
 
     @Data
     @Builder
-    public static class RseOdTraf {
+    public static class RseOdTraf implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("RSE 제어기 번호")
         @JsonProperty("rse_ctlr_nmbr")
         private Long RSE_CTLR_NMBR;

+ 3 - 1
src/main/java/com/its/op/dto/its/vms/TbVmsDsplPrstDto.java

@@ -211,7 +211,9 @@ public class TbVmsDsplPrstDto implements Serializable {
     @ToString
     @Builder
     //@NoArgsConstructor//(access = AccessLevel.PROTECTED)
-    public static class VmsMsgDsplInfo {
+    public static class VmsMsgDsplInfo implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("PHASE")  // N NUMBER(2)
         @JsonProperty("phase")
         private Integer phase;

+ 3 - 1
src/main/java/com/its/op/dto/its/vms/TbVmsIfscCmtrGradDto.java

@@ -46,7 +46,9 @@ public class TbVmsIfscCmtrGradDto implements Serializable {
     @NoArgsConstructor
     @AllArgsConstructor
     @Builder
-    public static class CmtrGrad {
+    public static class CmtrGrad implements Serializable {
+        private static final long serialVersionUID = 1L;
+
         @ApiModelProperty("최저속도")  // Y NUMBER(3)
         @JsonProperty("lwstsped")
         @PositiveOrZero

+ 10 - 1
src/main/java/com/its/op/dto/its/vms/VmsFormIfscDto.java

@@ -74,7 +74,8 @@ public class VmsFormIfscDto implements Serializable {
     @JsonProperty("four_img_ifsc")
     private FormIfscInfo fourImgIfsc;
 
-    public static class FormIfscInfo {
+    public static class FormIfscInfo implements Serializable {
+        private static final long serialVersionUID = 1L;
 
         @ApiModelProperty("VMS 정보제공구간 ID")  // N NUMBER(10)
         @JsonProperty("vms_ifsc_id")
@@ -113,6 +114,14 @@ public class VmsFormIfscDto implements Serializable {
                 this.roadNm = ifsc.getRoadNm();
                 this.spotNm = ifsc.getSpotNm();
                 this.axisYn = ifsc.getAxisYn();
+            } else {
+                this.vmsIfscId = 0L;
+                this.vmsIfscNm = "";
+                this.dsplStrtNodeNm = "";
+                this.dsplEndNodeNm = "";
+                this.roadNm = "";
+                this.spotNm = "";
+                this.axisYn = "";
             }
         }
 

+ 4 - 4
src/main/java/com/its/op/entity/domain/eAdjsSorc.java → src/main/java/com/its/op/entity/domain/EAdjsSorc.java

@@ -4,7 +4,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 // 결측보정 소스
-public enum eAdjsSorc implements ICodeValue {
+public enum EAdjsSorc implements ICodeValue {
 
     MCS0("MCS0", "[MCS0] 결측보정 없음"),
     MCS1("MCS1", "[MCS1] 링크5분패턴"),
@@ -16,15 +16,15 @@ public enum eAdjsSorc implements ICodeValue {
     private final String code;
     private final String value;
 
-    private static final Map<String, eAdjsSorc> map;
+    private static final Map<String, EAdjsSorc> map;
     static {
         map = new HashMap<>();
-        for (eAdjsSorc e : values()) {
+        for (EAdjsSorc e : values()) {
             map.put(e.code, e);
         }
     }
 
-    eAdjsSorc(String code, String value) {
+    EAdjsSorc(String code, String value) {
         this.code = code;
         this.value = value;
     }

+ 4 - 4
src/main/java/com/its/op/entity/domain/eCmtrGradCd.java → src/main/java/com/its/op/entity/domain/ECmtrGradCd.java

@@ -4,7 +4,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 // 소통정보 등급
-public enum eCmtrGradCd implements ICodeValue {
+public enum ECmtrGradCd implements ICodeValue {
 
     LTC0("LTC0", "[LTC0] 정보없음"),
     LTC1("LTC1", "[LTC1] 원활"),
@@ -14,15 +14,15 @@ public enum eCmtrGradCd implements ICodeValue {
     private final String code;
     private final String value;
 
-    private static final Map<String, eCmtrGradCd> map;
+    private static final Map<String, ECmtrGradCd> map;
     static {
         map = new HashMap<>();
-        for (eCmtrGradCd e : values()) {
+        for (ECmtrGradCd e : values()) {
             map.put(e.code, e);
         }
     }
 
-    eCmtrGradCd(String code, String value) {
+    ECmtrGradCd(String code, String value) {
         this.code = code;
         this.value = value;
     }

+ 4 - 4
src/main/java/com/its/op/entity/domain/eDayTypeCd.java → src/main/java/com/its/op/entity/domain/EDayTypeCd.java

@@ -4,7 +4,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 // 요일유형
-public enum eDayTypeCd implements ICodeValue {
+public enum EDayTypeCd implements ICodeValue {
 
     DTW1("DTW1", "[DTW1] 월요일"),
     DTW2("DTW2", "[DTW2] 화요일"),
@@ -17,14 +17,14 @@ public enum eDayTypeCd implements ICodeValue {
     private String code;
     private String value;
 
-    private static final Map<String, eDayTypeCd> map;
+    private static final Map<String, EDayTypeCd> map;
     static {
         map = new HashMap<>();
-        for (eDayTypeCd e : values()) {
+        for (EDayTypeCd e : values()) {
             map.put(e.code, e);
         }
     }
-    eDayTypeCd(String code, String value) {
+    EDayTypeCd(String code, String value) {
         this.code = code;
         this.value = value;
     }

+ 3 - 3
src/main/java/com/its/op/entity/domain/converter/CmtrGradCdConverter.java

@@ -1,14 +1,14 @@
 package com.its.op.entity.domain.converter;
 
-import com.its.op.entity.domain.eCmtrGradCd;
+import com.its.op.entity.domain.ECmtrGradCd;
 
 import javax.persistence.Converter;
 
 @Converter(autoApply = true)    // Entity 에 @Convert 명시없이도 해당 Converter 클래스가 적용된다.
-public class CmtrGradCdConverter extends CodeValueConverter<eCmtrGradCd> {
+public class CmtrGradCdConverter extends CodeValueConverter<ECmtrGradCd> {
 
     public CmtrGradCdConverter() {
-        super(eCmtrGradCd.class);
+        super(ECmtrGradCd.class);
     }
 
 }

+ 3 - 3
src/main/java/com/its/op/entity/domain/converter/DayTypeConverter.java

@@ -1,14 +1,14 @@
 package com.its.op.entity.domain.converter;
 
-import com.its.op.entity.domain.eDayTypeCd;
+import com.its.op.entity.domain.EDayTypeCd;
 
 import javax.persistence.Converter;
 
 @Converter(autoApply = true)    // Entity 에 @Convert 명시없이도 해당 Converter 클래스가 적용된다.
-public class DayTypeConverter extends CodeValueConverter<eDayTypeCd> {
+public class DayTypeConverter extends CodeValueConverter<EDayTypeCd> {
 
     public DayTypeConverter() {
-        super(eDayTypeCd.class);
+        super(EDayTypeCd.class);
     }
 
 }

+ 2 - 3
src/main/java/com/its/op/entity/its/AuditingEntity.java

@@ -9,7 +9,6 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
 import javax.persistence.*;
 import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 
 @Getter
 @MappedSuperclass   // JPA Entity 클래스들이 AuditingEntity 를 상속할 경우 필드들(createdDate, lastModifiedDate)도 칼럼으로 인식하도록 함
@@ -37,7 +36,7 @@ public class AuditingEntity {
     @PrePersist
     public void onPrePersist() {
         LocalDateTime now = LocalDateTime.now();
-        String createDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+        //String createDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
         this.createdTime = now;
         this.modifiedTime = now;
     }
@@ -46,7 +45,7 @@ public class AuditingEntity {
     @PreUpdate
     public void onPreUpdate() {
         LocalDateTime now = LocalDateTime.now();
-        String updateDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+        //String updateDt = now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
         this.modifiedTime = now;
     }
 }

+ 4 - 2
src/main/java/com/its/op/entity/its/scrs/TbScSgnlCtlr.java

@@ -192,8 +192,8 @@ public class TbScSgnlCtlr implements Serializable {
         dto.setCntlStts(this.stts.getCntlStts());   // 제어상태(0: 온라인, 1: 오프라인, 2: 트랜스, 3: 통신장애)
         dto.setSpclCntl(this.stts.getSpclCntl());   // 특수제어(0: 없음, 1: 점멸, 2: 소등, 3: 수동, 4: 감응)
 
-        int aRingPhase = -1;
-        int bRingPhase = -1;
+        int aRingPhase;// = -1;
+        int bRingPhase;// = -1;
         switch(this.stts.getPrstAringPhas()) {
             case 1: aRingPhase = this.aring1phasCd; break;
             case 2: aRingPhase = this.aring2phasCd; break;
@@ -203,6 +203,7 @@ public class TbScSgnlCtlr implements Serializable {
             case 6: aRingPhase = this.aring6phasCd; break;
             case 7: aRingPhase = this.aring7phasCd; break;
             case 8: aRingPhase = this.aring8phasCd; break;
+            default: aRingPhase = -1; break;
         }
         switch(this.stts.getPrstBringPhas()) {
             case 1: bRingPhase = this.bring1phasCd; break;
@@ -213,6 +214,7 @@ public class TbScSgnlCtlr implements Serializable {
             case 6: bRingPhase = this.bring6phasCd; break;
             case 7: bRingPhase = this.bring7phasCd; break;
             case 8: bRingPhase = this.bring8phasCd; break;
+            default: bRingPhase = -1; break;
         }
         if (aRingPhase >= 1000000) {
             String aPhase = String.format("%07d", aRingPhase);

+ 2 - 4
src/main/java/com/its/op/entity/its/vms/TbVmsCtlr.java

@@ -477,10 +477,8 @@ public class TbVmsCtlr implements Serializable {
             return;
         }
         if ("N".equals(alarm.getCmncStts())) {
-            if ("N".equals(alarm.getCmncStts())) {
-                getState().setCmncSttsCd(CmmnCdManager.CMNC_STTS_NORMAL);
-                getState().setUpdtDt(ItsUtils.getSysTime());
-            }
+            getState().setCmncSttsCd(CmmnCdManager.CMNC_STTS_NORMAL);
+            getState().setUpdtDt(ItsUtils.getSysTime());
         }
         if (CmmnCdManager.CMNC_STTS_NORMAL.equals(getState().getCmncSttsCd())) {
             if ("N".equals(alarm.getDoorStts())) {

+ 1 - 1
src/main/java/com/its/op/entity/its/vms/TbVmsFormColr.java

@@ -51,7 +51,7 @@ public class TbVmsFormColr implements Serializable {
     }
 
     public TbVmsFormColr(Long vmsFormBckgHueCd) {
-        this.vmsFormColrCd = vmsFormColrCd;
+        this.vmsFormColrCd = vmsFormBckgHueCd.intValue();;
     }
 
     public void updateInfo(TbVmsFormColrDto.TbVmsFormColrUpdReq req) {

+ 1 - 4
src/main/java/com/its/op/entity/its/vms/TbVmsIfscTraf.java

@@ -53,7 +53,7 @@ public class TbVmsIfscTraf implements Serializable {
     private TbVmsIfsc vmsIfsc;
 
     public TbVmsIfscTrafDto toDto() {
-        if (this.cmtrGradCd == null) {
+        if (this.cmtrGradCd == null || this.cmtrGradCd.equals("")) {
             this.cmtrGradCd = "0";
         }
         TbVmsIfscTrafDto dto = TbVmsIfscTrafDto.builder()
@@ -69,9 +69,6 @@ public class TbVmsIfscTraf implements Serializable {
             dto.setDsplStrtNodeNm(this.vmsIfsc.getDsplStrtNodeNm());
             dto.setDsplEndNodeNm(this.vmsIfsc.getDsplEndNodeNm());
         }
-        if (this.cmtrGradCd == null) {
-            dto.setCmtrGradCd("0");
-        }
         dto.setMissYn(ItsUtils.getMissYn(this.prcnDt, this.cmtrGradCd));
 
         if (("1").equals(dto.getCmtrGradCd())) {

+ 28 - 10
src/main/java/com/its/op/global/CmmnCdManager.java

@@ -145,8 +145,13 @@ public class CmmnCdManager {
             HashMap<String, Code> codeMap = codes.get(cd.getCmmnClsfCd());
             if (codeMap == null) {
                 codeMap = new HashMap<>();
-                codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
-                codes.put(cd.getCmmnClsfCd(), codeMap);
+                Code code = new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm());
+                codeMap.put(cd.getCmmnCd(), code);
+                HashMap<String, Code> result = codes.putIfAbsent(cd.getCmmnClsfCd(), codeMap);
+                if (result != null) {
+                    result.put(cd.getCmmnCd(), code);
+                }
+                //codes.put(cd.getCmmnClsfCd(), codeMap);
             }
             else {
                 codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
@@ -162,14 +167,18 @@ public class CmmnCdManager {
             HashMap<String, Code> codeMap = tempMap.get(cd.getCmmnClsfCd());
             if (codeMap == null) {
                 codeMap = new HashMap<>();
-                codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
-                tempMap.put(cd.getCmmnClsfCd(), codeMap);
+                Code code = new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm());
+                codeMap.put(cd.getCmmnCd(), code);
+                HashMap<String, Code> result = tempMap.putIfAbsent(cd.getCmmnClsfCd(), codeMap);
+                if (result != null) {
+                    result.put(cd.getCmmnCd(), code);
+                }
+                //tempMap.put(cd.getCmmnClsfCd(), codeMap);
             }
             else {
                 codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
             }
         }
-
         codes = tempMap;
 
         return codeList;
@@ -184,14 +193,18 @@ public class CmmnCdManager {
             HashMap<String, Code> codeMap = tempMap.get(cd.getCmmnClsfCd());
             if (codeMap == null) {
                 codeMap = new HashMap<>();
-                codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
-                tempMap.put(cd.getCmmnClsfCd(), codeMap);
+                Code code = new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm());
+                codeMap.put(cd.getCmmnCd(), code);
+                HashMap<String, Code> result = tempMap.putIfAbsent(cd.getCmmnClsfCd(), codeMap);
+                if (result != null) {
+                    result.put(cd.getCmmnCd(), code);
+                }
+                //tempMap.put(cd.getCmmnClsfCd(), codeMap);
             }
             else {
                 codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
             }
         }
-
         codes = tempMap;
     }
 
@@ -203,8 +216,13 @@ public class CmmnCdManager {
         HashMap<String, Code> codeMap = codes.get(cd.getCmmnClsfCd());
         if (codeMap == null) {
             HashMap<String, Code> codeMap_ = new HashMap<>();
-            codeMap_.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));
-            codes.put(cd.getCmmnClsfCd(), codeMap_);
+            Code code = new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm());
+            codeMap_.put(cd.getCmmnCd(), code);
+            HashMap<String, Code> result = codes.putIfAbsent(cd.getCmmnClsfCd(), codeMap_);
+            if (result != null) {
+                result.put(cd.getCmmnCd(), code);
+            }
+            //codes.put(cd.getCmmnClsfCd(), codeMap_);
         }
         else {
             codeMap.put(cd.getCmmnCd(), new Code(cd.getCmmnCd(), cd.getCmmnCdKorNm(), cd.getCmmnDescEnglNm()));

+ 2 - 1
src/main/java/com/its/op/scheduler/ItsApiAfterTaskCompleted.java

@@ -17,6 +17,7 @@ import javax.annotation.PostConstruct;
 @RequiredArgsConstructor
 @Component
 public class ItsApiAfterTaskCompleted {
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private ObjectMapper mapper;
 
     @PostConstruct
@@ -33,7 +34,7 @@ public class ItsApiAfterTaskCompleted {
                     .build();
             ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("fcltUserMsg", msg);
             String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastUserMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastUserMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("ItsApiAfterTaskCompleted: executeFcltUserMsgNotify Json parsing Exception");

+ 2 - 1
src/main/java/com/its/op/scheduler/ItsOpSigPhaseListener.java

@@ -24,6 +24,7 @@ import java.util.concurrent.Executors;
 @Component
 public class ItsOpSigPhaseListener {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final TbScSgnlCtlrService service;
     private volatile boolean isShutdown = false;
     private ObjectMapper mapper;
@@ -81,7 +82,7 @@ public class ItsOpSigPhaseListener {
             List<TbScSgnlCtlrPhaseDto> sigPhaseDto = this.service.findAllPhaseList(false);
             ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("sigPhaseStts", sigPhaseDto);
             String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("ItsOpSigPhaseListener: TbScSgnlCtlrPhaseDto Json parsing Exception");

+ 2 - 1
src/main/java/com/its/op/scheduler/ItsOpSigPhaseListener_backup.java

@@ -20,6 +20,7 @@ import java.util.List;
 //@Component
 public class ItsOpSigPhaseListener_backup implements DisposableBean, Runnable {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final TbScSgnlCtlrService service;
     private Thread thread = null;
     private volatile boolean isShutdown = false;
@@ -70,7 +71,7 @@ public class ItsOpSigPhaseListener_backup implements DisposableBean, Runnable {
         ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("sigPhaseStts", sigPhaseDto);
         try {
             String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("ItsOpSigPhaseListener TbScSgnlCtlrPhaseDto Json parsing Exception: {}", sigPhaseDto);

+ 2 - 1
src/main/java/com/its/op/scheduler/job/FcltSttsJobThread.java

@@ -22,6 +22,7 @@ import javax.annotation.PostConstruct;
 @Service
 public class FcltSttsJobThread {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final Environment environment;
     private final TbCctvCtlrManager cctvCtlrManager;
     private final TbVmsCtlrManager vmsCtlrManager;
@@ -75,7 +76,7 @@ public class FcltSttsJobThread {
         ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("itsFcltStts", itsSttsDto);
         try {
             String itsSttsJsonData = this.objectMapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("cltSttsJobThread.notify: ItsFcltSttsDto Json parsing Exception: {}", itsSttsDto);

+ 2 - 1
src/main/java/com/its/op/scheduler/job/SigPhaseJobThread.java

@@ -21,6 +21,7 @@ import java.util.List;
 //@Service
 public class SigPhaseJobThread {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final Environment environment;
     private final TbScSgnlCtlrService service;
     private ObjectMapper mapper;
@@ -41,7 +42,7 @@ public class SigPhaseJobThread {
             List<TbScSgnlCtlrPhaseDto> sigPhaseDto = this.service.findAllPhaseList(true);
             ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("sigPhaseStts", sigPhaseDto);
             String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastSigPhaseMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("SigPhaseJobThread TbScSgnlCtlrPhaseDto Json parsing JsonProcessingException");

+ 2 - 1
src/main/java/com/its/op/scheduler/job/UnitSttsJobThread.java

@@ -23,6 +23,7 @@ import java.util.List;
 @Service
 public class UnitSttsJobThread {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final Environment environment;
     private final TbUnitSystService unitSystService;
     private final TbUnitSystManager unitSystManager;
@@ -48,7 +49,7 @@ public class UnitSttsJobThread {
         ItsWebSocketMessage itsMessage = new ItsWebSocketMessage("itsUnitStts", itsUnitStts);
         try {
             String itsSttsJsonData = this.mapper.writeValueAsString(itsMessage);
-            ItsWebSocketSessionManager.getInstance().sendBroadcastMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
+            this.itsWebSocketSessionManager.sendBroadcastMessage(itsMessage.getCommand(), new TextMessage(itsSttsJsonData));
         }
         catch(JsonProcessingException e){
             log.error("UnitSttsJobThread ItsFcltSttsDto Json parsing Exception: {}", itsUnitStts);

+ 10 - 9
src/main/java/com/its/op/security/UserInfrVo.java

@@ -96,15 +96,16 @@ public class UserInfrVo implements UserDetails {
     @Override
     public Collection<? extends GrantedAuthority> getAuthorities() {
         Set<GrantedAuthority> roles = new HashSet<GrantedAuthority>();
-        if (StringUtils.equalsIgnoreCase("GROPMANAGER", this.gropId)) {
-            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        }
-        else if (StringUtils.equalsIgnoreCase("GROPSYSOP", this.gropId)) {
-            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        }
-        else {
-            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
-        }
+//        if (StringUtils.equalsIgnoreCase("GROPMANAGER", this.gropId)) {
+//            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
+//        }
+//        else if (StringUtils.equalsIgnoreCase("GROPSYSOP", this.gropId)) {
+//            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
+//        }
+//        else {
+//            roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
+//        }
+        roles.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
         //log.error("getAuthorities: {}", roles.toString());
         return roles;
     }

+ 5 - 1
src/main/java/com/its/op/security/WebSecurityConfig.java

@@ -20,6 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.session.HttpSessionEventPublisher;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -245,12 +246,15 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
     }
 
     protected List<Map<String, Object>> getAuthReq() {
+        List<Map<String, Object>> result = new ArrayList<>();
         Map<String, Object> roll = new HashMap<>();
 //        roll.put("id", "id");
 //        roll.put("url", "url");
 //        roll.put("hasAuthority", "auth");
 //        roll.put("date", "date");
-        return (List<Map<String, Object>>) roll;
+        result.add(roll);
+        return result;
+        //return (List<Map<String, Object>>) roll;
     }
 
     protected void setAntMatchers(HttpSecurity http, String rolePrefix) {

+ 7 - 8
src/main/java/com/its/op/security/interceptor/ApiInterceptor.java

@@ -1,6 +1,5 @@
 package com.its.op.security.interceptor;
 
-import com.its.op.security.WebMvcConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.web.servlet.HandlerInterceptor;
@@ -28,14 +27,14 @@ public class ApiInterceptor implements HandlerInterceptor {
                 //return false;
             }
         }
-        else {
-            String encUserId = (String)session.getAttribute(WebMvcConfig.USER_UUID);
-            String userId = "";
-            if (!"".equals(encUserId)) {
-                userId = WebMvcConfig.decUserId(encUserId);
-            }
+//        else {
+//            String encUserId = (String)session.getAttribute(WebMvcConfig.USER_UUID);
+//            String userId = "";
+//            if (!("").equals(encUserId)) {
+//                userId = WebMvcConfig.decUserId(encUserId);
+//            }
 //            log.info("Session: {}", userId);
-        }
+//        }
         return true;
     }
 

+ 1 - 1
src/main/java/com/its/op/service/its/oper/TbUserGropMenuAthrService.java

@@ -37,7 +37,7 @@ public class TbUserGropMenuAthrService {
         // 메뉴 중에 최상위 메뉴 선택
         HashMap<String, String> operSystMenuMap = new HashMap<>();
         for (TbOperSystMenu operSystMenu : operSystMenuList) {
-            if (("N").equals(operSystMenu.getDelYn()) & operSystMenu.getMenuLevl() == 1) {
+            if (("N").equals(operSystMenu.getDelYn()) && operSystMenu.getMenuLevl() == 1) {
                 // 레벨이 1 인 것이 최상위 메뉴이다, OPERSYST_MENU_ID, OPER_SYST_ID 는 NULL 로 들어가 있다.
                 operSystMenuMap.put(operSystMenu.getOperSystId() + "*" + operSystMenu.getMenuId(), operSystMenu.getMenuName());
             }

+ 1 - 1
src/main/java/com/its/op/service/its/oper/TbUserInfrService.java

@@ -88,7 +88,7 @@ public class TbUserInfrService {
     @Transactional
     public TbUserInfrDto mergeInfo(String id, TbUserInfrDto.TbUserInfrUpdReq req) {
         TbUserInfr obj = req.toEntity();
-        String reqPwd = obj.getPwd();
+        //String reqPwd = obj.getPwd();
 
         try {
             TbUserInfr entity = requireOne(req.getUserId());

+ 3 - 3
src/main/java/com/its/op/service/its/scrs/ScFileDownloadService.java

@@ -374,7 +374,7 @@ public class ScFileDownloadService {
      */
     public ResponseEntity<Object> downloadImgnDtctRawClct(HttpServletRequest request, HttpServletResponse response, String fromDt, String toDt) {
 
-        StringUtils.subString(fromDt, 10);
+        //StringUtils.subString(fromDt, 10);
         init();
         String fileName = "IMGN_DTCT_RAW_CLCT_" + StringUtils.subString(fromDt, 12) + "_" + StringUtils.subString(toDt, 12) + this.csvFileExtension;
         String createFileName = this.createFilePath + "IMGN_DTCT_RAW_CLCT_" + StringUtils.subString(fromDt, 12) + "_" + StringUtils.subString(toDt, 12) + "_" + (System.currentTimeMillis() / 1000) + this.csvFileExtension;
@@ -565,8 +565,8 @@ public class ScFileDownloadService {
 
         String fileName = "IXR_MNGM_" + ItsUtils.getSysDay() + this.csvFileExtension;
         String createFileName = this.createFilePath + "IXR_MNGM_" + ItsUtils.getSysTime() + this.csvFileExtension;
-        Path fullFilePath = Paths.get(this.fileSystemDir, createFileName);
-        File file = fullFilePath.toFile();
+        //Path fullFilePath = Paths.get(this.fileSystemDir, createFileName);
+        //File file = fullFilePath.toFile();
 
         //response.setContentType("text/csv;charset=utf-8");
         //response.setHeader("Content-Type", "text/csv;charset=utf-8");

+ 6 - 6
src/main/java/com/its/op/service/its/vms/TbVmsDsplPrstService.java

@@ -128,9 +128,9 @@ public class TbVmsDsplPrstService {
      * @param vms
      * @return
      */
-    public TbVmsDsplPrstDto makeDsplPrst(TbVmsDsplPrst data, TbVmsCtlr vms) {
+    public TbVmsDsplPrstDto makeDsplPrst(Long vmsCtlrNmbr, TbVmsDsplPrst data, TbVmsCtlr vms) {
         TbVmsDsplPrstDto result = TbVmsDsplPrstDto.builder()
-                .vmsCtlrNmbr(vms.getVmsCtlrNmbr())
+                .vmsCtlrNmbr(vmsCtlrNmbr)
                 .msgs(new ArrayList<>())
                 .dsplDt(data.getDsplDt())
                 .svcYn(ItsUtils.getServiceYn(data.getDsplDt()))
@@ -150,11 +150,11 @@ public class TbVmsDsplPrstService {
     @Transactional(readOnly = true)
     public TbVmsDsplPrstDto findById(TbVmsDsplPrstKey id) {
         TbVmsDsplPrst data = requireOne(id);
-        Optional<TbVmsCtlr> stts = this.ctlrRepo.findById(id.getVmsCtlrNmbr());
-        if (stts.isPresent()) {
-            return makeDsplPrst(data, stts.get());
+        Optional<TbVmsCtlr> ctlrObj = this.ctlrRepo.findById(id.getVmsCtlrNmbr());
+        if (ctlrObj.isPresent()) {
+            return makeDsplPrst(id.getVmsCtlrNmbr(), data, ctlrObj.get());
         }
-        return makeDsplPrst(data, null);
+        return makeDsplPrst(id.getVmsCtlrNmbr(), data, null);
     }
 
     /**

+ 7 - 7
src/main/java/com/its/op/service/its/vms/TbVmsDsplSchService.java

@@ -102,7 +102,7 @@ public class TbVmsDsplSchService {
      */
     private byte[] createVmsTrafScheForm(TbVmsCtlr vms, TbVmsDsplSchDto dto, List<TbVmsFormObjectDetlDto> formObjs, VmsFormDrawTrafDto.VmsFormDrawTrafReq req) throws IOException {
 
-        Integer phase = 0;
+        //Integer phase = 0;
         String imagFmt = "png";
         if (vms == null || vms.getType() == null) {
             log.error("createVmsTrafScheForm: Not Found VMS Controller: {}", vms);
@@ -115,7 +115,7 @@ public class TbVmsDsplSchService {
 
         Long[] ifscIds = new Long[4];
         if (dto != null) {
-            phase = dto.getPhase();
+            //phase = dto.getPhase();
             ifscIds[0] = dto.getFrstVmsIfscId();
             ifscIds[1] = dto.getSecdVmsIfscId();
             ifscIds[2] = dto.getThirVmsIfscId();
@@ -177,17 +177,17 @@ public class TbVmsDsplSchService {
             if (ifscId != null && ifscId != 0) {
                 TbVmsIfsc vmsIfsc = this.vmsIfscManager.get(ifscId);
                 if (vmsIfsc != null) {
-                    switch(objType)
-                    {
-                        case 11: case 21: case 31: case 41:
+                    switch(objType) {
+                    case 11: case 21: case 31: case 41:
                         dsplText = vmsIfsc.getVmsIfscNm();
                         break;
-                        case 12: case 22: case 32: case 42:
+                    case 12: case 22: case 32: case 42:
                         dsplText = vmsIfsc.getDsplStrtNodeNm();
                         break;
-                        case 13: case 23: case 33: case 43:
+                    case 13: case 23: case 33: case 43:
                         dsplText = vmsIfsc.getDsplEndNodeNm();
                         break;
+                    default: dsplText = " ";
                     }
                 }
             }

+ 12 - 5
src/main/java/com/its/op/websocket/ItsWebSocketHandler.java

@@ -1,6 +1,7 @@
 package com.its.op.websocket;
 
 import com.its.utils.ItsUtils;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -9,19 +10,25 @@ import org.springframework.web.socket.TextMessage;
 import org.springframework.web.socket.WebSocketSession;
 import org.springframework.web.socket.handler.TextWebSocketHandler;
 
+import javax.annotation.PostConstruct;
 import java.util.List;
 import java.util.Map;
 
 @Slf4j
+@RequiredArgsConstructor
 @Controller
 @RequestMapping("/ws/messages.do")
 public class ItsWebSocketHandler extends TextWebSocketHandler {
 
-    public ItsWebSocketHandler() {
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
+
+    @PostConstruct
+    public void init() {
 
         Runtime.getRuntime().addShutdownHook(new Thread(() -> {
-            for (Map.Entry<org.springframework.web.socket.WebSocketSession, ItsWebSocketSession> obj : ItsWebSocketSessionManager.getInstance().getMap().entrySet()) {
+            for (Map.Entry<org.springframework.web.socket.WebSocketSession, ItsWebSocketSession> obj : this.itsWebSocketSessionManager.getMap().entrySet()) {
                 if (obj.getValue() != null) {
+                    log.error("Runtime ShutdownHook: {}", obj.getValue());
                 }
             }
         }));
@@ -36,7 +43,7 @@ public class ItsWebSocketHandler extends TextWebSocketHandler {
         super.afterConnectionEstablished(session);
 
         ItsWebSocketSession vo = new ItsWebSocketSession(this, session);
-        ItsWebSocketSessionManager.getInstance().addSession(session, vo);
+        this.itsWebSocketSessionManager.addSession(session, vo);
     }
 
     //클라이언트가 웹소켓 서버로 메시지를 전송했을 때 실행
@@ -44,7 +51,7 @@ public class ItsWebSocketHandler extends TextWebSocketHandler {
     protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
         log.info("handleTextMessage: " + session.getRemoteAddress() + ",  Uri[" + session.getUri() + "], UUID[" + session.getId() + "], message[" + message.getPayload() + "]");
         log.info("Payload: {}", message.getPayload());
-        ItsWebSocketSession sessionClient = ItsWebSocketSessionManager.getInstance().getSession(session);
+        ItsWebSocketSession sessionClient = this.itsWebSocketSessionManager.getSession(session);
         if (sessionClient == null) {
             log.error("Request session not found: {}", session);
             session.close();
@@ -64,7 +71,7 @@ public class ItsWebSocketHandler extends TextWebSocketHandler {
     @Override
     public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
         log.info("afterConnectionClosed: " + session.getRemoteAddress() + ",  URI: " + session.getUri() + ", UUID: " + session.getId());
-        ItsWebSocketSessionManager.getInstance().removeSession(session);
+        this.itsWebSocketSessionManager.removeSession(session);
         super.afterConnectionClosed(session, status);
     }
 

+ 15 - 11
src/main/java/com/its/op/websocket/ItsWebSocketSessionManager.java

@@ -2,31 +2,35 @@ package com.its.op.websocket;
 
 import com.its.utils.Counter;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 import org.springframework.web.socket.TextMessage;
 import org.springframework.web.socket.WebSocketSession;
 
+import javax.annotation.PostConstruct;
 import java.util.concurrent.ConcurrentHashMap;
 
 @Slf4j
+@Component
 public class ItsWebSocketSessionManager {
 
-    private static ItsWebSocketSessionManager _instance = null;
+    //private static ItsWebSocketSessionManager _instance = null;
 
     private volatile boolean serverRun;
     private Counter sessions;
     private ConcurrentHashMap<WebSocketSession, ItsWebSocketSession> sessionMap;
 
-    public static ItsWebSocketSessionManager getInstance() {
-        if (_instance == null) {
-            synchronized (ItsWebSocketSessionManager.class) {
-                if (_instance == null)
-                    _instance = new ItsWebSocketSessionManager();
-            }
-        }
-        return _instance;
-    }
+//    public static ItsWebSocketSessionManager getInstance() {
+//        if (_instance == null) {
+//            synchronized (ItsWebSocketSessionManager.class) {
+//                if (_instance == null)
+//                    _instance = new ItsWebSocketSessionManager();
+//            }
+//        }
+//        return _instance;
+//    }
 
-    private ItsWebSocketSessionManager() {
+    @PostConstruct
+    private void init() {
         this.sessions = new Counter();
         this.sessionMap = new ConcurrentHashMap<>();
     }

+ 1 - 2
src/main/java/com/its/op/xnettcp/client/codec/NettyTcpClientDecoder.java

@@ -3,7 +3,6 @@ package com.its.op.xnettcp.client.codec;
 import com.its.utils.NettyUtils;
 import com.its.utils.SysUtils;
 import io.netty.buffer.ByteBuf;
-import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.ByteToMessageDecoder;
 import lombok.extern.slf4j.Slf4j;
@@ -17,7 +16,7 @@ public class NettyTcpClientDecoder extends ByteToMessageDecoder {
     protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> list) {
 
         String ipAddress = NettyUtils.getRemoteIpAddress(ctx.channel());
-        Channel channel = ctx.channel();
+        //Channel channel = ctx.channel();
 
         int readableBytes = byteBuf.readableBytes();
         log.info("RECV_0: [{}]. ReadableBytes: {} Bytes, ReaderIndex: {}", ipAddress, readableBytes, byteBuf.readerIndex());

+ 1 - 4
src/main/java/com/its/op/xnetudp/codec/CenterCommClientEncoder.java

@@ -1,7 +1,5 @@
 package com.its.op.xnetudp.codec;
 
-import com.its.op.config.AppUtils;
-import com.its.op.config.CenterCommConfig;
 import com.its.utils.SysUtils;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
@@ -25,8 +23,7 @@ public class CenterCommClientEncoder extends MessageToMessageEncoder<Object> {
 	@Override
 	protected void encode(ChannelHandlerContext ctx, Object msg, List<Object> out) {
 
-		CenterCommConfig serverConfig = (CenterCommConfig) AppUtils.getBean(CenterCommConfig.class);
-
+		//CenterCommConfig serverConfig = (CenterCommConfig) AppUtils.getBean(CenterCommConfig.class);
 		Channel channel = ctx.channel();
 		if (!channel.isOpen()) {
 			log.error("SEND UDP: Channel Closed.");

+ 1 - 1
src/main/java/com/its/op/xnetudp/protocol/CENTER_COMM_MESSAGE.java

@@ -10,7 +10,7 @@ import java.nio.ByteOrder;
 @Slf4j
 public class CENTER_COMM_MESSAGE {
 
-	public static int CENTER_HEADER_SIZE = 10;
+	public static final int CENTER_HEADER_SIZE = 10;
 	
 	private InetSocketAddress sender;
 	

+ 3 - 3
src/main/java/com/its/op/xnetudp/protocol/CENTER_PG_STATE_RES.java

@@ -12,9 +12,9 @@ import java.nio.ByteOrder;
 @ToString
 public class CENTER_PG_STATE_RES extends CENTER_COMM_MESSAGE {
 
-	public static int STATE_RES_HEAD_SIZE = 5;
-	public static byte STATE_NORMAL = 0x00;
-	public static byte STATE_ERROR = 0x01;
+	public static final int STATE_RES_HEAD_SIZE = 5;
+	public static final byte STATE_NORMAL = 0x00;
+	public static final byte STATE_ERROR = 0x01;
 
 	private byte count;
 	private byte type;

+ 27 - 28
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_COMM_MESSAGE.java

@@ -4,12 +4,11 @@ import lombok.extern.slf4j.Slf4j;
 
 import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
 
 @Slf4j
 public class CENTER_VMS_COMM_MESSAGE {
 
-	public static int CENTER_HEADER_SIZE = 8;
+	public static final int CENTER_HEADER_SIZE = 8;
 
 	private InetSocketAddress sender;
 
@@ -45,32 +44,32 @@ public class CENTER_VMS_COMM_MESSAGE {
 		this.msgSeq       = msgSeq;
 	}
 
-	public CENTER_VMS_COMM_MESSAGE(byte[] buffer, InetSocketAddress inetSocketAddress) {
-
-		this.sender = inetSocketAddress;
-
-		ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
-		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
-
-		this.sendId       = byteBuffer.get();
-		this.recvId       = byteBuffer.get();
-		this.totalFrame   = byteBuffer.get();
-		this.currentFrame = byteBuffer.get();
-		this.msgSeq       = byteBuffer.get();
-		this.opCode       = byteBuffer.get();
-		int  length       = byteBuffer.getShort();
-		//this.length       = (short)(byteBuffer.array().length - 8);
-		if (this.length > 0) {
-			this.body = new byte[this.length];
-			byteBuffer.get(this.body);
-
-			if (length != this.length) {
-				//log.error("######################################################################, Length Error: {}, {}, {}", length, this.length, buffer.length);
-				//log.error("PACKET: {}", SysUtils.byteArrayToHex(buffer));
-			}
-		}
-		this.length = this.length;
-	}
+//	public CENTER_VMS_COMM_MESSAGE(byte[] buffer, InetSocketAddress inetSocketAddress) {
+//
+//		this.sender = inetSocketAddress;
+//
+//		ByteBuffer byteBuffer = ByteBuffer.wrap(buffer);
+//		byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
+//
+//		this.sendId       = byteBuffer.get();
+//		this.recvId       = byteBuffer.get();
+//		this.totalFrame   = byteBuffer.get();
+//		this.currentFrame = byteBuffer.get();
+//		this.msgSeq       = byteBuffer.get();
+//		this.opCode       = byteBuffer.get();
+//		int  length       = byteBuffer.getShort();
+//		//this.length       = (short)(byteBuffer.array().length - 8);
+//		if (length > 0) {
+//			this.body = new byte[this.length];
+//			byteBuffer.get(this.body);
+//
+//			if (length != this.length) {
+//				//log.error("######################################################################, Length Error: {}, {}, {}", length, this.length, buffer.length);
+//				//log.error("PACKET: {}", SysUtils.byteArrayToHex(buffer));
+//			}
+//		}
+//		this.length = (short)length;
+//	}
 
 	public String getSenderIp() {
 		return this.sender.getAddress().getHostAddress();

+ 5 - 5
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_COMMON.java

@@ -1,14 +1,15 @@
 package com.its.op.xnetudp.protocol;
 
 import com.its.utils.SysUtils;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
-@Data
-@EqualsAndHashCode(callSuper=false)
+@Getter
+@Setter
+//@EqualsAndHashCode(callSuper=false)
 public class CENTER_VMS_REQ_COMMON extends CENTER_VMS_COMM_MESSAGE {
 
 	private String cmdTime;
@@ -60,5 +61,4 @@ public class CENTER_VMS_REQ_COMMON extends CENTER_VMS_COMM_MESSAGE {
 
 	}
 
-
 }

+ 0 - 3
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_IMM_SCNR_DNLD.java

@@ -9,12 +9,10 @@ import java.nio.ByteOrder;
 public class CENTER_VMS_REQ_IMM_SCNR_DNLD extends CENTER_VMS_REQ_COMMON {
 
 	private byte Count;
-	private Long vmsCtlrNmbr;
 
 	public CENTER_VMS_REQ_IMM_SCNR_DNLD(Long id, VmsControlDto.VmsControlReq req) {
 		super(CENTER_COMM_DEFINE.INT_OP_VMS_IMMEDIATE_SCN_DNLD, 0x80, 0, id, req.getUserId(), null);
 		this.Count = 1;
-		this.vmsCtlrNmbr = id;
 	}
 
 	@Override
@@ -51,7 +49,6 @@ public class CENTER_VMS_REQ_IMM_SCNR_DNLD extends CENTER_VMS_REQ_COMMON {
 		byteBuffer.putInt(getVmsCtlrNmbr().intValue());
 
 		return byteBuffer;
-
 	}
 
 }

+ 1 - 0
src/main/java/com/its/op/xnetudp/protocol/CENTER_VMS_REQ_LUMINANCE.java

@@ -5,6 +5,7 @@ import com.its.utils.SysUtils;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 
+//@EqualsAndHashCode(callSuper = true, of = {})
 public class CENTER_VMS_REQ_LUMINANCE extends CENTER_VMS_REQ_COMMON {
 
 	byte brghMode;

+ 1 - 1
src/main/java/com/its/op/xnetudp/service/VmsServerRequestSender.java

@@ -153,7 +153,7 @@ public class VmsServerRequestSender {
     }
 
     /**
-     * VNS 시나리오 즉시 다운로드
+     * VMS 시나리오 즉시 다운로드
      * @param ctlrNmbr
      * @return
      */

+ 5 - 4
src/main/java/com/its/op/xnetudp/thread/CenterCommServerReceiver.java

@@ -26,6 +26,7 @@ import java.nio.ByteOrder;
 @Service
 public class CenterCommServerReceiver {
 
+    private final ItsWebSocketSessionManager itsWebSocketSessionManager;
     private final TbLinkManager linkManager;
     private final TbIfscManager ifscManager;
     private final TbRoadManager roadManager;
@@ -76,7 +77,7 @@ public class CenterCommServerReceiver {
                 ItsWebSocketMessage socketMessage = new ItsWebSocketMessage("traffic", notifyDto);
                 try {
                     String jsonData = this.mapper.writeValueAsString(socketMessage);
-                    ItsWebSocketSessionManager.getInstance().sendBroadcastMessage(socketMessage.getCommand(), new TextMessage(jsonData));
+                    this.itsWebSocketSessionManager.sendBroadcastMessage(socketMessage.getCommand(), new TextMessage(jsonData));
                 }
                 catch(JsonProcessingException e){
                     log.error("@@@ RECV TRF Server Message: Processing Completed, Exception: {}", notifyDto);
@@ -97,7 +98,7 @@ public class CenterCommServerReceiver {
                 byte[] vmsId;
                 byte count;
                 byte opCode = data.getOpCode();
-                byte msgSeq = data.getMsgSeq();
+                //byte msgSeq = data.getMsgSeq();
                 //log.info("OP CODE: {}, MsgSeq: {}", opCode, msgSeq);
                 switch(opCode) {
                     case CENTER_COMM_DEFINE.INT_OP_PG_STATE_RES:
@@ -117,7 +118,7 @@ public class CenterCommServerReceiver {
                         ItsWebSocketMessage socketMessage1 = new ItsWebSocketMessage("form-save", notifyDto1);
                         try {
                             String jsonData = this.mapper.writeValueAsString(socketMessage1);
-                            ItsWebSocketSessionManager.getInstance().sendBroadcastMessage(socketMessage1.getCommand(), new TextMessage(jsonData));
+                            this.itsWebSocketSessionManager.sendBroadcastMessage(socketMessage1.getCommand(), new TextMessage(jsonData));
                         }
                         catch(JsonProcessingException e){
                             log.error("@@@ RECV VMS Server Message: CenterCommServerReceiver: INT_OP_VMS_FORM_SAVE, NotifyDto Json parsing Exception: {}", notifyDto1);
@@ -136,7 +137,7 @@ public class CenterCommServerReceiver {
                         ItsWebSocketMessage socketMessage2 = new ItsWebSocketMessage("form-download", notifyDto2);
                         try {
                             String jsonData = this.mapper.writeValueAsString(socketMessage2);
-                            ItsWebSocketSessionManager.getInstance().sendBroadcastMessage(socketMessage2.getCommand(), new TextMessage(jsonData));
+                            this.itsWebSocketSessionManager.sendBroadcastMessage(socketMessage2.getCommand(), new TextMessage(jsonData));
                         }
                         catch(JsonProcessingException e){
                             log.error("@@@ RECV VMS Server Message: CenterCommServerReceiver: INT_OP_VMS_FORM_DOWNLOAD, NotifyDto Json parsing Exception: {}", notifyDto2);

+ 3 - 3
src/main/java/com/its/utils/ItsUtils.java

@@ -172,9 +172,8 @@ public final class ItsUtils
 	}
 	public static String getDayOfWeek(int week) {
 
-		String sWeek = UNKNOWN_WEEK;
-		switch(week)
-		{
+		String sWeek;// = UNKNOWN_WEEK;
+		switch(week) {
 			case 1: sWeek = SUNDAY; 	break;
 			case 2: sWeek = MONDAY; 	break;
 			case 3: sWeek = TUESDAY; 	break;
@@ -182,6 +181,7 @@ public final class ItsUtils
 			case 5: sWeek = THURSDAY; 	break;
 			case 6: sWeek = FRIDAY; 	break;
 			case 7: sWeek = SATURDAY; 	break;
+			default: sWeek = UNKNOWN_WEEK; break;
 		}
 		return sWeek;
 	}

+ 2 - 2
src/main/java/com/its/utils/ServiceThread.java

@@ -43,8 +43,8 @@ public abstract class ServiceThread implements Runnable {
 
             long beginTime = System.currentTimeMillis();
             this.thread.join(this.getJoinTime());
-            long eclipseTime = System.currentTimeMillis() - beginTime;
-            log.info("join thread {}, eclipse time(ms) {}", this.getServiceName(), this.getJoinTime());
+            long elapsedTime = System.currentTimeMillis() - beginTime;
+            log.info("join thread {}, elapsed time(ms) {}", this.getServiceName(), elapsedTime);//this.getJoinTime());
         } catch (InterruptedException e) {
             log.error("shutdown: InterruptedException");
         }

+ 1 - 0
src/main/java/com/its/utils/TimeUtils.java

@@ -101,6 +101,7 @@ public class TimeUtils {
 			case TYPE_PRCS_DAY:   cal.add(Calendar.DATE, 1); break;
 			case TYPE_PRCS_MONTH: cal.add(Calendar.MONTH, 1); break;
 			case TYPE_PRCS_YEAR: cal.add(Calendar.YEAR, 1); break;
+			default: cal.add(Calendar.MINUTE, 0); break;	// 여기 들어오면 안됌
 		}
 		cal.add(Calendar.SECOND, -1);
 		return new SimpleDateFormat("yyyyMMddHHmmss").format(cal.getTime());