Browse Source

项目管理-采购执行

suntianwu 2 years ago
parent
commit
b1c0929c3c
17 changed files with 1054 additions and 325 deletions
  1. 195 22
      purchase-admin/src/main/java/com/ozs/web/controller/pm/PmPurchaseExecutionController.java
  2. 6 1
      purchase-common/src/main/java/com/ozs/common/enums/SysFileRefEnum.java
  3. 4 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmBidOpening.java
  4. 88 42
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemand.java
  5. 124 67
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemandEngineering.java
  6. 88 45
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemandEquip.java
  7. 90 71
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemandMaterials.java
  8. 89 43
      purchase-system/src/main/java/com/ozs/pm/doman/PmDemandServe.java
  9. 61 23
      purchase-system/src/main/java/com/ozs/pm/doman/PmFlowChart.java
  10. 1 1
      purchase-system/src/main/java/com/ozs/pm/doman/PmReleaseAnnouncement.java
  11. 60 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmBidFailureReqVo.java
  12. 20 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmBidOpeningFillReqVo.java
  13. 69 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmBidWinningReqVo.java
  14. 54 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmCallQuestionReqVo.java
  15. 6 6
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmReleaseAnnouncementReqVo.java
  16. 7 1
      purchase-system/src/main/java/com/ozs/pm/service/IPmDemandService.java
  17. 92 3
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

+ 195 - 22
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmPurchaseExecutionController.java

@@ -13,12 +13,15 @@ import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.enums.BusinessType;
 import com.ozs.common.enums.NameListType;
+import com.ozs.common.enums.PmProjectStatus;
 import com.ozs.common.enums.SysFileRefEnum;
 import com.ozs.common.utils.RandomUtil;
+import com.ozs.pm.doman.PmBidWinning;
 import com.ozs.pm.doman.PmDemand;
 import com.ozs.pm.doman.vo.requestVo.*;
 import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
 import com.ozs.pm.service.IPmDemandService;
