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 @PostMapping
public String addAll(@RequestBody @Valid List<NegativeApiDto> list) { public String addAll(@RequestBody @Valid List<NegativeApiDto> list) {
log.info("问题数据导入: {}", JSON.toJSONString(list)); log.info("问题数据导入: {}", JSON.toJSONString(list));
negativeService.saveByJwdc(list); negativeService.saveByJwpy(list);
return "success"; 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 cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.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.pojo.entity.DataCaseVerif;
import com.biutag.supervision.service.DataCaseVerifService; import com.biutag.supervision.service.DataCaseVerifService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -15,19 +20,22 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author wxc * @author wxc
* @date 2024/10/24 * @date 2024/10/24
*/ */
@RequestMapping("datav") @RequestMapping("datav/caseVerif")
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
public class DataVController { public class DataVCaseVerifController {
private final DataCaseVerifService dataCaseVerifService; 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) { 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 total = dataCaseVerifService.count(new LambdaQueryWrapper<DataCaseVerif>().between(DataCaseVerif::getDiscoveryTime, beginTime, endTime));
long confirmed = 0; long confirmed = 0;
@ -44,7 +52,26 @@ public class DataVController {
.fluentPut("accountableDepartNumber", 0) .fluentPut("accountableDepartNumber", 0)
// 查实率 // 查实率
.fluentPut("confirmedRate", total == 0 ? 0 : BigDecimal.valueOf(NumberUtil.div(confirmed, total) * 100).intValue()); .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); 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; 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.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.biutag.supervision.pojo.Result; 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") @GetMapping("tree")
public Result<List<DepartTree>> tree() { public Result<List<DepartTree>> tree() {
return Result.success(departService.buildTree()); return Result.success(departService.buildTreeByAuth());
} }
@GetMapping("second") @GetMapping("second")

16
src/main/java/com/biutag/supervision/mapper/DataCaseVerifMapper.java

@ -1,8 +1,24 @@
package com.biutag.supervision.mapper; package com.biutag.supervision.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 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> { 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) @Transactional(rollbackFor = Exception.class)
public boolean saveByJwdc(List<NegativeApiDto> list) { public boolean saveByJwpy(List<NegativeApiDto> list) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
list.forEach(item -> { list.forEach(item -> {
if (exists(item.getOriginId())) { if (exists(item.getOriginId())) {
@ -205,6 +205,7 @@ public class NegativeService extends ServiceImpl<NegativeMapper, Negative> {
.setMaxHandleDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration()) .setMaxHandleDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration())
.setMaxExtensionDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration()) .setMaxExtensionDuration(TimeLimitEnum.WORK_137.getMaxHandleDuration())
.setApprovalFlow(ApprovalFlowEnum.SECOND_APPROVAL.getValue()) .setApprovalFlow(ApprovalFlowEnum.SECOND_APPROVAL.getValue())
// 下发时间
.setFirstDistributeTime(now) .setFirstDistributeTime(now)
.setProcessingStatus(ProcessingStatusEnum.signing.name()) .setProcessingStatus(ProcessingStatusEnum.signing.name())
// 完成状态 0-待完善 1-已完善 // 完成状态 0-待完善 1-已完善
@ -224,6 +225,13 @@ public class NegativeService extends ServiceImpl<NegativeMapper, Negative> {
negative.setInvolveDepartId(dept.getId()) negative.setInvolveDepartId(dept.getId())
.setInvolveDepartName(dept.getShortName()) .setInvolveDepartName(dept.getShortName())
.setFlowKey(FlowNodeEnum.THREE_SIGN.getKey()); .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); save(negative);
// 新增work // 新增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)); .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) { 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)); 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) { public List<DepartTree> getAllNode(List<String> departIds) {
List<DepartTree> treeList = buildTree(); List<DepartTree> treeList = buildTreeAll();
List<DepartTree> nodes = new ArrayList<>(); List<DepartTree> nodes = new ArrayList<>();
getAllNodeRecursive(departIds, treeList, nodes); getAllNodeRecursive(departIds, treeList, nodes);
return nodes; return nodes;
@ -99,21 +105,22 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return baseMapper.getMaxId(); return baseMapper.getMaxId();
} }
public List<DepartTree> buildTree() { public List<DepartTree> buildTreeAll() {
// 所有有效的数据 // 所有有效的数据
List<SupDepart> departs = listByEnabled(); List<SupDepart> departs = listAllByEnabled();
return buildTree(departs); return buildTreeAll(departs);
} }
public List<DepartTree> buildTreeBySecond(List<SupDepart> departs) { public List<DepartTree> buildTreeAll(List<SupDepart> departs) {
Map<String, List<DepartTree>> childMap = new HashMap<>(); Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>(); List<DepartTree> tree = new ArrayList<>();
for (SupDepart depart : departs) { for (SupDepart depart : departs) {
DepartTree node = new DepartTree(); DepartTree node = new DepartTree();
BeanUtils.copyProperties(depart, node); 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<>()); List<DepartTree> children = childMap.computeIfAbsent(node.getPid(), k -> new ArrayList<>());
children.add(node); children.add(node);
if (AppConstants.ROOT_DEPART_ID.equals(node.getPid())) { if (AppConstants.ROOT_DEPART_ID.equals(node.getId())) {
tree.add(node); tree.add(node);
} }
} }
@ -123,7 +130,45 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return tree; 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<>(); Map<String, List<DepartTree>> childMap = new HashMap<>();
List<DepartTree> tree = new ArrayList<>(); List<DepartTree> tree = new ArrayList<>();
UserAuth user = UserContextHolder.getCurrentUser(); UserAuth user = UserContextHolder.getCurrentUser();
@ -157,6 +202,24 @@ public class SupDepartService extends ServiceImpl<SupDepartMapper, SupDepart> {
return tree; 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) { public List<DepartTree> buildTreeByParam(DepartTreeListParam departTreeListParam) {
if (Objects.nonNull(departTreeListParam.getPid())) { if (Objects.nonNull(departTreeListParam.getPid())) {
LambdaQueryWrapper<SupDepart> queryWrapper = new LambdaQueryWrapper<SupDepart>().eq(SupDepart::getPid, departTreeListParam.getPid()).orderByAsc(SupDepart::getOrderNo); 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; return tree;
} }
public List<DepartTree> buildTreeByFirstHost() { /**
List<SupDepart> departs = listByEnabled(); * 递归构建
Map<String, List<DepartTree>> childMap = new HashMap<>(); * @param node
List<DepartTree> tree = new ArrayList<>(); * @param childMap
for (SupDepart depart : departs) { * @return
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;
}
private static DepartTree buildTreeRecursive(DepartTree node, Map<String, List<DepartTree>> childMap) { private static DepartTree buildTreeRecursive(DepartTree node, Map<String, List<DepartTree>> childMap) {
List<DepartTree> children = childMap.get(node.getId()); List<DepartTree> children = childMap.get(node.getId());
if (children != null) { 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.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); return baseMapper.queryPage(Page.of(param.getCurrent(), param.getSize()), queryWrapper);
} }

Loading…
Cancel
Save