diff --git a/src/main/java/com/biutag/supervision/constants/enums/CaseVerifProblemNatureEnum.java b/src/main/java/com/biutag/supervision/constants/enums/CaseVerifProblemNatureEnum.java new file mode 100644 index 0000000..9714240 --- /dev/null +++ b/src/main/java/com/biutag/supervision/constants/enums/CaseVerifProblemNatureEnum.java @@ -0,0 +1,19 @@ +package com.biutag.supervision.constants.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author wxc + * @date 2024/10/29 + */ +@AllArgsConstructor +public enum CaseVerifProblemNatureEnum { + + ZFBA("执法办案"), + FWGL("服务管理"), + JJJG("警纪警规"); + + @Getter + private String laebl; +} diff --git a/src/main/java/com/biutag/supervision/constants/enums/DepartGroupEnum.java b/src/main/java/com/biutag/supervision/constants/enums/DepartGroupEnum.java new file mode 100644 index 0000000..160743f --- /dev/null +++ b/src/main/java/com/biutag/supervision/constants/enums/DepartGroupEnum.java @@ -0,0 +1,20 @@ +package com.biutag.supervision.constants.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author wxc + * @date 2024/10/29 + */ +@AllArgsConstructor +@Getter +public enum DepartGroupEnum { + + COUNTY_CITY_BUREAUS(3, "分县市局"), + BUREAU_AFFILIATED(4, "局属单位"); + + private Integer id; + + private String label; +} diff --git a/src/main/java/com/biutag/supervision/controller/api/jwdc/NegativeApiController.java b/src/main/java/com/biutag/supervision/controller/api/jwdc/NegativeApiController.java index ec40c46..69d5a3b 100644 --- a/src/main/java/com/biutag/supervision/controller/api/jwdc/NegativeApiController.java +++ b/src/main/java/com/biutag/supervision/controller/api/jwdc/NegativeApiController.java @@ -31,7 +31,7 @@ public class NegativeApiController { @PostMapping public String addAll(@RequestBody @Valid List list) { log.info("问题数据导入: {}", JSON.toJSONString(list)); - negativeService.saveByJwdc(list); + negativeService.saveByJwpy(list); return "success"; } diff --git a/src/main/java/com/biutag/supervision/controller/datav/DataVController.java b/src/main/java/com/biutag/supervision/controller/datav/DataVCaseVerifController.java similarity index 51% rename from src/main/java/com/biutag/supervision/controller/datav/DataVController.java rename to src/main/java/com/biutag/supervision/controller/datav/DataVCaseVerifController.java index e0a8d29..41283dd 100644 --- a/src/main/java/com/biutag/supervision/controller/datav/DataVController.java +++ b/src/main/java/com/biutag/supervision/controller/datav/DataVCaseVerifController.java @@ -3,7 +3,12 @@ package com.biutag.supervision.controller.datav; import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervision.constants.enums.CaseVerifProblemNatureEnum; +import com.biutag.supervision.constants.enums.DepartGroupEnum; +import com.biutag.supervision.mapper.DataCaseVerifMapper; import com.biutag.supervision.pojo.Result; +import com.biutag.supervision.pojo.dto.CaseVerifDepart; +import com.biutag.supervision.pojo.dto.common.PieItem; import com.biutag.supervision.pojo.entity.DataCaseVerif; import com.biutag.supervision.service.DataCaseVerifService; import lombok.RequiredArgsConstructor; @@ -15,19 +20,22 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * @author wxc * @date 2024/10/24 */ -@RequestMapping("datav") +@RequestMapping("datav/caseVerif") @RequiredArgsConstructor @RestController -public class DataVController { +public class DataVCaseVerifController { private final DataCaseVerifService dataCaseVerifService; - @GetMapping("caseVerif") + private final DataCaseVerifMapper dataCaseVerifMapper; + + @GetMapping public Result caseVerif(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime) { long total = dataCaseVerifService.count(new LambdaQueryWrapper().between(DataCaseVerif::getDiscoveryTime, beginTime, endTime)); long confirmed = 0; @@ -44,7 +52,26 @@ public class DataVController { .fluentPut("accountableDepartNumber", 0) // 查实率 .fluentPut("confirmedRate", total == 0 ? 0 : BigDecimal.valueOf(NumberUtil.div(confirmed, total) * 100).intValue()); - JSONObject data = new JSONObject().fluentPut("overview", overview); + // 分县市局排名 + List fxsjBarList = dataCaseVerifMapper.selectDepartStatistic(DepartGroupEnum.COUNTY_CITY_BUREAUS.getId(), beginTime, endTime); + // 局属单位排名 + List jsdwBarList = dataCaseVerifMapper.selectDepartStatistic(DepartGroupEnum.BUREAU_AFFILIATED.getId(), beginTime, endTime); + // 执法办案 + List zfbaPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.ZFBA.getLaebl(), beginTime, endTime); + // 服务管理 + List fwglPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.FWGL.getLaebl(), beginTime, endTime); + // 警察纪警规 + List jjjgPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.JJJG.getLaebl(), beginTime, endTime); + // 案件来源占比 + List ajlyPieList = dataCaseVerifMapper.selectGroupByProblemSources(beginTime, endTime); + + JSONObject data = new JSONObject().fluentPut("overview", overview) + .fluentPut("fxsjBarList", fxsjBarList) + .fluentPut("jsdwBarList", jsdwBarList) + .fluentPut("zfbaPieList", zfbaPieList) + .fluentPut("fwglPieList", fwglPieList) + .fluentPut("jjjgPieList", jjjgPieList) + .fluentPut("ajlyPieList", ajlyPieList); return Result.success(data); } diff --git a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ModelClueController.java b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ModelClueController.java index 70c2e13..5c223d8 100644 --- a/src/main/java/com/biutag/supervision/controller/sensitivePerception/ModelClueController.java +++ b/src/main/java/com/biutag/supervision/controller/sensitivePerception/ModelClueController.java @@ -1,6 +1,5 @@ package com.biutag.supervision.controller.sensitivePerception; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.biutag.supervision.pojo.Result; diff --git a/src/main/java/com/biutag/supervision/controller/system/DepartController.java b/src/main/java/com/biutag/supervision/controller/system/DepartController.java index 0f1376d..3d8ae14 100644 --- a/src/main/java/com/biutag/supervision/controller/system/DepartController.java +++ b/src/main/java/com/biutag/supervision/controller/system/DepartController.java @@ -78,7 +78,7 @@ public class DepartController { @GetMapping("tree") public Result> tree() { - return Result.success(departService.buildTree()); + return Result.success(departService.buildTreeByAuth()); } @GetMapping("second") diff --git a/src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java b/src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java index 8fd2386..5c588bb 100644 --- a/src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java +++ b/src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java @@ -1,8 +1,24 @@ package com.biutag.supervision.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervision.pojo.dto.CaseVerifDepart; +import com.biutag.supervision.pojo.dto.common.PieItem; import com.biutag.supervision.pojo.entity.DataCaseVerif; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; +import java.util.List; public interface DataCaseVerifMapper extends BaseMapper { + @Select("select d.id, d.short_name label, count(cv.originId) value from sup_depart d left join (select originId, second_depart_id from data_case_verif where discovery_time between #{beginTime} and #{endTime} ) cv " + + "on d.id = cv.second_depart_id where d.statistics_group_id = #{departGroupId} GROUP BY d.id, d.short_name order by value desc, d.order_no") + List selectDepartStatistic(Integer departGroupId, Date beginTime, Date endTime); + + @Select("select involve_problem name, count(originId) value from data_case_verif where business_type_name = #{businessTypeName} and discovery_time between #{beginTime} and #{endTime} group by involve_problem") + List selectInvolveProblemGroupByBusinessTypeName(String businessTypeName, Date beginTime, Date endTime); + + @Select("select problem_sources name, count(originId) value from data_case_verif where discovery_time between #{beginTime} and #{endTime} group by problem_sources") + List selectGroupByProblemSources(Date beginTime, Date endTime); + } \ No newline at end of file diff --git a/src/main/java/com/biutag/supervision/pojo/dto/CaseVerifDepart.java b/src/main/java/com/biutag/supervision/pojo/dto/CaseVerifDepart.java new file mode 100644 index 0000000..7ec5f6f --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/CaseVerifDepart.java @@ -0,0 +1,17 @@ +package com.biutag.supervision.pojo.dto; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author wxc + * @date 2024/10/29 + */ +@Setter +@Getter +public class CaseVerifDepart { + + private String label; + private String departId; + private Integer value; +} diff --git a/src/main/java/com/biutag/supervision/pojo/dto/common/PieItem.java b/src/main/java/com/biutag/supervision/pojo/dto/common/PieItem.java new file mode 100644 index 0000000..cd8979e --- /dev/null +++ b/src/main/java/com/biutag/supervision/pojo/dto/common/PieItem.java @@ -0,0 +1,16 @@ +package com.biutag.supervision.pojo.dto.common; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author wxc + * @date 2024/10/29 + */ +@Setter +@Getter +public class PieItem { + + private String name; + private Integer value; +} diff --git a/src/main/java/com/biutag/supervision/service/NegativeService.java b/src/main/java/com/biutag/supervision/service/NegativeService.java index 946f425..1cb1276 100644 --- a/src/main/java/com/biutag/supervision/service/NegativeService.java +++ b/src/main/java/com/biutag/supervision/service/NegativeService.java @@ -183,7 +183,7 @@ public class NegativeService extends ServiceImpl { } @Transactional(rollbackFor = Exception.class) - public boolean saveByJwdc(List list) { + public boolean saveByJwpy(List list) { LocalDateTime now = LocalDateTime.now(); list.forEach(item -> { if (exists(item.getOriginId())) { @@ -205,6 +205,7 @@ public class NegativeService extends ServiceImpl { .setMaxHandleDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration()) .setMaxExtensionDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration()) .setApprovalFlow(ApprovalFlowEnum.SECOND_APPROVAL.getValue()) + // 下发时间 .setFirstDistributeTime(now) .setProcessingStatus(ProcessingStatusEnum.signing.name()) // 完成状态 0-待完善 1-已完善 @@ -224,6 +225,13 @@ public class NegativeService extends ServiceImpl { negative.setInvolveDepartId(dept.getId()) .setInvolveDepartName(dept.getShortName()) .setFlowKey(FlowNodeEnum.THREE_SIGN.getKey()); + if (DepartLevelEnum.THREE.getValue().equals(dept.getLevel())) { + SupDepart parentDepart = departService.getById(dept.getPid()); + negative.setHandleThreeDepartId(dept.getId()) + .setHandleThreeDepartName(dept.getShortName()) + .setHandleSecondDepartId(parentDepart.getId()) + .setHandleSecondDepartName(parentDepart.getShortName()); + } } save(negative); // 新增work diff --git a/src/main/java/com/biutag/supervision/service/SupDepartService.java b/src/main/java/com/biutag/supervision/service/SupDepartService.java index 2232439..fc75311 100644 --- a/src/main/java/com/biutag/supervision/service/SupDepartService.java +++ b/src/main/java/com/biutag/supervision/service/SupDepartService.java @@ -40,6 +40,12 @@ public class SupDepartService extends ServiceImpl { .orderByAsc(SupDepart::getOrderNo)); } + public List listAllByEnabled() { + return list(new LambdaQueryWrapper() + .eq(SupDepart::getStatus, StatusEnum.ENABLE.getValue()) + .orderByAsc(SupDepart::getOrderNo)); + } + public List listByLevel(List levels) { return list(new LambdaQueryWrapper().in(SupDepart::getLevel, levels).eq(SupDepart::getStatus, StatusEnum.ENABLE.getValue()).orderByAsc(SupDepart::getOrderNo)); } @@ -53,7 +59,7 @@ public class SupDepartService extends ServiceImpl { } public List getAllNode(List departIds) { - List treeList = buildTree(); + List treeList = buildTreeAll(); List nodes = new ArrayList<>(); getAllNodeRecursive(departIds, treeList, nodes); return nodes; @@ -99,21 +105,22 @@ public class SupDepartService extends ServiceImpl { return baseMapper.getMaxId(); } - public List buildTree() { + public List buildTreeAll() { // 所有有效的数据 - List departs = listByEnabled(); - return buildTree(departs); + List departs = listAllByEnabled(); + return buildTreeAll(departs); } - public List buildTreeBySecond(List departs) { + public List buildTreeAll(List departs) { Map> childMap = new HashMap<>(); List tree = new ArrayList<>(); for (SupDepart depart : departs) { DepartTree node = new DepartTree(); BeanUtils.copyProperties(depart, node); + node.setHasChildren(!depart.getLevel().equals(4) && departs.stream().anyMatch(item -> node.getId().equals(item.getPid()))); List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); children.add(node); - if (AppConstants.ROOT_DEPART_ID.equals(node.getPid())) { + if (AppConstants.ROOT_DEPART_ID.equals(node.getId())) { tree.add(node); } } @@ -123,7 +130,45 @@ public class SupDepartService extends ServiceImpl { return tree; } - public List buildTree(List departs) { + /** + * 市局主办 + * @return + */ + public List buildTreeByFirstHost() { + List departs = listByEnabled(); + Map> childMap = new HashMap<>(); + List tree = new ArrayList<>(); + for (SupDepart depart : departs) { + DepartTree node = new DepartTree(); + BeanUtils.copyProperties(depart, node); + List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); + children.add(node); + if (node.getFirstHost()) { + tree.add(node); + } + } + for (DepartTree node : tree) { + buildTreeRecursive(node, childMap); + } + return tree; + } + + /** + * 根据角色权限 + * @return + */ + public List buildTreeByAuth() { + // 所有有效的数据 + List departs = listByEnabled(); + return buildTreeByAuth(departs); + } + + /** + * 根据角色权限 + * @param departs + * @return + */ + public List buildTreeByAuth(List departs) { Map> childMap = new HashMap<>(); List tree = new ArrayList<>(); UserAuth user = UserContextHolder.getCurrentUser(); @@ -157,6 +202,24 @@ public class SupDepartService extends ServiceImpl { return tree; } + public List buildTreeBySecond(List departs) { + Map> childMap = new HashMap<>(); + List tree = new ArrayList<>(); + for (SupDepart depart : departs) { + DepartTree node = new DepartTree(); + BeanUtils.copyProperties(depart, node); + List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); + children.add(node); + if (AppConstants.ROOT_DEPART_ID.equals(node.getPid())) { + tree.add(node); + } + } + for (DepartTree node : tree) { + buildTreeRecursive(node, childMap); + } + return tree; + } + public List buildTreeByParam(DepartTreeListParam departTreeListParam) { if (Objects.nonNull(departTreeListParam.getPid())) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(SupDepart::getPid, departTreeListParam.getPid()).orderByAsc(SupDepart::getOrderNo); @@ -190,25 +253,12 @@ public class SupDepartService extends ServiceImpl { return tree; } - public List buildTreeByFirstHost() { - List departs = listByEnabled(); - Map> childMap = new HashMap<>(); - List tree = new ArrayList<>(); - for (SupDepart depart : departs) { - DepartTree node = new DepartTree(); - BeanUtils.copyProperties(depart, node); - List children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>()); - children.add(node); - if (node.getFirstHost()) { - tree.add(node); - } - } - for (DepartTree node : tree) { - buildTreeRecursive(node, childMap); - } - return tree; - } - + /** + * 递归构建 + * @param node + * @param childMap + * @return + */ private static DepartTree buildTreeRecursive(DepartTree node, Map> childMap) { List children = childMap.get(node.getId()); if (children != null) { diff --git a/src/main/java/com/biutag/supervision/service/SupPoliceService.java b/src/main/java/com/biutag/supervision/service/SupPoliceService.java index 462f0aa..be946a3 100644 --- a/src/main/java/com/biutag/supervision/service/SupPoliceService.java +++ b/src/main/java/com/biutag/supervision/service/SupPoliceService.java @@ -49,7 +49,7 @@ public class SupPoliceService extends ServiceImpl { queryWrapper.eq("p.org_id", param.getDepartId()); } } - queryWrapper.orderByAsc("p.emp_no"); + queryWrapper.orderByAsc("d.level").orderByDesc("p.position").orderByAsc("p.person_status"); return baseMapper.queryPage(Page.of(param.getCurrent(), param.getSize()), queryWrapper); }