|
|
@@ -4,7 +4,7 @@ import com.its.op.config.AppUtils;
|
|
|
import com.its.op.dao.mapper.bis.BisDbmsSttsMapper;
|
|
|
import com.its.op.dao.mapper.its.dbms.DbmsSttsMapper;
|
|
|
import com.its.op.dto.its.dbms.SessionSttsDto;
|
|
|
-import com.its.op.dto.its.dbms.TbTbDbmsSttsDto;
|
|
|
+import com.its.op.dto.its.dbms.TbDbmsSttsDto;
|
|
|
import com.its.op.dto.its.dbms.TblSpaceSttsDto;
|
|
|
import com.its.utils.ItsUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
@@ -15,9 +15,10 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StopWatch;
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
@Slf4j
|
|
|
@AllArgsConstructor
|
|
|
@@ -40,91 +41,141 @@ public class DbmsSttsJobThread {
|
|
|
StopWatch stopWatch = new StopWatch();
|
|
|
stopWatch.start();
|
|
|
|
|
|
- //List<TbDbmsSttsDto> dbms = this.dbmsSttsMapper.findAll();
|
|
|
- List<TbTbDbmsSttsDto> result = new ArrayList<>();
|
|
|
-// private String DBMS_ID;
|
|
|
-// private Integer INST_ID;
|
|
|
-// private String STTS_TYPE;
|
|
|
-// private String STTS_NAME;
|
|
|
-// private String STTS;
|
|
|
-// private String UPDT_DT;
|
|
|
+ AtomicReference<String> itsMaxTblsName = new AtomicReference<>("");
|
|
|
+ AtomicReference<String> bisMaxTblsName = new AtomicReference<>("");
|
|
|
+
|
|
|
+ HashMap<String, TbDbmsSttsDto> dbmsMap = new HashMap<>();
|
|
|
+ List<TbDbmsSttsDto> dbms = this.dbmsSttsMapper.findAll();
|
|
|
+ dbms.forEach((obj) -> {
|
|
|
+ dbmsMap.put(obj.getDbSvrId(), obj);
|
|
|
+ if (obj.getDbSvrId().equals("2")) {
|
|
|
+ itsMaxTblsName.set(obj.getTblsNm());
|
|
|
+ } else if (obj.getDbSvrId().equals("4")) {
|
|
|
+ bisMaxTblsName.set(obj.getTblsNm());
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
String UPDT_DT = ItsUtils.getSysTime();
|
|
|
-
|
|
|
List<SessionSttsDto> session = this.dbmsSttsMapper.findSessionUsage();
|
|
|
session.forEach((obj) -> {
|
|
|
- String STTS_NAME;
|
|
|
+ String dbSvrId;
|
|
|
if (obj.getINST_ID() == 101) {
|
|
|
- STTS_NAME = "ITS DB #1";
|
|
|
+ dbSvrId = "1";
|
|
|
} else if (obj.getINST_ID() == 102) {
|
|
|
- STTS_NAME = "ITS DB #2";
|
|
|
+ dbSvrId = "2";
|
|
|
} else {
|
|
|
return;
|
|
|
}
|
|
|
- TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
|
|
|
- .DBMS_ID("ITS")
|
|
|
- .INST_ID(obj.getINST_ID())
|
|
|
- .STTS_TYPE("SESSION")
|
|
|
- .STTS_NAME(STTS_NAME)
|
|
|
- .STTS(String.valueOf(obj.getUSE_SESN()))
|
|
|
- .UPDT_DT(UPDT_DT)
|
|
|
- .build();
|
|
|
- result.add(data);
|
|
|
+ TbDbmsSttsDto data = dbmsMap.get(dbSvrId);
|
|
|
+ if (data != null) {
|
|
|
+ data.setUseSesn(String.valueOf(obj.getUSE_SESN()));
|
|
|
+ data.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
+ final String[] minTblsName = new String[1];
|
|
|
+ final Double[] minFree = {100.0};
|
|
|
+ final Double[] total = {0.0};
|
|
|
+ final Double[] free = {0.0};
|
|
|
+
|
|
|
+ minTblsName[0] = itsMaxTblsName.get();
|
|
|
List<TblSpaceSttsDto> tbls = this.dbmsSttsMapper.findTblsUsage();
|
|
|
tbls.forEach((obj) -> {
|
|
|
- TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
|
|
|
- .DBMS_ID("ITS")
|
|
|
- .INST_ID(101)
|
|
|
- .STTS_TYPE("SPACE")
|
|
|
- .STTS_NAME(obj.getTBLS_NM())
|
|
|
- .STTS(String.valueOf(obj.getTBLS_REMAIN_STTS()))
|
|
|
- .UPDT_DT(UPDT_DT)
|
|
|
- .build();
|
|
|
- result.add(data);
|
|
|
+ if (obj.getTBLS_NM().contains("UNDO")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!obj.getTBLS_NM().contains("_")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ total[0] += obj.getTOTAL();
|
|
|
+ free[0] += obj.getFREE();
|
|
|
+ if (minFree[0] > obj.getTBLS_REMAIN_STTS()) {
|
|
|
+ minTblsName[0] = obj.getTBLS_NM();
|
|
|
+ minFree[0] = obj.getTBLS_REMAIN_STTS();
|
|
|
+ }
|
|
|
});
|
|
|
+ Double totalRemain = 100 - ((total[0] - free[0]) * 100 / total[0]);
|
|
|
+ String tblsRmndCpct = String.format("%.2f", totalRemain);
|
|
|
+ TbDbmsSttsDto data1 = dbmsMap.get("1");
|
|
|
+ if (data1 != null) {
|
|
|
+ data1.setTblsRmndCpct(tblsRmndCpct);
|
|
|
+ data1.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
+ TbDbmsSttsDto data2 = dbmsMap.get("2");
|
|
|
+ if (data2 != null) {
|
|
|
+ data2.setTblsNm(minTblsName[0]);
|
|
|
+ data2.setTblsRmndCpct(String.valueOf(minFree[0]));
|
|
|
+ data2.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
+ //log.info("ITS DBMS: Total {}, Free {}", total[0], free[0]);
|
|
|
|
|
|
+ /**
|
|
|
+ * BIS DBMS STTS
|
|
|
+ */
|
|
|
boolean isRunBis = Arrays.asList(environment.getActiveProfiles()).contains("bis");
|
|
|
if (isRunBis) {
|
|
|
BisDbmsSttsMapper bisDbmsSttsMapper = (BisDbmsSttsMapper) AppUtils.getBean(BisDbmsSttsMapper.class);;
|
|
|
List<SessionSttsDto> bisSession = bisDbmsSttsMapper.findSessionUsage();
|
|
|
bisSession.forEach((obj) -> {
|
|
|
- String STTS_NAME;
|
|
|
+ String dbSvrId;
|
|
|
if (obj.getINST_ID() == 101) {
|
|
|
- STTS_NAME = "BIS DB #1";
|
|
|
+ dbSvrId = "3";
|
|
|
} else if (obj.getINST_ID() == 102) {
|
|
|
- STTS_NAME = "BIS DB #2";
|
|
|
+ dbSvrId = "4";
|
|
|
} else {
|
|
|
return;
|
|
|
}
|
|
|
- TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
|
|
|
- .DBMS_ID("BIS")
|
|
|
- .INST_ID(obj.getINST_ID())
|
|
|
- .STTS_TYPE("SESSION")
|
|
|
- .STTS_NAME(STTS_NAME)
|
|
|
- .STTS(String.valueOf(obj.getUSE_SESN()))
|
|
|
- .UPDT_DT(UPDT_DT)
|
|
|
- .build();
|
|
|
- result.add(data);
|
|
|
+ TbDbmsSttsDto data = dbmsMap.get(dbSvrId);
|
|
|
+ if (data != null) {
|
|
|
+ data.setUseSesn(String.valueOf(obj.getUSE_SESN()));
|
|
|
+ data.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
+ final String[] bisMinTblsName = new String[1];
|
|
|
+ final Double[] bisMinFree = {100.0};
|
|
|
+ final Double[] bisTotal = {0.0};
|
|
|
+ final Double[] bisFree = {0.0};
|
|
|
+
|
|
|
+ bisMinTblsName[0] = bisMaxTblsName.get();
|
|
|
+
|
|
|
List<TblSpaceSttsDto> bisTbls = bisDbmsSttsMapper.findTblsUsage();
|
|
|
bisTbls.forEach((obj) -> {
|
|
|
- TbTbDbmsSttsDto data = TbTbDbmsSttsDto.builder()
|
|
|
- .DBMS_ID("BIS")
|
|
|
- .INST_ID(101)
|
|
|
- .STTS_TYPE("SPACE")
|
|
|
- .STTS_NAME(obj.getTBLS_NM())
|
|
|
- .STTS(String.valueOf(obj.getTBLS_REMAIN_STTS()))
|
|
|
- .UPDT_DT(UPDT_DT)
|
|
|
- .build();
|
|
|
- result.add(data);
|
|
|
+ if (obj.getTBLS_NM().contains("UNDO")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!obj.getTBLS_NM().contains("_")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ bisTotal[0] += obj.getTOTAL();
|
|
|
+ bisFree[0] += obj.getFREE();
|
|
|
+ if (bisMinFree[0] > obj.getTBLS_REMAIN_STTS()) {
|
|
|
+ bisMinTblsName[0] = obj.getTBLS_NM();
|
|
|
+ bisMinFree[0] = obj.getTBLS_REMAIN_STTS();
|
|
|
+ }
|
|
|
});
|
|
|
+ Double bisTotalRemain = 100 - ((bisTotal[0] - bisFree[0]) * 100 / bisTotal[0]);
|
|
|
+ String bisTblsRmndCpct = String.format("%.2f", bisTotalRemain);
|
|
|
+ TbDbmsSttsDto data3 = dbmsMap.get("3");
|
|
|
+ if (data3 != null) {
|
|
|
+ data3.setTblsRmndCpct(bisTblsRmndCpct);
|
|
|
+ data3.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
+ TbDbmsSttsDto data4 = dbmsMap.get("4");
|
|
|
+ if (data4 != null) {
|
|
|
+ data4.setTblsNm(bisMinTblsName[0]);
|
|
|
+ data4.setTblsRmndCpct(String.valueOf(bisMinFree[0]));
|
|
|
+ data4.setUpdtDt(UPDT_DT);
|
|
|
+ }
|
|
|
+ //log.info("BIS DBMS: Total {}, Free {}", bisTotal[0], bisFree[0]);
|
|
|
}
|
|
|
|
|
|
// 결과 저장
|
|
|
- result.forEach((obj) -> {
|
|
|
+// for (Map.Entry<String, TbDbmsSttsDto> entry : dbmsMap.entrySet()) {
|
|
|
+// TbDbmsSttsDto obj = entry.getValue();
|
|
|
+// this.dbmsSttsMapper.updateDbmsStts(obj);
|
|
|
+// }
|
|
|
+ dbmsMap.forEach((key, obj) -> {
|
|
|
this.dbmsSttsMapper.updateDbmsStts(obj);
|
|
|
});
|
|
|
stopWatch.stop();
|