Browse Source

fit: 案件核查大屏后端接口

main
wxc 1 year ago
parent
commit
e38f9440b9
  1. 19
      src/main/java/com/biutag/supervision/constants/enums/CaseVerifProblemNatureEnum.java
  2. 20
      src/main/java/com/biutag/supervision/constants/enums/DepartGroupEnum.java
  3. 2
      src/main/java/com/biutag/supervision/controller/api/jwdc/NegativeApiController.java
  4. 35
      src/main/java/com/biutag/supervision/controller/datav/DataVCaseVerifController.java
  5. 1
      src/main/java/com/biutag/supervision/controller/sensitivePerception/ModelClueController.java
  6. 2
      src/main/java/com/biutag/supervision/controller/system/DepartController.java
  7. 16
      src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java
  8. 17
      src/main/java/com/biutag/supervision/pojo/dto/CaseVerifDepart.java
  9. 16
      src/main/java/com/biutag/supervision/pojo/dto/common/PieItem.java
  10. 10
      src/main/java/com/biutag/supervision/service/NegativeService.java
  11. 102
      src/main/java/com/biutag/supervision/service/SupDepartService.java
  12. 2
      src/main/java/com/biutag/supervision/service/SupPoliceService.java

19
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;
}

20
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;
}

2
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<NegativeApiDto> list) {
log.info("问题数据导入: {}", JSON.toJSONString(list));
negativeService.saveByJwdc(list);
negativeService.saveByJwpy(list);
return "success";
}

35
src/main/java/com/biutag/supervision/controller/datav/DataVController.java → 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<JSONObject> caseVerif(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime) {
long total = dataCaseVerifService.count(new LambdaQueryWrapper<DataCaseVerif>().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<CaseVerifDepart> fxsjBarList = dataCaseVerifMapper.selectDepartStatistic(DepartGroupEnum.COUNTY_CITY_BUREAUS.getId(), beginTime, endTime);
// 局属单位排名
List<CaseVerifDepart> jsdwBarList = dataCaseVerifMapper.selectDepartStatistic(DepartGroupEnum.BUREAU_AFFILIATED.getId(), beginTime, endTime);
// 执法办案
List<PieItem> zfbaPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.ZFBA.getLaebl(), beginTime, endTime);
// 服务管理
List<PieItem> fwglPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.FWGL.getLaebl(), beginTime, endTime);
// 警察纪警规
List<PieItem> jjjgPieList = dataCaseVerifMapper.selectInvolveProblemGroupByBusinessTypeName(CaseVerifProblemNatureEnum.JJJG.getLaebl(), beginTime, endTime);
// 案件来源占比
List<PieItem> 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);
}

1
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;

2
src/main/java/com/biutag/supervision/controller/system/DepartController.java

@ -78,7 +78,7 @@ public class DepartController {
@GetMapping("tree")
public Result<List<DepartTree>> tree() {
return Result.success(departService.buildTree());
return Result.success(departService.buildTreeByAuth());
}
@GetMapping("second")

16
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<DataCaseVerif> {
@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<CaseVerifDepart> 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<PieItem> 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<PieItem> selectGroupByProblemSources(Date beginTime, Date endTime);
}

17
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;
}

16
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;
}

10
src/main/java/com/biutag/supervision/service/NegativeService.java

@ -183,7 +183,7 @@ public class NegativeService extends ServiceImpl<NegativeMapper, Negative> {
}
@Transactional(rollbackFor = Exception.class)
public boolean saveByJwdc(List<NegativeApiDto> list) {
public boolean saveByJwpy(List<NegativeApiDto> list) {
LocalDateTime now = LocalDateTime.now();
list.forEach(item -> {
if (exists(item.getOriginId())) {
@ -205,6 +205,7 @@ public class NegativeService extends ServiceImpl<NegativeMapper, Negative> {
.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<NegativeMapper, Negative> {
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

102
src/main/java/com/biutag/supervision/service/SupDepartService.java

@ -40,6 +40,12 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
.orderByAsc(SupDepart::getOrderNo));
}
public List<SupDepart> listAllByEnabled() {
return list(new LambdaQueryWrapper<SupDepart>()
.eq(SupDepart::getStatus, StatusEnum.ENABLE.getValue())
.orderByAsc(SupDepart::getOrderNo));
}
public List<SupDepart> listByLevel(List<Integer> levels) {
return list(new LambdaQueryWrapper<SupDepart>().in(SupDepart::getLevel, levels).eq(SupDepart::getStatus, StatusEnum.ENABLE.getValue()).orderByAsc(SupDepart::getOrderNo));
}
@ -53,7 +59,7 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
}
public List<DepartTree> getAllNode(List<String> departIds) {
List<DepartTree> treeList = buildTree();
List<DepartTree> treeList = buildTreeAll();
List<DepartTree> nodes = new ArrayList<>();
getAllNodeRecursive(departIds, treeList, nodes);
return nodes;
@ -99,21 +105,22 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return baseMapper.getMaxId();
}
public List<DepartTree> buildTree() {
public List<DepartTree> buildTreeAll() {
// 所有有效的数据
List<SupDepart> departs = listByEnabled();
return buildTree(departs);
List<SupDepart> departs = listAllByEnabled();
return buildTreeAll(departs);
}
public List<DepartTree> buildTreeBySecond(List<SupDepart> departs) {
public List<DepartTree> buildTreeAll(List<SupDepart> departs) {
Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> 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<DepartTree> 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<SupDepartMapper, SupDepart> {
return tree;
}
public List<DepartTree> buildTree(List<SupDepart> departs) {
/**
* 市局主办
* @return
*/
public List<DepartTree> buildTreeByFirstHost() {
List<SupDepart> departs = listByEnabled();
Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>();
for (SupDepart depart : departs) {
DepartTree node = new DepartTree();
BeanUtils.copyProperties(depart, node);
List<DepartTree> 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<DepartTree> buildTreeByAuth() {
// 所有有效的数据
List<SupDepart> departs = listByEnabled();
return buildTreeByAuth(departs);
}
/**
* 根据角色权限
* @param departs
* @return
*/
public List<DepartTree> buildTreeByAuth(List<SupDepart> departs) {
Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>();
UserAuth user = UserContextHolder.getCurrentUser();
@ -157,6 +202,24 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return tree;
}
public List<DepartTree> buildTreeBySecond(List<SupDepart> departs) {
Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>();
for (SupDepart depart : departs) {
DepartTree node = new DepartTree();
BeanUtils.copyProperties(depart, node);
List<DepartTree> 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<DepartTree> buildTreeByParam(DepartTreeListParam departTreeListParam) {
if (Objects.nonNull(departTreeListParam.getPid())) {
LambdaQueryWrapper<SupDepart> queryWrapper = new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getPid, departTreeListParam.getPid()).orderByAsc(SupDepart::getOrderNo);
@ -190,25 +253,12 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return tree;
}
public List<DepartTree> buildTreeByFirstHost() {
List<SupDepart> departs = listByEnabled();
Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>();
for (SupDepart depart : departs) {
DepartTree node = new DepartTree();
BeanUtils.copyProperties(depart, node);
List<DepartTree> 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<String, List<DepartTree>> childMap) {
List<DepartTree> children = childMap.get(node.getId());
if (children != null) {

2
src/main/java/com/biutag/supervision/service/SupPoliceService.java

@ -49,7 +49,7 @@ public class SupPoliceService extends ServiceImpl<SupPoliceMapper, SupPolice> {
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);
}

Loading…
Cancel
Save