Browse Source

平台涉警多合一

master
kami 1 year ago
parent
commit
7dd13c95f1
  1. 53
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  2. 27
      src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java

53
src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

@ -416,39 +416,42 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
continue;
}
jjdList = jjdList.stream().filter(StreamUtil.distinctByKey(GBaseJJD::getJjdbh)).toList();
List<RiskModelTaskClue> olds = Optional.ofNullable(personOldMap.get(person.getIdCode())).orElse(new ArrayList<>());
Map<String, RiskModelTaskClue> oldMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old) -> val));
List<RiskModelTaskClue> olds = personOldMap.get(person.getIdCode());
if(olds != null) {
// 是否类型只有一个
continue;
}
LocalDateTime eventTime = null;
StringBuilder sb = new StringBuilder("该人员存在平台涉警事件警情,相关警情接警单编号为:");
for (GBaseJJD gBaseJJD : jjdList) {
if (oldMap.get(BhUtil.jjdBh(gBaseJJD.getJjdbh())) != null) {
continue;
}
ClueData data = ClueData.builder()
.name(person.getName())
.id(BhUtil.jjdBh(gBaseJJD.getJjdbh()))
.idCode(person.getIdCode())
.tag("平台涉警事件")
.personId(person.getId())
.build();
StringBuilder sb = new StringBuilder("该人员存在平台涉警事件警情,接警单编号:" + gBaseJJD.getJjdbh());
if (gBaseJJD.getBjnr() != null && !gBaseJJD.getBjnr().isEmpty()) {
sb.append(",报警内容;" + gBaseJJD.getBjnr());
}
if (gBaseJJD.getCjqk() != null && !gBaseJJD.getCjqk().isEmpty()) {
sb.append(",处警情况;" + gBaseJJD.getCjqk());
}
data.setSourceData(sb.toString());
sb.append(gBaseJJD.getJjdbh()).append(",");
try {
data.setEventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
LocalDateTime tmp = gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if(eventTime == null) {
eventTime = tmp;
continue;
}
if (eventTime.isBefore(tmp)) {
eventTime = tmp;
}
} catch (Exception ignored) {
data.setEventTime(LocalDateTime.now());
}
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
ClueData data = ClueData.builder()
.name(person.getName())
.id("ptsjsj")
.idCode(person.getIdCode())
.tag("平台涉警事件")
.sourceData(sb.substring(0, sb.length()-1))
.eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now()))
.personId(person.getId())
.build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
log.info("保存袭警数据:{}", toInsert.size());
if (!toInsert.isEmpty()) {
clueService.saveClues(toInsert, Default.WF_IG);
clueService.saveClues(toInsert, "B28平台涉警事件");
}
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
}

27
src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java

@ -49,11 +49,6 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
if(idCodes != null && !idCodes.isEmpty()) {
queryWrapper.in(RiskPersonal::getIdCode, idCodes);
}
if(weight != null && !weight.equals("1")) {
Double we = Optional.ofNullable(weight).map(Double::valueOf).orElse(1.0);
int result = riskModelTaskClueRepository.getBaseMapper().updateScoreResult(we);
log.info("修改分数");
}
List<RiskPersonal> riskPersonals = personalRepository.list(queryWrapper);
List<RiskScoreRule> rules = riskScoreRuleRepository.list(new LambdaQueryWrapper<>());
@ -68,6 +63,21 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
List<RiskModelTaskClue> clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper<RiskModelTaskClue>()
.select(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScore, RiskModelTaskClue::getScoreResult)
.eq(RiskModelTaskClue::getDel, 0));
log.info("1、修改每项得分\n2、修改人员总分");
log.info("1、计算分项倍分");
List<RiskModelTaskClue> updates = new ArrayList<>();
if(weight != null && !weight.equals("1")) {
for (RiskModelTaskClue clue : clues) {
RiskModelTaskClue update = new RiskModelTaskClue();
update.setId(clue.getId());
update.setScoreResult(new BigDecimal(clue.getScoreCalc().toString()).multiply(new BigDecimal(weight)).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP).doubleValue());
updates.add(update);
clue.setScoreResult(update.getScoreResult());
}
log.info("1、修改每项得分");
riskModelTaskClueRepository.updateBatchById(updates);
}
Map<String, Map<Integer, List<RiskModelTaskClue>>> clueMap = new HashMap<>();
for (RiskModelTaskClue clue : clues) {
@ -105,15 +115,15 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
// BigDecimal n2 = new BigDecimal(Double.toString(Math.min(ruleScore.doubleValue(), riskScoreRule.getScore())));
//
// BigDecimal weight = new BigDecimal(Double.toString(riskScoreRule.getWeight()));
// n2 = n2.multiply(weight).divide(new BigDecimal("100"), 2, RoundingMode.UP);
// n2 = n2.multiply(weight).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
Double ruleScore = temp.stream().mapToDouble(RiskModelTaskClue::getScoreResult).sum();
BigDecimal rScore = new BigDecimal(riskScoreRule.getScore().toString()).multiply(new BigDecimal(weight));
BigDecimal rScore = new BigDecimal(riskScoreRule.getScore().toString()).multiply(new BigDecimal(weight)).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP);
BigDecimal n2 = new BigDecimal(Double.toString(Math.min(ruleScore, rScore.doubleValue())));
score=score.add(n2);
}
// BigDecimal ruleScore = new BigDecimal(Double.toString(rule.getScore()));
// BigDecimal weight = new BigDecimal(Double.toString(rule.getWeight()));
// score = score.multiply(weight).divide(ruleScore, 2, RoundingMode.UP);
// score = score.multiply(weight).divide(ruleScore, 2, RoundingMode.HALF_UP);
total = total.add(score);
}
//二次改造
@ -135,6 +145,7 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
log.info("已完成打分: {},共计:{}", count,size);
}
}
personalRepository.updateBatchById(toUpdates, 10000);
}
}

Loading…
Cancel
Save