Browse Source

비정상 상황 알림 중복 막기

master
노승철 2 years ago
parent
commit
5fde24f605
  1. 6
      src/main/java/com/palnet/comn/model/CtrCntrlModel.java
  2. 16
      src/main/java/com/palnet/process/message/consumer/MessageConsumer.java
  3. 5
      src/main/java/com/palnet/process/scheduler/GpHistoryScheduler.java
  4. 9
      src/main/java/com/palnet/server/task/ctr/service/CtrCntrlTaskService.java

6
src/main/java/com/palnet/comn/model/CtrCntrlModel.java

@ -61,8 +61,12 @@ public class CtrCntrlModel implements Comparable<CtrCntrlModel>{
private List<Map<String , Double>> lastHistory; private List<Map<String , Double>> lastHistory;
// 비정상 상황 식별 코드 // 비정상 상황 식별 코드 (정상: true, 비정상: false)
private boolean controlWarnCd; private boolean controlWarnCd;
// 비정상 상황 알림 표출 코드 (알림: true, 미알림: false)
private boolean controlWarnNotyCd;
// 비정상 상황 알림 중복 체크
private String warnNotyExposure;
@Override @Override
public int compareTo(CtrCntrlModel o) { public int compareTo(CtrCntrlModel o) {

16
src/main/java/com/palnet/process/message/consumer/MessageConsumer.java

@ -33,13 +33,17 @@ public class MessageConsumer {
GPModel model = objectMapper.readValue(message, GPModel.class); GPModel model = objectMapper.readValue(message, GPModel.class);
CtrCntrlModel history = this.modelConvert(model); CtrCntrlModel history = this.modelConvert(model); // 웹 표출 model로 변환
// boolean noty = this.checkWarnNoty(history, model.getObjectId()); // 비정상 상황 알림 여부
// history.setControlWarnNotyCd(noty);
gpHistoryShareModel.putHistory(model.getObjectId(), history); gpHistoryShareModel.putHistory(model.getObjectId(), history);
} }
public CtrCntrlModel modelConvert(final GPModel dataInfo) { public CtrCntrlModel modelConvert(final GPModel dataInfo) {
CtrCntrlModel model = new CtrCntrlModel(); CtrCntrlModel model = new CtrCntrlModel();
CtrCntrlModel prevModel = gpHistoryShareModel.getHistory(dataInfo.getObjectId());
model.setObjectId(dataInfo.getObjectId()); model.setObjectId(dataInfo.getObjectId());
model.setControlId(dataInfo.getControlId()); model.setControlId(dataInfo.getControlId());
@ -70,6 +74,16 @@ public class MessageConsumer {
// 비정상 상황 식별코드 추가 // 비정상 상황 식별코드 추가
model.setControlWarnCd(dataInfo.isControlWarnCd()); model.setControlWarnCd(dataInfo.isControlWarnCd());
if(prevModel == null) {
if(model.isControlWarnCd()) {
model.setControlWarnNotyCd(true);
model.setWarnNotyExposure("N");
} else {
model.setControlWarnNotyCd(false);
model.setWarnNotyExposure("N");
}
}
return model; return model;
} }
} }

5
src/main/java/com/palnet/process/scheduler/GpHistoryScheduler.java

@ -14,7 +14,7 @@ import java.util.Objects;
@Component @Component
public class GpHistoryScheduler { public class GpHistoryScheduler {
private final int timeLimit = 10; private final int timeLimit = 300; // 5분
private final GPHistoryShareContext gpHistoryShareContext; private final GPHistoryShareContext gpHistoryShareContext;
public GpHistoryScheduler(GPHistoryShareContext gpHistoryShareContext) { public GpHistoryScheduler(GPHistoryShareContext gpHistoryShareContext) {
@ -22,7 +22,7 @@ public class GpHistoryScheduler {
} }
/* Client 노출 시간 5분 */ /* Client 노출 시간 5분 */
@Scheduled(fixedDelay = 10000 * 5) @Scheduled(fixedDelay = 1000 * 60 * 5)
public void removeHistory() { public void removeHistory() {
Map<String, CtrCntrlModel> allHistory = gpHistoryShareContext.getAllHistory(); Map<String, CtrCntrlModel> allHistory = gpHistoryShareContext.getAllHistory();
@ -30,7 +30,6 @@ public class GpHistoryScheduler {
if(Objects.nonNull(allHistory)) { if(Objects.nonNull(allHistory)) {
allHistory.forEach((k, v) -> { allHistory.forEach((k, v) -> {
Date serverRcvDt = DateUtils.stringToDatetime(v.getServerRcvDt()); Date serverRcvDt = DateUtils.stringToDatetime(v.getServerRcvDt());
long diffMinute = DateUtils.diffMinute(serverRcvDt, new Date());
long diffSecond = DateUtils.diffSecond(serverRcvDt, new Date()); long diffSecond = DateUtils.diffSecond(serverRcvDt, new Date());
if(diffSecond > timeLimit) { if(diffSecond > timeLimit) {

9
src/main/java/com/palnet/server/task/ctr/service/CtrCntrlTaskService.java

@ -32,6 +32,15 @@ public class CtrCntrlTaskService {
if(Objects.nonNull(allHistory)) { if(Objects.nonNull(allHistory)) {
allHistory.forEach((k, v) -> { allHistory.forEach((k, v) -> {
if(v.isControlWarnCd() && v.isControlWarnNotyCd()) {
if(!"Y".equals(v.getWarnNotyExposure())) {
v.setControlWarnNotyCd(true);
v.setWarnNotyExposure("Y");
} else {
v.setControlWarnNotyCd(false);
}
}
list.add(v); list.add(v);
}); });
} }

Loading…
Cancel
Save