operations = operationService.list(Wrappers.lambdaQuery(Operation.class)
.eq(Operation::getProjectCode, project.getProjectCode()));
diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java
index 8145690..7034b76 100644
--- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java
+++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectReviewManage.java
@@ -4,15 +4,17 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.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.*;
/**
*
@@ -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 pageReviewProject(ProjectListReq req) {
- LambdaQueryWrapper query = ProjectHelper.projectQuery(req);
+ UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
+ LambdaQueryWrapper 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 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 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 query, UserFullInfoDTO user) {
+ boolean queryState = true;
+ Optional 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 childUnitIds = mhUnitCache.getViewChildIdsRecursion(user.getMhUnitId());
+ List 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;
}
}
diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
index c8321c3..8206e81 100644
--- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
+++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
@@ -15,7 +15,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.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 projectLibList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
Assert.notNull(user, "获取登录用户失败!");
- LambdaQueryWrapper query = ProjectHelper.projectQuery(req);
+ LambdaQueryWrapper 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 query = ProjectHelper.projectQuery(param);
+ LambdaQueryWrapper 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();
diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java
index f4c7705..3595b85 100644
--- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java
+++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.java
@@ -1,7 +1,7 @@
package com.hz.pm.api.projectdeclared.mapper;
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);
}
diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml
index f7eb0f7..f384d72 100644
--- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml
+++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/DeclaredStatisticsMapper.xml
@@ -2,7 +2,7 @@
-