| 
					
				 | 
			
			
				@@ -763,6 +763,131 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return results; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 查询采购需求列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param pmDemandReqVo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 采购需求 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public List<PmDemandResVo> selectPmDemandListDe(PmDemandReqVo pmDemandReqVo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<PmDemand> lw = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<PmAuditDeptRef> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LambdaQueryWrapper<PmAuditDeptRef> l = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l.eq(PmAuditDeptRef::getDeptId, SecurityUtils.getDeptId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        l.eq(PmAuditDeptRef::getRefType, "2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        list = pmAuditDeptRefService.list(l); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!pmDemandReqVo.getIsAdmin()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!ObjectUtils.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lw.in(PmDemand::getDemandId, list.stream().map(PmAuditDeptRef::getRefId).collect(Collectors.toSet())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!StringUtils.isBlank(pmDemandReqVo.getProjectName())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.like(PmDemand::getProjectName, "%" + pmDemandReqVo.getProjectName() + "%"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!StringUtils.isBlank(pmDemandReqVo.getPurchaseServices())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.eq(PmDemand::getPurchaseServices, pmDemandReqVo.getPurchaseServices()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getProjectStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.eq(PmDemand::getProjectStatus, pmDemandReqVo.getProjectStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getWarnStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.eq(PmDemand::getWarnStatus, pmDemandReqVo.getWarnStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!ObjectUtils.isEmpty(pmDemandReqVo.getIsExcess())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.eq(PmDemand::getIsExcess, pmDemandReqVo.getIsExcess()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!StringUtils.isBlank(pmDemandReqVo.getBeginDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.apply("(plan_demand_sub_time >= '" + pmDemandReqVo.getBeginDate() + "' or plan_purchase_finish_time >= '" + pmDemandReqVo.getBeginDate() + "' or plan_deliver_time >=  '" + pmDemandReqVo.getBeginDate() + "' )"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!StringUtils.isBlank(pmDemandReqVo.getEndDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            lw.apply("(plan_demand_sub_time <= '" + pmDemandReqVo.getEndDate() + "' or plan_purchase_finish_time <= '" + pmDemandReqVo.getEndDate() + "' or plan_deliver_time <=  '" + pmDemandReqVo.getEndDate() + "' )"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lw.apply("(project_status >=6 )"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lw.last(" order by project_status, plan_demand_sub_time"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<PmDemand> demandList = pmDemandMapper.selectList(lw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<PmDemandResVo> pmDemandResVosTwo = new LinkedList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!ObjectUtils.isEmpty(demandList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<PmDemandResVo> pmDemandResVos = demandChangeTo(demandList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (PmDemandResVo vo : pmDemandResVos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 根据项目id 和 部门id 和 参数类型 获取 部门级别 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<PmAuditDeptRef> collect = list.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .filter(o -> o.getRefId().equals(vo.getDemandId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!ObjectUtils.isEmpty(collect)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String deptLevel = collect.get(0).getDeptLevel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 根据项目id  和 参数类型 获取 所有审核数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    LambdaQueryWrapper<PmAuditDeptRef> ll = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ll.eq(PmAuditDeptRef::getRefId, vo.getDemandId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ll.eq(PmAuditDeptRef::getRefType, "2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<PmAuditDeptRef> listl = pmAuditDeptRefService.list(l); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 判断当前用户是否有审核权限 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    boolean flay = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<PmAuditDeptRef> collect1 = listl.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .filter(pmAuditDeptRef -> pmAuditDeptRef.getRefId().equals(vo.getDemandId())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (PmAuditDeptRef pmAuditDeptRef : collect1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (pmAuditDeptRef.getDeptLevel().compareTo(deptLevel) > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                && pmAuditDeptRef.getStatus().equals(Integer.parseInt("0"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            flay = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else if (pmAuditDeptRef.getDeptLevel().compareTo(deptLevel) == 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                && pmAuditDeptRef.getStatus().equals(Integer.parseInt("1"))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            flay = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    vo.setFlay(flay); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (flay == true || vo.getPurchaseDeptId().equals(SecurityUtils.getDeptId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        LambdaQueryWrapper<PmExpertFeedback> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedback::getDemandId, vo.getDemandId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PmExpertFeedback pmExpertFeedback = this.pmExpertFeedbackService.getOne(pmExpertFeedbackLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (pmExpertFeedback != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            vo.setProjectNumber(pmExpertFeedback.getProjectNumber()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            vo.setDocumentReviewTime(pmExpertFeedback.getDocumentReviewTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        LambdaQueryWrapper<PmProcurementDocumentsReview> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReview::getDemandId, vo.getDemandId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PmProcurementDocumentsReview pmProcurementDocumentsReview = this.pmProcurementDocumentsReviewService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (pmProcurementDocumentsReview != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            vo.setProcurementOfficeApprovalTime(pmProcurementDocumentsReview.getProcurementOfficeApprovalTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (Integer.parseInt(vo.getProjectStatus()) > 12 && Integer.parseInt(vo.getProjectStatus()) != 18) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            LambdaQueryWrapper<PmReleaseAnnouncement> pmReleaseAnnouncementLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pmReleaseAnnouncementLambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId, vo.getDemandId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    .orderByDesc(PmReleaseAnnouncement::getReleaseTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    .last(" limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            PmReleaseAnnouncement pmReleaseAnnouncement = this.pmReleaseAnnouncementService.getOne(pmReleaseAnnouncementLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (pmReleaseAnnouncement != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                vo.setAnnouncementReleaseTime(pmReleaseAnnouncement.getReleaseTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                vo.setTenderOpenTime(pmReleaseAnnouncement.getTenderOpenTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (Integer.parseInt(vo.getProjectStatus()) > 15 && Integer.parseInt(vo.getProjectStatus()) != 16 && Integer.parseInt(vo.getProjectStatus()) != 18) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId, vo.getDemandId()).eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    .orderByDesc(PmBidWinning::getBidAnnouncementTime) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    .last(" limit 1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            PmBidWinning pmBidWinning = this.pmBidWinningService.getOne(pmBidWinningLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (pmBidWinning != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                vo.setBidAnnouncementTime(pmBidWinning.getBidAnnouncementTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        pmDemandResVosTwo.add(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return pmDemandResVosTwo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 需求建档 
			 |