diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 3465b57..9d82d1a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Set; import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.flow.CaseFlowService; import com.ruoyi.wisdomarbitrate.domain.dto.miniprogress.IdentityAuthentication; import com.ruoyi.wisdomarbitrate.service.miniprogress.IdentityAuthenticationService; import org.springframework.beans.factory.annotation.Autowired; @@ -40,7 +41,8 @@ public class SysLoginController { IdentityAuthenticationService identityAuthenticationService; @Autowired private ISysUserService sysUserService; - + @Autowired + private CaseFlowService caseFlowService; /** * 登录方法 * @@ -79,10 +81,13 @@ public class SysLoginController { Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + //查询用户角色关联的案件状态 + Set caseStatus = caseFlowService.getCaseStatusIdByRoleKey(roles); AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); ajax.put("permissions", permissions); + ajax.put("caseStatus", caseStatus); return ajax; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowService.java index 8f906d7..4781162 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowService.java @@ -3,6 +3,8 @@ package com.ruoyi.system.service.flow; import com.ruoyi.system.domain.vo.flow.MsCaseFlowSearchVO; import com.ruoyi.system.domain.vo.flow.MsCaseFlowVO; +import java.util.Set; + public interface CaseFlowService { /** * 查询案件流程节点信息 @@ -31,4 +33,11 @@ public interface CaseFlowService { * @return */ Boolean sortCaseFlow(MsCaseFlowSearchVO caseFlowSearchVO); + + /** + * 查询用户角色关联的案件状态 + * @param roles + * @return + */ + Set getCaseStatusIdByRoleKey(Set roles); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowServiceImpl.java index 7c16bf0..6070ca0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/flow/CaseFlowServiceImpl.java @@ -18,10 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import tk.mybatis.mapper.entity.Example; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -270,4 +267,64 @@ public class CaseFlowServiceImpl implements CaseFlowService { } return false; } + + /** + * 查询用户角色关联的案件状态 + * + * @param roles + * @return + */ + @Override + public Set getCaseStatusIdByRoleKey(Set roles) { + boolean isall = false; + List roleIds = new ArrayList<>(); + //TODO +// if (roles != null && roles.size() > 0) { +// for (String role : roles) { +// if (role.equals("admin")) { +// isall = true; +// break; +// } +// } +// } + if (!isall) { + for (String rolekey : roles) { + SysRole sysRole = sysRoleMapper.checkRoleKeyUnique(rolekey); + if (sysRole != null) { + roleIds.add(sysRole.getRoleId()); + } + } + } + /** + * 查询角色的案件状态id + */ + Set caseStatusIds = getCaseStatusIdByRoleId(roleIds, isall); + return caseStatusIds; + } + + /** + * 查询角色的案件状态id + * + * @param roleIds + * @param isall + * @return + */ + private Set getCaseStatusIdByRoleId(List roleIds, boolean isall) { + Set result = new HashSet<>(); + Example example = new Example(MsCaseFlowRoleRelated.class); + Example.Criteria criteria = example.createCriteria(); + if (isall) { + List msCaseFlowRoleRelateds = msCaseFlowRoleRelatedMapper.selectAll(); + if (msCaseFlowRoleRelateds != null && msCaseFlowRoleRelateds.size() > 0) { + result = msCaseFlowRoleRelateds.stream().filter(s -> s.getFlowId() != null).map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toSet()); + } + } else if (roleIds != null && roleIds.size() > 0) { + criteria.andIn("roleid", roleIds); + List msCaseFlowRoleRelateds = msCaseFlowRoleRelatedMapper.selectByExample(example); + if (msCaseFlowRoleRelateds != null && msCaseFlowRoleRelateds.size() > 0) { + result = msCaseFlowRoleRelateds.stream().filter(s -> s.getFlowId() != null).map(MsCaseFlowRoleRelated::getFlowId).collect(Collectors.toSet()); + } + } + return result; + } }