CodeManager.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package com.its.op.global;
  2. import com.its.op.model.entity.database.CmmnCd;
  3. import com.its.op.model.entity.database.SectGradClsf;
  4. import com.its.op.repository.database.CmmnCdRepository;
  5. import com.its.op.repository.database.SectGradClsfRepository;
  6. import lombok.Getter;
  7. import lombok.RequiredArgsConstructor;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.springframework.stereotype.Component;
  10. import javax.annotation.PostConstruct;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.concurrent.ConcurrentHashMap;
  14. @Slf4j
  15. @RequiredArgsConstructor
  16. @Getter
  17. @Component
  18. public class CodeManager {
  19. private final CmmnCdRepository repo;
  20. private final SectGradClsfRepository sectGradClsfRepository;
  21. private static final String defUnknownCode = "X";
  22. private static final String defUnknownDesc = "UNKNOWN";
  23. public static final String EDTN_CD = "EDI"; // 편집모드
  24. public static final String DAY_TYPE_CD = "DTW"; // 요일유형
  25. public static final String SYST_STTS_CD = "SPS"; // 프로세스 상태
  26. public static final String CMTR_GRAD_CD = "LTC"; // 소통등급
  27. public static final String PRCN_SORC = "CST"; // 가공소스
  28. public static final String ADJS_SORC = "MCS"; // 보정소스
  29. public static final String NODE_TYPE = "NDT"; // 노드유형
  30. public static final String ROAD_USE = "RDU"; // 도로사용여부
  31. public static final String ROAD_RANK = "RDR"; // 도로등급
  32. public static final String ROAD_TYPE = "RDT"; // 도로유형
  33. public static final String MULTI_LINK = "MLT"; // 중용구간
  34. public static final String LINK_CONNECT = "CTR"; // 연결로
  35. public static final String REST_VEH = "PLV"; // 통행제한차량
  36. public static final String SECT_GRAD_CD = "SRT"; // 구간 등급 코드
  37. public static final String DRCT_CD = "IFD"; // 방향 코드
  38. public static final String HLDY_DAY_CD = "LHT"; // 휴일유형코드
  39. public static final String CNCT_INTN_TYPE_CD = "COT"; // 연계기관유형코드
  40. public static final String CMNC_STTS_CD = "CMS"; // 통신상태코드
  41. public static final String MODL_STTS_CD = "MOS"; // 모듈상태
  42. public static final String PWER_STTS_CD = "PWS"; // 전원상태
  43. public static final String DOOR_STTS_CD = "CDS"; // 도어상태
  44. public static final String FAN_STTS_CD = "PAS"; // 팬상태
  45. public static final String HETR_STTS_CD = "HTS"; // 히터상태
  46. public static final String DTCT_TYPE_CD = "DTT"; // 검지기유형
  47. public static final String VMS_USAG_TYPE_CD = "VUT"; // VMS 용도 유형 코드
  48. public static final String VMS_TYPE_CD = "VMP"; // VMS 유형 코드
  49. private static final ConcurrentHashMap<String, HashMap<String, Code>> codes = new ConcurrentHashMap<>();
  50. @PostConstruct
  51. void init() {
  52. load();
  53. }
  54. public void load() {
  55. /*
  56. loadCode(DAY_TYPE_CD);
  57. loadCode(CMTR_GRAD_CD);
  58. loadCode(ADJS_SORC);
  59. loadCode(NODE_TYPE);
  60. loadCode(ROAD_USE);
  61. loadCode(ROAD_RANK);
  62. loadCode(ROAD_TYPE);
  63. loadCode(MULTI_LINK);
  64. loadCode(LINK_CONNECT);
  65. loadCode(REST_VEH);
  66. loadCode(DRCT_CD);
  67. loadCode(SECT_GRAD_CD);
  68. loadCode(HLDY_DAY_CD);
  69. */
  70. loadAllCode();
  71. //loadSectGradStup();
  72. log.info("=== {}", codes);
  73. }
  74. private void loadSectGradStup() {
  75. HashMap<String, Code> codeMap = new HashMap<>();
  76. List<SectGradClsf> codeList = sectGradClsfRepository.findAll();
  77. for (SectGradClsf cd : codeList) {
  78. codeMap.put(cd.getSECT_GRAD_CD(), new Code(cd.getSECT_GRAD_CD(), cd.getSECT_GRAD_NM(), cd.getSECT_GRAD_NM()));
  79. }
  80. codes.put(SECT_GRAD_CD, codeMap);
  81. }
  82. public void loadCode(String CMMN_CLSF_CD) {
  83. HashMap<String, Code> codeMap = new HashMap<>();
  84. List<CmmnCd> codeList = this.repo.findAllByCmmnClsfCd(CMMN_CLSF_CD);
  85. if (codeList != null) {
  86. for (CmmnCd cd : codeList) {
  87. codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
  88. }
  89. }
  90. codes.put(CMMN_CLSF_CD, codeMap);
  91. }
  92. public void loadAllCode() {
  93. List<CmmnCd> codeList = this.repo.findAll();
  94. for (CmmnCd cd : codeList) {
  95. HashMap<String, Code> codeMap = codes.get(cd.getCMMN_CLSF_CD());
  96. if (codeMap == null) {
  97. codeMap = new HashMap<>();
  98. codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
  99. codes.put(cd.getCMMN_CLSF_CD(), codeMap);
  100. }
  101. else {
  102. codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
  103. }
  104. }
  105. }
  106. public static String getCodeDesc(String CMMN_CLSF_CD, String CMMN_CD) {
  107. HashMap<String, Code> codeMap = codes.get(CMMN_CLSF_CD);
  108. if (codeMap != null) {
  109. Code code = codeMap.get(CMMN_CD);
  110. if (code != null) {
  111. return "[" + CMMN_CD + "] " + code.getDesc();
  112. }
  113. }
  114. return "[" + CMMN_CD + "] " + defUnknownDesc;
  115. }
  116. public static String getCodeDescShort(String CMMN_CLSF_CD, String CMMN_CD) {
  117. HashMap<String, Code> codeMap = codes.get(CMMN_CLSF_CD);
  118. if (codeMap != null) {
  119. Code code = codeMap.get(CMMN_CD);
  120. if (code != null) {
  121. return code.getDesc();
  122. }
  123. }
  124. return defUnknownDesc;
  125. }
  126. }