diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PmsTemProcessReportServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PmsTemProcessReportServiceImpl.java index d3fe20241..b313cfaf7 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PmsTemProcessReportServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/upload/impl/PmsTemProcessReportServiceImpl.java @@ -2,27 +2,39 @@ package com.njcn.harmonic.service.upload.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.harmonic.mapper.upload.PmsTemProcessReportMapper; import com.njcn.harmonic.mapper.upload.PmsTemUserMapper; import com.njcn.harmonic.pojo.param.upload.PmsTemUserParam; +import com.njcn.harmonic.pojo.po.upload.PmsTemProcessApproval; import com.njcn.harmonic.pojo.po.upload.PmsTemProcessReport; import com.njcn.harmonic.pojo.po.upload.PmsTemProcessTrackPO; import com.njcn.harmonic.pojo.po.upload.PmsTemUserPO; import com.njcn.harmonic.service.upload.IPmsTemProcessReportService; +import com.njcn.harmonic.service.upload.IPmsTemProcessTrackService; +import com.njcn.harmonic.service.upload.IPmsTemUserService; +import com.njcn.harmonic.service.upload.PmsTemProcessApprovalService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import com.njcn.user.pojo.vo.PvTerminalTreeVO; import com.njcn.web.enums.GWSendEnum; import com.njcn.web.pojo.param.SendParam; import com.njcn.web.utils.GwSendUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; /** @@ -37,7 +49,14 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class PmsTemProcessReportServiceImpl extends ServiceImpl implements IPmsTemProcessReportService { - private final PmsTemUserMapper pmsTemUserMapper; + + private final DeptFeignClient deptFeignClient; + + private final IPmsTemUserService iPmsTemUserService; + + private final IPmsTemProcessTrackService iPmsTemProcessTrackService; + + private final PmsTemProcessApprovalService pmsTemProcessApprovalService; @Override @@ -82,9 +101,125 @@ public class PmsTemProcessReportServiceImpl extends ServiceImpl pmsTemProcessReportList = new ArrayList<>(); + List data = deptFeignClient.allDeptList().getData(); + + data = data.stream().filter(temp -> Objects.equals(temp.getLevel(), 2)).collect(Collectors.toList()); + + data.forEach(province->{ + province.getChildren().forEach(city->{ + PmsTemProcessReport pmsTemProcessReport = new PmsTemProcessReport(); + pmsTemProcessReport.setProvinceOrg(province.getCode()); + pmsTemProcessReport.setProvinceOrgName(province.getName()); + pmsTemProcessReport.setCityOrg(city.getCode()); + pmsTemProcessReport.setCityOrgName(city.getName()); + pmsTemProcessReport.setStatisticalLevel("4"); + pmsTemProcessReport.setStatisticalType("02"); + pmsTemProcessReport.setStatisticalDate(statisticalDate); + + + pmsTemProcessReport.setUploadStatus(DataStateEnum.DELETED.getCode()); + + + + Integer monthCount = iPmsTemUserService.lambdaQuery() + .eq(PmsTemUserPO::getProvinceOrg, province.getCode()) + .eq(PmsTemUserPO::getCityOrg, city.getCode()) + .between(PmsTemUserPO::getReleaseTime, beginTime, endTime).count(); + List list = iPmsTemUserService.lambdaQuery() + .eq(PmsTemUserPO::getProvinceOrg, province.getCode()) + .eq(PmsTemUserPO::getCityOrg, city.getCode()).list(); + pmsTemProcessReport.setNewUserNum(monthCount); + pmsTemProcessReport.setNewUserCount(list.size()); + + List userIds = list.stream().map(PmsTemUserPO::getObjId).collect(Collectors.toList()); + + //规划可研阶段 + Integer auditCount = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) +// .eq(PmsTemProcessTrackPO::getProStage,"01") + .between(PmsTemProcessTrackPO::getAuditFinalTime, beginTime, endTime) + .count(); + + Integer allAuditCount = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) +// .eq(PmsTemProcessTrackPO::getProStage,"01") +// .between(PmsTemProcessTrackPO::getAuditFinalTime, beginTime, endTime) + .isNotNull(PmsTemProcessTrackPO::getAuditFinalTime) + .count(); + pmsTemProcessReport.setReportAuditNum(auditCount); + pmsTemProcessReport.setReportAuditCount(allAuditCount); + + //规划验收 + Integer approvalAuditNum = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) +// .eq(PmsTemProcessTrackPO::getProStage,"01") + .between(PmsTemProcessTrackPO::getApprovalTime, beginTime, endTime) + .count(); + Integer approvalAuditCount = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) +// .eq(PmsTemProcessTrackPO::getProStage,"01") +// .between(PmsTemProcessTrackPO::getAuditFinalTime, beginTime, endTime) + .isNotNull(PmsTemProcessTrackPO::getApprovalTime) + .count(); + pmsTemProcessReport.setApprovalAuditNum(approvalAuditNum); + pmsTemProcessReport.setApprovalAuditCount(approvalAuditCount); + + Integer approvalProblemNum = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) + .eq(PmsTemProcessTrackPO::getApprovalResult,"01") +// .eq(PmsTemProcessTrackPO::getProStage,"01") + .between(PmsTemProcessTrackPO::getApprovalTime, beginTime, endTime) + .count(); + Integer approvalProblemCount = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) + .eq(PmsTemProcessTrackPO::getApprovalResult,"01") +// .eq(PmsTemProcessTrackPO::getProStage,"01") +// .between(PmsTemProcessTrackPO::getAuditFinalTime, beginTime, endTime) + .isNotNull(PmsTemProcessTrackPO::getApprovalTime) + .count(); + pmsTemProcessReport.setApprovalProblemNum(approvalProblemNum); + pmsTemProcessReport.setApprovalProblemCount(approvalProblemCount); + + Integer approvalRectificationProblemNum = pmsTemProcessApprovalService.lambdaQuery() + .in(PmsTemProcessApproval::getTempUserDossierId, userIds) + .eq(PmsTemProcessApproval::getRectificationStatus, "02") +// .eq(PmsTemProcessTrackPO::getProStage,"01") + .between(PmsTemProcessApproval::getRectificationTime, beginTime, endTime) + .count(); + + Integer approvalRectificationProblemCount = pmsTemProcessApprovalService.lambdaQuery() + .in(PmsTemProcessApproval::getTempUserDossierId, userIds) + .eq(PmsTemProcessApproval::getRectificationStatus, "02") +// .eq(PmsTemProcessTrackPO::getProStage,"01") +// .between(PmsTemProcessApproval::getRectificationTime, beginTime, endTime) + .count(); + + pmsTemProcessReport.setApprovalRectificationProblemNum(approvalRectificationProblemNum); + pmsTemProcessReport.setApprovalRectificationProblemCount(approvalRectificationProblemCount); + + //试运行 + Integer testRunUserCount = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) + .eq(PmsTemProcessTrackPO::getProStage,"03") + .between(PmsTemProcessTrackPO::getMonitorDate, beginTime, endTime) + .count(); + Integer testRunOvUserNum = iPmsTemProcessTrackService.lambdaQuery() + .in(PmsTemProcessTrackPO::getTempUserDossierId, userIds) + .eq(PmsTemProcessTrackPO::getProStage,"03") + .eq(PmsTemProcessTrackPO::getTestIsOv,"01") + .between(PmsTemProcessTrackPO::getMonitorDate, beginTime, endTime) + .count(); + pmsTemProcessReport.setTestRunUserCount(testRunUserCount); + pmsTemProcessReport.setTestRunOvUserNum(testRunOvUserNum); + pmsTemProcessReport.setTestRunOvUserRate(BigDecimal.valueOf(Double.valueOf(testRunOvUserNum*100)/testRunOvUserNum).setScale(2)); return null; }