Commit 39b5c109 authored by huyuchen's avatar huyuchen

Merge remote-tracking branch 'origin/MVP1.7.7' into MVP1.7.7

parents 1482cfae e9dbd019
......@@ -34,7 +34,7 @@ import java.time.LocalDate;
*/
@Data
@ColumnWidth(30)
public class EmployeeProjectScpVO extends RowIndex implements Serializable {
public class EmployeeProjectScpVO implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -72,7 +72,7 @@ public class EmployeeProjectScpVO extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "入/离职日期")
@ExcelAttribute(name = "入/离职日期")
private LocalDate enjoinDateAndLeaveTime;
private String enjoinDateAndLeaveTime;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "合同签订状态")
......
......@@ -78,6 +78,8 @@ public class TEmployeeProjectBelongDeptServiceImpl extends ServiceImpl<TEmployee
// 没传项目id,置为-1,不给查询
tEmployeeProjectBelongDept.setDeptId("-1");
}
// empDeptId == -1,则查项目下所有 所属部门 为空的(逻辑在XML的where里)
// 2025-3-3 11:52:18 倩倩与宇茜沟通后确定的,宇茜说 所属部门树的顶级的数字,是底下加上的,所以没有 包含空的
if (Common.isNotNull(tEmployeeProjectBelongDept.getEmpDeptId()) && !"-1".equals(tEmployeeProjectBelongDept.getEmpDeptId())) {
tEmployeeProjectBelongDept.setEmpDeptIdArray(tEmployeeProjectBelongDept.getEmpDeptId().split(","));
}
......
......@@ -30,7 +30,16 @@
<result property="empDeptid" column="emp_deptid"/>
</resultMap>
<sql id="tEmployeeProjectBelongDept_where">
/* 派单审核通过,或其他路径 */
and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1')
<if test="tEmployeeProjectBelongDept != null">
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
<if test="tEmployeeProjectBelongDept.empDeptId != null and tEmployeeProjectBelongDept.empDeptId.trim() != ''
and tEmployeeProjectBelongDept.empDeptId.trim() == '-1'">
AND b.id is null
</if>
<if test="tEmployeeProjectBelongDept.empName != null and tEmployeeProjectBelongDept.empName.trim() != ''">
AND a.EMP_NAME like concat('%',#{tEmployeeProjectBelongDept.empName},'%')
</if>
......@@ -47,6 +56,13 @@
#{param}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.empDeptIdArray != null and tEmployeeProjectBelongDept.empDeptIdArray.length > 0">
AND b.emp_deptid in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.empDeptIdArray" open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.contractStatusArray != null and tEmployeeProjectBelongDept.contractStatusArray.length > 0">
AND a.CONTRACT_STATUS in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.contractStatusArray" open="("
......@@ -143,7 +159,7 @@
a.DELETE_FLAG ='0'
<include refid="tEmployeeProjectBelongDept_where"/>
</where>
<if test="tEmployeeProjectBelongDept_where != null">
<if test="tEmployeeProjectBelongDept != null">
<if test="tEmployeeProjectBelongDept.limitStart != null">
limit #{tEmployeeProjectBelongDept.limitStart},#{tEmployeeProjectBelongDept.limitEnd}
</if>
......
......@@ -423,7 +423,7 @@ public class TInsuranceUnpurchaseApplyServiceImpl extends ServiceImpl<TInsurance
submitAuditRecord.setEntityName(tInsuranceUnpurchaseApply.getApplyNo());
auditRecordService.save(submitAuditRecord);
}
if(CommonConstants.TWO_STRING.equals(tInsuranceUnpurchaseApply.getReasonType())){
if(CommonConstants.TWO_STRING.equals(tInsuranceUnpurchaseApply.getReasonType()) && CommonConstants.THREE_STRING.equals(tInsuranceUnpurchaseApply.getStatus())){
// 是“人员已离职”并且 申请已审核通过
// 记录提交审核日志
TAuditRecord submitAuditRecord = new TAuditRecord();
......@@ -451,7 +451,7 @@ public class TInsuranceUnpurchaseApplyServiceImpl extends ServiceImpl<TInsurance
autoAuditRecord.setNodeId(CommonConstants.EMPTY_STRING);
autoAuditRecord.setNodeName("SSC审核");
autoAuditRecord.setApprovalMan(CommonConstants.ONE_STRING);
autoAuditRecord.setApprovalManName("系统默认审核通过");
autoAuditRecord.setApprovalManName("首次申请,系统默认审核通过");
autoAuditRecord.setApprovalOpinion("默认审核通过");
autoAuditRecord.setApprovalTime(LocalDateTime.now());
autoAuditRecord.setDeleteFlag(CommonConstants.NOT_DELETE_FLAG);
......
......@@ -44,23 +44,6 @@ public interface SysUserDeptPermissionService extends IService<SysUserDeptPermis
*/
SysUserDeptPermission getInfo(String projectNo, String userId);
/**
* 项目下用户数据权限
* @param projectNo 项目编号
* @param userId 用户ID
*
* @return UserPermissionVo 用户在指定项目下的权限
*/
UserPermissionVo getUserPermissionVo(String projectNo, String userId);
/**
* 用户所有项目的数据权限
* @param userId 用户ID
*
* @return Map<String, UserPermissionVo> 用户不同项目的数据权限
*/
Map<String, UserPermissionVo> getUserPermissionFlush(String userId);
/**
* 客户服务平台——用户权限控制
* @param sysUserDeptPermission 实体
......
......@@ -73,139 +73,7 @@ public class SysUserDeptPermissionServiceImpl extends ServiceImpl<SysUserDeptPer
return baseMapper.selectOne(permissionQuery);
}
@Override
public UserPermissionVo getUserPermissionVo(String projectNo, String userId) {
UserPermissionVo authority = new UserPermissionVo();
if (Common.isEmpty(projectNo) && Common.isEmpty(userId)) {
log.error("获取用户权限失败,缺少用户或项目信息");
return authority;
}
Object cacheValue = redisUtil.get(CacheConstants.PROJECT_USER_PERMISSION + projectNo +"_"+ userId);
if (null != cacheValue) {
authority = (UserPermissionVo) cacheValue;
} else {
Map<String, UserPermissionVo> tPermissionMapByProject = getUserPermissionFlush(userId);
authority = tPermissionMapByProject.get(projectNo);
}
return authority;
}
@Override
public Map<String, UserPermissionVo> getUserPermissionFlush(String userId) {
UserPermissionVo authority;
Map<String, UserPermissionVo> tPermissionMapByProject = new HashMap<>();if (Common.isEmpty(userId)) {
log.error("获取用户权限失败,缺少用户信息");
return tPermissionMapByProject;
}
String deptIdSplit = "";
Long deptId = 0L;
Set<String> permissionDbSet = null;
List<SysUserDeptPermission> tPermissionInfoList = baseMapper.getUserDeptPermissionList(userId);
if (Common.isEmpty(tPermissionInfoList)) {
log.error("获取用户权限失败,未获取到用户在项目下的权限信息>>用户"+userId);
return tPermissionMapByProject;
}
Set<String> projectNoSet = tPermissionInfoList.stream().map(SysUserDeptPermission::getProjectNo).collect(Collectors.toSet());
Map<String, SysUserDeptPermission> tPermissionMap = tPermissionInfoList.stream().collect(Collectors.toMap(SysUserDeptPermission::getProjectNo, v -> v, (v1, v2) -> v1));
SysUserDeptPermission tPermissionInfo;
for (String projectNoStr : projectNoSet) {
tPermissionInfo = tPermissionMap.get(projectNoStr);
// 没有配置部门
if(Common.isEmpty(tPermissionInfo)){
authority = new UserPermissionVo();
log.error("获取用户权限失败,该用户指定项目权限{}", userId);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}else {
authority = new UserPermissionVo();
authority.setProjectNo(projectNoStr);
authority.setProjectName(tPermissionInfo.getProjectName());
authority.setUserType(tPermissionInfo.getUserType());
if (CommonConstants.ZERO_STRING.equals(tPermissionInfo.getPermissionsType())) {
// 全部数据
authority.setHaveAll(true);
// redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
} else if (CommonConstants.THREE_STRING.equals(tPermissionInfo.getPermissionsType())) {
// 指定部门权限
if (Common.isNotKong(tPermissionInfo.getAppointDeptScope())) {
authority.setHaveAll(false);
String[] appointDeptIdArr = tPermissionInfo.getAppointDeptScope().split(CommonConstants.COMMA_STRING);
Set<String> appointDeptIdSet = Arrays.stream(appointDeptIdArr).collect(Collectors.toSet());
authority.setDepartIdSet(appointDeptIdSet);
authority.setUserId(userId);
// redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
} else {
log.error("获取用户权限失败,该用户指定部门权限为空{}", userId);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}
} else {
SysDept sysDept = sysDeptMapper.selectById(tPermissionInfo.getDeptId());
if (Common.isNotKong(sysDept)) {
String ancestors = sysDept.getAncestors();
if (Common.isEmpty(ancestors)) {
log.error("获取用户权限失败,该用户所属部门关系为空{}", sysDept);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}
String[] ancestorsSplit = ancestors.split(CommonConstants.COMMA_STRING);
if (CommonConstants.ONE_STRING.equals(tPermissionInfo.getPermissionsType())) {
// 二级部门及以下
if (ancestorsSplit.length == 2) {
deptIdSplit = ancestorsSplit[0] + CommonConstants.COMMA_STRING + ancestorsSplit[1] + CommonConstants.COMMA_STRING + sysDept.getDeptId();
deptId = sysDept.getDeptId();
} else if (ancestorsSplit.length > 2) {
deptIdSplit = ancestorsSplit[0] + CommonConstants.COMMA_STRING + ancestorsSplit[1] + CommonConstants.COMMA_STRING + ancestorsSplit[2];
deptId = Long.valueOf(ancestorsSplit[2]);
} else {
log.error("获取用户权限失败,该用户所在部门为顶级部门,未查到权限{}", sysDept);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}
} else if (CommonConstants.TWO_STRING.equals(tPermissionInfo.getPermissionsType())) {
// 本级部门及以下
deptIdSplit = ancestors + CommonConstants.COMMA_STRING + sysDept.getDeptId();
deptId = sysDept.getDeptId();
}
// 获取指定部门及下级部门的数据
List<SysDept> sysDeptList = sysDeptMapper.getDeptListByDeptId(deptIdSplit, deptId);
if (Common.isNotKong(sysDeptList)) {
permissionDbSet = new HashSet<>();
for(SysDept deptOne : sysDeptList){
permissionDbSet.add(String.valueOf(deptOne.getDeptId()));
}
authority.setHaveAll(false);
authority.setDepartIdSet(permissionDbSet);
authority.setUserId(userId);
//redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
} else {
log.error("获取用户权限失败,该用户部门及以下权限为空{}", userId);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}
} else {
log.error("获取用户权限失败,该用户所属部门不存在{}", userId);
authority.setHaveAll(false);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
continue;
}
}
}
// 赋值用户在不同项目下的权限
tPermissionMapByProject.put(projectNoStr,authority);
redisUtil.set(CacheConstants.PROJECT_USER_PERMISSION + projectNoStr +"_"+ userId, authority);
}
return tPermissionMapByProject;
}
/**
* 客户服务平台——用户权限控制
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment