Compare commits

...

5 Commits

  1. 26
      src/main/java/com/biutag/supervision/controller/datav/DataVAuditController.java
  2. 1
      src/main/java/com/biutag/supervision/controller/datav/DataVMailViewController.java
  3. 12
      src/main/java/com/biutag/supervision/controller/subdatav/SubOneCaseVerifController.java
  4. 12
      src/main/java/com/biutag/supervision/controller/subdatav/SubOneMailViewController.java
  5. 30
      src/main/java/com/biutag/supervision/controller/subdatav/SubOneRightsController.java
  6. 10
      src/main/java/com/biutag/supervision/controller/subdatav/SubOneVideoSuperviseController.java
  7. 5
      src/main/java/com/biutag/supervision/mapper/ReportProjectMapper.java
  8. 10
      src/main/java/com/biutag/supervision/pojo/param/ReportProjectQueryParam.java
  9. 3
      src/main/java/com/biutag/supervision/pojo/request/datav/DataVRequest.java
  10. 31
      src/main/java/com/biutag/supervision/pojo/vo/AuditSuperviseMapIconVo.java
  11. 8
      src/main/java/com/biutag/supervision/repository/reportproject/ReportProjectResourceService.java
  12. 2
      src/main/java/com/biutag/supervision/service/RpcApplyService.java
  13. 2
      src/main/java/com/biutag/supervision/service/RpcApplySuperviseService.java
  14. 122
      src/main/java/com/biutag/supervision/service/datav/DatavService.java
  15. 2398
      src/main/java/com/biutag/supervision/service/datav/DatavServiceImpl.java
  16. 91
      src/main/java/com/biutag/supervision/service/subDatav/SubDatavService.java
  17. 913
      src/main/java/com/biutag/supervision/service/subDatav/SubDatavServiceImpl.java

26
src/main/java/com/biutag/supervision/controller/datav/DataVAuditController.java

@ -4,22 +4,17 @@ import cn.hutool.core.date.DateUtil;
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.ProblemSourcesEnum; import com.biutag.supervision.constants.enums.ProblemSourcesEnum;
import com.biutag.supervision.mapper.NegativeMapper;
import com.biutag.supervision.mapper.ReportProjectMapper;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.dto.common.PieItem; import com.biutag.supervision.pojo.dto.common.PieItem;
import com.biutag.supervision.pojo.entity.Negative; import com.biutag.supervision.pojo.entity.Negative;
import com.biutag.supervision.pojo.entity.News; import com.biutag.supervision.pojo.entity.News;
import com.biutag.supervision.pojo.request.datav.DataVRequest; import com.biutag.supervision.pojo.request.datav.DataVRequest;
import com.biutag.supervision.pojo.vo.AuditNegativeVo;
import com.biutag.supervision.pojo.vo.AuditOverview; import com.biutag.supervision.pojo.vo.AuditOverview;
import com.biutag.supervision.service.NegativeBlameService;
import com.biutag.supervision.service.NegativeService; import com.biutag.supervision.service.NegativeService;
import com.biutag.supervision.service.NewsService; import com.biutag.supervision.service.NewsService;
import com.biutag.supervision.service.datav.DatavService; import com.biutag.supervision.service.datav.DatavService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -48,27 +43,14 @@ public class DataVAuditController {
private final NegativeService negativeService; private final NegativeService negativeService;
private final NegativeMapper negativeMapper; private final DatavService datavService;
private final NegativeBlameService negativeBlameService;
@Resource
private ReportProjectMapper reportProjectMapper;
@Resource
private DatavService datavService;
@Operation(summary = "审计整改结果") @Operation(summary = "审计整改结果")
@GetMapping("/getAuditNegativeVo") @PostMapping("/getAuditNegativeVo")
public Result<JSONObject> getAuditNegativeVo(@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime){ public Result<JSONObject> getAuditNegativeVo(@RequestBody DataVRequest request){
List<AuditNegativeVo> fxData = negativeMapper.getAuditNegativeVo(beginTime,endTime,"3"); return datavService.getAuditNegativeVo(request);
List<AuditNegativeVo> jsData = negativeMapper.getAuditNegativeVo(beginTime,endTime,"4");
JSONObject object=new JSONObject();
object.fluentPut("fxData",fxData);
object.fluentPut("jsData",jsData);
return Result.success(object);
} }

1
src/main/java/com/biutag/supervision/controller/datav/DataVMailViewController.java

@ -126,6 +126,5 @@ public class DataVMailViewController {
}); });
return Result.success(blameMap); return Result.success(blameMap);
} }
// endregion
} }

12
src/main/java/com/biutag/supervision/controller/subdatav/SubOneCaseVerifController.java

