123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- package com.bizmatics.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.bizmatics.common.mvc.base.AbstractCrudService;
- import com.bizmatics.model.SysPlatformMenu;
- import com.bizmatics.model.SysTenantMenu;
- import com.bizmatics.model.system.SysMenu;
- import com.bizmatics.model.system.SysRole;
- import com.bizmatics.model.system.SysRoleMenu;
- import com.bizmatics.model.vo.SysMenuOneVo;
- import com.bizmatics.model.vo.SysMenuTwoVo;
- import com.bizmatics.model.vo.SysMenuVo;
- import com.bizmatics.model.vo.TenantMenuVo;
- import com.bizmatics.persistence.mapper.SysPlatformMenuMapper;
- import com.bizmatics.service.SysPlatformMenuService;
- import com.bizmatics.service.SysTenantMenuService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * <p>
- * 平台和菜单关联表 服务实现类
- * </p>
- *
- * @author ya
- * @since 2022-05-18
- */
- @Service
- public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformMenuMapper, SysPlatformMenu> implements SysPlatformMenuService {
- @Autowired
- private SysTenantMenuService sysTenantMenuService;
- // public List<SysMenuOneVo> getMenuList(Integer platformId, Integer tenantId){
- // List<SysMenuTwoVo> MenuListOne = new ArrayList<>();
- // List<SysMenuOneVo> MenuListTwo = new ArrayList<>();
- // //平台全部一级目录
- // List<SysMenu> sysMenuListOne=baseMapper.getMenuList(platformId,"M");
- // //平台全部二级目录
- // List<SysMenu> sysMenuListTwo=baseMapper.getMenuList(platformId,"C");
- // if (sysMenuListTwo.size()<0||sysMenuListOne.size()<0) {
- // throw new BusinessException("平台目录配置错误或尚未配置");
- // }
- // //租户所选中的目录
- // LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
- // queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
- // List<SysTenantMenu> sysTenantMenuList = sysTenantMenuService.list(queryWrapper);
- // for (int i = 0; i < sysMenuListTwo.size(); i++) {
- // SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
- // sysMenuTwoVo.setId(sysMenuListTwo.get(i).getMenuId());
- // sysMenuTwoVo.setName(sysMenuListTwo.get(i).getMenuName());
- // sysMenuTwoVo.setFid(sysMenuListTwo.get(i).getParentId());
- // long Id = sysMenuListTwo.get(i).getMenuId();
- // sysMenuTwoVo.setChecked(false);
- // if (sysTenantMenuList.size() > 0) {
- // for (int j = 0; j < sysTenantMenuList.size(); j++) {
- // long MenuId = sysTenantMenuList.get(j).getMenuId();
- // if (Id == MenuId) {
- // sysMenuTwoVo.setChecked(true);
- // }
- // }
- // } else {
- // sysMenuTwoVo.setChecked(false);
- // }
- // MenuListOne.add(sysMenuTwoVo);
- // }
- //
- // for (int i = 0; i < sysMenuListOne.size(); i++) {
- // SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
- // sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
- // sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
- // sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
- // long id = sysMenuListOne.get(i).getMenuId();
- // List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
- // for (int j = 0; j < MenuListOne.size(); j++) {
- // long FId = MenuListOne.get(j).getFid();
- // if (id == FId) {
- // sysMenuVoListTwo.add(MenuListOne.get(j));
- // }
- // }
- // sysMenuOneVo.setAuthority(sysMenuVoListTwo);
- // if (sysMenuVoListTwo.size()>0){
- // sysMenuOneVo.setChecked(true);
- // }else {
- // sysMenuOneVo.setChecked(false);
- // }
- // MenuListTwo.add(sysMenuOneVo);
- // }
- // return MenuListTwo;
- // }
- public Map<String, Object> getMenuList(Integer platformId, Integer tenantId) {
- //全部目录查询
- List<SysMenu> sysMenuListTwo = baseMapper.getMenuList(platformId, "M");
- //全部菜单查询
- List<SysMenu> sysMenuListOne = baseMapper.getMenuList(platformId, "C");
- //全部按钮列表
- List<SysMenu> sysMenuListThree = baseMapper.getMenuList(platformId, "F");
- //已选中按钮列表
- LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
- queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
- List<SysTenantMenu> sysMenuListFour = sysTenantMenuService.list(queryWrapper);
- List<SysTenantMenu> menuList = baseMapper.getMenuListOne(tenantId, "F");
- Long[] arr = new Long[menuList.size()];
- for (int i = 0; i < menuList.size(); i++) {
- arr[i] = menuList.get(i).getMenuId();
- }
- List<SysMenuTwoVo> sysMenuVoListOne = new ArrayList<>();
- List<SysMenuOneVo> SysMenuVoList = new ArrayList<>();
- List<SysMenuVo> SysMenuVoListOne = new ArrayList<>();
- List<Object> list = new ArrayList<>();
- // if (sysMenuListFour.size()>0){
- for (int i = 0; i < sysMenuListThree.size(); i++) {
- SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
- sysMenuTwoVo.setId(sysMenuListThree.get(i).getMenuId());
- sysMenuTwoVo.setName(sysMenuListThree.get(i).getMenuName());
- sysMenuTwoVo.setFid(sysMenuListThree.get(i).getParentId());
- long Id = sysMenuListThree.get(i).getMenuId();
- sysMenuTwoVo.setChecked(false);
- if (sysMenuListFour.size() > 0) {
- for (int j = 0; j < sysMenuListFour.size(); j++) {
- long MenuId = sysMenuListFour.get(j).getMenuId();
- if (Id == MenuId) {
- sysMenuTwoVo.setChecked(true);
- }
- }
- } else {
- sysMenuTwoVo.setChecked(false);
- }
- sysMenuVoListOne.add(sysMenuTwoVo);
- }
- for (int i = 0; i < sysMenuListOne.size(); i++) {
- SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
- sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
- sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
- sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
- long id = sysMenuListOne.get(i).getMenuId();
- List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
- List<SysMenuTwoVo> menuListTrue = new ArrayList<>();
- for (int j = 0; j < sysMenuVoListOne.size(); j++) {
- long FId = sysMenuVoListOne.get(j).getFid();
- Boolean pd = sysMenuVoListOne.get(j).getChecked();
- if (id == FId) {
- sysMenuVoListTwo.add(sysMenuVoListOne.get(j));
- if (pd==true){
- menuListTrue.add(sysMenuVoListOne.get(j));
- }
- }
- }
- sysMenuOneVo.setAuthority(sysMenuVoListTwo);
- if (menuListTrue.size()>0){
- sysMenuOneVo.setChecked(true);
- }else {
- sysMenuOneVo.setChecked(false);
- }
- SysMenuVoList.add(sysMenuOneVo);
- }
- for (int i = 0; i < sysMenuListTwo.size(); i++) {
- SysMenuVo sysMenuVo = new SysMenuVo();
- sysMenuVo.setId(sysMenuListTwo.get(i).getMenuId());
- sysMenuVo.setMenu(sysMenuListTwo.get(i).getMenuName());
- sysMenuVo.setFid(sysMenuListTwo.get(i).getParentId());
- long id = sysMenuListTwo.get(i).getMenuId();
- List<SysMenuOneVo> SysMenuVoListThree = new ArrayList<>();
- List<SysMenuOneVo> menuListtrueOne = new ArrayList<>();
- for (int j = 0; j < SysMenuVoList.size(); j++) {
- long FId = SysMenuVoList.get(j).getFid();
- Boolean pd = SysMenuVoList.get(j).getChecked();
- if (id == FId) {
- SysMenuVoListThree.add(SysMenuVoList.get(j));
- if (pd==true){
- menuListtrueOne.add(SysMenuVoList.get(j));
- }
- }
- }
- sysMenuVo.setChildren(SysMenuVoListThree);
- if (menuListtrueOne.size()>0){
- sysMenuVo.setChecked(true);
- }else {
- sysMenuVo.setChecked(false);
- }
- SysMenuVoListOne.add(sysMenuVo);
- }
- for (int i = 0; i < SysMenuVoListOne.size(); i++) {
- String name = SysMenuVoListOne.get(i).getMenu();
- if (name.equals("数据管理") || name.equals("电能质量") || name.equals("系统管理")|| name.equals("租户管理")|| name.equals("统计管理")) {
- list.add(SysMenuVoListOne.get(i));
- } else {
- for (int j = 0; j < SysMenuVoList.size(); j++) {
- String name2 = SysMenuVoList.get(j).getMenu();
- if (name.equals(name2)) {
- list.add(SysMenuVoList.get(j));
- }
- }
- }
- }
- // }
- Map<String,Object> ajax = new HashMap<>();
- ajax.put("checkedKeys",arr);
- ajax.put("menus", list);
- return ajax;
- }
- @Override
- @Transactional
- public void updateMenu(TenantMenuVo tenantMenuVo)
- {
- Long[] arr = tenantMenuVo.getMenuIds();
- //菜单ID
- List<SysMenu> menuIdList = baseMapper.getMenuIdList(arr, "F");
- Long arr1[] = new Long[menuIdList.size()];
- for (int i=0;i<menuIdList.size();i++){
- arr1[i] = menuIdList.get(i).getParentId();
- }
- //目录ID
- List<SysMenu> menuIdListOne = baseMapper.getMenuIdList(arr1, "C");
- Long arr2[] = new Long[menuIdListOne.size()];
- for (int i=0;i<menuIdListOne.size();i++){
- arr2[i] = menuIdListOne.get(i).getParentId();
- }
- List<SysMenu> menuIdListTwo = baseMapper.getMenuIdList(arr, "C");
- Long arr4[] = new Long[menuIdListTwo.size()];
- for (int i=0;i<menuIdListTwo.size();i++){
- arr4[i] = menuIdListTwo.get(i).getParentId();
- }
- Long[] arr5 =arrayMerge(arr1,arr2);
- Long[] arr6 =arrayMerge(arr5,arr4);
- Long[] arr7 =arrayMerge(arr6,arr);
- List arr3 = new ArrayList();
- for (int i=0;i<arr7.length;i++){
- if(!arr3.contains(arr7[i])){
- arr3.add(arr7[i]);
- }
- }
- // Long[] arr3 =ifRepeat2(arr6);
- // Long arr3[] = new Long[arr1.length+arr2.length+arr.length];
- // for (int i=0;i<arr1.length;i++){
- // arr3[i] = arr1[i];
- // }
- // for (int i=0;i<arr2.length;i++){
- // arr3[i+arr1.length] = arr2[i];
- // }
- // for (int i=0;i<arr.length;i++){
- // arr3[i+arr1.length+arr2.length] = arr[i];
- // }
- // 删除租户菜单关联
- baseMapper.deleteTenantMenuBy(tenantMenuVo.getTenantId());
- //新增菜单
- if (arr3.size()>0){
- for (int i=0;i<arr3.size();i++){
- SysTenantMenu sysTenantMenu = new SysTenantMenu();
- sysTenantMenu.setMenuId((Long) arr3.get(i));
- sysTenantMenu.setTenantId(tenantMenuVo.getTenantId());
- sysTenantMenuService.save(sysTenantMenu);
- }
- }
- }
- public Long[] arrayMerge(Long[] arr1,Long[] arr2){
- Long arr3[] = new Long[arr1.length+arr2.length];
- for (int i=0;i<arr1.length;i++){
- arr3[i] = arr1[i];
- }
- for (int i=0;i<arr2.length;i++){
- arr3[i+arr1.length] = arr2[i];
- }
- return arr3;
- }
- public Object[] ifRepeat2(Object[] arr){
- //创建一个集合
- List list = new ArrayList();
- //遍历数组往集合里存元素
- for(int i=0;i<arr.length;i++){
- //如果集合里面没有相同的元素才往里存
- if(!list.contains(arr[i])){
- list.add(arr[i]);
- }
- }
- //toArray()方法会返回一个包含集合所有元素的Object类型数组
- Object[] newArr = list.toArray();
- return newArr;
- }
- }
|