|
|
|
|
@ -3,11 +3,10 @@ package com.biutag.supervision.service.datav;
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
|
import cn.hutool.core.util.NumberUtil; |
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
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.common.UserContextHolder; |
|
|
|
|
import com.biutag.supervision.constants.AppConstants; |
|
|
|
|
import com.biutag.supervision.constants.enums.*; |
|
|
|
|
import com.biutag.supervision.constants.enums.invest.DeleteStatusEnum; |
|
|
|
|
import com.biutag.supervision.constants.enums.invest.ReportProjectNodeEnum; |
|
|
|
|
@ -19,9 +18,9 @@ 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.entity.report.ReportProject; |
|
|
|
|
import com.biutag.supervision.pojo.model.UserAuth; |
|
|
|
|
import com.biutag.supervision.pojo.param.*; |
|
|
|
|
import com.biutag.supervision.pojo.param.dataAudit.DataAuditQueryParam; |
|
|
|
|
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.vo.*; |
|
|
|
|
@ -30,11 +29,11 @@ import com.biutag.supervision.repository.dataCaseVerif.DataCaseVerifResourceServ
|
|
|
|
|
import com.biutag.supervision.repository.dataPetitionComplaint.DataPetitionComplaintResourceService; |
|
|
|
|
import com.biutag.supervision.repository.mail.MailResourceService; |
|
|
|
|
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.supExternalDepart.SupExternalDepartResourceService; |
|
|
|
|
import com.biutag.supervision.repository.supdepart.SupDepartResourceService; |
|
|
|
|
import com.biutag.supervision.service.*; |
|
|
|
|
import com.biutag.supervision.util.CompletableUtils.CompletableFutureUtil; |
|
|
|
|
import jakarta.annotation.Resource; |
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
@ -43,7 +42,6 @@ import java.math.BigDecimal;
|
|
|
|
|
import java.math.RoundingMode; |
|
|
|
|
import java.time.ZoneId; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
import java.util.stream.Stream; |
|
|
|
|
|
|
|
|
|
@ -92,26 +90,12 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
@Resource |
|
|
|
|
private NegativeService negativeService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RpcApplyService rpcApplyService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private SupDepartService supDepartService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RpcApplyMapper rpcApplyMapper; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RpcPacksComfortService rpcPacksComfortService; |
|
|
|
|
@Resource |
|
|
|
|
private RpcComfortPacksService rpcComfortPacksService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RpcComfortPacksMapper rpcComfortPacksMapper; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private RpcApplyPersonService rpcApplyPersonService; |
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private DataPetitionComplaintMapper dataPetitionComplaintMapper; |
|
|
|
|
|
|
|
|
|
@ -135,7 +119,8 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
@Resource |
|
|
|
|
private SuperviseReportService superviseReportService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
private NegativeBlameResourceService negativeBlameResourceService; |
|
|
|
|
|
|
|
|
|
private final String VALID_SIGN = "terminated"; |
|
|
|
|
private final String EX_SOURCE = "局长信箱"; |
|
|
|
|
@ -1053,7 +1038,7 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
List<Negative> fxsjList = negativeMapper.getVideoSuperviseProblemRank(fxsj.getId(), request.getBeginTime(), request.getEndTime()); |
|
|
|
|
// 总数
|
|
|
|
|
long total = fxsjList.size(); |
|
|
|
|
if (total==0){ |
|
|
|
|
if (total == 0) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 市局下发
|
|
|
|
|
@ -1071,7 +1056,7 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
List<Negative> fxsjList = negativeMapper.getVideoSuperviseProblemRank(jsdw.getId(), request.getBeginTime(), request.getEndTime()); |
|
|
|
|
// 总数
|
|
|
|
|
long total = fxsjList.size(); |
|
|
|
|
if (total==0){ |
|
|
|
|
if (total == 0) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 市局下发
|
|
|
|
|
@ -1143,7 +1128,7 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
List<Negative> negativeList = negativeMapper.getChangedRank(jsdw.getId(), request.getBeginTime(), request.getEndTime()); |
|
|
|
|
// 问题数
|
|
|
|
|
int totalPro = negativeList.size(); |
|
|
|
|
if (totalPro==0){ |
|
|
|
|
if (totalPro == 0) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// 办结数
|
|
|
|
|
@ -1230,26 +1215,33 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
superviseReportLambdaQueryWrapper.eq(SuperviseReport::getType, "1"); |
|
|
|
|
List<SuperviseReport> superviseReportList = superviseReportService.list(superviseReportLambdaQueryWrapper); |
|
|
|
|
List<String> negativeIds = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).map(Negative::getId).toList(); |
|
|
|
|
CompletableFuture.allOf( |
|
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
|
long personNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds) |
|
|
|
|
.eq(NegativeBlame::getType, "personal") |
|
|
|
|
.isNotNull(NegativeBlame::getBlameName) |
|
|
|
|
.ne(NegativeBlame::getBlameName, "") |
|
|
|
|
.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(); |
|
|
|
|
|
|
|
|
|
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam(); |
|
|
|
|
negativeBlameQueryParam.setNegativeIds(negativeIds); |
|
|
|
|
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(); |
|
|
|
|
|
|
|
|
|
// 通报问题数
|
|
|
|
|
overView.setProblemNumber(negatives.size()); |
|
|
|
|
@ -1259,6 +1251,9 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
overView.setProcessingNumber((long) processingList.size()); |
|
|
|
|
// 已办结
|
|
|
|
|
overView.setCompletedNumber((long) completedList.size()); |
|
|
|
|
// 问责单位数
|
|
|
|
|
overView.setDepartNumber((long) unitBlames.size()); |
|
|
|
|
overView.setPersonNumber((long) (personalBlames.size() + leadBlames.size())); |
|
|
|
|
return Result.success(overView); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1282,37 +1277,400 @@ public class DatavServiceImpl implements DatavService {
|
|
|
|
|
// superviseReportLambdaQueryWrapper.eq(SuperviseReport::getType, "1");
|
|
|
|
|
// List<SuperviseReport> superviseReportList = superviseReportService.list(superviseReportLambdaQueryWrapper);
|
|
|
|
|
List<String> negativeIds = negatives.stream().filter(one -> CheckStatusEnum.TRUE_SET.contains(one.getCheckStatusCode()) || CheckStatusEnum.PART_TRUE_SET.contains(one.getCheckStatusCode())).map(Negative::getId).toList(); |
|
|
|
|
CompletableFuture.allOf( |
|
|
|
|
CompletableFutureUtil.runSyncObject(() -> { |
|
|
|
|
long personNumber = negativeIds.isEmpty() ? 0 : negativeBlameService.count(new LambdaQueryWrapper<NegativeBlame>().in(NegativeBlame::getNegativeId, negativeIds) |
|
|
|
|
.eq(NegativeBlame::getType, "personal") |
|
|
|
|
.isNotNull(NegativeBlame::getBlameName) |
|
|
|
|
.ne(NegativeBlame::getBlameName, "") |
|
|
|
|
.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(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam(); |
|
|
|
|
negativeBlameQueryParam.setNegativeIds(negativeIds); |
|
|
|
|
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(); |
|
|
|
|
superviseMapIconVo.setDepartId(fxsj.getId()); |
|
|
|
|
superviseMapIconVo.setName(fxsj.getShortName()); |
|
|
|
|
superviseMapIconVo.setTotalPro(negatives.size()); |
|
|
|
|
superviseMapIconVo.setProcessingNumber(processingList.size()); |
|
|
|
|
superviseMapIconVo.setCompletedNumber(completedList.size()); |
|
|
|
|
superviseMapIconVo.setRelationOrg(String.valueOf(unitBlames.size())); |
|
|
|
|
superviseMapIconVo.setPersonNum(String.valueOf(personalBlames.size() + leadBlames.size())); |
|
|
|
|
superviseTempMapVoList.add(superviseMapIconVo); |
|
|
|
|
} |
|
|
|
|
JSONObject data = new JSONObject().fluentPut("superviseTempMapVoList", superviseTempMapVoList); |
|
|
|
|
return Result.success(data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Result<JSONObject> getYellowBetDrug(DataVRequest request) { |
|
|
|
|
List<OrganizeProblemRankVo> countyRankList = new ArrayList<>(); |
|
|
|
|
List<OrganizeProblemRankVo> bureauRankList = new ArrayList<>(); |
|
|
|
|
SupDepartQueryParam supDepartQueryParam = new SupDepartQueryParam(); |
|
|
|
|
supDepartQueryParam.setStatisticsGroupId(DepartGroupEnum.COUNTY_CITY_BUREAUS.getId()); |
|
|
|
|
List<SupDepart> fxsjDw = supDepartResourceService.query(supDepartQueryParam); |
|
|
|
|
SupDepartQueryParam jsdwQueryParam = new SupDepartQueryParam(); |
|
|
|
|
jsdwQueryParam.setStatisticsGroupId(DepartGroupEnum.BUREAU_AFFILIATED.getId()); |
|
|
|
|
List<SupDepart> jsdwDw = supDepartResourceService.query(jsdwQueryParam); |
|
|
|
|
Map<String, Negative> totalNegativeMap = new LinkedHashMap<>(); |
|
|
|
|
for (SupDepart fxsj : fxsjDw) { |
|
|
|
|
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(fxsj.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(fxsj.getShortName()); |
|
|
|
|
organizeProblemRankVo.setValue(String.valueOf(negativeList.size())); |
|
|
|
|
countyRankList.add(organizeProblemRankVo); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (SupDepart jsdw : jsdwDw) { |
|
|
|
|
List<Negative> negativeList = negativeMapper.getYellowBetNegativeList(jsdw.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(jsdw.getShortName()); |
|
|
|
|
organizeProblemRankVo.setValue(String.valueOf(negativeList.size())); |
|
|
|
|
bureauRankList.add(organizeProblemRankVo); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 排序
|
|
|
|
|
countyRankList.sort(Comparator.comparingInt((OrganizeProblemRankVo vo) -> Integer.parseInt(vo.getValue())).reversed()); |
|
|
|
|
bureauRankList.sort(Comparator.comparingInt((OrganizeProblemRankVo vo) -> Integer.parseInt(vo.getValue())).reversed()); |
|
|
|
|
List<Negative> totalNegativeList = new ArrayList<>(totalNegativeMap.values()); |
|
|
|
|
// List<Negative> processingList = totalNegativeList.stream().filter(item -> ProcessingStatusEnum.processing.name().equals(item.getProcessingStatus())).toList();
|
|
|
|
|
// List<Negative> completedList = totalNegativeList.stream().filter(item -> ProcessingStatusEnum.completed.name().equals(item.getProcessingStatus())).toList();
|
|
|
|
|
|
|
|
|
|
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("countyOverview", countyOverview)
|
|
|
|
|
.fluentPut("countyRankList", countyRankList) |
|
|
|
|
// .fluentPut("bureauOverview", bureauOverview)
|
|
|
|
|
.fluentPut("bureauRankList", bureauRankList); |
|
|
|
|
return Result.success(data); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Result<JSONObject> getAllVideoSuperviseCount(DataVRequest request) { |
|
|
|
|
|
|
|
|
|
NegativeQueryParam negativeQueryParam = new NegativeQueryParam(); |
|
|
|
|
negativeQueryParam.setProblemSourcesCode(List.of(SPDC.getValue())); |
|
|
|
|
negativeQueryParam.setCrtTime(List.of(request.getBeginTime(), request.getEndTime())); |
|
|
|
|
List<Negative> negatives = negativeResourceService.query(negativeQueryParam); |
|
|
|
|
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> getVideoSuperviseMap(DataVRequest request) { |
|
|
|
|
|
|
|
|
|
SupDepartQueryParam supDepartQueryParam = new SupDepartQueryParam(); |
|
|
|
|
supDepartQueryParam.setStatisticsGroupId(DepartGroupEnum.COUNTY_CITY_BUREAUS.getId()); |
|
|
|
|
List<SupDepart> fxsjDw = supDepartResourceService.query(supDepartQueryParam); |
|
|
|
|
List<String> proCode = List.of(SPDC.getValue()); |
|
|
|
|
List<VideoSuperviseMapIconVo> videoSuperviseMapIconVoList = new ArrayList<>(); |
|
|
|
|
for (SupDepart fxsj : fxsjDw) { |
|
|
|
|
List<Negative> negatives = negativeMapper.getNegativeListData(fxsj.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(fxsj.getShortName()); |
|
|
|
|
videoSuperviseMapIconVo.setDepartId(fxsj.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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Result<JSONObject> getSubOneVideoSuperviseProblemRank(SubDataVRequest request) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<OrganizeProblemRankVo> policeVideoSuperviseProblemRankList = new ArrayList<>(); |
|
|
|
|
List<OrganizeProblemRankVo> teamVideoSuperviseProblemRankList = new ArrayList<>(); |
|
|
|
|
SupDepartQueryParam supDepartGroupParam = new SupDepartQueryParam(); |
|
|
|
|
supDepartGroupParam.setLevel("2"); |
|
|
|
|
List<SupDepart> supDepartList = supDepartResourceService.query(supDepartGroupParam); |
|
|
|
|
Map<Boolean, List<SupDepart>> partitionedMap = supDepartList.stream() |
|
|
|
|
.collect(Collectors.partitioningBy(one -> |
|
|
|
|
request.getDepartId().equals(one.getPid()) && |
|
|
|
|
DepartGroupEnum.PCS.getId().equals(Integer.valueOf(one.getStatisticsGroupId())) |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
List<SupDepart> pcsList = partitionedMap.get(true); // 派出所
|
|
|
|
|
List<SupDepart> dwList = partitionedMap.get(false); // 大队
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Result<JSONObject> getSubOneMailMapIcon() { |
|
|
|
|
|
|
|
|
|
// ✅ 注意:这里的 name 必须和地图 geojson 区域名一致(一般是“xx街道/园区”)
|
|
|
|
|
|