Browse Source

feat--现场专项二级子屏

master
parent
commit
b8476c1554
  1. 289
      src/main/java/com/biutag/supervision/controller/subdatav/SubOneSupervisionNotifyController.java
  2. 6
      src/main/java/com/biutag/supervision/pojo/request/subdatav/SubDataVRequest.java
  3. 18
      src/main/java/com/biutag/supervision/service/subDatav/SubDatavService.java
  4. 394
      src/main/java/com/biutag/supervision/service/subDatav/SubDatavServiceImpl.java

289
src/main/java/com/biutag/supervision/controller/subdatav/SubOneSupervisionNotifyController.java

@ -1,113 +1,49 @@
package com.biutag.supervision.controller.subdatav; package com.biutag.supervision.controller.subdatav;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
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.QueryWrapper;
import com.biutag.supervision.constants.enums.InspectCaseEnum;
import com.biutag.supervision.constants.enums.ProblemSourcesEnum;
import com.biutag.supervision.constants.enums.ProcessingStatusEnum;
import com.biutag.supervision.mapper.CountyStreetDeptMapper;
import com.biutag.supervision.mapper.NegativeMapper; import com.biutag.supervision.mapper.NegativeMapper;
import com.biutag.supervision.pojo.Result; import com.biutag.supervision.pojo.Result;
import com.biutag.supervision.pojo.entity.*; import com.biutag.supervision.pojo.entity.News;
import com.biutag.supervision.pojo.vo.*; import com.biutag.supervision.pojo.request.subdatav.SubDataVRequest;
import com.biutag.supervision.service.*; import com.biutag.supervision.pojo.vo.EchartsVo;
import com.biutag.supervision.util.CompletableUtils.CompletableFutureUtil; import com.biutag.supervision.service.NewsService;
import com.biutag.supervision.service.SubOneSupervisionNotifyService;
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;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
import static com.biutag.supervision.constants.WorkDynamicConstants.DCGZDT; import static com.biutag.supervision.constants.WorkDynamicConstants.DCGZDT;
import static com.biutag.supervision.constants.enums.ProblemSourcesEnum.*; import static com.biutag.supervision.constants.enums.ProblemSourcesEnum.*;
/** /**
* @Auther: sh * 二级大屏现场专项
* @Date: 2024/12/17 10:58
* @Description: 二级大屏现场督察
*/ */
@Slf4j @Slf4j
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("datav/sub1/supervisonNotify") @RequestMapping("datav/sub1/supervisonNotify")
@Tag(name = "现场督察二级大屏", description = "现场督察二级大屏") @Tag(name = "现场专项二级大屏", description = "现场专项二级大屏")
public class SubOneSupervisionNotifyController { public class SubOneSupervisionNotifyController {
private final SubOneSupervisionNotifyService subOneSupervisionNotifyService; private final SubOneSupervisionNotifyService subOneSupervisionNotifyService;
private final NegativeMapper negativeMapper;
private final NewsService newsService; private final NewsService newsService;
private final NegativeBlameService negativeBlameService; private final SubDatavService subDatavService;
private final CountyStreetDeptMapper countyStreetDeptMapper; private final NegativeMapper negativeMapper;
private final SuperviseReportService superviseReportService;
private final SupDepartService departService;
// region 左边
/**
* 获取日常督察情况
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
* @return
*/
@Operation(summary = "日常督察情况")
@GetMapping("/getSubOneChangedRank")
public Result<JSONObject> getSubOneChangedRank(@RequestParam Integer departId,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime) {
DayTimeSuperviseVo policeRankOverview = negativeMapper.getPoliceRankOverview(departId, beginTime, endTime);
DayTimeSuperviseVo teamRankOverview = negativeMapper.getTeamRankOverview(departId, beginTime, endTime);
List<RankVo> policeChangedRankList = negativeMapper.getPoliceChangedRankList(departId, beginTime, endTime);
List<RankVo> teamChangedRankList = negativeMapper.getTeamChangedRankList(departId, beginTime, endTime);
DayTimeSuperviseVo vo = negativeMapper.selectRankOverview(departId,beginTime,endTime);
if(vo.getProTotal() == null || vo.getProTotal() == 0 || vo.getChanged() == 0){
vo.setCorrectionRate(0.0);
}else{
BigDecimal result = new BigDecimal(vo.getChanged() * 100)
.divide(new BigDecimal(vo.getProTotal()), 1, RoundingMode.HALF_UP);
vo.setCorrectionRate(result.doubleValue());
}
JSONObject data = new JSONObject() @Operation(summary = "现场督察卡片")
.fluentPut("overview",vo) @PostMapping("/getSubOneChangedRank")
.fluentPut("fxsjRankOverview", policeRankOverview) public Result<JSONObject> getSubOneChangedRank(@RequestBody SubDataVRequest request) {
.fluentPut("jsdwRankOverview", teamRankOverview) return subDatavService.getSubOneChangedRank(request);
.fluentPut("fxsjChangedRankList", policeChangedRankList)
.fluentPut("jsdwChangedRankList", teamChangedRankList);
return Result.success(data);
} }
public Long isZero(Long val){ @Operation(summary = "问题涉及方面分布")
return val != null?val:0L;
}
/**
* 问题类型占比
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
* @return
*/
@Operation(summary = "问题类型占比")
@GetMapping("/getSubOneProblemTypeRate") @GetMapping("/getSubOneProblemTypeRate")
public Result<JSONObject> getSubOneProblemTypeRate(@RequestParam Integer departId, public Result<JSONObject> getSubOneProblemTypeRate(@RequestParam Integer departId,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime,
@ -117,144 +53,19 @@ public class SubOneSupervisionNotifyController {
return Result.success(data); return Result.success(data);
} }
// endregion @Operation(summary = "现场专项中心总览数据")
@PostMapping("/getSubOneSupervisionNotifyCount")
// region 中间 public Result<JSONObject> getAllSubOneSupervisionNotifyCount(@RequestBody SubDataVRequest request) {
return subDatavService.getAllSubOneSupervisionNotifyCount(request);
/**
* 大屏中央总览数据
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
* @return
*/
@Operation(summary = "中央总览数据")
@GetMapping("/getSubOneSupervisionNotifyCount")
public Result<JSONObject> getAllSubOneSupervisionNotifyCount(@RequestParam Integer departId,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime) {
endTime = DateUtil.endOfDay(endTime);
//, ProblemSourcesEnum.SPDC.getValue() 去除视频督察
//获取时间范围内 属于对应二级单位的数据
List<Negative> negatives = negativeMapper.selectList(new LambdaQueryWrapper<Negative>().between(Negative::getCrtTime, beginTime, endTime)
.eq(Negative::getSecondInvolveDepartId,departId)
.in(Negative::getProblemSourcesCode, List.of(ProblemSourcesEnum.XCDC.getValue(), ProblemSourcesEnum.LMGZ.getValue(), ProblemSourcesEnum.ZXDC.getValue())));
SupervisionNotifyOverView overView = new SupervisionNotifyOverView();
//属实的
List<String> negativeIds = negatives.stream().filter(item -> InspectCaseEnum.isItTure(item.getCheckStatus())).map(Negative::getId).toList();
overView.setProblemNumber(negatives.size());
//已办结的
overView.setCompletedNumber(negatives.stream().filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).count());
//办理中
overView.setProcessingNumber(negatives.size() - overView.getCompletedNumber());
//问题期数
Long problemQuarter = superviseReportService.count(new LambdaQueryWrapper<SuperviseReport>()
.eq(SuperviseReport::getCrtDepartId,departId)
.between(SuperviseReport::getCrtTime,beginTime,endTime));
overView.setProblemQuarter(problemQuarter);
LambdaQueryWrapper<SuperviseReport> queryWrapper=new LambdaQueryWrapper<>();
List<String> orgIds = departService.getAllNodeIds(String.valueOf(departId));
queryWrapper.in(SuperviseReport::getCrtDepartId, orgIds);
overView.setReportNumber(superviseReportService.count(queryWrapper));
// 办结率
// overView.setCompletedRate(overView.getProblemNumber() == 0 ? 0: NumberUtil.roundHalfEven(NumberUtil.mul(NumberUtil.div(overView.getCompletedNumber(), overView.getProblemNumber()), 100), 0).doubleValue());
CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> {
//问责人数
long personNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "personal")
.ne(NegativeBlame::getHandleResultName, "不予追责")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
overView.setPersonNumber(personNumber);
}),
CompletableFutureUtil.runSyncObject(() -> {
//问责单位
long departNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "department")
.ne(NegativeBlame::getHandleResultName, "不予追责")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
overView.setDepartNumber(departNumber);
})
).join();
JSONObject data = new JSONObject().fluentPut("overview", overView);
return Result.success(data);
} }
/**
* 地图小卡片
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
*/
@Operation(summary = "地图小卡片")
@GetMapping("/getSubOneSupervisionMap")
public Result<JSONObject> getSubOneSupervisionMap(@RequestParam Integer departId,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime) {
List<CountyStreetDept> streetDepts = countyStreetDeptMapper.selectList(new LambdaQueryWrapper<CountyStreetDept>().eq(CountyStreetDept::getDeptPid,departId));
List<SuperviseMapIconVo> overViews = new ArrayList<>();
if(ArrayUtil.isNotEmpty(streetDepts)){
streetDepts.forEach(s->{
SuperviseMapIconVo superviseMapIconVo =new SuperviseMapIconVo();
superviseMapIconVo.setName(s.getName());
superviseMapIconVo.setDepartId(s.getDeptId());
List<Negative> negatives = negativeMapper.selectList(new LambdaQueryWrapper<Negative>().between(Negative::getCrtTime, beginTime, endTime) @Operation(summary = "现场专项二级地图")
.eq(Negative::getThreeInvolveDepartId,s.getDeptId()) @PostMapping("/getSubOneSupervisionNotifyMap")
.in(Negative::getProblemSourcesCode, List.of(ProblemSourcesEnum.XCDC.getValue(), ProblemSourcesEnum.LMGZ.getValue(), ProblemSourcesEnum.ZXDC.getValue()))); public Result<JSONObject> getSubOneSupervisionNotifyMap(@RequestBody SubDataVRequest request) {
if(!negatives.isEmpty()){ return subDatavService.getSubOneSupervisionNotifyMap(request);
List<String> negativeIds = negatives.stream().filter(item -> InspectCaseEnum.isItTure(item.getCheckStatus())).map(Negative::getId).toList();
// 办结率
// superviseMapIconVo.setCompletedRate(superviseMapIconVo.getProblemNumber() == 0 ? 0: NumberUtil.roundHalfEven(NumberUtil.mul(NumberUtil.div(superviseMapIconVo.getCompletedNumber(), superviseMapIconVo.getProblemNumber()), 100), 0).doubleValue());
//问责人数 、问责单位数
CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(()->{
superviseMapIconVo.setTotalPro(negatives.size());
//已办理
superviseMapIconVo.setCompletedNumber((int) negatives.stream().filter(item ->ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).count());
//办理中
superviseMapIconVo.setProcessingNumber(negatives.size() - superviseMapIconVo.getCompletedNumber());
}),
CompletableFutureUtil.runSyncObject(() -> {
//问责人数
long personNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "personal")
.ne(NegativeBlame::getHandleResultName, "不予追责")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
superviseMapIconVo.setPersonNum(String.valueOf(personNumber));
}),
CompletableFutureUtil.runSyncObject(() -> {
//问责单位
long departNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "department")
.ne(NegativeBlame::getHandleResultName, "不予追责")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
superviseMapIconVo.setRelationOrg(String.valueOf(departNumber));
})
).join();
overViews.add(superviseMapIconVo);
}
});
}
JSONObject data = new JSONObject().fluentPut("superviseTempMapVoList", overViews);
return Result.success(data);
} }
/**
* 获取现场督察问题趋势
*
* @param departId 部门id (分县市局ID)
* @param year 年份
* @return List<EchartsVo>
*/
@Operation(summary = "问题趋势") @Operation(summary = "问题趋势")
@GetMapping("/getSubOneSupervisionTrend") @GetMapping("/getSubOneSupervisionTrend")
public Result<JSONObject> getSubOneSupervisionTrend(@RequestParam Integer departId, public Result<JSONObject> getSubOneSupervisionTrend(@RequestParam Integer departId,
@ -264,51 +75,13 @@ public class SubOneSupervisionNotifyController {
return Result.success(data); return Result.success(data);
} }
// endregion
// region 右边
/**
* 黄赌毒数据
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
* @return JSONObject
*/
@Operation(summary = "黄赌毒数据") @Operation(summary = "黄赌毒数据")
@GetMapping("/getSubOneYellowBetDrug") @PostMapping("/getSubOneYellowBetDrug")
public Result<JSONObject> getYellowBetDrug(@RequestParam Integer departId, public Result<JSONObject> getSubOneYellowBetDrug(@RequestBody SubDataVRequest request) {
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, return subDatavService.getSubOneYellowBetDrug(request);
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date endTime,@RequestParam Integer type) {
// 黄赌毒总览
DayTimeSuperviseVo fxsjYellowBetOverview = negativeMapper.getSubOnePoliceYellowBetOverview(beginTime, endTime, departId, type);
DayTimeSuperviseVo jsdwYellowBetOverview = negativeMapper.getSubOneTeamYellowBetOverview(beginTime, endTime, departId, type);
// 黄毒赌列表
List<OrganizeProblemRankVo> fxsjYellowBetRankList = negativeMapper.getSubOnePoliceYellowBetRankList(beginTime, endTime, departId, type);
List<OrganizeProblemRankVo> jsdwYellowBetRankList = negativeMapper.getSubOneTeamYellowBetRankList(beginTime, endTime, departId, type);
DayTimeSuperviseVo overview = new DayTimeSuperviseVo().addVO(fxsjYellowBetOverview,jsdwYellowBetOverview);
JSONObject data = new JSONObject()
.fluentPut("overview",overview)
.fluentPut("fxsjYellowBetOverview", fxsjYellowBetOverview)
.fluentPut("jsdwYellowBetOverview", jsdwYellowBetOverview)
.fluentPut("fxsjYellowBetRankList", fxsjYellowBetRankList)
.fluentPut("jsdwYellowBetRankList", jsdwYellowBetRankList);
return Result.success(data);
} }
@Operation(summary = "现场专项工作动态")
/**
* 督察工作动态
*
* @param departId 部门id (分县市局ID)
* @param beginTime 开始时间
* @param endTime 结束时间
* @return JSONObject
*/
@Operation(summary = "督察工作动态")
@GetMapping("/getSubOneWorkDynamics") @GetMapping("/getSubOneWorkDynamics")
public Result<List<News>> getSubOneWorkDynamics(@RequestParam Integer departId, public Result<List<News>> getSubOneWorkDynamics(@RequestParam Integer departId,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime, @RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginTime,
@ -316,10 +89,4 @@ public class SubOneSupervisionNotifyController {
List<News> newsList = newsService.getWorkDynamics(beginTime, endTime, DCGZDT, departId.toString()); List<News> newsList = newsService.getWorkDynamics(beginTime, endTime, DCGZDT, departId.toString());
return Result.success(newsList); return Result.success(newsList);
} }
// endregion
} }

