| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package com.its.cctv.service;
- import com.its.app.AppUtils;
- import com.its.app.utils.SysUtils;
- import com.its.cctv.config.ApplicationConfig;
- import com.its.cctv.dao.mapper.UnitSystMapper;
- import com.its.cctv.entity.TbUnitSyst;
- import com.its.cctv.entity.TbUnitSystStts;
- import com.its.cctv.process.DbmsData;
- import com.its.cctv.process.DbmsDataProcess;
- import com.its.cctv.process.DbmsDataType;
- import lombok.Getter;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.slf4j.MDC;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import java.util.Calendar;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.ConcurrentHashMap;
- @Slf4j
- @Getter
- @Service
- @RequiredArgsConstructor
- @Transactional(rollbackFor = {Exception.class})
- public class UnitSystService {
- private final DbmsDataProcess dbmsDataProcess;
- private final UnitSystMapper unitSystMapper;
- private final ConcurrentHashMap<String, TbUnitSyst> unitSystMap = new ConcurrentHashMap<>();
- private final TbUnitSystStts unitSystStts = TbUnitSystStts.builder().build();
- private String processId;
- private int historyMin;
- public static String _srcIpAddr;
- @PostConstruct
- private void init() {
- log.info("[INIT...] UnitSystService.init: start.");
- ApplicationConfig applicationConfig = (ApplicationConfig) AppUtils.getBean(ApplicationConfig.class);
- this.processId = applicationConfig.getId();
- this.historyMin = -1;
- try {
- InetAddress local = InetAddress.getLocalHost();
- String localIp = local.getHostAddress();
- long ipAddr = SysUtils.ipToLong(localIp);
- UnitSystService._srcIpAddr = String.format("%03d.%03d.%03d.%03d-", (ipAddr>>24)&0xFF, (ipAddr>>16)&0xFF, (ipAddr>>8)&0xFF, (ipAddr)&0xFF);
- } catch (UnknownHostException e) {
- UnitSystService._srcIpAddr = "127.000.000.001-";
- log.error("init: UnknownHostException");
- }
- log.info("[INIT...] UnitSystService.init. _srcIpAddr: {}", UnitSystService._srcIpAddr);
- log.info("[INIT...] UnitSystService.init. processId: {}", this.processId);
- log.info("[INIT...] UnitSystService.init: ..end.");
- }
- @PreDestroy
- public void destroyService() {
- log.error("UnitSystService.destroy. system terminated.......");
- updateUnitSystStts(false);
- }
- public void loadMaster() {
- try {
- // 초기화, 기존 정보 삭제로 초기화
- for (Map.Entry<String, TbUnitSyst> e : this.unitSystMap.entrySet()) {
- e.getValue().setDEL_YN("Y");
- }
- List<TbUnitSyst> systList = this.unitSystMapper.selectAll();
- log.info("[LOADING...] UnitSystService.selectAll(), {} EA", systList.size());
- for (TbUnitSyst unit : systList) {
- if (unit.getSYST_ID().equals(this.processId)) {
- this.unitSystStts.setSYST_ID(this.processId);
- String localIp = unit.getSYST_IP_1().trim();
- long ipAddr = SysUtils.ipToLong(localIp);
- UnitSystService._srcIpAddr = String.format("%03d.%03d.%03d.%03d-", (ipAddr>>24)&0xFF, (ipAddr>>16)&0xFF, (ipAddr>>8)&0xFF, (ipAddr>>0)&0xFF);
- log.info("[LOADING...] UnitSystService.loadMaster: _srcIpAddr: {}", UnitSystService._srcIpAddr);
- }
- if (unit.getSYST_TYPE().contentEquals("UOT")) {
- unit.setSYST_IP_1(unit.getSYST_IP_1().trim());
- this.unitSystMap.put(unit.getSYST_ID(), unit);
- }
- }
- }
- catch (Exception e) {
- log.error("[LOADING...] UnitSystService.selectAll: Exception: {}", e.toString());
- }
- }
- public void updateUnitSystStts(boolean isRun) {
- String keyData = "unit";
- MDC.put("id", keyData);
- boolean insHs = false;
- Calendar cal = Calendar.getInstance();
- int min = cal.get(Calendar.MINUTE);
- if ((min % 5) == 0 && this.historyMin != min) {
- insHs = true;
- this.historyMin = min;
- }
- String SYST_STTS_CD = isRun ? "SPS1" : "SPS3";
- this.unitSystStts.setSYST_ID(this.processId);
- this.unitSystStts.setUPDT_DT(SysUtils.getSysTime());
- this.unitSystStts.setSYST_STTS_CD(SYST_STTS_CD);
- if (!isRun) {
- this.unitSystMapper.updateUnitSystStts(this.unitSystStts);
- if (insHs) {
- this.unitSystMapper.insertUnitSystSttsHs(this.unitSystStts);
- }
- }
- else {
- this.dbmsDataProcess.add(new DbmsData(DbmsDataType.DBMS_DATA_UNIT_SYST_STTS, insHs, this.unitSystStts));
- if (insHs) {
- loadMaster();
- }
- }
- MDC.remove(keyData);
- MDC.clear();
- }
- }
|