diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index 42b1a93..f994eba 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -97,11 +97,11 @@ public class BusinessAlertStatisticsController extends BaseController { } /** - * 综治管理 + * 综治管理-资规 * @param businessAlertBo * @return */ - @Operation(summary="综治管理", description="综治管理") + @Operation(summary="综治管理-资规", description="综治管理-资规") @GetMapping(value = "/comprehensive/manage") public R> comprehensiveManage(BusinessAlertBo businessAlertBo) { return R.ok(statisticsService.comprehensiveManage(businessAlertBo)); @@ -119,6 +119,28 @@ public class BusinessAlertStatisticsController extends BaseController { } + /** + * 综治管理-城管 + * @param businessAlertBo + * @return + */ + @Operation(summary="综治管理-城管", description="综治管理-城管") + @GetMapping(value = "/city/comprehensive/manage") + public R>> cityComprehensiveManage(BusinessAlertBo businessAlertBo) { + return R.ok(statisticsService.cityComprehensiveManage(businessAlertBo)); + } + + + /** + * 预警信息-城管 + * @param businessAlertBo + * @return + */ + @Operation(summary="预警信息-城管", description="预警信息-城管") + @GetMapping(value = "/city/alert/list") + public R>> cityListAlert(BusinessAlertBo businessAlertBo) { + return R.ok(businessAlertService.cityListAlert(businessAlertBo)); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java index 282c879..5fd127f 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java @@ -68,4 +68,6 @@ public interface IBusinessAlertService { TableDataInfo getInfo(BusinessAlertBo bo, PageQuery pageQuery, String alertCode); List> listAlert(BusinessAlertBo businessAlertBo); + + List> cityListAlert(BusinessAlertBo businessAlertBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java index 3579eae..38a699c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java @@ -33,4 +33,6 @@ public interface IBusinessAlertStatisticsService { List handlerRate(BusinessAlertBo businessAlertBo); Map comprehensiveManage(BusinessAlertBo businessAlertBo); + + List> cityComprehensiveManage(BusinessAlertBo businessAlertBo); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 37fc02f..60ff060 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -32,6 +32,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.*; +import java.util.stream.Collectors; /** * 预警任务Service业务层处理 @@ -363,6 +364,54 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } + @Override + public List> cityListAlert(BusinessAlertBo businessAlertBo) { + List> resultList = new ArrayList<>(); + + //生成近一周开始时间、结束时间 + List dayList = getLastSixDays(); + String startTime = dayList.get(dayList.size() - 1); + String endTime = dayList.get(0); + + + //不是空的话查看是对应各局的 + List postVoList = remoteLablePostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); + + Map> aiNameMap = postVoList.stream().collect(Collectors.groupingBy(RemoteAiLabelPostVo::getAiName)); + + if (ObjectUtil.isEmpty(postVoList)){ + return resultList; + } + + aiNameMap.keySet().forEach(key -> { + Map result = new HashMap<>(); + + Map infoMap = new HashMap<>(); + + businessAlertBo.setAiLabelEnList(aiNameMap.get(key).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList()); + + List alertList = this.baseMapper.listAlert(businessAlertBo, startTime, endTime); + + Map labelCnMap = alertList.stream() + .collect(Collectors.groupingBy( + BusinessAlert::getLabelCn, + Collectors.summingInt(e -> 1) + )); + + infoMap.put("panel",labelCnMap); + + infoMap.put("list",alertList); + + infoMap.put("date", startTime + "~" + endTime); + + result.put(key,infoMap); + + resultList.add(result); + }); + + return resultList; + } + public static List getLastSixDays() { List days = new ArrayList<>(7); diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index eab4bd2..ec762de 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -456,6 +456,101 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist return result; } + @Override + public List> cityComprehensiveManage(BusinessAlertBo businessAlertBo) { + if (ObjectUtil.isEmpty(businessAlertBo.getPostCode())) { + throw new ServiceException("【postCode】 岗位编码为空!"); + } + + List> resultList = new ArrayList<>(); + + List postVoList = remoteLabelPostService.selectLabelByList(businessAlertBo.getPostCode(), LoginHelper.getDeptId()); + + Map> aiNameMap = postVoList.stream().collect(Collectors.groupingBy(RemoteAiLabelPostVo::getAiName)); + + if (ObjectUtil.isEmpty(postVoList)) { + return ListUtil.empty(); + } + + + aiNameMap.keySet().forEach(key -> { + Map result = new HashMap<>(); + + Map keyMap = new HashMap<>(); + + List aiLabelList = aiNameMap.get(key).stream().map(RemoteAiLabelPostVo::getLabelEn).distinct().toList(); + + businessAlertBo.setAiLabelEnList(aiLabelList); + + List monthList = getLastSixMonths(); + String startTime = monthList.get(monthList.size() - 1); + String endTime = monthList.get(0); + + + List> labelMapList = this.baseMapper.countAiLabel(businessAlertBo,startTime,endTime); + + Map labelMap = new HashMap<>(); + labelMapList.forEach(label -> { + labelMap.put(label.get("labelCn")+ "",label.get("total")); + }); + + keyMap.put("handlerStat", labelMap); + + //事件高发区 + Long deptId = LoginHelper.getDeptId(); + //获取街道信息 + List streetList = remoteDeptService.selectListByParentId(String.valueOf(deptId)); + + Map streeMap = new HashMap<>(); + streetList.forEach(street -> { + businessAlertBo.setDeptId(String.valueOf(street.getDeptId())); + Integer alertCount = this.baseMapper.countStreetAlert(businessAlertBo,startTime,endTime); + streeMap.put(street.getDeptName(),alertCount); + }); + + //降序排序,取前五个 + String topMap = streeMap.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(1) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); + + keyMap.put("topAlert",topMap); + + //处理效率top5 + Map streeRateMap = new HashMap<>(); + streetList.forEach(street -> { + businessAlertBo.setDeptId(String.valueOf(street.getDeptId())); + Integer alertCount = this.baseMapper.countStreetRateAlert(businessAlertBo,startTime,endTime); + if (ObjectUtil.isEmpty(alertCount)) { + streeRateMap.put(street.getDeptName(),0); + }else { + streeRateMap.put(street.getDeptName(),alertCount); + } + }); + + String topKey = streeRateMap.entrySet().stream() + .sorted(Map.Entry.comparingByValue().reversed()) + .limit(1) + .map(Map.Entry::getKey) + .findFirst() + .orElse(null); + + keyMap.put("handlerRate", topKey); + + + //识别类型存储 + result.put(key, keyMap); + + + resultList.add(result); + }); + + + return resultList; + } + /** * 获取近6个月的月份集合(格式:yyyy-MM) */ diff --git a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelPostVo.java b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelPostVo.java index 9337118..3a24aed 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelPostVo.java +++ b/dk-modules/system/src/main/java/org/dromara/system/domain/vo/AiLabelPostVo.java @@ -41,4 +41,6 @@ public class AiLabelPostVo implements Serializable { private String postName; + private String aiName; + } diff --git a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java index 659e667..e907873 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/dubbo/RemoteLabelPostServicelmpl.java @@ -44,6 +44,7 @@ public class RemoteLabelPostServicelmpl implements RemoteLabelPostService { remoteAiLabelPostVo.setLabelId(aiLabel.getLabelId()); remoteAiLabelPostVo.setLabelEn(aiLabel.getLabelEn()); remoteAiLabelPostVo.setLabelCn(aiLabel.getLabelCn()); + remoteAiLabelPostVo.setAiName(aiLabel.getAiName()); return remoteAiLabelPostVo; }) .collect(Collectors.toList()); @@ -59,6 +60,7 @@ public class RemoteLabelPostServicelmpl implements RemoteLabelPostService { remoteAiLabelPostVo.setLabelId(aiLabel.getLabelId()); remoteAiLabelPostVo.setLabelEn(aiLabel.getLabelEn()); remoteAiLabelPostVo.setLabelCn(aiLabel.getLabelCn()); + remoteAiLabelPostVo.setAiName(aiLabel.getAiName()); return remoteAiLabelPostVo; }) .collect(Collectors.toList()); diff --git a/dk-modules/system/src/main/resources/mapper/system/AiLabelPostMapper.xml b/dk-modules/system/src/main/resources/mapper/system/AiLabelPostMapper.xml index b77464e..79fa80b 100644 --- a/dk-modules/system/src/main/resources/mapper/system/AiLabelPostMapper.xml +++ b/dk-modules/system/src/main/resources/mapper/system/AiLabelPostMapper.xml @@ -5,10 +5,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"