Procházet zdrojové kódy

项目管理-采购执行

suntianwu před 2 roky
rodič
revize
e53e2498d3
20 změnil soubory, kde provedl 460 přidání a 32 odebrání
  1. 6 0
      purchase-admin/src/main/java/com/ozs/web/controller/pm/PmDemandController.java
  2. 20 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBaseExpertResVo.java
  3. 59 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidFailureResVo.java
  4. 20 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidOpeningResVo.java
  5. 72 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmBidWinningResVo.java
  6. 21 0
      purchase-system/src/main/java/com/ozs/pm/doman/vo/responseVo/PmPurchaseExecutionResVo.java
  7. 5 1
      purchase-system/src/main/java/com/ozs/pm/mapper/PmBidOpeningMapper.java
  8. 5 1
      purchase-system/src/main/java/com/ozs/pm/mapper/PmDemandExpertRefMapper.java
  9. 4 1
      purchase-system/src/main/java/com/ozs/pm/service/PmBidOpeningService.java
  10. 4 1
      purchase-system/src/main/java/com/ozs/pm/service/PmDemandExpertRefService.java
  11. 6 1
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidOpeningServiceImpl.java
  12. 6 1
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandExpertRefServiceImpl.java
  13. 208 19
      purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java
  14. 10 1
      purchase-system/src/main/resources/mapper/pm/PmBidOpeningMapper.xml
  15. 1 1
      purchase-system/src/main/resources/mapper/pm/PmBidWinningMapper.xml
  16. 1 1
      purchase-system/src/main/resources/mapper/pm/PmContractInfoMapper.xml
  17. 1 1
      purchase-system/src/main/resources/mapper/pm/PmContractUnitRefMapper.xml
  18. 9 1
      purchase-system/src/main/resources/mapper/pm/PmDemandExpertRefMapper.xml
  19. 1 1
      purchase-system/src/main/resources/mapper/pm/PmProjectConstructionMapper.xml
  20. 1 1
      purchase-system/src/main/resources/mapper/pm/PmReleaseAnnouncementMapper.xml

+ 6 - 0
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmDemandController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 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.PmDemand;
 import com.ozs.pm.doman.vo.requestVo.PmBookBuildingReqVo;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
 import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
