|
@@ -2,11 +2,13 @@ package com.its.safe.service;
|
|
|
|
|
|
import com.its.app.utils.Elapsed;
|
|
|
import com.its.safe.config.ApplicationConfig;
|
|
|
+import com.its.safe.dao.mapper.its.VmsMapper;
|
|
|
import com.its.safe.dao.mapper.safe.VmsSafeMapper;
|
|
|
-import com.its.safe.dto.safe.TbMessageDto;
|
|
|
-import com.its.safe.entity.safe.TbArea;
|
|
|
-import com.its.safe.entity.safe.TbMessage;
|
|
|
-import com.its.safe.entity.safe.TbReadCheck;
|
|
|
+import com.its.safe.dto.its.ItsDbTimeParam;
|
|
|
+import com.its.safe.dto.its.TbVmsCtlrDto;
|
|
|
+import com.its.safe.entity.its.*;
|
|
|
+import com.its.safe.entity.safe.Message;
|
|
|
+import com.its.safe.entity.safe.ReadCheck;
|
|
|
import com.its.safe.process.DbmsDataProcess;
|
|
|
import lombok.Getter;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -14,8 +16,11 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.StringTokenizer;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
@Slf4j
|
|
|
@Getter
|
|
@@ -25,42 +30,108 @@ import java.util.StringTokenizer;
|
|
|
public class VmsSafeAdapterService {
|
|
|
|
|
|
private final ApplicationConfig appConfig;
|
|
|
+ private final ConcurrentHashMap<Long, TbVmsCtlrDto> vmsCtlrMap = new ConcurrentHashMap<>();
|
|
|
private final DbmsDataProcess dbmsDataProcess;
|
|
|
+ private final VmsMapper vmsMapper;
|
|
|
private final VmsSafeMapper vmsSafeMapper;
|
|
|
|
|
|
public void run() {
|
|
|
Elapsed elapsed = new Elapsed();
|
|
|
selectArea();
|
|
|
-
|
|
|
+ selectVmsCtlrInfo();
|
|
|
selectNewSafeMessage();
|
|
|
updateConnCheck();
|
|
|
log.info("VmsSafeAdapterService.run:: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
|
|
|
}
|
|
|
|
|
|
+ public void selectVmsCtlrInfo() {
|
|
|
+ Elapsed elapsed = new Elapsed();
|
|
|
+ try {
|
|
|
+ List<TbVmsCtlr> vmsList = this.vmsMapper.selectVmsCtlrInfo();
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsCtlrInfo(), {} EA", vmsList.size());
|
|
|
+ for (Map.Entry<Long, TbVmsCtlrDto> e : this.vmsCtlrMap.entrySet()) {
|
|
|
+ // 초기화, 기존 정보 삭제로 초기화
|
|
|
+ e.getValue().setDelYn("Y");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (TbVmsCtlr ctlr : vmsList) {
|
|
|
+ TbVmsCtlrDto obj = ctlr.toDto();
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsCtlrInfo: {}.", obj);
|
|
|
+ this.vmsCtlrMap.put(obj.getVmsCtlrNmbr(), obj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ log.error("VmsSafeAdapterService.selectVmsCtlrInfo: Exception: {}.", e.toString());
|
|
|
+ }
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsCtlrInfo: {}", this.vmsCtlrMap);
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsCtlrInfo:: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
|
|
|
+ }
|
|
|
+
|
|
|
public void selectNewSafeMessage() {
|
|
|
Elapsed elapsed = new Elapsed();
|
|
|
try {
|
|
|
- List<TbReadCheck> checkList = this.vmsSafeMapper.selectNewVmsSafeMessage(this.appConfig.getSafeSystemId());
|
|
|
+ ItsDbTimeParam param = ItsDbTimeParam.builder()
|
|
|
+ .msgDsplEndMin(this.appConfig.getMsgDsplEndMin())
|
|
|
+ .msgDsplClearMin(this.appConfig.getMsgDsplClearMin()).build();
|
|
|
+ ItsDbTime dbTime = this.vmsMapper.getCurrentTime(param);
|
|
|
+ log.info("VmsSafeAdapterService.selectNewSafeMessage(), {}", dbTime);
|
|
|
+ List<ReadCheck> checkList = this.vmsSafeMapper.selectNewVmsSafeMessage(this.appConfig.getSafeSystemId());
|
|
|
log.info("VmsSafeAdapterService.selectNewSafeMessage(), {} EA", checkList.size());
|
|
|
- for (TbReadCheck chkMessage : checkList) {
|
|
|
+ for (ReadCheck chkMessage : checkList) {
|
|
|
log.info("VmsSafeAdapterService.selectNewSafeMessage: {}.", chkMessage.toDto());
|
|
|
|
|
|
- List<TbMessage> messageList = this.vmsSafeMapper.selectVmsSafeMessage(chkMessage.getMessageSeq());
|
|
|
- for (TbMessage message : messageList) {
|
|
|
- TbMessageDto msgDto = message.toDto();
|
|
|
- log.info("VmsSafeAdapterService.selectVmsSafeMessage: {}.", msgDto);
|
|
|
-
|
|
|
-// String[] codes = msgDto.getAreaCode().split(","); // 빈 문자열 분리.
|
|
|
-// for (int ii = 0; ii < codes.length; ii++) {
|
|
|
-// log.info("VmsSafeAdapterService.selectVmsSafeMessage: SEQ {}, {} EA, AREA_CODE [{}]", msgDto.getSeq(), codes.length, codes[ii]);
|
|
|
-// }
|
|
|
+ List<Message> messageList = this.vmsSafeMapper.selectVmsSafeMessage(chkMessage.getMessageSeq());
|
|
|
+ for (Message message : messageList) {
|
|
|
+ message.checkData();
|
|
|
+ TbVmsSafeMsg safeMsg = message.toSafeMsg(dbTime);
|
|
|
+ TbVmsSafeMsgHs safeMsgHs = safeMsg.toSafeMsgHs();
|
|
|
|
|
|
- StringTokenizer areaCodes = new StringTokenizer(msgDto.getAreaCode(), ",");
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsSafeMessage: {}.", safeMsg);
|
|
|
+ StringTokenizer areaCodes = new StringTokenizer(safeMsg.getAreaCode(), ",");
|
|
|
int areaCount = areaCodes.countTokens();
|
|
|
+ List<String> codeList = new ArrayList<>();
|
|
|
while(areaCodes.hasMoreTokens()){
|
|
|
String areaCode = areaCodes.nextToken().trim();
|
|
|
- log.info("VmsSafeAdapterService.selectVmsSafeMessage: SEQ {}, {} EA, AREA_CODE [{}].", msgDto.getSeq(), areaCount, areaCode);
|
|
|
+ codeList.add(areaCode);
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsSafeMessage: SEQ {}, {} EA, AREA_CODE [{}].", safeMsg.getMsgSeq(), areaCount, areaCode);
|
|
|
+ }
|
|
|
+
|
|
|
+ safeMsg.setMsgType("취소");
|
|
|
+ safeMsg.setPreMsgSeq(safeMsg.getMsgSeq());
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsSafeMessage: IN_AREA_CODE [{}].", codeList);
|
|
|
+ if (codeList.isEmpty()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<Long> targetVmsList = selectSafeMsgTargetVms(codeList);
|
|
|
+
|
|
|
+ if (Message.TYPE_MODIFY.equals(safeMsg.getMsgType())) {
|
|
|
+ // 정정
|
|
|
}
|
|
|
+ else if (Message.TYPE_CANCEL.equals(safeMsg.getMsgType())) {
|
|
|
+ // 취소
|
|
|
+ TbVmsSafeMsg cancelMsg = TbVmsSafeMsg.builder()
|
|
|
+ .msgSeq(safeMsg.getPreMsgSeq())
|
|
|
+ .msgType(safeMsg.getMsgType())
|
|
|
+ .msgEndDt(dbTime.getMsgCancelDt())
|
|
|
+ .updtDt(dbTime.getCurrentTime())
|
|
|
+ .build();
|
|
|
+ this.vmsMapper.cancelVmsSafeMsg(cancelMsg);
|
|
|
+ }
|
|
|
+ else if (Message.TYPE_CLEAR.equals(safeMsg.getMsgType())) {
|
|
|
+ // 해제 ==> 해제 메시지 표출
|
|
|
+ }
|
|
|
+ else {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ this.vmsMapper.createVmsSafeMsg(safeMsg);
|
|
|
+ //this.vmsMapper.insertVmsSafeMsgHs(safeMsgHs);
|
|
|
+ this.vmsMapper.deleteVmsSafeMsgCtlr(TbVmsSafeMsgCtlr.builder().msgSeq(safeMsg.getMsgSeq()).vmsCtlrNmbr(0L).build());
|
|
|
+ for (Long vmsCtlrNmbr : targetVmsList) {
|
|
|
+ this.vmsMapper.createVmsSafeMsgCtlr(TbVmsSafeMsgCtlr.builder().msgSeq(safeMsg.getMsgSeq()).vmsCtlrNmbr(vmsCtlrNmbr).build());
|
|
|
+ }
|
|
|
+
|
|
|
+ updateConfirmNewVmsSafeMessage(safeMsg.getMsgSeq());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -87,7 +158,7 @@ public class VmsSafeAdapterService {
|
|
|
public void selectArea() {
|
|
|
Elapsed elapsed = new Elapsed();
|
|
|
try {
|
|
|
- List<TbArea> resultList = this.vmsSafeMapper.selectArea();
|
|
|
+ List<TbArea> resultList = this.vmsMapper.selectArea();
|
|
|
log.info("VmsSafeAdapterService.selectArea(), {} EA", resultList.size());
|
|
|
for (TbArea area : resultList) {
|
|
|
log.info("VmsSafeAdapterService.selectArea: {}.", area.toDto());
|
|
@@ -99,6 +170,24 @@ public class VmsSafeAdapterService {
|
|
|
log.info("VmsSafeAdapterService.selectArea:: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
|
|
|
}
|
|
|
|
|
|
+ public List<Long> selectSafeMsgTargetVms(List<String> areaCodes) {
|
|
|
+ Elapsed elapsed = new Elapsed();
|
|
|
+ List<Long> vmsList = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ List<SafeMsgTargetVms> resultList = this.vmsMapper.selectSafeMsgTargetVms(areaCodes);
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsMsgArea(), {} EA", resultList.size());
|
|
|
+ for (SafeMsgTargetVms vms : resultList) {
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsMsgArea: {}.", vms);
|
|
|
+ vmsList.add(vms.getVmsCtlrNmbr());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ log.error("VmsSafeAdapterService.selectVmsMsgArea: Exception: {}.", e.toString());
|
|
|
+ }
|
|
|
+ log.info("VmsSafeAdapterService.selectVmsMsgArea:: ..end. {} ms. {}", elapsed.milliSeconds(), Thread.currentThread().getName());
|
|
|
+ return vmsList;
|
|
|
+ }
|
|
|
+
|
|
|
public void updateConnCheck() {
|
|
|
Elapsed elapsed = new Elapsed();
|
|
|
String systemId = this.appConfig.getSafeSystemId();
|