UnitSystService.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.its.bis.service;
  2. import com.its.app.AppUtils;
  3. import com.its.app.utils.SysUtils;
  4. import com.its.bis.config.ApplicationConfig;
  5. import com.its.bis.dao.mapper.UnitSystMapper;
  6. import com.its.bis.entity.TbUnitSyst;
  7. import com.its.bis.entity.TbUnitSystStts;
  8. import com.its.bis.process.DbmsData;
  9. import com.its.bis.process.DbmsDataProcess;
  10. import com.its.bis.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 mapper;
  33. private final ConcurrentHashMap<String, TbUnitSyst> dataMap = 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("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("UnitSystService.init: UnknownHostException");
  52. }
  53. log.info("UnitSystService.init. _srcIpAddr: {}.", UnitSystService._srcIpAddr);
  54. log.info("UnitSystService.init. processId: {}.", this.processId);
  55. log.info("UnitSystService.init: ..end.");
  56. }
  57. @PreDestroy
  58. public void destroyService() {
  59. log.error("UnitSystService.destroy. system terminated.......");
  60. updateUnitSystStts(false);
  61. // if (OS.isWindows()) {
  62. // MainUI UI = MainUI.getInstance();
  63. // if (UI != null) {
  64. // System.exit(0);
  65. // }
  66. // }
  67. }
  68. public void loadMaster() {
  69. try {
  70. // 초기화, 기존 정보 삭제로 초기화
  71. for (Map.Entry<String, TbUnitSyst> e : this.dataMap.entrySet()) {
  72. e.getValue().setDelYn("Y");
  73. }
  74. List<TbUnitSyst> systList = this.mapper.selectAll();
  75. log.info("UnitSystService.selectAll(), {} EA", systList.size());
  76. for (TbUnitSyst unit : systList) {
  77. if (unit.getSystId().equals(this.processId)) {
  78. this.unitSystStts.setSYST_ID(this.processId);
  79. String localIp = unit.getSystIp1().trim();
  80. long ipAddr = SysUtils.ipToLong(localIp);
  81. UnitSystService._srcIpAddr = String.format("%03d.%03d.%03d.%03d-", (ipAddr>>24)&0xFF, (ipAddr>>16)&0xFF, (ipAddr>>8)&0xFF, ipAddr&0xFF);
  82. log.info("UnitSystService.loadMaster: _srcIpAddr: {}.", UnitSystService._srcIpAddr);
  83. }
  84. if (unit.getSystType().contentEquals("UOT")) {
  85. unit.setSystIp1(unit.getSystIp1().trim());
  86. this.dataMap.put(unit.getSystId(), unit);
  87. }
  88. }
  89. }
  90. catch (Exception e) {
  91. log.error("UnitSystService.selectAll: Exception: {}.", e.toString());
  92. }
  93. }
  94. public void updateUnitSystStts(boolean isRun) {
  95. String keyData = "unit";
  96. MDC.put("id", keyData);
  97. boolean insHs = false;
  98. Calendar cal = Calendar.getInstance();
  99. int min = cal.get(Calendar.MINUTE);
  100. if ((min % 5) == 0 && this.historyMin != min) {
  101. insHs = true;
  102. this.historyMin = min;
  103. }
  104. String SYST_STTS_CD = isRun ? "SPS1" : "SPS3";
  105. this.unitSystStts.setSYST_ID(this.processId);
  106. this.unitSystStts.setUPDT_DT(SysUtils.getSysTime());
  107. this.unitSystStts.setSYST_STTS_CD(SYST_STTS_CD);
  108. if (!isRun) {
  109. this.mapper.updateUnitSystStts(this.unitSystStts);
  110. if (insHs) {
  111. this.mapper.insertUnitSystSttsHs(this.unitSystStts);
  112. }
  113. }
  114. else {
  115. this.dbmsDataProcess.add(new DbmsData(DbmsDataType.DBMS_DATA_UNIT_SYST_STTS, insHs, this.unitSystStts));
  116. if (insHs) {
  117. loadMaster();
  118. }
  119. }
  120. MDC.remove(keyData);
  121. MDC.clear();
  122. }
  123. }