SysPlatformMenuServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. package com.bizmatics.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.bizmatics.common.mvc.base.AbstractCrudService;
  5. import com.bizmatics.model.SysPlatformMenu;
  6. import com.bizmatics.model.SysTenantMenu;
  7. import com.bizmatics.model.system.SysMenu;
  8. import com.bizmatics.model.system.SysRole;
  9. import com.bizmatics.model.system.SysRoleMenu;
  10. import com.bizmatics.model.vo.SysMenuOneVo;
  11. import com.bizmatics.model.vo.SysMenuTwoVo;
  12. import com.bizmatics.model.vo.SysMenuVo;
  13. import com.bizmatics.model.vo.TenantMenuVo;
  14. import com.bizmatics.persistence.mapper.SysPlatformMenuMapper;
  15. import com.bizmatics.service.SysPlatformMenuService;
  16. import com.bizmatics.service.SysTenantMenuService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. /**
  25. * <p>
  26. * 平台和菜单关联表 服务实现类
  27. * </p>
  28. *
  29. * @author ya
  30. * @since 2022-05-18
  31. */
  32. @Service
  33. public class SysPlatformMenuServiceImpl extends AbstractCrudService<SysPlatformMenuMapper, SysPlatformMenu> implements SysPlatformMenuService {
  34. @Autowired
  35. private SysTenantMenuService sysTenantMenuService;
  36. // public List<SysMenuOneVo> getMenuList(Integer platformId, Integer tenantId){
  37. // List<SysMenuTwoVo> MenuListOne = new ArrayList<>();
  38. // List<SysMenuOneVo> MenuListTwo = new ArrayList<>();
  39. // //平台全部一级目录
  40. // List<SysMenu> sysMenuListOne=baseMapper.getMenuList(platformId,"M");
  41. // //平台全部二级目录
  42. // List<SysMenu> sysMenuListTwo=baseMapper.getMenuList(platformId,"C");
  43. // if (sysMenuListTwo.size()<0||sysMenuListOne.size()<0) {
  44. // throw new BusinessException("平台目录配置错误或尚未配置");
  45. // }
  46. // //租户所选中的目录
  47. // LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
  48. // queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
  49. // List<SysTenantMenu> sysTenantMenuList = sysTenantMenuService.list(queryWrapper);
  50. // for (int i = 0; i < sysMenuListTwo.size(); i++) {
  51. // SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
  52. // sysMenuTwoVo.setId(sysMenuListTwo.get(i).getMenuId());
  53. // sysMenuTwoVo.setName(sysMenuListTwo.get(i).getMenuName());
  54. // sysMenuTwoVo.setFid(sysMenuListTwo.get(i).getParentId());
  55. // long Id = sysMenuListTwo.get(i).getMenuId();
  56. // sysMenuTwoVo.setChecked(false);
  57. // if (sysTenantMenuList.size() > 0) {
  58. // for (int j = 0; j < sysTenantMenuList.size(); j++) {
  59. // long MenuId = sysTenantMenuList.get(j).getMenuId();
  60. // if (Id == MenuId) {
  61. // sysMenuTwoVo.setChecked(true);
  62. // }
  63. // }
  64. // } else {
  65. // sysMenuTwoVo.setChecked(false);
  66. // }
  67. // MenuListOne.add(sysMenuTwoVo);
  68. // }
  69. //
  70. // for (int i = 0; i < sysMenuListOne.size(); i++) {
  71. // SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
  72. // sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
  73. // sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
  74. // sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
  75. // long id = sysMenuListOne.get(i).getMenuId();
  76. // List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
  77. // for (int j = 0; j < MenuListOne.size(); j++) {
  78. // long FId = MenuListOne.get(j).getFid();
  79. // if (id == FId) {
  80. // sysMenuVoListTwo.add(MenuListOne.get(j));
  81. // }
  82. // }
  83. // sysMenuOneVo.setAuthority(sysMenuVoListTwo);
  84. // if (sysMenuVoListTwo.size()>0){
  85. // sysMenuOneVo.setChecked(true);
  86. // }else {
  87. // sysMenuOneVo.setChecked(false);
  88. // }
  89. // MenuListTwo.add(sysMenuOneVo);
  90. // }
  91. // return MenuListTwo;
  92. // }
  93. public Map<String, Object> getMenuList(Integer platformId, Integer tenantId) {
  94. //全部目录查询
  95. List<SysMenu> sysMenuListTwo = baseMapper.getMenuList(platformId, "M");
  96. //全部菜单查询
  97. List<SysMenu> sysMenuListOne = baseMapper.getMenuList(platformId, "C");
  98. //全部按钮列表
  99. List<SysMenu> sysMenuListThree = baseMapper.getMenuList(platformId, "F");
  100. //已选中按钮列表
  101. LambdaQueryWrapper<SysTenantMenu> queryWrapper = Wrappers.lambdaQuery();
  102. queryWrapper.eq(SysTenantMenu::getTenantId, tenantId);
  103. List<SysTenantMenu> sysMenuListFour = sysTenantMenuService.list(queryWrapper);
  104. List<SysTenantMenu> menuList = baseMapper.getMenuListOne(tenantId, "F");
  105. Long[] arr = new Long[menuList.size()];
  106. for (int i = 0; i < menuList.size(); i++) {
  107. arr[i] = menuList.get(i).getMenuId();
  108. }
  109. List<SysMenuTwoVo> sysMenuVoListOne = new ArrayList<>();
  110. List<SysMenuOneVo> SysMenuVoList = new ArrayList<>();
  111. List<SysMenuVo> SysMenuVoListOne = new ArrayList<>();
  112. List<Object> list = new ArrayList<>();
  113. // if (sysMenuListFour.size()>0){
  114. for (int i = 0; i < sysMenuListThree.size(); i++) {
  115. SysMenuTwoVo sysMenuTwoVo = new SysMenuTwoVo();
  116. sysMenuTwoVo.setId(sysMenuListThree.get(i).getMenuId());
  117. sysMenuTwoVo.setName(sysMenuListThree.get(i).getMenuName());
  118. sysMenuTwoVo.setFid(sysMenuListThree.get(i).getParentId());
  119. long Id = sysMenuListThree.get(i).getMenuId();
  120. sysMenuTwoVo.setChecked(false);
  121. if (sysMenuListFour.size() > 0) {
  122. for (int j = 0; j < sysMenuListFour.size(); j++) {
  123. long MenuId = sysMenuListFour.get(j).getMenuId();
  124. if (Id == MenuId) {
  125. sysMenuTwoVo.setChecked(true);
  126. }
  127. }
  128. } else {
  129. sysMenuTwoVo.setChecked(false);
  130. }
  131. sysMenuVoListOne.add(sysMenuTwoVo);
  132. }
  133. for (int i = 0; i < sysMenuListOne.size(); i++) {
  134. SysMenuOneVo sysMenuOneVo = new SysMenuOneVo();
  135. sysMenuOneVo.setId(sysMenuListOne.get(i).getMenuId());
  136. sysMenuOneVo.setMenu(sysMenuListOne.get(i).getMenuName());
  137. sysMenuOneVo.setFid(sysMenuListOne.get(i).getParentId());
  138. long id = sysMenuListOne.get(i).getMenuId();
  139. List<SysMenuTwoVo> sysMenuVoListTwo = new ArrayList<>();
  140. List<SysMenuTwoVo> menuListTrue = new ArrayList<>();
  141. for (int j = 0; j < sysMenuVoListOne.size(); j++) {
  142. long FId = sysMenuVoListOne.get(j).getFid();
  143. Boolean pd = sysMenuVoListOne.get(j).getChecked();
  144. if (id == FId) {
  145. sysMenuVoListTwo.add(sysMenuVoListOne.get(j));
  146. if (pd==true){
  147. menuListTrue.add(sysMenuVoListOne.get(j));
  148. }
  149. }
  150. }
  151. sysMenuOneVo.setAuthority(sysMenuVoListTwo);
  152. if (menuListTrue.size()>0){
  153. sysMenuOneVo.setChecked(true);
  154. }else {
  155. sysMenuOneVo.setChecked(false);
  156. }
  157. SysMenuVoList.add(sysMenuOneVo);
  158. }
  159. for (int i = 0; i < sysMenuListTwo.size(); i++) {
  160. SysMenuVo sysMenuVo = new SysMenuVo();
  161. sysMenuVo.setId(sysMenuListTwo.get(i).getMenuId());
  162. sysMenuVo.setMenu(sysMenuListTwo.get(i).getMenuName());
  163. sysMenuVo.setFid(sysMenuListTwo.get(i).getParentId());
  164. long id = sysMenuListTwo.get(i).getMenuId();
  165. List<SysMenuOneVo> SysMenuVoListThree = new ArrayList<>();
  166. List<SysMenuOneVo> menuListtrueOne = new ArrayList<>();
  167. for (int j = 0; j < SysMenuVoList.size(); j++) {
  168. long FId = SysMenuVoList.get(j).getFid();
  169. Boolean pd = SysMenuVoList.get(j).getChecked();
  170. if (id == FId) {
  171. SysMenuVoListThree.add(SysMenuVoList.get(j));
  172. if (pd==true){
  173. menuListtrueOne.add(SysMenuVoList.get(j));
  174. }
  175. }
  176. }
  177. sysMenuVo.setChildren(SysMenuVoListThree);
  178. if (menuListtrueOne.size()>0){
  179. sysMenuVo.setChecked(true);
  180. }else {
  181. sysMenuVo.setChecked(false);
  182. }
  183. SysMenuVoListOne.add(sysMenuVo);
  184. }
  185. for (int i = 0; i < SysMenuVoListOne.size(); i++) {
  186. String name = SysMenuVoListOne.get(i).getMenu();
  187. if (name.equals("数据管理") || name.equals("电能质量") || name.equals("系统管理")|| name.equals("租户管理")|| name.equals("统计管理")) {
  188. list.add(SysMenuVoListOne.get(i));
  189. } else {
  190. for (int j = 0; j < SysMenuVoList.size(); j++) {
  191. String name2 = SysMenuVoList.get(j).getMenu();
  192. if (name.equals(name2)) {
  193. list.add(SysMenuVoList.get(j));
  194. }
  195. }
  196. }
  197. }
  198. // }
  199. Map<String,Object> ajax = new HashMap<>();
  200. ajax.put("checkedKeys",arr);
  201. ajax.put("menus", list);
  202. return ajax;
  203. }
  204. @Override
  205. @Transactional
  206. public void updateMenu(TenantMenuVo tenantMenuVo)
  207. {
  208. Long[] arr = tenantMenuVo.getMenuIds();
  209. //菜单ID
  210. List<SysMenu> menuIdList = baseMapper.getMenuIdList(arr, "F");
  211. Long arr1[] = new Long[menuIdList.size()];
  212. for (int i=0;i<menuIdList.size();i++){
  213. arr1[i] = menuIdList.get(i).getParentId();
  214. }
  215. //目录ID
  216. List<SysMenu> menuIdListOne = baseMapper.getMenuIdList(arr1, "C");
  217. Long arr2[] = new Long[menuIdListOne.size()];
  218. for (int i=0;i<menuIdListOne.size();i++){
  219. arr2[i] = menuIdListOne.get(i).getParentId();
  220. }
  221. List<SysMenu> menuIdListTwo = baseMapper.getMenuIdList(arr, "C");
  222. Long arr4[] = new Long[menuIdListTwo.size()];
  223. for (int i=0;i<menuIdListTwo.size();i++){
  224. arr4[i] = menuIdListTwo.get(i).getParentId();
  225. }
  226. Long[] arr5 =arrayMerge(arr1,arr2);
  227. Long[] arr6 =arrayMerge(arr5,arr4);
  228. Long[] arr7 =arrayMerge(arr6,arr);
  229. List arr3 = new ArrayList();
  230. for (int i=0;i<arr7.length;i++){
  231. if(!arr3.contains(arr7[i])){
  232. arr3.add(arr7[i]);
  233. }
  234. }
  235. // Long[] arr3 =ifRepeat2(arr6);
  236. // Long arr3[] = new Long[arr1.length+arr2.length+arr.length];
  237. // for (int i=0;i<arr1.length;i++){
  238. // arr3[i] = arr1[i];
  239. // }
  240. // for (int i=0;i<arr2.length;i++){
  241. // arr3[i+arr1.length] = arr2[i];
  242. // }
  243. // for (int i=0;i<arr.length;i++){
  244. // arr3[i+arr1.length+arr2.length] = arr[i];
  245. // }
  246. // 删除租户菜单关联
  247. baseMapper.deleteTenantMenuBy(tenantMenuVo.getTenantId());
  248. //新增菜单
  249. if (arr3.size()>0){
  250. for (int i=0;i<arr3.size();i++){
  251. SysTenantMenu sysTenantMenu = new SysTenantMenu();
  252. sysTenantMenu.setMenuId((Long) arr3.get(i));
  253. sysTenantMenu.setTenantId(tenantMenuVo.getTenantId());
  254. sysTenantMenuService.save(sysTenantMenu);
  255. }
  256. }
  257. }
  258. public Long[] arrayMerge(Long[] arr1,Long[] arr2){
  259. Long arr3[] = new Long[arr1.length+arr2.length];
  260. for (int i=0;i<arr1.length;i++){
  261. arr3[i] = arr1[i];
  262. }
  263. for (int i=0;i<arr2.length;i++){
  264. arr3[i+arr1.length] = arr2[i];
  265. }
  266. return arr3;
  267. }
  268. public Object[] ifRepeat2(Object[] arr){
  269. //创建一个集合
  270. List list = new ArrayList();
  271. //遍历数组往集合里存元素
  272. for(int i=0;i<arr.length;i++){
  273. //如果集合里面没有相同的元素才往里存
  274. if(!list.contains(arr[i])){
  275. list.add(arr[i]);
  276. }
  277. }
  278. //toArray()方法会返回一个包含集合所有元素的Object类型数组
  279. Object[] newArr = list.toArray();
  280. return newArr;
  281. }
  282. }