package com.ruoyi.doublePrevention.service.baseService.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.BeanCopyUtils; import com.ruoyi.doublePrevention.entity.PreventRiskDangerCheckLog; import com.ruoyi.doublePrevention.entity.RiskAndPeopleInfo; import com.ruoyi.doublePrevention.entity.dto.req.RiskAndPeopleInfoReqBO; import com.ruoyi.doublePrevention.entity.dto.resp.RiskAndPeopleInfoDTO; import com.ruoyi.doublePrevention.entity.dto.resp.RiskAndPeopleInfoRespDTO; import com.ruoyi.doublePrevention.repository.RiskAndPeopleInfoRepository; import com.ruoyi.doublePrevention.service.baseService.PreventRiskDangerCheckLogService; import com.ruoyi.doublePrevention.service.baseService.RiskAndPeopleInfoService; import com.ruoyi.doublePrevention.vo.ResultVO; import com.ruoyi.project.tr.HiddenDangerCheckJob.domain.HiddenDangerCheckJobLog; import com.ruoyi.project.tr.HiddenDangerCheckJob.service.IHiddenDangerCheckJobLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestBody; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @Service("RiskAndPeopleInfoService") public class RiskAndPeopleInfoServiceImpl extends ServiceImpl implements RiskAndPeopleInfoService { @Autowired private RiskAndPeopleInfoRepository repository; @Autowired private IHiddenDangerCheckJobLogService hiddenDangerCheckJobLogService; @Autowired private PreventRiskDangerCheckLogService preventRiskDangerCheckLogService; @Override public ResultVO listRiskAndPeoplePage(RiskAndPeopleInfoReqBO reqBO) { ResultVO resultVO = new ResultVO<>(); RiskAndPeopleInfoRespDTO respDTO = new RiskAndPeopleInfoRespDTO(); if (ObjectUtils.isEmpty(reqBO.getPageSize())){ throw new BusinessException("分页信息不能为空"); } if (ObjectUtils.isEmpty(reqBO.getPageNum())){ throw new BusinessException("分页信息不能为空"); } Integer pageIndex = reqBO.getPageNum(); Integer pageSize = reqBO.getPageSize(); Page page = PageHelper.startPage(pageIndex, pageSize); List riskOldInfo = repository.listRiskAndPeoplePage(reqBO); List allCheckJobLogList = new ArrayList<>(); List completeCheckJobLogList = new ArrayList<>(); List allCheckJobLogListOfHandle = new ArrayList<>(); List completeCheckJobLogListOfHandle = new ArrayList<>(); List allCheckJobLogListOfTechnology = new ArrayList<>(); List completeCheckJobLogListOfTechnology = new ArrayList<>(); List allCheckJobLogListOfMain = new ArrayList<>(); List completeCheckJobLogListOfMain = new ArrayList<>(); for (RiskAndPeopleInfo riskAndPeopleInfo : riskOldInfo) { //操作人的id,依此为依据,查询所有的任务记录 check_user_id List jobLogOfHandle = hiddenDangerCheckJobLogService.getJobLogByCheckUserId(riskAndPeopleInfo.getHandleLiabilityPersonId()); if (jobLogOfHandle.size() > 0){ for (HiddenDangerCheckJobLog jobLog : jobLogOfHandle) { PreventRiskDangerCheckLog preventRiskDangerCheckLog = preventRiskDangerCheckLogService.getByDangerCheckByJobId(jobLog.getJobId()); if (preventRiskDangerCheckLog.getCheckStatus() != 3){ completeCheckJobLogListOfHandle.add(jobLog); completeCheckJobLogList.add(jobLog); } allCheckJobLogListOfHandle.add(jobLog); allCheckJobLogList.add(jobLog); } } //技术负责人的id,依此为依据,查询所有的任务记录 check_user_id List jobLogListsOfTechnology = hiddenDangerCheckJobLogService.getJobLogByCheckUserId(riskAndPeopleInfo.getTechnologyLiabilityPersonId()); if (jobLogListsOfTechnology.size() > 0){ for (HiddenDangerCheckJobLog jobLog : jobLogListsOfTechnology) { PreventRiskDangerCheckLog preventRiskDangerCheckLog = preventRiskDangerCheckLogService.getByDangerCheckByJobId(jobLog.getJobId()); if (preventRiskDangerCheckLog.getCheckStatus() != 3){ completeCheckJobLogListOfTechnology.add(jobLog); completeCheckJobLogList.add(jobLog); } allCheckJobLogListOfTechnology.add(jobLog); allCheckJobLogList.add(jobLog); } } //主要负责人的id,依此为依据,查询所有的任务记录 check_user_id List jobLogListsOfMain = hiddenDangerCheckJobLogService.getJobLogByCheckUserId(riskAndPeopleInfo.getMainLiabilityPersonId()); if (jobLogListsOfMain.size() > 0){ for (HiddenDangerCheckJobLog jobLog : jobLogListsOfMain) { PreventRiskDangerCheckLog preventRiskDangerCheckLog = preventRiskDangerCheckLogService.getByDangerCheckByJobId(jobLog.getJobId()); if (preventRiskDangerCheckLog.getCheckStatus() != 3){ completeCheckJobLogListOfMain.add(jobLog); completeCheckJobLogList.add(jobLog); } allCheckJobLogListOfMain.add(jobLog); allCheckJobLogList.add(jobLog); } } } List riskAndPeopleList = BeanCopyUtils.copyBeanList(riskOldInfo, RiskAndPeopleInfoDTO.class); int completeRatio = 0; if (allCheckJobLogList.size() > 0){ completeRatio = completeCheckJobLogList.size() / allCheckJobLogList.size(); } int completeRatioOfHandle = 0; if (allCheckJobLogListOfHandle.size() > 0){ completeRatioOfHandle = completeCheckJobLogListOfHandle.size() / allCheckJobLogListOfHandle.size(); } int completeRatioOfTechnology = 0; if (allCheckJobLogListOfTechnology.size() > 0){ completeRatioOfTechnology = completeCheckJobLogListOfTechnology.size() / allCheckJobLogListOfTechnology.size(); } int completeRatioOfMain = 0; if (allCheckJobLogListOfMain.size() > 0){ completeRatioOfMain = completeCheckJobLogListOfMain.size() / allCheckJobLogListOfMain.size(); } respDTO.setRiskAndPeopleInfoDTO(riskAndPeopleList); respDTO.setCount(allCheckJobLogList.size()); respDTO.setComplete(completeCheckJobLogList.size()); respDTO.setCompleteRatio(BigDecimal.valueOf(completeRatio)); respDTO.setCountOfHandle(allCheckJobLogListOfHandle.size()); respDTO.setCompleteOfHandle(completeCheckJobLogListOfHandle.size()); respDTO.setCompleteRatioOfHandle(BigDecimal.valueOf(completeRatioOfHandle)); respDTO.setCountOfTechnology(allCheckJobLogListOfTechnology.size()); respDTO.setCompleteOfTechnology(completeCheckJobLogListOfTechnology.size()); respDTO.setCompleteRatioOfTechnology(BigDecimal.valueOf(completeRatioOfTechnology)); respDTO.setCountOfMain(allCheckJobLogListOfMain.size()); respDTO.setCompleteOfMain(completeCheckJobLogListOfMain.size()); respDTO.setCompleteRatioOfMain(BigDecimal.valueOf(completeRatioOfMain)); resultVO.setPageSize(pageSize); resultVO.setPageNum(pageIndex); resultVO.setCount((int) page.getTotal()); resultVO.setData(respDTO); return resultVO; } @Override public RiskAndPeopleInfo selectRiskAndPeopleInfoById(Long id) { return repository.selectRiskAndPeopleInfoById(id); } }