|
|
|
@ -4,13 +4,13 @@ import cn.hutool.core.util.StrUtil; |
|
|
|
import com.biutag.supervision.constants.enums.CheckStatusEnum; |
|
|
|
import com.biutag.supervision.constants.enums.CheckStatusEnum; |
|
|
|
import com.biutag.supervision.pojo.dto.report.OverviewSection; |
|
|
|
import com.biutag.supervision.pojo.dto.report.OverviewSection; |
|
|
|
import com.biutag.supervision.pojo.dto.report.ReportViewModel; |
|
|
|
import com.biutag.supervision.pojo.dto.report.ReportViewModel; |
|
|
|
import com.biutag.supervision.pojo.entity.Negative; |
|
|
|
|
|
|
|
import com.biutag.supervision.pojo.entity.NegativeBlame; |
|
|
|
import com.biutag.supervision.pojo.entity.NegativeBlame; |
|
|
|
import com.biutag.supervision.pojo.param.NegativeQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.NegativeQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.negativeBlame.NegativeBlameQueryParam; |
|
|
|
import com.biutag.supervision.pojo.param.negativeBlame.NegativeBlameQueryParam; |
|
|
|
import com.biutag.supervision.pojo.request.negative.ReportGenerationRequest; |
|
|
|
import com.biutag.supervision.pojo.vo.NegativeQueryVo; |
|
|
|
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.negativeBlame.NegativeBlameResourceService; |
|
|
|
|
|
|
|
import com.biutag.supervision.service.NegativeQueryService; |
|
|
|
import com.biutag.supervision.util.DateCompareRangeUtil; |
|
|
|
import com.biutag.supervision.util.DateCompareRangeUtil; |
|
|
|
import com.biutag.supervision.util.ReportTrendUtil; |
|
|
|
import com.biutag.supervision.util.ReportTrendUtil; |
|
|
|
import com.biutag.supervision.util.TimeUtil; |
|
|
|
import com.biutag.supervision.util.TimeUtil; |
|
|
|
@ -32,10 +32,13 @@ public class ReportDataServiceImpl implements ReportDataService { |
|
|
|
@Resource |
|
|
|
@Resource |
|
|
|
private NegativeBlameResourceService negativeBlameResourceService; |
|
|
|
private NegativeBlameResourceService negativeBlameResourceService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource |
|
|
|
|
|
|
|
private NegativeQueryService negativeQueryService; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public ReportViewModel buildViewModel(ReportGenerationRequest request) { |
|
|
|
public ReportViewModel buildViewModel(NegativeQueryParam request) { |
|
|
|
String periodStart = TimeUtil.formatDate(request.getBeginTime()); |
|
|
|
String periodStart = TimeUtil.formatDate(request.getCrtTime().get(0)); |
|
|
|
String periodEnd = TimeUtil.formatDate(request.getEndTime()); |
|
|
|
String periodEnd = TimeUtil.formatDate(request.getCrtTime().get(0)); |
|
|
|
ReportViewModel vm = new ReportViewModel(); |
|
|
|
ReportViewModel vm = new ReportViewModel(); |
|
|
|
vm.setPeriodStart(periodStart); |
|
|
|
vm.setPeriodStart(periodStart); |
|
|
|
vm.setPeriodEnd(periodEnd); |
|
|
|
vm.setPeriodEnd(periodEnd); |
|
|
|
@ -52,37 +55,32 @@ public class ReportDataServiceImpl implements ReportDataService { |
|
|
|
* @param periodEnd |
|
|
|
* @param periodEnd |
|
|
|
* @return |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
private OverviewSection buildOverviewSection(ReportGenerationRequest request, String periodStart, String periodEnd) { |
|
|
|
private OverviewSection buildOverviewSection(NegativeQueryParam request, String periodStart, String periodEnd) { |
|
|
|
|
|
|
|
|
|
|
|
DateCompareRangeUtil.CompareDateRange compareDateRange = DateCompareRangeUtil.buildCompareDateRange(request.getBeginTime(), request.getEndTime()); |
|
|
|
DateCompareRangeUtil.CompareDateRange compareDateRange = DateCompareRangeUtil.buildCompareDateRange(request.getCrtTime().get(0), request.getCrtTime().get(1)); |
|
|
|
// 总体数据
|
|
|
|
// 总体数据
|
|
|
|
NegativeQueryParam ztNegativeQueryParam = new NegativeQueryParam(); |
|
|
|
List<NegativeQueryVo> ztNegativeList = negativeQueryService.page(request).getRecords(); |
|
|
|
ztNegativeQueryParam.setCrtTime(compareDateRange.current()); |
|
|
|
|
|
|
|
List<Negative> ztNegativeList = negativeResourceService.query(ztNegativeQueryParam); |
|
|
|
|
|
|
|
// 环比数据
|
|
|
|
// 环比数据
|
|
|
|
NegativeQueryParam hbQueryParam = new NegativeQueryParam(); |
|
|
|
request.setCrtTime(compareDateRange.mom()); |
|
|
|
hbQueryParam.setCrtTime(compareDateRange.mom()); |
|
|
|
List<NegativeQueryVo> hbNegativList = negativeQueryService.page(request).getRecords(); |
|
|
|
List<Negative> hbNegativList = negativeResourceService.query(hbQueryParam); |
|
|
|
|
|
|
|
// 同比数据
|
|
|
|
// 同比数据
|
|
|
|
NegativeQueryParam tbQueryParam = new NegativeQueryParam(); |
|
|
|
request.setCrtTime(compareDateRange.yoy()); |
|
|
|
tbQueryParam.setCrtTime(compareDateRange.yoy()); |
|
|
|
List<NegativeQueryVo> tbNegativList = negativeQueryService.page(request).getRecords(); |
|
|
|
List<Negative> tbNegativList = negativeResourceService.query(tbQueryParam); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 市局下发数据
|
|
|
|
// 市局下发数据
|
|
|
|
List<Negative> sjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(0, one.getCrtDepartLevel())).toList(); |
|
|
|
List<NegativeQueryVo> sjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(0, one.getCrtDepartLevel())).toList(); |
|
|
|
// 分县市局下发数据
|
|
|
|
// 分县市局下发数据
|
|
|
|
List<Negative> fxsjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(2, one.getCrtDepartLevel())).toList(); |
|
|
|
List<NegativeQueryVo> fxsjxfNegativeList = ztNegativeList.stream().filter(one -> Objects.equals(2, one.getCrtDepartLevel())).toList(); |
|
|
|
// 办结数据
|
|
|
|
// 办结数据
|
|
|
|
List<Negative> bjNegativeList = ztNegativeList.stream().filter(one -> !Objects.isNull(one.getCompleteDate())).toList(); |
|
|
|
List<NegativeQueryVo> bjNegativeList = ztNegativeList.stream().filter(one -> !Objects.isNull(one.getCompleteDate())).toList(); |
|
|
|
// 办结中属实数据
|
|
|
|
// 办结中属实数据
|
|
|
|
List<Negative> bjssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.TRUE_LIST.contains(one.getCheckStatusCode())).toList(); |
|
|
|
List<NegativeQueryVo> bjssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.TRUE_LIST.contains(one.getCheckStatus())).toList(); |
|
|
|
// 办结中基本属实数据
|
|
|
|
// 办结中基本属实数据
|
|
|
|
List<Negative> bjjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.PART_TRUE_LIST.contains(one.getCheckStatusCode())).toList(); |
|
|
|
List<NegativeQueryVo> bjjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.PART_TRUE_LIST.contains(one.getCheckStatus())).toList(); |
|
|
|
// 办结中不属实数据
|
|
|
|
// 办结中不属实数据
|
|
|
|
List<Negative> bjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.FALSE_LIST.contains(one.getCheckStatusCode())).toList(); |
|
|
|
List<NegativeQueryVo> bjbssNegativeList = bjNegativeList.stream().filter(one -> CheckStatusEnum.FALSE_LIST.contains(one.getCheckStatus())).toList(); |
|
|
|
// 属实 基本属实中的问责数据
|
|
|
|
// 属实 基本属实中的问责数据
|
|
|
|
List<String> ssNegativeIds = Stream.concat(bjssNegativeList.stream(), bjjbssNegativeList.stream()) |
|
|
|
List<String> ssNegativeIds = Stream.concat(bjssNegativeList.stream(), bjjbssNegativeList.stream()) |
|
|
|
.map(Negative::getId).filter(StrUtil::isNotBlank).distinct().toList(); |
|
|
|
.map(NegativeQueryVo::getId).filter(StrUtil::isNotBlank).distinct().toList(); |
|
|
|
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam(); |
|
|
|
NegativeBlameQueryParam negativeBlameQueryParam = new NegativeBlameQueryParam(); |
|
|
|
negativeBlameQueryParam.setNegativeIds(ssNegativeIds); |
|
|
|
negativeBlameQueryParam.setNegativeIds(ssNegativeIds); |
|
|
|
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam); |
|
|
|
List<NegativeBlame> negativeBlames = negativeBlameResourceService.query(negativeBlameQueryParam); |
|
|
|
@ -144,12 +142,12 @@ public class ReportDataServiceImpl implements ReportDataService { |
|
|
|
overviewSection.setVerifiedYoyTrend(ReportTrendUtil.calcTrend(curVerifiedRate, yoyVerifiedRate)); |
|
|
|
overviewSection.setVerifiedYoyTrend(ReportTrendUtil.calcTrend(curVerifiedRate, yoyVerifiedRate)); |
|
|
|
|
|
|
|
|
|
|
|
// 集中问题
|
|
|
|
// 集中问题
|
|
|
|
Map.Entry<String, Long> problemEntry = ReportTrendUtil.topBy(Negative::getProblemSources, bjssNegativeList, bjjbssNegativeList); |
|
|
|
Map.Entry<String, Long> problemEntry = ReportTrendUtil.topBy(NegativeQueryVo::getProblemSources, bjssNegativeList, bjjbssNegativeList); |
|
|
|
String problemSource = problemEntry != null ? problemEntry.getKey() : null; |
|
|
|
String problemSource = problemEntry != null ? problemEntry.getKey() : null; |
|
|
|
Long problemSourceCount = problemEntry != null ? problemEntry.getValue() : 0; |
|
|
|
Long problemSourceCount = problemEntry != null ? problemEntry.getValue() : 0; |
|
|
|
overviewSection.setTopProblemProject(problemSource); |
|
|
|
overviewSection.setTopProblemProject(problemSource); |
|
|
|
// 重点关注单位
|
|
|
|
// 重点关注单位
|
|
|
|
Map.Entry<String, Long> departEntry = ReportTrendUtil.topBy(Negative::getInvolveDepartName, bjssNegativeList, bjjbssNegativeList); |
|
|
|
Map.Entry<String, Long> departEntry = ReportTrendUtil.topBy(NegativeQueryVo::getInvolveDepartName, bjssNegativeList, bjjbssNegativeList); |
|
|
|
String departName = departEntry != null ? departEntry.getKey() : null; |
|
|
|
String departName = departEntry != null ? departEntry.getKey() : null; |
|
|
|
Long departNameCount = departEntry != null ? departEntry.getValue() : 0; |
|
|
|
Long departNameCount = departEntry != null ? departEntry.getValue() : 0; |
|
|
|
overviewSection.setTopProblemUnit(departName); |
|
|
|
overviewSection.setTopProblemUnit(departName); |
|
|
|
@ -158,9 +156,9 @@ public class ReportDataServiceImpl implements ReportDataService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查实率
|
|
|
|
// 查实率
|
|
|
|
private BigDecimal calcVerifiedRate(List<Negative> list) { |
|
|
|
private BigDecimal calcVerifiedRate(List<NegativeQueryVo> list) { |
|
|
|
// 办结
|
|
|
|
// 办结
|
|
|
|
List<Negative> closed = list.stream().filter(n -> n.getCompleteDate() != null).toList(); |
|
|
|
List<NegativeQueryVo> closed = list.stream().filter(n -> n.getCompleteDate() != null).toList(); |
|
|
|
|
|
|
|
|
|
|
|
int closedCount = closed.size(); |
|
|
|
int closedCount = closed.size(); |
|
|
|
if (closedCount == 0) { |
|
|
|
if (closedCount == 0) { |
|
|
|
@ -169,12 +167,12 @@ public class ReportDataServiceImpl implements ReportDataService { |
|
|
|
|
|
|
|
|
|
|
|
// 属实
|
|
|
|
// 属实
|
|
|
|
int verified = (int) closed.stream() |
|
|
|
int verified = (int) closed.stream() |
|
|
|
.filter(n -> CheckStatusEnum.TRUE_LIST.contains(n.getCheckStatusCode())) |
|
|
|
.filter(n -> CheckStatusEnum.TRUE_LIST.contains(n.getCheckStatus())) |
|
|
|
.count(); |
|
|
|
.count(); |
|
|
|
|
|
|
|
|
|
|
|
// 基本属实
|
|
|
|
// 基本属实
|
|
|
|
int partVerified = (int) closed.stream() |
|
|
|
int partVerified = (int) closed.stream() |
|
|
|
.filter(n -> CheckStatusEnum.PART_TRUE_LIST.contains(n.getCheckStatusCode())) |
|
|
|
.filter(n -> CheckStatusEnum.PART_TRUE_LIST.contains(n.getCheckStatus())) |
|
|
|
.count(); |
|
|
|
.count(); |
|
|
|
|
|
|
|
|
|
|
|
// 查实率 = (属实 + 基本属实) / 办结
|
|
|
|
// 查实率 = (属实 + 基本属实) / 办结
|
|
|
|
|