Parcourir la source

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/purchase

gao.qiang il y a 2 ans
Parent
commit
421b74c93b
51 fichiers modifiés avec 1820 ajouts et 462 suppressions
  1. 2 2
      purchase-admin/src/main/java/com/ozs/web/controller/base/BaseAgencyController.java
  2. 90 20
      purchase-admin/src/main/java/com/ozs/web/controller/plan/ProvisionalPlanController.java
  3. 5 2
      purchase-admin/src/main/java/com/ozs/web/controller/pm/PmDemandController.java
  4. 6 2
      purchase-admin/src/main/java/com/ozs/web/controller/pm/PmTaskReleaseController.java
  5. 10 5
      purchase-common/src/main/java/com/ozs/common/enums/PmProjectStatus.java
  6. 4 0
      purchase-system/src/main/java/com/ozs/plan/doman/ProvisionalPlan.java
  7. 9 0
      purchase-system/src/main/java/com/ozs/plan/doman/vo/requestVo/ProvisionalPlanVo.java
  8. 11 0
      purchase-system/src/main/java/com/ozs/plan/mapper/ProvisionalPlanMapper.java
  9. 15 0
      purchase-system/src/main/java/com/ozs/plan/service/ProvisionalPlanService.java
  10. 16 2
      purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java
  11. 140 2
      purchase-system/src/main/java/com/ozs/plan/service/impl/ProvisionalPlanServiceImpl.java
  12. 75 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmBidFailure.java
  13. 76 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmBidOpening.java
  14. 85 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmBidWinning.java
  15. 90 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmContractInfo.java
  16. 85 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmContractUnitRef.java
  17. 85 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmProjectConstruction.java
  18. 96 0
      purchase-system/src/main/java/com/ozs/pm/doman/PmReleaseAnnouncement.java
  19. 5 2
      purchase-system/src/main/java/com/ozs/pm/doman/vo/requestVo/PmDemandReqVo.java
  20. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmBidFailureMapper.java
  21. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmBidOpeningMapper.java
  22. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmBidWinningMapper.java
  23. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmContractInfoMapper.java
  24. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmContractUnitRefMapper.java
  25. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmProjectConstructionMapper.java
  26. 15 0
      purchase-system/src/main/java/com/ozs/pm/mapper/PmReleaseAnnouncementMapper.java
  27. 1 1
      purchase-system/src/main/java/com/ozs/pm/service/IPmDemandService.java
  28. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmBidFailureService.java
  29. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmBidOpeningService.java
  30. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmBidWinningService.java
  31. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmContractInfoService.java
  32. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmContractUnitRefService.java
  33. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmProjectConstructionService.java
  34. 14 0
      purchase-system/src/main/java/com/ozs/pm/service/PmReleaseAnnouncementService.java
  35. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidFailureServiceImpl.java
  36. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidOpeningServiceImpl.java
  37. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidWinningServiceImpl.java
  38. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmContractInfoServiceImpl.java
  39. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmContractUnitRefServiceImpl.java
  40. 177 156
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java
  41. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmProjectConstructionServiceImpl.java
  42. 18 0
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmReleaseAnnouncementServiceImpl.java
  43. 174 168
      purchase-system/src/main/resources/mapper/plan/PlanQuarterMapper.xml
  44. 192 100
      purchase-system/src/main/resources/mapper/plan/ProvisionalPlanMapper.xml
  45. 6 0
      purchase-system/src/main/resources/mapper/pm/PmBidFailureMapper.xml
  46. 6 0
      purchase-system/src/main/resources/mapper/pm/PmBidOpeningMapper.xml
  47. 6 0
      purchase-system/src/main/resources/mapper/pm/PmBidWinningMapper.xml
  48. 6 0
      purchase-system/src/main/resources/mapper/pm/PmContractInfoMapper.xml
  49. 6 0
      purchase-system/src/main/resources/mapper/pm/PmContractUnitRefMapper.xml
  50. 6 0
      purchase-system/src/main/resources/mapper/pm/PmProjectConstructionMapper.xml
  51. 6 0
      purchase-system/src/main/resources/mapper/pm/PmReleaseAnnouncementMapper.xml

+ 2 - 2
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseAgencyController.java

@@ -215,7 +215,7 @@ public class BaseAgencyController extends BaseController {
         return success(page);
     }
 
-    @ApiOperation(value = "根据项目名称模糊查询项目信息")
+    @ApiOperation(value = "根据项目名称模糊查询项目信息-代理抽取查询用")
     @PostMapping("/listProjectInfoLikeName")
     @PreAuthorize("@ss.hasPermi('base:agency:listProjectInfoLikeName')")
     @Log(title = ModularConstans.agency, businessType = BusinessType.QUERY)
@@ -223,7 +223,7 @@ public class BaseAgencyController extends BaseController {
                                       @RequestBody BasePolicyPageReqVo vo) {
         LambdaQueryWrapper<MonthlyReconciliation> lw = new LambdaQueryWrapper<>();
         lw.isNull(MonthlyReconciliation::getAgencyId);
-        lw.eq(MonthlyReconciliation::getProjectStatus, PmProjectStatus.BID_INFO_WAIT_FILL.getCode());
+        lw.eq(MonthlyReconciliation::getProjectStatus, PmProjectStatus.WAIT_SELECT_AGENT.getCode());
         if (!StringUtils.isBlank(vo.getName())) {
             lw.like(MonthlyReconciliation::getProjectName, vo.getName());
         }

+ 90 - 20
purchase-admin/src/main/java/com/ozs/web/controller/plan/ProvisionalPlanController.java

@@ -3,6 +3,7 @@ package com.ozs.web.controller.plan;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.pagehelper.PageInfo;
 import com.ozs.common.annotation.Log;
 import com.ozs.common.constant.ModularConstans;
 import com.ozs.common.core.controller.BaseController;
@@ -15,6 +16,7 @@ import com.ozs.common.utils.poi.ExcelUtil;
 import com.ozs.framework.web.service.TokenService;
 import com.ozs.plan.doman.PlanYears;
 import com.ozs.plan.doman.ProvisionalPlan;
+import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
 import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
 import com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo;
 import com.ozs.plan.service.ProvisionalPlanService;
@@ -65,20 +67,24 @@ public class ProvisionalPlanController extends BaseController {
         return toAjax(provisionalPlanService.save(provisionalPlan));
     }
 
-    @ApiOperation(value = "删除临时计划", notes = "必传 plan_year_id")
+    @ApiOperation(value = "删除临时计划", notes = "必传 plan_practical_id")
     @PostMapping("/deleteProvisionalPlan")
+    @PreAuthorize("@ss.hasPermi('base:provisionalPlan:deleteProvisionalPlan')")
+    @Log(title = ModularConstans.policy, businessType = BusinessType.DELETE)
     public AjaxResult deleteProvisionalPlan(@RequestBody ProvisionalPlan provisionalPlan) {
-        if (StringUtils.isNull(provisionalPlan) || StringUtils.isNull(provisionalPlan.getPlanYearId())) {
-            return error("专家库id不能为空");
+        if (StringUtils.isNull(provisionalPlan) || StringUtils.isNull(provisionalPlan.getPlanPracticalId())) {
+            return error("临时计划id不能为空");
         }
-        return toAjax(provisionalPlanService.deleteProvisionalPlanById(provisionalPlan.getPlanYearId()));
+        return toAjax(provisionalPlanService.deleteProvisionalPlanById(provisionalPlan.getPlanPracticalId()));
     }
 
     @ApiOperation(value = "修改临时计划", notes = "必传 plan_year_id 及修改数据")
     @PostMapping("/updateProvisionalPlan")
+    @PreAuthorize("@ss.hasPermi('base:provisionalPlan:updateProvisionalPlan')")
+    @Log(title = ModularConstans.policy, businessType = BusinessType.UPDATE)
     public AjaxResult updateProvisionalPlan(@RequestBody ProvisionalPlan provisionalPlan) {
-        if (StringUtils.isNull(provisionalPlan) || StringUtils.isNull(provisionalPlan.getPlanYearId())) {
-            return error("专家库id和修改数据不能为空");
+        if (StringUtils.isNull(provisionalPlan) || StringUtils.isNull(provisionalPlan.getPlanPracticalId())) {
+            return error("临时计划id和修改数据不能为空");
         }
         return toAjax(provisionalPlanService.updateProvisionalPlanById(provisionalPlan));
     }
@@ -86,27 +92,58 @@ public class ProvisionalPlanController extends BaseController {
     @ApiOperation(value = "查询临时计划")
     @PostMapping("/selectProvisionalPlan")
     public AjaxResult selectProvisionalPlan(@RequestBody ProvisionalPlanVo provisionalPlanVo) {
-        LambdaQueryWrapper<ProvisionalPlan> lw = new LambdaQueryWrapper<ProvisionalPlan>();
-        // planType计划类型(0:季度计划,1:临时计划)
-        lw.eq(ProvisionalPlan::getPlanType, "1");
-        if (!StringUtils.isBlank(provisionalPlanVo.getProjectName())) {
-            lw.like(ProvisionalPlan::getProjectName, provisionalPlanVo.getProjectName());
-        }
-        if (!StringUtils.isBlank(provisionalPlanVo.getPurchaseServices())) {
-            lw.eq(ProvisionalPlan::getPurchaseServices, provisionalPlanVo.getPurchaseServices());
-        }
-        if (!ObjectUtils.isEmpty(provisionalPlanVo.getProjectStatus())) {
-            lw.eq(ProvisionalPlan::getProjectStatus, provisionalPlanVo.getProjectStatus());
+//        LambdaQueryWrapper<ProvisionalPlan> lw = new LambdaQueryWrapper<ProvisionalPlan>();
+//        // planType计划类型(0:季度计划,1:临时计划)
+//        lw.eq(ProvisionalPlan::getPlanType, "1");
+//        if (!StringUtils.isBlank(provisionalPlanVo.getProjectName())) {
+//            lw.like(ProvisionalPlan::getProjectName, provisionalPlanVo.getProjectName());
+//        }
+//        if (!StringUtils.isBlank(provisionalPlanVo.getPurchaseServices())) {
+//            lw.eq(ProvisionalPlan::getPurchaseServices, provisionalPlanVo.getPurchaseServices());
+//        }
+//        if (!ObjectUtils.isEmpty(provisionalPlanVo.getProjectStatus())) {
+//            lw.eq(ProvisionalPlan::getProjectStatus, provisionalPlanVo.getProjectStatus());
+//        }
+//        if (!ObjectUtils.isEmpty(provisionalPlanVo.getStartTime()) || !ObjectUtils.isEmpty(provisionalPlanVo.getEndTime())) {
+//            lw.between(ProvisionalPlan::getPlanDemandSubTime, provisionalPlanVo.getStartTime(), provisionalPlanVo.getEndTime());
+//        }
+//        IPage<ProvisionalPlan> page = provisionalPlanService.page(new Page<ProvisionalPlan>(provisionalPlanVo.getPageNum(), provisionalPlanVo.getPageSize()), lw);
+//        return success(page);
+        if (StringUtils.isNull(provisionalPlanVo)
+                || StringUtils.isNull(provisionalPlanVo.getPageNum())
+                || StringUtils.isNull(provisionalPlanVo.getPageSize())) {
+            throw new ServiceException("查询条件及分页不能为空!");
         }
-        if (!ObjectUtils.isEmpty(provisionalPlanVo.getStartTime()) || !ObjectUtils.isEmpty(provisionalPlanVo.getEndTime())) {
-            lw.between(ProvisionalPlan::getPlanDemandSubTime, provisionalPlanVo.getStartTime(), provisionalPlanVo.getEndTime());
+        PageInfo<ProvisionalPlan> page = provisionalPlanService.selectProvisionalPlan(provisionalPlanVo);
+        return success(page);
+    }
+
+    @ApiOperation(value = "查询临时计划-审核单位")
+    @PostMapping("/selectProvisionalPlanAudit")
+    public AjaxResult selectProvisionalPlanAudit(@RequestBody ProvisionalPlanVo provisionalPlanVo) {
+        if (StringUtils.isNull(provisionalPlanVo)
+                || StringUtils.isNull(provisionalPlanVo.getPageNum())
+                || StringUtils.isNull(provisionalPlanVo.getPageSize())) {
+            throw new ServiceException("查询条件及分页不能为空!");
         }
-        IPage<ProvisionalPlan> page = provisionalPlanService.page(new Page<ProvisionalPlan>(provisionalPlanVo.getPageNum(), provisionalPlanVo.getPageSize()), lw);
+        PageInfo<ProvisionalPlan> page = provisionalPlanService.selectProvisionalPlanAudit(provisionalPlanVo);
         return success(page);
     }
 
+    @ApiOperation(value = "查询临时计划详情")
+    @PostMapping("/selectById")
+    public AjaxResult selectById(@RequestBody ProvisionalPlanVo provisionalPlanVo) {
+        if (StringUtils.isNull(provisionalPlanVo) || StringUtils.isNull(provisionalPlanVo.getPlanPracticalId())) {
+            throw new ServiceException("id不能为空!");
+        }
+        ProvisionalPlan provisionalPlan = provisionalPlanService.seletById(provisionalPlanVo.getPlanPracticalId());
+        return success(provisionalPlan);
+    }
+
     @ApiOperation(value = "导入年临时计划")
     @PostMapping("/importProvisionalPlan")
+    @PreAuthorize("@ss.hasPermi('base:provisionalPlan:importProvisionalPlan')")
+    @Log(title = ModularConstans.policy, businessType = BusinessType.INSERT)
     public AjaxResult importProvisionalPlan(MultipartFile file, boolean updateSupport) throws Exception {
         ExcelUtil<ProvisionalPlan> util = new ExcelUtil<>(ProvisionalPlan.class);
         List<ProvisionalPlan> provisionalPlans = util.importExcel(file.getInputStream());
@@ -126,4 +163,37 @@ public class ProvisionalPlanController extends BaseController {
         ExcelUtil<ProvisionalPlan> util = new ExcelUtil<>(ProvisionalPlan.class);
         util.exportExcel(response, list, "临时计划数据");
     }
+
+    @ApiOperation(value = "提交临时计划")
+    @PostMapping("/commitProvisionalPlan")
+    @PreAuthorize("@ss.hasPermi('base:provisionalPlan:commitProvisionalPlan')")
+    @Log(title = ModularConstans.policy, businessType = BusinessType.UPDATE)
+    public AjaxResult commitProvisionalPlan(@RequestBody ProvisionalPlanVo provisionalPlanVo) {
+        if (StringUtils.isNull(provisionalPlanVo) || StringUtils.isNull(provisionalPlanVo.getPlanPracticalId())) {
+            return error("提交的临时计划ID不能为空!");
+        }
+        return toAjax(provisionalPlanService.commitProvisionalPlan(provisionalPlanVo));
+    }
+
+    @ApiOperation(value = "审核通过")
+    @PostMapping("/auditPass")
+    public AjaxResult auditPass(@RequestBody ProvisionalPlanVo provisionalPlanVo, HttpServletRequest request) {
+        if (StringUtils.isNull(provisionalPlanVo) || StringUtils.isNull(provisionalPlanVo.getPlanPracticalId())) {
+            return error("审核数据ID不能为空!");
+        }
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        provisionalPlanVo.setUpdated(String.valueOf(loginUser.getUserId()));
+        return provisionalPlanService.auditPass(provisionalPlanVo);
+    }
+
+    @ApiOperation(value = "审核不通过")
+    @PostMapping("/auditNoPass")
+    public AjaxResult auditNoPass(@RequestBody ProvisionalPlanVo provisionalPlanVo, HttpServletRequest request) {
+        if (StringUtils.isNull(provisionalPlanVo) || StringUtils.isNull(provisionalPlanVo.getPlanPracticalId())) {
+            return error("审核数据ID不能为空!");
+        }
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        provisionalPlanVo.setUpdated(String.valueOf(loginUser.getUserId()));
+        return provisionalPlanService.auditNoPass(provisionalPlanVo);
+    }
 }

+ 5 - 2
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmDemandController.java

@@ -51,13 +51,16 @@ public class PmDemandController extends BaseController {
     /**
      * 查看详情
      */
-    @ApiOperation(value = "查看详情", notes = "必传demandId,其他字段不传")
+    @ApiOperation(value = "查看详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),其他字段不传")
     @PostMapping("/view")
     public AjaxResult view(@RequestBody PmDemandReqVo pmDemandReqVo) {
         if(pmDemandReqVo.getDemandId() == null){
             return AjaxResult.error("demandId不能为空");
         }
-        return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId()));
+        if(StringUtils.isEmpty(pmDemandReqVo.getDetailType())){
+            return AjaxResult.error("详情的类型不能为空");
+        }
+        return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId(),pmDemandReqVo.getDetailType()));
     }
 
     /**

+ 6 - 2
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmTaskReleaseController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ozs.common.core.controller.BaseController;
 import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.common.utils.StringUtils;
 import com.ozs.framework.web.service.TokenService;
 import com.ozs.pm.doman.vo.requestVo.PmBookBuildingReqVo;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
@@ -62,12 +63,15 @@ public class PmTaskReleaseController extends BaseController {
     /**
      * 查看详情
      */
-    @ApiOperation(value = "查看详情", notes = "必传demandId,其他字段不传")
+    @ApiOperation(value = "查看详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),其他字段不传")
     @PostMapping("/view")
     public AjaxResult view(@RequestBody PmDemandReqVo pmDemandReqVo) {
         if(pmDemandReqVo.getDemandId() == null){
             return AjaxResult.error("demandId不能为空");
         }
-        return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId()));
+        if(StringUtils.isEmpty(pmDemandReqVo.getDetailType())){
+            return AjaxResult.error("详情的类型不能为空");
+        }
+        return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId(), pmDemandReqVo.getDetailType()));
     }
 }

