BisProcessService.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.its.op.service.bis;
  2. import com.its.op.dao.repository.bis.BisProcessRepository;
  3. import com.its.op.dao.repository.bis.BisProcessStatusHistoryRepository;
  4. import com.its.op.dto.bis.BisProcessDto;
  5. import com.its.op.dto.its.unit.TbUnitSystSttsDto;
  6. import com.its.op.entity.bis.BisProcess;
  7. import com.its.op.entity.bis.BisProcessStatusHistory;
  8. import com.its.utils.ItsUtils;
  9. import lombok.RequiredArgsConstructor;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.context.annotation.Profile;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18. import java.util.concurrent.atomic.AtomicBoolean;
  19. @Profile("bis")
  20. @Slf4j
  21. @RequiredArgsConstructor
  22. @Service
  23. public class BisProcessService {
  24. private final BisProcessRepository repo;
  25. private final BisProcessStatusHistoryRepository sttsRepo;
  26. // 전체 데이터 조회
  27. @Transactional(readOnly = true)
  28. public List<BisProcessDto> findAll() {
  29. List<BisProcessDto> result = new ArrayList<>();
  30. List<BisProcess> data = this.repo.findAll();
  31. for (BisProcess entity : data) {
  32. result.add(entity.toDto());
  33. }
  34. return result;
  35. }
  36. /**
  37. * BIS 프로세스 상태정보 조회
  38. * @return
  39. */
  40. @Transactional(readOnly = true)
  41. public List<TbUnitSystSttsDto> findAllStts() {
  42. String updtDt = ItsUtils.getSysTime();
  43. Map<Integer, TbUnitSystSttsDto> result = new HashMap<>();
  44. //Map<String, TbUnitSystSttsDto> unitMap = new HashMap<>();
  45. List<BisProcess> unit = this.repo.findAllList();
  46. unit.forEach(obj -> {
  47. Integer systId = obj.getProcessid();
  48. // switch(systId) {
  49. // case 10902: systId = 10901; break;
  50. // case 11002: systId = 11001; break;
  51. // case 11202: systId = 11201; break;
  52. // case 11102: systId = 11101; break;
  53. // }
  54. TbUnitSystSttsDto stts = TbUnitSystSttsDto.builder()
  55. .systId(String.valueOf(systId))
  56. .systNm(obj.getProcessname())
  57. .systSttsCd("1")
  58. .systSttsDesc("이상")
  59. .updtDt(updtDt)//CodeManager.CMNC_STTS_ERROR_DT)
  60. .runSts("1")
  61. .comSts("1")
  62. .dbSts("1")
  63. .build();
  64. result.put(systId, stts);
  65. });
  66. List<BisProcessStatusHistory> sttsList = this.sttsRepo.findAllStts();
  67. AtomicBoolean isBisProcessStts = new AtomicBoolean(true);
  68. // 실행 상태먼저 체크
  69. sttsList.forEach(obj -> {
  70. TbUnitSystSttsDto stts = result.get(obj.getProcessid());
  71. if (stts != null) {
  72. //log.error("{}, {}, {}", obj.getProcessid(), obj.getProcessstatus(), obj.getProcessstatekind());
  73. if (("4").equals(obj.getProcessstatekind())) {
  74. if (("1").equals(obj.getProcessstatus())) {
  75. stts.setRunSts("0");
  76. stts.setSystSttsCd("0");
  77. stts.setSystSttsDesc("정상");
  78. stts.setComSts("0");
  79. stts.setDbSts("0");
  80. }
  81. // 시내버스 가공1, 2
  82. if (80101 == obj.getProcessid() || 80102 == obj.getProcessid()) {
  83. if (!("1").equals(obj.getProcessstatus())) {
  84. isBisProcessStts.set(false);
  85. }
  86. }
  87. }
  88. }
  89. });
  90. Integer systId = 80199;
  91. TbUnitSystSttsDto stts = TbUnitSystSttsDto.builder()
  92. .systId(String.valueOf(systId))
  93. .systNm("시내버스 가공")
  94. .systSttsCd(isBisProcessStts.get() ? "0" : "1")
  95. .systSttsDesc(isBisProcessStts.get() ? "정상" : "이상")
  96. .updtDt(updtDt)
  97. .runSts(isBisProcessStts.get() ? "0" : "1")
  98. .comSts(isBisProcessStts.get() ? "0" : "1")
  99. .dbSts(isBisProcessStts.get() ? "0" : "1")
  100. .build();
  101. result.put(systId, stts);
  102. // 실행 상태가 정상인 경우 나머지 상태정보 업데이트
  103. // sttsList.forEach(obj -> {
  104. // TbUnitSystSttsDto stts = result.get(obj.getProcessid());
  105. // if (stts != null) {
  106. // if (!("0").equals(stts.getRunSts())) {
  107. // return;
  108. // }
  109. // // 통신상태
  110. // if (("1").equals(obj.getProcessstatekind())) {
  111. // if (("1").equals(obj.getProcessstatus())) {
  112. // stts.setComSts("0");
  113. // }
  114. // }
  115. // // DB 상태
  116. // if (("2").equals(obj.getProcessstatekind())) {
  117. // if (("1").equals(obj.getProcessstatus())) {
  118. // stts.setDbSts("0");
  119. // }
  120. // }
  121. // }
  122. // });
  123. return new ArrayList<>(result.values());
  124. }
  125. }