Browse Source

历史表

suntianwu 2 years ago
parent
commit
f99c237dd8

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

@@ -14,6 +14,7 @@ import com.ozs.pm.doman.vo.requestVo.PmBookBuildingReqVo;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
 import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
 import com.ozs.pm.service.IPmDemandService;
+import com.ozs.pm.service.PmDemandHisService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +45,8 @@ public class PmDemandController extends BaseController {
     private IPmDemandService pmDemandService;
     @Autowired
     private TokenService tokenService;
+    @Autowired
+    private PmDemandHisService pmDemandHisService;
 
     /**
      * 查询采购需求列表
@@ -78,6 +81,30 @@ public class PmDemandController extends BaseController {
         return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId(),pmDemandReqVo.getDetailType()));
     }
 
+    /**
+     * 查看历史详情
+     */
+    @ApiOperation(value = "查看历史详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),returnOrderNumber(回退序号,0当前/1第一次回退/2第二次回退...),其他字段不传")
+    @PostMapping("/viewHis")
+    @PreAuthorize("@ss.hasPermi('pm:demand:viewHis')")
+    @Log(title = ModularConstans.purchaseExecution, businessType = BusinessType.QUERY)
+    public AjaxResult viewHis(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(ObjectUtils.isEmpty(pmDemandReqVo.getDetailType())){
+            return AjaxResult.error("详情的类型不能为空");
+        }
+        if(ObjectUtils.isEmpty(pmDemandReqVo.getReturnOrderNumber())){
+            return AjaxResult.error("回退序号不能为空");
+        }
+        if(0 == pmDemandReqVo.getReturnOrderNumber()){
+            return view(pmDemandReqVo);
+        } else {
+            return success(pmDemandHisService.selectPmDemandHisByDemandId(pmDemandReqVo.getDemandId(),pmDemandReqVo.getDetailType(),pmDemandReqVo.getReturnOrderNumber()));
+        }
+
+    }
     /**
      * 需求建档
      */

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

@@ -678,9 +678,9 @@ public class PmPurchaseExecutionController extends BaseController {
     /**
      * 查看历史详情
      */
-    @ApiOperation(value = "查看详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),returnOrderNumber(回退序号,0当前/1第一次回退/2第二次回退...),其他字段不传")
-    @PostMapping("/view")
-    @PreAuthorize("@ss.hasPermi('pm:purchaseExecution:view')")
+    @ApiOperation(value = "查看历史详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),returnOrderNumber(回退序号,0当前/1第一次回退/2第二次回退...),其他字段不传")
+    @PostMapping("/viewHis")
+    @PreAuthorize("@ss.hasPermi('pm:purchaseExecution:viewHis')")
     @Log(title = ModularConstans.purchaseExecution, businessType = BusinessType.QUERY)
     public AjaxResult viewHis(@RequestBody PmDemandReqVo pmDemandReqVo) {
         if(pmDemandReqVo.getDemandId() == null){

+ 29 - 1
purchase-admin/src/main/java/com/ozs/web/controller/pm/PmTaskReleaseController.java

@@ -15,10 +15,12 @@ import com.ozs.pm.doman.vo.requestVo.PmBookBuildingReqVo;
 import com.ozs.pm.doman.vo.requestVo.PmDemandReqVo;
 import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
 import com.ozs.pm.service.IPmDemandService;
+import com.ozs.pm.service.PmDemandHisService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+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;
@@ -40,7 +42,8 @@ public class PmTaskReleaseController extends BaseController {
     private IPmDemandService pmDemandService;
     @Autowired
     private TokenService tokenService;
-
+    @Autowired
+    private PmDemandHisService pmDemandHisService;
     /**
      * 任务下达查询列表
      */
@@ -88,4 +91,29 @@ public class PmTaskReleaseController extends BaseController {
         }
         return success(pmDemandService.selectPmDemandByDemandId(pmDemandReqVo.getDemandId(), pmDemandReqVo.getDetailType()));
     }
+
+    /**
+     * 查看历史详情
+     */
+    @ApiOperation(value = "查看历史详情", notes = "必传demandId和详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况),returnOrderNumber(回退序号,0当前/1第一次回退/2第二次回退...),其他字段不传")
+    @PostMapping("/viewHis")
+    @PreAuthorize("@ss.hasPermi('pm:taskRelease:viewHis')")
+    @Log(title = ModularConstans.purchaseExecution, businessType = BusinessType.QUERY)
+    public AjaxResult viewHis(@RequestBody PmDemandReqVo pmDemandReqVo) {
+        if(pmDemandReqVo.getDemandId() == null){
+            return AjaxResult.error("demandId不能为空");
+        }
+        if(ObjectUtils.isEmpty(pmDemandReqVo.getDetailType())){
+            return AjaxResult.error("详情的类型不能为空");
+        }
+        if(ObjectUtils.isEmpty(pmDemandReqVo.getReturnOrderNumber())){
+            return AjaxResult.error("回退序号不能为空");
+        }
+        if(0 == pmDemandReqVo.getReturnOrderNumber()){
+            return view(pmDemandReqVo);
+        } else {
+            return success(pmDemandHisService.selectPmDemandHisByDemandId(pmDemandReqVo.getDemandId(),pmDemandReqVo.getDetailType(),pmDemandReqVo.getReturnOrderNumber()));
+        }
+
+    }
 }

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

@@ -2,6 +2,10 @@ package com.ozs.pm.mapper;
 
 import com.ozs.pm.doman.PmBidOpeningHis;
 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-03-06 16:43:45
  */
 public interface PmBidOpeningHisMapper extends BaseMapper<PmBidOpeningHis> {
-
+    List<PmBidOpeningResVo> getPmBidOpeningResVoList(@Param("demandId") Long demandId,@Param("returnOrderNumber") Integer returnOrderNumber);
 }

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

@@ -2,6 +2,10 @@ package com.ozs.pm.mapper;
 
 import com.ozs.pm.doman.PmDemandExpertRefHis;
 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-03-06 16:43:48
  */
 public interface PmDemandExpertRefHisMapper extends BaseMapper<PmDemandExpertRefHis> {
-
+    List<PmBaseExpertResVo> getPmBaseExpertResVoList(@Param("demandId") Long demandId,@Param("returnOrderNumber") Integer returnOrderNumber);
 }

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

@@ -2,6 +2,9 @@ package com.ozs.pm.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.pm.doman.PmBidOpeningHis;
+import com.ozs.pm.doman.vo.responseVo.PmBidOpeningResVo;
+
+import java.util.List;
 
 /**
  * 开标信息表历史表(PmBidOpeningHis)表服务接口
@@ -10,5 +13,5 @@ import com.ozs.pm.doman.PmBidOpeningHis;
  * @since 2023-03-06 16:43:45
  */
 public interface PmBidOpeningHisService extends IService<PmBidOpeningHis> {
-
+    List<PmBidOpeningResVo> getPmBidOpeningResVoList(Long demandId,Integer returnOrderNumber);
 }

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

@@ -2,6 +2,9 @@ package com.ozs.pm.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.pm.doman.PmDemandExpertRefHis;
+import com.ozs.pm.doman.vo.responseVo.PmBaseExpertResVo;
+
+import java.util.List;
 
 /**
  * 项目专家关联表历史表(PmDemandExpertRefHis)表服务接口
@@ -10,5 +13,5 @@ import com.ozs.pm.doman.PmDemandExpertRefHis;
  * @since 2023-03-06 16:43:49
  */
 public interface PmDemandExpertRefHisService extends IService<PmDemandExpertRefHis> {
-
+    List<PmBaseExpertResVo> getPmBaseExpertResVoList(Long demandId,Integer returnOrderNumber);
 }

+ 6 - 0
purchase-system/src/main/java/com/ozs/pm/service/impl/PmBidOpeningHisServiceImpl.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.PmBidOpeningHisMapper;
 import com.ozs.pm.doman.PmBidOpeningHis;
 import com.ozs.pm.service.PmBidOpeningHisService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 开标信息表历史表(PmBidOpeningHis)表服务实现类
  *
@@ -15,4 +18,7 @@ import org.springframework.stereotype.Service;
 @Service
 public class PmBidOpeningHisServiceImpl extends ServiceImpl<PmBidOpeningHisMapper, PmBidOpeningHis> implements PmBidOpeningHisService {
 
+    public List<PmBidOpeningResVo> getPmBidOpeningResVoList(Long demandId,Integer returnOrderNumber){
+        return this.baseMapper.getPmBidOpeningResVoList(demandId,returnOrderNumber);
+    }
 }

+ 7 - 1
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandExpertRefHisServiceImpl.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.PmDemandExpertRefHisMapper;
 import com.ozs.pm.doman.PmDemandExpertRefHis;
 import com.ozs.pm.service.PmDemandExpertRefHisService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 项目专家关联表历史表(PmDemandExpertRefHis)表服务实现类
  *
@@ -14,5 +17,8 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class PmDemandExpertRefHisServiceImpl extends ServiceImpl<PmDemandExpertRefHisMapper, PmDemandExpertRefHis> implements PmDemandExpertRefHisService {
-
+    @Override
+    public List<PmBaseExpertResVo> getPmBaseExpertResVoList(Long demandId,Integer returnOrderNumber){
+        return this.baseMapper.getPmBaseExpertResVoList(demandId,returnOrderNumber);
+    }
 }

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

@@ -22,6 +22,7 @@ public class PmDemandExpertRefServiceImpl extends ServiceImpl<PmDemandExpertRefM
     public List<Integer> selectByExpertId(Integer expertId) {
         return this.baseMapper.selectByExpertId(expertId);
     }
+    @Override
     public List<PmBaseExpertResVo> getPmBaseExpertResVoList(Long demandId){
         return this.baseMapper.getPmBaseExpertResVoList(demandId);
     }

+ 371 - 4
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandHisServiceImpl.java

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ozs.base.domain.BaseAgency;
+import com.ozs.base.service.BaseAgencyService;
 import com.ozs.common.enums.*;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.common.utils.bean.BeanUtils;
 import com.ozs.plan.doman.ProvisionalPlan;
+import com.ozs.plan.mapper.ProvisionalPlanMapper;
 import com.ozs.pm.doman.*;
 import com.ozs.pm.doman.vo.responseVo.*;
 import com.ozs.pm.mapper.PmDemandHisMapper;
@@ -15,6 +17,8 @@ import com.ozs.pm.service.*;
 import com.ozs.system.domain.SysFileInfo;
 import com.ozs.system.domain.SysFileRef;
 import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
+import com.ozs.system.service.ISysDeptService;
+import com.ozs.system.service.ISysDictDataService;
 import com.ozs.system.service.SysFileRefService;
 import com.ozs.system.service.SysFileService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +43,10 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
     private IPmDemandService iPmDemandService;
     @Autowired
     private SysFileRefService sysFileRefService;
-
+    @Autowired
+    private SysFileService fileService;
+    @Autowired
+    private PmAuditDeptRefService pmAuditDeptRefService;
     @Autowired
     private PmBidFailureService pmBidFailureService;
     @Autowired
@@ -83,6 +90,18 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
     private PmProcurementDocumentsReviewHisService pmProcurementDocumentsReviewHisService;
     @Autowired
     private PmReleaseAnnouncementHisService pmReleaseAnnouncementHisService;
+
+    @Autowired
+    private ProvisionalPlanMapper provisionalPlanMapper;
+    @Autowired
+    private ISysDeptService deptService;
+
+    @Autowired
+    private ISysDictDataService dictDataService;
+
+    @Autowired
+    private BaseAgencyService baseAgencyService;
+
     /**
      * 流废标退回
      * @param demandId
@@ -420,6 +439,7 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
             }
         }
 
+        //需求表
         PmDemandHis pmDemandHis = new PmDemandHis();
         BeanUtils.copyProperties(pmDemand,pmDemandHis);
 
@@ -435,6 +455,10 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
         if(this.pmDemandHisService.save(pmDemandHis)){
             UpdateWrapper<PmDemand> pmDemandUpdateWrapper = new UpdateWrapper<>();
             pmDemandUpdateWrapper.lambda()
+                    .set(PmDemand::getRealDemandCommitTime,null)
+                    .set(PmDemand::getRealPurchaseFinishTime,null)
+                    .set(PmDemand::getRealDeliverTime,null)
+                    .set(PmDemand::getAuditTime,null)
                     .set(PmDemand::getAgencyId,null)
                     .set(PmDemand::getExtractAgencyTime,null)
                     .set(PmDemand::getPurchaseTaskDocumentNumber,null)
@@ -445,11 +469,32 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
                     .set(PmDemand::getUpdateTime,new Date())
                     .eq(PmDemand::getDemandId,demandId);
             iPmDemandService.update(pmDemandUpdateWrapper);
+
+            List<SysFileRef> fileRefs = getSysFileRefList(demandId, SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
+            if (!ObjectUtils.isEmpty(fileRefs)) {
+                for (SysFileRef sysFileRef : fileRefs) {
+                    sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_DEMAND_EXAMINE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
+                }
+                sysFileRefService.updateBatchById(fileRefs);
+            }
+
+            LambdaQueryWrapper<PmAuditDeptRef> lw = new LambdaQueryWrapper<>();
+            lw.eq(PmAuditDeptRef::getRefId, demandId);
+            lw.eq(PmAuditDeptRef::getRefType, "2");
+            pmAuditDeptRefService.remove(lw);
         }
 
         return true;
     }
 
+    private List<SysFileRef> getSysFileRefList(Long redId, Integer type) {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("red_id", redId);
+        map.put("type", type);
+        List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
+        return fileRefs;
+    }
+
     /**
      * 查询采购需求
      *
@@ -458,15 +503,337 @@ public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDem
      */
     @Override
     public PmDemandResVo selectPmDemandHisByDemandId(Long demandId, String detailType,Integer returnOrderNumber) {
-        return null;
+        LambdaQueryWrapper<PmDemandHis> pmDemandHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        pmDemandHisLambdaQueryWrapper.eq(PmDemandHis::getDemandId,demandId).eq(PmDemandHis::getReturnOrderNumber,returnOrderNumber);
+        PmDemandHis pmDemandHis = this.pmDemandHisService.getOne(pmDemandHisLambdaQueryWrapper);
+
+        if (pmDemandHis != null) {
+            PmDemandResVo vo = new PmDemandResVo();
+            vo.setProjectName(pmDemandHis.getProjectName());
+            vo.setDemandId(demandId);
+            if ("1".equals(detailType)) { //项目计划
+
+                BeanUtils.copyProperties(pmDemandHis, vo);
+
+                //project_type,evaluation 从原来计划里取
+                ProvisionalPlan provisionalPlan = provisionalPlanMapper.seletById(pmDemandHis.getPlanId());
+                vo.setProjectType(provisionalPlan.getProjectType());
+                vo.setEvaluation(provisionalPlan.getEvaluation().doubleValue());
+
+                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);
+                }
+
+                //采购需求附件
+                List<SysFileInfo> demandFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_DEMAND.getType());
+                if (!ObjectUtils.isEmpty(demandFileInfos)) {
+                    vo.setDemandFileInfos(demandFileInfos);
+                }
+
+                //项目类型
+                String projectTypeName = dictDataService.selectDictLabel("sys_project_type", vo.getProjectType());
+                if (StringUtils.isNotEmpty(projectTypeName)) {
+                    vo.setProjectTypeName(projectTypeName);
+                }
+
+                //是否为超限额计划
+                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 (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 (PmProjectStatus value : PmProjectStatus.values()) {
+                    if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
+                        vo.setProjectStatusName(value.getInfo());
+                        break;
+                    }
+                }
+
+
+            } else if ("2".equals(detailType)) { //需求建档
+
+                //采购需求审核文件
+                List<SysFileInfo> auditFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_DEMAND_EXAMINE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
+                if (!ObjectUtils.isEmpty(auditFileInfos)) {
+                    vo.setAuditFileInfos(auditFileInfos);
+                }
+
+                LambdaQueryWrapper<PmBookBuildingHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmBookBuildingHis::getDemandId, demandId).eq(PmBookBuildingHis::getReturnOrderNumber,returnOrderNumber);
+                PmBookBuildingHis pmBookBuildingHis = pmBookBuildingHisService.getOne(lambdaQueryWrapper);
+                if (pmBookBuildingHis != null) {
+                    PmBookBuildingResVo responseVo = new PmBookBuildingResVo();
+                    BeanUtils.copyProperties(pmBookBuildingHis, responseVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmBookBuildingHis.getId(), Integer.parseInt(SysFileRefEnum.PM_BOOK_BUILDING.getType() + "" + pmBookBuildingHis.getReturnOrderNumber()));
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        if (!ObjectUtils.isEmpty(auditFileInfos)) {
+                            fileInfos.addAll(auditFileInfos);
+                        }
+                        responseVo.setFileInfos(fileInfos);
+                    }
+                    vo.setPmBookBuildingResVo(responseVo);
+                }
+            } else if ("3".equals(detailType)) { //任务下达
+                vo.setTaskReleaseTime(pmDemandHis.getTaskReleaseTime());
+                //任务下达文件
+                List<SysFileInfo> taskReleaseFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_TAST_RELEASE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
+                if (!ObjectUtils.isEmpty(taskReleaseFileInfos)) {
+                    vo.setTaskReleaseFileInfos(taskReleaseFileInfos);
+                }
+            } else if ("4".equals(detailType)) { //中标信息
+                PmPurchaseExecutionResVo pmPurchaseExecutionResVo = new PmPurchaseExecutionResVo();
+
+                //代理商信息
+                BaseAgency baseAgency = this.baseAgencyService.getById(pmDemandHis.getAgencyId());
+                pmPurchaseExecutionResVo.setBaseAgency(baseAgency);
+
+                //专家意见反馈
+                LambdaQueryWrapper<PmExpertFeedbackHis> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedbackHis::getDemandId,demandId).eq(PmExpertFeedbackHis::getReturnOrderNumber,returnOrderNumber);
+                PmExpertFeedbackHis pmExpertFeedbackHis = pmExpertFeedbackHisService.getOne(pmExpertFeedbackLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmExpertFeedbackHis)){
+                    PmExpertFeedbackResVo pmExpertFeedbackResVo = new PmExpertFeedbackResVo();
+                    BeanUtils.copyProperties(pmExpertFeedbackHis,pmExpertFeedbackResVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmExpertFeedbackResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_EXPERT_FEEDBACK.getType() + "" + pmExpertFeedbackHis.getReturnOrderNumber()));
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmExpertFeedbackResVo.setFileInfos(fileInfos);
+                    }
+                    pmPurchaseExecutionResVo.setPmExpertFeedbackResVo(pmExpertFeedbackResVo);
+                }
+
+                //采购文件编制审核
+                LambdaQueryWrapper<PmProcurementDocumentsReviewHis> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReviewHis::getDemandId,demandId).eq(PmProcurementDocumentsReviewHis::getReturnOrderNumber,returnOrderNumber);
+                PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHis = pmProcurementDocumentsReviewHisService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmProcurementDocumentsReviewHis)){
+                    PmProcurementDocumentsReviewResVo pmProcurementDocumentsReviewResVo = new PmProcurementDocumentsReviewResVo();
+                    BeanUtils.copyProperties(pmProcurementDocumentsReviewHis,pmProcurementDocumentsReviewResVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmProcurementDocumentsReviewResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FILE.getType() + "" + pmProcurementDocumentsReviewHis.getReturnOrderNumber()));
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmProcurementDocumentsReviewResVo.setFileInfos(fileInfos);
+                    }
+                    pmPurchaseExecutionResVo.setPmProcurementDocumentsReviewResVo(pmProcurementDocumentsReviewResVo);
+                }
+
+                //采购公告列表
+                LambdaQueryWrapper<PmReleaseAnnouncementHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmReleaseAnnouncementHis::getDemandId, demandId).eq(PmReleaseAnnouncementHis::getReturnOrderNumber,returnOrderNumber);
+                List<PmReleaseAnnouncementHis> pmReleaseAnnouncementHisList = this.pmReleaseAnnouncementHisService.list(lambdaQueryWrapper);
+                if (!ObjectUtils.isEmpty(pmReleaseAnnouncementHisList)) {
+                    List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                    for (PmReleaseAnnouncementHis pmReleaseAnnouncementHis : pmReleaseAnnouncementHisList) {
+                        PmReleaseAnnouncementResVo pmReleaseAnnouncementResVo = new PmReleaseAnnouncementResVo();
+                        BeanUtils.copyProperties(pmReleaseAnnouncementHis, pmReleaseAnnouncementResVo);
+
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmReleaseAnnouncementResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType() + "" + pmReleaseAnnouncementHis.getReturnOrderNumber()));
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            fileInfosAll.addAll(fileInfos);
+                        }
+                        pmReleaseAnnouncementResVoList.add(pmReleaseAnnouncementResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmReleaseAnnouncementFileInfos(fileInfosAll);
+                    pmPurchaseExecutionResVo.setPmReleaseAnnouncementResVoList(pmReleaseAnnouncementResVoList);
+                }
+
+                //标前质疑投诉
+                LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                pmCallQuestionLambdaQueryWrapper.eq(PmCallQuestionHis::getDemandId,demandId).eq(PmCallQuestionHis::getReturnOrderNumber,returnOrderNumber)
+                        .eq(PmCallQuestionHis::getType,'0').orderByDesc(PmCallQuestionHis::getCallQuestionTime);
+                List<PmCallQuestionHis>  pmCallQuestionHisList = pmCallQuestionHisService.list(pmCallQuestionLambdaQueryWrapper);
+                if(!ObjectUtils.isEmpty(pmCallQuestionHisList)){
+                    List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                    for(PmCallQuestionHis pmCallQuestionHis : pmCallQuestionHisList){
+                        PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
+                        BeanUtils.copyProperties(pmCallQuestionHis,pmCallQuestionResVo);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType() + "" + pmCallQuestionHis.getReturnOrderNumber()));
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            fileInfosAll.addAll(fileInfos);
+                        }
+                        pmCallQuestionResVoList.add(pmCallQuestionResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmCallQuestionPreResVoList(pmCallQuestionResVoList);
+                    pmPurchaseExecutionResVo.setPmCallQuestionPreFileInfos(fileInfosAll);
+                }
+
+                //专家信息列表
+                List<PmBaseExpertResVo> pmBaseExpertResVoList = this.pmDemandExpertRefHisService.getPmBaseExpertResVoList(demandId,returnOrderNumber);
+                pmPurchaseExecutionResVo.setPmBaseExpertResVoList(pmBaseExpertResVoList);
+
+                //开标信息列表
+                List<PmBidOpeningResVo> pmBidOpeningResVoList = this.pmBidOpeningHisService.getPmBidOpeningResVoList(demandId,returnOrderNumber);
+                pmPurchaseExecutionResVo.setPmBidOpeningResVoList(pmBidOpeningResVoList);
+
+                //评标结果公告列表
+                LambdaQueryWrapper<PmBidWinningHis> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper1.eq(PmBidWinningHis::getDemandId, demandId).eq(PmBidWinningHis::getReturnOrderNumber,returnOrderNumber)
+                        .eq(PmBidWinningHis::getStatus, BidWinningStatus.NORMAL.getCode());
+                PmBidWinningHis pmBidWinningHis = this.pmBidWinningHisService.getOne(lambdaQueryWrapper1);
+                if (!ObjectUtils.isEmpty(pmBidWinningHis)) {
+                    LambdaQueryWrapper<PmBidWinningOpeningRefHis> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+                    lambdaQueryWrapper2.eq(PmBidWinningOpeningRefHis::getWinningId, pmBidWinningHis.getId()).eq(PmBidWinningOpeningRefHis::getReturnOrderNumber,returnOrderNumber)
+                            .eq(PmBidWinningOpeningRefHis::getStatus, BidWinningStatus.NORMAL.getCode());
+                    List<PmBidWinningOpeningRefHis> pmBidWinningOpeningRefHisList = this.pmBidWinningOpeningRefHisService.list(lambdaQueryWrapper2);
+                    if (!ObjectUtils.isEmpty(pmBidWinningOpeningRefHisList)) {
+                        List<PmBidWinningResVo> pmBidWinningResVoList = new ArrayList<>();
+                        List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                        for (PmBidWinningOpeningRefHis pmBidWinningOpeningRefHis : pmBidWinningOpeningRefHisList) {
+                            LambdaQueryWrapper<PmBidOpeningHis> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
+                            lambdaQueryWrapper3.eq(PmBidOpeningHis::getId,pmBidWinningOpeningRefHis.getOpeningId()).eq(PmBidOpeningHis::getReturnOrderNumber,returnOrderNumber);
+                            PmBidOpeningHis pmBidOpeningHis = this.pmBidOpeningHisService.getOne(lambdaQueryWrapper3);
+                            if (pmBidOpeningHis != null) {
+                                PmBidWinningResVo pmBidWinningResVo = new PmBidWinningResVo();
+                                BeanUtils.copyProperties(pmBidWinningHis, pmBidWinningResVo);
+                                pmBidWinningResVo.setBidWinningName(pmBidOpeningHis.getBidderName());
+
+                                List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidWinningResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_FILE.getType() + "" + pmBidWinningHis.getReturnOrderNumber()));
+                                if (!ObjectUtils.isEmpty(fileInfos)) {
+                                    fileInfosAll.addAll(fileInfos);
+                                }
+                                pmBidWinningResVoList.add(pmBidWinningResVo);
+                            }
+
+                        }
+                        pmPurchaseExecutionResVo.setPmBidWinningResVoList(pmBidWinningResVoList);
+                        pmPurchaseExecutionResVo.setPmBidWinningFileInfos(fileInfosAll);
+                    }
+
+                }
+
+                //标后质疑
+                LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionLambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+                pmCallQuestionLambdaQueryWrapper2.eq(PmCallQuestionHis::getDemandId,demandId).eq(PmCallQuestionHis::getReturnOrderNumber,returnOrderNumber)
+                        .eq(PmCallQuestionHis::getType,'1').orderByDesc(PmCallQuestionHis::getCallQuestionTime);
+                List<PmCallQuestionHis>  pmCallQuestionHisList2 = pmCallQuestionHisService.list(pmCallQuestionLambdaQueryWrapper2);
+                if(!ObjectUtils.isEmpty(pmCallQuestionHisList2)){
+                    List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
+                    List<SysFileInfo> fileInfosAll = new ArrayList<>();
+                    for(PmCallQuestionHis pmCallQuestionHis : pmCallQuestionHisList2){
+                        PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
+                        BeanUtils.copyProperties(pmCallQuestionHis,pmCallQuestionResVo);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType() + "" + pmCallQuestionHis.getReturnOrderNumber()));
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            fileInfosAll.addAll(fileInfos);
+                        }
+                        pmCallQuestionResVoList.add(pmCallQuestionResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmCallQuestionPostResVoList(pmCallQuestionResVoList);
+                    pmPurchaseExecutionResVo.setPmCallRequestPostFileInfos(fileInfosAll);
+                }
+
+                //流标情况
+                LambdaQueryWrapper<PmBidFailureHis> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper2.eq(PmBidFailureHis::getDemandId, demandId).eq(PmBidFailureHis::getReturnOrderNumber,returnOrderNumber)
+                        .orderByDesc(PmBidFailureHis::getBidFailureTime);
+                List<PmBidFailureHis> pmBidFailureHisList = this.pmBidFailureHisService.list(lambdaQueryWrapper2);
+                if (!ObjectUtils.isEmpty(pmBidFailureHisList)) {
+                    List<PmBidFailureResVo> pmBidFailureResVoList = new ArrayList<>();
+                    List<PmCallQuestionResVo> pmCallQuestionBidFailureResVoList = new ArrayList<>();
+                    List<SysFileInfo> pmBidFailureFileInfos = new ArrayList<>();
+                    List<SysFileInfo> pmCallRequestBidFailureFileInfos = new ArrayList<>();
+                    for (PmBidFailureHis pmBidFailureHis : pmBidFailureHisList) {
+                        PmBidFailureResVo pmBidFailureResVo = new PmBidFailureResVo();
+                        BeanUtils.copyProperties(pmBidFailureHis, pmBidFailureResVo);
+                        pmBidFailureResVoList.add(pmBidFailureResVo);
+
+                        //流标文件
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidFailureResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_FILE.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            pmBidFailureFileInfos.addAll(fileInfos);
+                        }
+
+                        if("1".equals(pmBidFailureHis.getCallQuestion())){ //有质疑
+                            PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
+                            pmCallQuestionResVo.setCallQuestion(pmBidFailureHis.getCallQuestion());
+                            pmCallQuestionResVo.setCallQuestionTime(pmBidFailureHis.getCallQuestionTime());
+                            pmCallQuestionBidFailureResVoList.add(pmCallQuestionResVo);
+
+                            //流废标质疑文件
+                            List<SysFileInfo> fileInfos2 = getSysFileInfoList(pmBidFailureHis.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_CALL_QUESTION.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
+                            if (!ObjectUtils.isEmpty(fileInfos2)) {
+                                pmCallRequestBidFailureFileInfos.addAll(fileInfos2);
+                            }
+                        }
+                    }
+
+                    pmPurchaseExecutionResVo.setPmBidFailureResVoList(pmBidFailureResVoList);
+                    pmPurchaseExecutionResVo.setPmBidFailureFileInfos(pmBidFailureFileInfos);
+
+                    //流废标处置
+                    pmPurchaseExecutionResVo.setPmCallQuestionBidFailureResVoList(pmCallQuestionBidFailureResVoList);
+                    pmPurchaseExecutionResVo.setPmCallRequestBidFailureFileInfos(pmCallRequestBidFailureFileInfos);
+                }
+
+                //中标通知书
+                List<SysFileInfo> pmBidWinningNotificationFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType() + "" + pmDemandHis.getReturnOrderNumber()));
+                pmPurchaseExecutionResVo.setFileInfos(pmBidWinningNotificationFileInfos);
+
+                vo.setPmPurchaseExecutionResVo(pmPurchaseExecutionResVo);
+
+            } else if ("5".equals(detailType)) { //合同信息
+                return null;
+            } else if ("6".equals(detailType)) { //建设情况
+                return null;
+            }
+
+            return vo;
+        } else {
+            return null;
+        }
     }
 
