Merge remote-tracking branch 'remotes/origin/dev' into test
						commit
						7a79bcd29a
					
				| @ -0,0 +1,22 @@ | ||||
| package cn.estsh.i3plus.core.api.iservice.base; | ||||
| 
 | ||||
| /** | ||||
|  * @Description : | ||||
|  * @Reference : | ||||
|  * @Author : yunhao | ||||
|  * @CreateDate : 2020-09-04 11:29 | ||||
|  * @Modify: | ||||
|  **/ | ||||
| public interface IBackstageService { | ||||
| 
 | ||||
|     /** | ||||
|      * 更新并清理功能软件模块数据 | ||||
|      */ | ||||
|     void updateCleanMenuSoftType(); | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 更新并清理角色功能数据 | ||||
|      */ | ||||
|     void updateRefRoleMenu(); | ||||
| } | ||||
| @ -0,0 +1,95 @@ | ||||
| package cn.estsh.i3plus.core.apiservice.serviceimpl.base; | ||||
| 
 | ||||
| import cn.estsh.i3plus.core.api.iservice.base.IBackstageService; | ||||
| import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; | ||||
| import cn.estsh.i3plus.core.api.iservice.busi.ISysMenuService; | ||||
| import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; | ||||
| import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; | ||||
| import cn.estsh.i3plus.pojo.platform.bean.SysMenu; | ||||
| import cn.estsh.i3plus.pojo.platform.bean.SysRefRoleMenu; | ||||
| import cn.estsh.i3plus.pojo.platform.bean.SysRole; | ||||
| import org.apache.commons.collections.CollectionUtils; | ||||
| import org.apache.commons.collections4.ListUtils; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | ||||
| 
 | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
| 
 | ||||
| /** | ||||
|  * @Description : | ||||
|  * @Reference : | ||||
|  * @Author : yunhao | ||||
|  * @CreateDate : 2020-09-04 11:31 | ||||
|  * @Modify: | ||||
|  **/ | ||||
| @Service | ||||
| public class BackstageService implements IBackstageService { | ||||
| 
 | ||||
|     @Autowired | ||||
|     private ISysMenuService menuService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private ISysRoleService sysRoleService; | ||||
| 
 | ||||
|     @Autowired | ||||
|     private IPersonnelService penfindSysRefUserRole; | ||||
| 
 | ||||
|     /** | ||||
|      * 更新并清理功能软件模块数据 | ||||
|      */ | ||||
|     @Override | ||||
|     public void updateCleanMenuSoftType() { | ||||
|         SysMenu sysMenu = new SysMenu(); | ||||
|         sysMenu.setMenuType(CommonEnumUtil.METHOD_LEVEL.PLUGIN.getValue()); | ||||
|         List<SysMenu> list = menuService.findAllByBean(sysMenu).stream() | ||||
|                 .filter(menu -> menu.getId() != 100000000L) | ||||
|                 .collect(Collectors.toList()); | ||||
| 
 | ||||
|         List<SysMenu> allList = menuService.findAll(); | ||||
|         Map<Long, List<SysMenu>> ds = allList.stream().collect(Collectors.groupingBy(SysMenu::getParentId)); | ||||
|         packSysMenuTree(list, ds, null); | ||||
| 
 | ||||
|         for (List<SysMenu> sysMenuList : ListUtils.partition(allList, 100)) { | ||||
|             new Thread(() -> menuService.saveBatch(sysMenuList)).start(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public void packSysMenuTree(List<SysMenu> sysMenuList, Map<Long, List<SysMenu>> ds, Integer softType) { | ||||
|         if (CollectionUtils.isEmpty(sysMenuList)) { | ||||
|             return; | ||||
|         } | ||||
|         for (SysMenu sysMenu : sysMenuList) { | ||||
|             if (softType != null) { | ||||
|                 sysMenu.setSoftType(softType); | ||||
|             } | ||||
|             if (ds.containsKey(sysMenu.getId())) { | ||||
|                 sysMenu.setChildList(ds.get(sysMenu.getId())); | ||||
|                 packSysMenuTree(sysMenu.getChildList(), ds, sysMenu.getSoftType()); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 更新并清理角色功能数据 | ||||
|      */ | ||||
|     @Override | ||||
|     public void updateRefRoleMenu() { | ||||
|         List<Long> roleIdList = sysRoleService.findAll().stream().map(SysRole::getId).collect(Collectors.toList()); | ||||
|         Map<Long, Set<Long>> roleMenuMap = new HashMap<>(); | ||||
|         for (SysRefRoleMenu refRoleMenu : penfindSysRefUserRole.findSysRefRoleMenuByRoleIds(roleIdList)) { | ||||
|             if (!roleMenuMap.containsKey(refRoleMenu.getRoleId())) { | ||||
|                 roleMenuMap.put(refRoleMenu.getRoleId(), new HashSet<>()); | ||||
|             } | ||||
|             roleMenuMap.get(refRoleMenu.getRoleId()).add(refRoleMenu.getMenuId()); | ||||
|         } | ||||
| 
 | ||||
|         for (Map.Entry<Long, Set<Long>> longSetEntry : roleMenuMap.entrySet()) { | ||||
|             sysRoleService.refreshSysRoleRef( | ||||
|                     longSetEntry.getKey(), | ||||
|                     longSetEntry.getValue().toArray(new Long[longSetEntry.getValue().size()]), | ||||
|                     "清理垃圾数据" | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue