瀏覽代碼

modify:

1. 年度计划查询条件修改;
tags/24093001
WendyYang 4 月之前
父節點
當前提交
c836dacacf
共有 1 個檔案被更改,包括 14 行新增48 行删除
  1. +14
    -48
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java

+ 14
- 48
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java 查看文件

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.exception.ReturnException;
import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.CommonConst;
import com.hz.pm.api.common.model.constant.ExistsSqlConst;
import com.hz.pm.api.common.model.entity.ExcelExportWriter;
@@ -14,12 +13,9 @@ import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
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.datascope.model.DataScopeDTO;
import com.hz.pm.api.datascope.utils.DataScopeUtil;
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;
import com.hz.pm.api.projectlib.model.req.ProjectApprovedReq;
import com.hz.pm.api.projectlib.model.req.ProjectIdReq;
import com.hz.pm.api.projectlib.model.req.ProjectListReq;
@@ -29,9 +25,8 @@ import com.hz.pm.api.projectlib.model.vo.AnnualPlanProgressStatisticsVO;
import com.hz.pm.api.projectlib.service.IProjectApplicationService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.todocenter.constant.TodoCenterConst;
import com.hz.pm.api.user.helper.MhUnitCache;
import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.hz.pm.api.user.util.LoginUserUtil;
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper;
import com.hz.pm.api.user.helper.MhUnitQueryAuthHelper.UnitQueryState;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils;
@@ -45,7 +40,6 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

import static com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus.ON_ANNUAL_PLAN;

@@ -63,17 +57,15 @@ import static com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus.ON
public class AnnualPlanLibManage {

private final IProjectService projectService;
private final MhUnitCache mhUnitCache;
private final IProjectApplicationService applicationService;
private final ProjectStateMachineUtil stateMachine;
private final UserInfoHelper userInfoHelper;
private final MhUnitQueryAuthHelper mhUnitQueryAuthHelper;


public AnnualPlanProgressStatisticsVO annualProgressStatistics(ProjectListReq req) {
req.setIsStartDeclaredProject(null);
LambdaQueryWrapper<Project> query = ProjectManageUtil.initQuery();
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
if (!projectQueryPermission(query, user)) {
if (!projectQueryPermission(req.clearBuildOrgCode(), query)) {
return null;
}
ProjectManageUtil.projectQuery(query, req);
@@ -92,8 +84,7 @@ public class AnnualPlanLibManage {

public PageVo<AnnualPlanListItemVO> annulPlanLibList(ProjectListReq req) {
LambdaQueryWrapper<Project> query = ProjectManageUtil.initQuery();
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
if (!projectQueryPermission(query, user)) {
if (!projectQueryPermission(req.clearBuildOrgCode(), query)) {
return PageVo.empty();
}
ProjectManageUtil.projectQuery(query, req);
@@ -233,41 +224,16 @@ public class AnnualPlanLibManage {
*
* @param query \
*/
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 {
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;
}
private boolean projectQueryPermission(Long buildOrgCode, LambdaQueryWrapper<Project> query) {
UnitQueryState state = mhUnitQueryAuthHelper.listCanViewUnitIds(buildOrgCode);
if (!state.isState()) {
return Boolean.FALSE;
}
return queryState;
BizUtils.notEmpty(state.getUnitIds(), w -> {
List<String> unitIdStrList = CollUtils.convert(w, String::valueOf);
query.in(Project::getBuildOrgCode, unitIdStrList);
});
return Boolean.TRUE;
}

}

Loading…
取消
儲存