Procházet zdrojové kódy

项目查询判空

tags/24080901
WendyYang před 10 měsíci
rodič
revize
bfd25c36eb
45 změnil soubory, kde provedl 282 přidání a 460 odebrání
  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 Zobrazit soubor

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

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

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

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


+ 0
- 58
hz-pm-api/src/main/java/com/hz/pm/api/dashboard/handle/ApplicationHandler.java Zobrazit soubor

@@ -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 Zobrazit soubor

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.model.constant.BizConst;
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.wflow.bean.entity.WflowModels;
import com.wflow.contants.HisProInsEndActId;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.process.FileBasicInfo;
import com.wflow.workflow.bean.process.ProcessComment;
@@ -245,8 +244,7 @@ public class ProjectFileManage {

@Transactional(rollbackFor = Exception.class)
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())) {
@@ -254,13 +252,9 @@ public class ProjectFileManage {
}

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

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

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

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


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java Zobrazit soubor

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.RegionConst;
import com.hz.pm.api.gov.contants.BizProjectContant;


+ 2
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/OrgSelfAppraisalManage.java Zobrazit soubor

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

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


+ 2
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/PerformanceAppraisalPlanManage.java Zobrazit soubor

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

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);

@@ -492,8 +491,7 @@ public class PerformanceAppraisalPlanManage {
Integer completeSelfDays = editDTO.getCompleteSelfDays();
List<AppraisalProjectDTO> projects = editDTO.getProjects();
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);
PerformanceAppraisalProject pap = new PerformanceAppraisalProject();


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/ReAppraisalManage.java Zobrazit soubor

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

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


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/VerifyManage.java Zobrazit soubor

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

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