+ 10 - 5
purchase-common/src/main/java/com/ozs/common/enums/PmProjectStatus.java

@@ -1,7 +1,7 @@
 package com.ozs.common.enums;
 
 /**
- * 项目审核状态
+ * 项目管理的项目状态
  *
  * @author buzhanyi
  */
@@ -11,10 +11,15 @@ public enum PmProjectStatus {
     DEMAND_WAIT_AUDIT("6", "需求待审核"),
     DEMAND_AUDIT_RETURN("7", "需求已退回"),
     TASK_WAIT_RELEASE("8", "任务待下达"),
-    BID_INFO_WAIT_FILL("9", "中标信息待填制"),
-    CONTRACT_WAIT_FILL("10", "合同待填制"),
-    UNDER_CONSTRUCTION("11", "项目建设中"),
-    COMPLETION_CONSTRUCTION("12", "项目已完成");
+    WAIT_SELECT_AGENT("9", "待选取代理"),
+    WAIT_UPLOAD_BID_FILE("10", "待上传招标文件"),
+    WAIT_ANNOUNCEMENT("11", "待发布公告"),
+    WAIT_OPEN_BID("12", "待开标"),
+    WAIT_BID_ANNOUNCEMENT("13", "待发布中标公告"),
+    BIDDING_PUBLICITY("14", "中标公示中"),
+    CONTRACT_WAIT_FILL("15", "合同待填制"),
+    UNDER_CONSTRUCTION("16", "项目建设中"),
+    COMPLETION_CONSTRUCTION("17", "项目已完成");
 
     private final String code;
     private final String info;

+ 4 - 0
purchase-system/src/main/java/com/ozs/plan/doman/ProvisionalPlan.java

@@ -16,6 +16,10 @@ import java.util.Date;
 public class ProvisionalPlan {
 
     @ApiModelProperty(value = "主键ID")
+    @TableField("plan_practical_id")
+    private Integer planPracticalId;
+
+    @ApiModelProperty(value = "年度计划ID")
     @TableField("plan_year_id")
     private Integer planYearId;
 

+ 9 - 0
purchase-system/src/main/java/com/ozs/plan/doman/vo/requestVo/ProvisionalPlanVo.java

@@ -3,20 +3,29 @@ package com.ozs.plan.doman.vo.requestVo;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.vo.PageVo;
+import com.ozs.system.domain.SysFileRef;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 @Data
 public class ProvisionalPlanVo extends PageVo {
 
     private Date startTime;
     private Date endTime;
+    /**
+     * 上传附件
+     */
+    private List<SysFileRef> sysFileRefs;
 
     @ApiModelProperty(value = "主键ID")
+    private Integer planPracticalId;
+
+    @ApiModelProperty(value = "年度计划ID")
     private Long planYearId;
 
     @NotNull(message = "采购单位不能为空")

+ 11 - 0
purchase-system/src/main/java/com/ozs/plan/mapper/ProvisionalPlanMapper.java

@@ -3,6 +3,7 @@ package com.ozs.plan.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ozs.base.domain.BaseExpert;
 import com.ozs.plan.doman.ProvisionalPlan;
+import com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,4 +16,14 @@ public interface ProvisionalPlanMapper extends BaseMapper<ProvisionalPlan> {
     int updateProvisionalPlanById(ProvisionalPlan provisionalPlan);
 
     List<ProvisionalPlan> selectProjectName(String projectName);
+
+    int commitProvisionalPlan(Integer planPracticalId);
+
+    ProvisionalPlan seletById(Integer planPracticalId);
+
+    List<ProvisionalPlan> selectProvisionalPlan(ProvisionalPlanVo provisionalPlanVo);
+
+    List<ProvisionalPlan> selectProvisionalPlanAudit(ProvisionalPlanVo provisionalPlanVo);
+
+    int review(ProvisionalPlan provisionalPlan);
 }

+ 15 - 0
purchase-system/src/main/java/com/ozs/plan/service/ProvisionalPlanService.java

@@ -1,6 +1,9 @@
 package com.ozs.plan.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.pagehelper.PageInfo;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.model.LoginUser;
 import com.ozs.plan.doman.PlanYears;
 import com.ozs.plan.doman.ProvisionalPlan;
@@ -16,4 +19,16 @@ public interface ProvisionalPlanService extends IService<ProvisionalPlan> {
     String importProvisionalPlan(List<ProvisionalPlan> provisionalPlans, boolean updateSupport, LoginUser loginUser);
 
     List<ProvisionalPlan> selectProvisionalPlanExport(ProvisionalPlanVo provisionalPlanVo);
+
+    int commitProvisionalPlan(ProvisionalPlanVo provisionalPlanVo);
+
+    ProvisionalPlan seletById(Integer planPracticalId);
+
+    PageInfo<ProvisionalPlan> selectProvisionalPlan(ProvisionalPlanVo provisionalPlanVo);
+
+    PageInfo<ProvisionalPlan> selectProvisionalPlanAudit(ProvisionalPlanVo provisionalPlanVo);
+
+    AjaxResult auditPass(ProvisionalPlanVo provisionalPlanVo);
+
+    AjaxResult auditNoPass(ProvisionalPlanVo provisionalPlanVo);
 }

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

@@ -680,7 +680,14 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                                 .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
                         .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
                                 .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
-                        .in("project_status",PmProjectStatus.TASK_WAIT_RELEASE.getCode(),PmProjectStatus.BID_INFO_WAIT_FILL.getCode());
+                        .in("project_status",PmProjectStatus.TASK_WAIT_RELEASE.getCode(),
+                                PmProjectStatus.WAIT_SELECT_AGENT.getCode(),
+                                PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode(),
+                                PmProjectStatus.WAIT_ANNOUNCEMENT.getCode(),
+                                PmProjectStatus.WAIT_OPEN_BID.getCode(),
+                                PmProjectStatus.WAIT_BID_ANNOUNCEMENT.getCode(),
+                                PmProjectStatus.BIDDING_PUBLICITY.getCode()
+                        );
                 pmDemands = pmDemandMapper.selectList(queryWrapper);
             }
         } catch (Exception e) {
@@ -709,7 +716,14 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
                                 .eq(PmDemand::getIsExcess, IsExcess.NO_EXCESS.getCode()))
                         .or(wrapper -> wrapper.lambda().in(PmDemand::getPurchaseDeptId, collect)
                                 .eq(PmDemand::getIsExcess, IsExcess.EXCESS.getCode()))
-                        .in("project_status",PmProjectStatus.BID_INFO_WAIT_FILL.getCode(),PmProjectStatus.CONTRACT_WAIT_FILL.getCode());
+                        .in("project_status",
+                                PmProjectStatus.WAIT_SELECT_AGENT.getCode(),
+                                PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode(),
+                                PmProjectStatus.WAIT_ANNOUNCEMENT.getCode(),
+                                PmProjectStatus.WAIT_OPEN_BID.getCode(),
+                                PmProjectStatus.WAIT_BID_ANNOUNCEMENT.getCode(),
+                                PmProjectStatus.BIDDING_PUBLICITY.getCode(),
+                                PmProjectStatus.CONTRACT_WAIT_FILL.getCode());
                 pmDemands = pmDemandMapper.selectList(queryWrapper);
             }
         } catch (Exception e) {

+ 140 - 2
purchase-system/src/main/java/com/ozs/plan/service/impl/ProvisionalPlanServiceImpl.java

@@ -1,23 +1,33 @@
 package com.ozs.plan.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.core.domain.entity.SysDept;
 import com.ozs.common.core.domain.entity.SysDictData;
 import com.ozs.common.core.domain.model.LoginUser;
 import com.ozs.common.enums.ProjectStatus;
 import com.ozs.common.enums.ProjectTypes;
+import com.ozs.common.enums.SysFileRefEnum;
 import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.StringUtils;
+import com.ozs.common.utils.bean.BeanUtils;
+import com.ozs.plan.doman.PlanQuarter;
 import com.ozs.plan.doman.PlanYears;
 import com.ozs.plan.doman.ProvisionalPlan;
+import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
 import com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo;
 import com.ozs.plan.mapper.PlanYearsMapper;
 import com.ozs.plan.mapper.ProvisionalPlanMapper;
 import com.ozs.plan.service.ProvisionalPlanService;
+import com.ozs.system.domain.SysFileRef;
 import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
 import com.ozs.system.mapper.SysDeptMapper;
+import com.ozs.system.mapper.SysFileRefMapper;
 import com.ozs.system.service.ISysDeptService;
 import com.ozs.system.service.ISysDictTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +48,10 @@ public class ProvisionalPlanServiceImpl extends ServiceImpl<ProvisionalPlanMappe
     private SysDeptMapper deptMapper;
     @Autowired
     private ISysDeptService deptService;
+    @Autowired
+    private PlanYearsMapper planYearsMapper;
+    @Autowired
+    private SysFileRefMapper sysFileRefMapper;
 
     @Override
     public int deleteProvisionalPlanById(Integer planYearId) {
@@ -155,6 +169,77 @@ public class ProvisionalPlanServiceImpl extends ServiceImpl<ProvisionalPlanMappe
         return provisionalPlanList;
     }
 
+    @Override
+    public int commitProvisionalPlan(ProvisionalPlanVo provisionalPlanVo) {
+        return provisionalPlanMapper.commitProvisionalPlan(provisionalPlanVo.getPlanPracticalId());
+    }
+
+    @Override
+    public ProvisionalPlan seletById(Integer planPracticalId) {
+        ProvisionalPlan provisionalPlan = changeToProvisionalPlan(provisionalPlanMapper.seletById(planPracticalId));
+        return provisionalPlan;
+    }
+
+    @Override
+    public PageInfo<ProvisionalPlan> selectProvisionalPlan(ProvisionalPlanVo provisionalPlanVo) {
+        List<ProvisionalPlan> provisionalPlanList = provisionalPlanMapper.selectProvisionalPlan(provisionalPlanVo);
+        provisionalPlanList = changeTo(provisionalPlanList);
+        PageHelper.startPage(provisionalPlanVo.getPageNum().intValue(), provisionalPlanVo.getPageSize().intValue());
+        PageInfo<ProvisionalPlan> pageInfo = new PageInfo<>(provisionalPlanList);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<ProvisionalPlan> selectProvisionalPlanAudit(ProvisionalPlanVo provisionalPlanVo) {
+        List<ProvisionalPlan> provisionalPlanList = provisionalPlanMapper.selectProvisionalPlanAudit(provisionalPlanVo);
+        provisionalPlanList = changeTo(provisionalPlanList);
+        PageHelper.startPage(provisionalPlanVo.getPageNum().intValue(), provisionalPlanVo.getPageSize().intValue());
+        PageInfo<ProvisionalPlan> pageInfo = new PageInfo<>(provisionalPlanList);
+        return pageInfo;
+    }
+
+    @Override
+    public AjaxResult auditPass(ProvisionalPlanVo provisionalPlanVo) {
+        ProvisionalPlan byId = provisionalPlanMapper.seletById(provisionalPlanVo.getPlanPracticalId());
+        if (ObjectUtils.isEmpty(byId.getPlanYearId())) {
+            PlanYears ofYears = new PlanYears();
+            BeanUtils.copyProperties(provisionalPlanVo, ofYears);
+            planYearsMapper.insertPlanYears(ofYears);
+            Long planYearId = ofYears.getPlanYearId();
+            byId.setPlanYearId(ofYears.getPlanYearId().intValue());
+        }
+        byId.setProjectStatus(ProjectStatus.PLANTOEXAMINE.getCode());
+        return review(provisionalPlanVo, byId);
+    }
+
+    @Override
+    public AjaxResult auditNoPass(ProvisionalPlanVo provisionalPlanVo) {
+        ProvisionalPlan provisionalPlan = new ProvisionalPlan();
+        BeanUtils.copyProperties(provisionalPlanVo, provisionalPlan);
+        provisionalPlan.setProjectStatus(ProjectStatus.PLANTOBACK.getCode());
+        return review(provisionalPlanVo, provisionalPlan);
+    }
+
+    private AjaxResult review(ProvisionalPlanVo vo, ProvisionalPlan provisionalPlan) {
+        List<SysFileRef> sysFileRefs = vo.getSysFileRefs();
+        if (!ObjectUtils.isEmpty(sysFileRefs)) {
+            for (SysFileRef ref : sysFileRefs) {
+                ref.setRedId(vo.getPlanPracticalId().longValue());
+                ref.setType(SysFileRefEnum.PLAN_TEMPORARY.getType());
+                ref.setCreated(vo.getUpdated());
+                ref.setCreateTime(new Date());
+                ref.setUpdated(vo.getUpdated());
+                ref.setUpdateTime(new Date());
+                sysFileRefMapper.insert(ref);
+            }
+        }
+        int review = provisionalPlanMapper.review(provisionalPlan);
+        if (review != 1) {
+            return AjaxResult.error("项目状态数据异常");
+        }
+        return AjaxResult.success();
+    }
+
     //判断是否为超额计划
     public String isExcessOrNo(String projectType, BigDecimal evaluation) {
         BigDecimal threshold = new BigDecimal(0);
@@ -181,6 +266,59 @@ public class ProvisionalPlanServiceImpl extends ServiceImpl<ProvisionalPlanMappe
         }
     }
 
+    // 字典项负值
+    public ProvisionalPlan changeToProvisionalPlan(ProvisionalPlan provisionalPlan) {
+        HashMap<String, HashMap<String, String>> planEnums = dictTypeService.getAboutEnums();
+        HashMap<String, String> projectTypesMap = planEnums.get("projectTypes");
+        HashMap<String, String> planPurchaseModesMap = planEnums.get("planPurchaseModes");
+        HashMap<String, String> projectAttributes = planEnums.get("projectAttributes");
+        HashMap<String, String> purchaseServices = planEnums.get("purchaseServices");
+        if (provisionalPlan.getPurchaseDeptId() != null) {
+            SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(provisionalPlan.getPurchaseDeptId()).get("sysDept");
+            provisionalPlan.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
+        }
+        for (Map.Entry<String, String> entry : projectTypesMap.entrySet()) {
+            if (provisionalPlan.getProjectType() != null && provisionalPlan.getProjectType().equals(entry.getValue())) {
+                provisionalPlan.setProjectTypeStr(entry.getKey());
+                break;
+            }
+        }
+        for (Map.Entry<String, String> entry : planPurchaseModesMap.entrySet()) {
+            if (provisionalPlan.getPurchaseMode() != null && provisionalPlan.getPurchaseMode().equals(entry.getValue())) {
+                provisionalPlan.setPurchaseModeStr(entry.getKey());
+                break;
+            }
+        }
+        //项目属性是拼接的
+        if (provisionalPlan.getProjectAttr().length() > 1) {
+            StringBuilder builder = new StringBuilder();
+            String[] split = provisionalPlan.getProjectAttr().split(",");
+            for (String s : split) {
+                for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
+                    if (s.equals(entry.getValue())) {
+                        builder.append(entry.getKey() + ",");
+                        break;
+                    }
+                }
+            }
+            provisionalPlan.setProjectAttrStr(builder.toString());
+        } else {
+            for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
+                if (provisionalPlan.getProjectAttr() != null && provisionalPlan.getProjectAttr().equals(entry.getValue())) {
+                    provisionalPlan.setProjectAttrStr(entry.getKey());
+                    break;
+                }
+            }
+        }
+        for (Map.Entry<String, String> entry : purchaseServices.entrySet()) {
+            if (provisionalPlan.getPurchaseServices() != null && provisionalPlan.getPurchaseServices().equals(entry.getValue())) {
+                provisionalPlan.setPurchaseServicesStr(entry.getKey());
+                break;
+            }
+        }
+        return provisionalPlan;
+    }
+
     //字段赋值对应的名称
     public List<ProvisionalPlan> changeTo(List<ProvisionalPlan> provisionalPlans) {
         HashMap<String, HashMap<String, String>> planEnums = dictTypeService.getAboutEnums();
@@ -209,11 +347,11 @@ public class ProvisionalPlanServiceImpl extends ServiceImpl<ProvisionalPlanMappe
             //项目属性是拼接的
             if (provisionalPlan.getProjectAttr().length() > 1) {
                 StringBuilder builder = new StringBuilder();
-                String[] split = provisionalPlan.getProjectAttr().split("");
+                String[] split = provisionalPlan.getProjectAttr().split(",");
                 for (String s : split) {
                     for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
                         if (s.equals(entry.getValue())) {
-                            builder.append(entry.getKey() + "");
+                            builder.append(entry.getKey() + ",");
                             break;
                         }
                     }

+ 75 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmBidFailure.java

@@ -0,0 +1,75 @@
+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;
+
+/**
+ * 流标基本情况表(PmBidFailure)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:21
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_bid_failure")
+@ApiModel(value = "流标基本情况表", description = "")
+public class PmBidFailure implements Serializable {
+    private static final long serialVersionUID = 491684278331772388L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("流标原因")
+    @TableField("BID_FAILURE_REASON")
+    private String bidFailureReason;
+
+
+    @ApiModelProperty("流标时间")
+    @TableField("BID_FAILURE_TIME")
+    private Date bidFailureTime;
+
+
+    @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;
+
+
+}

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

@@ -0,0 +1,76 @@
+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;
+
+/**
+ * 开标信息表(PmBidOpening)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_bid_opening")
+@ApiModel(value = "开标信息表", description = "")
+public class PmBidOpening implements Serializable {
+    private static final long serialVersionUID = 172107437856148969L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("投标人名称")
+    @TableField("BIDDER_NAME")
+    private String bidderName;
+
+
+    @ApiModelProperty("分数")
+    @TableField("SCORE")
+    private Double score;
+
+
+
+    @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;
+
+
+}

+ 85 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmBidWinning.java

@@ -0,0 +1,85 @@
+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;
+
+/**
+ * 中标基本情况表(PmBidWinning)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_bid_winning")
+@ApiModel(value = "中标基本情况表", description = "")
+public class PmBidWinning implements Serializable {
+    private static final long serialVersionUID = -23785941414293726L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("开标信息ID")
+    @TableField("BID_OPENING_ID")
+    private Long bidOpeningId;
+
+
+    @ApiModelProperty("中标金额(万元)")
+    @TableField("BID_WINNING_AMOUNT")
+    private Double bidWinningAmount;
+
+
+    @ApiModelProperty("中标公告时间")
+    @TableField("BID_ANNOUNCEMENT_TIME")
+    private Date bidAnnouncementTime;
+
+
+    @ApiModelProperty("中标公告截止时间")
+    @TableField("BID_ANNOUNCEMENT_CLOSE_TIME")
+    private Date bidAnnouncementCloseTime;
+
+
+    @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 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmContractInfo.java

@@ -0,0 +1,90 @@
+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;
+
+/**
+ * 合同信息表(PmContractInfo)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_contract_info")
+@ApiModel(value = "合同信息表", description = "")
+public class PmContractInfo implements Serializable {
+    private static final long serialVersionUID = -59348130033569267L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("合同编号")
+    @TableField("CONTRACT_NUMBER")
+    private String contractNumber;
+
+
+    @ApiModelProperty("合同名称")
+    @TableField("CONTRACT_NAME")
+    private String contractName;
+
+
+    @ApiModelProperty("合同金额(万元)")
+    @TableField("CONTRACT_AMOUNT")
+    private Double contractAmount;
+
+
+    @ApiModelProperty("合同终止日期")
+    @TableField("CONTRACT_TERMINATION_DATE")
+    private Date contractTerminationDate;
+
+
+    @ApiModelProperty("建设(交付)时间")
+    @TableField("CONSTRUCTION_DELIVERY_TIME")
+    private Date constructionDeliveryTime;
+
+
+    @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;
+
+
+}

+ 85 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmContractUnitRef.java

@@ -0,0 +1,85 @@
+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;
+
+/**
+ * 合同单位关联表(PmContractUnitRef)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_contract_unit_ref")
+@ApiModel(value = "合同单位关联表", description = "")
+public class PmContractUnitRef implements Serializable {
+    private static final long serialVersionUID = 497813391870165785L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("合同ID")
+    @TableField("CONTRACT_INFO_ID")
+    private Long contractInfoId;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("单位类型,A:甲方,B:乙方")
+    @TableField("UNIT_TYPE")
+    private String unitType;
+
+
+    @ApiModelProperty("合同签订地点")
+    @TableField("CONTRACT_SIGN_PLACE")
+    private String contractSignPlace;
+
+
+    @ApiModelProperty("合同签订日期")
+    @TableField("CONTRACT_SIGN_DATE")
+    private Date contractSignDate;
+
+
+    @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;
+
+
+}

+ 85 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmProjectConstruction.java

@@ -0,0 +1,85 @@
+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;
+
+/**
+ * 项目建设表(PmProjectConstruction)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_project_construction")
+@ApiModel(value = "项目建设表", description = "")
+public class PmProjectConstruction implements Serializable {
+    private static final long serialVersionUID = -98627692890895867L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("开始时间")
+    @TableField("START_TIME")
+    private Date startTime;
+
+
+    @ApiModelProperty("初步验收时间")
+    @TableField("PRELIMINARY_INSPECTION_TIME")
+    private Date preliminaryInspectionTime;
+
+
+    @ApiModelProperty("终验时间")
+    @TableField("FINAL_INSPECTION_TIME")
+    private Date finalInspectionTime;
+
+
+    @ApiModelProperty("结束时间")
+    @TableField("END_TIME")
+    private Date endTime;
+
+
+    @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;
+
+
+}

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

@@ -0,0 +1,96 @@
+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;
+
+/**
+ * 发布公告表(PmReleaseAnnouncement)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("pm_release_announcement")
+@ApiModel(value = "发布公告表", description = "")
+public class PmReleaseAnnouncement implements Serializable {
+    private static final long serialVersionUID = 403614463746791218L;
+
+    @TableId(value = "ID", type = IdType.AUTO)
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    @TableField("DEMAND_ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("发布公告平台,1:军队采购网,2:全军武器装备采购网")
+    @TableField("ANNOUNCEMENT_PLATFORM")
+    private String announcementPlatform;
+
+
+    @ApiModelProperty("发布时间")
+    @TableField("RELEASE_TIME")
+    private String releaseTime;
+
+
+    @ApiModelProperty("开标地点")
+    @TableField("BID_OPEN_PLACE")
+    private String bidOpenPlace;
+
+
+    @ApiModelProperty("报名截止时间")
+    @TableField("ENROLL_CLOSE_TIME")
+    private Date enrollCloseTime;
+
+
+    @ApiModelProperty("开标时间")
+    @TableField("TENDER_OPEN_TIME")
+    private Date tenderOpenTime;
+
+
+    @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;
+
+
+}

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

@@ -69,8 +69,11 @@ public class PmDemandReqVo extends PageVo
     @ApiModelProperty("上传附件")
     private List<SysFileRef> sysFileRefs;
 
-    /** 模块名称 */
-    @ApiModelProperty("模块名称")
+    /** 流程图中的模块名称 */
+    @ApiModelProperty("流程图中的模块名称")
     private String moduleName;
 
+    /** 查看详情的类型 */
+    @ApiModelProperty("详情类型,1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况")
+    private String detailType;
 }

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmBidFailure;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 流标基本情况表(PmBidFailure)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:21
+ */
+public interface PmBidFailureMapper extends BaseMapper<PmBidFailure> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmBidOpening;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 开标信息表(PmBidOpening)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmBidOpeningMapper extends BaseMapper<PmBidOpening> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmBidWinning;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 中标基本情况表(PmBidWinning)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmBidWinningMapper extends BaseMapper<PmBidWinning> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmContractInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 合同信息表(PmContractInfo)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmContractInfoMapper extends BaseMapper<PmContractInfo> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmContractUnitRef;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 合同单位关联表(PmContractUnitRef)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmContractUnitRefMapper extends BaseMapper<PmContractUnitRef> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmProjectConstruction;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 项目建设表(PmProjectConstruction)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+public interface PmProjectConstructionMapper extends BaseMapper<PmProjectConstruction> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.ozs.pm.mapper;
+
+import com.ozs.pm.doman.PmReleaseAnnouncement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 发布公告表(PmReleaseAnnouncement)表数据库访问层
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+public interface PmReleaseAnnouncementMapper extends BaseMapper<PmReleaseAnnouncement> {
+
+}

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

@@ -25,7 +25,7 @@ public interface IPmDemandService extends IService<PmDemand>
      * @param demandId 采购需求主键
      * @return 采购需求
      */
-    public PmDemandResVo selectPmDemandByDemandId(Long demandId);
+    public PmDemandResVo selectPmDemandByDemandId(Long demandId,String detailType);
 
     /**
      * 查询采购需求列表

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmBidFailure;
+
+/**
+ * 流标基本情况表(PmBidFailure)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmBidFailureService extends IService<PmBidFailure> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmBidOpening;
+
+/**
+ * 开标信息表(PmBidOpening)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmBidOpeningService extends IService<PmBidOpening> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmBidWinning;
+
+/**
+ * 中标基本情况表(PmBidWinning)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmBidWinningService extends IService<PmBidWinning> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmContractInfo;
+
+/**
+ * 合同信息表(PmContractInfo)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+public interface PmContractInfoService extends IService<PmContractInfo> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmContractUnitRef;
+
+/**
+ * 合同单位关联表(PmContractUnitRef)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+public interface PmContractUnitRefService extends IService<PmContractUnitRef> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmProjectConstruction;
+
+/**
+ * 项目建设表(PmProjectConstruction)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+public interface PmProjectConstructionService extends IService<PmProjectConstruction> {
+
+}

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

@@ -0,0 +1,14 @@
+package com.ozs.pm.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.pm.doman.PmReleaseAnnouncement;
+
+/**
+ * 发布公告表(PmReleaseAnnouncement)表服务接口
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+public interface PmReleaseAnnouncementService extends IService<PmReleaseAnnouncement> {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmBidFailureMapper;
+import com.ozs.pm.doman.PmBidFailure;
+import com.ozs.pm.service.PmBidFailureService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 流标基本情况表(PmBidFailure)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+@Service
+public class PmBidFailureServiceImpl extends ServiceImpl<PmBidFailureMapper, PmBidFailure> implements PmBidFailureService {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmBidOpeningMapper;
+import com.ozs.pm.doman.PmBidOpening;
+import com.ozs.pm.service.PmBidOpeningService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 开标信息表(PmBidOpening)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+@Service
+public class PmBidOpeningServiceImpl extends ServiceImpl<PmBidOpeningMapper, PmBidOpening> implements PmBidOpeningService {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmBidWinningMapper;
+import com.ozs.pm.doman.PmBidWinning;
+import com.ozs.pm.service.PmBidWinningService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 中标基本情况表(PmBidWinning)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+@Service
+public class PmBidWinningServiceImpl extends ServiceImpl<PmBidWinningMapper, PmBidWinning> implements PmBidWinningService {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmContractInfoMapper;
+import com.ozs.pm.doman.PmContractInfo;
+import com.ozs.pm.service.PmContractInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 合同信息表(PmContractInfo)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+@Service
+public class PmContractInfoServiceImpl extends ServiceImpl<PmContractInfoMapper, PmContractInfo> implements PmContractInfoService {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmContractUnitRefMapper;
+import com.ozs.pm.doman.PmContractUnitRef;
+import com.ozs.pm.service.PmContractUnitRefService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 合同单位关联表(PmContractUnitRef)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+@Service
+public class PmContractUnitRefServiceImpl extends ServiceImpl<PmContractUnitRefMapper, PmContractUnitRef> implements PmContractUnitRefService {
+
+}

+ 177 - 156
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -68,188 +68,200 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
      * @return 采购需求
      */
     @Override
-    public PmDemandResVo selectPmDemandByDemandId(Long demandId) {
+    public PmDemandResVo selectPmDemandByDemandId(Long demandId,String detailType) {
         PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
         if(pmDemand != null){
             PmDemandResVo vo = new PmDemandResVo();
-            BeanUtils.copyProperties(pmDemand, vo);
+            vo.setDemandId(demandId);
+            if("1".equals(detailType)) { //项目计划
 
-            SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(vo.getPurchaseDeptId()).get("sysDept");
-            if(sysDeptResponseVo != null){
-                vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
-            }
-
-            String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
-            if(StringUtils.isNotEmpty(purchaseServicesName)){
-                vo.setPurchaseServicesName(purchaseServicesName);
-            }
+                BeanUtils.copyProperties(pmDemand, vo);
 
-            //采购需求附件
-            HashMap<String, String> demandFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND.getType());
-            if(demandFileMap != null){
-                vo.setDemandFileMap(demandFileMap);
-            }
+                SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(vo.getPurchaseDeptId()).get("sysDept");
+                if(sysDeptResponseVo != null){
+                    vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
+                }
 
-            //采购需求审核文件
-            HashMap<String, String> auditFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
-            if(auditFileMap != null){
-                vo.setAuditFileMap(auditFileMap);
-            }
+                String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
+                if(StringUtils.isNotEmpty(purchaseServicesName)){
+                    vo.setPurchaseServicesName(purchaseServicesName);
+                }
 
-            //任务下达文
-            HashMap<String, String> taskReleaseFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_TAST_RELEASE.getType());
-            if(taskReleaseFileMap != null){
-                vo.setTaskReleaseFileMap(taskReleaseFileMap);
-            }
+                //采购需求附
+                HashMap<String, String> demandFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND.getType());
+                if(demandFileMap != null){
+                    vo.setDemandFileMap(demandFileMap);
+                }
 
-            //项目类型
-            for (ProjectTypes value : ProjectTypes.values()) {
-                if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
-                    vo.setProjectTypeName(value.getInfo());
-                    break;
+                //项目类型
+                for (ProjectTypes value : ProjectTypes.values()) {
+                    if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
+                        vo.setProjectTypeName(value.getInfo());
+                        break;
+                    }
                 }
-            }
-            //是否为超限额计划
-            for (IsExcess value : IsExcess.values()) {
-                if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
-                    vo.setIsExcessName(value.getInfo());
-                    break;
+                //是否为超限额计划
+                for (IsExcess value : IsExcess.values()) {
+                    if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
+                        vo.setIsExcessName(value.getInfo());
+                        break;
+                    }
                 }
-            }
 
