package com.highdatas.mdm.service.impl; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.highdatas.mdm.entity.Maintain; import com.highdatas.mdm.entity.SysMenu; import com.highdatas.mdm.mapper.SysMenuMapper; import com.highdatas.mdm.pojo.ActivitiStatus; import com.highdatas.mdm.service.IMaintainService; import com.highdatas.mdm.service.IMenuMappingService; import com.highdatas.mdm.service.ISysMenuService; import com.highdatas.mdm.util.NoticeClient; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author kimi * @since 2019-12-16 */ @Service public class SysMenuServiceImpl extends ServiceImpl implements ISysMenuService { @Autowired ISysMenuService menuService; @Autowired IMaintainService maintainService; @Autowired IMenuMappingService menuMappingService; @Autowired NoticeClient noticeClient; /** * * @description: 通过子主题获取去重后的父主题 * @param parentIdSet 子主题id集合 * @return: 添加了父主题的id集合 * */ @Override public LinkedHashSet getByParentId(LinkedHashSet parentIdSet) { if (parentIdSet.size() == 0) { return null; } LinkedHashSet subSet = new LinkedHashSet<>(); for (String s : parentIdSet) { SysMenu sysMenu = menuService.selectById(s); if (sysMenu == null) { continue; } String parentId = sysMenu.getParentId(); if (StringUtils.isEmpty(parentId)) { continue; } subSet.add(parentId); } LinkedHashSet byParentId = getByParentId(subSet); if (byParentId != null) { parentIdSet.addAll(byParentId); } return parentIdSet; } /** * * @description: 通过子主题获取去重后的父主题 * @param parentIdSet 子主题id集合 * @return: 添加了父主题的对象集合 * */ @Override public List getMenuByParentId(LinkedHashSet parentIdSet) { LinkedHashSet byParentId = getByParentId(parentIdSet); if (byParentId == null) { return new ArrayList<>(); } List sysMenus = selectBatchIds(byParentId); List result = new ArrayList(); for (String s : byParentId) { List collect = sysMenus.stream().filter(sysMenu -> sysMenu.getId().equalsIgnoreCase(s)).collect(Collectors.toList()); if (!collect.isEmpty()) { result.add(collect.get(0)); } } Collections.reverse(result); return result; } /** * * @description: 审批通过后的发送消息 * @param maintainId 版本id * @param status 审批状态 * @param userId 用户id * @return: * */ @Override public void dealFlow(String maintainId, ActivitiStatus status, String userId) { if (!status.equals(ActivitiStatus.open)) { return; } Maintain maintain = maintainService.selectById(maintainId); SysMenu menuByTableName = menuMappingService.getMenuByTableName(maintain.getTableName()); LinkedHashSet parentIdSet = new LinkedHashSet<>(); parentIdSet.add(menuByTableName.getId()); LinkedHashSet byParentId = getByParentId(parentIdSet); if (byParentId == null) { noticeClient.openByAddMenu(menuByTableName, null, userId); } else { List sysMenus = menuService.selectBatchIds(byParentId); SysMenu menu = sysMenus.get(0); noticeClient.openByAddMenu(menuByTableName, menu, userId); } } }