|
|
|
@ -56,60 +56,68 @@ public class NegativeScoreService { |
|
|
|
flag.set(false); |
|
|
|
flag.set(false); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
String formula = "%s + (%s * %s) + (%s * %s)"; |
|
|
|
try { |
|
|
|
List<NegativeScoreDepart> scoreDeparts = new ArrayList<>(); |
|
|
|
String formula = "%s + (%s * %s) + (%s * %s)"; |
|
|
|
negativeScorePoliceService.remove(new LambdaQueryWrapper<>()); |
|
|
|
List<NegativeScoreDepart> scoreDeparts = new ArrayList<>(); |
|
|
|
negativeScoreDepartService.remove(new LambdaQueryWrapper<>()); |
|
|
|
negativeScorePoliceService.remove(new LambdaQueryWrapper<>()); |
|
|
|
Set<String> negativeIds = negativeBlames.stream().map(NegativeBlame::getNegativeId).collect(Collectors.toSet()); |
|
|
|
negativeScoreDepartService.remove(new LambdaQueryWrapper<>()); |
|
|
|
List<NegativeProblemRelation> problemsAll = problemRelationService.list(negativeIds); |
|
|
|
Set<String> negativeIds = negativeBlames.stream().map(NegativeBlame::getNegativeId).collect(Collectors.toSet()); |
|
|
|
List<Negative> negatives = negativeService.listByIds(negativeIds); |
|
|
|
List<NegativeProblemRelation> problemsAll = problemRelationService.list(negativeIds); |
|
|
|
List<SupDepart> departs = departService.listByIds(negatives.stream().map(Negative::getInvolveDepartId).collect(Collectors.toSet())); |
|
|
|
List<Negative> negatives = negativeService.listByIds(negativeIds); |
|
|
|
negativeBlames.forEach(blame -> { |
|
|
|
List<SupDepart> departs = departService.listByIds(negatives.stream().map(Negative::getInvolveDepartId).collect(Collectors.toSet())); |
|
|
|
Negative negative = negatives.stream().filter(item -> item.getId().equals(blame.getNegativeId())).findFirst().get(); |
|
|
|
negativeBlames.forEach(blame -> { |
|
|
|
SupDepart depart = departs.stream().filter(item -> item.getId().equals(negative.getInvolveDepartId())).findFirst().get(); |
|
|
|
Negative negative = negatives.stream().filter(item -> item.getId().equals(blame.getNegativeId())).findFirst().get(); |
|
|
|
NegativeScorePolice negativeScorePolice = new NegativeScorePolice() |
|
|
|
SupDepart depart = departs.stream().filter(item -> item.getId().equals(negative.getInvolveDepartId())).findFirst().orElse(null); |
|
|
|
.setNegativeId(blame.getNegativeId()) |
|
|
|
if (Objects.isNull(depart)) { |
|
|
|
.setIdCode(blame.getBlameIdCode()) |
|
|
|
return; |
|
|
|
.setDiscoveryTime(negative.getDiscoveryTime()) |
|
|
|
} |
|
|
|
.setIdCode(blame.getBlameIdCode()) |
|
|
|
NegativeScorePolice negativeScorePolice = new NegativeScorePolice() |
|
|
|
.setBusinessTypeCode(negative.getBusinessTypeCode()) |
|
|
|
.setNegativeId(blame.getNegativeId()) |
|
|
|
.setDepartGroupId(depart.getStatisticsGroupId()) |
|
|
|
.setIdCode(blame.getBlameIdCode()) |
|
|
|
.setCreateTime(LocalDateTime.now()); |
|
|
|
.setDiscoveryTime(negative.getDiscoveryTime()) |
|
|
|
List<NegativeProblemRelation> problems = problemsAll.stream().filter(item -> item.getNegativeId().equals(blame.getNegativeId()) && |
|
|
|
.setIdCode(blame.getBlameIdCode()) |
|
|
|
item.getBlameId().equals(blame.getBlameId())).toList(); |
|
|
|
.setBusinessTypeCode(negative.getBusinessTypeCode()) |
|
|
|
List<String> codes = problems.stream().map(NegativeProblemRelation::getThreeLevelCode).toList(); |
|
|
|
.setDepartGroupId(depart.getStatisticsGroupId()) |
|
|
|
if (codes.isEmpty()) { |
|
|
|
.setCreateTime(LocalDateTime.now()); |
|
|
|
return; |
|
|
|
List<NegativeProblemRelation> problems = problemsAll.stream().filter(item -> item.getNegativeId().equals(blame.getNegativeId()) && |
|
|
|
} |
|
|
|
item.getBlameId().equals(blame.getBlameId())).toList(); |
|
|
|
SupDictProblemType problemType = supDictContentMapper.selectOneByMaxScore(codes); |
|
|
|
List<String> codes = problems.stream().map(NegativeProblemRelation::getThreeLevelCode).toList(); |
|
|
|
LocalDateTime endTime = negative.getDiscoveryTime(); |
|
|
|
if (codes.isEmpty()) { |
|
|
|
LocalDateTime beginTime = endTime.minusYears(1); |
|
|
|
return; |
|
|
|
int frequency = blameService.countByTrue(blame.getBlameIdCode(), problemType.getParentCode(), beginTime, endTime); |
|
|
|
} |
|
|
|
String expression = String.format(formula, |
|
|
|
SupDictProblemType problemType = supDictContentMapper.selectOneByMaxScore(codes); |
|
|
|
problemType.getScore(), |
|
|
|
LocalDateTime endTime = negative.getDiscoveryTime(); |
|
|
|
problemType.getScore(), |
|
|
|
LocalDateTime beginTime = endTime.minusYears(1); |
|
|
|
NegativeLevelEnum.GENERAL_IMPACT.getScore(), |
|
|
|
int frequency = blameService.countByTrue(blame.getBlameIdCode(), problemType.getParentCode(), beginTime, endTime); |
|
|
|
problemType.getScore(), |
|
|
|
String expression = String.format(formula, |
|
|
|
ScoreRule.getFrequencyScore(frequency)); |
|
|
|
problemType.getScore(), |
|
|
|
|
|
|
|
problemType.getScore(), |
|
|
|
double calculate = NumberUtil.calculate(expression); |
|
|
|
NegativeLevelEnum.GENERAL_IMPACT.getScore(), |
|
|
|
double score = NumberUtil.roundHalfEven(calculate, 2).doubleValue(); |
|
|
|
problemType.getScore(), |
|
|
|
negativeScorePolice.setScore(score) |
|
|
|
ScoreRule.getFrequencyScore(frequency)); |
|
|
|
.setExpression(expression); |
|
|
|
|
|
|
|
|
|
|
|
double calculate = NumberUtil.calculate(expression); |
|
|
|
negativeScorePoliceService.save(negativeScorePolice); |
|
|
|
double score = NumberUtil.roundHalfEven(calculate, 2).doubleValue(); |
|
|
|
NegativeScoreDepart scoreDepart = scoreDeparts.stream().filter(item -> item.getNegativeId().equals(negative.getId())).findFirst().orElse(null); |
|
|
|
negativeScorePolice.setScore(score) |
|
|
|
if (Objects.isNull(scoreDepart)) { |
|
|
|
.setExpression(expression); |
|
|
|
scoreDepart = new NegativeScoreDepart(); |
|
|
|
|
|
|
|
BeanUtil.copyProperties(negativeScorePolice, scoreDepart); |
|
|
|
negativeScorePoliceService.save(negativeScorePolice); |
|
|
|
scoreDepart.setDepartId(negative.getInvolveDepartId()); |
|
|
|
NegativeScoreDepart scoreDepart = scoreDeparts.stream().filter(item -> item.getNegativeId().equals(negative.getId())).findFirst().orElse(null); |
|
|
|
scoreDeparts.add(scoreDepart); |
|
|
|
if (Objects.isNull(scoreDepart)) { |
|
|
|
} else if (scoreDepart.getScore() < score) { |
|
|
|
scoreDepart = new NegativeScoreDepart(); |
|
|
|
scoreDepart.setScore(score); |
|
|
|
BeanUtil.copyProperties(negativeScorePolice, scoreDepart); |
|
|
|
|
|
|
|
scoreDepart.setDepartId(negative.getInvolveDepartId()); |
|
|
|
|
|
|
|
scoreDeparts.add(scoreDepart); |
|
|
|
|
|
|
|
} else if (scoreDepart.getScore() < score) { |
|
|
|
|
|
|
|
scoreDepart.setScore(score); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
if (!scoreDeparts.isEmpty()) { |
|
|
|
|
|
|
|
negativeScoreDepartService.saveBatch(scoreDeparts); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (RuntimeException e) { |
|
|
|
if (!scoreDeparts.isEmpty()) { |
|
|
|
flag.set(false); |
|
|
|
negativeScoreDepartService.saveBatch(scoreDeparts); |
|
|
|
throw e; |
|
|
|
} |
|
|
|
} |
|
|
|
flag.set(false); |
|
|
|
flag.set(false); |
|
|
|
System.out.println("calculateScore-------------------------------------------------End"); |
|
|
|
System.out.println("calculateScore-------------------------------------------------End"); |
|
|
|
|