Explorar el Código

Merge remote-tracking branch 'origin/master'

buzhanyi hace 2 años
padre
commit
6f07e40a09
Se han modificado 19 ficheros con 489 adiciones y 99 borrados
  1. 55 15
      purchase-admin/src/main/java/com/ozs/web/controller/pm/PmPurchaseExecutionController.java
  2. 2 1
      purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java
  3. 80 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmCallQuestion.java
  4. 2 19
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemand.java
  5. 5 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmCallQuestionReqVo.java
  6. 0 5
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidFailureResVo.java
  7. 0 6
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidWinningResVo.java
  8. 56 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmCallQuestionResVo.java
  9. 29 18
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmDemandResVo.java
  10. 7 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmExpertFeedbackResVo.java
  11. 20 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmPreBidCallQuestionResVo.java
  12. 7 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmProcurementDocumentsReviewResVo.java
  13. 42 12
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmPurchaseExecutionResVo.java
  14. 0 5
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmReleaseAnnouncementResVo.java
  15. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmCallQuestionMapper.java
  16. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmCallQuestionService.java
  17. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmCallQuestionServiceImpl.java
  18. 131 18
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java
  19. 6 0
      purchase-system/src/main/resources/mapper/pm/PmCallQuestionMapper.xml

+ 55 - 15
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmPurchaseExecutionController.java