-            //采购方式
-            for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
-                if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
-                    vo.setPurchaseModeName(value.getInfo());
-                    break;
+                //采购方式
+                for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
+                    if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
+                        vo.setPurchaseModeName(value.getInfo());
+                        break;
+                    }
                 }
-            }
-            //项目属性
-            for (ProjectAttribute value : ProjectAttribute.values()) {
-                if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
-                    vo.setProjectAttrName(value.getInfo());
-                    break;
+                //项目属性
+                for (ProjectAttribute value : ProjectAttribute.values()) {
+                    if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
+                        vo.setProjectAttrName(value.getInfo());
+                        break;
+                    }
                 }
-            }
-            //预警状态
-            for (WarnStatus value : WarnStatus.values()) {
-                if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
-                    vo.setWarnStatusName(value.getInfo());
-                    break;
+                //预警状态
+                for (WarnStatus value : WarnStatus.values()) {
+                    if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
+                        vo.setWarnStatusName(value.getInfo());
+                        break;
+                    }
                 }
-            }
 
-            //项目状态
-            for (PmProjectStatus value : PmProjectStatus.values()) {
-                if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
-                    vo.setProjectStatusName(value.getInfo());
-                    break;
+                //项目状态
+                for (PmProjectStatus value : PmProjectStatus.values()) {
+                    if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
+                        vo.setProjectStatusName(value.getInfo());
+                        break;
+                    }
                 }
