ソースを参照

系统首页搜索接口

sunhh 2 年 前
コミット
77af63c04a

+ 1 - 1
purchase-admin/src/main/java/com/ozs/web/controller/home/HomeNoticeController.java

@@ -87,6 +87,6 @@ public class HomeNoticeController extends BaseController {
         if (StringUtils.isNull(yearsStandardVo.getPlanYearId())) {
             return error("查询年度ID不能为空!");
         }
-        return planYearsService.projectDetails(yearsStandardVo.getPlanYearId());
+        return planYearsService.projectDetails(yearsStandardVo);
     }
 }

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

@@ -164,4 +164,7 @@ public class PlanYearsStandardVo extends PageVo {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
+    /** 查看详情的类型 */
+    @ApiModelProperty("详情类型,1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况")
+    private String detailType;
 }

+ 1 - 1
purchase-system/src/main/java/com/ozs/plan/service/PlanYearsService.java

@@ -265,5 +265,5 @@ public interface PlanYearsService extends IService<PlanYears> {
      * @param planYearId
      * @return
      */
-    AjaxResult projectDetails(Long planYearId);
+    AjaxResult projectDetails(PlanYearsStandardVo yearsStandardVo);
 }

+ 274 - 18
purchase-system/src/main/java/com/ozs/plan/service/impl/PlanYearsServiceImpl.java

@@ -4,18 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.base.domain.BaseAgency;
+import com.ozs.base.service.BaseAgencyService;
 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.entity.SysRole;
 import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.core.domain.model.LoginUser;
-import com.ozs.common.enums.DataIsDelete;
-import com.ozs.common.enums.IsExcess;
-import com.ozs.common.enums.PmProjectStatus;
-import com.ozs.common.enums.ProjectStatus;
-import com.ozs.common.enums.ProjectTypes;
-import com.ozs.common.enums.SysFileRefEnum;
+import com.ozs.common.enums.*;
 import com.ozs.common.exception.ServiceException;
 import com.ozs.common.utils.PageUtils;
 import com.ozs.common.utils.SecurityUtils;
@@ -32,20 +29,17 @@ import com.ozs.plan.mapper.PlanQuarterMapper;
 import com.ozs.plan.mapper.PlanYearsMapper;
 import com.ozs.plan.mapper.ProvisionalPlanMapper;
 import com.ozs.plan.service.PlanYearsService;
-import com.ozs.pm.doman.PmDemand;
-import com.ozs.pm.doman.vo.responseVo.PmDemandResVo;
+import com.ozs.pm.doman.*;
+import com.ozs.pm.doman.vo.responseVo.*;
 import com.ozs.pm.mapper.PmDemandMapper;
-import com.ozs.pm.service.IPmDemandService;
+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.mapper.SysDeptMapper;
 import com.ozs.system.mapper.SysFileRefMapper;
 import com.ozs.system.mapper.SysRoleMapper;
-import com.ozs.system.service.ISysDeptService;
-import com.ozs.system.service.ISysDictTypeService;
-import com.ozs.system.service.ISysUserService;
-import com.ozs.system.service.SysFileService;
+import com.ozs.system.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -99,6 +93,30 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
     private IPmDemandService demandService;
     @Autowired
     private ProvisionalPlanMapper provisionalPlanMapper;