@@ -63,9 +63,10 @@ public class PmPurchaseExecutionController extends BaseController {
     private PmExpertFeedbackService pmExpertFeedbackService;
     @Autowired
     private PmProcurementDocumentsReviewService pmProcurementDocumentsReviewService;
-
     @Autowired
     private PmBidFailureService pmBidFailureService;
+    @Autowired
+    private PmCallQuestionService pmCallQuestionService;
 
     /**
      * 采购执行查询列表
@@ -188,7 +189,7 @@ public class PmPurchaseExecutionController extends BaseController {
         PmExpertFeedback pmExpertFeedback = new PmExpertFeedback();
         BeanUtils.copyProperties(pmExpertFeedbackReqVo,pmExpertFeedback);
         if(pmExpertFeedbackService.save(pmExpertFeedback)){
-            pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_EXPERT_FEEDBACK.getType(),sysFileRefs,getUserId().toString());
+            pmDemandService.uploadFile(pmExpertFeedback.getId(), SysFileRefEnum.PM_EXPERT_FEEDBACK.getType(),sysFileRefs,getUserId().toString());
             PmDemand pmDemandUpdate = new PmDemand();
             pmDemandUpdate.setDemandId(demandId);
             pmDemandUpdate.setProjectStatus(PmProjectStatus.PROCUREMENT_DOCUMENTS_REVIEW.getCode());
@@ -223,7 +224,7 @@ public class PmPurchaseExecutionController extends BaseController {
         PmProcurementDocumentsReview pmProcurementDocumentsReview = new PmProcurementDocumentsReview();
         BeanUtils.copyProperties(pmProcurementDocumentsReviewReqVo,pmProcurementDocumentsReview);
         if(this.pmProcurementDocumentsReviewService.save(pmProcurementDocumentsReview)){
-            pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_FILE.getType(),sysFileRefs,getUserId().toString());
+            pmDemandService.uploadFile(pmProcurementDocumentsReview.getId(), SysFileRefEnum.PM_BID_FILE.getType(),sysFileRefs,getUserId().toString());
             PmDemand pmDemandUpdate = new PmDemand();
             pmDemandUpdate.setDemandId(demandId);
             pmDemandUpdate.setProjectStatus(PmProjectStatus.PROCUREMENT_ANNOUNCEMENT.getCode());
@@ -274,12 +275,16 @@ public class PmPurchaseExecutionController extends BaseController {
                 return error("参数错误");
             }
 
-            pmDemand.setPreBidCallQuestion(pmCallQuestionReqVo.getCallQuestion());
-            if("1".equals(pmDemand.getPreBidCallQuestion())) { //有质疑
-                pmDemand.setPreBidCallQuestionTime(pmCallQuestionReqVo.getCallQuestionTime());
-                List<SysFileRef> sysFileRefs = pmCallQuestionReqVo.getSysFileRefs();
-                pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType(),sysFileRefs,getUserId().toString());
-            }
+            PmCallQuestion pmCallQuestion = new PmCallQuestion();
+            BeanUtils.copyProperties(pmCallQuestionReqVo,pmCallQuestion);
+            pmCallQuestion.setType("0");
+           if(pmCallQuestionService.save(pmCallQuestion)) {
+               if("1".equals(pmCallQuestion.getCallQuestion())) { //有质疑
+                   List<SysFileRef> sysFileRefs = pmCallQuestionReqVo.getSysFileRefs();
+                   pmDemandService.uploadFile(pmCallQuestion.getId(), SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType(),sysFileRefs,getUserId().toString());
+               }
+           }
+
             pmDemand.setProjectStatus(PmProjectStatus.WAIT_OPEN_BID.getCode());
             pmDemand.setUpdateBy(getUserId().toString());
             pmDemand.setUpdateTime(new Date());
@@ -556,6 +561,35 @@ public class PmPurchaseExecutionController extends BaseController {
         }
     }
 
+    @ApiOperation(value = "流废标退回",notes = "采购需求ID必传")
+    @PostMapping("/returnBidFailure")
+    @PreAuthorize("@ss.hasPermi('pm:purchaseExecution:returnBidFailure')")
+    @Log(title = ModularConstans.purchaseExecution, businessType = BusinessType.UPDATE)
+    public AjaxResult returnBidFailure(@NotEmpty(message = "数据为空")
+                                         @RequestBody PmCallQuestionReqVo pmCallQuestionReqVo) {
+        try {
+            Long demandId = pmCallQuestionReqVo.getDemandId();
+            if(ObjectUtils.isEmpty(demandId)){
+                return error("参数错误");
+            }
+            PmDemand pmDemand = pmDemandService.getById(demandId);
+            if(ObjectUtils.isEmpty(pmDemand)){
+                return error("参数错误");
+            }
+            //TODO 把相关表数据存入历史表,清空相关表数据
+
+
+
+            pmDemand.setProjectStatus(PmProjectStatus.WASTE_BID_RETURN.getCode());
+            pmDemand.setUpdateBy(getUserId().toString());
+            pmDemand.setUpdateTime(new Date());
+            return toAjax(pmDemandService.updateById(pmDemand));
+
+        }  catch (Exception e) {
+            return error(e.getMessage());
+        }
+    }
+
     @ApiOperation(value = "标后质疑",notes = "采购需求ID必传")
     @PostMapping("/handleCallQuestion")
     @PreAuthorize("@ss.hasPermi('pm:purchaseExecution:handleCallQuestion')")
@@ -572,15 +606,21 @@ public class PmPurchaseExecutionController extends BaseController {
                 return error("参数错误");
             }
 
-            pmDemand.setCallQuestion(pmCallQuestionReqVo.getCallQuestion());
-            if("1".equals(pmDemand.getCallQuestion())) { //有质疑
+            PmCallQuestion pmCallQuestion = new PmCallQuestion();
+            BeanUtils.copyProperties(pmCallQuestionReqVo,pmCallQuestion);
+            pmCallQuestion.setType("1");
+            if("1".equals(pmCallQuestion.getCallQuestion())) { //有质疑
                 if (!ObjectUtils.isEmpty(pmCallQuestionReqVo.getCallQuestionTime())) {
-                    pmDemand.setCallQuestionTime(pmCallQuestionReqVo.getCallQuestionTime());
+                    pmCallQuestion.setCallQuestionTime(pmCallQuestionReqVo.getCallQuestionTime());
                 } else {
-                    pmDemand.setCallQuestionTime(new Date());
+                    pmCallQuestion.setCallQuestionTime(new Date());
+                }
+            }
+            if(pmCallQuestionService.save(pmCallQuestion)) {
+                if("1".equals(pmCallQuestion.getCallQuestion())) { //有质疑
+                    List<SysFileRef> sysFileRefs = pmCallQuestionReqVo.getSysFileRefs();
+                    pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType(), sysFileRefs, getUserId().toString());
                 }
-                List<SysFileRef> sysFileRefs = pmCallQuestionReqVo.getSysFileRefs();
-                pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType(),sysFileRefs,getUserId().toString());
             }
 
             pmDemand.setUpdateBy(getUserId().toString());

+ 2 - 1
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java

@@ -1076,7 +1076,8 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                 //质疑情况
                 List<SysFileInfo> callRequestFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
                 if (!ObjectUtils.isEmpty(callRequestFileInfos)) {
-                    pmPurchaseExecutionResVo.setCallRequestFileInfos(callRequestFileInfos);
+                    // TODO
+                    //pmPurchaseExecutionResVo.setCallRequestFileInfos(callRequestFileInfos);
                 }
                 //流标情况
                 LambdaQueryWrapper<PmBidFailure> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();

+ 80 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmCallQuestion.java

@@ -0,0 +1,80 @@
+package com.ozs.pm.doman;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.time.LocalDateTime;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 质疑表(PmCallQuestion)实体类
+ *
+ * @author makejava
+ * @since 2023-03-05 22:49:58
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_call_question")
+@ApiModel(value = "质疑表", description = "")
+public class PmCallQuestion implements Serializable {
+    private static final long serialVersionUID = 963964004261895129L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("是否有质疑,1是,0否")
+    @TableField("CALL_QUESTION")
+    private String callQuestion;
+
+
+    @ApiModelProperty("质疑时间")
+    @TableField("CALL_QUESTION_TIME")
+    private Date callQuestionTime;
+
+
+    @ApiModelProperty("质疑类型,0标前,1标后")
+    @TableField("TYPE")
+    private String type;
+
+
+    @ApiModelProperty("创建者")
+    @TableField("CREATE_BY")
+    private String createBy;
+
+
+    @ApiModelProperty("创建时间")
+    @TableField("CREATE_TIME")
+    private Date createTime;
+
+
+    @ApiModelProperty("更新者")
+    @TableField("UPDATE_BY")
+    private String updateBy;
+
+
+    @ApiModelProperty("更新时间")
+    @TableField("UPDATE_TIME")
+    private Date updateTime;
+
+
+}

+ 2 - 19
purchase-system/src/main/java/com/ozs/pm/doman/PmDemand.java

@@ -133,10 +133,8 @@ public class PmDemand implements Serializable {
     @TableField("WARN_STATUS")
     private String warnStatus;
 
-    /**
-     * 项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:任务待下达,8:任务已下达,9:中标信息待填制,10:中标信息已填制,11:合同待填制,12:合同已填制,13:项目建设中,14:项目建设完成)
-     */
-    @ApiModelProperty("项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:需求已退回,8:任务待下达,9:待选取代理,10:待上传招标文件,11:待发布公告,12:待开标,13:待发布中标公告,14:中标公示中,15:合同待填制,16:项目建设中,17:项目已完成)")
+
+    @ApiModelProperty("项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:需求已退回,8:任务待下达,9:采购需求对接,10:专家意见反馈,11:采购文件编制审核,12:采购公告发布,13:标前质疑投诉,14:待开标,15:评标结果公告,16:流废标处置,17:标后质疑,18:流废标退回,19:合同待填制,20:项目建设中,21:项目已完成)")
     @TableField("PROJECT_STATUS")
     private String projectStatus;
 
@@ -170,21 +168,6 @@ public class PmDemand implements Serializable {
     @TableField("HAS_EXPERT")
     private String hasExpert;
 
-    @ApiModelProperty("标前是否有质疑,1是,0否")
-    @TableField("PRE_BID_CALL_QUESTION")
-    private String preBidCallQuestion;
-
-    @ApiModelProperty("标前质疑时间")
-    @TableField("PRE_BID_CALL_QUESTION_TIME")
-    private Date preBidCallQuestionTime;
-
-    @ApiModelProperty("标后是否有质疑,1是,0否")
-    @TableField("CALL_QUESTION")
-    private String callQuestion;
-
-    @ApiModelProperty("标后质疑时间")
-    @TableField("CALL_QUESTION_TIME")
-    private Date callQuestionTime;
 
     @ApiModelProperty("创建者")
     @TableField("CREATE_BY")

+ 5 - 0
purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmCallQuestionReqVo.java

@@ -22,6 +22,8 @@ import java.util.List;
 public class PmCallQuestionReqVo implements Serializable {
     private static final long serialVersionUID = 491684278331772388L;
 
+    @ApiModelProperty("主键")
+    private Long id;
 
     @ApiModelProperty("需求ID")
     private Long demandId;
@@ -34,6 +36,9 @@ public class PmCallQuestionReqVo implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date callQuestionTime;
 
+    @ApiModelProperty("质疑类型,0标前,1标后")
+    private String type;
+
     @ApiModelProperty("创建者")
     private String createBy;
 

+ 0 - 5
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidFailureResVo.java

@@ -58,9 +58,4 @@ public class PmBidFailureResVo implements Serializable {
     @ApiModelProperty("更新时间")
     private Date updateTime;
 
-    /**
-     * 已上传的关联附件信息
-     */
-    @ApiModelProperty("已上传的关联附件信息")
-    private List<SysFileInfo> fileInfos;
 }

+ 0 - 6
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidWinningResVo.java

@@ -62,10 +62,4 @@ public class PmBidWinningResVo implements Serializable {
     @ApiModelProperty("更新时间")
     private Date updateTime;
 
-
-    /**
-     * 已上传的关联附件信息
-     */
-    @ApiModelProperty("已上传的关联附件信息")
-    private List<SysFileInfo> fileInfos;
 }

+ 56 - 0
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmCallQuestionResVo.java

@@ -0,0 +1,56 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 流标基本情况表(PmBidFailure)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:21
+ */
+
+@Data
+public class PmCallQuestionResVo implements Serializable {
+    private static final long serialVersionUID = 491684278331772388L;
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("是否有质疑,1是,0否")
+    private String callQuestion;
+
+    @ApiModelProperty("质疑时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date callQuestionTime;
+
+    @ApiModelProperty("质疑类型,0标前,1标后")
+    private String type;
+
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+}

+ 29 - 18
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmDemandResVo.java

@@ -54,6 +54,10 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("项目名称")
     private String projectName;
 
+    @Excel(name = "项目编号")
+    @ApiModelProperty("项目编号")
+    private String projectNumber;
+
     /** 项目类型(0:装备类;1:物资类;2:服务类;3:工程类) */
     @Excel(name = "项目类型(0:装备类;1:物资类;2:服务类;3:工程类)")
     @ApiModelProperty("项目类型(0:装备类;1:物资类;2:服务类;3:工程类)")
@@ -142,6 +146,7 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("备注")
     private String remarks;
 
+
     /** 实际提报需求时间--->需求单位成功提报采购需求的日期(具体到日) */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "实际提报需求时间--->需求单位成功提报采购需求的日期(具体到日)")
@@ -166,6 +171,27 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("审核时间")
     private Date auditTime;
 
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("文件评审时间")
+    private Date documentReviewTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("采购办审批时间")
+    private Date procurementOfficeApprovalTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("招标公告发布时间")
+    private Date announcementReleaseTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("开标时间")
+    private Date tenderOpenTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("中标公示时间")
+    private Date bidAnnouncementTime;
+
     /** 预警状态(0:正常,1:预警) */
     @Excel(name = "预警状态(0:正常,1:预警)")
     @ApiModelProperty("预警状态(0:正常,1:预警)")
@@ -176,11 +202,8 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("预警状态名(0:正常,1:预警)")
     private String warnStatusName;
 
-    /**
-     * 项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:任务待下达,8:任务已下达,9:中标信息待填制,10:中标信息已填制,11:合同待填制,12:合同已填制,13:项目建设中,14:项目建设完成)
-     */
-    @Excel(name = "项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:任务待下达,8:任务已下达,9:中标信息待填制,10:中标信息已填制,11:合同待填制,12:合同已填制,13:项目建设中,14:项目建设完成)")
-    @ApiModelProperty("项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:任务待下达,8:任务已下达,9:中标信息待填制,10:中标信息已填制,11:合同待填制,12:合同已填制,13:项目建设中,14:项目建设完成)")
+
+    @ApiModelProperty("项目状态(4:需求待填制,5:需求待提交,6:需求待审核,7:需求已退回,8:任务待下达,9:采购需求对接,10:专家意见反馈,11:采购文件编制审核,12:采购公告发布,13:标前质疑投诉,14:待开标,15:评标结果公告,16:流废标处置,17:标后质疑,18:流废标退回,19:合同待填制,20:项目建设中,21:项目已完成)")
     private String projectStatus;
 
     /** 项目状态名称 */
@@ -203,6 +226,7 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("调整建议")
     private String adjustAdvice;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("任务下达时间")
     private Date taskReleaseTime;
 
@@ -277,18 +301,5 @@ public class PmDemandResVo extends BaseEntity
     @ApiModelProperty("0:没有关联专家,1:有关联专家")
     private String hasExpert;
 
-    @ApiModelProperty("标前是否有质疑,1是,0否")
-    private String preBidCallQuestion;
-
-    @ApiModelProperty("标前质疑时间")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date preBidCallQuestionTime;
-
-    @ApiModelProperty("标后是否有质疑,1是,0否")
-    private String callQuestion;
-
-    @ApiModelProperty("标后质疑时间")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    private Date callQuestionTime;
 
 }

+ 7 - 0
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmExpertFeedbackResVo.java

@@ -2,6 +2,7 @@ package com.ozs.pm.doman.vo.responseVo;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -9,6 +10,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 专家意见反馈表(PmExpertFeedback)实体类
@@ -66,4 +68,9 @@ public class PmExpertFeedbackResVo implements Serializable {
     private Date updateTime;
 
 
+    /**
+     * 已上传的关联附件信息
+     */
+    @ApiModelProperty("已上传的关联附件信息")
+    private List<SysFileInfo> fileInfos;
 }

+ 20 - 0
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmPreBidCallQuestionResVo.java

@@ -0,0 +1,20 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class PmPreBidCallQuestionResVo {
+
+    @ApiModelProperty("标前是否有质疑,1是,0否")
+    private String pre_bid_call_question;
+
+    @ApiModelProperty("专家数量")
+    private Integer expertCount;
+
+    @ApiModelProperty("选取时间 yyy-MM-dd")
+    private String accessTime;
+}

+ 7 - 0
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmProcurementDocumentsReviewResVo.java

@@ -2,6 +2,7 @@ package com.ozs.pm.doman.vo.responseVo;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -9,6 +10,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 采购文件编制审核表(PmProcurementDocumentsReview)实体类
@@ -56,5 +58,10 @@ public class PmProcurementDocumentsReviewResVo implements Serializable {
     @ApiModelProperty("更新时间")
     private Date updateTime;
 
+    /**
+     * 已上传的关联附件信息
+     */
+    @ApiModelProperty("已上传的关联附件信息")
+    private List<SysFileInfo> fileInfos;
 
 }

+ 42 - 12
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmPurchaseExecutionResVo.java

@@ -1,7 +1,9 @@
 package com.ozs.pm.doman.vo.responseVo;
 
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.base.domain.BaseAgency;
+import com.ozs.pm.doman.PmProcurementDocumentsReview;
 import com.ozs.system.domain.SysFileInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,6 +12,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 
@@ -33,34 +36,61 @@ public class PmPurchaseExecutionResVo {
     @ApiModelProperty("招标代理机构信息")
     private BaseAgency baseAgency;
 
-    @ApiModelProperty("发布公告列表")
+    @ApiModelProperty("专家意见反馈信息")
+    private PmExpertFeedbackResVo pmExpertFeedbackResVo;
+
+    @ApiModelProperty("采购文件编制审核信息")
+    private PmProcurementDocumentsReviewResVo pmProcurementDocumentsReviewResVo;
+
+    @ApiModelProperty("采购公告列表")
     private List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList;
 
+    @ApiModelProperty("采购公告附件")
+    private List<SysFileInfo> pmReleaseAnnouncementFileInfos;
+
+    @ApiModelProperty("标前质疑投诉列表")
+    private List<PmCallQuestionResVo> pmCallQuestionPreResVoList;
+
+    @ApiModelProperty("标前质疑投诉附件")
+    private List<SysFileInfo> pmCallQuestionPreFileInfos;
+
+
     @ApiModelProperty("专家列表")
     private List<PmBaseExpertResVo> pmBaseExpertResVoList;
 
     @ApiModelProperty("开标信息列表")
     private List<PmBidOpeningResVo> pmBidOpeningResVoList;
 
-    @ApiModelProperty("中标信息列表")
+    @ApiModelProperty("评标结果公告列表")
     private List<PmBidWinningResVo> pmBidWinningResVoList;
+    @ApiModelProperty("评标结果公告附件")
+    private List<SysFileInfo> pmBidWinningFileInfos;
 
-    /** 是否有质疑,1是,0否 */
-    @ApiModelProperty("是否有质疑,1是,0否")
-    private String callQuestion;
+    @ApiModelProperty("标前是否有质疑,1是,0否")
+    private String preBidCallQuestion;
+    @ApiModelProperty("标前是否有质疑,1是,0否")
+    private String preBidCallQuestionName;
+    @ApiModelProperty("标前质疑时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date preBidCallQuestionTime;
 
-    /** 是否有质疑,1是,0否 */
-    @ApiModelProperty("是否有质疑,1是,0否")
+    @ApiModelProperty("标后是否有质疑,1是,0否")
+    private String callQuestion;
+    @ApiModelProperty("标后是否有质疑,1是,0否")
     private String callQuestionName;
+    @ApiModelProperty("标后质疑时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date callQuestionTime;
 
-    /**
-     * 质疑情况附件
-     */
-    @ApiModelProperty("质疑情况附件")
-    private List<SysFileInfo> callRequestFileInfos;
+    @ApiModelProperty("标后质疑列表")
+    private List<PmCallQuestionResVo> pmCallQuestionPostResVoList;
+    @ApiModelProperty("标后质疑情况附件")
+    private List<SysFileInfo> pmCallRequestPostFileInfos;
 
     @ApiModelProperty("流标信息列表")
     private List<PmBidFailureResVo> pmBidFailureResVoList;
+    @ApiModelProperty("流标信息附件")
+    private List<SysFileInfo> pmBidFailureFileInfos;
 
     /**
      * 已上传的关联附件信息

+ 0 - 5
purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmReleaseAnnouncementResVo.java

@@ -75,9 +75,4 @@ public class PmReleaseAnnouncementResVo implements Serializable {
     private Date updateTime;
 
 
-    /**
-     * 已上传的关联附件信息
-     */
-    @ApiModelProperty("已上传的关联附件信息")
-    private List<SysFileInfo> fileInfos;
 }

+ 15 - 0
purchase-system/src/main/java/com/ozs/pm/mapper/PmCallQuestionMapper.java

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmCallQuestion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 质疑表(PmCallQuestion)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-03-05 22:49:58
+ */
+public interface PmCallQuestionMapper extends BaseMapper<PmCallQuestion> {
+
+}

+ 14 - 0
purchase-system/src/main/java/com/ozs/pm/service/PmCallQuestionService.java

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmCallQuestion;
+
+/**
+ * 质疑表(PmCallQuestion)表服务接口
+ *
+ * @author makejava
+ * @since 2023-03-05 22:49:58
+ */
+public interface PmCallQuestionService extends IService<PmCallQuestion> {
+
+}

+ 18 - 0
purchase-system/src/main/java/com/ozs/pm/service/impl/PmCallQuestionServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmCallQuestionMapper;
+import com.ozs.pm.doman.PmCallQuestion;
+import com.ozs.pm.service.PmCallQuestionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 质疑表(PmCallQuestion)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-03-05 22:49:58
+ */
+@Service
+public class PmCallQuestionServiceImpl extends ServiceImpl<PmCallQuestionMapper, PmCallQuestion> implements PmCallQuestionService {
+
+}

+ 131 - 18
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -82,7 +82,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
     @Autowired
     private PmBookBuildingService pmBookBuildingService;
-
+    @Autowired
+    private PmCallQuestionService pmCallQuestionService;
     @Autowired
     private PmBidWinningService pmBidWinningService;
     @Autowired
@@ -127,7 +128,10 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     private PmAuditDeptRefService pmAuditDeptRefService;
     @Autowired
     private ProvisionalPlanMapper provisionalPlanMapper;
-
+    @Autowired
+    private PmExpertFeedbackService pmExpertFeedbackService;
+    @Autowired
+    private PmProcurementDocumentsReviewService pmProcurementDocumentsReviewService;
     /**
      * 查询采购需求
      *
@@ -249,17 +253,48 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 }
             } else if ("4".equals(detailType)) { //中标信息
                 PmPurchaseExecutionResVo pmPurchaseExecutionResVo = new PmPurchaseExecutionResVo();
-                List<SysFileInfo> fileInfosAll = new ArrayList<>();
+
                 //代理商信息
                 BaseAgency baseAgency = this.baseAgencyService.getById(pmDemand.getAgencyId());
                 pmPurchaseExecutionResVo.setBaseAgency(baseAgency);
 
-                //发布公告列表
+                //专家意见反馈
+                LambdaQueryWrapper<PmExpertFeedback> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedback::getDemandId,demandId);
+                PmExpertFeedback pmExpertFeedback = pmExpertFeedbackService.getOne(pmExpertFeedbackLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmExpertFeedback)){
+                    PmExpertFeedbackResVo pmExpertFeedbackResVo = new PmExpertFeedbackResVo();
+                    BeanUtils.copyProperties(pmExpertFeedback,pmExpertFeedbackResVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmExpertFeedbackResVo.getId(), SysFileRefEnum.PM_EXPERT_FEEDBACK.getType());
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmExpertFeedbackResVo.setFileInfos(fileInfos);
+                    }
+                    pmPurchaseExecutionResVo.setPmExpertFeedbackResVo(pmExpertFeedbackResVo);
+                }
+
+                //采购文件编制审核
+                LambdaQueryWrapper<PmProcurementDocumentsReview> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReview::getDemandId,demandId);
+                PmProcurementDocumentsReview pmProcurementDocumentsReview = pmProcurementDocumentsReviewService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmProcurementDocumentsReview)){
+                    PmProcurementDocumentsReviewResVo pmProcurementDocumentsReviewResVo = new PmProcurementDocumentsReviewResVo();
+                    BeanUtils.copyProperties(pmProcurementDocumentsReview,pmProcurementDocumentsReviewResVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmProcurementDocumentsReviewResVo.getId(), SysFileRefEnum.PM_BID_FILE.getType());
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmProcurementDocumentsReviewResVo.setFileInfos(fileInfos);
+                    }
+                    pmPurchaseExecutionResVo.setPmProcurementDocumentsReviewResVo(pmProcurementDocumentsReviewResVo);
+                }
+
+                //采购公告列表
                 LambdaQueryWrapper<PmReleaseAnnouncement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                 lambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId, demandId);
                 List<PmReleaseAnnouncement> pmReleaseAnnouncementList = this.pmReleaseAnnouncementService.list(lambdaQueryWrapper);
                 if (!ObjectUtils.isEmpty(pmReleaseAnnouncementList)) {
                     List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
                     for (PmReleaseAnnouncement pmReleaseAnnouncement : pmReleaseAnnouncementList) {
                         PmReleaseAnnouncementResVo pmReleaseAnnouncementResVo = new PmReleaseAnnouncementResVo();
                         BeanUtils.copyProperties(pmReleaseAnnouncement, pmReleaseAnnouncementResVo);
@@ -270,9 +305,31 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                         }
                         pmReleaseAnnouncementResVoList.add(pmReleaseAnnouncementResVo);
                     }
+                    pmPurchaseExecutionResVo.setPmReleaseAnnouncementFileInfos(fileInfosAll);
                     pmPurchaseExecutionResVo.setPmReleaseAnnouncementResVoList(pmReleaseAnnouncementResVoList);
                 }
 
+                //标前质疑投诉
+                LambdaQueryWrapper<PmCallQuestion> pmCallQuestionLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmCallQuestionLambdaQueryWrapper.eq(PmCallQuestion::getDemandId,demandId)
+                        .eq(PmCallQuestion::getType,'0').orderByDesc(PmCallQuestion::getCallQuestionTime);
+                List<PmCallQuestion>  pmCallQuestionList = pmCallQuestionService.list(pmCallQuestionLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmCallQuestionList)){
+                    List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                    for(PmCallQuestion pmCallQuestion : pmCallQuestionList){
+                        PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
+                        BeanUtils.copyProperties(pmCallQuestion,pmCallQuestionResVo);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType());
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            fileInfosAll.addAll(fileInfos);
+                        }
+                        pmCallQuestionResVoList.add(pmCallQuestionResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmCallQuestionPreResVoList(pmCallQuestionResVoList);
+                    pmPurchaseExecutionResVo.setPmCallQuestionPreFileInfos(fileInfosAll);
+                }
+
                 //专家信息列表
                 List<PmBaseExpertResVo> pmBaseExpertResVoList = this.pmDemandExpertRefService.getPmBaseExpertResVoList(demandId);
                 pmPurchaseExecutionResVo.setPmBaseExpertResVoList(pmBaseExpertResVoList);
@@ -281,7 +338,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 List<PmBidOpeningResVo> pmBidOpeningResVoList = this.pmBidOpeningService.getPmBidOpeningResVoList(demandId);
                 pmPurchaseExecutionResVo.setPmBidOpeningResVoList(pmBidOpeningResVoList);
 
-                //中标信息列表
+                //评标结果公告列表
                 LambdaQueryWrapper<PmBidWinning> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
                 lambdaQueryWrapper1.eq(PmBidWinning::getDemandId, demandId)
                         .eq(PmBidWinning::getStatus, BidWinningStatus.NORMAL.getCode());
@@ -293,6 +350,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                     List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = this.pmBidWinningOpeningRefService.list(lambdaQueryWrapper2);
                     if (!ObjectUtils.isEmpty(pmBidWinningOpeningRefList)) {
                         List<PmBidWinningResVo> pmBidWinningResVoList = new ArrayList<>();
+                        List<SysFileInfo> fileInfosAll = new ArrayList<>();
                         for (PmBidWinningOpeningRef pmBidWinningOpeningRef : pmBidWinningOpeningRefList) {
                             PmBidOpening pmBidOpening = this.pmBidOpeningService.getById(pmBidWinningOpeningRef.getOpeningId());
                             if (pmBidOpening != null) {
@@ -309,23 +367,40 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
                         }
                         pmPurchaseExecutionResVo.setPmBidWinningResVoList(pmBidWinningResVoList);
+                        pmPurchaseExecutionResVo.setPmBidWinningFileInfos(fileInfosAll);
                     }
 
                 }
 
-                pmPurchaseExecutionResVo.setCallQuestion(pmDemand.getCallQuestion());
-
-                //质疑情况
-                List<SysFileInfo> callRequestFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
-                if (!ObjectUtils.isEmpty(callRequestFileInfos)) {
-                    pmPurchaseExecutionResVo.setCallRequestFileInfos(callRequestFileInfos);
+                //标后质疑
+                LambdaQueryWrapper<PmCallQuestion> pmCallQuestionLambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+                pmCallQuestionLambdaQueryWrapper2.eq(PmCallQuestion::getDemandId,demandId)
+                        .eq(PmCallQuestion::getType,'1').orderByDesc(PmCallQuestion::getCallQuestionTime);
+                List<PmCallQuestion>  pmCallQuestionList2 = pmCallQuestionService.list(pmCallQuestionLambdaQueryWrapper2);
+                if(!ObjectUtils.isEmpty(pmCallQuestionList2)){
+                    List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                    for(PmCallQuestion pmCallQuestion : pmCallQuestionList2){
+                        PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
+                        BeanUtils.copyProperties(pmCallQuestion,pmCallQuestionResVo);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            fileInfosAll.addAll(fileInfos);
+                        }
+                        pmCallQuestionResVoList.add(pmCallQuestionResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmCallQuestionPostResVoList(pmCallQuestionResVoList);
+                    pmPurchaseExecutionResVo.setPmCallRequestPostFileInfos(fileInfosAll);
                 }
+
+
                 //流标情况
                 LambdaQueryWrapper<PmBidFailure> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
                 lambdaQueryWrapper2.eq(PmBidFailure::getDemandId, demandId).orderByDesc(PmBidFailure::getBidFailureTime);
                 List<PmBidFailure> pmBidFailureList = this.pmBidFailureService.list(lambdaQueryWrapper2);
                 if (!ObjectUtils.isEmpty(pmBidFailureList)) {
                     List<PmBidFailureResVo> pmBidFailureResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
                     for (PmBidFailure pmBidFailure : pmBidFailureList) {
                         PmBidFailureResVo pmBidFailureResVo = new PmBidFailureResVo();
                         BeanUtils.copyProperties(pmBidFailure, pmBidFailureResVo);
@@ -335,16 +410,15 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                         }
                         pmBidFailureResVoList.add(pmBidFailureResVo);
                     }
+
                     pmPurchaseExecutionResVo.setPmBidFailureResVoList(pmBidFailureResVoList);
+                    pmPurchaseExecutionResVo.setPmBidFailureFileInfos(fileInfosAll);
                 }
 
                 //中标通知书
                 List<SysFileInfo> pmBidWinningNotificationFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType());
-                if (!ObjectUtils.isEmpty(pmBidWinningNotificationFileInfos)) {
-                    fileInfosAll.addAll(pmBidWinningNotificationFileInfos);
-                }
+                pmPurchaseExecutionResVo.setFileInfos(pmBidWinningNotificationFileInfos);
 
-                pmPurchaseExecutionResVo.setFileInfos(fileInfosAll);
                 vo.setPmPurchaseExecutionResVo(pmPurchaseExecutionResVo);
 
             } else if ("5".equals(detailType)) { //合同信息
@@ -440,11 +514,11 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         } else if (reqType == 2) { //任务下达列表
             lw.apply("(project_status = 8 or project_status = 9 )");
         } else if (reqType == 3) { //采购执行列表
-            lw.apply("(project_status = 9 or project_status = 10 or project_status = 11 or project_status = 12 or project_status = 13 or project_status = 14 or project_status = 15)");
+            lw.apply("(project_status in (9,10,11,12,13,14,15,16,17,19))");
         } else if (reqType == 4) { //合同信息列表
-            lw.apply("(project_status = 15 or project_status = 16 )");
+            lw.apply("(project_status = 19 or project_status = 20 )");
         } else if (reqType == 5) { //项目建设列表
-            lw.apply("(project_status = 16 or project_status = 17 )");
+            lw.apply("(project_status = 20 or project_status = 21 )");
         }
 
         lw.last(" order by project_status, plan_demand_sub_time");
@@ -488,6 +562,45 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                         vo.setFlay(flay);
                     }
                 }
+
+                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())
+                            .orderByDesc(PmBidWinning::getBidAnnouncementTime)
+                            .last(" limit 1");
+                    PmBidWinning pmBidWinning = this.pmBidWinningService.getOne(pmBidWinningLambdaQueryWrapper);
+                    if(pmBidWinning != null){
+                        vo.setBidAnnouncementTime(pmBidWinning.getBidAnnouncementTime());
+                    }
+                }
+
             }
             results.setRecords(pmDemandResVos);
         }

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmCallQuestionMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.pm.mapper.PmCallQuestionMapper">
+
+
+</mapper>