-            }
 
-            if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(vo.getProjectType())){//装备类
-                PmDemandEquip obj = new PmDemandEquip();
-                obj.setDemandId(demandId);
-                List<PmDemandEquip> list = iPmDemandEquipService.selectPmDemandEquipList(obj);
-                if(list !=null && list.size() > 0){
-                    PmDemandEquipResVo responseVo = new PmDemandEquipResVo();
-                    BeanUtils.copyProperties(list.get(0),responseVo);
-                    //采购方式建议
-                    for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
-                        if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
-                            responseVo.setProcurementMethodSuggestName(value.getInfo());
-                            break;
-                        }
-                    }
+            } else if("2".equals(detailType)) { //需求建档
 
-                    HashMap<String, String> fileMap1 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_EQUIP.getType());
-                    if(fileMap1 != null){
-                        responseVo.setFileMap(fileMap1);
-                    }
+                //采购需求审核文件
+                HashMap<String, String> auditFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
+                if(auditFileMap != null){
+                    vo.setAuditFileMap(auditFileMap);
+                }
 
-                    vo.setPmDemandEquipResVo(responseVo);
-                }
-            } else if(ProjectTypes.MATERIALTYPE.getCode().equals(vo.getProjectType())){ //物资类
-                PmDemandMaterials obj = new PmDemandMaterials();
-                obj.setDemandId(demandId);
-                List<PmDemandMaterials> list = iPmDemandMaterialsService.selectPmDemandMaterialsList(obj);
-                if(list !=null && list.size() > 0){
-                    PmDemandMaterialsResVo responseVo = new PmDemandMaterialsResVo();
-                    BeanUtils.copyProperties(list.get(0),responseVo);
-                    //采购方式建议
-                    for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
-                        if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
-                            responseVo.setProcurementMethodSuggestName(value.getInfo());
-                            break;
+                if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(pmDemand.getProjectType())){//装备类
+                    PmDemandEquip obj = new PmDemandEquip();
+                    obj.setDemandId(demandId);
+                    List<PmDemandEquip> list = iPmDemandEquipService.selectPmDemandEquipList(obj);
+                    if(list !=null && list.size() > 0){
+                        PmDemandEquipResVo responseVo = new PmDemandEquipResVo();
+                        BeanUtils.copyProperties(list.get(0),responseVo);
+                        //采购方式建议
+                        for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
+                            if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
+                                responseVo.setProcurementMethodSuggestName(value.getInfo());
+                                break;
+                            }
                         }
-                    }
-                    HashMap<String, String> fileMap2 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
-                    if(fileMap2 != null){
-                        responseVo.setFileMap(fileMap2);
-                    }
-                    vo.setPmDemandMaterialsResVo(responseVo);
-                }
-            } else if(ProjectTypes.SERVICESTYPE.getCode().equals(vo.getProjectType())){//服务类
-                PmDemandServe obj = new PmDemandServe();
-                obj.setDemandId(demandId);
-                List<PmDemandServe> list = iPmDemandServeService.selectPmDemandServeList(obj);
-                if(list !=null && list.size() > 0){
-                    PmDemandServeResVo responseVo = new PmDemandServeResVo();
-                    BeanUtils.copyProperties(list.get(0),responseVo);
-                    //采购方式建议
-                    for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
-                        if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
-                            responseVo.setProcurementMethodSuggestName(value.getInfo());
-                            break;
+
+                        HashMap<String, String> fileMap1 = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_EQUIP.getType());
+                        if(fileMap1 != null){
+                            responseVo.setFileMap(fileMap1);
                         }
+
+                        vo.setPmDemandEquipResVo(responseVo);
                     }
