UnitSystService.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.its.cctv.service;
  2. import com.its.app.AppUtils;
  3. import com.its.app.utils.SysUtils;
  4. import com.its.cctv.config.ApplicationConfig;
  5. import com.its.cctv.dao.mapper.UnitSystMapper;
  6. import com.its.cctv.entity.TbUnitSyst;
  7. import com.its.cctv.entity.TbUnitSystStts;
  8. import com.its.cctv.process.DbmsData;
  9. import com.its.cctv.process.DbmsDataProcess;
  10. import com.its.cctv.process.DbmsDataType;
  11. import lombok.Getter;
  12. import lombok.RequiredArgsConstructor;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.slf4j.MDC;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import javax.annotation.PostConstruct;
  18. import javax.annotation.PreDestroy;
  19. import java.net.InetAddress;
  20. import java.net.UnknownHostException;
  21. import java.util.Calendar;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.concurrent.ConcurrentHashMap;
  25. @Slf4j
  26. @Getter
  27. @Service
  28. @RequiredArgsConstructor
  29. @Transactional(rollbackFor = {Exception.class})
  30. public class UnitSystService {
  31. private final DbmsDataProcess dbmsDataProcess;
  32. private final UnitSystMapper unitSystMapper;
  33. private final ConcurrentHashMap<String, TbUnitSyst> unitSystMap = new ConcurrentHashMap<>();
  34. private final TbUnitSystStts unitSystStts = TbUnitSystStts.builder().build();
  35. private String processId;
  36. private int historyMin;
  37. public static String _srcIpAddr;
  38. @PostConstruct
  39. private void init() {
  40. log.info("[INIT...] UnitSystService.init: start.");
  41. ApplicationConfig applicationConfig = (ApplicationConfig) AppUtils.getBean(ApplicationConfig.class);
  42. this.processId = applicationConfig.getId();
  43. this.historyMin = -1;
  44. try {
  45. InetAddress local = InetAddress.getLocalHost();
  46. String localIp = local.getHostAddress();
  47. long ipAddr = SysUtils.ipToLong(localIp);
  48. UnitSystService._srcIpAddr = String.format("%03d.%03d.%03d.%03d-", (ipAddr>>24)&0xFF, (ipAddr>>16)&0xFF, (ipAddr>>8)&0xFF, (ipAddr)&0xFF);
  49. } catch (UnknownHostException e) {
  50. UnitSystService._srcIpAddr = "127.000.000.001-";
  51. log.error("init: UnknownHostException");
  52. }
  53. log.info("[INIT...] UnitSystService.init. _srcIpAddr: {}", UnitSystService._srcIpAddr);
  54. log.info("[INIT...] UnitSystService.init. processId: {}", this.processId);
  55. log.info("[INIT...] UnitSystService.init: ..end.");
  56. }
  57. @PreDestroy
  58. public void destroyService() {
  59. log.error("UnitSystService.destroy. system terminated.......");
  60. updateUnitSystStts(false);
  61. }
  62. public void loadMaster() {
  63. try {
  64. // 초기화, 기존 정보 삭제로 초기화
  65. for (Map.Entry<String, TbUnitSyst> e : this.unitSystMap.entrySet()) {
  66. e.getValue().setDEL_YN("Y");
  67. }
  68. List<TbUnitSyst> systList = this.unitSystMapper.selectAll();
  69. log.info("[LOADING...] UnitSystService.selectAll(), {} EA", systList.size());
  70. for (TbUnitSyst unit : systList) {
  71. if (unit.getSYST_ID().equals(this.processId)) {
  72. this.unitSystStts.setSYST_ID(this.processId);
  73. String localIp = unit.getSYST_IP_1().trim();
  74. long ipAddr = SysUtils.ipToLong(localIp);
  75. UnitSystService._srcIpAddr = String.format("%03d.%03d.%03d.%03d-", (ipAddr>>24)&0xFF, (ipAddr>>16)&0xFF, (ipAddr>>8)&0xFF, (ipAddr>>0)&0xFF);
  76. log.info("[LOADING...] UnitSystService.loadMaster: _srcIpAddr: {}", UnitSystService._srcIpAddr);
  77. }
  78. if (unit.getSYST_TYPE().contentEquals("UOT")) {
  79. unit.setSYST_IP_1(unit.getSYST_IP_1().trim());
  80. this.unitSystMap.put(unit.getSYST_ID(), unit);
  81. }
  82. }
  83. }
  84. catch (Exception e) {
  85. log.error("[LOADING...] UnitSystService.selectAll: Exception: {}", e.toString());
  86. }
  87. }
  88. public void updateUnitSystStts(boolean isRun) {
  89. String keyData = "unit";
  90. MDC.put("id", keyData);
  91. boolean insHs = false;
  92. Calendar cal = Calendar.getInstance();
  93. int min = cal.get(Calendar.MINUTE);
  94. if ((min % 5) == 0 && this.historyMin != min) {
  95. insHs = true;
  96. this.historyMin = min;
  97. }
  98. String SYST_STTS_CD = isRun ? "SPS1" : "SPS3";
  99. this.unitSystStts.setSYST_ID(this.processId);
  100. this.unitSystStts.setUPDT_DT(SysUtils.getSysTime());
  101. this.unitSystStts.setSYST_STTS_CD(SYST_STTS_CD);
  102. if (!isRun) {
  103. this.unitSystMapper.updateUnitSystStts(this.unitSystStts);
  104. if (insHs) {
  105. this.unitSystMapper.insertUnitSystSttsHs(this.unitSystStts);
  106. }
  107. }
  108. else {
  109. this.dbmsDataProcess.add(new DbmsData(DbmsDataType.DBMS_DATA_UNIT_SYST_STTS, insHs, this.unitSystStts));
  110. if (insHs) {
  111. loadMaster();
  112. }
  113. }
  114. MDC.remove(keyData);
  115. MDC.clear();
  116. }
  117. }