+import com.ozs.pm.service.PmBidWinningService;
 import com.ozs.system.domain.SysFileRef;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -50,6 +53,8 @@ public class PmPurchaseExecutionController extends BaseController {
     private BaseAgencyService baseAgencyService;
     @Autowired
     private BaseExpertService baseExpertService;
+    @Autowired
+    private PmBidWinningService pmBidWinningService;
 
     /**
      * 采购执行查询列表
@@ -99,6 +104,7 @@ public class PmPurchaseExecutionController extends BaseController {
         }
         PmDemand pmDemandUpdate = new PmDemand();
         pmDemandUpdate.setDemandId(demandId);
+        pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode()));
         pmDemandUpdate.setAgencyId(agencyId);
         pmDemandUpdate.setExtractAgencyTime(new Date());
         pmDemandUpdate.setUpdateTime(pmDemandUpdate.getExtractAgencyTime());
@@ -130,6 +136,7 @@ public class PmPurchaseExecutionController extends BaseController {
 
         PmDemand pmDemandUpdate = new PmDemand();
         pmDemandUpdate.setDemandId(demandId);
+        pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode()));
         pmDemandUpdate.setAgencyId(any.getId());
         pmDemandUpdate.setExtractAgencyTime(new Date());
         pmDemandUpdate.setUpdateTime(pmDemandUpdate.getExtractAgencyTime());
@@ -138,8 +145,8 @@ public class PmPurchaseExecutionController extends BaseController {
     }
 
     @ApiOperation(value = "上传招标文件",notes = "采购需求ID和上传附件必传")
-    @PostMapping("/upLoadBidFile")
-    public AjaxResult upLoadBidFile(@NotEmpty(message = "数据为空") @RequestBody PmPurchaseExecutionReqVo pmPurchaseExecutionReqVo) {
+    @PostMapping("/uploadBidFile")
+    public AjaxResult uploadBidFile(@NotEmpty(message = "数据为空") @RequestBody PmPurchaseExecutionReqVo pmPurchaseExecutionReqVo) {
         Long demandId = pmPurchaseExecutionReqVo.getDemandId();
         if(ObjectUtils.isEmpty(demandId)){
             return error("参数错误");
@@ -155,9 +162,14 @@ public class PmPurchaseExecutionController extends BaseController {
             return error("参数错误");
         }
         if (pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_FILE.getType(),sysFileRefs,getUserId().toString())) {
-            return AjaxResult.success();
+            PmDemand pmDemandUpdate = new PmDemand();
+            pmDemandUpdate.setDemandId(demandId);
+            pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_ANNOUNCEMENT.getCode()));
+            pmDemandUpdate.setUpdateTime(new Date());
+            pmDemandUpdate.setUpdateBy(getUserId().toString());
+            return success(pmDemandService.updateById(pmDemandUpdate));
         } else {
-            return error("上传失败");
+            return error("保存上传附件失败");
         }
     }
 
@@ -165,11 +177,20 @@ public class PmPurchaseExecutionController extends BaseController {
     @PostMapping("/insertPmReleaseAnnouncement")
     public AjaxResult insertPmReleaseAnnouncement(@NotEmpty(message = "数据为空")
                                        @RequestBody PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo) {
-        pmReleaseAnnouncementReqVo.setCreateBy(getUserId().toString());
-        pmReleaseAnnouncementReqVo.setCreateTime(new Date());
-        pmReleaseAnnouncementReqVo.setUpdateBy(pmReleaseAnnouncementReqVo.getCreateBy());
-        pmReleaseAnnouncementReqVo.setUpdateTime(pmReleaseAnnouncementReqVo.getCreateTime());
-        return toAjax(pmDemandService.insertPmReleaseAnnouncement(pmReleaseAnnouncementReqVo));
+        try {
+            Long demandId = pmReleaseAnnouncementReqVo.getDemandId();
+            if(ObjectUtils.isEmpty(demandId)){
+                return error("参数错误");
+            }
+            pmReleaseAnnouncementReqVo.setCreateBy(getUserId().toString());
+            pmReleaseAnnouncementReqVo.setCreateTime(new Date());
+            pmReleaseAnnouncementReqVo.setUpdateBy(pmReleaseAnnouncementReqVo.getCreateBy());
+            pmReleaseAnnouncementReqVo.setUpdateTime(pmReleaseAnnouncementReqVo.getCreateTime());
+            return toAjax(pmDemandService.insertPmReleaseAnnouncement(pmReleaseAnnouncementReqVo));
+        }  catch (Exception e) {
+            return error(e.getMessage());
+        }
+
     }
 
     @ApiOperation(value = "获取专家身份证号列表")
@@ -225,16 +246,17 @@ public class PmPurchaseExecutionController extends BaseController {
     @PreAuthorize("@ss.hasPermi('pm:purchaseExecution:insertExpertBatch')")
     @Log(title = ModularConstans.purchaseExecution, businessType = BusinessType.INSERT)
     public AjaxResult insertExpertBatch(@NotEmpty(message = "参数不能为空") @RequestBody PmBaseExpertFillReqVo pmBaseExpertFillReqVo) {
-        if (ObjectUtils.isEmpty(pmBaseExpertFillReqVo)
-                || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getDemandId())
-                || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getAccessTime())
-                || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getBaseExpertList())) {
-            return error("参数错误");
-        }
-        pmBaseExpertFillReqVo.setCreateBy(getUserId().toString());
-        pmBaseExpertFillReqVo.setUpdateBy(pmBaseExpertFillReqVo.getCreateBy());
 
         try {
+            if (ObjectUtils.isEmpty(pmBaseExpertFillReqVo)
+                    || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getDemandId())
+                    || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getAccessTime())
+                    || ObjectUtils.isEmpty(pmBaseExpertFillReqVo.getBaseExpertList())) {
+                return error("参数错误");
+            }
+            pmBaseExpertFillReqVo.setCreateBy(getUserId().toString());
+            pmBaseExpertFillReqVo.setUpdateBy(pmBaseExpertFillReqVo.getCreateBy());
+
             return toAjax(pmDemandService.insertExpertBatch(pmBaseExpertFillReqVo));
         } catch (Exception e) {
             return error(e.getMessage());
@@ -248,15 +270,166 @@ public class PmPurchaseExecutionController extends BaseController {
     @PostMapping("/extractExpertBatch")
     public AjaxResult extractExpertBatch(@NotEmpty(message = "参数不能为空")
                                              @RequestBody PmBaseExpertExtractReqVo pmBaseExpertExtractReqVo) {
-        if (ObjectUtils.isEmpty(pmBaseExpertExtractReqVo)
-                || ObjectUtils.isEmpty(pmBaseExpertExtractReqVo.getDemandId())
-                || ObjectUtils.isEmpty(pmBaseExpertExtractReqVo.getAccessTime())) {
-            return error("参数错误");
-        }
+
         try {
+            if (ObjectUtils.isEmpty(pmBaseExpertExtractReqVo)
+                    || ObjectUtils.isEmpty(pmBaseExpertExtractReqVo.getDemandId())
+                    || ObjectUtils.isEmpty(pmBaseExpertExtractReqVo.getAccessTime())) {
+                return error("参数错误");
+            }
             return toAjax(pmDemandService.extractExpertBatch(pmBaseExpertExtractReqVo));
         } catch (Exception e) {
             return error(e.getMessage());
         }
     }
+
+    @ApiOperation(value = "填写开标信息",notes = "采购需求ID必传")
+    @PostMapping("/insertBidOpeningBatch")
+    public AjaxResult insertBidOpeningBatch(@NotEmpty(message = "数据为空")
+                                                  @RequestBody PmBidOpeningFillReqVo pmBidOpeningFillReqVo) {
+
+        try {
+            if (ObjectUtils.isEmpty(pmBidOpeningFillReqVo)
+                    || ObjectUtils.isEmpty(pmBidOpeningFillReqVo.getDemandId())
+                    || ObjectUtils.isEmpty(pmBidOpeningFillReqVo.getPmBidOpeningList())) {
+                return error("参数错误");
+            }
+            pmBidOpeningFillReqVo.setCreateBy(getUserId().toString());
+            pmBidOpeningFillReqVo.setUpdateBy(getUserId().toString());
+            return toAjax(pmDemandService.insertBidOpeningBatch(pmBidOpeningFillReqVo));
+        } catch (Exception e) {
+            return error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "中标情况填制",notes = "采购需求ID必传")
+    @PostMapping("/insertPmBidWinning")
+    public AjaxResult insertPmBidWinning(@NotEmpty(message = "数据为空")
+                                                  @RequestBody PmBidWinningReqVo pmBidWinningReqVo) {
+      try {
+          Long demandId = pmBidWinningReqVo.getDemandId();
+          if(ObjectUtils.isEmpty(demandId)){
+              return error("参数错误");
+          }
+          pmBidWinningReqVo.setCreateBy(getUserId().toString());
+          pmBidWinningReqVo.setCreateTime(new Date());
+          pmBidWinningReqVo.setUpdateBy(pmBidWinningReqVo.getCreateBy());
+          pmBidWinningReqVo.setUpdateTime(pmBidWinningReqVo.getCreateTime());
+          return toAjax(pmDemandService.insertPmBidWinning(pmBidWinningReqVo));
+      }  catch (Exception e) {
+          return error(e.getMessage());
+      }
+    }
+
+    @ApiOperation(value = "流标情况填制",notes = "采购需求ID必传")
+    @PostMapping("/insertPmBidFailure")
+    public AjaxResult insertPmBidFailure(@NotEmpty(message = "数据为空")
+                                         @RequestBody PmBidFailureReqVo pmBidFailureReqVo) {
+        try {
+            Long demandId = pmBidFailureReqVo.getDemandId();
+            if(ObjectUtils.isEmpty(demandId)){
+                return error("参数错误");
+            }
+            pmBidFailureReqVo.setCreateBy(getUserId().toString());
+            pmBidFailureReqVo.setCreateTime(new Date());
+            pmBidFailureReqVo.setUpdateBy(pmBidFailureReqVo.getCreateBy());
+            pmBidFailureReqVo.setUpdateTime(pmBidFailureReqVo.getCreateTime());
+            return toAjax(pmDemandService.insertPmBidFailure(pmBidFailureReqVo));
+        }  catch (Exception e) {
+            return error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "质疑处理",notes = "采购需求ID必传")
+    @PostMapping("/handleCallQuestion")
+    public AjaxResult handleCallQuestion(@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("参数错误");
+            }
+            List<SysFileRef> sysFileRefs = pmCallQuestionReqVo.getSysFileRefs();
+            if(ObjectUtils.isEmpty(sysFileRefs)){
+                return error("参数错误");
+            }
+            if(pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType(),sysFileRefs,getUserId().toString())){
+                pmDemand.setCallQuestion(pmCallQuestionReqVo.getCallQuestion());
+                pmDemand.setUpdateBy(getUserId().toString());
+                pmDemand.setUpdateTime(new Date());
+                return toAjax(pmDemandService.updateById(pmDemand));
+            } else {
+                return error("保存上传附件失败");
+            }
+
+        }  catch (Exception e) {
+            return error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "更换中标人",notes = "采购需求ID必传")
+    @PostMapping("/updatePmBidWinning")
+    public AjaxResult updatePmBidWinning(@NotEmpty(message = "数据为空")
+                                         @RequestBody PmBidWinningReqVo pmBidWinningReqVo) {
+        try {
+            Long demandId = pmBidWinningReqVo.getDemandId();
+            if(ObjectUtils.isEmpty(demandId)){
+                return error("缺少需求ID");
+            }
+            if(ObjectUtils.isEmpty(pmBidWinningReqVo.getBidOpeningId())){
+                return error("缺少开标信息ID bidOpeningId");
+            }
+            if(ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())){
+                return error("缺少中标金额");
+            }
+            LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>();
+            lw.eq(PmBidWinning::getDemandId,demandId);
+            PmBidWinning pmBidWinning = pmBidWinningService.getOne(lw);
+            if(pmBidWinning == null){
+                return error("原中标信息不存在");
+            }
+            pmBidWinning.setBidOpeningId(pmBidWinningReqVo.getBidOpeningId());
+            pmBidWinning.setBidWinningAmount(pmBidWinningReqVo.getBidWinningAmount());
+            pmBidWinning.setUpdateBy(getUserId().toString());
+            pmBidWinning.setUpdateTime(new Date());
+
+            return toAjax(pmBidWinningService.updateById(pmBidWinning));
+        }  catch (Exception e) {
+            return error(e.getMessage());
+        }
+    }
+
+    @ApiOperation(value = "上传中标通知书",notes = "采购需求ID和上传附件必传")
+    @PostMapping("/uploadBidWinningNotification")
+    public AjaxResult uploadBidWinningNotification(@NotEmpty(message = "数据为空") @RequestBody PmPurchaseExecutionReqVo pmPurchaseExecutionReqVo) {
+        Long demandId = pmPurchaseExecutionReqVo.getDemandId();
+        if(ObjectUtils.isEmpty(demandId)){
+            return error("参数错误");
+        }
+
+        PmDemand pmDemand = pmDemandService.getById(demandId);
+        if(ObjectUtils.isEmpty(pmDemand)){
+            return error("参数错误");
+        }
+
+        List<SysFileRef> sysFileRefs = pmPurchaseExecutionReqVo.getSysFileRefs();
+        if(ObjectUtils.isEmpty(sysFileRefs)){
+            return error("参数错误");
+        }
+        if (pmDemandService.uploadFile(demandId, SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType(),sysFileRefs,getUserId().toString())) {
+            PmDemand pmDemandUpdate = new PmDemand();
+            pmDemandUpdate.setDemandId(demandId);
+            pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.CONTRACT_WAIT_FILL.getCode()));
+            pmDemandUpdate.setUpdateTime(new Date());
+            pmDemandUpdate.setUpdateBy(getUserId().toString());
+            return success(pmDemandService.updateById(pmDemandUpdate));
+        } else {
+            return error("保存上传附件失败");
+        }
+    }
+
 }

+ 6 - 1
purchase-common/src/main/java/com/ozs/common/enums/SysFileRefEnum.java

@@ -19,7 +19,12 @@ public enum SysFileRefEnum {
     PM_DEMAND_ENGINEERING(8, "采购需求工程类附件"),
     PM_DEMAND_EXAMINE(9, "采购需求审核文件"),
     PM_TAST_RELEASE(10, "任务下达文件"),
-    PM_BID_FILE(11, "招标文件")
+    PM_BID_FILE(11, "招标文件"),
+    PM_ANNOUNCEMENT_FILE(12, "公告文件"),
+    PM_BID_WINNING_FILE(13, "中标文件"),
+    PM_BID_FAILURE_FILE(14, "流标文件"),
+    PM_BID_CALL_QEUSTION_FILE(15, "质疑文件"),
+    PM_BID_WINNING_NOTIFICATION (16, "中标通知书")
     ;
 
     private Integer type;

+ 4 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmBidOpening.java

@@ -58,6 +58,10 @@ public class PmBidOpening implements Serializable {
     private String createBy;
 
 
+    @ApiModelProperty("开标时间")
+    @TableField("OPEN_BID_TIME")
+    private Date openBidTime;
+
     @ApiModelProperty("创建时间")
     @TableField("CREATE_TIME")
     private Date createTime;

+ 88 - 42
purchase-system/src/main/java/com/ozs/pm/doman/PmDemand.java

@@ -1,18 +1,17 @@
 package com.ozs.pm.doman;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+import lombok.experimental.Accessors;
 
 /**
  * 采购需求对象 pm_demand
@@ -21,121 +20,168 @@ import lombok.NoArgsConstructor;
  * @date 2023-01-16
  */
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("采购需求对象")
-public class PmDemand extends BaseEntity
-{
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_demand")
+@ApiModel(value = "采购需求表", description = "")
+public class PmDemand implements Serializable {
+
     private static final long serialVersionUID = 1L;
 
     /** 主键 */
-    @TableId(type = IdType.AUTO)
+    @TableId(value = "DEMAND_ID", type = IdType.AUTO)
     private Long demandId;
 
     /** 计划ID */
-    @Excel(name = "计划ID")
+    @ApiModelProperty("计划ID")
+    @TableField("PLAN_ID")
     private Long planId;
 
     /** 采购单位(登录账号的单位) */
-    @Excel(name = "采购单位", readConverterExp = "登=录账号的单位")
+    @ApiModelProperty("采购单位(登录账号的单位)")
+    @TableField("PURCHASE_DEPT_ID")
     private Long purchaseDeptId;
 
     /** 项目名称 */
-    @Excel(name = "项目名称")
+    @ApiModelProperty("项目名称")
+    @TableField("PROJECT_NAME")
     private String projectName;
 
     /** 项目类型(0:装备类;1:物资类;2:服务类;3:工程类) */
-    @Excel(name = "项目类型", readConverterExp = "0=:装备类;1:物资类;2:服务类;3:工程类")
+    @ApiModelProperty("项目类型(0:装备类;1:物资类;2:服务类;3:工程类)")
+    @TableField("PROJECT_TYPE")
     private String projectType;
 
     /** 需求概况 */
-    @Excel(name = "需求概况")
+    @ApiModelProperty("需求概况")
+    @TableField("DEMAND_OVERVIEW")
     private String demandOverview;
 
     /** 概算金额(万元(保留小数点后两位) */
-    @Excel(name = "概算金额(万元", readConverterExp = "保=留小数点后两位")
+    @ApiModelProperty("概算金额(万元(保留小数点后两位)")
+    @TableField("EVALUATION")
     private BigDecimal evaluation;
 
     /** 是否为超限额计划(0:未超额,1:超额) */
-    @Excel(name = "是否为超限额计划(0:未超额,1:超额)")
+    @ApiModelProperty("是否为超限额计划(0:未超额,1:超额)")
+    @TableField("IS_EXCESS")
     private Integer isExcess;
 
     /** 采购服务站 */
-    @Excel(name = "采购服务站")
+    @ApiModelProperty("采购服务站")
+    @TableField("PURCHASE_SERVICES")
     private String purchaseServices;
 
     /** 采购方式  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价) */
-    @Excel(name = "采购方式  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
+    @ApiModelProperty("采购方式  (0:公开招标, 1:单一来源,2:邀请招标,3:竞争式谈判,4:询价)")
+    @TableField("PURCHASE_MODE")
     private String purchaseMode;
 
     /** 计划提报需求时间--->需求单位成功提报采购需求的日期(具体到月) */
-    @Excel(name = "计划提报需求时间--->需求单位成功提报采购需求的日期", readConverterExp = "具=体到月")
+    @ApiModelProperty("计划提报需求时间--->需求单位成功提报采购需求的日期(具体到月)")
+    @TableField("PLAN_DEMAND_SUB_TIME")
     private Date planDemandSubTime;
 
     /** 计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到月) */
-    @Excel(name = "计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期", readConverterExp = "具=体到月")
+    @ApiModelProperty("计划完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到月)")
+    @TableField("PLAN_PURCHASE_FINISH_TIME")
     private Date planPurchaseFinishTime;
 
     /** 计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("计划交付时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期")
+    @TableField("PLAN_DELIVER_TIME")
     private Date planDeliverTime;
 
     /** 项目属性(0:应急应战项目, 1:重大规划任务项目, 2:规划任务项目, 3:一般项目) */
-    @Excel(name = "项目属性", readConverterExp = "0=:应急应战项目,,1=:重大规划任务项目,,2=:规划任务项目,,3=:一般项目")
+    @ApiModelProperty("项目属性(0:应急应战项目, 1:重大规划任务项目, 2:规划任务项目, 3:一般项目)")
+    @TableField("PROJECT_ATTR")
     private String projectAttr;
 
     /** 计划调整情况及理由--->如计划需要变更,在填写申请修改时需填写调整情况及理由,审核单位审核通过后显示该信息 */
-    @Excel(name = "计划调整情况及理由--->如计划需要变更,在填写申请修改时需填写调整情况及理由,审核单位审核通过后显示该信息")
+    @ApiModelProperty("计划调整情况及理由--->如计划需要变更,在填写申请修改时需填写调整情况及理由,审核单位审核通过后显示该信息")
+    @TableField("ADJUST_REASON")
     private String adjustReason;
 
     /** 备注 */
-    @Excel(name = "备注")
+    @ApiModelProperty("备注")
+    @TableField("REMARKS")
     private String remarks;
 
     /** 实际提报需求时间--->需求单位成功提报采购需求的日期(具体到日) */
-    @Excel(name = "实际提报需求时间--->需求单位成功提报采购需求的日期", readConverterExp = "具=体到日")
+    @ApiModelProperty("实际提报需求时间--->需求单位成功提报采购需求的日期(具体到日)")
+    @TableField("REAL_DEMAND_COMMIT_TIME")
     private Date realDemandCommitTime;
 
     /** 实际完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到日) */
-    @Excel(name = "实际完成采购时间--->公示中标结果的日期,即填制中标信息的日期", readConverterExp = "具=体到日")
+    @ApiModelProperty("实际完成采购时间--->公示中标结果的日期,即填制中标信息的日期(具体到日)")
+    @TableField("REAL_PURCHASE_FINISH_TIME")
     private Date realPurchaseFinishTime;
 
     /** 实际交付(实施)时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期 */
-    @Excel(name = "实际交付", readConverterExp = "实=施")
+    @ApiModelProperty("实际交付(实施)时间--->供应商完成并交付后,使用单位收到标的日期,即填制建设文档的日期")
+    @TableField("REAL_DELIVER_TIME")
     private Date realDeliverTime;
 
     /** 审核时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("审核时间")
+    @TableField("AUDIT_TIME")
     private Date auditTime;
 
     /** 预警状态(0:正常,1:预警) */
-    @Excel(name = "预警状态(0:正常,1:预警)")
+    @ApiModelProperty("预警状态(0:正常,1:预警)")
+    @TableField("WARN_STATUS")
     private String warnStatus;
 
     /** 项目状态(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:中标公示中,15:合同待填制,16:项目建设中,17:项目已完成)")
+    @TableField("PROJECT_STATUS")
     private Long projectStatus;
 
     /** 退回原因 */
-    @Excel(name = "退回原因")
+    @ApiModelProperty("退回原因")
+    @TableField("REFUSE_REASON")
     private String refuseReason;
 
     /** 滞后原因 */
-    @Excel(name = "滞后原因")
+    @ApiModelProperty("滞后原因")
+    @TableField("DELAY_REASON")
     private String delayReason;
 
     /** 调整建议 */
-    @Excel(name = "调整建议")
+    @ApiModelProperty("调整建议")
+    @TableField("ADJUST_ADVICE")
     private String adjustAdvice;
 
     /** 抽取招标代理机构id */
-    @Excel(name = "抽取招标代理机构id")
+    @ApiModelProperty("抽取招标代理机构id")
+    @TableField("AGENCY_ID")
     private Long agencyId;
 
     /** 抽取招标代理机构时间 */
-    @Excel(name = "抽取招标代理机构时间")
+    @ApiModelProperty("抽取招标代理机构时间")
+    @TableField("EXTRACT_AGENCY_TIME")
     private Date extractAgencyTime;
+
+    /** 调整建议 */
+    @ApiModelProperty("是否有质疑,1是,0否")
+    @TableField("CALL_QUESTION")
+    private String callQuestion;
+    @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;
 }

+ 124 - 67
purchase-system/src/main/java/com/ozs/pm/doman/PmDemandEngineering.java

@@ -1,118 +1,175 @@
 package com.ozs.pm.doman;
 
-import java.math.BigDecimal;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+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 lombok.AllArgsConstructor;
-import lombok.Builder;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 /**
- * 采购需求工程类对象 pm_demand_engineering
+ * 采购需求工程类表(PmDemandEngineering)实体类
  *
- * @author ruoyi
- * @date 2023-01-16
+ * @author makejava
+ * @since 2023-02-04 19:36:13
  */
+
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("采购需求工程类对象")
-public class PmDemandEngineering extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 主键 */
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_demand_engineering")
+@ApiModel(value = "采购需求工程类表", description = "")
+public class PmDemandEngineering implements Serializable {
+    private static final long serialVersionUID = 907919419476022620L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("主键")
+    @TableField("DEMAND_ENGINEERING_ID")
     private Long demandEngineeringId;
 
-    /** 需求ID */
-    @Excel(name = "需求ID")
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
     private Long demandId;
 
-    /** 工程项目名称 */
-    @Excel(name = "工程项目名称")
+
+    @ApiModelProperty("工程项目名称")
+    @TableField("ENGINEERING_NAME")
     private String engineeringName;
 
-    /** 建设地点 */
-    @Excel(name = "建设地点")
+
+    @ApiModelProperty("建设地点")
+    @TableField("CONSTRUCTION_LOCATION")
     private String constructionLocation;
 
-    /** 设计任务书批复文号 */
-    @Excel(name = "设计任务书批复文号")
+
+    @ApiModelProperty("设计任务书批复文号")
+    @TableField("DESIGN_ASSIGNMEN_APPROVAL_NUMBER")
     private String designAssignmenApprovalNumber;
 
-    /** 工程建设计划文号 */
-    @Excel(name = "工程建设计划文号")
-    private BigDecimal projectConstructionPlanNumber;
 
-    /** 任务书批复规模(㎡): */
-    @Excel(name = "任务书批复规模(㎡):")
-    private BigDecimal tassignmentApprovalScale;
+    @ApiModelProperty("工程建设计划文号")
+    @TableField("PROJECT_CONSTRUCTION_PLAN_NUMBER")
+    private Double projectConstructionPlanNumber;
+
+
+    @ApiModelProperty("任务书批复规模(㎡)")
+    @TableField("TASSIGNMENT_APPROVAL_SCALE")
+    private Double tassignmentApprovalScale;
 
-    /** 任务书批复投资 */
-    @Excel(name = "任务书批复投资")
+
+    @ApiModelProperty("任务书批复投资")
+    @TableField("TASSIGNMENT_APPROVAL_INVESTMEN")
     private String tassignmentApprovalInvestmen;
 
-    /** 规划许可文号 */
-    @Excel(name = "规划许可文号")
+
+    @ApiModelProperty("规划许可文号")
+    @TableField("PLANNING_LICENSE_NUMBER")
     private String planningLicenseNumber;
 
-    /** 密级处理 */
-    @Excel(name = "密级处理")
+
+    @ApiModelProperty("密级处理")
+    @TableField("CLASSIFIED_TREATMENT")
     private String classifiedTreatment;
 
-    /** 采购项目规模(㎡) */
-    @Excel(name = "采购项目规模(㎡)")
-    private BigDecimal procurementProjectScale;
 
-    /** 采购项目投资(万元) */
-    @Excel(name = "采购项目投资(万元)")
-    private BigDecimal procurementProjectInvestment;
+    @ApiModelProperty("采购项目规模(㎡)")
+    @TableField("PROCUREMENT_PROJECT_SCALE")
+    private Double procurementProjectScale;
+
+
+    @ApiModelProperty("采购项目投资(万元)")
+    @TableField("PROCUREMENT_PROJECT_INVESTMENT")
+    private Double procurementProjectInvestment;
 
-    /** 联系人 */
-    @Excel(name = "联系人")
+
+    @ApiModelProperty("联系人")
+    @TableField("LINKMAN")
     private String linkman;
 
-    /** 电话 */
-    @Excel(name = "电话")
+
+    @ApiModelProperty("电话")
+    @TableField("PHONE")
     private String phone;
 
-    /** 项目类别 */
-    @Excel(name = "项目类别")
+
+    @ApiModelProperty("项目类别(1勘察,2设计, 3施工,4监理,5咨询,6设备材料)")
+    @TableField("PROJECT_CATEGORY")
     private String projectCategory;
 
-    /** 承包方式 */
-    @Excel(name = "承包方式")
+
+    @ApiModelProperty("承包方式(1工程总承包,2施工总承包,3专业承包)")
+    @TableField("CONTRACTING_MODE")
     private String contractingMode;
 
-    /** 施工图是否完成(0未完成,1完成) */
-    @Excel(name = "施工图是否完成(0未完成,1完成)")
+
+    @ApiModelProperty("施工图是否完成(0未完成,1完成)")
+    @TableField("CONSTRUCTION_DRAWING")
     private String constructionDrawing;
 
-    /** 设计单位 */
-    @Excel(name = "设计单位")
+
+    @ApiModelProperty("设计单位")
+    @TableField("DESIGN_UNIT")
     private String designUnit;
 
-    /** 最高限价 */
-    @Excel(name = "最高限价")
-    private BigDecimal ceilingPrice;
 
-    /** 采购方式建议 */
-    @Excel(name = "采购方式建议")
+    @ApiModelProperty("最高限价")
+    @TableField("CEILING_PRICE")
+    private Double ceilingPrice;
+
+
+    @ApiModelProperty("采购方式建议(1公开招标,2邀请招标,3竞争性谈判,4询价,5单一来源)")
+    @TableField("PROCUREMENT_METHOD_SUGGEST")
     private String procurementMethodSuggest;
 
-    /** 投标(报价)人资质等级要求 */
-    @Excel(name = "投标(报价)人资质等级要求")
+
+    @ApiModelProperty("投标(报价)人资质等级要求")
+    @TableField("QUALIFICATION_LEVEL_REQUIREMENT")
     private String qualificationLevelRequirement;
 
-    /** 供应商 */
-    @Excel(name = "供应商")
+
+    @ApiModelProperty("供应商")
+    @TableField("SUPPLIER_ID")
     private Long supplierId;
 
-    /** 备注 */
-    @Excel(name = "备注")
+
+    @ApiModelProperty("备注")
+    @TableField("REMARKS")
     private String remarks;
 
+
+    @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;
+
+
 }

+ 88 - 45
purchase-system/src/main/java/com/ozs/pm/doman/PmDemandEquip.java

@@ -1,77 +1,120 @@
 package com.ozs.pm.doman;
 
-import java.math.BigDecimal;
 import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+
+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 lombok.AllArgsConstructor;
-import lombok.Builder;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 /**
- * 采购需求装备类对象 pm_demand_equip
+ * 采购需求装备类表(PmDemandEquip)实体类
  *
- * @author ruoyi
- * @date 2023-01-16
+ * @author makejava
+ * @since 2023-02-04 19:36:13
  */
+
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("采购需求装备类对象")
-public class PmDemandEquip extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 主键 */
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_demand_equip")
+@ApiModel(value = "采购需求装备类表", description = "")
+public class PmDemandEquip implements Serializable {
+    private static final long serialVersionUID = -13343009659577628L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("主键")
+    @TableField("DEMAND_EQUIP_ID")
     private Long demandEquipId;
 
-    /** 需求ID */
-    @Excel(name = "需求ID")
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
     private Long demandId;
 
-    /** 物资类别及品种名称 */
-    @Excel(name = "物资类别及品种名称")
+
+    @ApiModelProperty("物资类别及品种名称")
+    @TableField("TYPE_AND_NAME")
     private String typeAndName;
 
-    /** 规格型号长*宽*高 */
-    @Excel(name = "规格型号长*宽*高")
+
+    @ApiModelProperty("规格型号长*宽*高")
+    @TableField("SPECIFICATION")
     private String specification;
 
-    /** 质量技术标准(技术参数): */
-    @Excel(name = "质量技术标准(技术参数):")
+
+    @ApiModelProperty("质量技术标准(技术参数):")
+    @TableField("QUALITY_TECHNICAL_STANDARD")
     private String qualityTechnicalStandard;
 
-    /** 计量单位 */
-    @Excel(name = "计量单位")
+
+    @ApiModelProperty("计量单位")
+    @TableField("MEASUREMENT_UNIT")
     private String measurementUnit;
 
-    /** 采购数量 */
-    @Excel(name = "采购数量")
-    private BigDecimal procurementQuantity;
 
-    /** 单价(元) */
-    @Excel(name = "单价(元)")
-    private BigDecimal price;
+    @ApiModelProperty("采购数量")
+    @TableField("PROCUREMENT_QUANTITY")
+    private Double procurementQuantity;
+
 
-    /** 预算金额(万元) */
-    @Excel(name = "预算金额(万元)")
-    private BigDecimal budgetAmount;
+    @ApiModelProperty("单价(元)")
+    @TableField("PRICE")
+    private Double price;
 
-    /** 需求提报时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "需求提报时间", width = 30, dateFormat = "yyyy-MM-dd")
+
+    @ApiModelProperty("预算金额(万元)")
+    @TableField("BUDGET_AMOUNT")
+    private Double budgetAmount;
+
+
+    @ApiModelProperty("需求提报时间")
+    @TableField("DEMAND_COMMIT_TIME")
     private Date demandCommitTime;
 
-    /** 采购方式建议 */
-    @Excel(name = "采购方式建议")
+
+    @ApiModelProperty("采购方式建议(1公开招标,2邀请招标,3竞争性谈判,4询价,5单一来源)")
+    @TableField("PROCUREMENT_METHOD_SUGGEST")
     private String procurementMethodSuggest;
 
-    /** 备注 */
-    @Excel(name = "备注")
+
+    @ApiModelProperty("备注")
+    @TableField("REMARKS")
     private String remarks;
 
+
+    @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;
+
+
 }

+ 90 - 71
purchase-system/src/main/java/com/ozs/pm/doman/PmDemandMaterials.java

@@ -1,101 +1,120 @@
 package com.ozs.pm.doman;
 
-import java.math.BigDecimal;
 import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+
+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 lombok.AllArgsConstructor;
-import lombok.Builder;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 /**
- * 采购需求物资类对象 pm_demand_materials
+ * 采购需求物资类表(PmDemandMaterials)实体类
  *
- * @author ruoyi
- * @date 2023-01-16
+ * @author makejava
+ * @since 2023-02-04 19:36:14
  */
+
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("采购需求物资类对象")
-public class PmDemandMaterials extends BaseEntity {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_demand_materials")
+@ApiModel(value = "采购需求物资类表", description = "")
+public class PmDemandMaterials implements Serializable {
+    private static final long serialVersionUID = -69155120615102721L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("主键")
+    @TableField("DEMAND_MATERIALS_ID")
     private Long demandMaterialsId;
 
-    /**
-     * 需求ID
-     */
-    @Excel(name = "需求ID")
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
     private Long demandId;
 
-    /**
-     * 物资类别及品种名称
-     */
-    @Excel(name = "物资类别及品种名称")
+
+    @ApiModelProperty("物资类别及品种名称")
+    @TableField("TYPE_AND_NAME")
     private String typeAndName;
 
-    /**
-     * 规格型号长*宽*高
-     */
-    @Excel(name = "规格型号长*宽*高")
+
+    @ApiModelProperty("规格型号长*宽*高")
+    @TableField("SPECIFICATION")
     private String specification;
 
-    /**
-     * 质量技术标准(技术参数):
-     */
-    @Excel(name = "质量技术标准(技术参数):")
+
+    @ApiModelProperty("质量技术标准(技术参数):")
+    @TableField("QUALITY_TECHNICAL_STANDARD")
     private String qualityTechnicalStandard;
 
-    /**
-     * 计量单位
-     */
-    @Excel(name = "计量单位")
+
+    @ApiModelProperty("计量单位")
+    @TableField("MEASUREMENT_UNIT")
     private String measurementUnit;
 
-    /**
-     * 采购数量
-     */
-    @Excel(name = "采购数量")
-    private BigDecimal procurementQuantity;
-
-    /**
-     * 单价(元)
-     */
-    @Excel(name = "单价(元)")
-    private BigDecimal price;
-
-    /**
-     * 预算金额(万元)
-     */
-    @Excel(name = "预算金额(万元)")
-    private BigDecimal budgetAmount;
-
-    /**
-     * 需求提报时间
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "需求提报时间", width = 30, dateFormat = "yyyy-MM-dd")
+
+    @ApiModelProperty("采购数量")
+    @TableField("PROCUREMENT_QUANTITY")
+    private Double procurementQuantity;
+
+
+    @ApiModelProperty("单价(元)")
+    @TableField("PRICE")
+    private Double price;
+
+
+    @ApiModelProperty("预算金额(万元)")
+    @TableField("BUDGET_AMOUNT")
+    private Double budgetAmount;
+
+
+    @ApiModelProperty("需求提报时间")
+    @TableField("DEMAND_COMMIT_TIME")
     private Date demandCommitTime;
 
-    /**
-     * 采购方式建议
-     */
-    @Excel(name = "采购方式建议")
+
+    @ApiModelProperty("采购方式建议(1公开招标,2邀请招标,3竞争性谈判,4询价,5单一来源)")
+    @TableField("PROCUREMENT_METHOD_SUGGEST")
     private String procurementMethodSuggest;
 
-    /**
-     * 备注
-     */
-    @Excel(name = "备注")
+
+    @ApiModelProperty("备注")
+    @TableField("REMARKS")
     private String remarks;
 
 
+    @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;
+
+
 }

+ 89 - 43
purchase-system/src/main/java/com/ozs/pm/doman/PmDemandServe.java

@@ -1,74 +1,120 @@
 package com.ozs.pm.doman;
 
-import java.math.BigDecimal;
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+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 lombok.AllArgsConstructor;
-import lombok.Builder;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 /**
- * 采购需求服务类对象 pm_demand_serve
+ * 采购需求服务类表(PmDemandServe)实体类
  *
- * @author ruoyi
- * @date 2023-01-16
+ * @author makejava
+ * @since 2023-02-04 19:36:15
  */
+
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("采购需求服务类对象")
-public class PmDemandServe extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 主键 */
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_demand_serve")
+@ApiModel(value = "采购需求服务类表", description = "")
+public class PmDemandServe implements Serializable {
+    private static final long serialVersionUID = -91312266847333541L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("主键")
+    @TableField("DEMAND_SERVE_ID")
     private Long demandServeId;
 
-    /** 需求ID */
-    @Excel(name = "需求ID")
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
     private Long demandId;
 
-    /** 服务项目名称 */
-    @Excel(name = "服务项目名称")
+
+    @ApiModelProperty("服务项目名称")
+    @TableField("SERVICE_NAME")
     private String serviceName;
 
-    /** 技术服务要求 */
-    @Excel(name = "技术服务要求")
+
+    @ApiModelProperty("技术服务要求")
+    @TableField("TECHNICAL_SERVICE_REQUIREMENT")
     private String technicalServiceRequirement;
 
-    /** 计量单位 */
-    @Excel(name = "计量单位")
+
+    @ApiModelProperty("计量单位")
+    @TableField("MEASUREMENT_UNIT")
     private String measurementUnit;
 
-    /** 采购数量 */
-    @Excel(name = "采购数量")
-    private BigDecimal procurementQuantity;
 
-    /** 单价(元) */
-    @Excel(name = "单价(元)")
-    private BigDecimal price;
+    @ApiModelProperty("采购数量")
+    @TableField("PROCUREMENT_QUANTITY")
+    private Double procurementQuantity;
+
+
+    @ApiModelProperty("单价(元)")
+    @TableField("PRICE")
+    private Double price;
 
-    /** 预算金额(万元) */
-    @Excel(name = "预算金额(万元)")
-    private BigDecimal budgetAmount;
 
-    /** 交货期限 */
-    @Excel(name = "交货期限")
+    @ApiModelProperty("预算金额(万元)")
+    @TableField("BUDGET_AMOUNT")
+    private Double budgetAmount;
+
+
+    @ApiModelProperty("交货期限")
+    @TableField("DELIVERY_TIME_LIMIT")
     private String deliveryTimeLimit;
 
-    /** 采购方式建议 */
-    @Excel(name = "采购方式建议")
+
+    @ApiModelProperty("采购方式建议(1公开招标,2邀请招标,3竞争性谈判,4询价,5单一来源)")
+    @TableField("PROCUREMENT_METHOD_SUGGEST")
     private String procurementMethodSuggest;
 
-    /** 供应商 */
-    @Excel(name = "供应商")
+
+    @ApiModelProperty("供应商")
+    @TableField("SUPPLIER_ID")
     private Long supplierId;
 
-    /** 备注 */
-    @Excel(name = "备注")
+
+    @ApiModelProperty("备注")
+    @TableField("REMARKS")
     private String remarks;
 
+
+    @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;
+
+
 }

+ 61 - 23
purchase-system/src/main/java/com/ozs/pm/doman/PmFlowChart.java

@@ -1,42 +1,80 @@
 package com.ozs.pm.doman;
 
-import com.ozs.common.annotation.Excel;
-import com.ozs.common.core.domain.BaseEntity;
+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 lombok.AllArgsConstructor;
-import lombok.Builder;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 /**
- * 流程图对象 pm_flow_chart
+ * 流程图表(PmFlowChart)实体类
  *
- * @author ruoyi
- * @date 2023-01-25
+ * @author makejava
+ * @since 2023-02-04 19:36:15
  */
+
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("流程图对象")
-public class PmFlowChart extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** 主键 */
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_flow_chart")
+@ApiModel(value = "流程图表", description = "")
+public class PmFlowChart implements Serializable {
+    private static final long serialVersionUID = 313515206301363060L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("主键")
+    @TableField("FLOW_CHART_ID")
     private Long flowChartId;
 
-    /** 模块名称 */
-    @Excel(name = "模块名称")
+
+    @ApiModelProperty("模块名称")
+    @TableField("MODULE_NAME")
     private String moduleName;
 
-    /** 部门角色 */
-    @Excel(name = "部门角色")
+
+    @ApiModelProperty("部门角色")
+    @TableField("DEPT_ROLE")
     private String deptRole;
 
-    /** 提示文案 */
-    @Excel(name = "提示文案")
+
+    @ApiModelProperty("提示文案")
+    @TableField("PROMPT_WORDS")
     private String promptWords;
 
 
+    @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;
+
+
 }

+ 1 - 1
purchase-system/src/main/java/com/ozs/pm/doman/PmReleaseAnnouncement.java

@@ -49,7 +49,7 @@ public class PmReleaseAnnouncement implements Serializable {
 
     @ApiModelProperty("发布时间")
     @TableField("RELEASE_TIME")
-    private String releaseTime;
+    private Date releaseTime;
 
 
     @ApiModelProperty("开标地点")

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

@@ -0,0 +1,60 @@
+package com.ozs.pm.doman.vo.requestVo;
+
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileRef;
+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 PmBidFailureReqVo implements Serializable {
+    private static final long serialVersionUID = 491684278331772388L;
+
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("流标原因")
+    private String bidFailureReason;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("流标时间")
+    private Date bidFailureTime;
+
+
+    @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;
+
+    /**
+     * 上传附件
+     */
+    @ApiModelProperty("上传附件")
+    private List<SysFileRef> sysFileRefs;
+}

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

@@ -0,0 +1,20 @@
+package com.ozs.pm.doman.vo.requestVo;
+
+
+import com.ozs.common.core.domain.BaseEntity;
+import com.ozs.pm.doman.PmBidOpening;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PmBidOpeningFillReqVo extends BaseEntity {
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+    @ApiModelProperty("开标信息列表")
+    private List<PmBidOpening> pmBidOpeningList;
+
+}

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

@@ -0,0 +1,69 @@
+package com.ozs.pm.doman.vo.requestVo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileRef;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 中标基本情况表(PmBidWinning)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@ApiModel(value = "中标基本情况表", description = "")
+public class PmBidWinningReqVo implements Serializable {
+    private static final long serialVersionUID = -23785941414293726L;
+
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("开标信息ID")
+    private Long bidOpeningId;
+
+
+    @ApiModelProperty("中标金额(万元)")
+    private Double bidWinningAmount;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("中标公告时间")
+    private Date bidAnnouncementTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("中标公告截止时间")
+    private Date bidAnnouncementCloseTime;
+
+
+    @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;
+
+    /**
+     * 上传附件
+     */
+    @ApiModelProperty("上传附件")
+    private List<SysFileRef> sysFileRefs;
+}

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

@@ -0,0 +1,54 @@
+package com.ozs.pm.doman.vo.requestVo;
+
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileRef;
+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 PmCallQuestionReqVo implements Serializable {
+    private static final long serialVersionUID = 491684278331772388L;
+
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("是否有质疑,1是,0否")
+    private String callQuestion;
+
+
+    @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;
+
+    /**
+     * 上传附件
+     */
+    @ApiModelProperty("上传附件")
+    private List<SysFileRef> sysFileRefs;
+}

+ 6 - 6
purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmReleaseAnnouncementReqVo.java

@@ -37,21 +37,21 @@ public class PmReleaseAnnouncementReqVo implements Serializable {
     @ApiModelProperty("发布公告平台,1:军队采购网,2:全军武器装备采购网")
     private String announcementPlatform;
 
-
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("发布时间 yyyy-MM-dd")
-    private String releaseTime;
+    private Date releaseTime;
 
 
     @ApiModelProperty("开标地点")
     private String bidOpenPlace;
 
-
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("报名截止时间 yyyy-MM-dd")
-    private String enrollCloseTime;
-
+    private Date enrollCloseTime;
 
+    @JsonFormat(pattern = "yyyy-MM-dd")
     @ApiModelProperty("开标时间 yyyy-MM-dd")
-    private String tenderOpenTime;
+    private Date tenderOpenTime;
 
     @ApiModelProperty("备注")
     private String remarks;

+ 7 - 1
purchase-system/src/main/java/com/ozs/pm/service/IPmDemandService.java

@@ -95,10 +95,16 @@ public interface IPmDemandService extends IService<PmDemand>
 
     boolean uploadFile(Long redId,Integer fileType, List<SysFileRef> sysFileRefs,String upateBy);
 
-    boolean insertPmReleaseAnnouncement(PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo);
+    boolean insertPmReleaseAnnouncement(PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo) throws Exception;
 
     boolean insertExpertBatch(PmBaseExpertFillReqVo pmBaseExpertFillReqVo) throws Exception;
 
     boolean extractExpertBatch(PmBaseExpertExtractReqVo pmBaseExpertExtractReqVo) throws Exception;
 
+    boolean insertBidOpeningBatch(PmBidOpeningFillReqVo pmBidOpeningFillReqVo) throws Exception;
+
+    boolean insertPmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception;
+
+    boolean insertPmBidFailure(PmBidFailureReqVo pmBidFailureReqVo) throws Exception;
+
 }

+ 92 - 3
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -68,6 +68,13 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     private BaseExpertService baseExpertService;
     @Autowired
     private PmDemandExpertRefService pmDemandExpertRefService;
+    @Autowired
+    private PmBidOpeningService pmBidOpeningService;
+
+    @Autowired
+    private PmBidWinningService pmBidWinningService;
+    @Autowired
+    private PmBidFailureService pmBidFailureService;
 
     /**
      * 查询采购需求
@@ -753,11 +760,27 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
 
     }
 
-    public boolean insertPmReleaseAnnouncement(PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo){
-        uploadFile(pmReleaseAnnouncementReqVo.getDemandId(), SysFileRefEnum.PM_BID_FILE.getType(),pmReleaseAnnouncementReqVo.getSysFileRefs(),pmReleaseAnnouncementReqVo.getUpdateBy());
+    public boolean insertPmReleaseAnnouncement(PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo) throws Exception {
+
         PmReleaseAnnouncement pmReleaseAnnouncement = new PmReleaseAnnouncement();
         BeanUtils.copyProperties(pmReleaseAnnouncementReqVo,pmReleaseAnnouncement);
-        return pmReleaseAnnouncementService.save(pmReleaseAnnouncement);
+        if(pmReleaseAnnouncementService.save(pmReleaseAnnouncement)){
+            if (uploadFile(pmReleaseAnnouncement.getId(), SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType(),pmReleaseAnnouncementReqVo.getSysFileRefs(),pmReleaseAnnouncementReqVo.getUpdateBy())) {
+                PmDemand pmDemandUpdate = new PmDemand();
+                pmDemandUpdate.setDemandId(pmReleaseAnnouncementReqVo.getDemandId());
+                pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_OPEN_BID.getCode()));
+                pmDemandUpdate.setUpdateTime(pmReleaseAnnouncementReqVo.getUpdateTime());
+                pmDemandUpdate.setUpdateBy(pmReleaseAnnouncementReqVo.getUpdateBy());
+                 return this.updateById(pmDemandUpdate);
+                 //TODO 发布公告生成后,会默认将该数据同步到公告管理和首页中
+
+            } else {
+                return false;
+            }
+        } else {
+            return false;
+        }
+
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -914,4 +937,70 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
           return pmDemandExpertRefService.saveBatch(pmDemandExpertRefList);
       }
     }
+
+    @Transactional(rollbackFor = Exception.class)
+   public boolean insertBidOpeningBatch(PmBidOpeningFillReqVo pmBidOpeningFillReqVo) throws Exception {
+       PmDemand pmDemand = this.getById(pmBidOpeningFillReqVo.getDemandId());
+       if(ObjectUtils.isEmpty(pmDemand)){
+           throw new Exception("参数错误");
+       }
+       Date now = new Date();
+       List<PmBidOpening> pmBidOpeningList = pmBidOpeningFillReqVo.getPmBidOpeningList();
+       for (PmBidOpening pmBidOpening : pmBidOpeningList) {
+           if(ObjectUtils.isEmpty(pmBidOpening.getBidderName())){
+               throw new Exception("投标人名称不能为空");
+           }
+           if(ObjectUtils.isEmpty(pmBidOpening.getScore())){
+               throw new Exception("分数不能为空");
+           }
+           pmBidOpening.setDemandId(pmBidOpeningFillReqVo.getDemandId());
+           pmBidOpening.setOpenBidTime(now); //TODO
+           pmBidOpening.setCreateBy(pmBidOpeningFillReqVo.getCreateBy());
+           pmBidOpening.setCreateTime(now);
+           pmBidOpening.setUpdateBy(pmBidOpeningFillReqVo.getUpdateBy());
+           pmBidOpening.setUpdateTime(now);
+       }
+       if(pmBidOpeningService.saveBatch(pmBidOpeningList)) {
+           PmDemand pmDemandUpdate = new PmDemand();
+           pmDemandUpdate.setDemandId(pmDemand.getDemandId());
+           pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_BID_ANNOUNCEMENT.getCode()));
+           pmDemandUpdate.setUpdateTime(now);
+           pmDemandUpdate.setUpdateBy(pmBidOpeningFillReqVo.getUpdateBy());
+           return this.updateById(pmDemandUpdate);
+       } else {
+           return false;
+       }
+   }
+
+   public boolean insertPmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception {
+       uploadFile(pmBidWinningReqVo.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(),pmBidWinningReqVo.getSysFileRefs(),pmBidWinningReqVo.getUpdateBy());
+       PmBidWinning pmBidWinning = new PmBidWinning();
+       BeanUtils.copyProperties(pmBidWinningReqVo,pmBidWinning);
+       if(pmBidWinningService.save(pmBidWinning)){
+           if(uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(),pmBidWinningReqVo.getSysFileRefs(),pmBidWinningReqVo.getUpdateBy())) {
+               PmDemand pmDemandUpdate = new PmDemand();
+               pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId());
+               pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.BIDDING_PUBLICITY.getCode()));
+               pmDemandUpdate.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
+               pmDemandUpdate.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
+               return this.updateById(pmDemandUpdate);
+           } else {
+               return false;
+           }
+       } else {
+           return false;
+       }
+   }
+
+    public boolean insertPmBidFailure(PmBidFailureReqVo pmBidFailureReqVo) throws Exception {
+
+        PmBidFailure pmBidFailure = new PmBidFailure();
+        BeanUtils.copyProperties(pmBidFailureReqVo,pmBidFailure);
+        if(pmBidFailureService.save(pmBidFailure)){
+            return uploadFile(pmBidFailure.getId(), SysFileRefEnum.PM_BID_FAILURE_FILE.getType(),pmBidFailureReqVo.getSysFileRefs(),pmBidFailureReqVo.getUpdateBy());
+        } else {
+            return false;
+        }
+
+    }
 }