-                    HashMap<String, String> fileMap3 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_SERVE.getType());
-                    if(fileMap3 != null){
-                        responseVo.setFileMap(fileMap3);
-                    }
-                    vo.setPmDemandServeResVo(responseVo);
-                }
-            } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(vo.getProjectType())){//工程类
-                PmDemandEngineering obj = new PmDemandEngineering();
-                obj.setDemandId(demandId);
-                List<PmDemandEngineering> list = iPmDemandEngineeringService.selectPmDemandEngineeringList(obj);
-                if(list !=null && list.size() > 0){
-                    PmDemandEngineeringResVo responseVo = new PmDemandEngineeringResVo();
-                    BeanUtils.copyProperties(list.get(0),responseVo);
-                    //采购方式建议
-                    for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
-                        if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
-                            responseVo.setProcurementMethodSuggestName(value.getInfo());
-                            break;
+                } else if(ProjectTypes.MATERIALTYPE.getCode().equals(pmDemand.getProjectType())){ //物资类
+                    PmDemandMaterials obj = new PmDemandMaterials();
+                    obj.setDemandId(demandId);
+                    List<PmDemandMaterials> list = iPmDemandMaterialsService.selectPmDemandMaterialsList(obj);
+                    if(list !=null && list.size() > 0){
+                        PmDemandMaterialsResVo responseVo = new PmDemandMaterialsResVo();
+                        BeanUtils.copyProperties(list.get(0),responseVo);
+                        //采购方式建议
+                        for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
+                            if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
+                                responseVo.setProcurementMethodSuggestName(value.getInfo());
+                                break;
+                            }
                         }
-                    }
-                    //项目类别
-                    for (EngineeringProjectCategory value : EngineeringProjectCategory.values()) {
-                        if (responseVo.getProjectCategory() != null && responseVo.getProjectCategory().equals(value.getCode())) {
-                            responseVo.setProjectCategoryName(value.getInfo());
-                            break;
+                        HashMap<String, String> fileMap2 = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
+                        if(fileMap2 != null){
+                            responseVo.setFileMap(fileMap2);
                         }
+                        vo.setPmDemandMaterialsResVo(responseVo);
                     }
-                    //承包方式
-                    for (EngineeringContractingMode value : EngineeringContractingMode.values()) {
-                        if (responseVo.getContractingMode() != null && responseVo.getContractingMode().equals(value.getCode())) {
-                            responseVo.setContractingModeName(value.getInfo());
-                            break;
+                } else if(ProjectTypes.SERVICESTYPE.getCode().equals(pmDemand.getProjectType())){//服务类
+                    PmDemandServe obj = new PmDemandServe();
+                    obj.setDemandId(demandId);
+                    List<PmDemandServe> list = iPmDemandServeService.selectPmDemandServeList(obj);
+                    if(list !=null && list.size() > 0){
+                        PmDemandServeResVo responseVo = new PmDemandServeResVo();
+                        BeanUtils.copyProperties(list.get(0),responseVo);
+                        //采购方式建议
+                        for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
+                            if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
+                                responseVo.setProcurementMethodSuggestName(value.getInfo());
+                                break;
+                            }
                         }
-                    }
-                    //施工图是否完成
-                    for (ConstructionDrawing value : ConstructionDrawing.values()) {
-                        if (responseVo.getConstructionDrawing() != null && responseVo.getConstructionDrawing().equals(value.getCode())) {
-                            responseVo.setConstructionDrawingName(value.getInfo());
-                            break;
+                        HashMap<String, String> fileMap3 = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_SERVE.getType());
+                        if(fileMap3 != null){
+                            responseVo.setFileMap(fileMap3);
                         }
+                        vo.setPmDemandServeResVo(responseVo);
                     }
-                    HashMap<String, String> fileMap4 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
-                    if(fileMap4 != null){
-                        responseVo.setFileMap(fileMap4);
+                } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(pmDemand.getProjectType())){//工程类
+                    PmDemandEngineering obj = new PmDemandEngineering();
+                    obj.setDemandId(demandId);
+                    List<PmDemandEngineering> list = iPmDemandEngineeringService.selectPmDemandEngineeringList(obj);
+                    if(list !=null && list.size() > 0){
+                        PmDemandEngineeringResVo responseVo = new PmDemandEngineeringResVo();
+                        BeanUtils.copyProperties(list.get(0),responseVo);
+                        //采购方式建议
+                        for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
+                            if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
+                                responseVo.setProcurementMethodSuggestName(value.getInfo());
+                                break;
+                            }
+                        }
+                        //项目类别
+                        for (EngineeringProjectCategory value : EngineeringProjectCategory.values()) {
+                            if (responseVo.getProjectCategory() != null && responseVo.getProjectCategory().equals(value.getCode())) {
+                                responseVo.setProjectCategoryName(value.getInfo());
+                                break;
+                            }
+                        }
+                        //承包方式
+                        for (EngineeringContractingMode value : EngineeringContractingMode.values()) {
+                            if (responseVo.getContractingMode() != null && responseVo.getContractingMode().equals(value.getCode())) {
+                                responseVo.setContractingModeName(value.getInfo());
+                                break;
+                            }
+                        }
+                        //施工图是否完成
+                        for (ConstructionDrawing value : ConstructionDrawing.values()) {
+                            if (responseVo.getConstructionDrawing() != null && responseVo.getConstructionDrawing().equals(value.getCode())) {
+                                responseVo.setConstructionDrawingName(value.getInfo());
+                                break;
+                            }
+                        }
+                        HashMap<String, String> fileMap4 = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
+                        if(fileMap4 != null){
+                            responseVo.setFileMap(fileMap4);
+                        }
+                        vo.setPmDemandEngineeringResVo(responseVo);
                     }