+    @Autowired
+    private IPmDemandService pmDemandService;
+    @Autowired
+    private ISysDictDataService dictDataService;
+    @Autowired
+    private BaseAgencyService baseAgencyService;
+    @Autowired
+    private PmBookBuildingService pmBookBuildingService;
+    @Autowired
+    private PmReleaseAnnouncementService pmReleaseAnnouncementService;
+    @Autowired
+    private PmDemandExpertRefService pmDemandExpertRefService;
+    @Autowired
+    private PmBidOpeningService pmBidOpeningService;
+    @Autowired
+    private PmBidWinningService pmBidWinningService;
+    @Autowired
+    private PmBidFailureService pmBidFailureService;
+    @Autowired
+    private PmContractInfoService pmContractInfoService;
+    @Autowired
+    private PmProjectConstructionService pmProjectConstructionService;
+    @Autowired
+    private SysFileRefService sysFileRefService;
 
     @Override
     public Page selectPlanYearsList(PlanYearsStandardVo vo) {
@@ -897,21 +915,259 @@ public class PlanYearsServiceImpl extends ServiceImpl<PlanYearsMapper, PlanYears
     /**
      * 通过年度ID,查询季度、临时计划详情,通过季度、临时计划ID查询项目
      *
-     * @param planYearId
+     * @param yearsStandardVo
      * @return
      */
     @Override
-    public AjaxResult projectDetails(Long planYearId) {
+    public AjaxResult projectDetails(PlanYearsStandardVo yearsStandardVo) {
         Map<String, Object> returnMap = new HashMap<>();
         // 通过年度ID查询年度详情
-        PlanYears byId = planYearsMapper.getById(planYearId);
+        PlanYears byId = planYearsMapper.getById(yearsStandardVo.getPlanYearId());
         if (StringUtils.isNull(byId)) {
             return AjaxResult.error("没有查到相关数据!");
         }
         // 通过年度ID查询季度、临时计划详情
-        ProvisionalPlan provisionalPlan = provisionalPlanMapper.selectProvisionalPlanByYearId(planYearId.intValue());
+        ProvisionalPlan provisionalPlan = provisionalPlanMapper.selectProvisionalPlanByYearId(yearsStandardVo.getPlanYearId().intValue());
+        if (StringUtils.isNull(provisionalPlan)) {
+            return AjaxResult.error("没有查到相关数据!");
+        }
+        // 通过季度、临时计划ID查询项目数据
+        PmDemand pmDemand = pmDemandService.selectByPlanId(provisionalPlan.getPlanPracticalId());
+        if (StringUtils.isNotNull(pmDemand)) {
+            String detailType = "";
+            if (StringUtils.isNotNull(yearsStandardVo.getDetailType())) {
+                detailType = yearsStandardVo.getDetailType();
+            } else {
+                // 详情类型(1项目计划,2需求建档,3任务下达,4中标信息,5合同信息,6建设情况)
+                // 项目计划 4之前(包括4)
+                // 需求建党 4之后(不包括4)
+                // 任务下达 8之后(不包括8)
+                // 采购执行 9之后(不包括9)
+                // 合同信息 15之后(不包括15)
+                // 项目建设 17
+                Integer projectStatus = Integer.valueOf(pmDemand.getProjectStatus());
+                if (projectStatus <= 4) {
+                    detailType = "1";
+                } else if (4 < projectStatus && projectStatus <= 8) {
+                    detailType = "2";
+                } else if (8 < projectStatus && projectStatus <= 9) {
+                    detailType = "3";
+                } else if (9 < projectStatus && projectStatus <= 15) {
+                    detailType = "4";
+                } else if (15 < projectStatus && projectStatus < 17) {
+                    detailType = "5";
+                } else if (projectStatus == 17) {
+                    detailType = "6";
+                }
+            }
+            Long demandId = pmDemand.getDemandId();
+            PmDemandResVo vo = new PmDemandResVo();
+            vo.setDemandId(demandId);
+            if ("1".equals(detailType)) { //项目计划
+                BeanUtils.copyProperties(pmDemand, vo);
+                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);
+                }
+                //项目类型
+                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 (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(), SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
+                if (!ObjectUtils.isEmpty(auditFileInfos)) {
+                    vo.setAuditFileInfos(auditFileInfos);
+                }
+                LambdaQueryWrapper<PmBookBuilding> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmBookBuilding::getDemandId, demandId);
+                PmBookBuilding pmBookBuilding = pmBookBuildingService.getOne(lambdaQueryWrapper);
+                if (pmBookBuilding != null) {
+                    PmBookBuildingResVo responseVo = new PmBookBuildingResVo();
+                    BeanUtils.copyProperties(pmBookBuilding, responseVo);
+
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmBookBuilding.getId(), SysFileRefEnum.PM_BOOK_BUILDING.getType());
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        responseVo.setFileInfos(fileInfos);
+                    }
+                    vo.setPmBookBuildingResVo(responseVo);
+                }
+            } else if ("3".equals(detailType)) { //任务下达
+                //任务下达文件
+                List<SysFileInfo> taskReleaseFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_TAST_RELEASE.getType());
+                if (!ObjectUtils.isEmpty(taskReleaseFileInfos)) {
+                    vo.setTaskReleaseFileInfos(taskReleaseFileInfos);
+                }
+            } 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);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmReleaseAnnouncement.getId(), SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType());
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            pmReleaseAnnouncementResVo.setFileInfos(fileInfos);
+                        }
+                        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);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType());
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            pmBidWinningResVo.setFileInfos(fileInfos);
+                        }
+                        pmBidWinningResVoList.add(pmBidWinningResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmBidWinningResVoList(pmBidWinningResVoList);
+                }
+                //质疑情况
+                List<SysFileInfo> callRequestFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType());
+                if (!ObjectUtils.isEmpty(callRequestFileInfos)) {
+                    pmPurchaseExecutionResVo.setCallRequestFileInfos(callRequestFileInfos);
+                }
+                //流标情况
+                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);
+                        List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidFailure.getId(), SysFileRefEnum.PM_BID_FAILURE_FILE.getType());
+                        if (!ObjectUtils.isEmpty(fileInfos)) {
+                            pmPurchaseExecutionResVo.setFileInfos(fileInfos);
+                        }
+                        pmBidFailureResVoList.add(pmBidFailureResVo);
+                    }
+                    pmPurchaseExecutionResVo.setPmBidFailureResVoList(pmBidFailureResVoList);
+                }
+                //中标通知书
+                List<SysFileInfo> pmBidWinningNotificationFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType());
+                if (!ObjectUtils.isEmpty(pmBidWinningNotificationFileInfos)) {
+                    pmPurchaseExecutionResVo.setPmBidWinningNotificationFileInfos(pmBidWinningNotificationFileInfos);
+                }
+                vo.setPmPurchaseExecutionResVo(pmPurchaseExecutionResVo);
+            } else if ("5".equals(detailType)) { //合同信息
+                LambdaQueryWrapper<PmContractInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmContractInfo::getDemandId, demandId);
+                PmContractInfo pmContractInfo = pmContractInfoService.getOne(lambdaQueryWrapper);
+                if (pmContractInfo != null) {
+                    PmContractInfoResVo pmContractInfoResVo = new PmContractInfoResVo();
+                    BeanUtils.copyProperties(pmContractInfo, pmContractInfoResVo);
+                    //合同信息文件
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmContractInfo.getId(), SysFileRefEnum.PM_CONTRACT_INFO.getType());
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmContractInfoResVo.setFileInfos(fileInfos);
+                    }
+                    vo.setPmContractInfoResVo(pmContractInfoResVo);
+                }
+            } else if ("6".equals(detailType)) { //建设情况
+                LambdaQueryWrapper<PmProjectConstruction> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(PmProjectConstruction::getDemandId, demandId);
+                PmProjectConstruction pmProjectConstruction = pmProjectConstructionService.getOne(lambdaQueryWrapper);
+                if (pmProjectConstruction != null) {
+                    PmProjectConstructionResVo pmProjectConstructionResVo = new PmProjectConstructionResVo();
+                    BeanUtils.copyProperties(pmProjectConstruction, pmProjectConstructionResVo);
+                    //建设情况文件
+                    List<SysFileInfo> fileInfos = getSysFileInfoList(pmProjectConstruction.getId(), SysFileRefEnum.PM_PROJECT_CONSTRUCTION.getType());
+                    if (!ObjectUtils.isEmpty(fileInfos)) {
+                        pmProjectConstructionResVo.setFileInfos(fileInfos);
+                    }
+                    vo.setPmProjectConstructionResVo(pmProjectConstructionResVo);
+                }
+            }
+            return AjaxResult.success(vo);
+        }
+        return AjaxResult.success(null);
+    }
+
+    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);
+        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;
+        }
 
