| | |
| | | import cn.gistack.sm.sg.DTO.ApprovalDTO; |
| | | import cn.gistack.sm.sg.DTO.ProjectSearchDTO; |
| | | import cn.gistack.sm.sg.VO.SgProgressReportVO; |
| | | import cn.gistack.sm.sg.VO.SgProjectInfoVO; |
| | | import cn.gistack.sm.sg.VO.SgReportVO; |
| | | import cn.gistack.sm.sg.VO.SgStepReportVO; |
| | | import cn.gistack.sm.sg.mapper.*; |
| | | import cn.gistack.sm.sg.service.SgProgressReportService; |
| | | import cn.gistack.sm.sg.service.SgProjectInfoService; |
| | | import cn.hutool.http.useragent.UserAgentUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.lang.Long; |
| | | import java.util.*; |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | |
| | | @Autowired |
| | | private SgProjectInfoMapper sgProjectInfoMapper; |
| | | |
| | | @Autowired |
| | | private SgProjectInfoServiceImpl sgProjectInfoService; |
| | | |
| | | ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); |
| | | @Override |
| | | public IPage<SgProgressReportVO> queryPageList(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageList(page,searchDTO); |
| | | return page.setRecords(list); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<SgProgressReportVO> queryPageListAll(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageListAll(page,searchDTO); |
| | | return page.setRecords(list); |
| | | } |
| | | @Override |
| | | @Transactional |
| | | public void add(SgProgressReportDO sgProgressReportDO) { |
| | | String resubmitId = sgProgressReportDO.getResubmitId(); |
| | | if (StringUtils.isNotBlank(resubmitId)){ |
| | | new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId,resubmitId).set(SgProgressReportDO::getResubmit,1).update(); |
| | | } |
| | | Long userId = AuthUtil.getUserId(); |
| | | sgProgressReportDO.setReportUser(userId); |
| | | Date now = DateUtil.now(); |
| | | sgProgressReportDO.setReportTime(now); |
| | | sgProgressReportDO.setCreateTime(now); |
| | | //如果为草稿状态,单纯插入 |
| | | if(sgProgressReportDO.getStatus()==4){ |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).eq("status", 4).eq("gx_step_id", sgProgressReportDO.getGxStepId()) |
| | | .eq("gx_device_id",sgProgressReportDO.getGxDeviceId()); |
| | | if(sgProgressReportMapper.selectOne(wrappers) == null){ |
| | | sgProgressReportMapper.insert(sgProgressReportDO); |
| | | return; |
| | | }else { |
| | | throw new ServiceException("已有草稿数据,无法保存"); |
| | | } |
| | | |
| | | } |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("profram_id", sgProgressReportDO.getProframId()).ne("status", 4).eq("gx_step_name", "施工准备"); |
| | | List<SgProgressReportDO> sgProgressReportDOS1 = sgProgressReportMapper.selectList(wrappers); |
| | | |
| | | if(sgProgressReportDO.getGxDeviceId()==998){ |
| | | ProjectSearchDTO search = new ProjectSearchDTO(); |
| | | search.setProjectId(sgProgressReportDO.getProframId().toString()); |
| | | List<SgProjectInfoVO> sgProjectInfoVOS = sgProjectInfoMapper.queryStepByProject(search); |
| | | if(sgProjectInfoVOS != null){ |
| | | sgProjectInfoVOS.forEach(s ->{ |
| | | if(!s.getProjectStatus().equals(2)){ |
| | | throw new ServiceException("请完成所有设备工序审批!"); |
| | | } |
| | | }); |
| | | }else{ |
| | | throw new ServiceException("无设备审批数据!"); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (sgProgressReportDOS1!= null && sgProgressReportDOS1.size() > 0) { |
| | | for (SgProgressReportDO sgProgressReportDO1 : sgProgressReportDOS1) { |
| | | if (sgProgressReportDO1.getStatus()!= 2 && sgProgressReportDO1.getStatus()!= 3) { |
| | | throw new ServiceException("请先完成施工准备的审批!"); |
| | | } |
| | | } |
| | | } else if (sgProgressReportDOS1 == null || (!sgProgressReportDO.getGxStepName().equals("施工准备"))) { |
| | | throw new ServiceException("请先发起施工准备的审批!"); |
| | | } |
| | | Long gxDeviceId = sgProgressReportDO.getGxDeviceId(); |
| | | Long gxStepId = sgProgressReportDO.getGxStepId(); |
| | | List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(gxDeviceId); |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId); |
| | | List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId()); |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId); |
| | | wrapper.in("status",Arrays.asList(0,1,2,3)); |
| | | if(sgProgressReportDO.getGxDeviceId()==998 || sgProgressReportDO.getGxDeviceId()==999){ |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4).eq("profram_id",sgProgressReportDO.getProframId()); |
| | | }else { |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4); |
| | | } |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper); |
| | | if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){ |
| | | |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)){ |
| | | for (SgProgressReportDO reportDO : sgProgressReportDOS) { |
| | | if (reportDO.getStatus()==3 && reportDO.getResubmit()!=null && reportDO.getResubmit()==0){ |
| | | throw new ServiceException("此工序已存在审批!"); |
| | | } |
| | | } |
| | | } |
| | | List<SgProgressReportDO> reportDOS = sgProgressReportDOS.stream().filter(s -> s.getStatus() != 3).collect(Collectors.toList()); |
| | | if ( reportDOS!=null && reportDOS.size()>0){ |
| | | throw new ServiceException("此工序已存在审批!"); |
| | | } |
| | | for (SgGxStepDO gxStepDO : list) { |
| | | if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) == 1) { |
| | | if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) >= 1) { |
| | | QueryWrapper<SgProgressReportDO> wrapper1 = new QueryWrapper<>(); |
| | | wrapper1.eq("gx_step_id", gxStepDO.getId()); |
| | | wrapper1.eq("gx_device_id",gxDeviceId); |
| | | wrapper1.ne("status",4); |
| | | wrapper1.ne("status",3); |
| | | SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1); |
| | | if (one == null || one.getStatus() != 2) { |
| | | throw new ServiceException("请先完成" + gxStepDO.getGxStepName() + "的审批!"); |
| | | } |
| | | } |
| | | } |
| | | Long userId = AuthUtil.getUserId(); |
| | | sgProgressReportDO.setStatus(0); |
| | | sgProgressReportDO.setReportUser(userId); |
| | | sgProgressReportMapper.insert(sgProgressReportDO); |
| | | SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId); |
| | | String deviceType = sgDeviceDO.getDeviceType(); |
| | | String deviceType =""; |
| | | SgDeviceDO sgDeviceDO = new SgDeviceDO(); |
| | | if (gxDeviceId == 999){ |
| | | deviceType = "sgzb"; |
| | | }else if(gxDeviceId == 998){ |
| | | deviceType = "sgys"; |
| | | }else { |
| | | sgDeviceDO = sgDeviceMapper.selectById(gxDeviceId); |
| | | deviceType = sgDeviceDO.getDeviceType(); |
| | | } |
| | | List<SgGxConfigDO> sgGxConfigDOS = new LambdaQueryChainWrapper<>(sgGxConfigMapper) |
| | | .eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).list(); |
| | | .eq(SgGxConfigDO::getGxDeviceType, deviceType).eq(SgGxConfigDO::getGxStepId, gxStepId).orderByAsc(SgGxConfigDO::getSgOrder).list(); |
| | | List<String> roIds = sgGxConfigDOS.stream().map(SgGxConfigDO::getRoleId).collect(Collectors.toList()); |
| | | if (CollectionUtils.isEmpty(roIds)){ |
| | | throw new ServiceException("请完成工序角色配置!"); |
| | | } |
| | | List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list(); |
| | | if (CollectionUtils.isEmpty(personConfigDOS)){ |
| | | throw new ServiceException("请完成项目审批人员配置!"); |
| | | } |
| | | Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId)); |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build()); |
| | | for (SgGxConfigDO sgGxConfigDO : sgGxConfigDOS) { |
| | | sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId()))); |
| | | sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgGxConfigDO.getUser()).approvalStatus(0).approvalOrder(sgGxConfigDO.getSgOrder()).build()); |
| | | if (sgGxConfigDO.getSgOrder() == 1) { |
| | | sgProgressReportDO.setAuditPerson(String.valueOf(sgGxConfigDO.getUser())); |
| | | sgProgressReportMapper.updateById(sgProgressReportDO); |
| | | } |
| | | } |
| | | // List<SgProjectPersonConfigDO> personConfigDOS = new LambdaQueryChainWrapper<>(sgProjectPersonConfigMapper).eq(SgProjectPersonConfigDO::getProgramId,sgProgressReportDO.getProframId()).in(SgProjectPersonConfigDO::getRoldId, roIds).list(); |
| | | // if (CollectionUtils.isEmpty(personConfigDOS)){ |
| | | // throw new ServiceException("请完成项目审批人员配置!"); |
| | | // } |
| | | //Map<Long, Long> userMap = personConfigDOS.stream().collect(Collectors.toMap(SgProjectPersonConfigDO::getRoldId, SgProjectPersonConfigDO::getUserId)); |
| | | // sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgProgressReportDO.getReportUser()).approvalContent("提交审批").approvalStatus(0).approvalOrder(0).approvalTime(now).build()); |
| | | // for (SgGxConfigDO sgGxConfigDO : sgGxConfigDOS) { |
| | | // sgGxConfigDO.setUser(userMap.get(Long.parseLong(sgGxConfigDO.getRoleId()))); |
| | | // sgReportUserMapper.insert(SgReportUserDO.builder().reportId(sgProgressReportDO.getId()).userId(sgGxConfigDO.getUser()).approvalStatus(0).approvalOrder(sgGxConfigDO.getSgOrder()).build()); |
| | | // try { |
| | | // Thread.sleep(100); |
| | | // } catch (InterruptedException e) { |
| | | // throw new RuntimeException(e); |
| | | // } |
| | | // if (sgGxConfigDO.getSgOrder() == 1) { |
| | | // sgProgressReportDO.setAuditPerson(String.valueOf(sgGxConfigDO.getUser())); |
| | | // sgProgressReportMapper.updateById(sgProgressReportDO); |
| | | // } |
| | | // } |
| | | |
| | | //加个项目及设备的状态判断 方便统计计算 |
| | | if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) { |
| | | sgDeviceDO.setStatus(1); |
| | | sgDeviceMapper.updateById(sgDeviceDO); |
| | | if(gxStepId != 25 && gxStepId != 26 ) { |
| | | if (sgDeviceDO != null && sgDeviceDO.getStatus() == 0) { |
| | | sgDeviceDO.setStatus(1); |
| | | sgDeviceMapper.updateById(sgDeviceDO); |
| | | } |
| | | } |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(sgProgressReportDO.getProframId()); |
| | | if (sgProjectInfoDO != null && sgProjectInfoDO.getStatus() == 0) { |
| | |
| | | public SgProgressReportVO detail(String id) { |
| | | SgProgressReportVO sgProgressReportVO = sgProgressReportMapper.queryById(id); |
| | | SgDeviceDO sgDeviceDO = sgDeviceMapper.selectById(sgProgressReportVO.getGxDeviceId()); |
| | | sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName()); |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).orderByAsc(SgReportUserDO::getApprovalTime).list(); |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(sgProgressReportVO.getGxStepId()); |
| | | sgProgressReportVO.setStepRemark(sgGxStepDO.getRemark()); |
| | | if(sgProgressReportVO.getGxDeviceId() !=999 && sgProgressReportVO.getGxDeviceId() !=998){ |
| | | sgProgressReportVO.setDeviceName(sgDeviceDO.getDeviceName()); |
| | | }else { |
| | | sgProgressReportVO.setDeviceName("");} |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId,id).orderByAsc(SgReportUserDO::getId).list(); |
| | | List<Long> ids = list.stream().map(s -> s.getUserId()).collect(Collectors.toList()); |
| | | List<Map<String,Object>> users = sgProgressReportMapper.getUserByIds(ids); |
| | | for (Map<String, Object> user : users) { |
| | | for (SgReportUserDO sgReportUserDO : list) { |
| | | if (user.get("ID").equals(sgReportUserDO.getUserId())){ |
| | | sgReportUserDO.setUserName(user.get("REAL_NAME").toString()); |
| | | sgReportUserDO.setDeptName(user.get("DEPTNAME").toString()); |
| | | } |
| | | } |
| | | } |
| | | sgProgressReportVO.setSgReportUserDOS(list); |
| | | List<SgStepReportVO> sgStepReportVOS = sgProgressReportMapper.selectByDeviceId(sgProgressReportVO.getGxDeviceId()); |
| | | sgStepReportVOS = sgStepReportVOS.stream().filter(s -> s.getApprovalStatus() == null || (s.getApprovalStatus() != 4 && !(s.getApprovalStatus() == 3 && s.getResubmit() != 0))).collect(Collectors.toList()); |
| | | sgProgressReportVO.setSgStepReportVOS(sgStepReportVOS); |
| | | return sgProgressReportVO; |
| | | } |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void approval(ApprovalDTO approvalDTO) { |
| | | Integer isReject = approvalDTO.getIsReject(); |
| | | Long userId = approvalDTO.getUserId(); |
| | | Long id = approvalDTO.getId(); |
| | | List<SgReportUserDO> list = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).eq(SgReportUserDO::getIsHis,0) |
| | | .eq(SgReportUserDO::getApprovalStatus, 0).orderByDesc(SgReportUserDO::getApprovalOrder).list(); |
| | | SgReportUserDO sgReportUserDO = list.stream().filter(s -> s.getUserId().equals(approvalDTO.getUserId())).findFirst().get(); |
| | | SgProgressReportDO sgProgressReportDO = sgProgressReportMapper.selectById(id); |
| | | List<SgReportUserDO> sgReportUserDOS = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).ne(SgReportUserDO::getApprovalOrder,0).eq(SgReportUserDO::getIsHis,0) |
| | | .orderByAsc(SgReportUserDO::getApprovalOrder).list(); |
| | | //审批者 |
| | | SgReportUserDO sgReportUserDO = new SgReportUserDO(); |
| | | if (isReject==1){ |
| | | sgReportUserDO = sgReportUserDOS.get(0); |
| | | }else { |
| | | sgReportUserDO = sgReportUserDOS.stream().filter(s -> s.getUserId().equals(Long.parseLong(sgProgressReportDO.getAuditPerson()))).findFirst().get(); |
| | | } |
| | | Date date = new Date(); |
| | | LambdaUpdateChainWrapper<SgProgressReportDO> updateChainWrapper = new LambdaUpdateChainWrapper<>(sgProgressReportMapper).eq(SgProgressReportDO::getId, id); |
| | | LambdaUpdateChainWrapper<SgReportUserDO> userUpdate = new LambdaUpdateChainWrapper<>(sgReportUserMapper) |
| | | .eq(SgReportUserDO::getId, sgReportUserDO.getId()).set(SgReportUserDO::getApprovalContent,approvalDTO.getApprovalContent()).set(SgReportUserDO::getApprovalTime,date); |
| | | if (approvalDTO.getStatus()==1){ |
| | | Integer approvalOrder = sgReportUserDO.getApprovalOrder(); |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,1).update(); |
| | | if (sgReportUserDO.getId()==list.get(0).getId()){ |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,2).set(SgProgressReportDO::getAuditPerson,null).update(); |
| | | Optional<SgReportUserDO> next = sgReportUserDOS.stream().filter(s -> s.getApprovalOrder() == approvalOrder + 1).findFirst(); |
| | | //如果存在下一个审批人,则继续审批 |
| | | if (next.isPresent()){ |
| | | SgReportUserDO nextUser = next.get(); |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update(); |
| | | }else { |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,2).set(SgProgressReportDO::getAuditPerson,null).update(); |
| | | Long proframId = sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId(); |
| | | //工序审核完成后 进行项目和设备状态的判断 |
| | | cachedThreadPool.execute(new Runnable(){ |
| | | @Override |
| | | public void run(){ |
| | | setProgramAndDeviceStatus(proframId); |
| | | |
| | | |
| | | //工序审核完成后 进行项目和设备状态的判断 |
| | | |
| | | cachedThreadPool.execute(new Runnable(){ |
| | | @Override |
| | | public void run(){ |
| | | setProgramAndDeviceStatus(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | |
| | | }else { |
| | | SgReportUserDO nextUser = list.stream().filter(s -> s.getApprovalOrder()==sgReportUserDO.getApprovalOrder()+1).findFirst().get(); |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,1).set(SgProgressReportDO::getAuditPerson,nextUser.getUserId()).update(); |
| | | } |
| | | } |
| | | }); |
| | | Long projectID = sgProgressReportMapper.selectById(approvalDTO.getId()).getProframId(); |
| | | setProgramProgress(projectID); |
| | | } |
| | | }else { |
| | | updateChainWrapper.set(SgProgressReportDO::getStatus,3); |
| | | List<SgReportUserDO> sgReportUserDOS = new LambdaQueryChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getReportId, id).eq(SgReportUserDO::getIsHis,0) |
| | | .orderByAsc(SgReportUserDO::getApprovalOrder).list() |
| | | // .stream().distinct() |
| | | // .stream().filter(s->s.getApprovalOrder()!=0 && s.getApprovalOrder()<= sgReportUserDO.getApprovalOrder()).collect(Collectors.toList()) |
| | | ; |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,2).update(); |
| | | for (SgReportUserDO reportUserDO : sgReportUserDOS) { |
| | | updateChainWrapper.set(SgProgressReportDO::getResubmit,0); |
| | | userUpdate.set(SgReportUserDO::getApprovalStatus,2); |
| | | if (isReject==1){ |
| | | userUpdate.set(SgReportUserDO::getUserId,userId); |
| | | } |
| | | userUpdate.update(); |
| | | /*for (SgReportUserDO reportUserDO : sgReportUserDOS) { |
| | | if (reportUserDO.getApprovalOrder()<=sgReportUserDO.getApprovalOrder()&&reportUserDO.getApprovalOrder()!=0){ |
| | | //更新为历史数据 |
| | | new LambdaUpdateChainWrapper<>(sgReportUserMapper).eq(SgReportUserDO::getId,reportUserDO.getId()).set(SgReportUserDO::getIsHis,1).update(); |
| | | reportUserDO.setId(null); |
| | | reportUserDO.setApprovalStatus(0); |
| | | reportUserDO.setIsHis(0); |
| | | reportUserDO.setApprovalTime(date); |
| | | setReportUser(date, reportUserDO); |
| | | sgReportUserMapper.insert(reportUserDO); |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | }else if (reportUserDO.getApprovalOrder()>sgReportUserDO.getApprovalOrder()){ |
| | | reportUserDO.setApprovalTime(date); |
| | | sgReportUserMapper.updateById(reportUserDO); |
| | | sgReportUserMapper.deleteById(reportUserDO.getId()); |
| | | setReportUser(date, reportUserDO); |
| | | sgReportUserMapper.insert(reportUserDO); |
| | | try { |
| | | Thread.sleep(100); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | if (reportUserDO.getApprovalOrder()==1){ |
| | | updateChainWrapper.set(SgProgressReportDO::getAuditPerson,reportUserDO.getUserId()); |
| | | } |
| | | } |
| | | }*/ |
| | | updateChainWrapper.update(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 审批通过更新项目进度 |
| | | * @param proframId |
| | | */ |
| | | public void setProgramProgress(Long proframId) { |
| | | ProjectSearchDTO searchDTO = new ProjectSearchDTO(); |
| | | searchDTO.setProjectId(String.valueOf(proframId)); |
| | | List<SgProjectInfoVO> list = sgProjectInfoMapper.queryStepByProject(searchDTO); |
| | | List<SgProjectInfoDO> progress = sgProjectInfoService.getProjectProgress(list); |
| | | String projectProgress = progress.get(0).getProjectProgress(); |
| | | if (StringUtils.isNotBlank(projectProgress)){ |
| | | String s = projectProgress.substring(0, projectProgress.length() - 1); |
| | | new LambdaUpdateChainWrapper<>(sgProjectInfoMapper).set(SgProjectInfoDO::getProjectProgress,s).eq(SgProjectInfoDO::getId,proframId).update() ; |
| | | } |
| | | } |
| | | private void setReportUser(Date date, SgReportUserDO reportUserDO) { |
| | | reportUserDO.setId(null); |
| | | reportUserDO.setApprovalStatus(0); |
| | | reportUserDO.setIsHis(0); |
| | | reportUserDO.setApprovalTime(date); |
| | | reportUserDO.setApprovalContent(null); |
| | | } |
| | | |
| | | public void setProgramAndDeviceStatus(){ |
| | | |
| | | public void setProgramAndDeviceStatus(Long projectId){ |
| | | //查询所有的项目 |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = sgProjectInfoMapper.selectList(null); |
| | | SgProjectInfoDO sgProjectInfoDO = sgProjectInfoMapper.selectById(projectId); |
| | | List<SgProjectInfoDO> sgProjectInfoDOS = List.of(sgProjectInfoDO); |
| | | if(sgProjectInfoDOS!=null&& !sgProjectInfoDOS.isEmpty()) { |
| | | for (SgProjectInfoDO project : sgProjectInfoDOS) { |
| | | QueryWrapper<SgDeviceDO> queryWrapper = new QueryWrapper<>(); |
| | |
| | | } |
| | | } |
| | | } |
| | | if (deviceFinishCount == sgDeviceDOS.size()) { |
| | | if (deviceFinishCount!=0 && deviceFinishCount == sgDeviceDOS.size()) { |
| | | //如果项目下的设备下全部完成 |
| | | project.setStatus(2); |
| | | sgProjectInfoMapper.updateById(project); |
| | |
| | | public Map<String, Long> countList(ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | Long pending = sgProgressReportMapper.countList(searchDTO); |
| | | Long over = sgProgressReportMapper.countList(searchDTO); |
| | | searchDTO.setAuditPerson(userId.toString()); |
| | | List<SgProgressReportVO> all = sgProgressReportMapper.queryList(searchDTO); |
| | | searchDTO.setApprovalStatus(0); |
| | | List<SgProgressReportVO> pending = sgProgressReportMapper.queryList(searchDTO); |
| | | searchDTO.setApprovalStatus(1); |
| | | List<SgProgressReportVO> over= sgProgressReportMapper.queryList(searchDTO); |
| | | searchDTO.setApprovalStatus(2); |
| | | List<SgProgressReportVO> reject= sgProgressReportMapper.queryList(searchDTO); |
| | | Map<String, Long> map = new HashMap<>(); |
| | | map.put("pending",pending); |
| | | map.put("over",over); |
| | | map.put("pending", (long) pending.size()); |
| | | map.put("over", (long) over.size()); |
| | | map.put("all", (long) all.size()); |
| | | map.put("reject", (long) reject.size()); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Long> countListAll(ProjectSearchDTO searchDTO) { |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryPageListAll(null, searchDTO); |
| | | Map<String, Long> map = new HashMap<>(); |
| | | getStatusCountByList(list, map); |
| | | return map; |
| | | } |
| | | |
| | |
| | | public Map<String, Long> statusCount(ProjectSearchDTO searchDTO) { |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.statusCount(searchDTO); |
| | | Map<String, Long> map = new HashMap<>(); |
| | | getStatusCountByList(list, map); |
| | | return map; |
| | | } |
| | | |
| | | private void getStatusCountByList(List<SgProgressReportVO> list, Map<String, Long> map) { |
| | | List<SgProgressReportVO> pending = list.stream().filter(s -> s.getStatus() == 0).collect(Collectors.toList()); |
| | | List<SgProgressReportVO> progress = list.stream().filter(s -> s.getStatus() == 1).collect(Collectors.toList()); |
| | | List<SgProgressReportVO> over = list.stream().filter(s -> s.getStatus() == 2).collect(Collectors.toList()); |
| | | List<SgProgressReportVO> reject = list.stream().filter(s -> s.getStatus() == 3).collect(Collectors.toList()); |
| | | List<SgProgressReportVO> draft = list.stream().filter(s -> s.getStatus() == 4).collect(Collectors.toList()); |
| | | map.put("all", (long) list.size()); |
| | | map.put("pending", (long) pending.size()); |
| | | map.put("progress", (long) progress.size()); |
| | | map.put("over", (long) over.size()); |
| | | map.put("reject", (long) reject.size()); |
| | | return map; |
| | | map.put("draft", (long) draft.size()); |
| | | } |
| | | |
| | | @Override |
| | | public boolean checkStep(Long gxDeviceId, Long gxStepId) { |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectById(gxStepId); |
| | | List<SgGxStepDO> list = sgGxStepMapper.selectByGxInfoId(sgGxStepDO.getGxInfoId()); |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("gx_step_id", gxStepId).eq("gx_device_id",gxDeviceId).ne("status",4); |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper); |
| | | if ( sgProgressReportDOS!=null && sgProgressReportDOS.size()>0){ |
| | | return false; |
| | | } |
| | | for (SgGxStepDO gxStepDO : list) { |
| | | if (Integer.parseInt(sgGxStepDO.getGxStepNum()) - Integer.parseInt(gxStepDO.getGxStepNum()) >= 1) { |
| | | QueryWrapper<SgProgressReportDO> wrapper1 = new QueryWrapper<>(); |
| | | wrapper1.eq("gx_step_id", gxStepDO.getId()); |
| | | wrapper1.eq("gx_device_id", gxDeviceId); |
| | | wrapper1.ne("status",4); |
| | | SgProgressReportDO one = sgProgressReportMapper.selectOne(wrapper1); |
| | | if (one == null || one.getStatus() != 2) { |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<SgProgressReportVO> progressPage(IPage<SgProgressReportVO> page, ProjectSearchDTO searchDTO) { |
| | | Long userId = AuthUtil.getUserId(); |
| | | searchDTO.setUserId(userId); |
| | | if (searchDTO.getApprovalStatus()!=null && searchDTO.getApprovalStatus() ==0){ |
| | | searchDTO.setAuditPerson(String.valueOf(userId)); |
| | | } |
| | | List<SgProgressReportVO> list = sgProgressReportMapper.queryList(page, searchDTO); |
| | | return page.setRecords(list); |
| | | } |
| | | |
| | | @Override |
| | | public String getDeviceReport(Long gxDeviceId, Long gxStepId) { |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("gx_device_id",gxDeviceId).ne("status",4); |
| | | if (gxStepId!=null){ |
| | | wrapper.eq("gx_step_id",gxStepId); |
| | | } |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper); |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)){ |
| | | sgProgressReportDOS.sort((u1, u2) -> u2.getCreateTime().compareTo(u1.getCreateTime())); |
| | | return sgProgressReportDOS.get(0).getId().toString(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public SgReportVO getDeviceReportcopy(Long deviceId, Long stepId) { |
| | | SgReportVO sgReportVO = new SgReportVO(); |
| | | QueryWrapper<SgProgressReportDO> wrapper = new QueryWrapper<>(); |
| | | wrapper.eq("gx_device_id", deviceId).ne("status", 4); |
| | | |
| | | if (stepId!= null) { |
| | | wrapper.eq("gx_step_id", stepId); |
| | | } |
| | | |
| | | List<SgProgressReportDO> sgProgressReportDOS = sgProgressReportMapper.selectList(wrapper); |
| | | |
| | | // 先检查列表是否为空,进行后续操作 |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) { |
| | | sgProgressReportDOS.sort((u1, u2) -> u2.getCreateTime().compareTo(u1.getCreateTime())); |
| | | SgProgressReportDO firstReport = sgProgressReportDOS.get(0); |
| | | sgReportVO.setGxDeviceId(deviceId); |
| | | sgReportVO.setGxStepId(firstReport.getGxStepId()); |
| | | sgReportVO.setId(firstReport.getId()); |
| | | sgReportVO.setProframId(firstReport.getProframId()); |
| | | } else { |
| | | QueryWrapper<SgProgressReportDO> wrappers = new QueryWrapper<>(); |
| | | wrappers.eq("gx_device_id", deviceId).ne("status", 4).orderByDesc("create_time"); |
| | | |
| | | sgProgressReportDOS = sgProgressReportMapper.selectList(wrappers); |
| | | QueryWrapper<SgGxStepDO> wrapperss = new QueryWrapper<>(); |
| | | |
| | | if (CollectionUtils.isNotEmpty(sgProgressReportDOS)) { |
| | | sgProgressReportDOS.sort((u1, u2) -> u2.getCreateTime().compareTo(u1.getCreateTime())); |
| | | SgProgressReportDO firstReport = sgProgressReportDOS.get(0); |
| | | SgGxStepDO sgGxStepDO = sgGxStepMapper.selectOne(wrapperss.eq("id", stepId)); |
| | | List<SgGxStepDO> sgGxStepDOS = sgGxStepMapper.selectList( |
| | | new QueryWrapper<SgGxStepDO>() |
| | | .lt("id", stepId) |
| | | .eq("gx_info_id", sgGxStepDO.getGxInfoId()) |
| | | .orderByDesc("gx_step_num")); |
| | | if (!sgGxStepDOS.isEmpty()) { |
| | | if (sgGxStepDOS.get(0).getGxStepName().equals(firstReport.getGxStepName())&&firstReport.getStatus().equals(2)) { |
| | | sgReportVO.setGxDeviceId(deviceId); |
| | | sgReportVO.setGxStepId(sgGxStepDO.getId()); |
| | | sgReportVO.setProframId(firstReport.getProframId()); |
| | | }else { |
| | | throw new ServiceException("请完成上一步工序!"); |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | if (stepId!=null) { |
| | | SgGxStepDO sg = sgGxStepMapper.selectOne(wrapperss.eq("id", stepId)); |
| | | if (sg.getGxStepNum().equals("01")) { |
| | | sgReportVO.setGxDeviceId(deviceId); |
| | | sgReportVO.setGxStepId(sg.getId()); |
| | | sgReportVO.setProframId(sgProgressReportMapper.selectProframId(deviceId)); |
| | | }else { |
| | | throw new ServiceException("第一工序未进行审批!"); |
| | | } |
| | | |
| | | } |
| | | sgReportVO.setProframId(sgProgressReportMapper.selectProframId(deviceId)); |
| | | sgReportVO.setGxStepId(sgGxStepMapper.queryStepList(deviceId.toString()).get(0).getId()); |
| | | sgReportVO.setGxDeviceId(deviceId); |
| | | } |
| | | } |
| | | |
| | | |
| | | return sgReportVO; |
| | | } |
| | | } |
| | | |