suntianwu %!s(int64=2) %!d(string=hai) anos
pai
achega
25d73c78a5

+ 352 - 32
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandHisServiceImpl.java

@@ -13,7 +13,10 @@ import com.ozs.pm.doman.vo.responseVo.*;
 import com.ozs.pm.mapper.PmDemandHisMapper;
 import com.ozs.pm.service.*;
 import com.ozs.system.domain.SysFileInfo;
+import com.ozs.system.domain.SysFileRef;
 import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
+import com.ozs.system.service.SysFileRefService;
+import com.ozs.system.service.SysFileService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -21,6 +24,7 @@ import org.springframework.util.ObjectUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -31,6 +35,32 @@ import java.util.List;
  */
 @Service
 public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDemandHis> implements PmDemandHisService {
+    @Autowired
+    private IPmDemandService iPmDemandService;
+    @Autowired
+    private SysFileRefService sysFileRefService;
+
+    @Autowired
+    private PmBidFailureService pmBidFailureService;
+    @Autowired
+    private PmBidOpeningService pmBidOpeningService;
+    @Autowired
+    private PmBidWinningService pmBidWinningService;
+    @Autowired
+    private PmBidWinningOpeningRefService pmBidWinningOpeningRefService;
+    @Autowired
+    private PmBookBuildingService pmBookBuildingService;
+    @Autowired
+    private PmCallQuestionService pmCallQuestionService;
+    @Autowired
+    private PmDemandExpertRefService pmDemandExpertRefService;
+    @Autowired
+    private PmExpertFeedbackService pmExpertFeedbackService;
+    @Autowired
+    private PmProcurementDocumentsReviewService pmProcurementDocumentsReviewService;
+    @Autowired
+    private PmReleaseAnnouncementService pmReleaseAnnouncementService;
+
     @Autowired
     private PmBidFailureHisService pmBidFailureHisService;
     @Autowired
@@ -53,7 +83,6 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
     private PmProcurementDocumentsReviewHisService pmProcurementDocumentsReviewHisService;
     @Autowired
     private PmReleaseAnnouncementHisService pmReleaseAnnouncementHisService;
-
     /**
      * 流废标退回
      * @param demandId
@@ -64,37 +93,319 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean returnBidFailure(Long demandId,String updateBy) throws Exception {
-//        PmDemand pmDemand = this.getById(demandId);
-//        if(ObjectUtils.isEmpty(pmDemand)){
-//            throw new Exception("参数错误");
-//        }
-//        //把相关表数据存入历史表,清空相关表数据
-//        PmDemandHis pmDemandHis = new PmDemandHis();
-//        BeanUtils.copyProperties(pmDemand,pmDemandHis);
-//
-//        LambdaQueryWrapper<PmDemandHis> pmDemandHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
-//        pmDemandHisLambdaQueryWrapper.eq(PmDemandHis::getDemandId,demandId)
-//                .orderByDesc(PmDemandHis::getReturnOrderNumber).last(" limit 1");
-//        PmDemandHis pmDemandHisDb= this.pmDemandHisService.getOne(pmDemandHisLambdaQueryWrapper);
-//        if(pmDemandHisDb != null){
-//            pmDemandHis.setReturnOrderNumber(pmDemandHisDb.getReturnOrderNumber() + 1);
-//        } else {
-//            pmDemandHis.setReturnOrderNumber(1);
-//        }
-//        if(this.pmDemandHisService.save(pmDemandHis)){
-//            UpdateWrapper<PmDemand> pmDemandUpdateWrapper = new UpdateWrapper<>();
-//            pmDemandUpdateWrapper.lambda()
-//                    .set(PmDemand::getAgencyId,null)
-//                    .set(PmDemand::getExtractAgencyTime,null)
-//                    .set(PmDemand::getPurchaseTaskDocumentNumber,null)
-//                    .set(PmDemand::getTaskReleaseTime,null)
-//                    .set(PmDemand::getHasExpert,0)
-//                    .set(PmDemand::getProjectStatus,PmProjectStatus.WASTE_BID_RETURN.getCode())
-//                    .set(PmDemand::getUpdateBy,updateBy)
-//                    .set(PmDemand::getUpdateTime,new Date())
-//                    .eq(PmDemand::getDemandId,demandId);
-//            this.update(pmDemandUpdateWrapper);
-//        }
+        PmDemand pmDemand = iPmDemandService.getById(demandId);
+        if(ObjectUtils.isEmpty(pmDemand)){
+            throw new Exception("参数错误");
+        }
+        //把相关表数据存入历史表,清空相关表数据
+
+        //1需求建档表
+        LambdaQueryWrapper<PmBookBuilding> pmBookBuildingLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmBookBuildingLambdaQueryWrapper.eq(PmBookBuilding::getDemandId,demandId);
+        PmBookBuilding pmBookBuildingDb = this.pmBookBuildingService.getOne(pmBookBuildingLambdaQueryWrapper);
+        if(pmBookBuildingDb != null) {
+            PmBookBuildingHis pmBookBuildingHis = new PmBookBuildingHis();
+            BeanUtils.copyProperties(pmBookBuildingDb,pmBookBuildingHis);
+
+            LambdaQueryWrapper<PmBookBuildingHis> pmBookBuildingHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBookBuildingHisLambdaQueryWrapper.eq(PmBookBuildingHis::getDemandId,demandId)
+                    .orderByDesc(PmBookBuildingHis::getReturnOrderNumber).last(" limit 1");
+            PmBookBuildingHis pmBookBuildingHisDb = this.pmBookBuildingHisService.getOne(pmBookBuildingHisLambdaQueryWrapper);
+            if(pmBookBuildingHisDb != null){
+                pmBookBuildingHis.setReturnOrderNumber(pmBookBuildingHisDb.getReturnOrderNumber() + 1);
+            } else {
+                pmBookBuildingHis.setReturnOrderNumber(1);
+            }
+            if(this.pmBookBuildingHisService.save(pmBookBuildingHis)){
+                //文件
+                List<SysFileRef> fileRefs = getSysFileRefList(pmBookBuildingDb.getId(), SysFileRefEnum.PM_BOOK_BUILDING.getType());
+                if (!ObjectUtils.isEmpty(fileRefs)) {
+                    for (SysFileRef sysFileRef : fileRefs) {
+                        sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BOOK_BUILDING.getType() + "" + pmBookBuildingHis.getReturnOrderNumber()));
+                    }
+                    sysFileRefService.updateBatchById(fileRefs);
+                }
+                this.pmBookBuildingService.removeById(pmBookBuildingDb.getId());
+            }
+
+        }
+
+        //2专家意见反馈表
+        LambdaQueryWrapper<PmExpertFeedback> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedback::getDemandId,demandId);
+        PmExpertFeedback pmExpertFeedbackDb = this.pmExpertFeedbackService.getOne(pmExpertFeedbackLambdaQueryWrapper);
+        if(pmExpertFeedbackDb != null) {
+            PmExpertFeedbackHis pmExpertFeedbackHis = new PmExpertFeedbackHis();
+            BeanUtils.copyProperties(pmExpertFeedbackDb,pmExpertFeedbackHis);
+
+            LambdaQueryWrapper<PmExpertFeedbackHis> pmExpertFeedbackHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmExpertFeedbackHisLambdaQueryWrapper.eq(PmExpertFeedbackHis::getDemandId,demandId)
+                    .orderByDesc(PmExpertFeedbackHis::getReturnOrderNumber).last(" limit 1");
+            PmExpertFeedbackHis pmExpertFeedbackHisDb = this.pmExpertFeedbackHisService.getOne(pmExpertFeedbackHisLambdaQueryWrapper);
+            if(pmExpertFeedbackHisDb != null){
+                pmExpertFeedbackHis.setReturnOrderNumber(pmExpertFeedbackHisDb.getReturnOrderNumber() + 1);
+            } else {
+                pmExpertFeedbackHis.setReturnOrderNumber(1);
+            }
+            if(this.pmExpertFeedbackHisService.save(pmExpertFeedbackHis)){
+                //文件
+                List<SysFileRef> fileRefs = getSysFileRefList(pmExpertFeedbackDb.getId(), SysFileRefEnum.PM_EXPERT_FEEDBACK.getType());
+                if (!ObjectUtils.isEmpty(fileRefs)) {
+                    for (SysFileRef sysFileRef : fileRefs) {
+                        sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_EXPERT_FEEDBACK.getType() + "" + pmExpertFeedbackHis.getReturnOrderNumber()));
+                    }
+                    sysFileRefService.updateBatchById(fileRefs);
+                }
+                this.pmExpertFeedbackService.removeById(pmExpertFeedbackDb.getId());
+            }
+
+        }
+
+        //3采购文件编制审核表
+        LambdaQueryWrapper<PmProcurementDocumentsReview> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReview::getDemandId,demandId);
+        PmProcurementDocumentsReview pmProcurementDocumentsReviewDb = this.pmProcurementDocumentsReviewService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper);
+        if(pmProcurementDocumentsReviewDb != null) {
+            PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHis = new PmProcurementDocumentsReviewHis();
+            BeanUtils.copyProperties(pmProcurementDocumentsReviewDb,pmProcurementDocumentsReviewHis);
+
+            LambdaQueryWrapper<PmProcurementDocumentsReviewHis> pmProcurementDocumentsReviewHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmProcurementDocumentsReviewHisLambdaQueryWrapper.eq(PmProcurementDocumentsReviewHis::getDemandId,demandId)
+                    .orderByDesc(PmProcurementDocumentsReviewHis::getReturnOrderNumber).last(" limit 1");
+            PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHisDb = this.pmProcurementDocumentsReviewHisService.getOne(pmProcurementDocumentsReviewHisLambdaQueryWrapper);
+            if(pmProcurementDocumentsReviewHisDb != null){
+                pmProcurementDocumentsReviewHis.setReturnOrderNumber(pmProcurementDocumentsReviewHisDb.getReturnOrderNumber() + 1);
+            } else {
+                pmProcurementDocumentsReviewHis.setReturnOrderNumber(1);
+            }
+            if(this.pmProcurementDocumentsReviewHisService.save(pmProcurementDocumentsReviewHis)){
+                //文件
+                List<SysFileRef> fileRefs = getSysFileRefList(pmProcurementDocumentsReviewDb.getId(), SysFileRefEnum.PM_BID_FILE.getType());
+                if (!ObjectUtils.isEmpty(fileRefs)) {
+                    for (SysFileRef sysFileRef : fileRefs) {
+                        sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_FILE.getType() + "" + pmProcurementDocumentsReviewHis.getReturnOrderNumber()));
+                    }
+                    sysFileRefService.updateBatchById(fileRefs);
+                }
+
+                this.pmProcurementDocumentsReviewService.removeById(pmProcurementDocumentsReviewDb.getId());
+            }
+
+        }
+
+        //4发布公告表
+        LambdaQueryWrapper<PmReleaseAnnouncement> pmReleaseAnnouncementLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmReleaseAnnouncementLambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId,demandId);
+        List<PmReleaseAnnouncement> pmReleaseAnnouncementDbList = this.pmReleaseAnnouncementService.list(pmReleaseAnnouncementLambdaQueryWrapper);
+        if(!ObjectUtils.isEmpty(pmReleaseAnnouncementDbList)) {
+
+            LambdaQueryWrapper<PmReleaseAnnouncementHis> pmReleaseAnnouncementHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmReleaseAnnouncementHisLambdaQueryWrapper.eq(PmReleaseAnnouncementHis::getDemandId,demandId)
+                    .orderByDesc(PmReleaseAnnouncementHis::getReturnOrderNumber).last(" limit 1");
+            PmReleaseAnnouncementHis pmReleaseAnnouncementHisDb = this.pmReleaseAnnouncementHisService.getOne(pmReleaseAnnouncementHisLambdaQueryWrapper);
+
+            for(PmReleaseAnnouncement pmReleaseAnnouncementDb : pmReleaseAnnouncementDbList) {
+                PmReleaseAnnouncementHis pmReleaseAnnouncementHis = new PmReleaseAnnouncementHis();
+                BeanUtils.copyProperties(pmReleaseAnnouncementDb,pmReleaseAnnouncementHis);
+
+                if(pmReleaseAnnouncementHisDb != null){
+                    pmReleaseAnnouncementHis.setReturnOrderNumber(pmReleaseAnnouncementHisDb.getReturnOrderNumber() + 1);
+                } else {
+                    pmReleaseAnnouncementHis.setReturnOrderNumber(1);
+                }
+                if(this.pmReleaseAnnouncementHisService.save(pmReleaseAnnouncementHis)){
+                    //文件
+                    List<SysFileRef> fileRefs = getSysFileRefList(pmReleaseAnnouncementDb.getId(), SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType());
+                    if (!ObjectUtils.isEmpty(fileRefs)) {
+                        for (SysFileRef sysFileRef : fileRefs) {
+                            sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType() + "" + pmReleaseAnnouncementHis.getReturnOrderNumber()));
+                        }
+                        sysFileRefService.updateBatchById(fileRefs);
+                    }
+                    this.pmReleaseAnnouncementService.removeById(pmReleaseAnnouncementDb.getId());
+                }
+            }
+        }
+
+         //5质疑表
+        LambdaQueryWrapper<PmCallQuestion> pmCallQuestionLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmCallQuestionLambdaQueryWrapper.eq(PmCallQuestion::getDemandId,demandId);
+        List<PmCallQuestion> pmCallQuestionDbList = this.pmCallQuestionService.list(pmCallQuestionLambdaQueryWrapper);
+        if(!ObjectUtils.isEmpty(pmCallQuestionDbList)) {
+            LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmCallQuestionHisLambdaQueryWrapper.eq(PmCallQuestionHis::getDemandId,demandId)
+                    .orderByDesc(PmCallQuestionHis::getReturnOrderNumber).last(" limit 1");
+            PmCallQuestionHis pmCallQuestionHisDb = this.pmCallQuestionHisService.getOne(pmCallQuestionHisLambdaQueryWrapper);
+
+            for(PmCallQuestion pmCallQuestionDb : pmCallQuestionDbList) {
+                PmCallQuestionHis pmCallQuestionHis = new PmCallQuestionHis();
+                BeanUtils.copyProperties(pmCallQuestionDb,pmCallQuestionHis);
+
+                if(pmCallQuestionHisDb != null){
+                    pmCallQuestionHis.setReturnOrderNumber(pmCallQuestionHisDb.getReturnOrderNumber() + 1);
+                } else {
+                    pmCallQuestionHis.setReturnOrderNumber(1);
+                }
+                if(this.pmCallQuestionHisService.save(pmCallQuestionHis)){
+                    String type = pmCallQuestionDb.getType();
+                    Integer sysFileRefType = null;
+                    if("0".equals(type)){
+                        sysFileRefType = SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType();
+                    } else {
+                        sysFileRefType = SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType();
+                    }
+
+                    //文件
+                    List<SysFileRef> fileRefs = getSysFileRefList(pmCallQuestionDb.getId(), sysFileRefType);
+                    if (!ObjectUtils.isEmpty(fileRefs)) {
+                        for (SysFileRef sysFileRef : fileRefs) {
+                            sysFileRef.setType(Integer.parseInt(sysFileRefType + "" + pmCallQuestionHis.getReturnOrderNumber()));
+                        }
+                        sysFileRefService.updateBatchById(fileRefs);
+                    }
+                    this.pmCallQuestionService.removeById(pmCallQuestionDb.getId());
+                }
+            }
+        }
+
+        //6项目专家关联表
+        LambdaQueryWrapper<PmDemandExpertRef> pmDemandExpertRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmDemandExpertRefLambdaQueryWrapper.eq(PmDemandExpertRef::getDemandId,demandId);
+        List<PmDemandExpertRef> pmDemandExpertRefDbList = this.pmDemandExpertRefService.list(pmDemandExpertRefLambdaQueryWrapper);
+        if(!ObjectUtils.isEmpty(pmDemandExpertRefDbList)) {
+
+            LambdaQueryWrapper<PmDemandExpertRefHis> pmDemandExpertRefHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmDemandExpertRefHisLambdaQueryWrapper.eq(PmDemandExpertRefHis::getDemandId,demandId)
+                    .orderByDesc(PmDemandExpertRefHis::getReturnOrderNumber).last(" limit 1");
+            PmDemandExpertRefHis pmDemandExpertRefHisDb = this.pmDemandExpertRefHisService.getOne(pmDemandExpertRefHisLambdaQueryWrapper);
+
+            for(PmDemandExpertRef pmDemandExpertRefDb : pmDemandExpertRefDbList) {
+                PmDemandExpertRefHis pmDemandExpertRefHis = new PmDemandExpertRefHis();
+                BeanUtils.copyProperties(pmDemandExpertRefDb,pmDemandExpertRefHis);
+
+                if(pmDemandExpertRefHisDb != null){
+                    pmDemandExpertRefHis.setReturnOrderNumber(pmDemandExpertRefHisDb.getReturnOrderNumber() + 1);
+                } else {
+                    pmDemandExpertRefHis.setReturnOrderNumber(1);
+                }
+                if(this.pmDemandExpertRefHisService.save(pmDemandExpertRefHis)){
+                    this.pmDemandExpertRefService.removeById(pmDemandExpertRefDb.getId());
+                }
+            }
+        }
+
+        //6开标信息表
+        LambdaQueryWrapper<PmBidOpening> pmBidOpeningLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmBidOpeningLambdaQueryWrapper.eq(PmBidOpening::getDemandId,demandId);
+        List<PmBidOpening> pmBidOpeningDbList = this.pmBidOpeningService.list(pmBidOpeningLambdaQueryWrapper);
+        if(!ObjectUtils.isEmpty(pmBidOpeningDbList)) {
+            LambdaQueryWrapper<PmBidOpeningHis> pmBidOpeningHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBidOpeningHisLambdaQueryWrapper.eq(PmBidOpeningHis::getDemandId,demandId)
+                    .orderByDesc(PmBidOpeningHis::getReturnOrderNumber).last(" limit 1");
+            PmBidOpeningHis pmBidOpeningHisDb = this.pmBidOpeningHisService.getOne(pmBidOpeningHisLambdaQueryWrapper);
+
+            for(PmBidOpening pmBidOpeningDb : pmBidOpeningDbList) {
+                PmBidOpeningHis pmBidOpeningHis = new PmBidOpeningHis();
+                BeanUtils.copyProperties(pmBidOpeningDb,pmBidOpeningHis);
+
+                if(pmBidOpeningHisDb != null){
+                    pmBidOpeningHis.setReturnOrderNumber(pmBidOpeningHisDb.getReturnOrderNumber() + 1);
+                } else {
+                    pmBidOpeningHis.setReturnOrderNumber(1);
+                }
+                if(this.pmBidOpeningHisService.save(pmBidOpeningHis)){
+                    this.pmBidOpeningService.removeById(pmBidOpeningDb.getId());
+                }
+            }
+        }
+
+        //7中标基本情况表
+        LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,demandId);
+        List<PmBidWinning> pmBidWinningDbList = this.pmBidWinningService.list(pmBidWinningLambdaQueryWrapper);
+        if(!ObjectUtils.isEmpty(pmBidWinningDbList)) {
+            LambdaQueryWrapper<PmBidWinningHis> pmBidWinningHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBidWinningHisLambdaQueryWrapper.eq(PmBidWinningHis::getDemandId,demandId)
+                    .orderByDesc(PmBidWinningHis::getReturnOrderNumber).last(" limit 1");
+            PmBidWinningHis pmBidWinningHisDb = this.pmBidWinningHisService.getOne(pmBidWinningHisLambdaQueryWrapper);
+
+            for(PmBidWinning pmBidWinningDb : pmBidWinningDbList) {
+                PmBidWinningHis pmBidWinningHis = new PmBidWinningHis();
+                BeanUtils.copyProperties(pmBidWinningDb,pmBidWinningHis);
+
+                if(pmBidWinningHisDb != null){
+                    pmBidWinningHis.setReturnOrderNumber(pmBidWinningHisDb.getReturnOrderNumber() + 1);
+                } else {
+                    pmBidWinningHis.setReturnOrderNumber(1);
+                }
+                if(this.pmBidWinningHisService.save(pmBidWinningHis)){
+                    //文件
+                    List<SysFileRef> fileRefs = getSysFileRefList(pmBidWinningDb.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType());
+                    if (!ObjectUtils.isEmpty(fileRefs)) {
+                        for (SysFileRef sysFileRef : fileRefs) {
+                            sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_FILE.getType() + "" + pmBidWinningHis.getReturnOrderNumber()));
+                        }
+                        sysFileRefService.updateBatchById(fileRefs);
+                    }
+
+                    //8中标开标关联表
+                    LambdaQueryWrapper<PmBidWinningOpeningRef> pmBidWinningOpeningRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    pmBidWinningOpeningRefLambdaQueryWrapper.eq(PmBidWinningOpeningRef::getWinningId,pmBidWinningDb.getId());
+                    List<PmBidWinningOpeningRef> pmBidWinningOpeningRefDbList = this.pmBidWinningOpeningRefService.list(pmBidWinningOpeningRefLambdaQueryWrapper);
+                    if(!ObjectUtils.isEmpty(pmBidWinningOpeningRefDbList)) {
+                        LambdaQueryWrapper<PmBidWinningOpeningRefHis> pmBidWinningOpeningRefHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                        pmBidWinningOpeningRefHisLambdaQueryWrapper.eq(PmBidWinningOpeningRefHis::getWinningId,demandId)
+                                .orderByDesc(PmBidWinningOpeningRefHis::getReturnOrderNumber).last(" limit 1");
+                        PmBidWinningOpeningRefHis pmBidWinningOpeningRefHisDb = this.pmBidWinningOpeningRefHisService.getOne(pmBidWinningOpeningRefHisLambdaQueryWrapper);
+
+                        for(PmBidWinningOpeningRef pmBidWinningOpeningRefDb : pmBidWinningOpeningRefDbList) {
+                            PmBidWinningOpeningRefHis pmBidWinningOpeningRefHis = new PmBidWinningOpeningRefHis();
+                            BeanUtils.copyProperties(pmBidWinningOpeningRefDb,pmBidWinningOpeningRefHis);
+
+                            if(pmBidWinningOpeningRefHisDb != null){
+                                pmBidWinningOpeningRefHis.setReturnOrderNumber(pmBidWinningOpeningRefHisDb.getReturnOrderNumber() + 1);
+                            } else {
+                                pmBidWinningOpeningRefHis.setReturnOrderNumber(1);
+                            }
+                            if(this.pmBidWinningOpeningRefHisService.save(pmBidWinningOpeningRefHis)){
+                                this.pmBidWinningOpeningRefService.removeById(pmBidWinningOpeningRefDb.getId());
+                            }
+                        }
+                    }
+
+                    this.pmBidWinningService.removeById(pmBidWinningDb.getId());
+                }
+            }
+        }
+
+
+
+        PmDemandHis pmDemandHis = new PmDemandHis();
+        BeanUtils.copyProperties(pmDemand,pmDemandHis);
+
+        LambdaQueryWrapper<PmDemandHis> pmDemandHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmDemandHisLambdaQueryWrapper.eq(PmDemandHis::getDemandId,demandId)
+                .orderByDesc(PmDemandHis::getReturnOrderNumber).last(" limit 1");
+        PmDemandHis pmDemandHisDb= this.pmDemandHisService.getOne(pmDemandHisLambdaQueryWrapper);
+        if(pmDemandHisDb != null){
+            pmDemandHis.setReturnOrderNumber(pmDemandHisDb.getReturnOrderNumber() + 1);
+        } else {
+            pmDemandHis.setReturnOrderNumber(1);
+        }
+        if(this.pmDemandHisService.save(pmDemandHis)){
+            UpdateWrapper<PmDemand> pmDemandUpdateWrapper = new UpdateWrapper<>();
+            pmDemandUpdateWrapper.lambda()
+                    .set(PmDemand::getAgencyId,null)
+                    .set(PmDemand::getExtractAgencyTime,null)
+                    .set(PmDemand::getPurchaseTaskDocumentNumber,null)
+                    .set(PmDemand::getTaskReleaseTime,null)
+                    .set(PmDemand::getHasExpert,0)
+                    .set(PmDemand::getProjectStatus,PmProjectStatus.WASTE_BID_RETURN.getCode())
+                    .set(PmDemand::getUpdateBy,updateBy)
+                    .set(PmDemand::getUpdateTime,new Date())
+                    .eq(PmDemand::getDemandId,demandId);
+            iPmDemandService.update(pmDemandUpdateWrapper);
+        }
 
         return true;
     }
@@ -109,4 +420,13 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
     public PmDemandResVo selectPmDemandHisByDemandId(Long demandId, String detailType,Integer returnOrderNumber) {
         return null;
     }
+
+    private List<SysFileRef> getSysFileRefList(Long redId, Integer type) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("red_id", redId);
+        map.put("type", type);
+        List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
+        return fileRefs;
+    }
+
 }