+ 11
- 15
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java Zobrazit soubor

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.model.constant.BizConst;
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.ProjectContractListVO;
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.ProjectAnnualPaymentPlan;
import com.hz.pm.api.projectlib.model.entity.ProjectInst;
@@ -104,7 +104,7 @@ public class ConstructionManage {
*/
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
//建设中状态
query.isNull(Project::getContractAmount);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
@@ -149,7 +149,7 @@ public class ConstructionManage {
*/
public PageVo<ProjectContractListVO> projectListPerfect(ProjectListReq req) {
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::getBuildOrgCode, user.getMhUnitIdStr());
@@ -201,7 +201,7 @@ public class ConstructionManage {
}

public void exportList(HttpServletResponse response, ProjectListReq param) {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态
query.isNull(Project::getContractAmount);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
@@ -281,8 +281,7 @@ public class ConstructionManage {
public synchronized String submitPurchaseContract(SubmitConstructionReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
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()) ||
@@ -344,7 +343,7 @@ public class ConstructionManage {
if (projectIds.isEmpty()) {
return PageVo.empty();
}
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
query.in(Project::getId, projectIds);
query.eq(Project::getStage, ProjectStatus.PROJECT_APPROVED.getCode());
query.eq(Project::getNewest, Boolean.TRUE);
@@ -412,7 +411,7 @@ public class ConstructionManage {
public void exportPreList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态
//只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -562,12 +561,9 @@ public class ConstructionManage {
}

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

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

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


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectHelper.java Zobrazit soubor

@@ -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.projectdeclared.model.dto.DefaultDeclaredDTO;
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.projectlib.model.dto.ProjectDTO;
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);
}

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


+ 8
- 17
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java Zobrazit soubor

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.util.ExcelDownUtil;
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.vo.ProjectDraftVO;
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.model.dto.GovSystemReplaceInfoDTO;
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.NdDateUtils;
import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService;
@@ -103,11 +102,8 @@ public class DeclaredProjectManage {
public synchronized String startTheProcess(DefaultDeclaredDTO req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();

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

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

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

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

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

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

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

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

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


+ 11
- 40
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DelayedApplyManage.java Zobrazit soubor

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.model.constant.BizConst;
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.DelayedApplyDTO;
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.model.entity.Project;
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.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.status.ProjectStatus;
import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
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.wflow.bean.entity.WflowModels;
import com.wflow.contants.HisProInsEndActId;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService;
@@ -97,7 +96,7 @@ public class DelayedApplyManage {
*/
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
// 待终验 并且已经过期
// 只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
@@ -167,7 +166,7 @@ public class DelayedApplyManage {
public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
// 待终验
// 只能看自己单位的
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)
public synchronized String startDelayedApplyProcess(DelayedApplyDTO dto) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
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()) ||
@@ -256,13 +231,9 @@ public class DelayedApplyManage {
|| project.getPlanAcceptanceTime().isAfter(LocalDateTime.now()))
.throwMessage("当前项目还未过期验收");

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

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

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


+ 7
- 11
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java Zobrazit soubor

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.statemachine.util.ProjectStateMachineUtil;
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.IPurchaseInstService;
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.ProjectAnnualPaymentPlan;
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.NdDateUtils;
import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService;
@@ -106,7 +105,7 @@ public class FinalAcceptanceManage {
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {

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);
@@ -177,7 +176,7 @@ public class FinalAcceptanceManage {

public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待终验
//只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -249,11 +248,8 @@ public class FinalAcceptanceManage {
@Transactional(rollbackFor = Exception.class)
public synchronized String startProcess(SubmitFinallyInspectedReq req) {
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());
Map<Long, Purchase> purchaseMap = CollUtils.listToMap(purchases, Purchase::getId);
@@ -292,7 +288,7 @@ public class FinalAcceptanceManage {
// 判断是否所有标段已经进行过终验申报 无论是否通过
LambdaQueryWrapper<PurchaseInst> purchaseInstQuery = Wrappers.lambdaQuery(PurchaseInst.class)
.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());
List<PurchaseInst> currPurchaseInstList = purchaseInstService.list(purchaseInstQuery);
Set<Long> finalInspectedBidIds = CollUtils.fieldSet(currPurchaseInstList, PurchaseInst::getBidId);


+ 1
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java Zobrazit soubor

@@ -53,9 +53,7 @@ public class OperationManage {
* @return \
*/
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)
.eq(Operation::getProjectCode, project.getProjectCode()));



+ 55
- 31
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java Zobrazit soubor

@@ -4,15 +4,17 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.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.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.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.ProjectInst;
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.IProjectService;
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.UserInfoDetails;
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.transaction.annotation.Transactional;

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

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

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

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

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

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

ProjectInst projectInst = new ProjectInst();
projectInst.setInstCode(instanceId);
projectInst.setInstType(ProjectProcessStageEnum.PROJECT_REVIEW);
projectInst.setInstType(ProjectProcessType.PROJECT_REVIEW);
projectInst.setProjectId(req.getProjectId());
projectInstService.save(projectInst);
projectStateMachineUtil.pass(project);
@@ -123,15 +121,17 @@ public class ProjectReviewManage {
* @return
*/
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,
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);
long total;
if ((total = page.getTotal()) == 0) {
@@ -142,17 +142,41 @@ public class ProjectReviewManage {
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 {
//否则 只能看到 非预审 并且
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 Zobrazit soubor

@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.statemachine.event.AbstractStateChangeEvent;
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.utils.ProjectIdCodeCacheUtil;
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.ProjectInst;
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.service.FileService;
import com.wflow.bean.entity.WflowModels;
import com.wflow.exception.BusinessException;
import com.wflow.workflow.bean.dto.OrgInfoDTO;
import com.wflow.workflow.bean.vo.ProcessStartParamsVo;
import com.wflow.workflow.service.ProcessInstanceService;
@@ -176,7 +175,7 @@ public class PurchaseManage {
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
Assert.notNull(user, "获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(req);
//只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitIdStr());
//待采购状态
@@ -235,7 +234,7 @@ public class PurchaseManage {
public void exportList(HttpServletResponse response, ProjectListReq param) {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
LambdaQueryWrapper<Project> query = ProjectManageUtil.projectQuery(param);
//待采购状态
//只能看自己单位的
query.eq(Project::getBuildOrgCode, user.getMhUnitId());
@@ -297,8 +296,7 @@ public class PurchaseManage {
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
Long projectId = dto.getProjectId();
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())
@@ -347,8 +345,7 @@ public class PurchaseManage {
public synchronized void submitPurchaseNotice(SubmitPurchaseNoticeReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
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())
@@ -563,11 +560,8 @@ public class PurchaseManage {
}
});
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();
for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId();
@@ -603,7 +597,7 @@ public class PurchaseManage {
private void saveProjectPurchaseInstCode(Long bidId,
String instanceId,
Long projectId,
ProjectProcessStageEnum instType) {
ProjectProcessType instType) {
// 保存标段实列关系
PurchaseInst purchaseInst = new PurchaseInst();
purchaseInst.setBidId(bidId);
@@ -629,11 +623,9 @@ public class PurchaseManage {
}
}
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();
for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId();
@@ -676,11 +668,9 @@ public class PurchaseManage {
}
}
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();
for (Purchase purchase : purchases) {
Long projectId = purchase.getProjectId();


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java Zobrazit soubor

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

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;

/**
@@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Param;
*/
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 Zobrazit soubor

@@ -2,7 +2,7 @@
<!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">

<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
count(0) totalNum,
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
</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
count(0) totalNum,
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 Zobrazit soubor

@@ -1,6 +1,6 @@
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;

/**


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 Zobrazit soubor

@@ -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 io.swagger.annotations.ApiModel;

+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PurchaseInst.java Zobrazit soubor

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

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 lombok.Data;

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

public void setInstType(ProjectProcessStageEnum processStage) {
public void setInstType(ProjectProcessType processStage) {
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 Zobrazit soubor

@@ -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 lombok.Data;
@@ -12,7 +12,7 @@ import java.math.BigDecimal;
* @Author PoffyZhang
*/
@Data
public class DeclaredProjectStatisticsPO {
public class DeclaredProjectStatisticsVO {

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

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IDeclaredStatisticsService.java Zobrazit soubor

@@ -1,6 +1,6 @@
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>
@@ -12,7 +12,7 @@ import com.hz.pm.api.projectdeclared.model.po.DeclaredProjectStatisticsPO;
*/
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 Zobrazit soubor

@@ -1,6 +1,6 @@
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;

/**


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/DeclaredStatisticsServiceImpl.java Zobrazit soubor

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

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 lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -27,7 +27,7 @@ public class DeclaredStatisticsServiceImpl implements IDeclaredStatisticsService
* @return
*/
@Override
public DeclaredProjectStatisticsPO getOrgStatistics(String orgCode, Integer year) {
public DeclaredProjectStatisticsVO getOrgStatistics(String orgCode, Integer year) {
return declaredStatisticsMapper.getOrgStatistics(orgCode, year);
}

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

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/ProjectReviewServiceImpl.java Zobrazit soubor

@@ -1,6 +1,6 @@
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.service.IProjectReviewService;
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 Zobrazit soubor

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

/**
* <p>
* ProjectHelper
* ProjectHelperUtil
* </p>
*
* @author WendyYang
* @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 查询条件
* @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())
.like(StrUtil.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName())
.eq(req.getProjectType() != null, Project::getProjectType, req.getProjectType())
@@ -63,6 +70,17 @@ public class ProjectHelper {
//已添加评价计划的项目code
.notIn(CollUtil.isNotEmpty(req.getProjectCodes()), Project::getProjectCode, req.getProjectCodes())
.orderByDesc(Project::getUpdateOn);
}

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

@@ -72,8 +90,8 @@ public class ProjectHelper {
* @param app
* @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();
BeanUtils.copyProperties(app, appVo);
if (coreBizMap.containsKey(app.getId())) {
@@ -83,7 +101,7 @@ public class ProjectHelper {
return appVo;
}

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

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java Zobrazit soubor

@@ -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.datascope.model.DataScopeDTO;
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.entity.Project;
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);

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


+ 8
- 19
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java Zobrazit soubor

@@ -11,7 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.model.constant.TypeReferenceConst;
import com.hz.pm.api.common.util.BizUtils;
@@ -298,11 +298,8 @@ public class DeclaredRecordManage {
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();
params.setUser(declaredProjectHelper.buildUser(user));
@@ -324,7 +321,7 @@ public class DeclaredRecordManage {
// 保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(projectInfo, instanceId, user.getUserId(),
ProjectStatus.NOT_APPROVED, ProjectStatus.DECLARED_APPROVED_TO_BE_RECORD,
ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS);
ProjectProcessType.PROJECT_RECORD_APPROVAL_PROCESS);
if (Objects.nonNull(projectInfo.getDraftId())) {
//如果是草稿箱提交 删除对应的草稿箱
projectDraftService.removeById(projectInfo.getDraftId());
@@ -342,15 +339,14 @@ public class DeclaredRecordManage {
}

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

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

//项目名称去重
if (StrUtil.isNotBlank(reqProj.getProjectName()) &&
@@ -374,12 +370,8 @@ public class DeclaredRecordManage {
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()) ||
!ProjectStatus.NOT_APPROVED.eq(oldProj.getStage()))
@@ -392,12 +384,10 @@ public class DeclaredRecordManage {
//把条件值给放入工作流
declaredProjectHelper.buildCondition(params, req);

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

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

@Transactional(rollbackFor = Exception.class)


+ 35
- 62
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java Zobrazit soubor

@@ -15,7 +15,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.hz.pm.api.common.compare.CompareUtils;
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.model.constant.CommonConst;
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.ExcelDownUtil;
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.utils.DataScopeUtil;
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.vo.ProjectReviewDetailVO;
import com.hz.pm.api.expert.service.IExpertReviewService;
import com.hz.pm.api.filemanage.model.entity.ProjectApplyBorrow;
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.ITagService;
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.entity.Operation;
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.projectlib.entity.ProjectGovSystemReplaceInfos;
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.dto.GovSystemReplaceInfoDTO;
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.vo.*;
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.service.ITodoService;
import com.hz.pm.api.user.helper.MhUnitCache;
@@ -136,9 +130,6 @@ public class ProjectLibManage {
private final IOperationService operationService;
private final IProjectTagService projectTagService;
private final ITagService tagService;
private final ISupplierSafetyQualificationService supplierSafetyQualificationService;
private final IPersonSafetyInfoService personSafetyInfoService;
private final ApplicationHandler applicationHandler;
private final TaskService taskService;
private final UserInfoHelper userInfoHelper;
private final IExpertReviewService expertReviewService;
@@ -147,9 +138,10 @@ public class ProjectLibManage {
private final MhUnitCache mhUnitCache;
private final IMhProjectSchemaTargetDataService projectSchemaTargetDataService;
private final IMhProjectService mhProjectService;
private final ProjectReviewManage projectReviewManage;

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

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

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

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

@@ -710,7 +702,7 @@ public class ProjectLibManage {
if (CollUtil.isNotEmpty(applicationIds)) {
List<ProjectCoreBusinessIndicators> coreBizs = projectCoreBusinessIndicatorsService.listByApplicationIds(applicationIds);
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()));
//审批信息
@@ -763,27 +755,9 @@ public class ProjectLibManage {
});
}


List<ProjectAnnualPaymentPlan> annualPaymentPlans = projectAnnualPaymentPlanService.listByProjectId(project.getId());
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<>();
BizUtils.notBlank(retProjectDetail.getApprovedFile(), w -> fileIdList.add(Long.parseLong(w)));
@@ -802,6 +776,11 @@ public class ProjectLibManage {
retProjectDetail.setProposeAttach(finalReview.getOtherAdvice());
retProjectDetail.setBaseReviewResults(finalReview.getReviewResult());
}

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

return retProjectDetail;
}

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

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();
Assert.notNull(oldProject, "项目不存在");
BeanUtil.copyProperties(oldProject, project, CopyOptions.create()
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE));
BeanUtil.copyProperties(projectDto, project, CopyOptions.create()
@@ -1014,10 +991,8 @@ public class ProjectLibManage {

@Transactional(rollbackFor = Exception.class)
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();
VUtils.isTrue(Objects.isNull(oldProject))
.throwMessage("项目不存在!");
BeanUtil.copyProperties(oldProject, project, CopyOptions.create()
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE));
BeanUtil.copyProperties(projectDto, project, CopyOptions.create()
@@ -1168,7 +1143,7 @@ public class ProjectLibManage {

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

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

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

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

Project project = projectService.getNoNull(projectId);

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


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/ProjectInst.java Zobrazit soubor

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -51,7 +51,7 @@ public class ProjectInst implements Serializable {
this.instType = instType.getCode();
}

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



+ 4
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java Zobrazit soubor

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

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

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



+ 11
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java Zobrazit soubor

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

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

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

Project getNewProject(Long projectId);

Project getNewestNoNull(Long projectId);

Project getProjectByCode(String projectCode);

Project getNoNull(String projectCode);

Page<ProjectPO> pageAllWithPermission(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 Zobrazit soubor

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

import java.util.Objects;

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

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

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

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

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


+ 0
- 83
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/utils/ProjectVersionUtil.java Zobrazit soubor

@@ -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 Zobrazit soubor

@@ -1,6 +1,6 @@
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
@@ -13,8 +13,8 @@ public interface TaskContant {
class Wflow {

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 Zobrazit soubor

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

import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;
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.WflowHelper;
import com.hz.pm.api.common.util.ThreadPoolUtil;
@@ -69,7 +68,7 @@ public class TaskCreatedListener implements FlowableEventListener {
String procDefId = entityEvent.getProcessDefinitionId();
String procInstId = entityEvent.getProcessInstanceId();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
ProjectProcessStageEnum procType = ProjectProcessStageEnum.getNoNull(models.getProcessType());
ProjectProcessType procType = ProjectProcessType.getNoNull(models.getProcessType());
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
UserFullInfoDTO assignee = userInfoHelper.getUserFullInfo(taskEntity.getAssignee());
if (assignee == null || StrUtil.isBlank(assignee.getMhUserId())) {
@@ -97,8 +96,8 @@ public class TaskCreatedListener implements FlowableEventListener {
.userName(assignee.getRealName())
.path("/toDoCenter/handleDuringExamine")
.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);
if (purchaseInst == null) {
return;
@@ -123,7 +122,7 @@ public class TaskCreatedListener implements FlowableEventListener {
FlowableEngineEntityEvent entityEvent = (FlowableEngineEntityEvent) event;
String procDefId = entityEvent.getProcessDefinitionId();
WflowModelHistorys models = processModelHistorysService.getByProcessDefId(procDefId);
ProjectProcessStageEnum procType = ProjectProcessStageEnum.getNoNull(models.getProcessType());
ProjectProcessType procType = ProjectProcessType.getNoNull(models.getProcessType());
TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
WflowHelper wflowHelper = SpringUtil.getBean(WflowHelper.class);
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;
switch (procType) {
case XC_APPROVAL_PROCESS:


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/InitProcessManage.java Zobrazit soubor

@@ -3,7 +3,7 @@ package com.hz.pm.api.sys.manage;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
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.wflow.bean.dto.WflowModelHistorysInsertDto;
import com.wflow.bean.entity.WflowModels;
@@ -41,11 +41,11 @@ public class InitProcessManage {
return;
}
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)
.in(WflowModels::getRegionCode, strUnitIds));
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());
Map<String, WflowModels> modelsByUnitId = CollUtils.listToMap(currModels, WflowModels::getRegionCode);
for (String unitId : strUnitIds) {


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/MenuManage.java Zobrazit soubor

@@ -9,7 +9,7 @@ import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils;
import com.hz.pm.api.common.model.constant.BizConst;
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.model.entity.MenuTreeEntity;
import com.hz.pm.api.common.util.TreeUtil;
@@ -96,7 +96,7 @@ public class MenuManage {

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

models.setGroupId(1);


+ 15
- 2
hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/ProcessModelManage.java Zobrazit soubor

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

@@ -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.Wrappers;
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.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.TypeReferenceConst;
@@ -194,7 +194,7 @@ public class HandlerManage {
case TO_BE_FIRST_INSPECTED:
case ON_PILOT_RUNNING:
case ON_FINALLY_INSPECTED:
ProjectProcessStageEnum processStage = ProjectProcessStageEnum.getNoNull(instTypeEnum.getCode());
ProjectProcessType processStage = ProjectProcessType.getNoNull(instTypeEnum.getCode());
purchasePassedCallback(project, instanceId, processStage);
break;
default:
@@ -264,7 +264,7 @@ public class HandlerManage {
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());
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 Zobrazit soubor

@@ -1064,9 +1064,7 @@ public class TodoCenterManage {
@Transactional(rollbackFor = Exception.class)
public String adjustmentAndHandle(AdjustHandleDTO dto) {
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 Zobrazit soubor

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

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.TodoVO;
import com.hz.pm.api.workbench.model.vo.WorkbenchVO;
@@ -19,7 +19,7 @@ public class 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);
if (Objects.nonNull(lastYearPo)) {
res.setDeclaredAmountLastYear(lastYearPo.getDeclaredAmount());


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java Zobrazit soubor

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


+ 2
- 2
hz-pm-api/src/test/java/com/hz/pm/api/sys/processDef/ProcessDefTest.java Zobrazit soubor

@@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSON;
import com.ningdatech.basic.exception.BizException;
import com.hz.pm.api.AppTests;
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.scheduler.contants.TaskContant;
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;
for(Integer processType : processTypeList){
String formName = ProjectProcessStageEnum.getDesc(processType);
String formName = ProjectProcessType.getDesc(processType);
WflowModelHistorysInsertDto models = new WflowModelHistorysInsertDto();

models.setGroupId(1);


Načítá se…
Zrušit
Uložit