-                    vo.setPmDemandEngineeringResVo(responseVo);
                 }
+            } else if("3".equals(detailType)) { //任务下达
+                //任务下达文件
+                HashMap<String, String> taskReleaseFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_TAST_RELEASE.getType());
+                if(taskReleaseFileMap != null){
+                    vo.setTaskReleaseFileMap(taskReleaseFileMap);
+                }
+            } else if("4".equals(detailType)) { //中标信息
+
+            } else if("5".equals(detailType)) { //合同信息
+
+            } else if("6".equals(detailType)) { //建设情况
+
             }
 
             return vo;
@@ -627,7 +639,6 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
         String projectStatus = String.valueOf(pmDemand.getProjectStatus());
         String moduleName = null;
-        //todo
         if (PmProjectStatus.DEMAND_WAIT_FILL.getCode().equals(projectStatus) || PmProjectStatus.DEMAND_AUDIT_RETURN.getCode().equals(projectStatus)) {
             moduleName = "需求填制";
         } else if(PmProjectStatus.DEMAND_WAIT_COMMIT.getCode().equals(projectStatus)) {
@@ -636,8 +647,18 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
             moduleName = "需求审核";
         } else if(PmProjectStatus.TASK_WAIT_RELEASE.getCode().equals(projectStatus)) {
             moduleName = "任务下达";
-        } else if(PmProjectStatus.BID_INFO_WAIT_FILL.getCode().equals(projectStatus)) {
-            moduleName = "中标情况填制";
+        } else if(PmProjectStatus.WAIT_SELECT_AGENT.getCode().equals(projectStatus)) {
+            moduleName = "选取代理";
+        } else if(PmProjectStatus.WAIT_UPLOAD_BID_FILE.getCode().equals(projectStatus)) {
+            moduleName = "上传招标文件";
+        } else if(PmProjectStatus.WAIT_ANNOUNCEMENT.getCode().equals(projectStatus)) {
+            moduleName = "发布公告";
+        } else if(PmProjectStatus.WAIT_OPEN_BID.getCode().equals(projectStatus)) {
+            moduleName = "填写专家信息,填写开标信息";
+        } else if(PmProjectStatus.WAIT_BID_ANNOUNCEMENT.getCode().equals(projectStatus)) {
+            moduleName = "填写中标信息";
+        } else if(PmProjectStatus.BIDDING_PUBLICITY.getCode().equals(projectStatus)) {
+            moduleName = "质疑处理,上传中标通知书";
         } else if(PmProjectStatus.CONTRACT_WAIT_FILL.getCode().equals(projectStatus)) {
             moduleName = "合同填制";
         } else if(PmProjectStatus.UNDER_CONSTRUCTION.getCode().equals(projectStatus)) {
@@ -805,7 +826,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     public int releaseTask(PmDemandReqVo pmDemandReqVo) {
         PmDemand pmDemand = new PmDemand();
         pmDemand.setDemandId(pmDemandReqVo.getDemandId());
-        pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.BID_INFO_WAIT_FILL.getCode()));
+        pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_SELECT_AGENT.getCode()));
         List<SysFileRef> sysFileRefs = pmDemandReqVo.getSysFileRefs();
         if (!ObjectUtils.isEmpty(sysFileRefs)) {
             for (SysFileRef ref : sysFileRefs) {

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmProjectConstructionMapper;
+import com.ozs.pm.doman.PmProjectConstruction;
+import com.ozs.pm.service.PmProjectConstructionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目建设表(PmProjectConstruction)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+@Service
+public class PmProjectConstructionServiceImpl extends ServiceImpl<PmProjectConstructionMapper, PmProjectConstruction> implements PmProjectConstructionService {
+
+}

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

@@ -0,0 +1,18 @@
+package com.ozs.pm.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.mapper.PmReleaseAnnouncementMapper;
+import com.ozs.pm.doman.PmReleaseAnnouncement;
+import com.ozs.pm.service.PmReleaseAnnouncementService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 发布公告表(PmReleaseAnnouncement)表服务实现类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:23
+ */
+@Service
+public class PmReleaseAnnouncementServiceImpl extends ServiceImpl<PmReleaseAnnouncementMapper, PmReleaseAnnouncement> implements PmReleaseAnnouncementService {
+
+}

+ 174 - 168
purchase-system/src/main/resources/mapper/plan/PlanQuarterMapper.xml

@@ -1,187 +1,193 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.plan.mapper.PlanQuarterMapper">
 
-	<resultMap type="com.ozs.plan.doman.PlanQuarter" id="PlanQuarterResult">
-		<id property="plan_practical_id" column="planPracticalId"/>
-		<result property="plan_year_id" column="planYearId"/>
-		<result property="purchase_dept_id" column="purchaseDeptId"/>
-		<result property="project_name" column="projectName"/>
-		<result property="project_type" column="projectType"/>
-		<result property="demand_overview" column="demandOverview"/>
-		<result property="evaluation" column="evaluation"/>
-		<result property="is_excess" column="isExcess"/>
-		<result property="purchase_services" column="purchaseServices"/>
-		<result property="purchase_mode" column="purchaseMode"/>
-		<result property="plan_demand_sub_time" column="planDemandSubTime"/>
-		<result property="plan_purchase_finish_time" column="planPurchaseFinishTime"/>
-		<result property="plan_deliver_time" column="planDeliverTime"/>
-		<result property="project_attr" column="projectAttr"/>
-		<result property="adjust_reason" column="adjustReason"/>
-		<result property="remarks" column="remarks"/>
-		<result property="project_status" column="projectStatus"/>
-		<result property="send_letter" column="sendLetter"/>
-		<result property="created" column="created"/>
-		<result property="create_time" column="createTime"/>
-		<result property="updated" column="updated"/>
-		<result property="update_time" column="updateTime"/>
-		<result property="refuse_reason" column="refuseReason"/>
-		<result property="del_flay" column="delFlay"/>
-		<result property="plan_type" column="planType"/>
-	</resultMap>
+    <resultMap type="com.ozs.plan.doman.PlanQuarter" id="PlanQuarterResult">
+        <id property="plan_practical_id" column="planPracticalId"/>
+        <result property="plan_year_id" column="planYearId"/>
+        <result property="purchase_dept_id" column="purchaseDeptId"/>
+        <result property="project_name" column="projectName"/>
+        <result property="project_type" column="projectType"/>
+        <result property="demand_overview" column="demandOverview"/>
+        <result property="evaluation" column="evaluation"/>
+        <result property="is_excess" column="isExcess"/>
+        <result property="purchase_services" column="purchaseServices"/>
+        <result property="purchase_mode" column="purchaseMode"/>
+        <result property="plan_demand_sub_time" column="planDemandSubTime"/>
+        <result property="plan_purchase_finish_time" column="planPurchaseFinishTime"/>
+        <result property="plan_deliver_time" column="planDeliverTime"/>
+        <result property="project_attr" column="projectAttr"/>
+        <result property="adjust_reason" column="adjustReason"/>
+        <result property="remarks" column="remarks"/>
+        <result property="project_status" column="projectStatus"/>
+        <result property="send_letter" column="sendLetter"/>
+        <result property="created" column="created"/>
+        <result property="create_time" column="createTime"/>
+        <result property="updated" column="updated"/>
+        <result property="update_time" column="updateTime"/>
+        <result property="refuse_reason" column="refuseReason"/>
+        <result property="del_flay" column="delFlay"/>
+        <result property="plan_type" column="planType"/>
+    </resultMap>
 
-	<update id="updateInfoById" parameterType="com.ozs.plan.doman.PlanQuarter">
-		update plan_practical
-		set project_name=#{projectName},
-			project_type=#{projectType},
-			demand_overview=#{demandOverview},
-			evaluation=#{evaluation},
-			is_excess=#{isExcess},
-			purchase_services=#{purchaseServices},
-			purchase_mode=#{purchaseMode},
-			plan_demand_sub_time=#{planDemandSubTime},
-			plan_purchase_finish_time=#{planPurchaseFinishTime},
-			plan_deliver_time=#{planDeliverTime},
-			project_attr=#{projectAttr},
-			adjust_reason=#{adjustReason},
-			remarks=#{remarks},
-			updated=#{updated},
-			update_time=#{updateTime}
-		where plan_practical_id = #{planPracticalId}
-	</update>
+    <update id="updateInfoById" parameterType="com.ozs.plan.doman.PlanQuarter">
+        update plan_practical
+        set project_name=#{projectName},
+            project_type=#{projectType},
+            demand_overview=#{demandOverview},
+            evaluation=#{evaluation},
+            is_excess=#{isExcess},
+            purchase_services=#{purchaseServices},
+            purchase_mode=#{purchaseMode},
+            plan_demand_sub_time=#{planDemandSubTime},
+            plan_purchase_finish_time=#{planPurchaseFinishTime},
+            plan_deliver_time=#{planDeliverTime},
+            project_attr=#{projectAttr},
+            adjust_reason=#{adjustReason},
+            remarks=#{remarks},
+            updated=#{updated},
+            update_time=#{updateTime}
+        where plan_practical_id = #{planPracticalId}
+    </update>
 
-	<select id="selectPlanQuarterList" parameterType="com.ozs.plan.doman.PlanQuarter" resultMap="PlanQuarterResult">
-		select * from plan_practical
-		<where>
-			<if test="projectName != null and projectName != ''">
-				AND project_name like concat('%', #{projectName}, '%')
-			</if>
-			<if test="purchaseServices != null and purchaseServices != ''">
-				AND purchase_services = #{purchaseServices}
-			</if>
-			<if test="isExcess != null and isExcess != ''">
-				AND is_excess = #{isExcess}
-			</if>
-			<if test="projectStatus != null and projectStatus != ''">
-				AND project_status = #{projectStatus}
-			</if>
-			<if test="beginTime != null  "><!-- 开始时间检索 -->
-				and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
-			</if>
-			<if test="endTime != null  "><!-- 结束时间检索 -->
-				and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
-			</if>
-			and plan_type=0
-			and del_flay=0
-		</where>
-		order by plan_demand_sub_time desc
-	</select>
+    <select id="selectPlanQuarterList" parameterType="com.ozs.plan.doman.PlanQuarter" resultMap="PlanQuarterResult">
+        select * from plan_practical
+        <where>
+            <if test="projectName != null and projectName != ''">
+                AND project_name like concat('%', #{projectName}, '%')
+            </if>
+            <if test="purchaseServices != null and purchaseServices != ''">
+                AND purchase_services = #{purchaseServices}
+            </if>
+            <if test="isExcess != null and isExcess != ''">
+                AND is_excess = #{isExcess}
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                AND project_status = #{projectStatus}
+            </if>
+            <if test="beginTime != null  "><!-- 开始时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
+            </if>
+            <if test="endTime != null  "><!-- 结束时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+            and plan_type=0
+            and del_flay=0
+        </where>
+        order by plan_demand_sub_time desc
+    </select>
 
-	<select id="selectPlanQuarterExamineList" parameterType="com.ozs.plan.doman.PlanQuarter"
-			resultMap="PlanQuarterResult">
-		select * from plan_practical
-		<where>
-			<if test="projectName != null and projectName != ''">
-				AND project_name like concat('%', #{projectName}, '%')
-			</if>
-			<if test="purchaseServices != null and purchaseServices != ''">
-				AND purchase_services = #{purchaseServices}
-			</if>
-			<if test="isExcess != null and isExcess != ''">
-				AND is_excess = #{isExcess}
-			</if>
-			<if test="projectStatus == null or projectStatus ==''">
-				AND project_status in (1,3)
-			</if>
-			<if test="projectStatus != null and projectStatus != ''">
-				AND project_status = #{projectStatus}
-			</if>
-			<if test="beginTime != null "><!-- 开始时间检索 -->
-				and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
-			</if>
-			<if test="endTime != null "><!-- 结束时间检索 -->
-				and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
-			</if>
-			and plan_type=0
-			and del_flay=0
-		</where>
-		order by plan_demand_sub_time desc
-	</select>
+    <select id="selectPlanQuarterExamineList" parameterType="com.ozs.plan.doman.PlanQuarter"
+            resultMap="PlanQuarterResult">
+        select * from plan_practical
+        <where>
+            <if test="projectName != null and projectName != ''">
+                AND project_name like concat('%', #{projectName}, '%')
+            </if>
+            <if test="purchaseServices != null and purchaseServices != ''">
+                AND purchase_services = #{purchaseServices}
+            </if>
+            <if test="isExcess != null and isExcess != ''">
+                AND is_excess = #{isExcess}
+            </if>
+            <if test="projectStatus == null or projectStatus ==''">
+                AND project_status in (1,3)
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                AND project_status = #{projectStatus}
+            </if>
+            <if test="beginTime != null "><!-- 开始时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
+            </if>
+            <if test="endTime != null "><!-- 结束时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+            and plan_type=0
+            and del_flay=0
+        </where>
+        order by plan_demand_sub_time desc
+    </select>
 
-	<select id="countProjectName" resultType="java.lang.Integer" parameterType="java.lang.String">
-		select count(plan_practical.plan_practical_id)
-		from plan_practical
-		where project_name = #{projectName}
-		  and plan_type = 0
-		  and del_flay = 0
-	</select>
+    <select id="countProjectName" resultType="java.lang.Integer" parameterType="java.lang.String">
+        select count(plan_practical.plan_practical_id)
+        from plan_practical
+        where project_name = #{projectName}
+          and plan_type = 0
+          and del_flay = 0
+    </select>
 
-	<select id="getById" resultType="com.ozs.plan.doman.PlanQuarter" parameterType="java.lang.Long">
-		select *
-		from plan_practical
-		where plan_practical_id = #{planPracticalId}
-		  and del_flay = 0
-	</select>
+    <select id="getById" resultType="com.ozs.plan.doman.PlanQuarter" parameterType="java.lang.Long">
+        select *
+        from plan_practical
+        where plan_practical_id = #{planPracticalId}
+          and del_flay = 0
+    </select>
 
-	<select id="countProjectNameOther" resultType="java.lang.Integer" parameterType="java.lang.String">
-		select count(plan_practical.plan_practical_id)
-		from plan_practical
-		where project_name = #{projectName}
-		  and plan_practical_id != #{planPracticalId}
-		  and plan_type = 0
-		  and del_flay = 0
-	</select>
+    <select id="countProjectNameOther" resultType="java.lang.Integer" parameterType="java.lang.String">
+        select count(plan_practical.plan_practical_id)
+        from plan_practical
+        where project_name = #{projectName}
+          and plan_practical_id != #{planPracticalId}
+          and plan_type = 0
+          and del_flay = 0
+    </select>
 
-	<!--	创建计划信息-->
-	<insert id="insertPlanQuarter" parameterType="com.ozs.plan.doman.PlanQuarter" useGeneratedKeys="true"
-			keyProperty="planYearId">
-		insert into plan_practical (purchase_dept_id, project_name, project_type, demand_overview, evaluation,
-									is_excess,
-									purchase_services, purchase_mode, plan_demand_sub_time, plan_purchase_finish_time,
-									plan_deliver_time, project_attr, adjust_reason, remarks, project_status,
-									created, create_time, del_flay, plan_type, send_letter)
-		values (#{purchaseDeptId}, #{projectName}, #{projectType}, #{demandOverview}, #{evaluation}, #{isExcess},
-				#{purchaseServices}, #{purchaseMode}, #{planDemandSubTime}, #{planPurchaseFinishTime},
-				#{planDeliverTime},
-				#{projectAttr}, #{adjustReason}, #{remarks}, #{projectStatus}, #{created}, #{createTime}, 0, 0, 0)
-	</insert>
+    <!--	创建计划信息-->
+    <insert id="insertPlanQuarter" parameterType="com.ozs.plan.doman.PlanQuarter" useGeneratedKeys="true"
+            keyProperty="planYearId">
+        insert into plan_practical (purchase_dept_id, project_name, project_type, demand_overview, evaluation,
+                                    is_excess,
+                                    purchase_services, purchase_mode, plan_demand_sub_time, plan_purchase_finish_time,
+                                    plan_deliver_time, project_attr, adjust_reason, remarks, project_status,
+                                    created, create_time, del_flay, plan_type, send_letter)
+        values (#{purchaseDeptId}, #{projectName}, #{projectType}, #{demandOverview}, #{evaluation}, #{isExcess},
+                #{purchaseServices}, #{purchaseMode}, #{planDemandSubTime}, #{planPurchaseFinishTime},
+                #{planDeliverTime},
+                #{projectAttr}, #{adjustReason}, #{remarks}, #{projectStatus}, #{created}, #{createTime}, 0, 0, 0)
+    </insert>
 
-	<!--	计划删除-->
-	<update id="deletePlanQuarterByIds" parameterType="java.lang.Long">
-		update plan_practical set del_flay=1 where plan_practical_id in
-		<foreach collection="array" item="item" open="(" separator="," close=")">
-			#{item}
-		</foreach>
-	</update>
+    <!--	计划删除-->
+    <update id="deletePlanQuarterByIds" parameterType="java.lang.Long">
+        update plan_practical set del_flay=1 where plan_practical_id in
+        <foreach collection="array" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 
-	<update id="deletePlanQuarterById" parameterType="java.lang.Long">
-		update plan_practical
-		set del_flay=1
-		where plan_practical_id = #{planPracticalId}
-	</update>
+    <update id="deletePlanQuarterById" parameterType="java.lang.Long">
+        update plan_practical
+        set del_flay=1
+        where plan_practical_id = #{planPracticalId}
+    </update>
 
-	<!--	计划提交-->
-	<update id="commit" parameterType="java.lang.Long">
-		update plan_practical
-		set project_status=1
-		where plan_practical_id = #{planPracticalId}
-	</update>
+    <!--	计划提交-->
+    <update id="commit" parameterType="java.lang.Long">
+        update plan_practical
+        set project_status=1
+        where plan_practical_id = #{planPracticalId}
+    </update>
 
-	<!--	计划审核-->
-	<update id="review" parameterType="com.ozs.plan.doman.PlanQuarter">
-		update plan_practical
-		set refuse_reason=#{refuseReason},
-			project_status=#{projectStatus}
-		where plan_practical_id = #{planPracticalId}
-	</update>
+    <!--	计划审核-->
+    <update id="review" parameterType="com.ozs.plan.doman.PlanQuarter">
+        update plan_practical
+        <set>
+            <if test="refuseReason != null and refuseReason != ''">
+                refuse_reason=#{refuseReason},
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                project_status=#{projectStatus}
+            </if>
+        </set>
+        where plan_practical_id = #{planPracticalId}
+    </update>
 
-	<update id="sendLetter" parameterType="java.lang.Long">
-		update plan_practical
-		set send_letter= 1
-		where plan_practical_id = #{planPracticalId}
-	</update>
+    <update id="sendLetter" parameterType="java.lang.Long">
+        update plan_practical
+        set send_letter= 1
+        where plan_practical_id = #{planPracticalId}
+    </update>
 
 
 </mapper>

+ 192 - 100
purchase-system/src/main/resources/mapper/plan/ProvisionalPlanMapper.xml

@@ -1,107 +1,199 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.plan.mapper.ProvisionalPlanMapper">
-	<resultMap type="com.ozs.plan.doman.ProvisionalPlan" id="ProvisionalPlanResult">
-		<id property="plan_year_id" column="planYearId"/>
-		<result property="plan_year_id" column="planYearId"/>
-		<result property="purchase_dept_id" column="purchaseDeptId"/>
-		<result property="project_name" column="projectName"/>
-		<result property="project_type" column="projectType"/>
-		<result property="demand_overview" column="demandOverview"/>
-		<result property="evaluation" column="evaluation"/>
-		<result property="is_excess" column="isExcess"/>
-		<result property="purchase_services" column="purchaseServices"/>
-		<result property="purchase_mode" column="purchaseMode"/>
-		<result property="plan_demand_sub_time" column="planDemandSubTime"/>
-		<result property="plan_purchase_finish_time" column="planPurchaseFinishTime"/>
-		<result property="plan_deliver_time" column="planDeliverTime"/>
-		<result property="project_attr" column="projectAttr"/>
-		<result property="adjust_reason" column="adjustReason"/>
-		<result property="remarks" column="remarks"/>
-		<result property="project_status" column="projectStatus"/>
-		<result property="refuse_reason" column="refuseReason"/>
-		<result property="del_flay" column="delFlay"/>
-		<result property="plan_type" column="planType"/>
-		<result property="created" column="created"/>
-		<result property="create_time" column="createTime"/>
-		<result property="updated" column="updated"/>
-		<result property="update_time" column="updateTime"/>
-	</resultMap>
+    <resultMap type="com.ozs.plan.doman.ProvisionalPlan" id="ProvisionalPlanResult">
+        <id property="plan_practical_id" column="planPracticalId"/>
+        <id property="plan_year_id" column="planYearId"/>
+        <result property="plan_year_id" column="planYearId"/>
+        <result property="purchase_dept_id" column="purchaseDeptId"/>
+        <result property="project_name" column="projectName"/>
+        <result property="project_type" column="projectType"/>
+        <result property="demand_overview" column="demandOverview"/>
+        <result property="evaluation" column="evaluation"/>
+        <result property="is_excess" column="isExcess"/>
+        <result property="purchase_services" column="purchaseServices"/>
+        <result property="purchase_mode" column="purchaseMode"/>
+        <result property="plan_demand_sub_time" column="planDemandSubTime"/>
+        <result property="plan_purchase_finish_time" column="planPurchaseFinishTime"/>
+        <result property="plan_deliver_time" column="planDeliverTime"/>
+        <result property="project_attr" column="projectAttr"/>
+        <result property="adjust_reason" column="adjustReason"/>
+        <result property="remarks" column="remarks"/>
+        <result property="project_status" column="projectStatus"/>
+        <result property="refuse_reason" column="refuseReason"/>
+        <result property="del_flay" column="delFlay"/>
+        <result property="plan_type" column="planType"/>
+        <result property="created" column="created"/>
+        <result property="create_time" column="createTime"/>
+        <result property="updated" column="updated"/>
+        <result property="update_time" column="updateTime"/>
+    </resultMap>
 
-	<delete id="deleteProvisionalPlanById" parameterType="java.lang.Integer">
-		delete from plan_practical where plan_year_id = #{planYearId}
-	</delete>
+    <delete id="deleteProvisionalPlanById" parameterType="java.lang.Integer">
+        delete
+        from plan_practical
+        where planPracticalId = #{plan_practical_id}
+    </delete>
 
-	<update id="updateProvisionalPlanById" parameterType="com.ozs.plan.doman.ProvisionalPlan">
-		update plan_practical
-		<set>
-			<if test="purchaseDeptId != null and purchaseDeptId != ''">
-				purchase_dept_id = #{purchaseDeptId},
-			</if>
-			<if test="projectName != null and projectName != ''">
-				project_name = #{projectName},
-			</if>
-			<if test="projectType != null and projectType != ''">
-				project_type = #{projectType},
-			</if>
-			<if test="demandOverview != null and demandOverview != ''">
-				demand_overview = #{demandOverview},
-			</if>
-			<if test="evaluation != null and evaluation != ''">
-				evaluation = #{evaluation},
-			</if>
-			<if test="isExcess != null and isExcess != '' ">
-				is_excess = #{isExcess},
-			</if>
-			<if test="purchaseServices != null and purchaseServices != '' ">
-				purchase_services = #{purchaseServices},
-			</if>
-			<if test="purchaseMode != null and purchaseMode != '' ">
-				purchase_mode = #{purchaseMode},
-			</if>
-			<if test="planDemandSubTime != null and planDemandSubTime != '' ">
-				plan_demand_sub_time = #{planDemandSubTime},
-			</if>
-			<if test="planPurchaseFinishTime != null and planPurchaseFinishTime != '' ">
-				plan_purchase_finish_time = #{planPurchaseFinishTime},
-			</if>
-			<if test="planDeliverTime != null and planDeliverTime != '' ">
-				plan_deliver_time = #{planDeliverTime},
-			</if>
-			<if test="projectAttr != null and projectAttr != '' ">
-				project_attr = #{projectAttr},
-			</if>
-			<if test="adjustReason != null and adjustReason != '' ">
-				adjust_reason = #{adjustReason},
-			</if>
-			<if test="remarks != null and remarks != '' ">
-				remarks = #{remarks},
-			</if>
-			<if test="projectStatus != null and projectStatus != '' ">
-				project_status = #{projectStatus},
-			</if>
-			<if test="refuseReason != null and refuseReason != '' ">
-				refuse_reason = #{refuseReason},
-			</if>
-			<if test="delFlay != null and delFlay != '' ">
-				del_flay = #{delFlay},
-			</if>
-			<if test="planType != null and planType != '' ">
-				plan_type = #{planType},
-			</if>
-			<if test="updated != null and updated != '' ">
-				updated = #{updated},
-			</if>
-			<if test="updateTime != null and updateTime != '' ">
-				update_time = #{updateTime},
-			</if>
-		</set>
-		where plan_year_id = #{planYearId}
-	</update>
+    <update id="updateProvisionalPlanById" parameterType="com.ozs.plan.doman.ProvisionalPlan">
+        update plan_practical
+        <set>
+            <if test="purchaseDeptId != null and purchaseDeptId != ''">
+                purchase_dept_id = #{purchaseDeptId},
+            </if>
+            <if test="projectName != null and projectName != ''">
+                project_name = #{projectName},
+            </if>
+            <if test="projectType != null and projectType != ''">
+                project_type = #{projectType},
+            </if>
+            <if test="demandOverview != null and demandOverview != ''">
+                demand_overview = #{demandOverview},
+            </if>
+            <if test="evaluation != null and evaluation != ''">
+                evaluation = #{evaluation},
+            </if>
+            <if test="isExcess != null and isExcess != '' ">
+                is_excess = #{isExcess},
+            </if>
+            <if test="purchaseServices != null and purchaseServices != '' ">
+                purchase_services = #{purchaseServices},
+            </if>
+            <if test="purchaseMode != null and purchaseMode != '' ">
+                purchase_mode = #{purchaseMode},
+            </if>
+            <if test="planDemandSubTime != null and planDemandSubTime != '' ">
+                plan_demand_sub_time = #{planDemandSubTime},
+            </if>
+            <if test="planPurchaseFinishTime != null and planPurchaseFinishTime != '' ">
+                plan_purchase_finish_time = #{planPurchaseFinishTime},
+            </if>
+            <if test="planDeliverTime != null and planDeliverTime != '' ">
+                plan_deliver_time = #{planDeliverTime},
+            </if>
+            <if test="projectAttr != null and projectAttr != '' ">
+                project_attr = #{projectAttr},
+            </if>
+            <if test="adjustReason != null and adjustReason != '' ">
+                adjust_reason = #{adjustReason},
+            </if>
+            <if test="remarks != null and remarks != '' ">
+                remarks = #{remarks},
+            </if>
+            <if test="projectStatus != null and projectStatus != '' ">
+                project_status = #{projectStatus},
+            </if>
+            <if test="refuseReason != null and refuseReason != '' ">
+                refuse_reason = #{refuseReason},
+            </if>
+            <if test="delFlay != null and delFlay != '' ">
+                del_flay = #{delFlay},
+            </if>
+            <if test="planType != null and planType != '' ">
+                plan_type = #{planType},
+            </if>
+            <if test="updated != null and updated != '' ">
+                updated = #{updated},
+            </if>
+            <if test="updateTime != null and updateTime != '' ">
+                update_time = #{updateTime}
+            </if>
+        </set>
+        where planPracticalId = #{plan_practical_id}
+    </update>
 
-	<select id="selectProjectName" resultType="com.ozs.plan.doman.ProvisionalPlan" parameterType="java.lang.String">
-		select * from plan_practical where project_name = #{projectName} and del_flay = 0 and plan_type = "1"
-	</select>
+    <select id="selectProjectName" resultType="com.ozs.plan.doman.ProvisionalPlan" parameterType="java.lang.String">
+        select *
+        from plan_practical
+        where project_name = #{projectName}
+          and del_flay = 0
+          and plan_type = "1"
+    </select>
+
+    <update id="commitProvisionalPlan" parameterType="java.lang.Integer">
+        update plan_practical
+        set project_status = 1
+        where plan_type = 1
+          and plan_practical_id = #{plan_practical_id}
+    </update>
+
+    <select id="seletById" resultType="com.ozs.plan.doman.ProvisionalPlan" parameterType="java.lang.Integer">
+        select *
+        from plan_practical
+        where plan_type = 1
+          and plan_practical_id = #{plan_practical_id}
+    </select>
+
+    <select id="selectProvisionalPlan" resultType="com.ozs.plan.doman.ProvisionalPlan"
+            parameterType="com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo">
+        select * from plan_practical
+        <where>
+            <if test="projectName != null and projectName != ''">
+                and project_name like concat('%', #{projectName}, '%')
+            </if>
+            <if test="purchaseServices != null and purchaseServices != ''">
+                and purchase_services = #{purchaseServices}
+            </if>
+            <if test="isExcess != null and isExcess != ''">
+                and is_excess = #{isExcess}
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                and project_status = #{projectStatus}
+            </if>
+            <if test="startTime != null  "><!-- 开始时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
+            </if>
+            <if test="endTime != null  "><!-- 结束时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+            and plan_type = 1
+        </where>
+        order by create_time desc
+    </select>
+
+    <select id="selectProvisionalPlanAudit" resultType="com.ozs.plan.doman.ProvisionalPlan"
+            parameterType="com.ozs.plan.doman.vo.requestVo.ProvisionalPlanVo">
+        select * from plan_practical
+        <where>
+            <if test="projectName != null and projectName != ''">
+                and project_name like concat('%', #{projectName}, '%')
+            </if>
+            <if test="purchaseServices != null and purchaseServices != ''">
+                and purchase_services = #{purchaseServices}
+            </if>
+            <if test="isExcess != null and isExcess != ''">
+                and is_excess = #{isExcess}
+            </if>
+            <if test="projectStatus == null or projectStatus ==''">
+                and project_status in (1,3)
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                and project_status = #{projectStatus}
+            </if>
+            <if test="startTime != null  "><!-- 开始时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
+            </if>
+            <if test="endTime != null  "><!-- 结束时间检索 -->
+                and date_format(plan_demand_sub_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+            and plan_type = 1
+        </where>
+        order by create_time desc
+    </select>
+
+    <!--	计划审核-->
+    <update id="review" parameterType="com.ozs.plan.doman.ProvisionalPlan">
+        update plan_practical
+        <set>
+            <if test="refuseReason != null and refuseReason != ''">
+                refuse_reason=#{refuseReason},
+            </if>
+            <if test="projectStatus != null and projectStatus != ''">
+                project_status=#{projectStatus}
+            </if>
+        </set>
+        where plan_practical_id = #{planPracticalId}
+    </update>
 </mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmBidFailureMapper.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.PmBidFailureMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmBidOpeningMapper.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.system.mapper.PmBidOpeningMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmBidWinningMapper.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.system.mapper.PmBidWinningMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmContractInfoMapper.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.system.mapper.PmContractInfoMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmContractUnitRefMapper.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.system.mapper.PmContractUnitRefMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmProjectConstructionMapper.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.system.mapper.PmProjectConstructionMapper">
+
+
+</mapper>

+ 6 - 0
purchase-system/src/main/resources/mapper/pm/PmReleaseAnnouncementMapper.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.system.mapper.PmReleaseAnnouncementMapper">
+
+
+</mapper>