@ -180,18 +180,23 @@ public class ServiceApplicationsService {
//根据用户角色的查询数据范围来查询数据
//根据用户角色的查询数据范围来查询数据
RequestUser requestUser = AdminRequestUtil . getRequestUser ( ) ;
RequestUser requestUser = AdminRequestUtil . getRequestUser ( ) ;
List < RoleVO > roleIdList = roleEmployeeService . getRoleIdList ( requestUser . getUserId ( ) ) ;
List < RoleVO > roleIdList = roleEmployeeService . getRoleIdList ( requestUser . getUserId ( ) ) ;
String roleCode = roleIdList . get ( 0 ) . getRoleCode ( ) ;
String roleCode = AdminRequestUtil . getRoleCode ( roleIdList ) ;
// 检查角色类型
// 检查角色类型
boolean isAssociationRole = UserTypeEnum . CEO . getDesc ( ) . equals ( roleCode ) ;
boolean isAssociationRole = AdminRequestUtil . isAssociationRole ( roleIdList ) ;
boolean isFirmAdmin Role = UserTypeEnum . CTO . getDesc ( ) . equals ( roleCode ) ; // 律所管理员
boolean isFirmRole = AdminRequestUtil . isFirmRole ( roleIdList ) ; // 律所主任或行政
if ( ! UserTypeEnum . Admin . getDesc ( ) . equals ( roleCode ) ) {
if ( ! UserTypeEnum . Admin . getDesc ( ) . equals ( roleCode ) ) {
if ( isAssociationRole ) {
if ( isAssociationRole ) {
// 协会用户(CEO):可以看到所有律所提交的数据,但只显示associationAuditStatus为待审核(1)、通过(3)和拒绝(4)的数据和自己创建的数据
// 协会用户(CEO):可以看到所有律所提交的数据,但只显示associationAuditStatus为待审核(1)、通过(3)和拒绝(4)的数据和自己创建的数据
// CEO作为最高权限用户,不需要限制在特定部门范围内,直接设置includeAssociationReviewed即可
// CEO作为最高权限用户,不需要限制在特定部门范围内,直接设置includeAssociationReviewed即可
queryForm . setIncludeAssociationReviewed ( true ) ;
queryForm . setIncludeAssociationReviewed ( true ) ;
} else if ( isFirmAdminRole ) {
// 检查是否只能查看成本填报律所的数据
// 律所管理员(cto):能看到自己部门范围内的数据,但只显示firmAuditStatus为待审核、通过和拒绝的数据和自己创建的数据
RequestEmployee requestEmployee = ( RequestEmployee ) requestUser ;
if ( Boolean . TRUE . equals ( requestEmployee . getCostReportViewOnly ( ) ) ) {
queryForm . setCostReportViewOnly ( true ) ;
}
} else if ( isFirmRole ) {
// 律所主任或行政:能看到自己部门范围内的数据,但只显示firmAuditStatus为待审核、通过和拒绝的数据和自己创建的数据
Integer oneByRoleId = dataScopeViewService . getOneByRoleId ( roleIdList . get ( 0 ) . getRoleId ( ) ) ;
Integer oneByRoleId = dataScopeViewService . getOneByRoleId ( roleIdList . get ( 0 ) . getRoleId ( ) ) ;
// 获取自己部门范围内的数据
// 获取自己部门范围内的数据
List < Long > departmentEmployees = new ArrayList < > ( ) ;
List < Long > departmentEmployees = new ArrayList < > ( ) ;
@ -210,7 +215,7 @@ public class ServiceApplicationsService {
}
}
queryForm . setEmployeeIdList ( departmentEmployees ) ;
queryForm . setEmployeeIdList ( departmentEmployees ) ;
// 律所管理员 可以查看部门内所有已审核数据以及自己创建的有效数据(明确排除未提交的草稿)
// 律所主任或行政 可以查看部门内所有已审核数据以及自己创建的有效数据(明确排除未提交的草稿)
queryForm . setIncludeFirmReviewed ( true ) ;
queryForm . setIncludeFirmReviewed ( true ) ;
} else {
} else {
// 律所普通用户:只能看到自己提交的数据,包括所有firmAuditStatus状态
// 律所普通用户:只能看到自己提交的数据,包括所有firmAuditStatus状态
@ -612,27 +617,8 @@ public class ServiceApplicationsService {
return ResponseDTO . ok ( ) ;
return ResponseDTO . ok ( ) ;
}
}
// RequestUser requestUser = AdminRequestUtil.getRequestUser();
//RequestEmployee requestUser = AdminRequestUtil.getRequestUser();
// 查询用户角色是律所管理员,则修改律所的审核状态
// 如果是ceo则修改协会审核状态
// List<RoleVO> roles = roleEmployeeService.getRoleIdList(requestUser.getUserId());
// if (roles.isEmpty()) {
// return ResponseDTO.error(UserErrorCode.NO_PERMISSION);
// }
// String roleCode = roles.get(0).getRoleCode();
// 设置审核时间
// String reviewTime = LocalDateTime.now().toString();
// 根据不同角色执行不同的提交操作
// if (UserTypeEnum.CEO.getDesc().equals(roleCode)) {
// CEO角色:修改协会审核状态
//serviceApplicationsDao.batchSubmitAsAssociation(idList, ReviewEnum.PASS.getValue());
// } else {
// 其他角色(如律所管理员):修改律所审核状态
serviceApplicationsDao . batchSubmitAsAssociation ( idList , ReviewEnum . APPROVAL . getValue ( ) ) ;
serviceApplicationsDao . batchSubmitAsAssociation ( idList , ReviewEnum . APPROVAL . getValue ( ) ) ;
// }
return ResponseDTO . ok ( ) ;
return ResponseDTO . ok ( ) ;
}
}
@ -708,25 +694,33 @@ public class ServiceApplicationsService {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
String roleCode = roles . get ( 0 ) . getRoleCode ( ) ;
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao . selectById ( updateForm . getApplicationId ( ) ) ;
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao . selectById ( updateForm . getApplicationId ( ) ) ;
// 权限验证:如果只能查看成本填报律所的数据,需要验证该数据是否属于有成本查看权限的律所
if ( Boolean . TRUE . equals ( requestUser . getCostReportViewOnly ( ) ) ) {
if ( ! isFirmHasCostPermission ( serviceApplicationsEntity . getFirmId ( ) ) ) {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
// 根据不同角色执行不同的审核操作
// 根据不同角色执行不同的审核操作
if ( UserTypeEnum . CEO . getDesc ( ) . equals ( roleCode ) ) {
if ( AdminRequestUtil . isAssociationRole ( roles ) ) {
// CEO角色:修改协会审核状态
// CEO角色:修改协会审核状态
serviceApplicationsEntity . setAssociationAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
serviceApplicationsEntity . setAssociationAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
serviceApplicationsEntity . setAssociationAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setAssociationAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setAssociationAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setAssociationAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setAssociationAuditOpinion ( updateForm . getAssociationAuditOpinion ( ) ) ;
serviceApplicationsEntity . setAssociationAuditOpinion ( updateForm . getAssociationAuditOpinion ( ) ) ;
} else {
} else if ( AdminRequestUtil . isFirmRole ( roles ) ) {
// 律所主任或行政:修改律所审核状态
if ( ReviewEnum . REFUSE . getValue ( ) = = updateForm . getAssociationAuditStatus ( ) ) {
if ( ReviewEnum . REFUSE . getValue ( ) = = updateForm . getAssociationAuditStatus ( ) ) {
serviceApplicationsEntity . setFirmAuditStatus ( ReviewEnum . REFUSE . getValue ( ) ) ;
serviceApplicationsEntity . setFirmAuditStatus ( ReviewEnum . REFUSE . getValue ( ) ) ;
} else {
} else {
// 其他角色(如律所管理员):修改律所审核状态
serviceApplicationsEntity . setFirmAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
serviceApplicationsEntity . setFirmAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
}
}
serviceApplicationsEntity . setFirmAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setFirmAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setFirmAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setFirmAuditTime ( LocalDateTime . now ( ) ) ;
} else {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
serviceApplicationsDao . updateById ( serviceApplicationsEntity ) ;
serviceApplicationsDao . updateById ( serviceApplicationsEntity ) ;
@ -1255,7 +1249,6 @@ public class ServiceApplicationsService {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
String roleCode = roles . get ( 0 ) . getRoleCode ( ) ;
String applicationIds = updateForm . getApplicationIds ( ) ;
String applicationIds = updateForm . getApplicationIds ( ) ;
if ( applicationIds = = null | | applicationIds . trim ( ) . isEmpty ( ) ) {
if ( applicationIds = = null | | applicationIds . trim ( ) . isEmpty ( ) ) {
return ResponseDTO . ok ( ) ;
return ResponseDTO . ok ( ) ;
@ -1268,12 +1261,14 @@ public class ServiceApplicationsService {
String reviewTime = LocalDateTime . now ( ) . toString ( ) ;
String reviewTime = LocalDateTime . now ( ) . toString ( ) ;
// 根据不同角色执行不同的审核操作
// 根据不同角色执行不同的审核操作
if ( UserTypeEnum . CEO . getDesc ( ) . equals ( roleCode ) ) {
if ( AdminRequestUtil . isAssociationRole ( roles ) ) {
// CEO角色:修改协会审核状态
// CEO角色:修改协会审核状态
serviceApplicationsDao . batchReviewAsAssociation ( fileKeyList , updateForm . getAuditResult ( ) , requestUser . getUserId ( ) , reviewTime ) ;
serviceApplicationsDao . batchReviewAsAssociation ( fileKeyList , updateForm . getAuditResult ( ) , requestUser . getUserId ( ) , reviewTime ) ;
} else {
} else if ( AdminRequestUtil . isFirmRole ( roles ) ) {
// 其他角色(如律所管理员) :修改律所审核状态
// 律所主任或行政 :修改律所审核状态
serviceApplicationsDao . batchReviewAsFirm ( fileKeyList , updateForm . getAuditResult ( ) , requestUser . getUserId ( ) , reviewTime ) ;
serviceApplicationsDao . batchReviewAsFirm ( fileKeyList , updateForm . getAuditResult ( ) , requestUser . getUserId ( ) , reviewTime ) ;
} else {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
return ResponseDTO . ok ( ) ;
return ResponseDTO . ok ( ) ;
@ -1330,7 +1325,16 @@ public class ServiceApplicationsService {
public Long queryNoReview ( ) {
public Long queryNoReview ( ) {
//查询上个月是否有未审核的数据,注意跨年情况
//查询上个月是否有未审核的数据,注意跨年情况
Long departmentId = AdminRequestUtil . getRequestUser ( ) . getDepartmentId ( ) ;
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
Long departmentId = requestUser . getDepartmentId ( ) ;
// 检查是否只能查看成本填报律所的数据
Boolean costReportViewOnly = requestUser . getCostReportViewOnly ( ) ;
if ( Boolean . TRUE . equals ( costReportViewOnly ) ) {
// 只统计律所主任或行政有成本查看权限的律所的未审核数据
return serviceApplicationsDao . queryNoReviewWithCostFilter ( ) ;
}
return serviceApplicationsDao . queryNoReview ( departmentId ) ;
return serviceApplicationsDao . queryNoReview ( departmentId ) ;
}
}
@ -1341,20 +1345,29 @@ public class ServiceApplicationsService {
if ( roles . isEmpty ( ) ) {
if ( roles . isEmpty ( ) ) {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
String roleCode = roles . get ( 0 ) . getRoleCode ( ) ;
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao . selectById ( updateForm . getApplicationId ( ) ) ;
ServiceApplicationsEntity serviceApplicationsEntity = serviceApplicationsDao . selectById ( updateForm . getApplicationId ( ) ) ;
if ( UserTypeEnum . CEO . getDesc ( ) . equals ( roleCode ) ) {
// 权限验证:如果只能查看成本填报律所的数据,需要验证该数据是否属于有成本查看权限的律所
if ( Boolean . TRUE . equals ( requestUser . getCostReportViewOnly ( ) ) ) {
if ( ! isFirmHasCostPermission ( serviceApplicationsEntity . getFirmId ( ) ) ) {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
if ( AdminRequestUtil . isAssociationRole ( roles ) ) {
// CEO角色:修改协会审核状态
// CEO角色:修改协会审核状态
serviceApplicationsEntity . setAssociationAuditStatus ( updateForm . getAssociationAuditStatus ( ) ) ;
serviceApplicationsEntity . setAssociationAuditStatus ( updateForm . getAssociationAuditStatus ( ) ) ;
serviceApplicationsEntity . setAssociationAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setAssociationAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setAssociationAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setAssociationAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setAssociationAuditOpinion ( updateForm . getAssociationAuditOpinion ( ) ) ;
serviceApplicationsEntity . setAssociationAuditOpinion ( updateForm . getAssociationAuditOpinion ( ) ) ;
} else {
} else if ( AdminRequestUtil . isFirmRole ( roles ) ) {
// 其他角色(如律所管理员):修改律所审核状态
// 律所主任或行政 :修改律所审核状态
serviceApplicationsEntity . setFirmAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
serviceApplicationsEntity . setFirmAuditStatus ( updateForm . getFirmAuditStatus ( ) ) ;
serviceApplicationsEntity . setFirmAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setFirmAuditUser ( requestUser . getEmployeeId ( ) ) ;
serviceApplicationsEntity . setFirmAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setFirmAuditTime ( LocalDateTime . now ( ) ) ;
serviceApplicationsEntity . setFirmAuditOpinion ( updateForm . getFirmAuditOpinion ( ) ) ;
serviceApplicationsEntity . setFirmAuditOpinion ( updateForm . getFirmAuditOpinion ( ) ) ;
} else {
return ResponseDTO . error ( UserErrorCode . NO_PERMISSION ) ;
}
}
@ -1623,8 +1636,8 @@ public class ServiceApplicationsService {
* /
* /
private void applyUserPermissionControl ( LawyerStatisticsQueryForm queryForm ) {
private void applyUserPermissionControl ( LawyerStatisticsQueryForm queryForm ) {
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RoleVO roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) . get ( 0 ) ;
List < RoleVO > roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) ;
if ( UserTypeEnum . CTO . getDesc ( ) . equals ( roleList . getRoleCode ( ) ) ) {
if ( AdminRequestUtil . isFirmRole ( roleList ) ) {
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
}
}
}
}
@ -1634,8 +1647,8 @@ public class ServiceApplicationsService {
* /
* /
private void applyUserPermissionControl ( LawyerStatisticsQueryFormPage queryForm ) {
private void applyUserPermissionControl ( LawyerStatisticsQueryFormPage queryForm ) {
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RoleVO roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) . get ( 0 ) ;
List < RoleVO > roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) ;
if ( UserTypeEnum . CTO . getDesc ( ) . equals ( roleList . getRoleCode ( ) ) ) {
if ( AdminRequestUtil . isFirmRole ( roleList ) ) {
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
}
}
}
}
@ -1851,11 +1864,11 @@ public class ServiceApplicationsService {
* /
* /
public void exportLawyer ( ServiceLawyerQueryForm queryForm , HttpServletResponse response ) {
public void exportLawyer ( ServiceLawyerQueryForm queryForm , HttpServletResponse response ) {
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RoleVO roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) . get ( 0 ) ;
List < RoleVO > roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) ;
// 应用权限控制和查询条件
// 应用权限控制和查询条件
if ( UserTypeEnum . CTO . getDesc ( ) . equals ( roleList . getRoleCode ( ) ) ) {
if ( AdminRequestUtil . isFirmRole ( roleList ) ) {
// 律所只能查看自己的部门的数据
// 律所主任或行政 只能查看自己的部门的数据
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
}
}
// 管理员可以看到所有数据,但仍应尊重用户指定的查询条件
// 管理员可以看到所有数据,但仍应尊重用户指定的查询条件
@ -2125,6 +2138,13 @@ public class ServiceApplicationsService {
* /
* /
public PageResult < ServiceReportStatisticsVO > getServiceReportStatistics ( ServiceApplicationsQueryForm queryForm ) {
public PageResult < ServiceReportStatisticsVO > getServiceReportStatistics ( ServiceApplicationsQueryForm queryForm ) {
Page < ? > page = SmartPageUtil . convert2PageQuery ( queryForm ) ;
Page < ? > page = SmartPageUtil . convert2PageQuery ( queryForm ) ;
// 添加权限控制:检查是否只能查看成本填报律所的数据
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
if ( Boolean . TRUE . equals ( requestUser . getCostReportViewOnly ( ) ) ) {
queryForm . setCostReportViewOnly ( true ) ;
}
// 如果没有指定季度,则使用年度范围,否则使用季度范围
// 如果没有指定季度,则使用年度范围,否则使用季度范围
if ( queryForm . getQuarter ( ) = = null ) {
if ( queryForm . getQuarter ( ) = = null ) {
// 如果用户指定了年份,则使用指定年份,否则使用当前年份
// 如果用户指定了年份,则使用指定年份,否则使用当前年份
@ -2692,14 +2712,14 @@ public class ServiceApplicationsService {
ServiceApplicationsQueryForm queryForm = new ServiceApplicationsQueryForm ( ) ;
ServiceApplicationsQueryForm queryForm = new ServiceApplicationsQueryForm ( ) ;
// 获取当前登录用户
// 获取当前登录用户
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
RoleVO roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) . get ( 0 ) ;
List < RoleVO > roleList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) ;
// 根据用户类型应用权限控制
// 根据用户类型应用权限控制
if ( UserTypeEnum . USER . getDesc ( ) . equals ( roleList . getRoleCode ( ) ) ) {
if ( AdminRequestUtil . isLawyerRole ( roleList ) ) {
// 律师只能看自己
// 律师只能看自己
queryForm . setUserId ( requestUser . getUserId ( ) ) ;
queryForm . setUserId ( requestUser . getUserId ( ) ) ;
} else if ( UserTypeEnum . CTO . getDesc ( ) . equals ( roleList . getRoleCode ( ) ) ) {
} else if ( AdminRequestUtil . isFirmRole ( roleList ) ) {
// 律所管理员 看本所
// 律所主任或行政 看本所
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
queryForm . setFirmId ( requestUser . getDepartmentId ( ) ) ;
}
}
// CEO可以看所有,不需要设置过滤条件
// CEO可以看所有,不需要设置过滤条件
@ -2762,4 +2782,14 @@ public class ServiceApplicationsService {
return "未知" ;
return "未知" ;
}
}
}
}
/ * *
* 判断律所是否有成本查看权限
* /
private boolean isFirmHasCostPermission ( Long firmId ) {
if ( firmId = = null ) {
return false ;
}
return serviceApplicationsDao . countFirmWithCostPermission ( firmId ) > 0 ;
}
}
}