|
|
@@ -0,0 +1,165 @@
|
|
|
+package com.lc.ibps.platform.plan.job;
|
|
|
+
|
|
|
+import com.lc.ibps.base.core.util.AppUtil;
|
|
|
+import com.lc.ibps.org.auth.persistence.entity.ResourcesPo;
|
|
|
+import com.lc.ibps.org.auth.repository.RoleResourceRepository;
|
|
|
+import com.lc.ibps.org.party.persistence.entity.PartyRolePo;
|
|
|
+import com.lc.ibps.org.party.repository.PartyRoleRepository;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+public class ResourceRuleJob extends AbstractJob {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private RoleResourceRepository roleResourceRepository;
|
|
|
+ @Resource
|
|
|
+ private PartyRoleRepository partyRoleRepository ;
|
|
|
+ @Override
|
|
|
+ public void executeJob(JobExecutionContext context) throws Exception {
|
|
|
+ List<MenuVO> allMenuList = null;
|
|
|
+ partyRoleRepository = AppUtil.getBean(PartyRoleRepository.class);
|
|
|
+ roleResourceRepository = AppUtil.getBean(RoleResourceRepository.class);
|
|
|
+ List<PartyRolePo> partyRolePos = partyRoleRepository.queryWithSys();
|
|
|
+ for (PartyRolePo rolePo : partyRolePos) {
|
|
|
+ List<ResourcesPo> roleResTreeChecked = roleResourceRepository.getRoleResTreeChecked(rolePo.getId(), rolePo.getSubSystemId());
|
|
|
+ if(allMenuList == null) {
|
|
|
+ allMenuList = new ArrayList<>();
|
|
|
+ for (ResourcesPo res : roleResTreeChecked) {
|
|
|
+ if (res.getDisplayInMenu().equalsIgnoreCase("n")) continue;
|
|
|
+ allMenuList.add(new MenuVO(res.getSn(), res.getName(), res.getId(), res.getParentId(),res.getChecked()));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MenuVO> result = getChildNode("0", allMenuList);
|
|
|
+ allMenuList = getFlatMenuList("",result);
|
|
|
+ }else{
|
|
|
+ for (MenuVO menu : allMenuList) {
|
|
|
+ Optional<ResourcesPo> optional = roleResTreeChecked.stream().parallel().filter(x -> x.getId().equals(menu.id)).findAny();
|
|
|
+ if(optional.isPresent()) menu.roles.add(optional.get().getChecked().equalsIgnoreCase("true")?"√":" ");
|
|
|
+ else menu.roles.add("");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println("" +"|"+partyRolePos.stream().map(x->x.getName()).collect(Collectors.joining("|")));
|
|
|
+ for (MenuVO menu : allMenuList) {
|
|
|
+ String s = String.format("%s",StringUtils.trim(menu.parentCode+"/"+menu.menuCode));
|
|
|
+ System.out.println(s +"|"+ StringUtils.join(menu.roles,"|"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<MenuVO> getFlatMenuList(String parentCode,List<MenuVO> allMenuList){
|
|
|
+ List<MenuVO> menu = new ArrayList<>();
|
|
|
+ for (MenuVO m : allMenuList) {
|
|
|
+ m.parentCode = parentCode;
|
|
|
+ menu.add(m);
|
|
|
+ menu.addAll(getFlatMenuList(parentCode+"/"+m.menuCode,m.childNode));
|
|
|
+ }
|
|
|
+ return menu;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<MenuVO> getChildNode(String rootMenu, List<MenuVO> allMenuList) {
|
|
|
+
|
|
|
+ List<MenuVO> childMenu = new ArrayList<>();
|
|
|
+ for (MenuVO menu : allMenuList) {
|
|
|
+ if (menu.getParentId().compareTo(rootMenu) == 0) {
|
|
|
+ // 递归查询此节点下的所有子节点
|
|
|
+ List<MenuVO> childNode = getChildNode(menu.getId(), allMenuList);
|
|
|
+ menu.setChildNode(childNode);
|
|
|
+ childMenu.add(menu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 子节点进行排序
|
|
|
+ List<MenuVO> childSortMenu = Optional.ofNullable(childMenu)
|
|
|
+ .map(List::stream)
|
|
|
+ .orElseGet(Stream::empty)
|
|
|
+ .sorted(Comparator.comparing(MenuVO::getSn))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ return childSortMenu;
|
|
|
+ }
|
|
|
+
|
|
|
+ private class MenuVO {
|
|
|
+
|
|
|
+ int sn;
|
|
|
+ List<MenuVO> childNode;
|
|
|
+ List<String> roles = new ArrayList<>();
|
|
|
+ String parentCode;
|
|
|
+ String menuCode;
|
|
|
+
|
|
|
+ String id;
|
|
|
+ String parentId;
|
|
|
+
|
|
|
+ public MenuVO(int sn, String menuCode, String id, String parentId, String checked) {
|
|
|
+ this.sn = sn;
|
|
|
+ this.menuCode = menuCode;
|
|
|
+ this.id = id;
|
|
|
+ this.parentId = parentId;
|
|
|
+ this.roles.add(checked.equalsIgnoreCase("true")?"√":" ");
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<String> getRoles() {
|
|
|
+ return roles;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setRoles(List<String> roles) {
|
|
|
+ this.roles = roles;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getSn() {
|
|
|
+ return sn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSn(int sn) {
|
|
|
+ this.sn = sn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<MenuVO> getChildNode() {
|
|
|
+ return childNode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setChildNode(List<MenuVO> childNode) {
|
|
|
+ this.childNode = childNode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getParentCode() {
|
|
|
+ return parentCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setParentCode(String parentCode) {
|
|
|
+ this.parentCode = parentCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getMenuCode() {
|
|
|
+ return menuCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setMenuCode(String menuCode) {
|
|
|
+ this.menuCode = menuCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getId() {
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setId(String id) {
|
|
|
+ this.id = id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getParentId() {
|
|
|
+ return parentId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setParentId(String parentId) {
|
|
|
+ this.parentId = parentId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|