diff --git a/src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java b/src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java index 4c0598f..882e996 100644 --- a/src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java +++ b/src/main/java/com/biutag/supervision/constants/enums/ProblemSourcesEnum.java @@ -31,7 +31,7 @@ public enum ProblemSourcesEnum { JWDC("民意感知", "2"), JYDC("警意调查", "3"), - CFJD("持法监督", "4"), + CFJD("执法监督", "4"), JCKH("检查考核", "8"), QT("其他", "9"); diff --git a/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfileDepartController.java b/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfileDepartController.java index 1ae6b6e..498e1b7 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfileDepartController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfileDepartController.java @@ -156,10 +156,11 @@ public class ProfileDepartController { }).sorted(Comparator.comparing(BarItem::getValue).reversed()).toList(); profileDepart.setProblemTypeBarList(problemTypeBarList); - List result = negativeScoreService.calculateDepartScore(beginTime, endTime, departId); - profileDepart.setScore((BigDecimal) result.get(0)); - profileDepart.setExpression(result.get(1).toString()); - profileDepart.setRemarks(result.get(2).toString()); + //List result = negativeScoreService.calculateDepartScore(beginTime, endTime, departId); + + profileDepart.setScore(BigDecimal.valueOf(list.stream().mapToDouble(NegativeScoreDepart::getScore).sum())); +// profileDepart.setExpression(result.get(1).toString()); +// profileDepart.setRemarks(result.get(2).toString()); return Result.success(profileDepart); } diff --git a/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfilePoliceController.java b/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfilePoliceController.java index 5fd8310..d02d644 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfilePoliceController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitiveperception/ProfilePoliceController.java @@ -78,7 +78,8 @@ public class ProfilePoliceController { ProfilePolice profilePolice = new ProfilePolice(); profilePolice.setPoliceInfo(policeService.getByIdCode(idCode)); - List negatives = negativeScorePoliceService.list(new LambdaQueryWrapper().between(NegativeScorePolice::getDiscoveryTime, beginTime, endTime).eq(NegativeScorePolice::getIdCode, idCode)); + List negatives = negativeScorePoliceService.list(new LambdaQueryWrapper() + .between(NegativeScorePolice::getDiscoveryTime, beginTime, endTime).eq(NegativeScorePolice::getIdCode, idCode)); int jcj110BusinessSize = businessPoliceService.list(new LambdaQueryWrapper() .between(BusinessPolice::getDate, beginTime, endTime) @@ -137,15 +138,15 @@ public class ProfilePoliceController { } } - List result = negativeScoreService.calculatePoliceScore(beginTime, endTime, idCode); - profilePolice.setScore((BigDecimal) result.get(0)); - profilePolice.setExpression(result.get(1).toString()); - profilePolice.setRemarks(result.get(2).toString()); + //List result = negativeScoreService.calculatePoliceScore(beginTime, endTime, idCode); + profilePolice.setScore(BigDecimal.valueOf(negatives.stream().mapToDouble(NegativeScorePolice::getScore).sum())); +// profilePolice.setExpression(result.get(1).toString()); +// profilePolice.setRemarks(result.get(2).toString()); // 雷达图 profilePolice.setBusinessTypeRadarIndicator(Arrays.stream(BusinessTypeEnum.values()) .map(item -> new ProfileDepart.RadarIndicatorItem().setName(item.getLabel()).setMax(100)).toList()); - profilePolice.setBusinessTypeScoreRadarData((List) result.get(3)); - profilePolice.setBusinessTypeWeightRadarData((List) result.get(4)); +// profilePolice.setBusinessTypeScoreRadarData((List) result.get(3)); +// profilePolice.setBusinessTypeWeightRadarData((List) result.get(4)); return Result.success(profilePolice); } diff --git a/src/main/java/com/biutag/supervision/job/Job.java b/src/main/java/com/biutag/supervision/job/Job.java index d877b56..6c50021 100644 --- a/src/main/java/com/biutag/supervision/job/Job.java +++ b/src/main/java/com/biutag/supervision/job/Job.java @@ -1,9 +1,6 @@ package com.biutag.supervision.job; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.stream.CollectorUtil; import cn.hutool.core.util.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -23,12 +20,10 @@ import org.springframework.stereotype.Component; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; -import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static com.biutag.supervision.util.TimeUtil.SECONDS_OF_A_DAY; @@ -45,6 +40,8 @@ public class Job { private final SupExternalDepartService externalDepartService; + private final MailService mailService; + // 更新办理超时 @Scheduled(fixedRate = 600000) public void updateHandleTimeout() { @@ -76,8 +73,6 @@ public class Job { } - private final MailService mailService; - /** * 凌晨1点执行 */ @@ -86,8 +81,8 @@ public class Job { mailService.saveMailbox(); } - // 每小时一次 - @Scheduled(cron = "0 0 * * * ?") + // 每10分钟执行一次 + @Scheduled(cron = "0 */10 * * * ?") public void updateRemainingTime() { log.info("updateRemainingTime-----------------"); List negatives = negativeService.list(new LambdaQueryWrapper() @@ -99,6 +94,7 @@ public class Job { TimeUtil.getRemainingDuration(item.getFirstDistributeTime(), item.getMaxSignDuration(), item.getMaxHandleDuration(), item.getExtensionDays(), item.getFlowKey()))); }); } + private final DwdAsjZfbaShrxx2Service dwdAsjZfbaShrxx2Service; private final RpcApplyService rpcApplyService; private final SupPoliceService policeService; diff --git a/src/main/java/com/biutag/supervision/mapper/NegativeBlameMapper.java b/src/main/java/com/biutag/supervision/mapper/NegativeBlameMapper.java index f85735f..0c9b7a6 100644 --- a/src/main/java/com/biutag/supervision/mapper/NegativeBlameMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/NegativeBlameMapper.java @@ -24,7 +24,7 @@ public interface NegativeBlameMapper extends BaseMapper { @Select("select DISTINCT nb.* from negative_blame nb left join negative n on nb.negativeId = n.id " + "left join negative_problem_relation pr on pr.negativeId = nb.negativeId and pr.blameId = nb.blameId " + - "where n.checkStatus in ('1', '2') and n.processing_status = 'completed' and pr.threeLevelCode is not null") + "where n.checkStatus in ('1', '2') and n.processing_status = 'completed' and pr.threeLevelCode is not null and nb.type = 'personal'") List selectVerifyTrue(); diff --git a/src/main/java/com/biutag/supervision/pojo/entity/Model.java b/src/main/java/com/biutag/supervision/pojo/entity/Model.java index e0437bf..9e11ac8 100644 --- a/src/main/java/com/biutag/supervision/pojo/entity/Model.java +++ b/src/main/java/com/biutag/supervision/pojo/entity/Model.java @@ -87,7 +87,7 @@ public class Model { // 建模方式 private String modelingMethod; - // 模型数据类型 + // 预警类型 private String modelDataType; diff --git a/src/main/java/com/biutag/supervision/pojo/param/NegativeQueryParam.java b/src/main/java/com/biutag/supervision/pojo/param/NegativeQueryParam.java index 9dd1e35..f459689 100644 --- a/src/main/java/com/biutag/supervision/pojo/param/NegativeQueryParam.java +++ b/src/main/java/com/biutag/supervision/pojo/param/NegativeQueryParam.java @@ -83,4 +83,7 @@ public class NegativeQueryParam extends BasePage { // 操作人姓名 private String operator; + // 审批流程 + private String approvalFlow; + } diff --git a/src/main/java/com/biutag/supervision/service/NegativeQueryService.java b/src/main/java/com/biutag/supervision/service/NegativeQueryService.java index b91183b..e63ec9d 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeQueryService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeQueryService.java @@ -79,7 +79,9 @@ public class NegativeQueryService { // 是否属实 .in(CollectionUtil.isNotEmpty(param.getCheckStatus()), Negative::getCheckStatus, param.getCheckStatus()) // 是否整改 - .eq(StrUtil.isNotBlank(param.getIsRectifyCode()), Negative::getIsRectifyCode, param.getIsRectifyCode()); + .eq(StrUtil.isNotBlank(param.getIsRectifyCode()), Negative::getIsRectifyCode, param.getIsRectifyCode()) + // 审批流程 + .eq(StrUtil.isNotBlank(param.getApprovalFlow()), Negative::getApprovalFlow, param.getApprovalFlow()); // 涉及单位 if (StrUtil.isNotBlank(param.getInvolveDepartId())) { List departIds = departService.getAllNodeIds(param.getInvolveDepartId()); diff --git a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java index 9741111..19fa2b2 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeScoreService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeScoreService.java @@ -56,60 +56,68 @@ public class NegativeScoreService { flag.set(false); return; } - String formula = "%s + (%s * %s) + (%s * %s)"; - List scoreDeparts = new ArrayList<>(); - negativeScorePoliceService.remove(new LambdaQueryWrapper<>()); - negativeScoreDepartService.remove(new LambdaQueryWrapper<>()); - Set negativeIds = negativeBlames.stream().map(NegativeBlame::getNegativeId).collect(Collectors.toSet()); - List problemsAll = problemRelationService.list(negativeIds); - List negatives = negativeService.listByIds(negativeIds); - List departs = departService.listByIds(negatives.stream().map(Negative::getInvolveDepartId).collect(Collectors.toSet())); - negativeBlames.forEach(blame -> { - Negative negative = negatives.stream().filter(item -> item.getId().equals(blame.getNegativeId())).findFirst().get(); - SupDepart depart = departs.stream().filter(item -> item.getId().equals(negative.getInvolveDepartId())).findFirst().get(); - NegativeScorePolice negativeScorePolice = new NegativeScorePolice() - .setNegativeId(blame.getNegativeId()) - .setIdCode(blame.getBlameIdCode()) - .setDiscoveryTime(negative.getDiscoveryTime()) - .setIdCode(blame.getBlameIdCode()) - .setBusinessTypeCode(negative.getBusinessTypeCode()) - .setDepartGroupId(depart.getStatisticsGroupId()) - .setCreateTime(LocalDateTime.now()); - List problems = problemsAll.stream().filter(item -> item.getNegativeId().equals(blame.getNegativeId()) && - item.getBlameId().equals(blame.getBlameId())).toList(); - List codes = problems.stream().map(NegativeProblemRelation::getThreeLevelCode).toList(); - if (codes.isEmpty()) { - return; - } - SupDictProblemType problemType = supDictContentMapper.selectOneByMaxScore(codes); - LocalDateTime endTime = negative.getDiscoveryTime(); - LocalDateTime beginTime = endTime.minusYears(1); - int frequency = blameService.countByTrue(blame.getBlameIdCode(), problemType.getParentCode(), beginTime, endTime); - String expression = String.format(formula, - problemType.getScore(), - problemType.getScore(), - NegativeLevelEnum.GENERAL_IMPACT.getScore(), - problemType.getScore(), - ScoreRule.getFrequencyScore(frequency)); - - double calculate = NumberUtil.calculate(expression); - double score = NumberUtil.roundHalfEven(calculate, 2).doubleValue(); - negativeScorePolice.setScore(score) - .setExpression(expression); - - negativeScorePoliceService.save(negativeScorePolice); - NegativeScoreDepart scoreDepart = scoreDeparts.stream().filter(item -> item.getNegativeId().equals(negative.getId())).findFirst().orElse(null); - if (Objects.isNull(scoreDepart)) { - scoreDepart = new NegativeScoreDepart(); - BeanUtil.copyProperties(negativeScorePolice, scoreDepart); - scoreDepart.setDepartId(negative.getInvolveDepartId()); - scoreDeparts.add(scoreDepart); - } else if (scoreDepart.getScore() < score) { - scoreDepart.setScore(score); + try { + String formula = "%s + (%s * %s) + (%s * %s)"; + List scoreDeparts = new ArrayList<>(); + negativeScorePoliceService.remove(new LambdaQueryWrapper<>()); + negativeScoreDepartService.remove(new LambdaQueryWrapper<>()); + Set negativeIds = negativeBlames.stream().map(NegativeBlame::getNegativeId).collect(Collectors.toSet()); + List problemsAll = problemRelationService.list(negativeIds); + List negatives = negativeService.listByIds(negativeIds); + List departs = departService.listByIds(negatives.stream().map(Negative::getInvolveDepartId).collect(Collectors.toSet())); + negativeBlames.forEach(blame -> { + Negative negative = negatives.stream().filter(item -> item.getId().equals(blame.getNegativeId())).findFirst().get(); + SupDepart depart = departs.stream().filter(item -> item.getId().equals(negative.getInvolveDepartId())).findFirst().orElse(null); + if (Objects.isNull(depart)) { + return; + } + NegativeScorePolice negativeScorePolice = new NegativeScorePolice() + .setNegativeId(blame.getNegativeId()) + .setIdCode(blame.getBlameIdCode()) + .setDiscoveryTime(negative.getDiscoveryTime()) + .setIdCode(blame.getBlameIdCode()) + .setBusinessTypeCode(negative.getBusinessTypeCode()) + .setDepartGroupId(depart.getStatisticsGroupId()) + .setCreateTime(LocalDateTime.now()); + List problems = problemsAll.stream().filter(item -> item.getNegativeId().equals(blame.getNegativeId()) && + item.getBlameId().equals(blame.getBlameId())).toList(); + List codes = problems.stream().map(NegativeProblemRelation::getThreeLevelCode).toList(); + if (codes.isEmpty()) { + return; + } + SupDictProblemType problemType = supDictContentMapper.selectOneByMaxScore(codes); + LocalDateTime endTime = negative.getDiscoveryTime(); + LocalDateTime beginTime = endTime.minusYears(1); + int frequency = blameService.countByTrue(blame.getBlameIdCode(), problemType.getParentCode(), beginTime, endTime); + String expression = String.format(formula, + problemType.getScore(), + problemType.getScore(), + NegativeLevelEnum.GENERAL_IMPACT.getScore(), + problemType.getScore(), + ScoreRule.getFrequencyScore(frequency)); + + double calculate = NumberUtil.calculate(expression); + double score = NumberUtil.roundHalfEven(calculate, 2).doubleValue(); + negativeScorePolice.setScore(score) + .setExpression(expression); + + negativeScorePoliceService.save(negativeScorePolice); + NegativeScoreDepart scoreDepart = scoreDeparts.stream().filter(item -> item.getNegativeId().equals(negative.getId())).findFirst().orElse(null); + if (Objects.isNull(scoreDepart)) { + scoreDepart = new NegativeScoreDepart(); + 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); } - }); - if (!scoreDeparts.isEmpty()) { - negativeScoreDepartService.saveBatch(scoreDeparts); + } catch (RuntimeException e) { + flag.set(false); + throw e; } flag.set(false); System.out.println("calculateScore-------------------------------------------------End"); diff --git a/src/main/resources/mapper/ProfileDepartMapper.xml b/src/main/resources/mapper/ProfileDepartMapper.xml index 4053e72..906495e 100644 --- a/src/main/resources/mapper/ProfileDepartMapper.xml +++ b/src/main/resources/mapper/ProfileDepartMapper.xml @@ -9,7 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" d.*, count( DISTINCT nb.blameIdCode ) verify_police_size, count( n.negative_id ) verify_size, - dc.score + sum(n.score) score FROM ( SELECT @@ -31,7 +31,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) d LEFT JOIN negative_score_depart n ON d.depart_id = n.depart_id LEFT JOIN negative_blame nb ON n.negative_id = nb.blameId - left join depart_score dc on d.depart_id = dc.depart_id WHERE n.depart_id is not null AND n.discovery_time BETWEEN #{beginTime} AND #{endTime} diff --git a/src/main/resources/mapper/ProfilePoliceMapper.xml b/src/main/resources/mapper/ProfilePoliceMapper.xml index b747f56..e72771f 100644 --- a/src/main/resources/mapper/ProfilePoliceMapper.xml +++ b/src/main/resources/mapper/ProfilePoliceMapper.xml @@ -16,7 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" d.id depart_id, d1.short_name parent_depart_name, count( DISTINCT n.negative_id ) verify_size, - pc.score + cum(pc.score) score FROM sup_police p LEFT JOIN sup_depart d ON p.org_id = d.id @@ -49,8 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" p.person_type, d.short_name, d.id, - d1.short_name, - pc.score + d1.short_name ORDER BY verify_size desc, score desc