Просмотр исходного кода

项目查询判空

tags/24082201
WendyYang 1 год назад
Родитель
Сommit
bfd25c36eb
45 измененных файлов: 282 добавлений и 460 удалений
  1. +5
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/common/enumeration/ProjectProcessType.java
  2. +0
    -58
      hz-pm-api/src/main/java/com/hz/pm/api/dashboard/handle/ApplicationHandler.java
  3. +3
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/filemanage/manage/ProjectFileManage.java
  4. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java
  5. +2
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/OrgSelfAppraisalManage.java
  6. +2
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/PerformanceAppraisalPlanManage.java
  7. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/ReAppraisalManage.java
  8. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/VerifyManage.java
  9. +11
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java
  10. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectHelper.java
  11. +8
    -17
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java
  12. +11
    -40
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DelayedApplyManage.java
  13. +7
    -11
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java
  14. +1
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java
  15. +55
    -31
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java
  16. +15
    -25
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  17. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java
  18. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml
  19. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/ProjectReviewMapper.java
  20. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectReview.java
  21. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PurchaseInst.java
  22. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/DeclaredProjectStatisticsVO.java
  23. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IDeclaredStatisticsService.java
  24. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IProjectReviewService.java
  25. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/DeclaredStatisticsServiceImpl.java
  26. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/ProjectReviewServiceImpl.java
  27. +25
    -7
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectManageUtil.java
  28. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java
  29. +8
    -19
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java
  30. +35
    -62
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java
  31. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/ProjectInst.java
  32. +4
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java
  33. +11
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java
  34. +12
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/impl/ProjectServiceImpl.java
  35. +0
    -83
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/utils/ProjectVersionUtil.java
  36. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/contants/TaskContant.java
  37. +6
    -7
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java
  38. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java
  39. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/MenuManage.java
  40. +15
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/ProcessModelManage.java
  41. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java
  42. +1
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/TodoCenterManage.java
  43. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/workbench/converter/WorkbenchConverter.java
  44. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java
  45. +2
    -2
      hz-pm-api/src/test/java/com/hz/pm/api/sys/processDef/ProcessDefTest.java

hz-pm-api/src/main/java/com/hz/pm/api/common/enumeration/ProjectProcessStageEnum.java → hz-pm-api/src/main/java/com/hz/pm/api/common/enumeration/ProjectProcessType.java Просмотреть файл

@@ -10,7 +10,7 @@ import java.util.Optional;


/** /**
* <p> * <p>
* ProjectProcessStageEnum
* ProjectProcessType
* </p> * </p>
* *
* @author WendyYang * @author WendyYang
@@ -18,7 +18,7 @@ import java.util.Optional;
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum ProjectProcessStageEnum {
public enum ProjectProcessType {


/** /**
* 项目流程配置 阶段枚举 * 项目流程配置 阶段枚举
@@ -45,7 +45,7 @@ public enum ProjectProcessStageEnum {
if (Objects.isNull(code)) { if (Objects.isNull(code)) {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }
for (ProjectProcessStageEnum t : ProjectProcessStageEnum.values()) {
for (ProjectProcessType t : ProjectProcessType.values()) {
if (code.equals(t.getCode())) { if (code.equals(t.getCode())) {
return t.desc; return t.desc;
} }
@@ -53,11 +53,11 @@ public enum ProjectProcessStageEnum {
return StringUtils.EMPTY; return StringUtils.EMPTY;
} }


private static Optional<ProjectProcessStageEnum> get(Integer code) {
private static Optional<ProjectProcessType> get(Integer code) {
return Arrays.stream(values()).filter(w -> w.getCode().equals(code)).findFirst(); return Arrays.stream(values()).filter(w -> w.getCode().equals(code)).findFirst();
} }


public static ProjectProcessStageEnum getNoNull(Integer code) {
public static ProjectProcessType getNoNull(Integer code) {
return get(code).orElseThrow(() -> new IllegalArgumentException("流程实例类型")); return get(code).orElseThrow(() -> new IllegalArgumentException("流程实例类型"));
} }



+ 0
- 58
hz-pm-api/src/main/java/com/hz/pm/api/dashboard/handle/ApplicationHandler.java Просмотреть файл

@@ -1,58 +0,0 @@
package com.hz.pm.api.dashboard.handle;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.hz.pm.api.dashboard.constant.DashboardConstant;
import com.hz.pm.api.dashboard.model.vo.PortraitProjectOutputVO;
import com.hz.pm.api.projectlib.model.entity.ProjectApplication;
import com.hz.pm.api.projectlib.service.IProjectApplicationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.Collections;
import java.util.List;

/**
* @Classname ApplicationHandler
* @Description
* @Date 2023/10/9 14:11
* @Author PoffyZhang
*/
@Component
@RequiredArgsConstructor
@Slf4j
public class ApplicationHandler {

private final IProjectApplicationService applicationService;

public List<PortraitProjectOutputVO> generateIrsApp(String projectCode, Integer version) {
//.查询应用
Wrapper<ProjectApplication> paQuery = Wrappers.lambdaQuery(ProjectApplication.class)
.eq(ProjectApplication::getProjectVersion, version)
.eq(ProjectApplication::getProjectCode, projectCode);
List<ProjectApplication> apps = applicationService.list(paQuery);
if (apps.isEmpty()) {
return Collections.emptyList();
}
List<PortraitProjectOutputVO> retApps = Lists.newArrayList();
for (ProjectApplication app : apps) {
String appName = StrUtil.blankToDefault(app.getApplicationName(), app.getRelatedExistsApplication());
retApps.add(generateOutputEntity(appName));
}
return retApps;
}

private PortraitProjectOutputVO generateOutputEntity(String name) {
return PortraitProjectOutputVO.builder()
.name(DashboardConstant.Protrait.PROJECT_SIGNS)
.generateData(new PortraitProjectOutputVO.GenerateData())
.componentUsage(new PortraitProjectOutputVO.ComponentUsage())
.cloudResourceUsage(new PortraitProjectOutputVO.CloudResourceUsage())
.dataUsage(new PortraitProjectOutputVO.DataUsage())
.operationReport(new PortraitProjectOutputVO.OperationReport())
.build();
}
}