-    private List<SysFileRef> getSysFileRefList(Long redId, Integer type) {
+    private List<SysFileInfo> getSysFileInfoList(Long redId, Integer type) {
         HashMap<String, Object> map = new HashMap<>();
         map.put("red_id", redId);
         map.put("type", type);
         List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
-        return fileRefs;
+        if (!ObjectUtils.isEmpty(fileRefs)) {
+            List<SysFileInfo> fileInfos = new ArrayList<>();
+            for (SysFileRef ref : fileRefs) {
+                SysFileInfo fileInfo = fileService.getById(ref.getFileId());
+                fileInfos.add(fileInfo);
+            }
+
+            return fileInfos;
+        } else {
+            return null;
+        }
+
     }
 
 }

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

@@ -351,7 +351,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                                 BeanUtils.copyProperties(pmBidWinning, pmBidWinningResVo);
                                 pmBidWinningResVo.setBidWinningName(pmBidOpening.getBidderName());
 
-                                List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType());
+                                List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidWinningResVo.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType());
                                 if (!ObjectUtils.isEmpty(fileInfos)) {
                                     fileInfosAll.addAll(fileInfos);
                                 }

+ 10 - 1
purchase-system/src/main/resources/mapper/pm/PmBidOpeningHisMapper.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.pm.mapper.PmBidOpeningHisMapper">
-
+    <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_his t
+        where t.demand_id = #{demandId} and t.return_order_number = #{returnOrderNumber}
+        group by openBidTime
+        order by openBidTime desc
+    </select>
 
 </mapper>

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

@@ -2,5 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.pm.mapper.PmDemandExpertRefHisMapper">
 
-
+    <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_his t
+        where t.demand_id = #{demandId} and t.return_order_number = #{returnOrderNumber}
+        group by accessTime
+        order by accessTime desc
+    </select>
 </mapper>