| 
					
				 | 
			
			
				@@ -7,6 +7,7 @@ import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1106,17 +1107,41 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public boolean insertPmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Long> pmBidOpeningIdList = pmBidWinningReqVo.getPmBidOpeningIdList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new Exception("中标金额不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ObjectUtils.isEmpty(pmBidOpeningIdList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Exception("中标单位信息列表不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Exception("上传附件不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new Exception("中标金额不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         PmBidWinning pmBidWinning = new PmBidWinning(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BeanUtils.copyProperties(pmBidWinningReqVo, pmBidWinning); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //修改老的中标信息状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(ObjectUtils.isEmpty(pmBidWinningReqVo.getId())){ //属于新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,pmBidWinningReqVo.getDemandId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(pmBidWinningLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!ObjectUtils.isEmpty(pmBidWinninglist)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(PmBidWinning item : pmBidWinninglist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .eq(PmBidWinning::getId,item.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    pmBidWinningService.update(updateWrapper1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .eq(PmBidWinningOpeningRef::getWinningId,item.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    pmBidWinningOpeningRefService.update(updateWrapper2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (pmBidWinningService.saveOrUpdate(pmBidWinning)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (Long pmBidOpeningId : pmBidOpeningIdList) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1136,6 +1161,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (pmBidWinningOpeningRefService.saveOrUpdateBatch(pmBidWinningOpeningRefList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(), pmBidWinningReqVo.getSysFileRefs(), pmBidWinningReqVo.getUpdateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 PmDemand pmDemandUpdate = new PmDemand(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1161,53 +1187,79 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ObjectUtils.isEmpty(pmBidOpeningIdList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Exception("中标单位信息列表不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new Exception("上传附件不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Exception("中标金额不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new Exception("上传附件不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        PmBidWinning pmBidWinning = pmBidWinningService.getOne(lw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (pmBidWinning == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId()).eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(lw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtils.isEmpty(pmBidWinninglist)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Exception("原中标信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //修改老的状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(PmBidWinning item : pmBidWinninglist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(PmBidWinning::getId,item.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pmBidWinningService.update(updateWrapper1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(PmBidWinningOpeningRef::getWinningId,item.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pmBidWinningOpeningRefService.update(updateWrapper2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //新增 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PmBidWinning pmBidWinning = new PmBidWinning(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        BeanUtils.copyProperties(pmBidWinninglist.get(0),pmBidWinning); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pmBidWinning.setBidWinningAmount(pmBidWinningReqVo.getBidWinningAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pmBidWinning.setStatus(BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pmBidWinning.setUpdateBy(pmBidWinningReqVo.getUpdateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pmBidWinning.setUpdateTime(pmBidWinningReqVo.getUpdateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (pmBidWinningService.updateById(pmBidWinning)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //删除老的: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            QueryWrapper<PmBidWinningOpeningRef> queryWrapper = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            queryWrapper.lambda().eq(PmBidWinningOpeningRef::getWinningId, pmBidWinning.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            pmBidWinningOpeningRefService.remove(queryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //添加新的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (pmBidWinningService.save(pmBidWinning)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (Long pmBidOpeningId : pmBidOpeningIdList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 PmBidWinningOpeningRef pmBidWinningOpeningRef = new PmBidWinningOpeningRef(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setOpeningId(pmBidOpeningId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setWinningId(pmBidWinning.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pmBidWinningOpeningRef.setStatus(BidWinningStatus.NORMAL.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setCreateBy(pmBidWinningReqVo.getCreateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setCreateTime(pmBidWinningReqVo.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setUpdateBy(pmBidWinningReqVo.getUpdateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRef.setUpdateTime(pmBidWinningReqVo.getUpdateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LambdaQueryWrapper<SysFileRef> sysFileRefLambdaQueryWrapper = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sysFileRefLambdaQueryWrapper.eq(SysFileRef::getType,SysFileRefEnum.PM_BID_WINNING_FILE.getType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(SysFileRef::getRedId,pmBidWinninglist.get(0)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<SysFileRef> sysFileRefs = sysFileRefService.list(sysFileRefLambdaQueryWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(), sysFileRefs, pmBidWinningReqVo.getUpdateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return pmBidWinningOpeningRefService.saveBatch(pmBidWinningOpeningRefList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 流标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param pmBidFailureReqVo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public boolean insertPmBidFailure(PmBidFailureReqVo pmBidFailureReqVo) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         PmBidFailure pmBidFailure = new PmBidFailure(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BeanUtils.copyProperties(pmBidFailureReqVo, pmBidFailure); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (pmBidFailureService.saveOrUpdate(pmBidFailure)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             uploadFile(pmBidFailure.getId(), SysFileRefEnum.PM_BID_FAILURE_FILE.getType(), pmBidFailureReqVo.getSysFileRefs(), pmBidFailureReqVo.getUpdateBy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             PmDemand pmDemandUpdate = new PmDemand(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pmDemandUpdate.setDemandId(pmBidFailureReqVo.getDemandId()); 
			 |