6
src/main/java/com/biutag/supervision/pojo/request/subdatav/SubDataVRequest.java

@ -31,6 +31,12 @@ public class SubDataVRequest implements ParamChecked {
@Schema(description = "部门Id") @Schema(description = "部门Id")
private String departId; private String departId;
@Schema(description = "专项督察类型")
private String specialSupervision;
@Schema(description = "审计类型")
private String auditType;
@Override @Override
public void check() { public void check() {
if (Objects.isNull(beginTime) || Objects.isNull(endTime)){ if (Objects.isNull(beginTime) || Objects.isNull(endTime)){

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

@ -50,6 +50,7 @@ public interface SubDatavService {
*/ */
Result<JSONObject> getSubOneVideoSuperviseMap(SubDataVRequest request); Result<JSONObject> getSubOneVideoSuperviseMap(SubDataVRequest request);
/** /**
* 维权抚慰 二级大屏 维权案件情况 * 维权抚慰 二级大屏 维权案件情况
* @param request * @param request
@ -116,4 +117,21 @@ public interface SubDatavService {
// 案件来源占比 & 问责处理情况 // 案件来源占比 & 问责处理情况
Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(SubDataVRequest request); Result<JSONObject> getSubOneCaseSourceRateAndDealSituation(SubDataVRequest request);
/**
* 现场专项二级现场督察卡片
* @param request
* @return
*/
Result<JSONObject> getSubOneChangedRank(SubDataVRequest request);
// 现场专项地图
Result<JSONObject> getSubOneSupervisionNotifyMap(SubDataVRequest request);
// 现场专项中心总览数据
Result<JSONObject> getAllSubOneSupervisionNotifyCount(SubDataVRequest request);
// 黄赌毒数据
Result<JSONObject> getSubOneYellowBetDrug(SubDataVRequest request);
} }

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

@ -73,23 +73,9 @@ public class SubDatavServiceImpl implements SubDatavService {
@Resource @Resource
private SupExternalDepartResourceService supExternalDepartResourceService; private SupExternalDepartResourceService supExternalDepartResourceService;
@Resource
private DataCaseVerifResourceService dataCaseVerifResourceService;
@Resource
private SupPoliceService supPoliceService;
@Resource
private DataAuditResourceService dataAuditResourceService;
@Resource
private NegativeService negativeService;
@Resource @Resource
private RpcApplyMapper rpcApplyMapper; private RpcApplyMapper rpcApplyMapper;
@Resource
private RpcComfortPacksMapper rpcComfortPacksMapper;
@Resource @Resource
private DataPetitionComplaintMapper dataPetitionComplaintMapper; private DataPetitionComplaintMapper dataPetitionComplaintMapper;
@ -114,8 +100,6 @@ public class SubDatavServiceImpl implements SubDatavService {
@Resource @Resource
private NegativeMapper negativeMapper; private NegativeMapper negativeMapper;
@Resource
private SuperviseReportService superviseReportService;
@Resource @Resource
private NegativeBlameResourceService negativeBlameResourceService; private NegativeBlameResourceService negativeBlameResourceService;
@ -429,6 +413,384 @@ public class SubDatavServiceImpl implements SubDatavService {
} }
// endregion // endregion
// region 现场专项二级
// 现场督察卡片
public Result<JSONObject> getSubOneChangedRank(SubDataVRequest request) {
List<SupDepart> level3ByPidSupDepartList = supDepartResourceService.getLevel3ByPidSupDepartList(request.getDepartId());
List<SupDepart> policeDeparts = level3ByPidSupDepartList.stream()
.filter(one -> StrUtil.isNotBlank(one.getStatisticsGroupId()))
.filter(one -> DepartGroupEnum.PCS.getId().equals(Integer.valueOf(one.getStatisticsGroupId())))
.toList();
List<SupDepart> teamDeparts = level3ByPidSupDepartList.stream()
.filter(one -> {
String groupId = one.getStatisticsGroupId();
return !StrUtil.isNotBlank(groupId) || !DepartGroupEnum.PCS.getId().equals(Integer.valueOf(groupId));
})
.toList();
List<RankVo> fxsjChangedRankList = new ArrayList<>();
List<RankVo> jsdwChangedRankList = new ArrayList<>();
List<RankVo> allRankList = new ArrayList<>();
for (SupDepart pcs : policeDeparts) {
List<Negative> negativeList = negativeMapper.getChangedRank(pcs.getId(), request.getBeginTime(), request.getEndTime());
int totalPro = negativeList.size();
if (totalPro == 0) {
continue;
}
long completed = negativeList.stream()
.filter(Objects::nonNull)
.filter(one -> ProcessingStatusEnum.completed.name().equals(one.getProcessingStatus()))
.count();
long sjxf = negativeList.stream().filter(Objects::nonNull).filter(one -> Integer.valueOf(0).equals(one.getCrtDepartLevel())).count();
long xjxf = negativeList.stream().filter(Objects::nonNull).filter(one -> Integer.valueOf(2).equals(one.getCrtDepartLevel())).count();
String rate = BigDecimal.valueOf(completed)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(totalPro), 1, RoundingMode.HALF_UP)
.toString();
RankVo rankVo = new RankVo();
rankVo.setLabel(pcs.getShortName());
rankVo.setDepartId(pcs.getId());
rankVo.setCityNumber(String.valueOf(sjxf));
rankVo.setCountyNumber(String.valueOf(xjxf));
rankVo.setNumerator(String.valueOf(completed));
rankVo.setDenominator(String.valueOf(totalPro));
rankVo.setValue(rate);
rankVo.setRate(rate);
fxsjChangedRankList.add(rankVo);
allRankList.add(rankVo);
}
for (SupDepart dw : teamDeparts) {
List<Negative> negativeList = negativeMapper.getChangedRank(dw.getId(), request.getBeginTime(), request.getEndTime());
int totalPro = negativeList.size();
if (totalPro == 0) {
continue;
}
long completed = negativeList.stream()
.filter(Objects::nonNull)
.filter(one -> ProcessingStatusEnum.completed.name().equals(one.getProcessingStatus()))
.count();
long sjxf = negativeList.stream().filter(Objects::nonNull).filter(one -> Integer.valueOf(0).equals(one.getCrtDepartLevel())).count();
long xjxf = negativeList.stream().filter(Objects::nonNull).filter(one -> Integer.valueOf(2).equals(one.getCrtDepartLevel())).count();
String rate = BigDecimal.valueOf(completed)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(totalPro), 1, RoundingMode.HALF_UP)
.toString();
RankVo rankVo = new RankVo();
rankVo.setLabel(dw.getShortName());
rankVo.setDepartId(dw.getId());
rankVo.setCityNumber(String.valueOf(sjxf));
rankVo.setCountyNumber(String.valueOf(xjxf));
rankVo.setNumerator(String.valueOf(completed));
rankVo.setDenominator(String.valueOf(totalPro));
rankVo.setValue(rate);
rankVo.setRate(rate);
jsdwChangedRankList.add(rankVo);
allRankList.add(rankVo);
}
fxsjChangedRankList.sort(Comparator.comparingLong((RankVo vo) -> Long.parseLong(vo.getDenominator())).reversed());
jsdwChangedRankList.sort(Comparator.comparingLong((RankVo vo) -> Long.parseLong(vo.getDenominator())).reversed());
long policeTotal = fxsjChangedRankList.stream().mapToLong(vo -> Long.parseLong(vo.getDenominator())).sum();
long policeCompleted = fxsjChangedRankList.stream().mapToLong(vo -> Long.parseLong(vo.getNumerator())).sum();
long policeProcessing = policeTotal - policeCompleted;
double policeRate = policeTotal == 0 ? 0.0 : BigDecimal.valueOf(policeCompleted)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(policeTotal), 1, RoundingMode.HALF_UP)
.doubleValue();
long teamTotal = jsdwChangedRankList.stream().mapToLong(vo -> Long.parseLong(vo.getDenominator())).sum();
long teamCompleted = jsdwChangedRankList.stream().mapToLong(vo -> Long.parseLong(vo.getNumerator())).sum();
long teamProcessing = teamTotal - teamCompleted;
double teamRate = teamTotal == 0 ? 0.0 : BigDecimal.valueOf(teamCompleted)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(teamTotal), 1, RoundingMode.HALF_UP)
.doubleValue();
long total = policeTotal + teamTotal;
long completed = policeCompleted + teamCompleted;
long processing = policeProcessing + teamProcessing;
double rate = total == 0 ? 0.0 : BigDecimal.valueOf(completed)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(total), 1, RoundingMode.HALF_UP)
.doubleValue();
DayTimeSuperviseVo fxsjRankOverview = new DayTimeSuperviseVo();
fxsjRankOverview.setProTotal((int) policeTotal);
fxsjRankOverview.setProcessingNumber(policeProcessing);
fxsjRankOverview.setCompletedNumber(policeCompleted);
fxsjRankOverview.setCompletedRate(policeRate);
DayTimeSuperviseVo jsdwRankOverview = new DayTimeSuperviseVo();
jsdwRankOverview.setProTotal((int) teamTotal);
jsdwRankOverview.setProcessingNumber(teamProcessing);
jsdwRankOverview.setCompletedNumber(teamCompleted);
jsdwRankOverview.setCompletedRate(teamRate);
DayTimeSuperviseVo overview = new DayTimeSuperviseVo();
overview.setProTotal((int) total);
overview.setProcessingNumber(processing);
overview.setCompletedNumber(completed);
overview.setCompletedRate(rate);
JSONObject data = new JSONObject()
.fluentPut("overview", overview)
.fluentPut("fxsjRankOverview", fxsjRankOverview)
.fluentPut("jsdwRankOverview", jsdwRankOverview)
.fluentPut("fxsjChangedRankList", fxsjChangedRankList)
.fluentPut("jsdwChangedRankList", jsdwChangedRankList);
return Result.success(data);
}
// 现场专项地图
@Override
public Result<JSONObject> getSubOneSupervisionNotifyMap(SubDataVRequest request) {
List<SuperviseMapIconVo> superviseTempMapVoList = new ArrayList<>();
List<SupDepart> policeDeparts = supDepartMapper.selectPoliceDeparts(Integer.valueOf(request.getDepartId()));
List<String> proCode = List.of(XCDC.getValue(), LMGZ.getValue(), ZXDC.getValue());
for (SupDepart supDepart : policeDeparts) {
List<Negative> negatives = negativeMapper.getNegativeListData(supDepart.getId(), request.getBeginTime(), request.getEndTime(), proCode);
if (negatives.isEmpty()) {
continue;
}
List<Negative> completedList = negatives.stream().filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).toList();
List<Negative> processingList = negatives.stream().filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus())).toList();
List<String> negativeIds = negatives.stream()
.filter(item -> InspectCaseEnum.isItTure(item.getCheckStatus()))
.map(Negative::getId)
.toList();
long personNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>()
.in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "personal")
.ne(NegativeBlame::getHandleResultName, "涓嶄簣杩借矗")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
long departNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>()
.in(NegativeBlame::getNegativeId, negativeIds)
.eq(NegativeBlame::getType, "department")
.ne(NegativeBlame::getHandleResultName, "涓嶄簣杩借矗")
.isNotNull(NegativeBlame::getHandleResultName)
.ne(NegativeBlame::getHandleResultName, ""));
SuperviseMapIconVo superviseMapIconVo = new SuperviseMapIconVo();
superviseMapIconVo.setName(supDepart.getShortName());
superviseMapIconVo.setDepartId(supDepart.getId());
superviseMapIconVo.setTotalPro(negatives.size());
superviseMapIconVo.setCompletedNumber(completedList.size());
superviseMapIconVo.setProcessingNumber(processingList.size());
superviseMapIconVo.setPersonNum(String.valueOf(personNumber));
superviseMapIconVo.setRelationOrg(String.valueOf(departNumber));
superviseTempMapVoList.add(superviseMapIconVo);
}
JSONObject data = new JSONObject().fluentPut("superviseTempMapVoList", superviseTempMapVoList);
return Result.success(data);
}
@Override
public Result<JSONObject> getAllSubOneSupervisionNotifyCount(SubDataVRequest request) {
SupervisionNotifyOverView overView = new SupervisionNotifyOverView();
List<SupDepart> policeDeparts = supDepartMapper.selectPoliceDeparts(Integer.valueOf(request.getDepartId()));
List<String> proCode = List.of(XCDC.getValue(), LMGZ.getValue(), ZXDC.getValue());
long problemNumber = 0L;
long processingNumber = 0L;
long completedNumber = 0L;
long reportNumber = 0L;
long departNumber = 0L;
long personNumber = 0L;
for (SupDepart supDepart : policeDeparts) {
List<Negative> negatives = negativeMapper.getNegativeListData(supDepart.getId(), request.getBeginTime(), request.getEndTime(), proCode);
if (CollectionUtil.isEmpty(negatives)) {
continue;
}
List<Negative> completedList = negatives.stream()
.filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus()))
.toList();
List<Negative> processingList = negatives.stream()
.filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus()))
.toList();
List<String> negativeIds = negatives.stream()
.filter(item -> CheckStatusEnum.TRUE_SET.contains(item.getCheckStatusCode())
|| CheckStatusEnum.PART_TRUE_SET.contains(item.getCheckStatusCode()))
.map(Negative::getId)
.toList();
List<NegativeBlame> negativeBlames = Collections.emptyList();
if (!negativeIds.isEmpty()) {
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam();
negativeBlameQueryParam.setNegativeIds(negativeIds);
negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam);
}
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();
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();
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();
problemNumber += negatives.size();
processingNumber += processingList.size();
completedNumber += completedList.size();
reportNumber += 0L;
departNumber += unitBlames.size();
personNumber += personalBlames.size() + leadBlames.size();
}
overView.setProblemNumber(Math.toIntExact(problemNumber));
overView.setProcessingNumber(processingNumber);
overView.setCompletedNumber(completedNumber);
overView.setReportNumber(reportNumber);
overView.setDepartNumber(departNumber);
overView.setPersonNumber(personNumber);
return Result.success(new JSONObject().fluentPut("overview", overView));
}
@Override
public Result<JSONObject> getSubOneYellowBetDrug(SubDataVRequest request) {
List<OrganizeProblemRankVo> fxsjYellowBetRankList = new ArrayList<>();
List<OrganizeProblemRankVo> jsdwYellowBetRankList = new ArrayList<>();
List<SupDepart> level3ByPidSupDepartList = supDepartResourceService.getLevel3ByPidSupDepartList(request.getDepartId());
List<SupDepart> policeDeparts = level3ByPidSupDepartList.stream()
.filter(one -> StrUtil.isNotBlank(one.getStatisticsGroupId()))
.filter(one -> DepartGroupEnum.PCS.getId().equals(Integer.valueOf(one.getStatisticsGroupId())))
.toList();
List<SupDepart> teamDeparts = level3ByPidSupDepartList.stream()
.filter(one -> {
String groupId = one.getStatisticsGroupId();
return !StrUtil.isNotBlank(groupId) || !DepartGroupEnum.PCS.getId().equals(Integer.valueOf(groupId));
})
.toList();
Map<String, Negative> totalNegativeMap = new LinkedHashMap<>();
for (SupDepart pcs : policeDeparts) {
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(pcs.getId(), request.getBeginTime(), request.getEndTime(), request.getSpecialSupervision());
if (CollectionUtil.isEmpty(negativeList)) {
continue;
}
for (Negative negative : negativeList) {
totalNegativeMap.put(negative.getId(), negative);
}
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(pcs.getShortName());
organizeProblemRankVo.setValue(String.valueOf(negativeList.size()));
fxsjYellowBetRankList.add(organizeProblemRankVo);
}
for (SupDepart dw : teamDeparts) {
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(dw.getId(), request.getBeginTime(), request.getEndTime(), request.getSpecialSupervision());
if (CollectionUtil.isEmpty(negativeList)) {
continue;
}
for (Negative negative : negativeList) {
totalNegativeMap.put(negative.getId(), negative);
}
OrganizeProblemRankVo organizeProblemRankVo = new OrganizeProblemRankVo();
organizeProblemRankVo.setLabel(dw.getShortName());
organizeProblemRankVo.setValue(String.valueOf(negativeList.size()));
jsdwYellowBetRankList.add(organizeProblemRankVo);
}
fxsjYellowBetRankList.sort(Comparator.comparingInt((OrganizeProblemRankVo vo) -> Integer.parseInt(vo.getValue())).reversed());
jsdwYellowBetRankList.sort(Comparator.comparingInt((OrganizeProblemRankVo vo) -> Integer.parseInt(vo.getValue())).reversed());
List<Negative> totalNegativeList = new ArrayList<>(totalNegativeMap.values());
long policeTotal = fxsjYellowBetRankList.stream().mapToLong(vo -> Long.parseLong(vo.getValue())).sum();
long policeCompleted = 0L;
long policeProcessing = 0L;
long teamTotal = jsdwYellowBetRankList.stream().mapToLong(vo -> Long.parseLong(vo.getValue())).sum();
long teamCompleted = 0L;
long teamProcessing = 0L;
for (SupDepart supDepart : policeDeparts) {
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(supDepart.getId(), request.getBeginTime(), request.getEndTime(), request.getSpecialSupervision());
policeCompleted += negativeList.stream()
.filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus()))
.count();
policeProcessing += negativeList.stream()
.filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus()))
.count();
}
for (SupDepart supDepart : teamDeparts) {
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(supDepart.getId(), request.getBeginTime(), request.getEndTime(), request.getSpecialSupervision());
teamCompleted += negativeList.stream()
.filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus()))
.count();
teamProcessing += negativeList.stream()
.filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus()))
.count();
}
DayTimeSuperviseVo fxsjYellowBetOverview = new DayTimeSuperviseVo();
fxsjYellowBetOverview.setProTotal((int) policeTotal);
fxsjYellowBetOverview.setProcessingNumber(policeProcessing);
fxsjYellowBetOverview.setCompletedNumber(policeCompleted);
fxsjYellowBetOverview.setCompletedRate(policeTotal == 0
? 0D
: BigDecimal.valueOf(policeCompleted).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(policeTotal), 2, RoundingMode.HALF_UP).doubleValue());
DayTimeSuperviseVo jsdwYellowBetOverview = new DayTimeSuperviseVo();
jsdwYellowBetOverview.setProTotal((int) teamTotal);
jsdwYellowBetOverview.setProcessingNumber(teamProcessing);
jsdwYellowBetOverview.setCompletedNumber(teamCompleted);
jsdwYellowBetOverview.setCompletedRate(teamTotal == 0
? 0D
: BigDecimal.valueOf(teamCompleted).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(teamTotal), 2, RoundingMode.HALF_UP).doubleValue());
long processingCount = totalNegativeList.stream()
.filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus()))
.count();
long completedCount = totalNegativeList.stream()
.filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus()))
.count();
DayTimeSuperviseVo overview = new DayTimeSuperviseVo();
overview.setProTotal(totalNegativeList.size());
overview.setProcessingNumber(processingCount);
overview.setCompletedNumber(completedCount);
double completedRate = totalNegativeList.isEmpty()
? 0D
: BigDecimal.valueOf(completedCount)
.multiply(BigDecimal.valueOf(100))
.divide(BigDecimal.valueOf(totalNegativeList.size()), 2, RoundingMode.HALF_UP)
.doubleValue();
overview.setCompletedRate(completedRate);
JSONObject data = new JSONObject()
.fluentPut("overview",overview)
.fluentPut("fxsjYellowBetOverview", fxsjYellowBetOverview)
.fluentPut("jsdwYellowBetOverview", jsdwYellowBetOverview)
.fluentPut("fxsjYellowBetRankList", fxsjYellowBetRankList)
.fluentPut("jsdwYellowBetRankList", jsdwYellowBetRankList);
return Result.success(data);
}
// endregion
// region 案件核查二级 // region 案件核查二级
// 排名 // 排名
@Override @Override

Loading…
Cancel
Save