-        return null;
     }
 
     /**

+ 7 - 0
purchase-system/src/main/java/com/ozs/pm/mapper/PmDemandMapper.java

@@ -85,4 +85,11 @@ public interface PmDemandMapper extends BaseMapper<PmDemand> {
     StatisticalChartsResVo countByEvaluationBet(@Param("evaluation") Integer evaluation, @Param("evaluationEnd") Integer evaluationEnd);
 
     StatisticalChartsResVo countByEvaluationGt(Integer evaluation);
+
+    /**
+     * 通过计划ID查询项目
+     * @param planId
+     * @return
+     */
+    PmDemand selectByPlanId(@Param("planId") Integer planId);
 }

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

@@ -239,4 +239,11 @@ public interface IPmDemandService extends IService<PmDemand> {
      * @return
      */
     List<StatisticalChartsResVo> countByEvaluation();
+
+    /**
+     * 通过计划ID查询项目
+     * @param planId
+     * @return
+     */
+    PmDemand selectByPlanId(Integer planId);
 }

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

@@ -1421,6 +1421,16 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         return resVos;
     }
 
+    /**
+     * 通过计划ID查询项目数据
+     * @param planId
+     * @return
+     */
+    @Override
+    public PmDemand selectByPlanId(Integer planId) {
+        return pmDemandMapper.selectByPlanId(planId);
+    }
+
 
     //查询不同状态下的项目数据
     public List<PmDemandResVo> getListByStatus(String projectStatus) {

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

@@ -78,5 +78,9 @@
         WHERE evaluation &gt; #{evaluation}
     </select>
 
-
+    <select id="selectByPlanId" parameterType="java.lang.Integer" resultType="com.ozs.pm.doman.PmDemand">
+        select *
+        from pm_demand
+        where plan_id = #{planId} limit 1
+    </select>
 </mapper>