@@ -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("流程实例类型")); | |||
} | |||
@@ -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(); | |||
} | |||
} |
@@ -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); | |||
@@ -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; | |||
@@ -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(); | |||
@@ -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(); | |||
@@ -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(); | |||
@@ -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(); | |||
@@ -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); | |||
} | |||
@@ -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); | |||
} | |||
@@ -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); | |||
@@ -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,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); | |||
@@ -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())); | |||
@@ -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,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(); | |||
@@ -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,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,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; | |||
/** | |||
@@ -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; |
@@ -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(); | |||
} | |||
@@ -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; |
@@ -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,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; | |||
/** | |||
@@ -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,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; | |||
@@ -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; |
@@ -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); | |||
@@ -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) | |||
@@ -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个说明 有退回 驳回 | |||
@@ -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(); | |||
} | |||
@@ -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; | |||
@@ -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); | |||
@@ -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); | |||
} | |||
@@ -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; | |||
} | |||
} |
@@ -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() | |||
}; | |||
} | |||
@@ -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,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) { | |||
@@ -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); | |||
@@ -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; | |||
} | |||
} |
@@ -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); | |||
@@ -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()); | |||
//项目名称去重 | |||
//项目名称去重 | |||
@@ -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()); | |||
@@ -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(); | |||
@@ -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); | |||