+ 3
- 15
hz-pm-api/src/main/java/com/hz/pm/api/filemanage/manage/ProjectFileManage.java Просмотреть файл

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.CommonConst; import com.hz.pm.api.common.model.constant.CommonConst;
@@ -66,7 +66,6 @@ import com.ningdatech.file.service.FileService;
import com.ningdatech.file.utils.StrPool; import com.ningdatech.file.utils.StrPool;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
import com.wflow.contants.HisProInsEndActId; import com.wflow.contants.HisProInsEndActId;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO; import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.process.FileBasicInfo; import com.wflow.workflow.bean.process.FileBasicInfo;
import com.wflow.workflow.bean.process.ProcessComment; import com.wflow.workflow.bean.process.ProcessComment;
@@ -245,8 +244,7 @@ public class ProjectFileManage {


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized String startApplyBorrowProcess(Long projectId) { public synchronized String startApplyBorrowProcess(Long projectId) {
Project project = projectService.getNewProject(projectId);
Assert.notNull(project, "提交失败 此项目不存在!");
Project project = projectService.getNewestNoNull(projectId);


// 首先要判断 项目当前状态 是不是 已归档 // 首先要判断 项目当前状态 是不是 已归档
if (!ProjectStatus.ACCEPTED.eq(project.getStatus())) { if (!ProjectStatus.ACCEPTED.eq(project.getStatus())) {
@@ -254,13 +252,9 @@ public class ProjectFileManage {
} }


UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.APPLY_BORROW,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.APPLY_BORROW,
user.getMhUnitId()); user.getMhUnitId());


if (Objects.isNull(model)) {
throw new BusinessException("找不到申请借阅流程配置");
}

ProcessStartParamsVo params = new ProcessStartParamsVo(); ProcessStartParamsVo params = new ProcessStartParamsVo();
params.setUser(declaredProjectHelper.buildUser(user)); params.setUser(declaredProjectHelper.buildUser(user));
params.setProcessUsers(Collections.emptyMap()); params.setProcessUsers(Collections.emptyMap());
@@ -450,13 +444,7 @@ public class ProjectFileManage {
List<Long> contractFileIdList = getFileIdList(attachment); List<Long> contractFileIdList = getFileIdList(attachment);
fileIdList.addAll(contractFileIdList); fileIdList.addAll(contractFileIdList);
} }
// TODO
// 初验备案阶段
// 获取初验材料
// String preliminaryInspectionMaterials = project.getPreliminaryInspectionMaterials();
// getInspectionMaterials(fileIdList, preliminaryInspectionMaterials);


// 终验申报阶段
// 获取终验材料 // 获取终验材料
String finalAcceptanceMaterials = project.getFinalAcceptanceMaterials(); String finalAcceptanceMaterials = project.getFinalAcceptanceMaterials();
getInspectionMaterials(fileIdList, finalAcceptanceMaterials); getInspectionMaterials(fileIdList, finalAcceptanceMaterials);


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java Просмотреть файл

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.gov.contants.BizProjectContant; import com.hz.pm.api.gov.contants.BizProjectContant;


+ 2
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/OrgSelfAppraisalManage.java Просмотреть файл

@@ -253,8 +253,7 @@ public class OrgSelfAppraisalManage {
public ProjectAppraisalIndexDetailVO getAppraisalTemplateDetail(String projectCode) { public ProjectAppraisalIndexDetailVO getAppraisalTemplateDetail(String projectCode) {
ProjectAppraisalIndexDetailVO vo = new ProjectAppraisalIndexDetailVO(); ProjectAppraisalIndexDetailVO vo = new ProjectAppraisalIndexDetailVO();
// 根据项目编码获取最新版本的项目信息 // 根据项目编码获取最新版本的项目信息
Project project = projectService.getProjectByCode(projectCode);
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!");
Project project = projectService.getNoNull(projectCode);
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版
String projectType = project.getProjectType(); String projectType = project.getProjectType();
Integer projectYear = project.getProjectYear(); Integer projectYear = project.getProjectYear();
@@ -388,8 +387,7 @@ public class OrgSelfAppraisalManage {
Long appraisalId = param.getAppraisalId(); Long appraisalId = param.getAppraisalId();


// 根据项目编码获取最新版本的项目信息 // 根据项目编码获取最新版本的项目信息
Project project = projectService.getProjectByCode(projectCode);
Assert.notNull(project, "项目不存在!");
Project project = projectService.getNoNull(projectCode);
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版
String projectType = project.getProjectType(); String projectType = project.getProjectType();
Integer projectYear = project.getProjectYear(); Integer projectYear = project.getProjectYear();


+ 2
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/PerformanceAppraisalPlanManage.java Просмотреть файл

@@ -368,8 +368,7 @@ public class PerformanceAppraisalPlanManage {
} }


for (AppraisalProjectDTO appraisalProject : projects) { for (AppraisalProjectDTO appraisalProject : projects) {
Project newProject = projectService.getNewProject(appraisalProject.getId());
VUtils.isTrue(Objects.isNull(newProject)).throwMessage("项目不存在 " + appraisalProject.getId());
Project newProject = projectService.getNewestNoNull(appraisalProject.getId());
// 获取项目终验完成的时间 // 获取项目终验完成的时间
LocalDateTime finishTime = getProjectFinishTime(newProject); LocalDateTime finishTime = getProjectFinishTime(newProject);


@@ -492,8 +491,7 @@ public class PerformanceAppraisalPlanManage {
Integer completeSelfDays = editDTO.getCompleteSelfDays(); Integer completeSelfDays = editDTO.getCompleteSelfDays();
List<AppraisalProjectDTO> projects = editDTO.getProjects(); List<AppraisalProjectDTO> projects = editDTO.getProjects();
for (AppraisalProjectDTO appraisalProject : projects) { for (AppraisalProjectDTO appraisalProject : projects) {
Project newProject = projectService.getNewProject(appraisalProject.getId());
VUtils.isTrue(Objects.isNull(newProject)).throwMessage("项目不存在 " + appraisalProject.getId());
Project newProject = projectService.getNewestNoNull(appraisalProject.getId());
// 获取项目终验完成的时间 // 获取项目终验完成的时间
LocalDateTime finishTime = getProjectFinishTime(newProject); LocalDateTime finishTime = getProjectFinishTime(newProject);
PerformanceAppraisalProject pap = new PerformanceAppraisalProject(); PerformanceAppraisalProject pap = new PerformanceAppraisalProject();


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/ReAppraisalManage.java Просмотреть файл

@@ -332,8 +332,7 @@ public class ReAppraisalManage {
Long appraisalId = param.getAppraisalId(); Long appraisalId = param.getAppraisalId();


// 根据项目编码获取最新版本的项目信息 // 根据项目编码获取最新版本的项目信息
Project project = projectService.getProjectByCode(projectCode);
Assert.notNull(project, "项目不存在!");
Project project = projectService.getNoNull(projectCode);
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版
String projectType = project.getProjectType(); String projectType = project.getProjectType();
Integer projectYear = project.getProjectYear(); Integer projectYear = project.getProjectYear();


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/VerifyManage.java Просмотреть файл

@@ -341,8 +341,7 @@ public class VerifyManage {
Long appraisalId = param.getAppraisalId(); Long appraisalId = param.getAppraisalId();


// 根据项目编码获取最新版本的项目信息 // 根据项目编码获取最新版本的项目信息
Project project = projectService.getProjectByCode(projectCode);
Assert.notNull(project, "项目不存在!");
Project project = projectService.getNoNull(projectCode);
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版
String projectType = project.getProjectType(); String projectType = project.getProjectType();
Integer projectYear = project.getProjectYear(); Integer projectYear = project.getProjectYear();


+ 11
- 15
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java Просмотреть файл

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil;
@@ -28,7 +28,7 @@ import com.hz.pm.api.projectdeclared.model.vo.PreInsAcceptancePersonVO;
import com.hz.pm.api.projectdeclared.model.vo.PreInsVO; import com.hz.pm.api.projectdeclared.model.vo.PreInsVO;
import com.hz.pm.api.projectdeclared.model.vo.ProjectContractListVO; import com.hz.pm.api.projectdeclared.model.vo.ProjectContractListVO;
import com.hz.pm.api.projectdeclared.service.*; import com.hz.pm.api.projectdeclared.service.*;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan; import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
@@ -104,7 +104,7 @@ public class ConstructionManage {
*/ */
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
//建设中状态 //建设中状态
query.isNull(Project::getContractAmount); query.isNull(Project::getContractAmount);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode()); query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
@@ -149,7 +149,7 @@ public class ConstructionManage {
*/ */
public PageVo<ProjectContractListVO> projectListPerfect(ProjectListReq req) { public PageVo<ProjectContractListVO> projectListPerfect(ProjectListReq req) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
@@ -201,7 +201,7 @@ public class ConstructionManage {
} }


public void exportList(HttpServletResponse response, ProjectListReq param) { public void exportList(HttpServletResponse response, ProjectListReq param) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态 //待采购状态
query.isNull(Project::getContractAmount); query.isNull(Project::getContractAmount);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode()); query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
@@ -281,8 +281,7 @@ public class ConstructionManage {
public synchronized String submitPurchaseContract(SubmitConstructionReq req) { public synchronized String submitPurchaseContract(SubmitConstructionReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
Long projectId = req.getProjectId(); Long projectId = req.getProjectId();
Project project = projectService.getNewProject(req.getProjectId());
VUtils.isTrue(Objects.isNull(project)).throwMessage("提交失败 此项目不存在!");
Project project = projectService.getNewestNoNull(req.getProjectId());


//首先要判断 项目当前状态 是不是 采购结果备案 //首先要判断 项目当前状态 是不是 采购结果备案
VUtils.isTrue(!ProjectStatus.ON_PURCHASING.getCode().equals(project.getStatus()) || VUtils.isTrue(!ProjectStatus.ON_PURCHASING.getCode().equals(project.getStatus()) ||
@@ -344,7 +343,7 @@ public class ConstructionManage {
if (projectIds.isEmpty()) { if (projectIds.isEmpty()) {
return PageVo.empty(); return PageVo.empty();
} }
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
query.in(Project::getId, projectIds); query.in(Project::getId, projectIds);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode()); query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
@@ -412,7 +411,7 @@ public class ConstructionManage {
public void exportPreList(HttpServletResponse response, ProjectListReq param) { public void exportPreList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态 //待采购状态
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId()); query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -562,12 +561,9 @@ public class ConstructionManage {
} }


UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.XC_APPROVAL_PROCESS,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.XC_APPROVAL_PROCESS,
user.getMhUnitId()); user.getMhUnitId());


if (Objects.isNull(model)) {
throw BizException.wrap("找不到信创审批流程配置");
}
ProcessStartParamsVo processParam = new ProcessStartParamsVo(); ProcessStartParamsVo processParam = new ProcessStartParamsVo();
processParam.setUser(declaredProjectHelper.buildUser(user)); processParam.setUser(declaredProjectHelper.buildUser(user));
processParam.setProcessUsers(Collections.emptyMap()); processParam.setProcessUsers(Collections.emptyMap());
@@ -579,7 +575,7 @@ public class ConstructionManage {


ProjectInst projectInst = new ProjectInst(); ProjectInst projectInst = new ProjectInst();
projectInst.setInstCode(instanceId); projectInst.setInstCode(instanceId);
projectInst.setInstType(ProjectProcessStageEnum.XC_APPROVAL_PROCESS);
projectInst.setInstType(ProjectProcessType.XC_APPROVAL_PROCESS);
projectInst.setProjectId(req.getProjectId()); projectInst.setProjectId(req.getProjectId());
projectInstService.save(projectInst); projectInstService.save(projectInst);
log.info("信创审查提交成功 【{}】", instanceId); log.info("信创审查提交成功 【{}】", instanceId);
@@ -594,7 +590,7 @@ public class ConstructionManage {
PurchaseInst purchaseInst = new PurchaseInst(); PurchaseInst purchaseInst = new PurchaseInst();
purchaseInst.setBidId(purchase.getId()); purchaseInst.setBidId(purchase.getId());
purchaseInst.setInstCode(instanceId); purchaseInst.setInstCode(instanceId);
purchaseInst.setInstType(ProjectProcessStageEnum.XC_APPROVAL_PROCESS.getCode());
purchaseInst.setInstType(ProjectProcessType.XC_APPROVAL_PROCESS.getCode());
purchaseInst.setProjectId(req.getProjectId()); purchaseInst.setProjectId(req.getProjectId());
purchaseInstService.save(purchaseInst); purchaseInstService.save(purchaseInst);
} }


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectHelper.java Просмотреть файл

@@ -13,7 +13,7 @@ import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.common.model.constant.TypeReferenceConst; import com.hz.pm.api.common.model.constant.TypeReferenceConst;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO;
import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
import com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO;
import com.hz.pm.api.projectdeclared.service.IDeclaredStatisticsService; import com.hz.pm.api.projectdeclared.service.IDeclaredStatisticsService;
import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO; import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO;
@@ -297,13 +297,13 @@ public class DeclaredProjectHelper {
} }


//根据提交者的单位 //根据提交者的单位
public DeclaredProjectStatisticsPO declaredProjectOrgStatistics(Integer year, UserFullInfoDTO user) {
public DeclaredProjectStatisticsVO declaredProjectOrgStatistics(Integer year, UserFullInfoDTO user) {
//查此人建设单位的项目 //查此人建设单位的项目
return statisticsService.getOrgStatistics(user.getMhUnitIdStr(), year); return statisticsService.getOrgStatistics(user.getMhUnitIdStr(), year);
} }


//根据提交者的区域 他是区管或者超管 //根据提交者的区域 他是区管或者超管
public DeclaredProjectStatisticsPO declaredProjectRegionStatistics(Integer year, UserFullInfoDTO user) {
public DeclaredProjectStatisticsVO declaredProjectRegionStatistics(Integer year, UserFullInfoDTO user) {
//查此人建设单位的项目 //查此人建设单位的项目
return statisticsService.getRegionStatistics(null, year); return statisticsService.getRegionStatistics(null, year);
} }


+ 8
- 17
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java Просмотреть файл

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
@@ -22,7 +22,7 @@ import com.hz.pm.api.projectdeclared.model.entity.ProjectDraft;
import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum; import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum;
import com.hz.pm.api.projectdeclared.model.vo.ProjectDraftVO; import com.hz.pm.api.projectdeclared.model.vo.ProjectDraftVO;
import com.hz.pm.api.projectdeclared.service.IProjectDraftService; import com.hz.pm.api.projectdeclared.service.IProjectDraftService;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.manage.ProjectLibManage; import com.hz.pm.api.projectlib.manage.ProjectLibManage;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO; import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO;
import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
@@ -49,7 +49,6 @@ import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.basic.util.NdDateUtils;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO; import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService; import com.wflow.workflow.service.ProcessInstanceService;
@@ -103,11 +102,8 @@ public class DeclaredProjectManage {
public synchronized String startTheProcess(DefaultDeclaredDTO req) { public synchronized String startTheProcess(DefaultDeclaredDTO req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();


WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.COMPLIANCE_REVIEW,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.COMPLIANCE_REVIEW,
user.getMhUnitId()); user.getMhUnitId());
if (Objects.isNull(model)) {
throw BizException.wrap("找不到单位流程配置");
}


ProjectDTO reqProj = req.getProjectInfo(); ProjectDTO reqProj = req.getProjectInfo();
reqProj.setBuildOrgCode(user.getMhUnitIdStr()); reqProj.setBuildOrgCode(user.getMhUnitIdStr());
@@ -183,8 +179,7 @@ public class DeclaredProjectManage {
reqProj.setBuildOrgCode(user.getMhUnitIdStr()); reqProj.setBuildOrgCode(user.getMhUnitIdStr());
reqProj.setBuildOrgName(user.getMhUnitName()); reqProj.setBuildOrgName(user.getMhUnitName());


Project projectInfo = projectService.getById(reqProj.getId());
Assert.notNull(projectInfo, "提交失败 此项目不存在!");
Project projectInfo = projectService.getNoNull(reqProj.getId());


//项目名称去重 //项目名称去重
if (StringUtils.isNotBlank(reqProj.getProjectName()) && if (StringUtils.isNotBlank(reqProj.getProjectName()) &&
@@ -208,13 +203,9 @@ public class DeclaredProjectManage {
//判断申报金额 是否等于总的 判断年度支付金额 是否等于总金额 //判断申报金额 是否等于总的 判断年度支付金额 是否等于总金额
declaredProjectHelper.checkAmount(reqProj); declaredProjectHelper.checkAmount(reqProj);


WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.COMPLIANCE_REVIEW,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.COMPLIANCE_REVIEW,
user.getMhUnitId()); user.getMhUnitId());


if (Objects.isNull(model)) {
throw new BusinessException("找不到单位流程配置");
}

//首先要判断 项目当前状态 是不是 单位内部拒绝 //首先要判断 项目当前状态 是不是 单位内部拒绝
VUtils.isTrue(!ProjectStatus.COMPLIANCE_REVIEW_FAILED.eq(projectInfo.getStatus())) VUtils.isTrue(!ProjectStatus.COMPLIANCE_REVIEW_FAILED.eq(projectInfo.getStatus()))
.throwMessage("提交失败 该项目不是 单位内部拒绝审核状态或者未立项阶段"); .throwMessage("提交失败 该项目不是 单位内部拒绝审核状态或者未立项阶段");
@@ -236,7 +227,7 @@ public class DeclaredProjectManage {
//保存项目相关 //保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId, Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId,
user.getUserId(), ProjectStatus.NOT_APPROVED, ProjectStatus.COMPLIANCE_REVIEW_FAILED, user.getUserId(), ProjectStatus.NOT_APPROVED, ProjectStatus.COMPLIANCE_REVIEW_FAILED,
ProjectProcessStageEnum.COMPLIANCE_REVIEW);
ProjectProcessType.COMPLIANCE_REVIEW);


//发送给第一个审批人消息 //发送给第一个审批人消息
noticeManage.sendFirstUser(newProj, model.getFormName(), instId, noticeManage.sendFirstUser(newProj, model.getFormName(), instId,
@@ -352,7 +343,7 @@ public class DeclaredProjectManage {
*/ */
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
// 当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位 // 当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位
preQuery(query, user); preQuery(query, user);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
@@ -381,7 +372,7 @@ public class DeclaredProjectManage {


public void exportList(HttpServletResponse response, ProjectListReq param) { public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位 //当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位
preQuery(query, user); preQuery(query, user);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);


+ 11
- 40
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DelayedApplyManage.java Просмотреть файл

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
@@ -16,14 +16,14 @@ import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO;
import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO; import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO;
import com.hz.pm.api.projectdeclared.model.vo.DelayedApplyVO; import com.hz.pm.api.projectdeclared.model.vo.DelayedApplyVO;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.manage.ProjectLibManage; import com.hz.pm.api.projectlib.manage.ProjectLibManage;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectDelayApply; import com.hz.pm.api.projectlib.model.entity.ProjectDelayApply;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
import com.hz.pm.api.projectlib.service.INdProjectDelayApplyService; import com.hz.pm.api.projectlib.service.INdProjectDelayApplyService;
@@ -43,7 +43,6 @@ import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.basic.util.NdDateUtils;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
import com.wflow.contants.HisProInsEndActId; import com.wflow.contants.HisProInsEndActId;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO; import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService; import com.wflow.workflow.service.ProcessInstanceService;
@@ -97,7 +96,7 @@ public class DelayedApplyManage {
*/ */
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
// 待终验 并且已经过期 // 待终验 并且已经过期
// 只能看自己单位的 // 只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
@@ -167,7 +166,7 @@ public class DelayedApplyManage {
public void exportList(HttpServletResponse response, ProjectListReq param) { public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
// 待终验 // 待终验
// 只能看自己单位的 // 只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId()); query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -212,40 +211,16 @@ public class DelayedApplyManage {
} }


/** /**
* 延期申请
*
* @param dto
* @return
*/
public String delayedApply(DelayedApplyDTO dto) {
Long projectId = dto.getProjectId();
Project project = projectService.getNewProject(projectId);
Assert.notNull(project, "提交失败 此项目不存在!");

//首先要判断 项目当前状态 是不是 以终验
VUtils.isTrue(!ProjectStatus.ON_PILOT_RUNNING.eq(project.getStatus()) ||
!ProjectStatus.PROJECT_APPROVED.eq(project.getStage()))
.throwMessage("提交失败 该项目不是 已立项|待终验");

VUtils.isTrue(Objects.isNull(project.getPlanAcceptanceTime())
|| !project.getPlanAcceptanceTime().isAfter(LocalDateTime.now()))
.throwMessage("当前项目还未过期验收");

return "申请发起成功";
}

/**
* 开启延期申请审批流程 * 开启延期申请审批流程
* *
* @param dto
* @return
* @param dto \
* @return \
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized String startDelayedApplyProcess(DelayedApplyDTO dto) { public synchronized String startDelayedApplyProcess(DelayedApplyDTO dto) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
Long projectId = dto.getProjectId(); Long projectId = dto.getProjectId();
Project project = projectService.getNewProject(projectId);
VUtils.isTrue(Objects.isNull(project)).throwMessage("提交失败 此项目不存在!");
Project project = projectService.getNewestNoNull(projectId);


//首先要判断 项目当前状态 是不是 以终验 //首先要判断 项目当前状态 是不是 以终验
VUtils.isTrue(!ProjectStatus.ON_PILOT_RUNNING.eq(project.getStatus()) || VUtils.isTrue(!ProjectStatus.ON_PILOT_RUNNING.eq(project.getStatus()) ||
@@ -256,13 +231,9 @@ public class DelayedApplyManage {
|| project.getPlanAcceptanceTime().isAfter(LocalDateTime.now())) || project.getPlanAcceptanceTime().isAfter(LocalDateTime.now()))
.throwMessage("当前项目还未过期验收"); .throwMessage("当前项目还未过期验收");


WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.APPLY_DELAY,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.APPLY_DELAY,
user.getMhUnitId()); user.getMhUnitId());


if (Objects.isNull(model)) {
throw new BusinessException("找不到延期申请流程配置");
}

ProcessStartParamsVo params = new ProcessStartParamsVo(); ProcessStartParamsVo params = new ProcessStartParamsVo();
params.setUser(declaredProjectHelper.buildUser(user)); params.setUser(declaredProjectHelper.buildUser(user));
params.setProcessUsers(Collections.emptyMap()); params.setProcessUsers(Collections.emptyMap());
@@ -304,8 +275,8 @@ public class DelayedApplyManage {
/** /**
* 查看某个项目的 延期列表 * 查看某个项目的 延期列表
* *
* @param projectId
* @return
* @param projectId \
* @return \
*/ */
public List<DelayedApplyVO> delayList(Long projectId) { public List<DelayedApplyVO> delayList(Long projectId) {
List<Long> allVersionProjectId = projectService.allVersionProjectIds(projectId); List<Long> allVersionProjectId = projectService.allVersionProjectIds(projectId);


+ 7
- 11
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java Просмотреть файл

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil;
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil;
@@ -22,7 +22,7 @@ import com.hz.pm.api.projectdeclared.model.vo.FinalAcceptanceVO;
import com.hz.pm.api.projectdeclared.service.IContractService; import com.hz.pm.api.projectdeclared.service.IContractService;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService; import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan; import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
@@ -45,7 +45,6 @@ import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.basic.util.NdDateUtils;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO; import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService; import com.wflow.workflow.service.ProcessInstanceService;
@@ -106,7 +105,7 @@ public class FinalAcceptanceManage {
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {


UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
//待终验 并且还未过期 //待终验 并且还未过期
//只能看自己单位的 //只能看自己单位的
Set<Long> projectIds = purchaseService.listProjectIdByStatus(FINAL_INSPECTED_TENDER_STATUS); Set<Long> projectIds = purchaseService.listProjectIdByStatus(FINAL_INSPECTED_TENDER_STATUS);
@@ -177,7 +176,7 @@ public class FinalAcceptanceManage {


public void exportList(HttpServletResponse response, ProjectListReq param) { public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待终验 //待终验
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId()); query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -249,11 +248,8 @@ public class FinalAcceptanceManage {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized String startProcess(SubmitFinallyInspectedReq req) { public synchronized String startProcess(SubmitFinallyInspectedReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectProcessStageEnum instType = ProjectProcessStageEnum.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());
if (Objects.isNull(model)) {
throw new BusinessException("找不到验收申报流程配置");
}
ProjectProcessType instType = ProjectProcessType.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());


List<Purchase> purchases = purchaseService.listByProjectId(req.getProjectId()); List<Purchase> purchases = purchaseService.listByProjectId(req.getProjectId());
Map<Long, Purchase> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId); Map<Long, Purchase> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId);
@@ -292,7 +288,7 @@ public class FinalAcceptanceManage {
// 判断是否所有标段已经进行过终验申报 无论是否通过 // 判断是否所有标段已经进行过终验申报 无论是否通过
LambdaQueryWrapper<PurchaseInst> purchaseInstQuery = Wrappers.lambdaQuery(PurchaseInst.class) LambdaQueryWrapper<PurchaseInst> purchaseInstQuery = Wrappers.lambdaQuery(PurchaseInst.class)
.select(PurchaseInst::getBidId) .select(PurchaseInst::getBidId)
.eq(PurchaseInst::getInstType, ProjectProcessStageEnum.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS.getCode())
.eq(PurchaseInst::getInstType, ProjectProcessType.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS.getCode())
.in(PurchaseInst::getBidId, purchaseMap.keySet()); .in(PurchaseInst::getBidId, purchaseMap.keySet());
List<PurchaseInst> currPurchaseInstList = purchaseInstService.list(purchaseInstQuery); List<PurchaseInst> currPurchaseInstList = purchaseInstService.list(purchaseInstQuery);
Set<Long> finalInspectedBidIds = CollUtils.fieldSet(currPurchaseInstList, PurchaseInst::getBidId); Set<Long> finalInspectedBidIds = CollUtils.fieldSet(currPurchaseInstList, PurchaseInst::getBidId);


+ 1
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java Просмотреть файл

@@ -53,9 +53,7 @@ public class OperationManage {
* @return \ * @return \
*/ */
public List<OperationVO> detail(Long projectId) { public List<OperationVO> detail(Long projectId) {
Project project = projectService.getNewProject(projectId);
Assert.notNull(project, "项目不存在!");

Project project = projectService.getNewestNoNull(projectId);
List<Operation> operations = operationService.list(Wrappers.lambdaQuery(Operation.class) List<Operation> operations = operationService.list(Wrappers.lambdaQuery(Operation.class)
.eq(Operation::getProjectCode, project.getProjectCode())); .eq(Operation::getProjectCode, project.getProjectCode()));




+ 55
- 31
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java Просмотреть файл

@@ -4,15 +4,17 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil;
import com.hz.pm.api.datascope.model.DataScopeDTO;
import com.hz.pm.api.datascope.utils.DataScopeUtil;
import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO; import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO;
import com.hz.pm.api.meeting.entity.domain.MeetingInnerProject;
import com.hz.pm.api.projectdeclared.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.model.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.model.req.ProjectReviewApplyReq; import com.hz.pm.api.projectdeclared.model.req.ProjectReviewApplyReq;
import com.hz.pm.api.projectdeclared.service.IProjectReviewService; import com.hz.pm.api.projectdeclared.service.IProjectReviewService;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
@@ -21,6 +23,7 @@ import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
import com.hz.pm.api.projectlib.service.IProjectInstService; import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.sys.manage.ProcessModelManage; import com.hz.pm.api.sys.manage.ProcessModelManage;
import com.hz.pm.api.user.helper.MhUnitCache;
import com.hz.pm.api.user.security.model.UserFullInfoDTO; import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.hz.pm.api.user.security.model.UserInfoDetails; import com.hz.pm.api.user.security.model.UserInfoDetails;
import com.hz.pm.api.user.util.LoginUserUtil; import com.hz.pm.api.user.util.LoginUserUtil;
@@ -36,10 +39,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;


/** /**
* <p> * <p>
@@ -61,6 +61,8 @@ public class ProjectReviewManage {
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;
private final IProjectInstService projectInstService; private final IProjectInstService projectInstService;
private final ProjectStateMachineUtil projectStateMachineUtil; private final ProjectStateMachineUtil projectStateMachineUtil;
private final MhUnitCache mhUnitCache;
private final UserInfoHelper userInfoHelper;


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized void projectReviewApply(ProjectReviewApplyReq req) { public synchronized void projectReviewApply(ProjectReviewApplyReq req) {
@@ -71,13 +73,9 @@ public class ProjectReviewManage {
} }


UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
WflowModels model = processModelManage.getWflowModels(ProjectProcessStageEnum.PROJECT_REVIEW,
WflowModels model = processModelManage.getWflowModelsNoNull(ProjectProcessType.PROJECT_REVIEW,
user.getMhUnitId()); user.getMhUnitId());


if (Objects.isNull(model)) {
throw BizException.wrap("找不到项目评审流程配置");
}

ProcessStartParamsVo processParam = new ProcessStartParamsVo(); ProcessStartParamsVo processParam = new ProcessStartParamsVo();
processParam.setUser(declaredProjectHelper.buildUser(user)); processParam.setUser(declaredProjectHelper.buildUser(user));
processParam.setProcessUsers(Collections.emptyMap()); processParam.setProcessUsers(Collections.emptyMap());
@@ -88,7 +86,7 @@ public class ProjectReviewManage {


ProjectInst projectInst = new ProjectInst(); ProjectInst projectInst = new ProjectInst();
projectInst.setInstCode(instanceId); projectInst.setInstCode(instanceId);
projectInst.setInstType(ProjectProcessStageEnum.PROJECT_REVIEW);
projectInst.setInstType(ProjectProcessType.PROJECT_REVIEW);
projectInst.setProjectId(req.getProjectId()); projectInst.setProjectId(req.getProjectId());
projectInstService.save(projectInst); projectInstService.save(projectInst);
projectStateMachineUtil.pass(project); projectStateMachineUtil.pass(project);
@@ -123,15 +121,17 @@ public class ProjectReviewManage {
* @return * @return
*/ */
public PageVo<ProjectLibListItemVO> pageReviewProject(ProjectListReq req) { public PageVo<ProjectLibListItemVO> pageReviewProject(ProjectListReq req) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectManageUtil.initQuery();
if (!projectQueryPermission(query, user)) {
return PageVo.empty();
}
ProjectManageUtil.projectQuery(query, req);
query.in(Project::getProcessStatus, query.in(Project::getProcessStatus,
ProjectStatus.WITHOUT_PROJECT_REVIEW.getCode(),
ProjectStatus.ON_PROJECT_REVIEW.getCode(),
ProjectStatus.PROJECT_REVIEW_FAILED.getCode());
// 当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位
UserInfoDetails user = LoginUserUtil.loginUserDetail();
preQuery(query, user);
query.eq(Project::getNewest, Boolean.TRUE);
ProjectStatus.WITHOUT_PROJECT_REVIEW.getCode(),
ProjectStatus.ON_PROJECT_REVIEW.getCode(),
ProjectStatus.PROJECT_REVIEW_FAILED.getCode())
.eq(Project::getNewest, Boolean.TRUE);
Page<Project> page = projectService.page(req.page(), query); Page<Project> page = projectService.page(req.page(), query);
long total; long total;
if ((total = page.getTotal()) == 0) { if ((total = page.getTotal()) == 0) {
@@ -142,17 +142,41 @@ public class ProjectReviewManage {
return PageVo.of(records, total); return PageVo.of(records, total);
} }


//当非预审申报的时候 是自己单位 当是预审申报的时候 要主管单位 并且他是单位管理员
private void preQuery(LambdaQueryWrapper<Project> query, UserInfoDetails user) {
//如果当前登录是单位管理员
String mhUnitId = user.getMhUnitIdStr();
if (user.getIsOrgAdmin()) {
query.and(s1 -> s1.eq(Project::getSuperOrgCode, mhUnitId)
.or(q2 -> q2.eq(Project::getBuildOrgCode, mhUnitId)));
private boolean projectQueryPermission(LambdaQueryWrapper<Project> query, UserFullInfoDTO user) {
boolean queryState = true;
Optional<DataScopeDTO> currDs = DataScopeUtil.getCurrentUserDataScopeHasUserId(user);
if (!currDs.isPresent()) {
log.warn("没有取到权限信息 当前查询 没有权限条件");
queryState = false;
} else { } else {
//否则 只能看到 非预审 并且
query.and(q2 -> q2.eq(Project::getBuildOrgCode, mhUnitId));
switch (currDs.get().getRole()) {
case NORMAL_MEMBER:
//普通用户 只能看到自己单位去申报的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
break;
case COMPANY_MANAGER:
List<Long> childUnitIds = mhUnitCache.getViewChildIdsRecursion(user.getMhUnitId());
List<String> viewUnitIdList = CollUtils.convert(childUnitIds, String::valueOf);
//单位管理员 看到自己单位去申报的 + 待预审的主管单位是自己单位的项目
query.and(q1 -> q1.in(Project::getBuildOrgCode, viewUnitIdList)
.or(q2 -> q2.eq(Project::getStage, ProjectStatus.NOT_APPROVED.getCode())
.in(Project::getSuperOrgCode, viewUnitIdList)));
break;
case SUPER_ADMIN:
//超级管理员 看到丽水全市的 并且也要判断他 同时是不是单位管理员
break;
case VISITOR:
//访客可以看全市的
break;
case DASHBOARD:
break;
default:
//没有权限的话 就让它查不到
queryState = false;
break;
}
} }
return queryState;
} }


} }

+ 15
- 25
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java Просмотреть файл

@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.statemachine.event.AbstractStateChangeEvent; import com.hz.pm.api.common.statemachine.event.AbstractStateChangeEvent;
import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent;
@@ -51,7 +51,7 @@ import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService; import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil;
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; import com.hz.pm.api.projectlib.entity.PurchaseStatusChange;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.model.enumeration.*; import com.hz.pm.api.projectlib.model.enumeration.*;
@@ -76,7 +76,6 @@ import com.ningdatech.file.entity.File;
import com.ningdatech.file.entity.vo.result.FileResultVO; import com.ningdatech.file.entity.vo.result.FileResultVO;
import com.ningdatech.file.service.FileService; import com.ningdatech.file.service.FileService;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO; import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService; import com.wflow.workflow.service.ProcessInstanceService;
@@ -176,7 +175,7 @@ public class PurchaseManage {
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
Assert.notNull(user, "获取登录用户失败!"); Assert.notNull(user, "获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
//待采购状态 //待采购状态
@@ -235,7 +234,7 @@ public class PurchaseManage {
public void exportList(HttpServletResponse response, ProjectListReq param) { public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态 //待采购状态
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId()); query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -297,8 +296,7 @@ public class PurchaseManage {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
Long projectId = dto.getProjectId(); Long projectId = dto.getProjectId();
VUtils.isTrue(Objects.isNull(projectId)).throwMessage("提交失败 缺少项目ID!"); VUtils.isTrue(Objects.isNull(projectId)).throwMessage("提交失败 缺少项目ID!");
Project project = projectService.getNewProject(dto.getProjectId());
VUtils.isTrue(Objects.isNull(project)).throwMessage("提交失败 此项目不存在!");
Project project = projectService.getNewestNoNull(dto.getProjectId());


//首先要判断 项目当前状态 是不是 采购结果备案 //首先要判断 项目当前状态 是不是 采购结果备案
VUtils.isTrue(!ProjectStatus.TO_BE_PURCHASED.eq(project.getStatus()) VUtils.isTrue(!ProjectStatus.TO_BE_PURCHASED.eq(project.getStatus())
@@ -347,8 +345,7 @@ public class PurchaseManage {
public synchronized void submitPurchaseNotice(SubmitPurchaseNoticeReq req) { public synchronized void submitPurchaseNotice(SubmitPurchaseNoticeReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
Long projectId = req.getProjectId(); Long projectId = req.getProjectId();
Project project = projectService.getNewProject(projectId);
Assert.notNull(project, "提交失败 此项目不存在!");
Project project = projectService.getNewestNoNull(projectId);


//首先要判断 项目当前状态 是不是 采购结果备案 //首先要判断 项目当前状态 是不是 采购结果备案
VUtils.isTrue(!ProjectStatus.TO_BE_PURCHASED.eq(project.getStatus()) VUtils.isTrue(!ProjectStatus.TO_BE_PURCHASED.eq(project.getStatus())
@@ -563,11 +560,8 @@ public class PurchaseManage {
} }
}); });
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectProcessStageEnum instType = ProjectProcessStageEnum.TEST_VALID;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());
if (Objects.isNull(model)) {
throw new BusinessException("找不到测试验证流程配置");
}
ProjectProcessType instType = ProjectProcessType.TEST_VALID;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
for (Purchase purchase : purchases) { for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId(); Long projectId = purchase.getProjectId();
@@ -603,7 +597,7 @@ public class PurchaseManage {
private void saveProjectPurchaseInstCode(Long bidId, private void saveProjectPurchaseInstCode(Long bidId,
String instanceId, String instanceId,
Long projectId, Long projectId,
ProjectProcessStageEnum instType) {
ProjectProcessType instType) {
// 保存标段实列关系 // 保存标段实列关系
PurchaseInst purchaseInst = new PurchaseInst(); PurchaseInst purchaseInst = new PurchaseInst();
purchaseInst.setBidId(bidId); purchaseInst.setBidId(bidId);
@@ -629,11 +623,9 @@ public class PurchaseManage {
} }
} }
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectProcessStageEnum instType = ProjectProcessStageEnum.SELF_TEST;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());
if (Objects.isNull(model)) {
throw new BusinessException("找不到系统自测流程配置");
}
ProjectProcessType instType = ProjectProcessType.SELF_TEST;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());

LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
for (Purchase purchase : purchases) { for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId(); Long projectId = purchase.getProjectId();
@@ -676,11 +668,9 @@ public class PurchaseManage {
} }
} }
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectProcessStageEnum instType = ProjectProcessStageEnum.ADAPTION;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());
if (Objects.isNull(model)) {
throw new BusinessException("找不到适配改造流程配置");
}
ProjectProcessType instType = ProjectProcessType.ADAPTION;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());

LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
for (Purchase purchase : purchases) { for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId(); Long projectId = purchase.getProjectId();


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java Просмотреть файл

@@ -1,7 +1,7 @@
package com.hz.pm.api.projectdeclared.mapper; package com.hz.pm.api.projectdeclared.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
import com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;


/** /**
@@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Param;
*/ */
public interface DeclaredStatisticsMapper extends BaseMapper { public interface DeclaredStatisticsMapper extends BaseMapper {


DeclaredProjectStatisticsPO getOrgStatistics(@Param("orgCode") String orgCode, @Param("year") Integer year);
DeclaredProjectStatisticsVO getOrgStatistics(@Param("orgCode") String orgCode, @Param("year") Integer year);


DeclaredProjectStatisticsPO getRegionStatistics(@Param("year") Integer year);
DeclaredProjectStatisticsVO getRegionStatistics(@Param("year") Integer year);
} }

+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml Просмотреть файл

@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hz.pm.api.projectdeclared.mapper.DeclaredStatisticsMapper"> <mapper namespace="com.hz.pm.api.projectdeclared.mapper.DeclaredStatisticsMapper">


<select id="getOrgStatistics" resultType="com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO">
<select id="getOrgStatistics" resultType="com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO">
SELECT SELECT
count(0) totalNum, count(0) totalNum,
count(CASE WHEN p.project_type = 1 THEN 1 end) buildNum, count(CASE WHEN p.project_type = 1 THEN 1 end) buildNum,
@@ -19,7 +19,7 @@
WHERE build_org_code = #{orgCode} and project_year = #{year} and newest = 1 WHERE build_org_code = #{orgCode} and project_year = #{year} and newest = 1
</select> </select>


<select id="getRegionStatistics" resultType="com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO">
<select id="getRegionStatistics" resultType="com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO">
SELECT SELECT
count(0) totalNum, count(0) totalNum,
count(CASE WHEN p.project_type = 1 THEN 1 end) buildNum, count(CASE WHEN p.project_type = 1 THEN 1 end) buildNum,


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/ProjectReviewMapper.java Просмотреть файл

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.mapper; package com.hz.pm.api.projectdeclared.mapper;


import com.hz.pm.api.projectdeclared.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.model.entity.ProjectReview;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;


/** /**


hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/entity/ProjectReview.java → hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectReview.java Просмотреть файл

@@ -1,4 +1,4 @@
package com.hz.pm.api.projectdeclared.entity;
package com.hz.pm.api.projectdeclared.model.entity;


import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;

+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PurchaseInst.java Просмотреть файл

@@ -1,7 +1,7 @@
package com.hz.pm.api.projectdeclared.model.entity; package com.hz.pm.api.projectdeclared.model.entity;


import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


@@ -43,7 +43,7 @@ public class PurchaseInst {
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private Long createBy; private Long createBy;


public void setInstType(ProjectProcessStageEnum processStage) {
public void setInstType(ProjectProcessType processStage) {
this.instType = processStage.getCode(); this.instType = processStage.getCode();
} }




hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/po/DeclaredProjectStatisticsPO.java → hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/DeclaredProjectStatisticsVO.java Просмотреть файл

@@ -1,4 +1,4 @@
package com.hz.pm.api.projectdeclared.model.po;
package com.hz.pm.api.projectdeclared.model.vo;


import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@@ -12,7 +12,7 @@ import java.math.BigDecimal;
* @Author PoffyZhang * @Author PoffyZhang
*/ */
@Data @Data
public class DeclaredProjectStatisticsPO {
public class DeclaredProjectStatisticsVO {


@ApiModelProperty("总项目数") @ApiModelProperty("总项目数")
private Integer totalNum; private Integer totalNum;

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IDeclaredStatisticsService.java Просмотреть файл

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.service; package com.hz.pm.api.projectdeclared.service;


import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
import com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO;


/** /**
* <p> * <p>
@@ -12,7 +12,7 @@ import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
*/ */
public interface IDeclaredStatisticsService { public interface IDeclaredStatisticsService {


DeclaredProjectStatisticsPO getOrgStatistics(String organizationCode, Integer year);
DeclaredProjectStatisticsVO getOrgStatistics(String organizationCode, Integer year);


DeclaredProjectStatisticsPO getRegionStatistics(String regionCode,Integer year);
DeclaredProjectStatisticsVO getRegionStatistics(String regionCode, Integer year);
} }

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IProjectReviewService.java Просмотреть файл

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.service; package com.hz.pm.api.projectdeclared.service;


import com.hz.pm.api.projectdeclared.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.model.entity.ProjectReview;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;


/** /**


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/DeclaredStatisticsServiceImpl.java Просмотреть файл

@@ -1,7 +1,7 @@
package com.hz.pm.api.projectdeclared.service.impl; package com.hz.pm.api.projectdeclared.service.impl;


import com.hz.pm.api.projectdeclared.mapper.DeclaredStatisticsMapper; import com.hz.pm.api.projectdeclared.mapper.DeclaredStatisticsMapper;
import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
import com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO;
import com.hz.pm.api.projectdeclared.service.IDeclaredStatisticsService; import com.hz.pm.api.projectdeclared.service.IDeclaredStatisticsService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -27,7 +27,7 @@ public class DeclaredStatisticsServiceImpl implements IDeclaredStatisticsService
* @return * @return
*/ */
@Override @Override
public DeclaredProjectStatisticsPO getOrgStatistics(String orgCode, Integer year) {
public DeclaredProjectStatisticsVO getOrgStatistics(String orgCode, Integer year) {
return declaredStatisticsMapper.getOrgStatistics(orgCode, year); return declaredStatisticsMapper.getOrgStatistics(orgCode, year);
} }


@@ -38,7 +38,7 @@ public class DeclaredStatisticsServiceImpl implements IDeclaredStatisticsService
* @return * @return
*/ */
@Override @Override
public DeclaredProjectStatisticsPO getRegionStatistics(String regionCode, Integer year) {
public DeclaredProjectStatisticsVO getRegionStatistics(String regionCode, Integer year) {
return declaredStatisticsMapper.getRegionStatistics(year); return declaredStatisticsMapper.getRegionStatistics(year);
} }
} }

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/ProjectReviewServiceImpl.java Просмотреть файл

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.service.impl; package com.hz.pm.api.projectdeclared.service.impl;


import com.hz.pm.api.projectdeclared.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.model.entity.ProjectReview;
import com.hz.pm.api.projectdeclared.mapper.ProjectReviewMapper; import com.hz.pm.api.projectdeclared.mapper.ProjectReviewMapper;
import com.hz.pm.api.projectdeclared.service.IProjectReviewService; import com.hz.pm.api.projectdeclared.service.IProjectReviewService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;


hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectHelper.java → hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectManageUtil.java Просмотреть файл

@@ -18,13 +18,21 @@ import java.util.Map;


/** /**
* <p> * <p>
* ProjectHelper
* ProjectHelperUtil
* </p> * </p>
* *
* @author WendyYang * @author WendyYang
* @since 14:15 2023/2/11 * @since 14:15 2023/2/11
*/ */
public class ProjectHelper {
public class ProjectManageUtil {

private ProjectManageUtil() {

}

public static LambdaQueryWrapper<Project> initQuery() {
return new LambdaQueryWrapper<>();
}


/** /**
* 通用项目查询 * 通用项目查询
@@ -32,8 +40,7 @@ public class ProjectHelper {
* @param req 查询条件 * @param req 查询条件
* @return / * @return /
**/ **/
public static LambdaQueryWrapper<Project> projectQuery(ProjectListReq req) {
LambdaQueryWrapper<Project> query = new LambdaQueryWrapper<>();
public static void projectQuery(LambdaQueryWrapper<Project> query, ProjectListReq req) {
query.eq(req.getUserId() != null, Project::getCreateBy, req.getUserId()) query.eq(req.getUserId() != null, Project::getCreateBy, req.getUserId())
.like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) .like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName())
.eq(req.getProjectType() != null, Project::getProjectType, req.getProjectType()) .eq(req.getProjectType() != null, Project::getProjectType, req.getProjectType())
@@ -63,6 +70,17 @@ public class ProjectHelper {
//已添加评价计划的项目code //已添加评价计划的项目code
.notIn(CollUtil.isNotEmpty(req.getProjectCodes()), Project::getProjectCode, req.getProjectCodes()) .notIn(CollUtil.isNotEmpty(req.getProjectCodes()), Project::getProjectCode, req.getProjectCodes())
.orderByDesc(Project::getUpdateOn); .orderByDesc(Project::getUpdateOn);
}

/**
* 通用项目查询
*
* @param req 查询条件
* @return /
**/
public static LambdaQueryWrapper<Project> projectQuery(ProjectListReq req) {
LambdaQueryWrapper<Project> query = new LambdaQueryWrapper<>();
projectQuery(query, req);
return query; return query;
} }


@@ -72,8 +90,8 @@ public class ProjectHelper {
* @param app * @param app
* @return * @return
*/ */
public static ProjectApplicationVO convertVOWithMap(ProjectApplication app,
Map<Long, List<ProjectCoreBusinessIndicators>> coreBizMap) {
public static ProjectApplicationVO to(ProjectApplication app,
Map<Long, List<ProjectCoreBusinessIndicators>> coreBizMap) {
ProjectApplicationVO appVo = new ProjectApplicationVO(); ProjectApplicationVO appVo = new ProjectApplicationVO();
BeanUtils.copyProperties(app, appVo); BeanUtils.copyProperties(app, appVo);
if (coreBizMap.containsKey(app.getId())) { if (coreBizMap.containsKey(app.getId())) {
@@ -83,7 +101,7 @@ public class ProjectHelper {
return appVo; return appVo;
} }


public static ProjectApplicationVO convertVO(ProjectApplication app) {
public static ProjectApplicationVO to(ProjectApplication app) {
ProjectApplicationVO appVo = new ProjectApplicationVO(); ProjectApplicationVO appVo = new ProjectApplicationVO();
BeanUtils.copyProperties(app, appVo); BeanUtils.copyProperties(app, appVo);
return appVo; return appVo;

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java Просмотреть файл

@@ -12,7 +12,7 @@ import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.datascope.model.DataScopeDTO; import com.hz.pm.api.datascope.model.DataScopeDTO;
import com.hz.pm.api.datascope.utils.DataScopeUtil; import com.hz.pm.api.datascope.utils.DataScopeUtil;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
@@ -68,7 +68,7 @@ public class AnnualPlanLibManage {
PROJECT_APPROVED, TO_BE_PURCHASED, ON_PILOT_RUNNING, ARCHIVED); PROJECT_APPROVED, TO_BE_PURCHASED, ON_PILOT_RUNNING, ARCHIVED);


public PageVo<AnnualPlanListItemVO> annulPlanLibList(ProjectListReq req) { public PageVo<AnnualPlanListItemVO> annulPlanLibList(ProjectListReq req) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
Integer isTemporaryAugment = req.getIsTemporaryAugment(); Integer isTemporaryAugment = req.getIsTemporaryAugment();
if (Objects.isNull(isTemporaryAugment)) { if (Objects.isNull(isTemporaryAugment)) {
throw new BizException("请传入是否临时增补标志!"); throw new BizException("请传入是否临时增补标志!");
@@ -185,7 +185,7 @@ public class AnnualPlanLibManage {
} }
param.setIsTemporaryAugment(isTemporaryAugment); param.setIsTemporaryAugment(isTemporaryAugment);
param.setStatusList(CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatus::getCode)); param.setStatusList(CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatus::getCode));
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
query.orderByDesc(Project::getAnnualPlanAddTime); query.orderByDesc(Project::getAnnualPlanAddTime);
List<Project> projects = projectService.list(query); List<Project> projects = projectService.list(query);


+ 8
- 19
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java Просмотреть файл

@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.TypeReferenceConst; import com.hz.pm.api.common.model.constant.TypeReferenceConst;
import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.BizUtils;
@@ -298,11 +298,8 @@ public class DeclaredRecordManage {
projectInfo.setSuperOrg(user.getMhUnitName()); projectInfo.setSuperOrg(user.getMhUnitName());
} }


ProjectProcessStageEnum instType = ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());
if (Objects.isNull(model)) {
throw BizException.wrap("找不到立项备案审批流程配置");
}
ProjectProcessType instType = ProjectProcessType.PROJECT_RECORD_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());


ProcessStartParamsVo params = new ProcessStartParamsVo(); ProcessStartParamsVo params = new ProcessStartParamsVo();
params.setUser(declaredProjectHelper.buildUser(user)); params.setUser(declaredProjectHelper.buildUser(user));
@@ -324,7 +321,7 @@ public class DeclaredRecordManage {
// 保存项目相关 // 保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(projectInfo, instanceId, user.getUserId(), Project newProj = projectLibManage.saveProjectInDeclared(projectInfo, instanceId, user.getUserId(),
ProjectStatus.NOT_APPROVED, ProjectStatus.DECLARED_APPROVED_TO_BE_RECORD, ProjectStatus.NOT_APPROVED, ProjectStatus.DECLARED_APPROVED_TO_BE_RECORD,
ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS);
ProjectProcessType.PROJECT_RECORD_APPROVAL_PROCESS);
if (Objects.nonNull(projectInfo.getDraftId())) { if (Objects.nonNull(projectInfo.getDraftId())) {
//如果是草稿箱提交 删除对应的草稿箱 //如果是草稿箱提交 删除对应的草稿箱
projectDraftService.removeById(projectInfo.getDraftId()); projectDraftService.removeById(projectInfo.getDraftId());
@@ -342,15 +339,14 @@ public class DeclaredRecordManage {
} }


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized String restartDeclaredRecord(DefaultDeclaredDTO req) {
public synchronized void restartDeclaredRecord(DefaultDeclaredDTO req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectDTO reqProj = req.getProjectInfo(); ProjectDTO reqProj = req.getProjectInfo();
Assert.notNull(reqProj.getId(), "提交失败,缺少项目ID!"); Assert.notNull(reqProj.getId(), "提交失败,缺少项目ID!");
reqProj.setBuildOrgCode(user.getMhUnitIdStr()); reqProj.setBuildOrgCode(user.getMhUnitIdStr());
reqProj.setBuildOrgName(user.getMhUnitName()); reqProj.setBuildOrgName(user.getMhUnitName());


Project oldProj = projectService.getById(reqProj.getId());
Assert.notNull(oldProj, "提交失败,此项目不存在!");
Project oldProj = projectService.getNoNull(reqProj.getId());


//项目名称去重 //项目名称去重
if (StrUtil.isNotBlank(reqProj.getProjectName()) && if (StrUtil.isNotBlank(reqProj.getProjectName()) &&
@@ -374,12 +370,8 @@ public class DeclaredRecordManage {
reqProj.setSuperOrg(user.getMhUnitName()); reqProj.setSuperOrg(user.getMhUnitName());
} }


ProjectProcessStageEnum instType = ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId());

if (Objects.isNull(model)) {
throw BizException.wrap("%s不存在", instType.getDesc());
}
ProjectProcessType instType = ProjectProcessType.PROJECT_RECORD_APPROVAL_PROCESS;
WflowModels model = processModelManage.getWflowModelsNoNull(instType, user.getMhUnitId());


VUtils.isTrue(!ProjectStatus.DECLARED_APPROVED_RECORD_FAILED.eq(oldProj.getStatus()) || VUtils.isTrue(!ProjectStatus.DECLARED_APPROVED_RECORD_FAILED.eq(oldProj.getStatus()) ||
!ProjectStatus.NOT_APPROVED.eq(oldProj.getStage())) !ProjectStatus.NOT_APPROVED.eq(oldProj.getStage()))
@@ -392,12 +384,10 @@ public class DeclaredRecordManage {
//把条件值给放入工作流 //把条件值给放入工作流
declaredProjectHelper.buildCondition(params, req); declaredProjectHelper.buildCondition(params, req);


// 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息
Project project = new Project(); Project project = new Project();
BeanUtils.copyProperties(reqProj, project); BeanUtils.copyProperties(reqProj, project);
Map<String, OrgInfoDTO> orgModelMap = declaredProjectHelper.buildOrgModelMap(user.getUserId(), project); Map<String, OrgInfoDTO> orgModelMap = declaredProjectHelper.buildOrgModelMap(user.getUserId(), project);
String instId = processInstanceService.startProcessLs(model, params, orgModelMap); String instId = processInstanceService.startProcessLs(model, params, orgModelMap);
log.info("立项备案成功 【{}】", instId);


//保存项目相关 //保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId, user.getUserId(), Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId, user.getUserId(),
@@ -407,7 +397,6 @@ public class DeclaredRecordManage {
//发送给第一个审批人消息 //发送给第一个审批人消息
noticeManage.sendFirstUser(newProj, model.getFormName(), instId, noticeManage.sendFirstUser(newProj, model.getFormName(), instId,
WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW);
return instId;
} }


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)


+ 35
- 62
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java Просмотреть файл

@@ -15,7 +15,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.hz.pm.api.common.compare.CompareUtils; import com.hz.pm.api.common.compare.CompareUtils;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.CommonConst; import com.hz.pm.api.common.model.constant.CommonConst;
import com.hz.pm.api.common.model.entity.ExcelExportWriter; import com.hz.pm.api.common.model.entity.ExcelExportWriter;
@@ -23,11 +23,11 @@ import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil;
import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.StrUtils; import com.hz.pm.api.common.util.StrUtils;
import com.hz.pm.api.dashboard.handle.ApplicationHandler;
import com.hz.pm.api.datascope.model.DataScopeDTO; import com.hz.pm.api.datascope.model.DataScopeDTO;
import com.hz.pm.api.datascope.utils.DataScopeUtil; import com.hz.pm.api.datascope.utils.DataScopeUtil;
import com.hz.pm.api.expert.model.entity.ExpertReview; import com.hz.pm.api.expert.model.entity.ExpertReview;
import com.hz.pm.api.expert.model.enumeration.ReviewTemplateTypeEnum; import com.hz.pm.api.expert.model.enumeration.ReviewTemplateTypeEnum;
import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO;
import com.hz.pm.api.expert.service.IExpertReviewService; import com.hz.pm.api.expert.service.IExpertReviewService;
import com.hz.pm.api.filemanage.model.entity.ProjectApplyBorrow; import com.hz.pm.api.filemanage.model.entity.ProjectApplyBorrow;
import com.hz.pm.api.filemanage.service.INdProjectApplyBorrowService; import com.hz.pm.api.filemanage.service.INdProjectApplyBorrowService;
@@ -40,6 +40,7 @@ import com.hz.pm.api.portrait.model.vo.TagVO;
import com.hz.pm.api.portrait.service.IProjectTagService; import com.hz.pm.api.portrait.service.IProjectTagService;
import com.hz.pm.api.portrait.service.ITagService; import com.hz.pm.api.portrait.service.ITagService;
import com.hz.pm.api.projectdeclared.manage.ConstructionManage; import com.hz.pm.api.projectdeclared.manage.ConstructionManage;
import com.hz.pm.api.projectdeclared.manage.ProjectReviewManage;
import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO; import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO;
import com.hz.pm.api.projectdeclared.model.entity.Operation; import com.hz.pm.api.projectdeclared.model.entity.Operation;
import com.hz.pm.api.projectdeclared.model.entity.PreInsAcceptancePerson; import com.hz.pm.api.projectdeclared.model.entity.PreInsAcceptancePerson;
@@ -52,7 +53,7 @@ import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil;
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil;
import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos;
import com.hz.pm.api.projectlib.handle.ProcessProgressHelper; import com.hz.pm.api.projectlib.handle.ProcessProgressHelper;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.constant.ProjectConstant; import com.hz.pm.api.projectlib.model.constant.ProjectConstant;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO; import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO;
import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
@@ -67,13 +68,6 @@ import com.hz.pm.api.projectlib.model.req.ProjectApplicationListReq;
import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.*; import com.hz.pm.api.projectlib.model.vo.*;
import com.hz.pm.api.projectlib.service.*; import com.hz.pm.api.projectlib.service.*;
import com.hz.pm.api.safety.model.entity.PersonSafetyInfo;
import com.hz.pm.api.safety.model.entity.SupplierSafetyQualification;
import com.hz.pm.api.safety.model.vo.PersonSafetyInfoVO;
import com.hz.pm.api.safety.model.vo.SafetyMonitorVO;
import com.hz.pm.api.safety.model.vo.SupplierSafetyQualificationVO;
import com.hz.pm.api.safety.service.IPersonSafetyInfoService;
import com.hz.pm.api.safety.service.ISupplierSafetyQualificationService;
import com.hz.pm.api.todocenter.model.req.ProcessDetailReq; import com.hz.pm.api.todocenter.model.req.ProcessDetailReq;
import com.hz.pm.api.todocenter.service.ITodoService; import com.hz.pm.api.todocenter.service.ITodoService;
import com.hz.pm.api.user.helper.MhUnitCache; import com.hz.pm.api.user.helper.MhUnitCache;
@@ -136,9 +130,6 @@ public class ProjectLibManage {
private final IOperationService operationService; private final IOperationService operationService;
private final IProjectTagService projectTagService; private final IProjectTagService projectTagService;
private final ITagService tagService; private final ITagService tagService;
private final ISupplierSafetyQualificationService supplierSafetyQualificationService;
private final IPersonSafetyInfoService personSafetyInfoService;
private final ApplicationHandler applicationHandler;
private final TaskService taskService; private final TaskService taskService;
private final UserInfoHelper userInfoHelper; private final UserInfoHelper userInfoHelper;
private final IExpertReviewService expertReviewService; private final IExpertReviewService expertReviewService;
@@ -147,9 +138,10 @@ public class ProjectLibManage {
private final MhUnitCache mhUnitCache; private final MhUnitCache mhUnitCache;
private final IMhProjectSchemaTargetDataService projectSchemaTargetDataService; private final IMhProjectSchemaTargetDataService projectSchemaTargetDataService;
private final IMhProjectService mhProjectService; private final IMhProjectService mhProjectService;
private final ProjectReviewManage projectReviewManage;


public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
Page<Project> page = projectService.page(req.page(), query); Page<Project> page = projectService.page(req.page(), query);


@@ -202,7 +194,7 @@ public class ProjectLibManage {
} }


public PageVo<ProjectLibListItemVO> projectLibListWithPermission(ProjectListReq req, UserFullInfoDTO user) { public PageVo<ProjectLibListItemVO> projectLibListWithPermission(ProjectListReq req, UserFullInfoDTO user) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
if (!buildProjectLibPermission(query, user)) { if (!buildProjectLibPermission(query, user)) {
return PageVo.empty(); return PageVo.empty();
} }
@@ -275,7 +267,7 @@ public class ProjectLibManage {
* @return \ * @return \
*/ */
public PageVo<ProjectLibListItemVO> projectLibListApprove(ProjectListReq req, UserFullInfoDTO user) { public PageVo<ProjectLibListItemVO> projectLibListApprove(ProjectListReq req, UserFullInfoDTO user) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
if (!buildProjectLibPermission(query, user)) { if (!buildProjectLibPermission(query, user)) {
return PageVo.empty(); return PageVo.empty();
} }
@@ -624,7 +616,7 @@ public class ProjectLibManage {
} }


public List<Project> projectList(ProjectListReq req) { public List<Project> projectList(ProjectListReq req) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
return projectService.list(query); return projectService.list(query);
} }


@@ -710,7 +702,7 @@ public class ProjectLibManage {
if (CollUtil.isNotEmpty(applicationIds)) { if (CollUtil.isNotEmpty(applicationIds)) {
List<ProjectCoreBusinessIndicators> coreBizs = projectCoreBusinessIndicatorsService.listByApplicationIds(applicationIds); List<ProjectCoreBusinessIndicators> coreBizs = projectCoreBusinessIndicatorsService.listByApplicationIds(applicationIds);
Map<Long, List<ProjectCoreBusinessIndicators>> coreBizMap = CollUtils.group(coreBizs, ProjectCoreBusinessIndicators::getApplicationId); Map<Long, List<ProjectCoreBusinessIndicators>> coreBizMap = CollUtils.group(coreBizs, ProjectCoreBusinessIndicators::getApplicationId);
retProjectDetail.setProjectApplications(CollUtils.convert(applications, app -> ProjectHelper.convertVOWithMap(app, coreBizMap)));
retProjectDetail.setProjectApplications(CollUtils.convert(applications, app -> ProjectManageUtil.to(app, coreBizMap)));
} }
retProjectDetail.setSystemReplaceInfos(getGovSystemReplaceInfos(project.getId())); retProjectDetail.setSystemReplaceInfos(getGovSystemReplaceInfos(project.getId()));
//审批信息 //审批信息
@@ -763,27 +755,9 @@ public class ProjectLibManage {
}); });
} }



List<ProjectAnnualPaymentPlan> annualPaymentPlans = projectAnnualPaymentPlanService.listByProjectId(project.getId()); List<ProjectAnnualPaymentPlan> annualPaymentPlans = projectAnnualPaymentPlanService.listByProjectId(project.getId());
retProjectDetail.setAnnualPaymentPlans(BeanUtil.copyToList(annualPaymentPlans, ProjectPaymentPlanDTO.class)); retProjectDetail.setAnnualPaymentPlans(BeanUtil.copyToList(annualPaymentPlans, ProjectPaymentPlanDTO.class));



SafetyMonitorVO safetyVo = new SafetyMonitorVO();
//查询风险监测
List<SupplierSafetyQualification> safetyQualifications = supplierSafetyQualificationService.listByProjectCode(projectCode);
if (CollUtil.isNotEmpty(safetyQualifications)) {
safetyVo.setSupplierSafetyQualification(BeanUtil.copyToList(safetyQualifications, SupplierSafetyQualificationVO.class));
}
retProjectDetail.setSafetyInfo(safetyVo);

List<PersonSafetyInfo> personSafetyInfos = personSafetyInfoService.listByProjectCode(projectCode);
if (CollUtil.isNotEmpty(personSafetyInfos)) {
safetyVo.setPersonSafetyInfo(BeanUtil.copyToList(personSafetyInfos, PersonSafetyInfoVO.class));
}

// 查询终验信息
retProjectDetail.setFinalIrsApps(applicationHandler.generateIrsApp(projectCode, project.getVersion()));

// 处理文件名 // 处理文件名
List<Long> fileIdList = new ArrayList<>(); List<Long> fileIdList = new ArrayList<>();
BizUtils.notBlank(retProjectDetail.getApprovedFile(), w -> fileIdList.add(Long.parseLong(w))); BizUtils.notBlank(retProjectDetail.getApprovedFile(), w -> fileIdList.add(Long.parseLong(w)));
@@ -802,6 +776,11 @@ public class ProjectLibManage {
retProjectDetail.setProposeAttach(finalReview.getOtherAdvice()); retProjectDetail.setProposeAttach(finalReview.getOtherAdvice());
retProjectDetail.setBaseReviewResults(finalReview.getReviewResult()); retProjectDetail.setBaseReviewResults(finalReview.getReviewResult());
} }

// 评审详情
ProjectReviewDetailVO projectReviewDetail = projectReviewManage.projectReviewDetail(project.getId());
retProjectDetail.setReviewDetail(projectReviewDetail);

return retProjectDetail; return retProjectDetail;
} }


@@ -809,19 +788,19 @@ public class ProjectLibManage {
/** /**
* 申报新项目时 保存项目信息和其它相关联的信息 * 申报新项目时 保存项目信息和其它相关联的信息
* *
* @param projectDto \
* @param instanceId \
* @param proj \
* @param instCode \
* @return \ * @return \
*/ */
public Project saveProjectInDeclared(ProjectDTO projectDto, String instanceId, Long userId) {
Project project = saveProjectNewVersion(projectDto, instanceId, userId, Boolean.FALSE);
public Project saveProjectInDeclared(ProjectDTO proj, String instCode, Long userId) {
Project project = saveProjectNewVersion(proj, instCode, userId, Boolean.FALSE);
//保存项目和实例的关系 //保存项目和实例的关系
ProjectInst projectInst = new ProjectInst(); ProjectInst projectInst = new ProjectInst();
projectInst.setProjectId(project.getId()); projectInst.setProjectId(project.getId());
projectInst.setInstCode(instanceId);
projectInst.setInstCode(instCode);
projectInst.setCreateOn(LocalDateTime.now()); projectInst.setCreateOn(LocalDateTime.now());
projectInst.setUpdateOn(LocalDateTime.now()); projectInst.setUpdateOn(LocalDateTime.now());
projectInst.setInstType(ProjectProcessStageEnum.COMPLIANCE_REVIEW.getCode());
projectInst.setInstType(ProjectProcessType.COMPLIANCE_REVIEW.getCode());
projectInstService.save(projectInst); projectInstService.save(projectInst);
return project; return project;
} }
@@ -829,19 +808,19 @@ public class ProjectLibManage {
/** /**
* 申报新项目时 保存项目信息和其它相关联的信息 * 申报新项目时 保存项目信息和其它相关联的信息
* *
* @param projectDto \
* @param instanceId \
* @param proj \
* @param instCode \
* @return \ * @return \
*/ */
public Project saveProjectInDeclared(ProjectDTO projectDto, String instanceId, Long userId,
public Project saveProjectInDeclared(ProjectDTO proj, String instCode, Long userId,
ProjectStatus stage, ProjectStatus status, ProjectStatus stage, ProjectStatus status,
ProjectProcessStageEnum processStage) {
Project project = saveProjectNewVersion(projectDto, instanceId, userId, Boolean.FALSE, stage, status);
ProjectProcessType instType) {
Project project = saveProjectNewVersion(proj, instCode, userId, Boolean.FALSE, stage, status);
//保存项目和实例的关系 //保存项目和实例的关系
ProjectInst projectInst = new ProjectInst(); ProjectInst projectInst = new ProjectInst();
projectInst.setProjectId(project.getId()); projectInst.setProjectId(project.getId());
projectInst.setInstCode(instanceId);
projectInst.setInstType(processStage.getCode());
projectInst.setInstCode(instCode);
projectInst.setInstType(instType.getCode());
projectInstService.save(projectInst); projectInstService.save(projectInst);
return project; return project;
} }
@@ -853,7 +832,7 @@ public class ProjectLibManage {
* @param instanceId \ * @param instanceId \
* @return \ * @return \
*/ */
public Project saveProjectNewVersion(ProjectDTO projectDto, String instanceId,
private Project saveProjectNewVersion(ProjectDTO projectDto, String instanceId,
Long userId, Boolean isContruct) { Long userId, Boolean isContruct) {
//流程启动之后 入库项目 重要业务信息 用于列表查询 展示 //流程启动之后 入库项目 重要业务信息 用于列表查询 展示
return saveProjectNewVersion(projectDto, instanceId, userId, isContruct, ProjectStatus.NOT_APPROVED, ProjectStatus.TO_BE_DECLARED); return saveProjectNewVersion(projectDto, instanceId, userId, isContruct, ProjectStatus.NOT_APPROVED, ProjectStatus.TO_BE_DECLARED);
@@ -936,8 +915,7 @@ public class ProjectLibManage {
* 新增一个新的项目 新的版本号 * 新增一个新的项目 新的版本号
*/ */
public Project newProjectWithVersion(ProjectDTO projectDto, Boolean isConstruct) { public Project newProjectWithVersion(ProjectDTO projectDto, Boolean isConstruct) {
Project oldProject = projectService.getById(projectDto.getId());
Assert.notNull(oldProject, "项目不存在!");
Project oldProject = projectService.getNoNull(projectDto.getId());
Project project = new Project(); Project project = new Project();
BeanUtil.copyProperties(oldProject, project, CopyOptions.create() BeanUtil.copyProperties(oldProject, project, CopyOptions.create()
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE));
@@ -981,9 +959,8 @@ public class ProjectLibManage {
} }


public Project saveProjectWithVersionAndStatus(ProjectDTO projectDto, Integer stageCode, Integer statusCode, Boolean isConstruct) { public Project saveProjectWithVersionAndStatus(ProjectDTO projectDto, Integer stageCode, Integer statusCode, Boolean isConstruct) {
Project oldProject = projectService.getById(projectDto.getId());
Project oldProject = projectService.getNoNull(projectDto.getId());
Project project = new Project(); Project project = new Project();
Assert.notNull(oldProject, "项目不存在");
BeanUtil.copyProperties(oldProject, project, CopyOptions.create() BeanUtil.copyProperties(oldProject, project, CopyOptions.create()
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE));
BeanUtil.copyProperties(projectDto, project, CopyOptions.create() BeanUtil.copyProperties(projectDto, project, CopyOptions.create()
@@ -1014,10 +991,8 @@ public class ProjectLibManage {


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Project saveProjectWithVersion(ProjectDTO projectDto, String instanceId, Integer instType, Boolean isConstruct) { public Project saveProjectWithVersion(ProjectDTO projectDto, String instanceId, Integer instType, Boolean isConstruct) {
Project oldProject = projectService.getById(projectDto.getId());
Project oldProject = projectService.getNoNull(projectDto.getId());
Project project = new Project(); Project project = new Project();
VUtils.isTrue(Objects.isNull(oldProject))
.throwMessage("项目不存在!");
BeanUtil.copyProperties(oldProject, project, CopyOptions.create() BeanUtil.copyProperties(oldProject, project, CopyOptions.create()
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE));
BeanUtil.copyProperties(projectDto, project, CopyOptions.create() BeanUtil.copyProperties(projectDto, project, CopyOptions.create()
@@ -1168,7 +1143,7 @@ public class ProjectLibManage {


Optional.ofNullable(applications).ifPresent(apps -> Optional.ofNullable(applications).ifPresent(apps ->
vo.setProjectApplications(CollUtils.convert(apps, vo.setProjectApplications(CollUtils.convert(apps,
ProjectHelper::convertVO)
ProjectManageUtil::to)
)); ));


return vo; return vo;
@@ -1186,7 +1161,7 @@ public class ProjectLibManage {
public void exportList(ProjectListReq param, HttpServletResponse response) { public void exportList(ProjectListReq param, HttpServletResponse response) {
param.setPageNumber(CommonConst.EXPORT_PAGE_NUMBER); param.setPageNumber(CommonConst.EXPORT_PAGE_NUMBER);
param.setPageSize(CommonConst.EXPORT_PAGE_SIZE); param.setPageSize(CommonConst.EXPORT_PAGE_SIZE);
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
List<Project> projects = projectService.list(query); List<Project> projects = projectService.list(query);


@@ -1440,9 +1415,7 @@ public class ProjectLibManage {
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();


//1.先判断下 项目存不存在 //1.先判断下 项目存不存在
Project project = projectService.getById(projectId);
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在");

Project project = projectService.getNoNull(projectId);


//2.要判断 项目在当前状态 有没有被驳回和退回过 //2.要判断 项目在当前状态 有没有被驳回和退回过
//当前项目状态流程的 实例 看看是不是有2个以上 有2个说明 有退回 驳回 //当前项目状态流程的 实例 看看是不是有2个以上 有2个说明 有退回 驳回


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/ProjectInst.java Просмотреть файл

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;


import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@@ -51,7 +51,7 @@ public class ProjectInst implements Serializable {
this.instType = instType.getCode(); this.instType = instType.getCode();
} }


public void setInstType(ProjectProcessStageEnum processStage) {
public void setInstType(ProjectProcessType processStage) {
this.instType = processStage.getCode(); this.instType = processStage.getCode();
} }




+ 4
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java Просмотреть файл

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.hz.pm.api.common.compare.Compare; import com.hz.pm.api.common.compare.Compare;
import com.hz.pm.api.dashboard.model.vo.PortraitProjectOutputVO; import com.hz.pm.api.dashboard.model.vo.PortraitProjectOutputVO;
import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO;
import com.hz.pm.api.portrait.model.vo.TagVO; import com.hz.pm.api.portrait.model.vo.TagVO;
import com.hz.pm.api.projectdeclared.model.vo.PurchaseFullInfoVO; import com.hz.pm.api.projectdeclared.model.vo.PurchaseFullInfoVO;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO; import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO;
@@ -399,6 +400,9 @@ public class ProjectDetailVO {
@ApiModelProperty("采购信息(标段)") @ApiModelProperty("采购信息(标段)")
private List<PurchaseFullInfoVO> purchaseDetails; private List<PurchaseFullInfoVO> purchaseDetails;


@ApiModelProperty("项目评审详情")
private ProjectReviewDetailVO reviewDetail;

@ApiModelProperty("版本号str") @ApiModelProperty("版本号str")
private String versionStr; private String versionStr;




+ 11
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java Просмотреть файл

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@@ -32,6 +33,12 @@ public interface IProjectService extends IService<Project> {
return Optional.ofNullable(ProjectIdCodeCacheUtil.get(projectId)); return Optional.ofNullable(ProjectIdCodeCacheUtil.get(projectId));
} }


default Project getNoNull(Long projectId) {
Project project = getById(projectId);
Assert.notNull(project, "项目不存在");
return project;
}

@Override @Override
default boolean save(Project entity) { default boolean save(Project entity) {
boolean state = IService.super.save(entity); boolean state = IService.super.save(entity);
@@ -58,8 +65,12 @@ public interface IProjectService extends IService<Project> {


Project getNewProject(Long projectId); Project getNewProject(Long projectId);


Project getNewestNoNull(Long projectId);

Project getProjectByCode(String projectCode); Project getProjectByCode(String projectCode);


Project getNoNull(String projectCode);

Page<ProjectPO> pageAllWithPermission(Page<ProjectPO> page, ProjectListReq req); Page<ProjectPO> pageAllWithPermission(Page<ProjectPO> page, ProjectListReq req);


Page<ProjectPO> pageLibWithPermission(Page<ProjectPO> page, ProjectListReq req); Page<ProjectPO> pageLibWithPermission(Page<ProjectPO> page, ProjectListReq req);


+ 12
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/impl/ProjectServiceImpl.java Просмотреть файл

@@ -14,6 +14,8 @@ import com.hz.pm.api.projectlib.service.IProjectService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;


import java.util.Objects;

/** /**
* <p> * <p>
* 服务实现类 * 服务实现类
@@ -32,6 +34,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
} }


@Override @Override
public Project getNewestNoNull(Long projectId) {
return Objects.requireNonNull(getNewProject(projectId), "项目不存在");
}

@Override
public Project getProjectByCode(String projectCode) { public Project getProjectByCode(String projectCode) {
return this.getOne(Wrappers.lambdaQuery(Project.class) return this.getOne(Wrappers.lambdaQuery(Project.class)
.eq(Project::getProjectCode, projectCode) .eq(Project::getProjectCode, projectCode)
@@ -40,6 +47,11 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
} }


@Override @Override
public Project getNoNull(String projectCode) {
return Objects.requireNonNull(getProjectByCode(projectCode), "项目不存在");
}

@Override
public Page<ProjectPO> pageAllWithPermission(Page<ProjectPO> page, ProjectListReq req) { public Page<ProjectPO> pageAllWithPermission(Page<ProjectPO> page, ProjectListReq req) {
return baseMapper.pageAllWithPermission(page, req); return baseMapper.pageAllWithPermission(page, req);
} }


+ 0
- 83
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/utils/ProjectVersionUtil.java Просмотреть файл

@@ -1,83 +0,0 @@
package com.hz.pm.api.projectlib.utils;

import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.CommonConst;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.ningdatech.basic.exception.BizException;
import com.wflow.workflow.bean.vo.ProcessProgressVo;
import com.wflow.workflow.enums.ProcessStatusEnum;
import com.wflow.workflow.service.ProcessInstanceService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
* 根据项目版本获取流程详情工具类
*
* @author CMM
* @since 2023/04/20 09:57
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class ProjectVersionUtil {

private final IProjectService projectService;
private final ProcessInstanceService processInstanceService;
private final IProjectInstService projectInstService;

/**
* 根据最新的项目ID获取临近项目版本的审核记录信息
*
* @param projectId
* @return
*/
public ProcessProgressVo getPreVerProcessInfo(Long projectId, InstTypeEnum instTypeEnum) {
Project project = projectService.getById(projectId);
if (Objects.isNull(project)) {
throw new BizException("当前项目不存在!");
}
String projectCode = project.getProjectCode();
if (StringUtils.isEmpty(projectCode)) {
throw new BizException("当前项目编号为空!");
}
// 获取相同项目编号的项目
List<Project> projectList = projectService.list(Wrappers.lambdaQuery(Project.class)
.eq(Project::getProjectCode, projectCode));
if (projectList.size() < CommonConst.VERSION_SIZE) {
throw new BizException("未发现该项目的历史版本!");
}

// 获取之前版本的项目
for (Project preProject : projectList) {
// 从项目流程实例关联表中查出实例详情
List<ProjectInst> projectInstList = projectInstService
.list(Wrappers.lambdaQuery(ProjectInst.class).eq(ProjectInst::getProjectId, preProject.getId())
.eq(ProjectInst::getInstType, instTypeEnum.getCode()));
if (CollUtil.isNotEmpty(projectInstList)) {
List<ProcessProgressVo> processProgressVoList = projectInstList.stream()
.map(p -> processInstanceService.getProgressInstanceDetail(null, p.getInstCode()))
.collect(Collectors.toList());
// 筛选出上个版本该类型审核流程通过的流程详情
List<ProcessProgressVo> instanceDetailList = processProgressVoList.stream()
.filter(p -> ProcessStatusEnum.APPROVED.getDesc().equals(p.getStatus()))
.collect(Collectors.toList());
if (CollUtil.isNotEmpty(instanceDetailList)) {
// 获取最后一个流程详情
return instanceDetailList.get(instanceDetailList.size() - 1);
}
}
}
return null;
}
}

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/contants/TaskContant.java Просмотреть файл

@@ -1,6 +1,6 @@
package com.hz.pm.api.scheduler.contants; package com.hz.pm.api.scheduler.contants;


import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;


/** /**
* @author PoffyZhang * @author PoffyZhang
@@ -13,8 +13,8 @@ public interface TaskContant {
class Wflow { class Wflow {


public static final Integer[] APPLY_PROCESS_TYPE_LIST = { public static final Integer[] APPLY_PROCESS_TYPE_LIST = {
ProjectProcessStageEnum.APPLY_DELAY.getCode(),
ProjectProcessStageEnum.APPLY_BORROW.getCode()
ProjectProcessType.APPLY_DELAY.getCode(),
ProjectProcessType.APPLY_BORROW.getCode()
}; };
} }




+ 6
- 7
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/TaskCreatedListener.java Просмотреть файл

@@ -1,9 +1,8 @@
package com.hz.pm.api.scheduler.listener; package com.hz.pm.api.scheduler.listener;


import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.helper.WflowHelper; import com.hz.pm.api.common.helper.WflowHelper;
import com.hz.pm.api.common.util.ThreadPoolUtil; import com.hz.pm.api.common.util.ThreadPoolUtil;
@@ -69,7 +68,7 @@ public class TaskCreatedListener implements FlowableEventListener {
String procDefId = entityEvent.getProcessDefinitionId(); String procDefId = entityEvent.getProcessDefinitionId();
String procInstId = entityEvent.getProcessInstanceId(); String procInstId = entityEvent.getProcessInstanceId();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId); WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
ProjectProcessStageEnum procType = ProjectProcessStageEnum.getNoNull(models.getProcessType());
ProjectProcessType procType = ProjectProcessType.getNoNull(models.getProcessType());
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity(); TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
UserFullInfoDTO assignee = userInfoHelper.getUserFullInfo(taskEntity.getAssignee()); UserFullInfoDTO assignee = userInfoHelper.getUserFullInfo(taskEntity.getAssignee());
if (assignee == null || StrUtil.isBlank(assignee.getMhUserId())) { if (assignee == null || StrUtil.isBlank(assignee.getMhUserId())) {
@@ -97,8 +96,8 @@ public class TaskCreatedListener implements FlowableEventListener {
.userName(assignee.getRealName()) .userName(assignee.getRealName())
.path("/toDoCenter/handleDuringExamine") .path("/toDoCenter/handleDuringExamine")
.build(); .build();
if (procType.equals(ProjectProcessStageEnum.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS)
|| procType.equals(ProjectProcessStageEnum.XC_APPROVAL_PROCESS)) {
if (procType.equals(ProjectProcessType.ACCEPTANCE_DECLARATION_APPROVAL_PROCESS)
|| procType.equals(ProjectProcessType.XC_APPROVAL_PROCESS)) {
PurchaseInst purchaseInst = purchaseInstService.getByProjectIdAndInstCode(paramObj.getProjectId(), procInstId); PurchaseInst purchaseInst = purchaseInstService.getByProjectIdAndInstCode(paramObj.getProjectId(), procInstId);
if (purchaseInst == null) { if (purchaseInst == null) {
return; return;
@@ -123,7 +122,7 @@ public class TaskCreatedListener implements FlowableEventListener {
FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event; FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event;
String procDefId = entityEvent.getProcessDefinitionId(); String procDefId = entityEvent.getProcessDefinitionId();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId); WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
ProjectProcessStageEnum procType = ProjectProcessStageEnum.getNoNull(models.getProcessType());
ProjectProcessType procType = ProjectProcessType.getNoNull(models.getProcessType());
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity(); TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
WflowHelper wflowHelper = SpringUtil.getBean(WflowHelper.class); WflowHelper wflowHelper = SpringUtil.getBean(WflowHelper.class);
String taskDefKey = taskEntity.getTaskDefinitionKey(); String taskDefKey = taskEntity.getTaskDefinitionKey();
@@ -148,7 +147,7 @@ public class TaskCreatedListener implements FlowableEventListener {
} }
} }


private MHTodoTypeEnum getMhTodoTypeEnum(ProjectProcessStageEnum procType) {
private MHTodoTypeEnum getMhTodoTypeEnum(ProjectProcessType procType) {
MHTodoTypeEnum todoType; MHTodoTypeEnum todoType;
switch (procType) { switch (procType) {
case XC_APPROVAL_PROCESS: case XC_APPROVAL_PROCESS:


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java Просмотреть файл

@@ -3,7 +3,7 @@ package com.hz.pm.api.sys.manage;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.wflow.bean.dto.WflowModelHistorysInsertDto; import com.wflow.bean.dto.WflowModelHistorysInsertDto;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
@@ -41,11 +41,11 @@ public class InitProcessManage {
return; return;
} }
List<String> strUnitIds = CollUtils.convert(unitIds, String::valueOf); List<String> strUnitIds = CollUtils.convert(unitIds, String::valueOf);
ProjectProcessStageEnum[] stages = ProjectProcessStageEnum.values();
ProjectProcessType[] stages = ProjectProcessType.values();
List<WflowModels> allModels = processModelService.list(Wrappers.lambdaQuery(WflowModels.class) List<WflowModels> allModels = processModelService.list(Wrappers.lambdaQuery(WflowModels.class)
.in(WflowModels::getRegionCode, strUnitIds)); .in(WflowModels::getRegionCode, strUnitIds));
Map<Integer, List<WflowModels>> modelsByType = CollUtils.group(allModels, WflowModels::getProcessType); Map<Integer, List<WflowModels>> modelsByType = CollUtils.group(allModels, WflowModels::getProcessType);
for (ProjectProcessStageEnum stage : stages) {
for (ProjectProcessType stage : stages) {
List<WflowModels> currModels = modelsByType.getOrDefault(stage.getCode(), Collections.emptyList()); List<WflowModels> currModels = modelsByType.getOrDefault(stage.getCode(), Collections.emptyList());
Map<String, WflowModels> modelsByUnitId = CollUtils.listToMap(currModels, WflowModels::getRegionCode); Map<String, WflowModels> modelsByUnitId = CollUtils.listToMap(currModels, WflowModels::getRegionCode);
for (String unitId : strUnitIds) { for (String unitId : strUnitIds) {


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/MenuManage.java Просмотреть файл

@@ -9,7 +9,7 @@ import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.common.model.entity.MenuTreeEntity; import com.hz.pm.api.common.model.entity.MenuTreeEntity;
import com.hz.pm.api.common.util.TreeUtil; import com.hz.pm.api.common.util.TreeUtil;
@@ -96,7 +96,7 @@ public class MenuManage {


Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST; Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST;
for(Integer processType : processTypeList){ for(Integer processType : processTypeList){
String formName = ProjectProcessStageEnum.getDesc(processType);
String formName = ProjectProcessType.getDesc(processType);
WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto(); WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto();


models.setGroupId(1); models.setGroupId(1);


+ 15
- 2
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/ProcessModelManage.java Просмотреть файл

@@ -3,7 +3,7 @@ package com.hz.pm.api.sys.manage;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.user.helper.MhUnitCache; import com.hz.pm.api.user.helper.MhUnitCache;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
@@ -37,7 +37,7 @@ public class ProcessModelManage {
* @param unitId 单位ID * @param unitId 单位ID
* @return 流程配置 * @return 流程配置
*/ */
public WflowModels getWflowModels(ProjectProcessStageEnum processStage, Long unitId) {
private WflowModels getWflowModels(ProjectProcessType processStage, Long unitId) {
List<Long> unitIdPaths = mhUnitCache.getUnitIdPaths(unitId); List<Long> unitIdPaths = mhUnitCache.getUnitIdPaths(unitId);
if (unitIdPaths.isEmpty()) { if (unitIdPaths.isEmpty()) {
log.error("该单位无法进行项目申报:{}", unitId); log.error("该单位无法进行项目申报:{}", unitId);
@@ -52,4 +52,17 @@ public class ProcessModelManage {
.last(orderSql)); .last(orderSql));
} }


/**
* 获取单位对应的流程配置
*
* @param processStage 流程类型
* @param unitId 单位ID
* @return 流程配置
*/
public WflowModels getWflowModelsNoNull(ProjectProcessType processStage, Long unitId) {
WflowModels wflowModels = getWflowModels(processStage, unitId);
Assert.notNull(wflowModels, "%s 不存在", processStage.getDesc());
return wflowModels;
}

} }

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java Просмотреть файл

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.WflowHelper; import com.hz.pm.api.common.helper.WflowHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.TypeReferenceConst; import com.hz.pm.api.common.model.constant.TypeReferenceConst;
@@ -194,7 +194,7 @@ public class HandlerManage {
case TO_BE_FIRST_INSPECTED: case TO_BE_FIRST_INSPECTED:
case ON_PILOT_RUNNING: case ON_PILOT_RUNNING:
case ON_FINALLY_INSPECTED: case ON_FINALLY_INSPECTED:
ProjectProcessStageEnum processStage = ProjectProcessStageEnum.getNoNull(instTypeEnum.getCode());
ProjectProcessType processStage = ProjectProcessType.getNoNull(instTypeEnum.getCode());
purchasePassedCallback(project, instanceId, processStage); purchasePassedCallback(project, instanceId, processStage);
break; break;
default: default:
@@ -264,7 +264,7 @@ public class HandlerManage {
purchaseService.updateById(purchase); purchaseService.updateById(purchase);
} }


private void purchasePassedCallback(Project project, String instanceId, ProjectProcessStageEnum processStage) {
private void purchasePassedCallback(Project project, String instanceId, ProjectProcessType processStage) {
// 查询所有的标段 // 查询所有的标段
List<Purchase> purchases = purchaseService.listByProjectId(project.getId()); List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
Map<Long, Purchase> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId); Map<Long, Purchase> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId);


+ 1
- 3
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/TodoCenterManage.java Просмотреть файл

@@ -1064,9 +1064,7 @@ public class TodoCenterManage {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String adjustmentAndHandle(AdjustHandleDTO dto) { public String adjustmentAndHandle(AdjustHandleDTO dto) {
ProjectDTO projectDto = dto.getProjectInfo(); ProjectDTO projectDto = dto.getProjectInfo();
Project projectInfo = projectService.getById(projectDto.getId());

Assert.notNull(projectInfo, "调整失败 此项目不存在!");
Project projectInfo = projectService.getNoNull(projectDto.getId());


//项目名称去重 //项目名称去重
//项目名称去重 //项目名称去重


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/workbench/converter/WorkbenchConverter.java Просмотреть файл

@@ -1,7 +1,7 @@
package com.hz.pm.api.workbench.converter; package com.hz.pm.api.workbench.converter;


import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
import com.hz.pm.api.projectdeclared.model.vo.DeclaredProjectStatisticsVO;
import com.hz.pm.api.todocenter.model.vo.ResToBeProcessedVO; import com.hz.pm.api.todocenter.model.vo.ResToBeProcessedVO;
import com.hz.pm.api.todocenter.model.vo.TodoVO; import com.hz.pm.api.todocenter.model.vo.TodoVO;
import com.hz.pm.api.workbench.model.vo.WorkbenchVO; import com.hz.pm.api.workbench.model.vo.WorkbenchVO;
@@ -19,7 +19,7 @@ public class WorkbenchConverter {
private WorkbenchConverter() { private WorkbenchConverter() {
} }


public static WorkbenchVO.DeclaredStatistics convert(DeclaredProjectStatisticsPO po, DeclaredProjectStatisticsPO lastYearPo) {
public static WorkbenchVO.DeclaredStatistics convert(DeclaredProjectStatisticsVO po, DeclaredProjectStatisticsVO lastYearPo) {
WorkbenchVO.DeclaredStatistics res = BeanUtil.copyProperties(po, WorkbenchVO.DeclaredStatistics.class); WorkbenchVO.DeclaredStatistics res = BeanUtil.copyProperties(po, WorkbenchVO.DeclaredStatistics.class);
if (Objects.nonNull(lastYearPo)) { if (Objects.nonNull(lastYearPo)) {
res.setDeclaredAmountLastYear(lastYearPo.getDeclaredAmount()); res.setDeclaredAmountLastYear(lastYearPo.getDeclaredAmount());


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java Просмотреть файл

@@ -119,8 +119,7 @@ public class WorkbenchManage {
WflowEarlyWarningRecords warningRecords = earlyWarningRecordsService.getById(recordId); WflowEarlyWarningRecords warningRecords = earlyWarningRecordsService.getById(recordId);
Assert.notNull(warningRecords, "催办失败,id不存在!"); Assert.notNull(warningRecords, "催办失败,id不存在!");
String projectCode = warningRecords.getProjectCode(); String projectCode = warningRecords.getProjectCode();
Project project = projectService.getProjectByCode(projectCode);
Assert.notNull(project, "催办失败,项目不存在!");
Project project = projectService.getNoNull(projectCode);
String batchEmployees = warningRecords.getBatchUserIds(); String batchEmployees = warningRecords.getBatchUserIds();
Integer ruleType = warningRecords.getRuleType(); Integer ruleType = warningRecords.getRuleType();
String areaCode = warningRecords.getAreaCode(); String areaCode = warningRecords.getAreaCode();


+ 2
- 2
hz-pm-api/src/test/java/com/hz/pm/api/sys/processDef/ProcessDefTest.java Просмотреть файл

@@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSON;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.hz.pm.api.AppTests; import com.hz.pm.api.AppTests;
import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.scheduler.contants.TaskContant; import com.hz.pm.api.scheduler.contants.TaskContant;
import com.hz.pm.api.sys.model.dto.RegionDTO; import com.hz.pm.api.sys.model.dto.RegionDTO;
@@ -70,7 +70,7 @@ public class ProcessDefTest extends AppTests {


Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST; Integer[] processTypeList = TaskContant.Wflow.APPLY_PROCESS_TYPE_LIST;
for(Integer processType : processTypeList){ for(Integer processType : processTypeList){
String formName = ProjectProcessStageEnum.getDesc(processType);
String formName = ProjectProcessType.getDesc(processType);
WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto(); WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto();


models.setGroupId(1); models.setGroupId(1);


Загрузка…
Отмена
Сохранить