| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package com.its.vms.service;
- import com.its.app.AppUtils;
- import com.its.app.utils.SysUtils;
- import com.its.vms.config.ApplicationConfig;
- import com.its.vms.dao.mapper.VmsCtlrMapper;
- import com.its.vms.dto.NET;
- import com.its.vms.dto.TbVmsCtlrDto;
- import com.its.vms.dto.TbVmsCtlrSttsDto;
- import com.its.vms.entity.TbVmsCtlr;
- import com.its.vms.process.DbmsData;
- import com.its.vms.process.DbmsDataProcess;
- import com.its.vms.process.DbmsDataType;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.PostConstruct;
- import java.io.File;
- import java.util.*;
- @Slf4j
- @Service
- @RequiredArgsConstructor
- @Transactional(rollbackFor = {Exception.class})
- public class VmsCtlrService {
- private final ApplicationConfig config;
- private final AppRepositoryService repoService;
- private final VmsCtlrMapper vmsCtlrMapper;
- private int historyMin;
- @PostConstruct
- private void init() {
- log.info("VmsCtlrService.init: Start.");
- this.historyMin = -1;
- log.info("VmsCtlrService.init: ..End.");
- }
- public void loadDb() {
- loadCtlrInfo();
- loadCtlrSttsInfo();
- }
- public void loadCtlrInfo() {
- this.repoService.initCtlrInfo();
- try {
- List<TbVmsCtlrDto> infoList = this.vmsCtlrMapper.selectAll();
- log.info("VmsCtlrService.loadCtlrInfo: {} EA", infoList.size());
- for (TbVmsCtlrDto dto : infoList) {
- log.info("VmsCtlrService.loadCtlrInfo: {}", dto);
- TbVmsCtlr obj = dto.toEntity();
- if (obj.getCtlrId().trim().equals("")) {
- log.error("VmsCtlrService.loadCtlrInfo: Controller Ip Address Error: {}", obj);
- continue;
- }
- this.repoService.putCtrlMap(obj);
- this.repoService.putIpAddrMap(obj);
- obj.getStts().initUnknown();
- obj.setLocalFormDir(this.config.getFtpFormDir() + File.separator + obj.getCtlrNmbr());
- obj.setFtpFormDir(ApplicationConfig.FTP_FORM + File.separator + obj.getCtlrNmbr() + File.separator);
- obj.setFtpDownload(true);
- this.config.makeDirectory(obj.getLocalFormDir(), "VMS " + obj.getCtlrNmbr() + " Directory.");
- }
- }
- catch (Exception e) {
- log.error("VmsCtlrService.loadCtlrInfo: {}", e.toString());
- }
- this.repoService.getCtlrMap().forEach((key, obj) -> {
- log.info("VmsCtlrService.loadCtlrInfo:: {}", obj.toString());
- });
- }
- public void loadCtlrSttsInfo() {
- try {
- List<TbVmsCtlrSttsDto> infoList = this.vmsCtlrMapper.selectCtlrStts();
- log.info("VmsCtlrService.loadCtlrSttsInfo: {} EA", infoList.size());
- infoList.forEach(dto -> {
- TbVmsCtlr obj = this.repoService.getCtrlMap(dto.getVmsCtlrNmbr());
- if (obj == null) {
- log.error("VmsCtlrService.loadCtlrSttsInfo: Not Found VMS {}.", dto.getVmsCtlrNmbr());
- return;
- }
- obj.getStts().updateStts(dto);
- });
- }
- catch (Exception e) {
- log.error("VmsCtlrService.loadCtlrSttsInfo: {}", e.toString());
- }
- }
- public void updateCtlrStts(boolean isRun, TbVmsCtlr AObj) {
- 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;
- }
- //제어기 상태정보 업데이트
- List<TbVmsCtlrSttsDto> ctlrSttsList = Collections.synchronizedList(new ArrayList<>());
- String UPDT_DT = SysUtils.getSysTime();
- int normal = 0;
- int error = 0;
- for (Map.Entry<Long, TbVmsCtlr> e : this.repoService.getCtlrMap().entrySet()) {
- TbVmsCtlr obj = e.getValue();
- if (AObj != null && !Objects.equals(AObj.getCtlrNmbr(), obj.getCtlrNmbr())) {
- continue;
- }
- obj.getStts().setUpdtDt(UPDT_DT);
- if (isRun && obj.getNetState() >= NET.LOGINED && obj.getChannel() != null) {
- //제어기 통신정상
- normal++;
- obj.getStts().setCmncSttsCd("CMS0");
- obj.getStts().setCommSttsCd("CMS0");
- }
- else {
- //제어기 통신이상
- error++;
- obj.getStts().initError();
- }
- if (isRun) {
- ctlrSttsList.add(obj.getStts());
- }
- else {
- this.vmsCtlrMapper.updateCtlrStts(obj.getStts());
- if (insHs) {
- this.vmsCtlrMapper.insertCtlrSttsHs(obj.getStts());
- }
- }
- }
- // 제어기 상태정보 DB 업데이트
- if (!ctlrSttsList.isEmpty()) {
- DbmsDataProcess dbmsDataProcess = (DbmsDataProcess) AppUtils.getBean(DbmsDataProcess.class);
- dbmsDataProcess.add(new DbmsData(DbmsDataType.DBMS_DATA_CTLR_STTS_LIST, insHs, ctlrSttsList));
- }
- log.info("VmsCtlrService.updateCtlrStts: total {}, normal {}, error {}", normal + error, normal, error);
- }
- }
|