@@ -13,6 +14,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -72,6 +74,10 @@ public class PmDemandController extends BaseController {
         if(pmBookBuildingReqVo.getDemandId() == null){
             return AjaxResult.error("demandId不能为空");
         }
+        PmDemand pmDemand = pmDemandService.getById(pmBookBuildingReqVo.getDemandId());
+        if(ObjectUtils.isEmpty(pmDemand)){
+            return error("demandId参数错误");
+        }
         LoginUser loginUser = tokenService.getLoginUser(request);
         pmBookBuildingReqVo.setUpdateBy(String.valueOf(loginUser.getUserId()));
         return toAjax(pmDemandService.bookBuilding(pmBookBuildingReqVo));

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

@@ -0,0 +1,20 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class PmBaseExpertResVo{
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+    @ApiModelProperty("专家数量")
+    private Integer expertCount;
+
+    @ApiModelProperty("选取时间 yyy-MM-dd")
+    private String accessTime;
+}

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

@@ -0,0 +1,59 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+
+/**
+ * 流标基本情况表(PmBidFailure)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:21
+ */
+
+@Data
+public class PmBidFailureResVo implements Serializable {
+    private static final long serialVersionUID = 491684278331772388L;
+
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("流标原因")
+    private String bidFailureReason;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("流标时间")
+    private Date bidFailureTime;
+
+
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+    /**
+     * 上传附件的URL
+     */
+    @ApiModelProperty("上传附件的URL")
+    HashMap<String, String> fileMap;
+}

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

@@ -0,0 +1,20 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class PmBidOpeningResVo {
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+    @ApiModelProperty("参与数量")
+    private Integer partakeCount;
+
+    @ApiModelProperty("开标时间 yyy-MM-dd")
+    private String openBidTime;
+}

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

@@ -0,0 +1,72 @@
+package com.ozs.pm.doman.vo.responseVo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.system.domain.SysFileRef;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 中标基本情况表(PmBidWinning)实体类
+ *
+ * @author makejava
+ * @since 2023-02-02 00:47:22
+ */
+
+@Data
+@ApiModel(value = "中标基本情况表", description = "")
+public class PmBidWinningResVo implements Serializable {
+    private static final long serialVersionUID = -23785941414293726L;
+
+    private Long id;
+
+
+    @ApiModelProperty("需求ID")
+    private Long demandId;
+
+
+    @ApiModelProperty("中标金额(万元)")
+    private Double bidWinningAmount;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("中标公告时间")
+    private Date bidAnnouncementTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("中标公告截止时间")
+    private Date bidAnnouncementCloseTime;
+
+
+    @ApiModelProperty("创建者")
+    private String createBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+
+    @ApiModelProperty("更新者")
+    private String updateBy;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+    /**
+     * 中标单位信息列表
+     */
+    @ApiModelProperty("中标单位信息列表")
+    private List<Long> pmBidOpeningIdList;
+
+    /**
+     * 上传附件的URL
+     */
+    @ApiModelProperty("上传附件的URL")
+    HashMap<String, String> fileMap;
+}

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

@@ -36,6 +36,27 @@ public class PmPurchaseExecutionResVo {
     @ApiModelProperty("发布公告列表")
     private List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList;
 
+    @ApiModelProperty("专家列表")
+    private List<PmBaseExpertResVo> pmBaseExpertResVoList;
+
+    @ApiModelProperty("开标信息列表")
+    private List<PmBidOpeningResVo> pmBidOpeningResVoList;
+
+    @ApiModelProperty("中标信息列表")
+    private List<PmBidWinningResVo> pmBidWinningResVoList;
+    /**
+     *
+     * 质疑情况附件
+     */
+    @ApiModelProperty("质疑情况附件")
+    HashMap<String, String> callRequestFileMap;
+
+    @ApiModelProperty("流标信息列表")
+    private List<PmBidFailureResVo> pmBidFailureResVoList;
+
+    @ApiModelProperty("中标通知书")
+    HashMap<String, String> pmBidWinningNotificationFileMap;
+
     /**
      *
      * 上传附件的URL

+ 5 - 1
purchase-system/src/main/java/com/ozs/pm/mapper/PmBidOpeningMapper.java

@@ -2,6 +2,10 @@ package com.ozs.pm.mapper;
 
 import com.ozs.pm.doman.PmBidOpening;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.pm.doman.vo.responseVo.PmBidOpeningResVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -11,5 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2023-02-02 00:47:22
  */
 public interface PmBidOpeningMapper extends BaseMapper<PmBidOpening> {
-
+    List<PmBidOpeningResVo> getPmBidOpeningResVoList(@Param("projectName") Long demnadId);
 }

+ 5 - 1
purchase-system/src/main/java/com/ozs/pm/mapper/PmDemandExpertRefMapper.java

@@ -2,6 +2,10 @@ package com.ozs.pm.mapper;
 
 import com.ozs.pm.doman.PmDemandExpertRef;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.pm.doman.vo.responseVo.PmBaseExpertResVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 /**
@@ -11,5 +15,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2023-02-03 15:37:07
  */
 public interface PmDemandExpertRefMapper extends BaseMapper<PmDemandExpertRef> {
-
+    List<PmBaseExpertResVo> getPmBaseExpertResVoList(@Param("projectName") Long demnadId);
 }

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

@@ -2,6 +2,9 @@ package com.ozs.pm.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.pm.doman.PmBidOpening;
+import com.ozs.pm.doman.vo.responseVo.PmBidOpeningResVo;
+
+import java.util.List;
 
 /**
  * 开标信息表(PmBidOpening)表服务接口
@@ -10,5 +13,5 @@ import com.ozs.pm.doman.PmBidOpening;
  * @since 2023-02-02 00:47:22
  */
 public interface PmBidOpeningService extends IService<PmBidOpening> {
-
+    List<PmBidOpeningResVo> getPmBidOpeningResVoList(Long demnadId);
 }

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

@@ -2,6 +2,9 @@ package com.ozs.pm.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.pm.doman.PmDemandExpertRef;
+import com.ozs.pm.doman.vo.responseVo.PmBaseExpertResVo;
+
+import java.util.List;
 
 /**
  * 项目专家关联表(PmDemandExpertRef)表服务接口
@@ -10,5 +13,5 @@ import com.ozs.pm.doman.PmDemandExpertRef;
  * @since 2023-02-03 15:37:07
  */
 public interface PmDemandExpertRefService extends IService<PmDemandExpertRef> {
-
+    List<PmBaseExpertResVo> getPmBaseExpertResVoList(Long demnadId);
 }

+ 6 - 1
purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidOpeningServiceImpl.java

@@ -1,11 +1,14 @@
 package com.ozs.pm.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.doman.vo.responseVo.PmBidOpeningResVo;
 import com.ozs.pm.mapper.PmBidOpeningMapper;
 import com.ozs.pm.doman.PmBidOpening;
 import com.ozs.pm.service.PmBidOpeningService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 开标信息表(PmBidOpening)表服务实现类
  *
@@ -14,5 +17,7 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class PmBidOpeningServiceImpl extends ServiceImpl<PmBidOpeningMapper, PmBidOpening> implements PmBidOpeningService {
-
+    public List<PmBidOpeningResVo> getPmBidOpeningResVoList(Long demnadId){
+        return this.baseMapper.getPmBidOpeningResVoList(demnadId);
+    }
 }

+ 6 - 1
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandExpertRefServiceImpl.java

@@ -1,11 +1,14 @@
 package com.ozs.pm.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.pm.doman.vo.responseVo.PmBaseExpertResVo;
 import com.ozs.pm.mapper.PmDemandExpertRefMapper;
 import com.ozs.pm.doman.PmDemandExpertRef;
 import com.ozs.pm.service.PmDemandExpertRefService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 项目专家关联表(PmDemandExpertRef)表服务实现类
  *
@@ -14,5 +17,7 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class PmDemandExpertRefServiceImpl extends ServiceImpl<PmDemandExpertRefMapper, PmDemandExpertRef> implements PmDemandExpertRefService {
-
+    public List<PmBaseExpertResVo> getPmBaseExpertResVoList(Long demnadId){
+        return this.baseMapper.getPmBaseExpertResVoList(demnadId);
+    }
 }

+ 208 - 19
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -7,13 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.ozs.base.domain.BaseAgency;
-import com.ozs.base.domain.BaseExpert;
-import com.ozs.base.domain.BaseSupplier;
-import com.ozs.base.domain.BaseUnitInformation;
-import com.ozs.base.service.BaseAgencyService;
-import com.ozs.base.service.BaseExpertService;
-import com.ozs.base.service.BaseSupplierService;
+import com.ozs.base.domain.*;
+import com.ozs.base.service.*;
 import com.ozs.common.enums.*;
 import com.ozs.common.utils.DateUtils;
 import com.ozs.common.utils.RandomUtil;
@@ -96,8 +91,12 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     private BaseAgencyService baseAgencyService;
 
     @Autowired
-    private PmProjectConstructionService pmProjectConstructionService;
+    private BaseNoticeService baseNoticeService;
+    @Autowired
+    private BaseNoticeTypeService baseNoticeTypeService;
 
+    @Autowired
+    private PmProjectConstructionService pmProjectConstructionService;
 
     /**
      * 查询采购需求
@@ -298,11 +297,87 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 }
             } else if("4".equals(detailType)) { //中标信息
                 PmPurchaseExecutionResVo pmPurchaseExecutionResVo = new PmPurchaseExecutionResVo();
+
+                //代理商信息
                 BaseAgency baseAgency = this.baseAgencyService.getById(pmDemand.getAgencyId());
                 pmPurchaseExecutionResVo.setBaseAgency(baseAgency);
 
+                //发布公告列表
+                LambdaQueryWrapper<PmReleaseAnnouncement> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId,demandId);
+                List<PmReleaseAnnouncement> pmReleaseAnnouncementList = this.pmReleaseAnnouncementService.list(lambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmReleaseAnnouncementList)){
+                    List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList = new ArrayList<>();
+                    for (PmReleaseAnnouncement pmReleaseAnnouncement : pmReleaseAnnouncementList) {
+                        PmReleaseAnnouncementResVo pmReleaseAnnouncementResVo = new PmReleaseAnnouncementResVo();
+                        BeanUtils.copyProperties(pmReleaseAnnouncement,pmReleaseAnnouncementResVo);
+                        HashMap<String, String> fileMap = getFileMap(pmReleaseAnnouncement.getId(),SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType());
+                        if(fileMap != null){
+                            pmReleaseAnnouncementResVo.setFileMap(fileMap);
+                        }
+                        pmReleaseAnnouncementResVoList.add(pmReleaseAnnouncementResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmReleaseAnnouncementResVoList(pmReleaseAnnouncementResVoList);
+                }
+
+                //专家信息列表
+                List<PmBaseExpertResVo> pmBaseExpertResVoList = this.pmDemandExpertRefService.getPmBaseExpertResVoList(demandId);
+                pmPurchaseExecutionResVo.setPmBaseExpertResVoList(pmBaseExpertResVoList);
+
+                //开标信息列表
+                List<PmBidOpeningResVo> pmBidOpeningResVoList = this.pmBidOpeningService.getPmBidOpeningResVoList(demandId);
+                pmPurchaseExecutionResVo.setPmBidOpeningResVoList(pmBidOpeningResVoList);
+
+                //中标信息列表
+                LambdaQueryWrapper<PmBidWinning> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper1.eq(PmBidWinning::getDemandId,demandId).orderByDesc(PmBidWinning::getBidAnnouncementTime);
+                List<PmBidWinning> pmBidWinningList = this.pmBidWinningService.list(lambdaQueryWrapper1);
+                if (!ObjectUtils.isEmpty(pmBidWinningList)) {
+                    List<PmBidWinningResVo> pmBidWinningResVoList = new ArrayList<>();
+                    for(PmBidWinning pmBidWinning : pmBidWinningList) {
+                        PmBidWinningResVo pmBidWinningResVo = new PmBidWinningResVo();
+                        BeanUtils.copyProperties(pmBidWinning, pmBidWinningResVo);
+                        HashMap<String, String> fileMap = getFileMap(pmBidWinning.getId(),SysFileRefEnum.PM_BID_WINNING_FILE.getType());
+                        if(fileMap != null){
+                            pmBidWinningResVo.setFileMap(fileMap);
+                        }
+                        pmBidWinningResVoList.add(pmBidWinningResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmBidWinningResVoList(pmBidWinningResVoList);
+                }
+
+                //质疑情况
+                HashMap<String, String> callRequestFileMap = getFileMap(demandId,SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
+                if(callRequestFileMap != null){
+                    pmPurchaseExecutionResVo.setCallRequestFileMap(callRequestFileMap);
+                }
+
+                //流标情况
+                LambdaQueryWrapper<PmBidFailure> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper2.eq(PmBidFailure::getDemandId,demandId).orderByDesc(PmBidFailure::getBidFailureTime);
+                List<PmBidFailure> pmBidFailureList = this.pmBidFailureService.list(lambdaQueryWrapper2);
+                if (!ObjectUtils.isEmpty(pmBidFailureList)) {
+                    List<PmBidFailureResVo> pmBidFailureResVoList = new ArrayList<>();
+                    for(PmBidFailure pmBidFailure : pmBidFailureList) {
+                        PmBidFailureResVo pmBidFailureResVo = new PmBidFailureResVo();
+                        BeanUtils.copyProperties(pmBidFailure, pmBidFailureResVo);
+                        HashMap<String, String> fileMap = getFileMap(pmBidFailure.getId(),SysFileRefEnum.PM_BID_FAILURE_FILE.getType());
+                        if(fileMap != null){
+                            pmBidFailureResVo.setFileMap(fileMap);
+                        }
+                        pmBidFailureResVoList.add(pmBidFailureResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmBidFailureResVoList(pmBidFailureResVoList);
+                }
+
+                //中标通知书
+                HashMap<String, String> pmBidWinningNotificationFileMap = getFileMap(demandId,SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType());
+                if(pmBidWinningNotificationFileMap != null){
+                    pmPurchaseExecutionResVo.setPmBidWinningNotificationFileMap(pmBidWinningNotificationFileMap);
+                }
 
                 vo.setPmPurchaseExecutionResVo(pmPurchaseExecutionResVo);
+
             } else if("5".equals(detailType)) { //合同信息
                 LambdaQueryWrapper<PmContractInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
                 lambdaQueryWrapper.eq(PmContractInfo::getDemandId,demandId);
@@ -312,7 +387,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                     BeanUtils.copyProperties(pmContractInfo,pmContractInfoResVo);
 
                     // todo
-                    BaseUnitInformation baseUnitInformation = null;
+                    BaseUnitInformation baseUnitInformation = new BaseUnitInformation();
 
                     PmBaseUnitInformationVo pmBaseUnitInformationVo = new PmBaseUnitInformationVo();
                     BeanUtils.copyProperties(baseUnitInformation, pmBaseUnitInformationVo);
@@ -348,10 +423,11 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                     }
 
                     //合同信息文件
-                    HashMap<String, String> pmContractInfoFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_CONTRACT_INFO.getType());
+                    HashMap<String, String> pmContractInfoFileMap = getFileMap(pmContractInfo.getId(),SysFileRefEnum.PM_CONTRACT_INFO.getType());
                     if(pmContractInfoFileMap != null){
                         pmContractInfoResVo.setFileMap(pmContractInfoFileMap);
                     }
+
                     vo.setPmContractInfoResVo(pmContractInfoResVo);
                 }
             } else if("6".equals(detailType)) { //建设情况
@@ -363,7 +439,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                     BeanUtils.copyProperties(pmProjectConstruction,pmProjectConstructionResVo);
 
                     //建设情况文件
-                    HashMap<String, String> projectConstructionFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_PROJECT_CONSTRUCTION.getType());
+                    HashMap<String, String> projectConstructionFileMap = getFileMap(pmProjectConstruction.getId(),SysFileRefEnum.PM_PROJECT_CONSTRUCTION.getType());
                     if(projectConstructionFileMap != null){
                         pmProjectConstructionResVo.setFileMap(projectConstructionFileMap);
                     }
@@ -412,11 +488,11 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         } else  if(reqType== 2) { //任务下达列表
             lw.apply("(project_status = 8 or project_status = 9 )");
         } else  if(reqType== 3) { //采购执行列表
-            lw.apply("(project_status = 9 or project_status = 10 )");
+            lw.apply("(project_status = 9 or project_status = 10 or project_status = 11 or project_status = 12 or project_status = 13 or project_status = 14 or project_status = 15)");
         } else  if(reqType== 4) { //合同信息列表
-            lw.apply("(project_status = 10 or project_status = 11 )");
+            lw.apply("(project_status = 15 or project_status = 16 )");
         }  else  if(reqType== 5) { //项目建设列表
-            lw.apply("(project_status = 11 or project_status = 12 )");
+            lw.apply("(project_status = 16 or project_status = 17 )");
         }
 
         IPage<PmDemand> pageRes = this.page(new Page<>(pmDemandReqVo.getPageNum(), pmDemandReqVo.getPageSize()), lw);
@@ -742,10 +818,105 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 vo.setFileMap(fileMap);
             }
         } else if("任务下达".equals(moduleName)) {
-            //todo
+            HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_TAST_RELEASE.getType());
+            if(fileMap != null){
+                vo.setFileMap(fileMap);
+            }
+        } else if("选取代理".equals(moduleName)) {
+           //do nothing
+        } else if("上传招标文件".equals(moduleName)) {
+            HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_BID_FILE.getType());
+            if(fileMap != null){
+                vo.setFileMap(fileMap);
+            }
+        } else if("发布公告".equals(moduleName)) {
+            LambdaQueryWrapper<PmReleaseAnnouncement> pmReleaseAnnouncementLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmReleaseAnnouncementLambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId,demandId);
+            List<PmReleaseAnnouncement> pmReleaseAnnouncementList = pmReleaseAnnouncementService.list(pmReleaseAnnouncementLambdaQueryWrapper);
+            if(!ObjectUtils.isEmpty(pmReleaseAnnouncementList)) {
+                HashMap<String, String> fileMapAll = new HashMap<>();
+                for(PmReleaseAnnouncement pmReleaseAnnouncement :pmReleaseAnnouncementList ){
+                    HashMap<String, String> fileMap = getFileMap(pmReleaseAnnouncement.getId(), SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType());
+                    if(!ObjectUtils.isEmpty(fileMap)){
+                        fileMap.forEach((k, v) -> fileMapAll.merge(k, v, (v1, v2) -> v2));
+                    }
+                }
+                if (fileMapAll != null) {
+                    vo.setFileMap(fileMapAll);
+                }
+            }
+        } else if("填写专家信息".equals(moduleName)) {
+            //do nothing
+        } else if("填写开标信息".equals(moduleName)) {
+            //do nothing
+        } else if("填写中标信息".equals(moduleName)) {
+            HashMap<String, String> fileMapAll = new HashMap<>();
+
+            LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,demandId);
+            List<PmBidWinning> pmBidWinningList = pmBidWinningService.list(pmBidWinningLambdaQueryWrapper);
+            if(!ObjectUtils.isEmpty(pmBidWinningList)) {
+                for(PmBidWinning pmBidWinning : pmBidWinningList) {
+                    HashMap<String, String> fileMap = getFileMap(pmBidWinning.getId(),SysFileRefEnum.PM_BID_WINNING_FILE.getType());
+                    if(!ObjectUtils.isEmpty(fileMap)){
+                        fileMap.forEach((k, v) -> fileMapAll.merge(k, v, (v1, v2) -> v2));
+                    }
+                }
+            }
+
+            LambdaQueryWrapper<PmBidFailure> pmBidFailureLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBidFailureLambdaQueryWrapper.eq(PmBidFailure::getDemandId,demandId);
+            List<PmBidFailure> pmBidFailureList = pmBidFailureService.list(pmBidFailureLambdaQueryWrapper);
+            if(!ObjectUtils.isEmpty(pmBidFailureService)) {
+                for(PmBidFailure pmBidFailure : pmBidFailureList) {
+                    HashMap<String, String> fileMap = getFileMap(pmBidFailure.getId(),SysFileRefEnum.PM_BID_FAILURE_FILE.getType());
+                    if(!ObjectUtils.isEmpty(fileMap)){
+                        fileMap.forEach((k, v) -> fileMapAll.merge(k, v, (v1, v2) -> v2));
+                    }
+                }
+            }
+
+            if(!ObjectUtils.isEmpty(fileMapAll)){
+                vo.setFileMap(fileMapAll);
+            }
+
+        } else if("质疑处理".equals(moduleName)) {
+            HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
+            if(fileMap != null){
+                vo.setFileMap(fileMap);
+            }
+        } else if("上传中标通知书".equals(moduleName)) {
+            HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType());
+            if(fileMap != null){
+                vo.setFileMap(fileMap);
+            }
+        } else if("合同填制".equals(moduleName)) {
+            LambdaQueryWrapper<PmContractInfo> pmContractInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmContractInfoLambdaQueryWrapper.eq(PmContractInfo::getDemandId,demandId);
+            PmContractInfo pmContractInfo = pmContractInfoService.getOne(pmContractInfoLambdaQueryWrapper);
+            if(pmContractInfo != null){
+                HashMap<String, String> fileMap = getFileMap(pmContractInfo.getId(),SysFileRefEnum.PM_CONTRACT_INFO.getType());
+                if(fileMap != null){
+                    vo.setFileMap(fileMap);
+                }
+            }
+
+        } else if("建设文档填制".equals(moduleName)) {
+            LambdaQueryWrapper<PmProjectConstruction> pmProjectConstructionLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmProjectConstructionLambdaQueryWrapper.eq(PmProjectConstruction::getDemandId,demandId);
+            PmProjectConstruction pmProjectConstruction = pmProjectConstructionService.getOne(pmProjectConstructionLambdaQueryWrapper);
+            if(pmProjectConstruction != null){
+                HashMap<String, String> fileMap = getFileMap(pmProjectConstruction.getId(),SysFileRefEnum.PM_PROJECT_CONSTRUCTION.getType());
+                if(fileMap != null){
+                    vo.setFileMap(fileMap);
+                }
+            }
+
+        } else if("项目归档".equals(moduleName)) {
+            //do nothing
         }
 
-         return vo;
+        return vo;
     }
 
     /**
@@ -861,7 +1032,10 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean insertPmReleaseAnnouncement(PmReleaseAnnouncementReqVo pmReleaseAnnouncementReqVo) throws Exception {
-
+        PmDemand pmDemand = this.getById(pmReleaseAnnouncementReqVo.getDemandId());
+        if(ObjectUtils.isEmpty(pmDemand)){
+            throw new Exception("参数错误");
+        }
         PmReleaseAnnouncement pmReleaseAnnouncement = new PmReleaseAnnouncement();
         BeanUtils.copyProperties(pmReleaseAnnouncementReqVo,pmReleaseAnnouncement);
         if(pmReleaseAnnouncementService.save(pmReleaseAnnouncement)){
@@ -871,8 +1045,23 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.WAIT_OPEN_BID.getCode()));
                 pmDemandUpdate.setUpdateTime(pmReleaseAnnouncementReqVo.getUpdateTime());
                 pmDemandUpdate.setUpdateBy(pmReleaseAnnouncementReqVo.getUpdateBy());
-                 return this.updateById(pmDemandUpdate);
-                 //TODO 发布公告生成后,会默认将该数据同步到公告管理和首页中
+                if(this.updateById(pmDemandUpdate)){
+                    //发布公告生成后,会默认将该数据同步到公告管理和首页中
+                    BaseNotice baseNotice = new BaseNotice();
+                    baseNotice.setName(pmDemand.getProjectName());
+                    baseNotice.setTitle(pmDemand.getProjectName() + "招标公告" );
+                    LambdaQueryWrapper<BaseNoticeType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                    lambdaQueryWrapper.eq(BaseNoticeType::getName,"招标公告");
+                    BaseNoticeType baseNoticeType = baseNoticeTypeService.getOne(lambdaQueryWrapper);
+                    if(baseNoticeType == null){
+                        throw new Exception("招标公告 公告类型不存在");
+                    }
+                    baseNotice.setType(baseNoticeType.getId());
+                    baseNotice.setReleaseTime(pmReleaseAnnouncement.getReleaseTime());
+                    return this.baseNoticeService.save(baseNotice);
+                } else {
+                    return false;
+                }
 
             } else {
                 return false;

+ 10 - 1
purchase-system/src/main/resources/mapper/pm/PmBidOpeningMapper.xml

@@ -1,6 +1,15 @@
 <?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 namespace="com.ozs.pm.mapper.PmBidOpeningMapper">
+    <select id="getPmBidOpeningResVoList" resultType="com.ozs.pm.doman.vo.responseVo.PmBidOpeningResVo">
+        SELECT
+        t.demand_id as demandId,
+        DATE_FORMAT(t.open_bid_time,'%Y-%m-%d') openBidTime,
+        count(1) partakeCount
+        from pm_bid_opening t
+        where t.demand_id = #{demandId}
+        order by openBidTime desc
+    </select>
 
 
 </mapper>

+ 1 - 1
purchase-system/src/main/resources/mapper/pm/PmBidWinningMapper.xml

@@ -1,6 +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 namespace="com.ozs.pm.mapper.PmBidWinningMapper">
 
 
 </mapper>

+ 1 - 1
purchase-system/src/main/resources/mapper/pm/PmContractInfoMapper.xml

@@ -1,6 +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 namespace="com.ozs.pm.mapper.PmContractInfoMapper">
 
 
 </mapper>

+ 1 - 1
purchase-system/src/main/resources/mapper/pm/PmContractUnitRefMapper.xml

@@ -1,6 +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 namespace="com.ozs.pm.mapper.PmContractUnitRefMapper">
 
 
 </mapper>

+ 9 - 1
purchase-system/src/main/resources/mapper/pm/PmDemandExpertRefMapper.xml

@@ -1,6 +1,14 @@
 <?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.PmDemandExpertRefMapper">
-
+    <select id="getPmBaseExpertResVoList" resultType="com.ozs.pm.doman.vo.responseVo.PmBaseExpertResVo">
+        SELECT
+        t.demand_id as demandId,
+        DATE_FORMAT(t.access_time,'%Y-%m-%d') accessTime,
+        count(1) expertCount
+        from pm_demand_expert_ref t
+        where t.demand_id = #{demandId}
+        order by accessTime desc
+    </select>
 
 </mapper>

+ 1 - 1
purchase-system/src/main/resources/mapper/pm/PmProjectConstructionMapper.xml

@@ -1,6 +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 namespace="com.ozs.pm.mapper.PmProjectConstructionMapper">
 
 
 </mapper>

+ 1 - 1
purchase-system/src/main/resources/mapper/pm/PmReleaseAnnouncementMapper.xml

@@ -1,6 +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 namespace="com.ozs.pm.mapper.PmReleaseAnnouncementMapper">
 
 
 </mapper>