|
|
@@ -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; |
|
|
|
} |
|
|
|
|
|
|
|
} |