@ -7,7 +7,7 @@ import com.biutag.supervision.mapper.NegativeMapper;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest; import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.pojo.vo.EchartsVo; import com.biutag.supervision.pojo.vo.EchartsVo;
import com.biutag.supervision.service.datav.DatavService; import com.biutag.supervision.service.subDatav.SubDatavService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -33,12 +33,12 @@ import static com.biutag.supervision.constants.enums.ProblemSourcesEnum.*;
public class SubOneCaseVerifController { public class SubOneCaseVerifController {
private final NegativeMapper negativeMapper; private final NegativeMapper negativeMapper;
private final DataCaseVerifMapper dataCaseVerifMapper; private final DataCaseVerifMapper dataCaseVerifMapper;
private final DatavService datavService; private final SubDatavService subDatavService;
@Operation(summary = "分县市局排名") @Operation(summary = "分县市局排名")
@PostMapping("/getSubOneCaseVerificationRank") @PostMapping("/getSubOneCaseVerificationRank")
public Result<JSONObject> getSubOneCaseVerificationRank(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneCaseVerificationRank(@RequestBody SubDataVRequest request) {
return datavService.getSubOneCaseVerificationRank(request); return subDatavService.getSubOneCaseVerificationRank(request);
} }
@ -63,7 +63,7 @@ public class SubOneCaseVerifController {
@Operation(summary = "中央数据总览") @Operation(summary = "中央数据总览")
@PostMapping("/getSubOneAllCaseVerificationCount") @PostMapping("/getSubOneAllCaseVerificationCount")
public Result<JSONObject> getSubOneAllCaseVerificationCount(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneAllCaseVerificationCount(@RequestBody SubDataVRequest request) {
return datavService.getSubOneAllCaseVerificationCount(request); return subDatavService.getSubOneAllCaseVerificationCount(request);
} }
@ -73,7 +73,7 @@ public class SubOneCaseVerifController {
@PostMapping("/getSubOneCaseVerificationMap") @PostMapping("/getSubOneCaseVerificationMap")
// @Cacheable(cacheNames = "Supervision:Screen:SubOneCaseVerificationMap", key = "#departId+'_'+#beginTime.getTime() + '_' +#endTime.getTime()") // @Cacheable(cacheNames = "Supervision:Screen:SubOneCaseVerificationMap", key = "#departId+'_'+#beginTime.getTime() + '_' +#endTime.getTime()")
public Result<JSONObject> getSubOneCaseVerificationMap(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneCaseVerificationMap(@RequestBody SubDataVRequest request) {
return datavService.getSubOneCaseVerificationMap(request); return subDatavService.getSubOneCaseVerificationMap(request);
} }
@ -121,7 +121,7 @@ public class SubOneCaseVerifController {
@Operation(summary = "案件来源占比 & 问责处理情况") @Operation(summary = "案件来源占比 & 问责处理情况")
@PostMapping("/getSubOneCaseSourceRateAndDealSituation") @PostMapping("/getSubOneCaseSourceRateAndDealSituation")
public Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(@RequestBody SubDataVRequest request) {
return datavService.getSubOneCaseSourceRateAndDealSituation(request); return subDatavService.getSubOneCaseSourceRateAndDealSituation(request);
} }

12
src/main/java/com/biutag/supervision/controller/subdatav/SubOneMailViewController.java

@ -10,7 +10,7 @@ import com.biutag.supervision.pojo.vo.BlameStats;
import com.biutag.supervision.pojo.vo.EchartsVo; import com.biutag.supervision.pojo.vo.EchartsVo;
import com.biutag.supervision.pojo.vo.MailMapIconVo; import com.biutag.supervision.pojo.vo.MailMapIconVo;
import com.biutag.supervision.service.DataMailService; import com.biutag.supervision.service.DataMailService;
import com.biutag.supervision.service.datav.DatavService; import com.biutag.supervision.service.subDatav.SubDatavService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -40,13 +40,13 @@ public class SubOneMailViewController {
private final DataPetitionComplaintMapper dataPetitionComplaintMapper; private final DataPetitionComplaintMapper dataPetitionComplaintMapper;
private final DataPetition12337Mapper dataPetition12337Mapper; private final DataPetition12337Mapper dataPetition12337Mapper;
private final NegativeBlameMapper negativeBlameMapper; private final NegativeBlameMapper negativeBlameMapper;
private final DatavService datavService; private final SubDatavService subDatavService;
// region 左边 // region 左边
@Operation(summary = "初访重访情况") @Operation(summary = "初访重访情况")
@PostMapping("/getSubOneFirstAndRepeatMail") @PostMapping("/getSubOneFirstAndRepeatMail")
public Result<JSONObject> getSubOneFirstAndRepeatMail(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneFirstAndRepeatMail(@RequestBody SubDataVRequest request) {
return datavService.getSubOneFirstAndRepeatMail(request); return subDatavService.getSubOneFirstAndRepeatMail(request);
} }
// endregion // endregion
@ -56,7 +56,7 @@ public class SubOneMailViewController {
@Operation(summary = "信访数据大屏中央数据统计 && 信访投诉占比") @Operation(summary = "信访数据大屏中央数据统计 && 信访投诉占比")
@PostMapping("/getSubOneAllMailCount") @PostMapping("/getSubOneAllMailCount")
public Result<JSONObject> getSubOneAllMailCount(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneAllMailCount(@RequestBody SubDataVRequest request) {
return datavService.getSubOneAllMailCount(request); return subDatavService.getSubOneAllMailCount(request);
} }
@ -64,7 +64,7 @@ public class SubOneMailViewController {
@Operation(summary = "信访数据中央地图小图标数据") @Operation(summary = "信访数据中央地图小图标数据")
@PostMapping("/getSubOneMailMapIcon") @PostMapping("/getSubOneMailMapIcon")
public Result<JSONObject> getSubOneMailMapIcon(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneMailMapIcon(@RequestBody SubDataVRequest request) {
return datavService.getSubOneMailMapIcon(request); return subDatavService.getSubOneMailMapIcon(request);
} }
@Operation(summary = "信访数据中央地图小图标数据") @Operation(summary = "信访数据中央地图小图标数据")
@ -101,7 +101,7 @@ public class SubOneMailViewController {
@Operation(summary = "群众集访情况") @Operation(summary = "群众集访情况")
@PostMapping("/getSubOneEntanglementAndMassMail") @PostMapping("/getSubOneEntanglementAndMassMail")
public Result<JSONObject> getSubOneEntanglementAndMassMail(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneEntanglementAndMassMail(@RequestBody SubDataVRequest request) {
return datavService.getSubOneEntanglementAndMassMail(request); return subDatavService.getSubOneEntanglementAndMassMail(request);
} }
// endregion // endregion

30
src/main/java/com/biutag/supervision/controller/subdatav/SubOneRightsController.java

@ -1,20 +1,14 @@
package com.biutag.supervision.controller.subdatav; package com.biutag.supervision.controller.subdatav;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervision.constants.enums.RpcApplyTypeEnum;
import com.biutag.supervision.mapper.CountyStreetDeptMapper; import com.biutag.supervision.mapper.CountyStreetDeptMapper;
import com.biutag.supervision.mapper.RpcApplyMapper; import com.biutag.supervision.mapper.RpcApplyMapper;
import com.biutag.supervision.mapper.RpcInfringerResultMapper;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.entity.CountyStreetDept; import com.biutag.supervision.pojo.entity.CountyStreetDept;
import com.biutag.supervision.pojo.entity.RpcApply;
import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest; import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.pojo.vo.ComfortMapIconVo; import com.biutag.supervision.pojo.vo.ComfortMapIconVo;
import com.biutag.supervision.service.RpcApplyService; import com.biutag.supervision.service.subDatav.SubDatavService;
import com.biutag.supervision.service.datav.DatavService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -26,8 +20,6 @@ import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* @Auther: sh * @Auther: sh
@ -44,58 +36,56 @@ public class SubOneRightsController {
private final RpcApplyMapper rpcApplyMapper; private final RpcApplyMapper rpcApplyMapper;
private final CountyStreetDeptMapper countyStreetDeptMapper; private final CountyStreetDeptMapper countyStreetDeptMapper;
private final RpcApplyService rpcApplyService; private final SubDatavService subDatavService;
private final RpcInfringerResultMapper rpcInfringerResultMapper;
private final DatavService datavService;
@Operation(summary = "维权案件情况") @Operation(summary = "维权案件情况")
@PostMapping("/getSubRightsBarList") @PostMapping("/getSubRightsBarList")
public Result<JSONObject> getSubRightsBarList(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubRightsBarList(@RequestBody SubDataVRequest request) {
return datavService.getSubRightsBarList(request); return subDatavService.getSubRightsBarList(request);
} }
@Operation(summary = "抚慰金额情况") @Operation(summary = "抚慰金额情况")
@PostMapping("/getSubComfortMoneyBarList") @PostMapping("/getSubComfortMoneyBarList")
public Result<JSONObject> getSubComfortMoneyBarList(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubComfortMoneyBarList(@RequestBody SubDataVRequest request) {
return datavService.getSubComfortMoneyBarList(request); return subDatavService.getSubComfortMoneyBarList(request);
} }
@Operation(summary = "案件类别占比") @Operation(summary = "案件类别占比")
@PostMapping("/getSubCaseType") @PostMapping("/getSubCaseType")
public Result<JSONObject> getSubCaseType(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubCaseType(@RequestBody SubDataVRequest request) {
return datavService.getSubCaseType(request); return subDatavService.getSubCaseType(request);
} }
@Operation(summary = "大屏中央总览数据") @Operation(summary = "大屏中央总览数据")
@PostMapping("/getSubOneALlComfortCount") @PostMapping("/getSubOneALlComfortCount")
public Result<JSONObject> getSubOneALlComfortCount(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneALlComfortCount(@RequestBody SubDataVRequest request) {
return datavService.getSubOneALlComfortCount(request); return subDatavService.getSubOneALlComfortCount(request);
} }
@Operation(summary = "打处情况") @Operation(summary = "打处情况")
@PostMapping("/getSubHitState") @PostMapping("/getSubHitState")
public Result<JSONObject> getSubHitState(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubHitState(@RequestBody SubDataVRequest request) {
return datavService.getSubHitState(request); return subDatavService.getSubHitState(request);
} }
@Operation(summary = "抚慰情况") @Operation(summary = "抚慰情况")
@PostMapping("/getSubComfortState") @PostMapping("/getSubComfortState")
public Result<JSONObject> getSubComfortState(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubComfortState(@RequestBody SubDataVRequest request) {
return datavService.getSubComfortState(request); return subDatavService.getSubComfortState(request);
} }
@Operation(summary = "民辅警受伤情况") @Operation(summary = "民辅警受伤情况")
@PostMapping("/getSubPoliceHurtSituationAndHurtType") @PostMapping("/getSubPoliceHurtSituationAndHurtType")
public Result<JSONObject> getSubPoliceHurtSituationAndHurtType(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubPoliceHurtSituationAndHurtType(@RequestBody SubDataVRequest request) {
return datavService.getSubPoliceHurtSituationAndHurtType(request); return subDatavService.getSubPoliceHurtSituationAndHurtType(request);
} }
@Operation(summary = "发案情况占比") @Operation(summary = "发案情况占比")
@PostMapping("/getSubOneCaseAriseSituationRate") @PostMapping("/getSubOneCaseAriseSituationRate")
public Result<JSONObject> getSubOneCaseAriseSituationRate(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneCaseAriseSituationRate(@RequestBody SubDataVRequest request) {
return datavService.getSubOneCaseAriseSituationRate(request); return subDatavService.getSubOneCaseAriseSituationRate(request);
} }
// endregion // endregion

10
src/main/java/com/biutag/supervision/controller/subdatav/SubOneVideoSuperviseController.java

@ -5,7 +5,7 @@ import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest; import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.pojo.vo.EchartsVo; import com.biutag.supervision.pojo.vo.EchartsVo;
import com.biutag.supervision.service.SubOneVideoSuperviseService; import com.biutag.supervision.service.SubOneVideoSuperviseService;
import com.biutag.supervision.service.datav.DatavService; import com.biutag.supervision.service.subDatav.SubDatavService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -29,13 +29,13 @@ import static com.biutag.supervision.constants.enums.ProblemSourcesEnum.SPDC;
public class SubOneVideoSuperviseController { public class SubOneVideoSuperviseController {
private final SubOneVideoSuperviseService subOneVideoSuperviseService; private final SubOneVideoSuperviseService subOneVideoSuperviseService;
private final DatavService datavService; private final SubDatavService subDatavService;
@Operation(summary = "问题数排名") @Operation(summary = "问题数排名")
@PostMapping("/getSubOneVideoSuperviseProblemRank") @PostMapping("/getSubOneVideoSuperviseProblemRank")
public Result<JSONObject> getSubOneVideoSuperviseProblemRank(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneVideoSuperviseProblemRank(@RequestBody SubDataVRequest request) {
return datavService.getSubOneVideoSuperviseProblemRank(request); return subDatavService.getSubOneVideoSuperviseProblemRank(request);
} }
@ -44,14 +44,14 @@ public class SubOneVideoSuperviseController {
@Operation(summary = "视频督察二级大屏中央数据") @Operation(summary = "视频督察二级大屏中央数据")
@PostMapping("/getSubOneAllVideoSuperviseCount") @PostMapping("/getSubOneAllVideoSuperviseCount")
public Result<JSONObject> getSubOneAllVideoSuperviseCount(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneAllVideoSuperviseCount(@RequestBody SubDataVRequest request) {
return datavService.getSubOneAllVideoSuperviseCount(request); return subDatavService.getSubOneAllVideoSuperviseCount(request);
} }
@Operation(summary = "地图Icon数据") @Operation(summary = "地图Icon数据")
@PostMapping("/getSubOneVideoSuperviseMap") @PostMapping("/getSubOneVideoSuperviseMap")
public Result<JSONObject> getSubOneVideoSuperviseMap(@RequestBody SubDataVRequest request) { public Result<JSONObject> getSubOneVideoSuperviseMap(@RequestBody SubDataVRequest request) {
return datavService.getSubOneVideoSuperviseMap(request); return subDatavService.getSubOneVideoSuperviseMap(request);
} }

5
src/main/java/com/biutag/supervision/mapper/ReportProjectMapper.java

@ -23,9 +23,8 @@ public interface ReportProjectMapper extends BaseMapper<ReportProject> {
" UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 " + " UNION SELECT 9 UNION SELECT 10 UNION SELECT 11 UNION SELECT 12 " +
") months " + ") months " +
"LEFT JOIN report_project rp " + "LEFT JOIN report_project rp " +
" ON MONTH(rp.archiving) = months.month " + " ON MONTH(rp.publication_date) = months.month " +
" AND YEAR(rp.archiving) = #{year} " + " AND YEAR(rp.publication_date) = #{year} " +
" AND rp.node = 'end' " +
" AND rp.delete_flag = 0 " + " AND rp.delete_flag = 0 " +
"GROUP BY months.month " + "GROUP BY months.month " +
"ORDER BY months.month") "ORDER BY months.month")

10
src/main/java/com/biutag/supervision/pojo/param/ReportProjectQueryParam.java

@ -62,6 +62,9 @@ public class ReportProjectQueryParam implements Serializable {
@Schema(defaultValue = "项目单位ID") @Schema(defaultValue = "项目单位ID")
private String projectUnitId; private String projectUnitId;
@Schema(defaultValue = "项目单位ID || 报审单位")
private Set<String> projectUnitIds;
@Schema(defaultValue = "节点状态") @Schema(defaultValue = "节点状态")
private String node; private String node;
@ -78,6 +81,13 @@ public class ReportProjectQueryParam implements Serializable {
@Schema(description = "归档时间开始") @Schema(description = "归档时间开始")
private Date archivingEnd; private Date archivingEnd;
@Schema(description = "发文日期开始")
private Date publicationDateStart;
@Schema(description = "发文日期开始")
private Date publicationDateEnd;
/** /**
* @see com.biutag.supervision.constants.enums.invest.DeleteStatusEnum * @see com.biutag.supervision.constants.enums.invest.DeleteStatusEnum
*/ */

3
src/main/java/com/biutag/supervision/pojo/request/datav/DataVRequest.java

@ -30,6 +30,9 @@ public class DataVRequest implements ParamChecked {
@Schema(description = "专项督察类型") @Schema(description = "专项督察类型")
private String specialSupervision; private String specialSupervision;
@Schema(description = "审计类型")
private String auditType;
@Override @Override
public void check() { public void check() {

31
src/main/java/com/biutag/supervision/pojo/vo/AuditSuperviseMapIconVo.java

@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.math.BigDecimal;
/** /**
* @ClassName AuditSuperviseMapIconVo * @ClassName AuditSuperviseMapIconVo
* @Description 审计监督一级大屏地图数据 * @Description 审计监督一级大屏地图数据
@ -22,27 +24,32 @@ public class AuditSuperviseMapIconVo {
@Schema(description = "部门ID") @Schema(description = "部门ID")
private String departId; private String departId;
@Schema(description = "项目数")
private Integer reportProjectNumber;
@Schema(description = "查处问题数") @Schema(description = "审计单位/项目")
private Integer checkProNumber; private Integer projectNumber;
@Schema(description = "追责问责数") @Schema(description = "审计总金额")
private Integer rushProNumber; private BigDecimal auditAmount;
@Schema(description = "审减||问题金额")
private BigDecimal auditSjAmount;
@Schema(description = "整改问题数") @Schema(description = "查出问题数")
private Integer rectifyNumber; private Integer negativeNumber;
@Schema(description = "追责问责数")
private Integer accountableNumber;
public static AuditSuperviseMapIconVo of(String departId, String name) { public static AuditSuperviseMapIconVo of(String departId, String name) {
AuditSuperviseMapIconVo vo = new AuditSuperviseMapIconVo(); AuditSuperviseMapIconVo vo = new AuditSuperviseMapIconVo();
vo.setDepartId(departId); vo.setDepartId(departId);
vo.setName(name); vo.setName(name);
// 默认初始值 // 默认初始值
vo.setReportProjectNumber(0); vo.setProjectNumber(0);
vo.setCheckProNumber(0); vo.setAuditAmount(new BigDecimal(0));
vo.setRushProNumber(0); vo.setAuditSjAmount(new BigDecimal(0));
vo.setRectifyNumber(0); vo.setNegativeNumber(0);
vo.setAccountableNumber(0);
return vo; return vo;
} }

8
src/main/java/com/biutag/supervision/repository/reportproject/ReportProjectResourceService.java

@ -7,6 +7,7 @@ import com.biutag.supervision.mapper.ReportProjectMapper;
import com.biutag.supervision.pojo.entity.report.ReportProject; import com.biutag.supervision.pojo.entity.report.ReportProject;
import com.biutag.supervision.pojo.param.ReportProjectQueryParam; import com.biutag.supervision.pojo.param.ReportProjectQueryParam;
import com.biutag.supervision.pojo.vo.EchartsVo; import com.biutag.supervision.pojo.vo.EchartsVo;
import com.biutag.supervision.repository.base.BaseDAO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -20,7 +21,7 @@ import java.util.List;
* @Date 2025/12/11 9:40 * @Date 2025/12/11 9:40
*/ */
@Service @Service
public class ReportProjectResourceService { public class ReportProjectResourceService extends BaseDAO {
@Resource @Resource
@ -28,6 +29,7 @@ public class ReportProjectResourceService {
public List<ReportProject> query(ReportProjectQueryParam param) { public List<ReportProject> query(ReportProjectQueryParam param) {
LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
setBatchQuery(param.getProjectUnitId(), param.getProjectUnitIds(), queryWrapper, ReportProject::getProjectUnitId);
queryWrapper.eq(StrUtil.isNotBlank(param.getId()), ReportProject::getId, param.getId()); queryWrapper.eq(StrUtil.isNotBlank(param.getId()), ReportProject::getId, param.getId());
queryWrapper.in(CollUtil.isNotEmpty(param.getIds()), ReportProject::getId, param.getIds()); queryWrapper.in(CollUtil.isNotEmpty(param.getIds()), ReportProject::getId, param.getIds());
queryWrapper.in(CollUtil.isNotEmpty(param.getReportTypes()), ReportProject::getReportType, param.getReportTypes()); queryWrapper.in(CollUtil.isNotEmpty(param.getReportTypes()), ReportProject::getReportType, param.getReportTypes());
@ -47,6 +49,8 @@ public class ReportProjectResourceService {
queryWrapper.le(param.getApplicantTimeEnd() != null, ReportProject::getApplicantTime, param.getApplicantTimeEnd()); queryWrapper.le(param.getApplicantTimeEnd() != null, ReportProject::getApplicantTime, param.getApplicantTimeEnd());
queryWrapper.ge(param.getArchivingStart() != null, ReportProject::getArchiving, param.getArchivingStart()); queryWrapper.ge(param.getArchivingStart() != null, ReportProject::getArchiving, param.getArchivingStart());
queryWrapper.le(param.getArchivingEnd() != null, ReportProject::getArchiving, param.getArchivingEnd()); queryWrapper.le(param.getArchivingEnd() != null, ReportProject::getArchiving, param.getArchivingEnd());
queryWrapper.ge(param.getPublicationDateStart() != null, ReportProject::getPublicationDate, param.getPublicationDateStart());
queryWrapper.le(param.getPublicationDateEnd() != null, ReportProject::getPublicationDate, param.getPublicationDateEnd());
// 处理删除标志 // 处理删除标志
if (param.getDeleteFlag() != null) { if (param.getDeleteFlag() != null) {
queryWrapper.eq(ReportProject::getDeleteFlag, param.getDeleteFlag()); queryWrapper.eq(ReportProject::getDeleteFlag, param.getDeleteFlag());
@ -81,6 +85,8 @@ public class ReportProjectResourceService {
queryWrapper.le(param.getApplicantTimeEnd() != null, ReportProject::getApplicantTime, param.getApplicantTimeEnd()); queryWrapper.le(param.getApplicantTimeEnd() != null, ReportProject::getApplicantTime, param.getApplicantTimeEnd());
queryWrapper.ge(param.getArchivingStart() != null, ReportProject::getArchiving, param.getArchivingStart()); queryWrapper.ge(param.getArchivingStart() != null, ReportProject::getArchiving, param.getArchivingStart());
queryWrapper.le(param.getArchivingEnd() != null, ReportProject::getArchiving, param.getArchivingEnd()); queryWrapper.le(param.getArchivingEnd() != null, ReportProject::getArchiving, param.getArchivingEnd());
queryWrapper.ge(param.getPublicationDateStart() != null, ReportProject::getPublicationDate, param.getPublicationDateStart());
queryWrapper.le(param.getPublicationDateEnd() != null, ReportProject::getPublicationDate, param.getPublicationDateEnd());
if (queryWrapper.getExpression() == null || queryWrapper.getExpression().getSqlSegment().isEmpty()) { if (queryWrapper.getExpression() == null || queryWrapper.getExpression().getSqlSegment().isEmpty()) {
return 0L; return 0L;
} }

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

@ -113,7 +113,7 @@ public class RpcApplyService extends ServiceImpl<RpcApplyMapper, RpcApply> {
if (rightPeoples.stream().noneMatch(item -> "1".equals(item.getCouncil()))) { if (rightPeoples.stream().noneMatch(item -> "1".equals(item.getCouncil()))) {
Set<String> departIds = rightPeoples.stream().map(RpcRightPerson::getDepartId).collect(Collectors.toSet()); Set<String> departIds = rightPeoples.stream().map(RpcRightPerson::getDepartId).collect(Collectors.toSet());
List<String> childrenIds = departService.getAllNodeIds(departIds); List<String> childrenIds = departService.getAllNodeIds(departIds);
queryWrapper.in("a.handle_depart_id", childrenIds); queryWrapper.in("a.depart_id", childrenIds);
} }
} }
queryWrapper.like(StrUtil.isNotBlank(queryParam.getApplicantEmpName()), "a.applicant_emp_name", queryParam.getApplicantEmpName()) queryWrapper.like(StrUtil.isNotBlank(queryParam.getApplicantEmpName()), "a.applicant_emp_name", queryParam.getApplicantEmpName())

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

@ -60,7 +60,7 @@ public class RpcApplySuperviseService extends ServiceImpl<RpcApplySuperviseMappe
if (rightPeoples.stream().noneMatch(item -> "1".equals(item.getCouncil()))) { if (rightPeoples.stream().noneMatch(item -> "1".equals(item.getCouncil()))) {
Set<String> departIds = rightPeoples.stream().map(RpcRightPerson::getDepartId).collect(Collectors.toSet()); Set<String> departIds = rightPeoples.stream().map(RpcRightPerson::getDepartId).collect(Collectors.toSet());
List<String> childrenIds = departService.getAllNodeIds(departIds); List<String> childrenIds = departService.getAllNodeIds(departIds);
queryWrapper.in("a.handle_depart_id", childrenIds); queryWrapper.in("a.depart_id", childrenIds);
} }
} }

122
src/main/java/com/biutag/supervision/service/datav/DatavService.java

@ -3,7 +3,6 @@ package com.biutag.supervision.service.datav;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.request.datav.DataVRequest; import com.biutag.supervision.pojo.request.datav.DataVRequest;
import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.pojo.vo.AuditOverview; import com.biutag.supervision.pojo.vo.AuditOverview;
import com.biutag.supervision.pojo.vo.SupervisionNotifyOverView; import com.biutag.supervision.pojo.vo.SupervisionNotifyOverView;
@ -100,57 +99,6 @@ public interface DatavService {
*/ */
Result<JSONObject> getPoliceHurtSituationAndHurtType(DataVRequest request); Result<JSONObject> getPoliceHurtSituationAndHurtType(DataVRequest request);
/**
* 维权抚慰 二级大屏 维权案件情况
* @param request
* @return
*/
Result<JSONObject> getSubRightsBarList(SubDataVRequest request);
Result<JSONObject> getSubComfortMoneyBarList(SubDataVRequest request);
/**
* 总览
* @param request
* @return
*/
Result<JSONObject> getSubOneALlComfortCount(SubDataVRequest request);
/**
* 案件类别占比
* @param request
* @return
*/
Result<JSONObject> getSubCaseType(SubDataVRequest request);
/**
* 二级 抚慰情况
* @param request
* @return
*/
Result<JSONObject> getSubComfortState(SubDataVRequest request);
/**
* 二级 民辅警受伤情况
* @param request
* @return
*/
Result<JSONObject> getSubPoliceHurtSituationAndHurtType(SubDataVRequest request);
/**
* 二级 发案情况占比
* @param request
* @return
*/
Result<JSONObject> getSubOneCaseAriseSituationRate(SubDataVRequest request);
/**
* 二级 维权打处情况
* @param request
* @return
*/
Result<JSONObject> getSubHitState(SubDataVRequest request);
/** /**
* 信访一级 初访重访情况 * 信访一级 初访重访情况
* @param request * @param request
@ -180,33 +128,7 @@ public interface DatavService {
*/ */
Result<JSONObject> getMailMapIcon(DataVRequest request); Result<JSONObject> getMailMapIcon(DataVRequest request);
/**
* 信访二级 初重情况
* @param request
* @return
*/
Result<JSONObject> getSubOneFirstAndRepeatMail(SubDataVRequest request);
/**
* 二级信访 总览数据
* @param request
* @return
*/
Result<JSONObject> getSubOneAllMailCount(SubDataVRequest request);
/**
* 信访二级 集访情况
* @param request
* @return
*/
Result<JSONObject> getSubOneEntanglementAndMassMail(SubDataVRequest request);
/**
* 信访二级 地图数据
* @param request
* @return
*/
Result<JSONObject> getSubOneMailMapIcon(SubDataVRequest request);
/** /**
* 视频督察一级大屏问题排名 * 视频督察一级大屏问题排名
@ -258,26 +180,6 @@ public interface DatavService {
*/ */
Result<JSONObject> getAllVideoSuperviseCount(DataVRequest request); Result<JSONObject> getAllVideoSuperviseCount(DataVRequest request);
/**
* 视频督察 问题数排名
* @param request
* @return
*/
Result<JSONObject> getSubOneVideoSuperviseProblemRank(SubDataVRequest request);
/**
* 视频督察 二级总览
* @param request
* @return
*/
Result<JSONObject> getSubOneAllVideoSuperviseCount(SubDataVRequest request);
/**
* 视频督察 二级地图
* @param request
* @return
*/
Result<JSONObject> getSubOneVideoSuperviseMap(SubDataVRequest request);
/** /**
* 案件核查 分县市局排名 * 案件核查 分县市局排名
@ -300,31 +202,11 @@ public interface DatavService {
*/ */
Result<JSONObject> getCaseSourceRateAndDealSituation(DataVRequest request); Result<JSONObject> getCaseSourceRateAndDealSituation(DataVRequest request);
/**
* 案件核查二级大屏 分县市局排名
* @param request
* @return
*/
Result<JSONObject> getSubOneCaseVerificationRank(SubDataVRequest request);
/**
* 案件核查二级大屏 总览
* @param request
* @return
*/
Result<JSONObject> getSubOneAllCaseVerificationCount(SubDataVRequest request);
/**
* 案件核查二级 地图
* @param request
* @return
*/
Result<JSONObject> getSubOneCaseVerificationMap(SubDataVRequest request);
/** /**
* 案件核查二级 案件来源占比 & 问责处理情况 * 审计监督一级大屏 整改结果
* @param request * @param request
* @return * @return
*/ */
Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(SubDataVRequest request); Result<JSONObject> getAuditNegativeVo(DataVRequest request);
} }

2398
src/main/java/com/biutag/supervision/service/datav/DatavServiceImpl.java

File diff suppressed because it is too large Load Diff

91
src/main/java/com/biutag/supervision/service/subDatav/SubDatavService.java

@ -25,4 +25,95 @@ public interface SubDatavService {
* @return * @return
*/ */
Result<JSONObject> getSubOneAllCount(SubDataVRequest request); Result<JSONObject> getSubOneAllCount(SubDataVRequest request);
/**
* 视频督察 二级问题数排名
* @param request
* @return
*/
Result<JSONObject> getSubOneVideoSuperviseProblemRank(SubDataVRequest request);
/**
* 视频督察 二级总览
* @param request
* @return
*/
Result<JSONObject> getSubOneAllVideoSuperviseCount(SubDataVRequest request);
/**
* 视频督察 二级地图
* @param request
* @return
*/
Result<JSONObject> getSubOneVideoSuperviseMap(SubDataVRequest request);
/**
* 维权抚慰 二级大屏 维权案件情况
* @param request
* @return
*/
Result<JSONObject> getSubRightsBarList(SubDataVRequest request);
/**
* 维权抚慰 二级大屏 金额情况
* @param request
* @return
*/
Result<JSONObject> getSubComfortMoneyBarList(SubDataVRequest request);
/**
* 维权抚慰 二级大屏 案件类别占比
* @param request
* @return
*/
Result<JSONObject> getSubCaseType(SubDataVRequest request);
/**
* 总览
* @param request
* @return
*/
Result<JSONObject> getSubOneALlComfortCount(SubDataVRequest request);
// 维权打处情况
Result<JSONObject> getSubHitState(SubDataVRequest request);
// 抚慰情况
Result<JSONObject> getSubComfortState(SubDataVRequest request);
// 民辅警受伤情况
Result<JSONObject> getSubPoliceHurtSituationAndHurtType(SubDataVRequest request);
// 发案情况
Result<JSONObject> getSubOneCaseAriseSituationRate(SubDataVRequest request);
// 信访 初访重访情况
Result<JSONObject> getSubOneFirstAndRepeatMail(SubDataVRequest request);
// 信访数据大屏中央数据统计 && 信访投诉占比
Result<JSONObject> getSubOneAllMailCount(SubDataVRequest request);
// 信访地图
Result<JSONObject> getSubOneMailMapIcon(SubDataVRequest request);
// 集访
Result<JSONObject> getSubOneEntanglementAndMassMail(SubDataVRequest request);
// 案件核查分县市局排名
Result<JSONObject> getSubOneCaseVerificationRank(SubDataVRequest request);
// 案件核查总览
Result<JSONObject> getSubOneAllCaseVerificationCount(SubDataVRequest request);
// 地图
Result<JSONObject> getSubOneCaseVerificationMap(SubDataVRequest request);
// 案件来源占比 & 问责处理情况
Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(SubDataVRequest request);
} }

913
src/main/java/com/biutag/supervision/service/subDatav/SubDatavServiceImpl.java

@ -1,30 +1,48 @@
package com.biutag.supervision.service.subDatav; package com.biutag.supervision.service.subDatav;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.biutag.supervision.constants.enums.DepartGroupEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.biutag.supervision.constants.enums.ProblemSourcesEnum; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.biutag.supervision.constants.enums.*;
import com.biutag.supervision.mapper.*;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.dto.DepartAndSubDepartDto; import com.biutag.supervision.pojo.dto.DepartAndSubDepartDto;
import com.biutag.supervision.pojo.entity.SupDepart; import com.biutag.supervision.pojo.dto.common.BarItem;
import com.biutag.supervision.pojo.entity.SupExternalDepart; import com.biutag.supervision.pojo.dto.common.PieItem;
import com.biutag.supervision.pojo.entity.*;
import com.biutag.supervision.pojo.entity.mailbox.Mail;
import com.biutag.supervision.pojo.param.*; import com.biutag.supervision.pojo.param.*;
import com.biutag.supervision.pojo.param.negativeBlame.NegativeBlameQueryParam;
import com.biutag.supervision.pojo.request.datav.DataVRequest;
import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest; import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.pojo.vo.GlobalOverViewVo; import com.biutag.supervision.pojo.vo.*;
import com.biutag.supervision.pojo.vo.OrganizeProblemRankVo; import com.biutag.supervision.repository.dataAudit.DataAuditResourceService;
import com.biutag.supervision.repository.dataCaseVerif.DataCaseVerifResourceService; import com.biutag.supervision.repository.dataCaseVerif.DataCaseVerifResourceService;
import com.biutag.supervision.repository.dataPetitionComplaint.DataPetitionComplaintResourceService; import com.biutag.supervision.repository.dataPetitionComplaint.DataPetitionComplaintResourceService;
import com.biutag.supervision.repository.mail.MailResourceService; import com.biutag.supervision.repository.mail.MailResourceService;
import com.biutag.supervision.repository.negative.NegativeResourceService; import com.biutag.supervision.repository.negative.NegativeResourceService;
import com.biutag.supervision.repository.negativeBlame.NegativeBlameResourceService;
import com.biutag.supervision.repository.reportproject.ReportProjectResourceService; import com.biutag.supervision.repository.reportproject.ReportProjectResourceService;
import com.biutag.supervision.repository.supExternalDepart.SupExternalDepartResourceService; import com.biutag.supervision.repository.supExternalDepart.SupExternalDepartResourceService;
import com.biutag.supervision.repository.supdepart.SupDepartResourceService; import com.biutag.supervision.repository.supdepart.SupDepartResourceService;
import com.biutag.supervision.service.NegativeBlameService; import com.biutag.supervision.service.*;
import com.biutag.supervision.service.datav.DatavServiceImpl;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.biutag.supervision.constants.enums.ProblemSourcesEnum.*;
/** /**
* @ClassName SubDatavServiceImpl * @ClassName SubDatavServiceImpl
* @Description 区县大屏服务层 * @Description 区县大屏服务层
@ -35,14 +53,13 @@ import java.util.stream.Collectors;
public class SubDatavServiceImpl implements SubDatavService { public class SubDatavServiceImpl implements SubDatavService {
@Resource @Resource
private SupDepartResourceService supDepartResourceService; private ReportProjectResourceService reportProjectResourceService;
@Resource @Resource
private NegativeResourceService negativeResourceService; private NegativeResourceService negativeResourceService;
@Resource @Resource
private ReportProjectResourceService reportProjectResourceService; private SupDepartResourceService supDepartResourceService;
@Resource @Resource
private NegativeBlameService negativeBlameService; private NegativeBlameService negativeBlameService;
@ -59,7 +76,63 @@ public class SubDatavServiceImpl implements SubDatavService {
@Resource @Resource
private DataCaseVerifResourceService dataCaseVerifResourceService; private DataCaseVerifResourceService dataCaseVerifResourceService;
@Resource
private SupPoliceService supPoliceService;
@Resource
private DataAuditResourceService dataAuditResourceService;
@Resource
private NegativeService negativeService;
@Resource
private RpcApplyMapper rpcApplyMapper;
@Resource
private RpcComfortPacksMapper rpcComfortPacksMapper;
@Resource
private DataPetitionComplaintMapper dataPetitionComplaintMapper;
@Resource
private DataMailService dataMailService;
@Resource
private MailMapper mailMapper;
@Resource
private DataPetition12337Mapper dataPetition12337Mapper;
@Resource
private SupExternalDepartMapper supExternalDepartMapper;
@Resource
private DataPetition12337Service dataPetition12337Service;
@Resource
private SupDepartMapper supDepartMapper;
@Resource
private NegativeMapper negativeMapper;
@Resource
private SuperviseReportService superviseReportService;
@Resource
private NegativeBlameResourceService negativeBlameResourceService;
@Resource
private DataCaseVerifMapper dataCaseVerifMapper;
private static final String NO_BLAME = "不予追责";
private static final BigDecimal WAN = new BigDecimal("10000");
private final String VALID_SIGN = "terminated";
private final String EX_SOURCE = "局长信箱";
// region 首页二级大屏
// 问题排名
@Override @Override
public Result<JSONObject> getSubOneOrganizationRank(SubDataVRequest request) { public Result<JSONObject> getSubOneOrganizationRank(SubDataVRequest request) {
SupDepartQueryParam supDepartQueryParam = new SupDepartQueryParam(); SupDepartQueryParam supDepartQueryParam = new SupDepartQueryParam();
@ -85,6 +158,7 @@ public class SubDatavServiceImpl implements SubDatavService {
} }
// 二级首页总览数据
@Override @Override
public Result<JSONObject> getSubOneAllCount(SubDataVRequest request) { public Result<JSONObject> getSubOneAllCount(SubDataVRequest request) {
@ -167,7 +241,826 @@ public class SubDatavServiceImpl implements SubDatavService {
return Result.success(data); return Result.success(data);
} }
// endregion
// region 视频督察二级
// 视频督察 二级问题数排名
@Override
public Result<JSONObject> getSubOneVideoSuperviseProblemRank(SubDataVRequest request) {
List<OrganizeProblemRankVo> policeVideoSuperviseProblemRankList = new ArrayList<>();
List<OrganizeProblemRankVo> teamVideoSuperviseProblemRankList = new ArrayList<>();
SupDepartQueryParam supDepartGroupParam = new SupDepartQueryParam();
supDepartGroupParam.setLevel("3");
supDepartGroupParam.setPid(request.getDepartId());
List<SupDepart> supDepartList = supDepartResourceService.query(supDepartGroupParam);
// 派出所
List<SupDepart> pcsList = supDepartList.stream()
.filter(one -> StrUtil.isNotBlank(one.getStatisticsGroupId()))
.filter(one -> DepartGroupEnum.PCS.getId().equals(Integer.valueOf(one.getStatisticsGroupId())))
.toList();
// 大队
List<SupDepart> dwList = supDepartList.stream()
.filter(one -> {
String groupId = one.getStatisticsGroupId();
return !StrUtil.isNotBlank(groupId)
|| !DepartGroupEnum.PCS.getId().equals(Integer.valueOf(groupId));
})
.toList();
for (SupDepart pcs : pcsList) {
List<Negative> fxsjList = negativeMapper.getVideoSuperviseProblemRank(pcs.getId(), request.getBeginTime(), request.getEndTime());
// 总数
long total = fxsjList.size();
if (total == 0) {
continue;
}
// 市局下发
long sjxf = fxsjList.stream().filter(one -> Integer.valueOf(0).equals(one.getCrtDepartLevel())).count();
// 县局下发
long xjxf = fxsjList.stream().filter(one -> Integer.valueOf(2).equals(one.getCrtDepartLevel())).count();
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(pcs.getShortName());
organizeProblemRankVo.setCityNumber(String.valueOf(sjxf));
organizeProblemRankVo.setCountyNumber(String.valueOf(xjxf));
organizeProblemRankVo.setValue(String.valueOf(total));
policeVideoSuperviseProblemRankList.add(organizeProblemRankVo);
}
for (SupDepart dw : dwList) {
List<Negative> fxsjList = negativeMapper.getVideoSuperviseProblemRank(dw.getId(), request.getBeginTime(), request.getEndTime());
// 总数
long total = fxsjList.size();
if (total == 0) {
continue;
}
// 市局下发
long sjxf = fxsjList.stream().filter(one -> Integer.valueOf(0).equals(one.getCrtDepartLevel())).count();
// 县局下发
long xjxf = fxsjList.stream().filter(one -> Integer.valueOf(2).equals(one.getCrtDepartLevel())).count();
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(dw.getShortName());
organizeProblemRankVo.setCityNumber(String.valueOf(sjxf));
organizeProblemRankVo.setCountyNumber(String.valueOf(xjxf));
organizeProblemRankVo.setValue(String.valueOf(total));
teamVideoSuperviseProblemRankList.add(organizeProblemRankVo);
}
// 排序
policeVideoSuperviseProblemRankList.sort(
Comparator.comparingLong((OrganizeProblemRankVo vo) -> Long.parseLong(vo.getValue()))
.reversed()
);
teamVideoSuperviseProblemRankList.sort(
Comparator.comparingLong((OrganizeProblemRankVo vo) -> Long.parseLong(vo.getValue()))
.reversed()
);
JSONObject data = new JSONObject();
data.fluentPut("policeVideoSuperviseProblemRankList", policeVideoSuperviseProblemRankList);
data.fluentPut("teamVideoSuperviseProblemRankList", teamVideoSuperviseProblemRankList);
return Result.success(data);
}
// 视频督察二级总览
@Override
public Result<JSONObject> getSubOneAllVideoSuperviseCount(SubDataVRequest request) {
List<Negative> negatives = negativeMapper.getNegativeListData(request.getDepartId(), request.getBeginTime(), request.getEndTime(), List.of(SPDC.getValue()));
List<Negative> ssList = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).toList();
List<Negative> completedList = negatives.stream().filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).toList();
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(ssList.stream().map(Negative::getId).toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
// 3. 个人问责
List<NegativeBlame> personalBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
// 4. 领导问责(按 negativeId + 领导姓名 + 领导处理结果 去重)
Set<String> seenLead = new HashSet<>();
List<NegativeBlame> leadBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getLeadHandleResultName()))
.filter(one -> !"不予追责".equals(one.getLeadHandleResultName()))
.filter(one -> seenLead.add(
one.getNegativeId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName()
))
.toList();
// 5. 单位问责
List<NegativeBlame> unitBlames = negativeBlames.stream()
.filter(one -> BlameType.department.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
VideoSuperviseCountVo overview = new VideoSuperviseCountVo();
overview.setTotal(negatives.size());
overview.setCompletionProblem((long) completedList.size());
overview.setDiscoverProblem((long) ssList.size());
overview.setRelativeOrg((long) unitBlames.size());
overview.setRelativePer((long) (personalBlames.size() + leadBlames.size()));
JSONObject data = new JSONObject().fluentPut("overview", overview);
return Result.success(data);
}
// 视频督察二级地图
@Override
public Result<JSONObject> getSubOneVideoSuperviseMap(SubDataVRequest request) {
List<VideoSuperviseMapIconVo> videoSuperviseMapIconVoList = new ArrayList<>();
String departId = request.getDepartId();
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
List<String> proCode = List.of(SPDC.getValue());
// 查该区县局下属所有派出所
List<SupDepart> policeDeparts = supDepartMapper.selectPoliceDeparts(Integer.valueOf(departId));
for (SupDepart pcs : policeDeparts) {
List<Negative> negatives = negativeMapper.getNegativeListData(pcs.getId(), request.getBeginTime(), request.getEndTime(), proCode);
List<Negative> ssList = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).toList();
List<Negative> completedList = negatives.stream().filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).toList();
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(ssList.stream().map(Negative::getId).toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
// 3. 个人问责
List<NegativeBlame> personalBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
// 4. 领导问责(按 negativeId + 领导姓名 + 领导处理结果 去重)
Set<String> seenLead = new HashSet<>();
List<NegativeBlame> leadBlames = negativeBlames.stream()
.filter(one -> StrUtil.isNotBlank(one.getLeadHandleResultName()))
.filter(one -> !"不予追责".equals(one.getLeadHandleResultName()))
.filter(one -> seenLead.add(
one.getNegativeId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName()
))
.toList();
// 5. 单位问责
List<NegativeBlame> unitBlames = negativeBlames.stream()
.filter(one -> BlameType.department.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
VideoSuperviseMapIconVo videoSuperviseMapIconVo = new VideoSuperviseMapIconVo();
videoSuperviseMapIconVo.setName(pcs.getShortName());
videoSuperviseMapIconVo.setDepartId(pcs.getId());
videoSuperviseMapIconVo.setDiscoverProblem(ssList.size());
videoSuperviseMapIconVo.setCompletionProblem(completedList.size());
videoSuperviseMapIconVo.setRelativeOrg(unitBlames.size());
videoSuperviseMapIconVo.setRelativePer(personalBlames.size() + leadBlames.size());
videoSuperviseMapIconVoList.add(videoSuperviseMapIconVo);
}
videoSuperviseMapIconVoList.forEach(VideoSuperviseMapIconVo::initDefaultIfNull);
JSONObject data = new JSONObject().fluentPut("videoSuperviseMapIconVoList", videoSuperviseMapIconVoList);
return Result.success(data);
}
// endregion
// region 案件核查二级
// 排名
@Override
public Result<JSONObject> getSubOneCaseVerificationRank(SubDataVRequest request) {
List<String> proCode = List.of(A12389.getValue(), SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
List<SupDepart> level3ByPidSupDepartList = supDepartResourceService.getLevel3ByPidSupDepartList(request.getDepartId());
// 派出所
List<SupDepart> pcsList = level3ByPidSupDepartList.stream()
.filter(one -> StrUtil.isNotBlank(one.getStatisticsGroupId()))
.filter(one -> DepartGroupEnum.PCS.getId().equals(Integer.valueOf(one.getStatisticsGroupId())))
.toList();
// 大队
List<SupDepart> dwList = level3ByPidSupDepartList.stream()
.filter(one -> {
String groupId = one.getStatisticsGroupId();
return !StrUtil.isNotBlank(groupId)
|| !DepartGroupEnum.PCS.getId().equals(Integer.valueOf(groupId));
})
.toList();
List<OrganizeProblemRankVo> fxsjRankList = new ArrayList<>();
List<OrganizeProblemRankVo> jsdwRankList = new ArrayList<>();
for (SupDepart pcs : pcsList) {
List<Negative> negatives = negativeMapper.getNegativeListData(pcs.getId(), request.getBeginTime(), request.getEndTime(), proCode);
if (CollectionUtil.isEmpty(negatives)) {
continue;
}
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(pcs.getShortName());
organizeProblemRankVo.setValue(String.valueOf(negatives.size()));
fxsjRankList.add(organizeProblemRankVo);
}
for (SupDepart dw : dwList) {
List<Negative> negatives = negativeMapper.getNegativeListData(dw.getId(), request.getBeginTime(), request.getEndTime(), proCode);
if (CollectionUtil.isEmpty(negatives)) {
continue;
}
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(dw.getShortName());
organizeProblemRankVo.setValue(String.valueOf(negatives.size()));
jsdwRankList.add(organizeProblemRankVo);
}
// 排序
fxsjRankList.sort(
Comparator.comparingLong((OrganizeProblemRankVo vo) -> Long.parseLong(vo.getValue()))
.reversed()
);
jsdwRankList.sort(
Comparator.comparingLong((OrganizeProblemRankVo vo) -> Long.parseLong(vo.getValue()))
.reversed()
);
JSONObject data = new JSONObject()
.fluentPut("fxsjRankList", fxsjRankList)
.fluentPut("jsdwRankList", jsdwRankList);
return Result.success(data);
}
// 总览
@Override
public Result<JSONObject> getSubOneAllCaseVerificationCount(SubDataVRequest request) {
// 交办
Set<String> ldjbCode = Set.of(SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
List<String> proCode = List.of(A12389.getValue(), SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
LambdaQueryWrapper<DataCaseVerif> dataCaseVerifLambdaQueryWrapper = new LambdaQueryWrapper<>();
dataCaseVerifLambdaQueryWrapper.between(DataCaseVerif::getCreateTime, request.getBeginTime(), request.getEndTime());
List<DataCaseVerif> dataCaseVerifs = dataCaseVerifMapper.getListData(request.getDepartId(), request.getBeginTime(), request.getEndTime());
List<Negative> negatives = negativeMapper.getNegativeListData(request.getDepartId(), request.getBeginTime(), request.getEndTime(), proCode);
List<Negative> ssNegative = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).toList();
// 交办案件数
List<Negative> jbNegatvieList = negatives.stream().filter(one -> ldjbCode.contains(one.getProblemSourcesCode())).toList();
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(ssNegative.stream().map(Negative::getId).toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
// 3. 个人问责
List<NegativeBlame> personalBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
// 4. 领导问责(按 negativeId + 领导姓名 + 领导处理结果 去重)
Set<String> seenLead = new HashSet<>();
List<NegativeBlame> leadBlames = negativeBlames.stream()
.filter(one -> StrUtil.isNotBlank(one.getLeadHandleResultName()))
.filter(one -> !"不予追责".equals(one.getLeadHandleResultName()))
.filter(one -> seenLead.add(
one.getNegativeId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName()
))
.toList();
// 5. 单位问责
List<NegativeBlame> unitBlames = negativeBlames.stream()
.filter(one -> BlameType.department.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
Double verificationRate = 0.0;
if (!dataCaseVerifs.isEmpty()) {
double rawRate = (double) ssNegative.size() / (dataCaseVerifs.size() + jbNegatvieList.size()) * 100;
verificationRate = Math.round(rawRate * 10) / 10.0;
}
CaseVerificationCountVo overview = new CaseVerificationCountVo();
overview.setTotal(dataCaseVerifs.size() + jbNegatvieList.size());
overview.setConfirmed(ssNegative.size());
overview.setDealCasePro((long) negatives.size());
overview.setPunishPre((long) (personalBlames.size() + leadBlames.size()));
overview.setPunishOrg((long) unitBlames.size());
overview.setRate(verificationRate);
JSONObject res = new JSONObject().fluentPut("overview", overview);
return Result.success(res);
}
// 地图
@Override
public Result<JSONObject> getSubOneCaseVerificationMap(SubDataVRequest request) {
// 交办
Set<String> ldjbCode = Set.of(SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
List<String> proCode = List.of(A12389.getValue(), SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
// 查该区县局下属所有派出所
List<SupDepart> policeDeparts = supDepartMapper.selectPoliceDeparts(Integer.valueOf(request.getDepartId()));
List<CaseVerificationMapVo> caseVerificationMapList = new ArrayList<>();
for (SupDepart pcs : policeDeparts) {
// 案件核查
LambdaQueryWrapper<DataCaseVerif> dataCaseVerifLambdaQueryWrapper = new LambdaQueryWrapper<>();
dataCaseVerifLambdaQueryWrapper.between(DataCaseVerif::getCreateTime, request.getBeginTime(), request.getEndTime());
dataCaseVerifLambdaQueryWrapper.eq(DataCaseVerif::getThirdDepartId, pcs.getId());
List<DataCaseVerif> dataCaseVerifs = dataCaseVerifMapper.selectList(dataCaseVerifLambdaQueryWrapper);
// 所有查处数据
List<Negative> negatives = negativeMapper.getNegativeListData(pcs.getId(), request.getBeginTime(), request.getEndTime(), proCode);
// 交办案件数
List<Negative> jbNegatvieList = negatives.stream().filter(one -> ldjbCode.contains(one.getProblemSourcesCode())).toList();
// 问责情况
List<Negative> ssNegative = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).toList();
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(ssNegative.stream().map(Negative::getId).toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
// 3. 个人问责
List<NegativeBlame> personalBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
// 4. 领导问责(按 negativeId + 领导姓名 + 领导处理结果 去重)
Set<String> seenLead = new HashSet<>();
List<NegativeBlame> leadBlames = negativeBlames.stream()
.filter(one -> StrUtil.isNotBlank(one.getLeadHandleResultName()))
.filter(one -> !"不予追责".equals(one.getLeadHandleResultName()))
.filter(one -> seenLead.add(
one.getNegativeId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName()
))
.toList();
// 5. 单位问责
List<NegativeBlame> unitBlames = negativeBlames.stream()
.filter(one -> BlameType.department.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.toList();
int totalCaseCount = dataCaseVerifs.size() + jbNegatvieList.size();
double verificationRate = 0.0;
if (totalCaseCount > 0) {
double rawRate = (double) ssNegative.size() / totalCaseCount * 100;
verificationRate = Math.round(rawRate * 10) / 10.0;
}
CaseVerificationMapVo caseVerificationMapVo = new CaseVerificationMapVo();
caseVerificationMapVo.setName(pcs.getShortName());
caseVerificationMapVo.setDepartId(pcs.getId());
caseVerificationMapVo.setTotal(dataCaseVerifs.size() + jbNegatvieList.size());
caseVerificationMapVo.setConfirmed(ssNegative.size());
caseVerificationMapVo.setDealCasePro(negatives.size());
caseVerificationMapVo.setPunishPre(personalBlames.size() + leadBlames.size());
caseVerificationMapVo.setPunishOrg(unitBlames.size());
caseVerificationMapVo.setRate(verificationRate);
caseVerificationMapList.add(caseVerificationMapVo);
}
caseVerificationMapList.forEach(CaseVerificationMapVo::initDefaultIfNull);
JSONObject res = new JSONObject().fluentPut("caseVerificationMapList", caseVerificationMapList);
return Result.success(res);
}
// 案件来源占比 & 问责处理情况
@Override
public Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(SubDataVRequest request) {
List<EchartsVo> caseSourceRateList = new ArrayList<>();
List<EchartsVo> dealSituationPieList = new ArrayList<>();
// 总
List<String> proCode = List.of(A12389.getValue(), SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
// 交办
Set<String> ldjbCode = Set.of(SLDJB.getValue(), ZDDJB.getValue(), SJJB.getValue());
// 案件核查 || 12389
List<DataCaseVerif> dataCaseVerifs = dataCaseVerifMapper.getListData(request.getDepartId(), request.getBeginTime(), request.getEndTime());
// 交办
List<Negative> negatives = negativeMapper.getNegativeListData(request.getDepartId(), request.getBeginTime(), request.getEndTime(), proCode);
// 案件来源占比
// 1、找到案件核查案件数
caseSourceRateList.add(new EchartsVo("12389投诉", dataCaseVerifs.size()));
// 2、找交办案件数
Map<String, List<Negative>> groupedByProblemSource = negatives.stream()
.filter(one -> StrUtil.isNotBlank(one.getProblemSourcesCode()))
.filter(one -> StrUtil.isNotBlank(one.getProblemSources()))
.filter(one -> ldjbCode.contains(one.getProblemSourcesCode()))
.collect(Collectors.groupingBy(Negative::getProblemSources));
for (Map.Entry<String, List<Negative>> entry : groupedByProblemSource.entrySet()) {
EchartsVo echartsVo = new EchartsVo();
echartsVo.setName(entry.getKey());
echartsVo.setValue(entry.getValue().size());
caseSourceRateList.add(echartsVo);
}
// 问责处理情况
List<Negative> ssNegative = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).toList();
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(ssNegative.stream().map(Negative::getId).toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
Map<String, List<NegativeBlame>> blames = negativeBlames.stream()
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !"不予追责".equals(one.getHandleResultName()))
.collect(Collectors.groupingBy(NegativeBlame::getHandleResultName));
for (Map.Entry<String, List<NegativeBlame>> entry : blames.entrySet()) {
EchartsVo echartsVo = new EchartsVo();
echartsVo.setName(entry.getKey());
echartsVo.setValue(entry.getValue().size());
dealSituationPieList.add(echartsVo);
}
// 过滤0
caseSourceRateList = filterZero(caseSourceRateList);
dealSituationPieList = filterZero(dealSituationPieList);
JSONObject data = new JSONObject()
.fluentPut("caseSourceRateList", caseSourceRateList)
.fluentPut("dealSituationPieList", dealSituationPieList);
return Result.success(data);
}
// endregion
// region 信访投诉二级
@Override
public Result<JSONObject> getSubOneFirstAndRepeatMail(SubDataVRequest request) {
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
// 派出所
List<OrganizeProblemRankVo> fxsjFirstRankList = dataPetitionComplaintMapper.getSubMailRank(beginTime, endTime, 10, RepeatEnum.FIRST_MAIL.getId(), request.getDepartId());
List<OrganizeProblemRankVo> fxsjRepeatRankList = dataPetitionComplaintMapper.getSubMailRank(beginTime, endTime, 10, RepeatEnum.REPEAT_MAIL.getId(), request.getDepartId());
// 大队
List<OrganizeProblemRankVo> bwzdFirstRankList = dataPetitionComplaintMapper.getSubMailRank(beginTime, endTime, null, RepeatEnum.FIRST_MAIL.getId(), request.getDepartId());
List<OrganizeProblemRankVo> bwzdRepeatRankList = dataPetitionComplaintMapper.getSubMailRank(beginTime, endTime, null, RepeatEnum.REPEAT_MAIL.getId(), request.getDepartId());
// 汇总(派出所)
MailFirstAndRepeatOverviewVo fxsjOverview = new MailFirstAndRepeatOverviewVo();
fxsjOverview.setFirstMail(fxsjFirstRankList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
fxsjOverview.setRepeatMail(fxsjRepeatRankList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
fxsjOverview.setLeaderMail(0);
// 汇总(大队)
MailFirstAndRepeatOverviewVo bwzdOverview = new MailFirstAndRepeatOverviewVo();
bwzdOverview.setFirstMail(bwzdFirstRankList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
bwzdOverview.setRepeatMail(bwzdRepeatRankList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
bwzdOverview.setLeaderMail(0);
JSONObject data = new JSONObject()
.fluentPut("fxsjOverview", fxsjOverview)
.fluentPut("bwzdOverview", bwzdOverview)
.fluentPut("fxsjFirstRankList", fxsjFirstRankList)
.fluentPut("fxsjRepeatRankList", fxsjRepeatRankList)
.fluentPut("bwzdFirstRankList", bwzdFirstRankList)
.fluentPut("bwzdRepeatRankList", bwzdRepeatRankList);
// return getSubOneFirstAndRepeatMail();
return Result.success(data);
}
// 信访数据大屏中央数据统计 && 信访投诉占比
@Override
public Result<JSONObject> getSubOneAllMailCount(SubDataVRequest request) {
MailOverviewVo overview = new MailOverviewVo();
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
String departId = request.getDepartId();
// 国家信访
Long countryTotal = dataPetitionComplaintMapper.selectMailBySourceCode(beginTime, endTime, GJXFPT.getValue(), departId);
// 公安信访
Long policeTotal = dataPetitionComplaintMapper.selectMailBySourceCode(beginTime, endTime, GABXF.getValue(), departId);
// 12337
Long numTotal = dataPetition12337Service.count(new LambdaQueryWrapper<DataPetition12337>().between(DataPetition12337::getDiscoverTime, beginTime, endTime).eq(DataPetition12337::getSecondDepartId, departId));
// 局长信箱
QueryWrapper<Mail> subOneMailQueryWrapper = new QueryWrapper<>();
String exDepartId = supExternalDepartMapper.getExIdByInId(departId.toString(), "局长信箱");
subOneMailQueryWrapper.ne("mail_state", VALID_SIGN);
subOneMailQueryWrapper.eq("second_dept_id", exDepartId);
subOneMailQueryWrapper.between("create_time", beginTime, endTime);
Long commissionerTotal = mailMapper.selectCount(subOneMailQueryWrapper);
// 总数
Long total = countryTotal + policeTotal + numTotal;
//国家信访
overview.setCountryMail(countryTotal);
//公安部信访
overview.setPoliceMail(policeTotal);
//局长信箱
overview.setManageMail(commissionerTotal);
//12337信访
overview.setNumberMail(numTotal);
overview.setTotalMail(total);
// overview.setCountryMail(120L); // 国家信访
// overview.setPoliceMail(45L); // 公安部信访
// overview.setNumberMail(30L); // 12337
// overview.setManageMail(20L); // 局长信箱
// overview.setTotalMail(120L + 45L + 30L);
JSONObject data = new JSONObject().fluentPut("overview", overview);
return Result.success(data);
}
// 信访地图
@Override
public Result<JSONObject> getSubOneMailMapIcon(SubDataVRequest request) {
List<MailMapIconVo> res = new ArrayList<>();
String departId = request.getDepartId();
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
// 查该区县局下属所有派出所
List<SupDepart> policeDeparts = supDepartMapper.selectPoliceDeparts(Integer.valueOf(departId));
for (SupDepart supDepart : policeDeparts) {
MailMapIconVo mapIconVo = new MailMapIconVo();
mapIconVo.setName(supDepart.getShortName());
mapIconVo.setDepartId(supDepart.getId());
res.add(mapIconVo);
}
// 查询国家信访和公安部信访数据
for (MailMapIconVo re : res) {
String policeDepartId = re.getDepartId();
// 国家
Long countryTotal = dataPetitionComplaintMapper.selectPoliceMailBySourceCode(beginTime, endTime, GJXFPT.getValue(), policeDepartId);
// 公安
Long policeTotal = dataPetitionComplaintMapper.selectPoliceMailBySourceCode(beginTime, endTime, GABXF.getValue(), policeDepartId);
// 12337 数据
LambdaQueryWrapper<DataPetition12337> dataPetition12337LambdaQueryWrapper = new LambdaQueryWrapper<>();
dataPetition12337LambdaQueryWrapper.between(DataPetition12337::getDiscoverTime, beginTime, endTime);
dataPetition12337LambdaQueryWrapper.eq(DataPetition12337::getThirdDepartId, re.getDepartId());
Long numTotal = dataPetition12337Service.count(dataPetition12337LambdaQueryWrapper);
// 局长信箱
String exDepartId = supExternalDepartMapper.getExIdByInId(policeDepartId, EX_SOURCE);
Long manageMail = 0L;
if (exDepartId != null) {
QueryWrapper<Mail> qw = new QueryWrapper<>();
qw.ne("mail_state", VALID_SIGN);
qw.eq("three_dept_id", exDepartId);
qw.between("create_time", beginTime, endTime);
manageMail = mailMapper.selectCount(qw);
}
long country = countryTotal == null ? 0L : countryTotal;
long police = policeTotal == null ? 0L : policeTotal;
long num = numTotal == null ? 0L : numTotal;
long manage = manageMail == null ? 0L : manageMail;
Long total = country + police + num;
re.setCountryTotal(String.valueOf(country));
re.setPoliceTotal(String.valueOf(police));
re.setCommissionerTotal(String.valueOf(manage));
re.setNumTotal(String.valueOf(num));
re.setTotal(total.toString());
}
JSONObject data = new JSONObject().fluentPut("mailMapIconList", res);
// return getSubOneMailMapIcon();
return Result.success(data);
}
// 集访
@Override
public Result<JSONObject> getSubOneEntanglementAndMassMail(SubDataVRequest request) {
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
String departId = request.getDepartId();
// 分县市局
List<OrganizeProblemRankVo> fxsjMassMailList = dataPetitionComplaintMapper.getSubOneMassMailRank(beginTime, endTime, 10, departId);
List<OrganizeProblemRankVo> fxsjLeaderReviewMailList = dataPetitionComplaintMapper.getSubOneMailLeaderRank(beginTime, endTime, 10, departId);
// 局属单位
List<OrganizeProblemRankVo> bwzdMassMailList = dataPetitionComplaintMapper.getSubOneMassMailRank(beginTime, endTime, null, departId);
List<OrganizeProblemRankVo> bwzdLeaderReviewMailList = dataPetitionComplaintMapper.getMailLeaderRank(beginTime, endTime, 4);
// 汇总(分县市局)
MailEntanglementMassOverviewVo fxsjOverview = new MailEntanglementMassOverviewVo();
fxsjOverview.setEntanglement(0);
fxsjOverview.setMass(fxsjMassMailList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
fxsjOverview.setLeaderReview(fxsjLeaderReviewMailList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
// 汇总(局属单位)
MailEntanglementMassOverviewVo bwzdOverview = new MailEntanglementMassOverviewVo();
bwzdOverview.setEntanglement(0);
bwzdOverview.setMass(bwzdMassMailList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
bwzdOverview.setLeaderReview(bwzdLeaderReviewMailList.stream().mapToInt(OrganizeProblemRankVo::getValueAsInt).sum());
JSONObject data = new JSONObject()
.fluentPut("fxsjOverview", fxsjOverview)
.fluentPut("bwzdOverview", bwzdOverview)
.fluentPut("fxsjMassMailList", fxsjMassMailList)
.fluentPut("bwzdMassMailList", bwzdMassMailList)
.fluentPut("fxsjLeaderReviewMailList", fxsjLeaderReviewMailList)
.fluentPut("bwzdLeaderReviewMailList", bwzdLeaderReviewMailList);
// return mockSubOneEntanglementAndMassMail();
return Result.success(data);
}
// endregion
// region 维权抚慰二级
// 二级大屏 维权案件情况
@Override
public Result<JSONObject> getSubRightsBarList(SubDataVRequest request) {
// 维权案件情况 - 派出所
List<BarItem> pcsList = rpcApplyMapper.selectSubPcsProtectRightsBarList(request.getBeginTime(), request.getEndTime(), Integer.valueOf(request.getDepartId()), 10);
// 维权案件情况 - 大队
List<BarItem> dbList = rpcApplyMapper.selectSubDdProtectRightsBarList(request.getBeginTime(), request.getEndTime(), Integer.valueOf(request.getDepartId()), 10);
JSONObject data = new JSONObject()
.fluentPut("fxsjRightsRankList", pcsList)
.fluentPut("jsdwRightsRankList", dbList);
return Result.success(data);
}
// 金额情况
@Override
public Result<JSONObject> getSubComfortMoneyBarList(SubDataVRequest request) {
List<BarItem> fxsjComfortMoneyRank = rpcApplyMapper.getSubPcComfortMoneyBarList(request.getBeginTime(), request.getEndTime(), request.getDepartId(), 10);
List<BarItem> jsdwComfortMoneyRank = rpcApplyMapper.getSubDdComfortMoneyBarList(request.getBeginTime(), request.getEndTime(), request.getDepartId(), 10);
JSONObject data = new JSONObject()
.fluentPut("fxsjComfortMoneyRank", fxsjComfortMoneyRank)
.fluentPut("jsdwComfortMoneyRank", jsdwComfortMoneyRank);
return Result.success(data);
}
// 维权抚慰 二级大屏 案件类别占比
@Override
public Result<JSONObject> getSubCaseType(SubDataVRequest request) {
List<EchartsVo> crownCaseBar = rpcApplyMapper.selectSubCaseData(request.getBeginTime(), request.getEndTime(), "1", Integer.valueOf(request.getDepartId()));
//案件类别 - 行政
List<EchartsVo> administrativeCase = rpcApplyMapper.selectSubCaseData(request.getBeginTime(), request.getEndTime(), "2", Integer.valueOf(request.getDepartId()));
JSONObject data = new JSONObject().fluentPut("crownCaseBar", crownCaseBar).fluentPut("administrativeCase", administrativeCase);
return Result.success(data);
}
// 维权抚慰 二级大屏 案件类别占比
@Override
public Result<JSONObject> getSubOneALlComfortCount(SubDataVRequest request) {
ComfortCountVO comfortOverview = new ComfortCountVO();
Date beginTime = request.getBeginTime();
Date endTime = request.getEndTime();
String departId = request.getDepartId();
comfortOverview.setComfortCaseTotal(Long.valueOf(rpcApplyMapper.selectMapRightsNumber(beginTime, endTime, departId)));
comfortOverview.setHurtTotal(Long.valueOf(rpcApplyMapper.selectMapVictimNumber(beginTime, endTime, departId)));
comfortOverview.setComfortTotal(rpcApplyMapper.selectMapComfortPersonNumber(beginTime, endTime, departId));
List<String> tortNames = rpcApplyMapper.selectMaptHitPersonNumber(beginTime, endTime, departId);
long initialListSize = tortNames.size();
long hitPersonNumber = tortNames.stream()
.filter(s -> s.contains(",")).toList().size();
// 筛选出包含逗号的名称
long nums = tortNames.stream()
.filter(s -> s.contains(","))
.mapToLong(s -> s.split(",").length) // 拆分每个名称并计算拆分后的数组长度
.sum();// 计算所有拆分后数组长度的总和
if (tortNames.stream().noneMatch(s -> s.contains(","))) {
comfortOverview.setHitTotal(initialListSize);
} else {
comfortOverview.setHitTotal(initialListSize + nums - hitPersonNumber);
}
comfortOverview.setComfortMoney(rpcApplyMapper.selectMapComfortMoney(beginTime, endTime, departId));
JSONObject data = new JSONObject().fluentPut("comfortOverview", comfortOverview);
return Result.success(data);
}
@Override
public Result<JSONObject> getSubHitState(SubDataVRequest request) {
List<PieItem> pieItems = rpcApplyMapper.getSubHitState(request.getBeginTime(), request.getEndTime(), request.getDepartId());
JSONObject data = new JSONObject().fluentPut("PunishmentSituation", pieItems);
return Result.success(data);
}
@Override
public Result<JSONObject> getSubComfortState(SubDataVRequest request) {
List<PieItem> comfortSituationList = rpcApplyMapper.getSubComfortState(request.getBeginTime(), request.getEndTime(), request.getDepartId());
JSONObject data = new JSONObject().fluentPut("comfortSituationList", comfortSituationList);
return Result.success(data);
}
@Override
public Result<JSONObject> getSubPoliceHurtSituationAndHurtType(SubDataVRequest request) {
List<EchartsVo> policeHurtSituationList = rpcApplyMapper.getSubPoliceHurtSituationAndHurtType(request.getBeginTime(), request.getEndTime(), request.getDepartId()); // 人数情况
JSONObject data = new JSONObject().fluentPut("policeHurtSituationList", policeHurtSituationList);
return Result.success(data);
}
@Override
public Result<JSONObject> getSubOneCaseAriseSituationRate(SubDataVRequest request) {
List<EchartsVo> incidentLinkList = rpcApplyMapper.getSubIncidentLinkList(request.getBeginTime(), request.getEndTime(), request.getDepartId());
List<EchartsVo> incidentPoliceList = rpcApplyMapper.getSubIncidentPoliceList(request.getBeginTime(), request.getEndTime(), request.getDepartId());
List<EchartsVo> incidentOrgList = rpcApplyMapper.getSubIncidentOrgList(request.getBeginTime(), request.getEndTime(), request.getDepartId());
JSONObject data = new JSONObject()
.fluentPut("incidentLinkList", incidentLinkList)
.fluentPut("incidentPoliceTypeList", incidentPoliceList)
.fluentPut("incidentOrgList", incidentOrgList);
return Result.success(data);
}
// endregion
// region 辅助方法
private List<EchartsVo> filterZero(List<EchartsVo> list) {
return list.stream()
.filter(e -> e.getValue() != null && e.getValue() > 0)
.toList();
}
public record BlameResult(
List<NegativeBlame> personalBlames,
List<NegativeBlame> leadBlames
) {
}
public DatavServiceImpl.BlameResult buildBlameResult(List<Negative> negativeListData) {
if (CollUtil.isEmpty(negativeListData)) {
return new DatavServiceImpl.BlameResult(List.of(), List.of());
}
// 1. 筛选有效 negative
List<Negative> validNegatives = negativeListData.stream()
.filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode())
|| CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode()))
.toList();
if (CollUtil.isEmpty(validNegatives)) {
return new DatavServiceImpl.BlameResult(List.of(), List.of());
}
// 2. 查询问责数据
NegativeBlameQueryParam param = new NegativeBlameQueryParam();
param.setNegativeIds(validNegatives.stream()
.map(Negative::getId)
.toList());
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(param);
if (CollUtil.isEmpty(negativeBlames)) {
return new DatavServiceImpl.BlameResult(List.of(), List.of());
}
// 3. 个人问责
List<NegativeBlame> personalBlames = negativeBlames.stream()
.filter(one -> BlameType.personal.name().equals(one.getType()))
.filter(one -> StrUtil.isNotBlank(one.getHandleResultName()))
.filter(one -> !NO_BLAME.equals(one.getHandleResultName()))
.toList();
// 4. 领导问责(去重)
Set<String> seenLead = new HashSet<>();
List<NegativeBlame> leadBlames = negativeBlames.stream()
.filter(one -> StrUtil.isNotBlank(one.getLeadHandleResultName()))
.filter(one -> !NO_BLAME.equals(one.getLeadHandleResultName()))
.filter(one -> seenLead.add(
one.getNegativeId() + "_" + one.getLeadHandleResultName() + "_" + one.getLeadName()
))
.toList();
return new DatavServiceImpl.BlameResult(personalBlames, leadBlames);
}
private LocalDateTime toLocalDateTime(Date date) {
if (date == null) {
return null;
}
return date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
}
private long calculateRate(long numerator, long denominator) {
if (denominator == 0) {
return 0L;
}
return (numerator * 100 + denominator / 2) / denominator;
}
private List<AuditNegativeVo> buildAuditNegativeVoList(List<SupDepart> departs, DataVRequest request) {
List<AuditNegativeVo> result = new ArrayList<>();
for (SupDepart depart : departs) {
List<Negative> negativeListData = negativeMapper.getNegativeListData(
depart.getId(),
request.getBeginTime(),
request.getEndTime(),
List.of(request.getAuditType())
);
long numerator = negativeListData.stream()
.filter(one -> "1".equals(one.getIsRectifyCode()))
.count();
long denominator = negativeListData.size();
AuditNegativeVo vo = new AuditNegativeVo();
vo.setLabel(depart.getShortName());
vo.setNumerator(numerator);
vo.setDenominator(denominator);
vo.setValue(calculateRate(numerator, denominator));
result.add(vo);
}
return result.stream()
// 过滤没有问题数据的
.filter(vo -> vo.getDenominator() > 0)
// 按整改率降序
.sorted(Comparator.comparing(AuditNegativeVo::getValue).reversed())
.toList();
}
private <T> BigDecimal sumAmount(List<T> list, Function<T, BigDecimal> mapper, BigDecimal divisor) {
BigDecimal sum = list.stream()
.map(mapper)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
if (divisor == null || BigDecimal.ONE.compareTo(divisor) == 0) {
return sum;
}
return sum.divide(divisor, 2, RoundingMode.HALF_UP);
}
private <T> BigDecimal sumAmountInWan(List<T> list, Function<T, BigDecimal> mapper) {
return list.stream()
.map(mapper)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add)
.divide(WAN, 2, RoundingMode.HALF_UP);
}
// endregion
} }

Loading…
Cancel
Save