Commit 2f44da71 sunke

菜单功能重构

1 个父辈 d89f1ab3
......@@ -8,6 +8,7 @@ import com.neotel.smfcore.core.message.service.manager.IMessageManager;
import com.neotel.smfcore.core.message.service.po.Message;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.util.OrderFileWatch;
import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.manager.IMenuManager;
import com.neotel.smfcore.security.service.manager.IRoleManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
......@@ -15,6 +16,7 @@ import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -30,6 +32,12 @@ public class DataInitManager {
public static Set<String> allPermissionSet;
@Value("${menu.show}")
private String[] menuShowList;
@Value("${menu.hide}")
private String[] menuHideList;
@Autowired
IUserManager userManager;
@Autowired
......@@ -70,47 +78,26 @@ public class DataInitManager {
//查询admin的用户是否存在
String userName = Constants.SUPER_USERNAME;
User admin = userManager.findByUserName(userName);
if (admin == null) {
log.info("开始创建默认菜单...");
Set<String> menuIdSet = MenuInitNew();
if (admin == null) {
log.info("开始创建默认用户...");
Set<String> groupIds = new HashSet<>();
Role role = new Role(menuIdSet, "admin", "admin");
Role role = new Role(new HashSet<>(), "admin", "admin");
role = roleManager.save(role);
log.info("创建默认角色:" + role.toString());
Role operator = new Role(menuIdSet, "operator", "operator");
Role operator = new Role(new HashSet<>(), "operator", "operator");
operator = roleManager.save(operator);
log.info("创建默认角色:" + operator.toString());
admin = new User(userName, "admin@qq.com", "zh-CN", role.getId(), "$2a$10$Egp1/gvFlt7zhlXVfEFw4OfWQCGPw0ClmMcc6FjTnvXNRVf9zdMRa", true, true, new Date(), groupIds, "");
userManager.save(admin);
admin = userManager.save(admin);
log.info("创建默认用户:" + admin.toString());
log.info("创建默认菜单完成...");
} else {
log.info("初始化环境完成...");
}
List<Menu> helpMenus = menuManager.findByQuery(new Query(Criteria.where("title").is("帮助")));
if (helpMenus == null || helpMenus.size() <= 0) {
Menu helpAbout = Menu.CreatePMenu("帮助", 30, "help", 2, "help");
Menu instruMenu = new Menu(new ArrayList<Menu>(), 1, "instruction", "说明书", 1, "instruction", "system/instruction/index", "", 0, "aboutBook");
Menu aboutMenu = new Menu(new ArrayList<Menu>(), 1, "about", "关于", 1, "about", "system/about/index", "", 0, "message");
createMenus(helpAbout, instruMenu, aboutMenu);
}
List<Menu> menus = menuManager.findByQuery(new Query(Criteria.where("path").ne("")));
for (Menu me : menus
) {
if (me.getTitleKey() == null || me.getTitleKey() == "") {
me.setTitleKey(me.getPath());
menuManager.saveMenu(me);
}
}
updateMenu(menuShowList,menuHideList);
mainTimer.init();
......@@ -123,13 +110,11 @@ public class DataInitManager {
Message message=Message.newMsg(MessageType.INFO ,"server", "", "", "smfcore.messages.serverStart","服务器启动",null);
messageManager.save(message);
} catch (Exception exception) {
log.error("初始化环境出错..." + exception.toString());
log.error("初始化环境出错..." + exception.toString(),exception);
}
}
private int sortValue=0;
private List<Menu> createMenus(Menu pMenu,Menu... subMenus) {
List<Menu> list = new ArrayList<Menu>();
......@@ -184,153 +169,214 @@ public class DataInitManager {
private Set<String> MenuInitNew() {
/**
* 循环创建父级菜单
*/
private Menu createMenu(Menu menu){
Menu dbMenu = menuManager.findByPath(menu.getPath());
if(dbMenu == null){
//数据库不存在,需要插入
Menu parentMenu = menu.getParentMenu();
if(parentMenu != null){
parentMenu = createMenu(parentMenu);
menu.setPid(parentMenu.getId());
menu.setParentMenu(parentMenu);
}
log.info("创建菜单:" + menu.toString());
dbMenu = menuManager.saveMenu(menu);
}
return dbMenu;
}
private void addNewFunctionMenu(Menu parentMenu,String permission, String title, String path, String component, String icon, Map<String,Menu> functionMenuMap){
Menu menu = new Menu(new ArrayList<Menu>(), 1, permission, title, 1, path, component,"",0, icon);
menu.setParentMenu(parentMenu);
functionMenuMap.put(menu.getPath(), menu);
}
private Map<String,Menu> getAllMenuMap(){
//功能菜单(不包含父级菜单),key为path
Map<String,Menu> functionMenuMap = new HashMap<>();
boolean isMimo=appType.equals("mimo");
List<Menu> menus = new ArrayList<Menu>();
//设备看板
Menu menukanban = new Menu(new ArrayList<Menu>(), 1, "boxkanban", "设备看板", 1, "lockMaterial", "lockMaterial/material/index", "", 0, "kanban");
menus.addAll(createMenus(menukanban));
// //料架分组
// Menu menuShelf = new Menu(new ArrayList<Menu>(), 1, "sensorShelf", "料架分组", 1, "lightGroup", "neolight/lightGroup/index", "", 0, "neo1");
// menuShelf.setHidden(true);
// menus.addAll(createMenus(menuShelf));
addNewFunctionMenu(null,"boxkanban", "设备看板","lockMaterial", "lockMaterial/material/index","kanban",functionMenuMap);
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
Menu poutOut = Menu.CreatePMenu("物料管理", 20, "order", 2, "workOrder");
Menu menuOrder = new Menu(new ArrayList<Menu>(), 1, "workOrder", "工单出库", 1, "workOrder", "neolight/workOrder/index", "", 0, "orderOut");
Menu out = Menu.CreatePMenu("查找出库", 20, "searchOut", 2, "findOut");
Menu menuOut = new Menu(new ArrayList<Menu>(), 1, "checkOut", "UID出库", 1, "singleOuput", "neolight/singleOuput/index", "", 0, "export1");
Menu celueOut = new Menu(new ArrayList<Menu>(), 1, "tacticsOuput", "PN出库", 1, "tacticsOuput", "neolight/tacticsOuput/index", "", 0, "tacticsOuput");
out.setChildren(Arrays.asList((new Menu[]{menuOut,celueOut})));
Menu posOut = new Menu(new ArrayList<Menu>(), 1, "posOutput", "库位出库", 1, "posOutput", "system/posOutput/index", "", 0, "swagger");
Menu groupOut = new Menu(new ArrayList<Menu>(), 1, "labelOuput", "物料标签", 1, "labelOuput", "neolight/labelOuput/index", "", 0, "mgroup");
// Menu manualOut = new Menu(new ArrayList<Menu>(), 1, "manualOut", "手动出库", 1, "manualOut", "neolight/manualOut/index", "", 0, "export1");
Menu materialBox = new Menu(new ArrayList<Menu>(), 1, "materialBox", "料盒操作", 1, "materialBox", "neolight/materialBox/index", "", 0, "mIbox");
Menu outSet = new Menu(new ArrayList<Menu>(), 1, "outSetting", "出库策略", 1, "outSetting", "system/outSetting/index", "", 0, "outSet");
// Menu orderSet = new Menu(new ArrayList<Menu>(), 1, "orderSetting", "工单设置", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
Menu inOrderMenu= new Menu(new ArrayList<Menu>(), 1, "inList", "入库单", 1, "inList", "system/inList/index", "", 0, "headIcon");
Menu putinMenu= new Menu(new ArrayList<Menu>(), 1, "putIn", "物料入库", 1, "putIn", "system/putIn/index", "", 0, "headIcon");
Menu zhuanruMenu= new Menu(new ArrayList<Menu>(), 1, "dumpWarehousing", "转储入库", 1, "dumpWarehousing", "system/dumpWarehousing/index", "", 0, "headIcon");
Menu singleMenu= new Menu(new ArrayList<Menu>(), 1, "singleDiskWarehousing", "单盘入库", 1, "singleDiskWarehousing", "system/singleDiskWarehousing/index", "", 0, "headIcon");
Menu sluggishMaterials= new Menu(new ArrayList<Menu>(), 1, "sluggishMaterials", "呆滞物料", 1, "sluggishMaterials", "system/sluggishMaterials/index", "", 0, "sMaterial");
Menu safetyInventory= new Menu(new ArrayList<Menu>(), 1, "safetyInventory", "安全库存", 1, "safetyInventory", "system/safetyInventory/index", "", 0, "safeInventory");
celueOut.setHidden(true);
groupOut.setHidden(true);
materialBox.setHidden(true);
outSet.setHidden(true);
posOut.setHidden(true);
zhuanruMenu.setHidden(true);
singleMenu.setHidden(true);
inOrderMenu.setHidden(isMimo);
putinMenu.setHidden(isMimo);
// orderSet.setHidden(true);
menus.addAll(createMenus(poutOut, menuOrder, out,posOut,groupOut,materialBox,outSet,inOrderMenu,putinMenu,zhuanruMenu,singleMenu,sluggishMaterials,safetyInventory));
Menu poutOut = Menu.CreatePMenu("物料管理", 1, "order", 2, "workOrder", null);
Menu out = Menu.CreatePMenu("查找出库", 11, "searchOut", 2, "findOut",poutOut);
addNewFunctionMenu(out,"checkOut", "UID出库", "singleOuput", "neolight/singleOuput/index","export1",functionMenuMap);
addNewFunctionMenu(out,"tacticsOuput", "PN出库", "tacticsOuput", "neolight/tacticsOuput/index", "tacticsOuput",functionMenuMap);
addNewFunctionMenu(poutOut,"posOutput", "库位出库", "posOutput", "system/posOutput/index", "swagger",functionMenuMap);
addNewFunctionMenu(poutOut, "labelOuput", "物料标签", "labelOuput", "neolight/labelOuput/index", "mgroup",functionMenuMap);
addNewFunctionMenu(poutOut, "materialBox", "料盒操作", "materialBox", "neolight/materialBox/index", "mIbox",functionMenuMap);
addNewFunctionMenu(poutOut, "outSetting", "出库策略", "outSetting", "system/outSetting/index", "outSet",functionMenuMap);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addNewFunctionMenu(poutOut, "inList", "入库单", "inList", "system/inList/index", "headIcon",functionMenuMap);
addNewFunctionMenu(poutOut, "putIn", "物料入库", "putIn", "system/putIn/index", "headIcon",functionMenuMap);
addNewFunctionMenu(poutOut, "dumpWarehousing", "转储入库", "dumpWarehousing", "system/dumpWarehousing/index", "headIcon",functionMenuMap);
addNewFunctionMenu(poutOut, "singleDiskWarehousing", "单盘入库", "singleDiskWarehousing", "system/singleDiskWarehousing/index", "headIcon",functionMenuMap);
addNewFunctionMenu(poutOut, "sluggishMaterials", "呆滞物料", "sluggishMaterials", "system/sluggishMaterials/index", "sMaterial",functionMenuMap);
addNewFunctionMenu(poutOut, "safetyInventory", "安全库存", "safetyInventory", "system/safetyInventory/index", "safeInventory",functionMenuMap);
//MSD管理:MSD库存.MSD追溯性.MSD设置
Menu msd = Menu.CreatePMenu("MSD管理", 20, "msd", 2, "MSD");
Menu msdManage = new Menu(new ArrayList<Menu>(), 1, "msdManage", "MSD库存", 1, "msdManage", "neolight/msdManage/index", "", 0, "MSDManager");
Menu msdData = new Menu(new ArrayList<Menu>(), 1, "msdData", "MSD追溯性", 1, "msdData", "neolight/msdData/index", "", 0, "MSDData");
Menu msdSetting = new Menu(new ArrayList<Menu>(), 1, "msdSetting", "MSD设置", 1, "msdSetting", "neolight/msdSetting/index", "", 0, "MSDSet");
msd.setHidden(true);
menus.addAll(createMenus(msd,msdManage,msdData,msdSetting));
Menu msd = Menu.CreatePMenu("MSD管理", 2, "msd", 2, "MSD",null);
addNewFunctionMenu(msd, "msdManage", "MSD库存", "msdManage", "neolight/msdManage/index", "MSDManager",functionMenuMap);
addNewFunctionMenu(msd, "msdData", "MSD追溯性", "msdData", "neolight/msdData/index", "MSDData",functionMenuMap);
addNewFunctionMenu(msd, "msdSetting", "MSD设置", "msdSetting", "neolight/msdSetting/index", "MSDSet",functionMenuMap);
//锡膏管理:设备概览.库存.追溯性.设置
Menu solderPaste = Menu.CreatePMenu("锡膏管理", 20, "solderPaste", 2, "sMana");
Menu solderPasteKanban = new Menu(new ArrayList<Menu>(), 1, "solderPasteKanban", "设备概览", 1, "solderPasteKanban", "neolight/solderPasteKanban/index", "", 0, "sKanban");
Menu solderPasteManage = new Menu(new ArrayList<Menu>(), 1, "solderPasteManage", "库存", 1, "solderPasteManage", "neolight/solderPasteManage/index", "", 0, "solder");
Menu solderPasteData = new Menu(new ArrayList<Menu>(), 1, "solderPasteData", "追溯性", 1, "solderPasteData", "neolight/solderPasteData/index", "", 0, "sData");
Menu solderPasteSetting = new Menu(new ArrayList<Menu>(), 1, "solderPasteSetting", "设置", 1, "solderPasteSetting", "neolight/solderPasteSetting/index", "", 0, "system");
solderPaste.setHidden(true);
menus.addAll(createMenus(solderPaste,solderPasteKanban,solderPasteManage,solderPasteData,solderPasteSetting));
//物料管理:元器件,条形码,条码设置
Menu pMenuWl = Menu.CreatePMenu("档案管理", 30, "materiel ", 2, "BOM");
Menu menucom = new Menu(new ArrayList<Menu>(), 1, "component:list", "元器件", 1, "componentParts", "parts/component/index", "", 0, "server");
// Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条形码", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
// Menu sysSetting = new Menu(new ArrayList<Menu>(), 1, "barcode", "条码设置", 1, "barcodeSetting", "system/barcodeSetting/index", "", 0, "barcode");
// menus.addAll(createMenus(pMenuWl, menucom, menubarcode,sysSetting));
menus.addAll(createMenus(pMenuWl, menucom));
Menu pMenuBarcode = Menu.CreatePMenu("条形码", 30, "barcodes ", 2, "barcodeMenu");
Menu menubarcode = new Menu(new ArrayList<Menu>(), 1, "barcode:list", "条码管理", 1, "barcode", "barcode/barcode/index", "", 0, "chart");
Menu sysSetting = new Menu(new ArrayList<Menu>(), 1, "barcode", "条码设置", 1, "barcodeSetting", "system/barcodeSetting/index", "", 0, "barcode");
menus.addAll(createMenus(pMenuBarcode, menubarcode,sysSetting));
Menu solderPaste = Menu.CreatePMenu("锡膏管理", 3, "solderPaste", 2, "sMana",null);
addNewFunctionMenu(solderPaste, "solderPasteKanban", "设备概览","solderPasteKanban", "neolight/solderPasteKanban/index","sKanban",functionMenuMap);
addNewFunctionMenu(solderPaste, "solderPasteManage", "库存", "solderPasteManage", "neolight/solderPasteManage/index","solder",functionMenuMap);
addNewFunctionMenu(solderPaste, "solderPasteData", "追溯性", "solderPasteData", "neolight/solderPasteData/index","sData",functionMenuMap);
addNewFunctionMenu(solderPaste,"solderPasteSetting", "设置", "solderPasteSetting", "neolight/solderPasteSetting/index","system",functionMenuMap);
//档案管理:元器件
Menu pMenuWl = Menu.CreatePMenu("档案管理", 4, "materiel ", 2, "BOM",null);
addNewFunctionMenu(pMenuWl,"component:list", "元器件","componentParts", "parts/component/index","server",functionMenuMap);
//条形码:条码管理,条码设置
Menu pMenuBarcode = Menu.CreatePMenu("条形码", 5, "barcodes ", 2, "barcodeMenu",null);
addNewFunctionMenu(pMenuBarcode, "barcode:list", "条码管理", "barcode", "barcode/barcode/index","chart",functionMenuMap);
addNewFunctionMenu(pMenuBarcode, "barcode", "条码设置","barcodeSetting", "system/barcodeSetting/index", "barcode",functionMenuMap);
//日志管理:物料日志
Menu pMenuLog = Menu.CreatePMenu("日志管理", 30, "log", 2, "log");
Menu menuLog = new Menu(new ArrayList<Menu>(), 1, "taskLog", "物料日志", 1, "taskLog", "neolight/taskLog/index", "", 0, "education");
Menu msgLog = new Menu(new ArrayList<Menu>(), 1, "message", "消息查询", 1, "message", "neolight/message/index", "", 0, "messagefind");
Menu exceptionLog = new Menu(new ArrayList<Menu>(), 1, "interfaceException", "接口异常", 1, "interfaceException", "neolight/interfaceException/index", "", 0, "messagefind");
exceptionLog.setHidden(true);
menus.addAll(createMenus(pMenuLog, menuLog,msgLog,exceptionLog));
Menu pMenuLog = Menu.CreatePMenu("日志管理", 6, "log", 2, "log",null);
addNewFunctionMenu(pMenuLog, "taskLog", "物料日志", "taskLog", "neolight/taskLog/index", "education",functionMenuMap);
addNewFunctionMenu(pMenuLog, "message", "消息查询", "message", "neolight/message/index", "messagefind",functionMenuMap);
addNewFunctionMenu(pMenuLog, "interfaceException", "接口异常", "interfaceException", "neolight/interfaceException/index", "messagefind",functionMenuMap);
//报表:出入库、库存
Menu pMenuReport = Menu.CreatePMenu("报表", 30, "report", 2, "inOutData");
Menu inOutMenu = new Menu(new ArrayList<Menu>(), 1, "inOutData", "出入库", 1, "inOutData", "neolight/inOutData/index", "", 0, "outPut");
Menu inventoryMenu = new Menu(new ArrayList<Menu>(), 1, "inventory", "库存", 1, "inventory", "neolight/inventory/index", "", 0, "inventory");
menus.addAll(createMenus(pMenuReport, inOutMenu,inventoryMenu));
Menu pMenuReport = Menu.CreatePMenu("报表", 7, "report", 2, "inOutData",null);
addNewFunctionMenu(pMenuReport, "inOutData", "出入库", "inOutData", "neolight/inOutData/index", "outPut",functionMenuMap);
addNewFunctionMenu(pMenuReport,"inventory", "库存", "inventory", "neolight/inventory/index", "inventory",functionMenuMap);
//可观测性:物料追踪
Menu guanceMenu = Menu.CreatePMenu("可观测性", 30, "observability", 2, "scanKey");
Menu zuizongMenu = new Menu(new ArrayList<Menu>(), 1, "materialChart", "物料追踪", 1, "materialChart", "neolight/materialChart/index", "", 0, "maChart");
guanceMenu.setHidden(true);
menus.addAll(createMenus(guanceMenu, zuizongMenu));
Menu guanceMenu = Menu.CreatePMenu("可观测性", 8, "observability", 2, "scanKey",null);
addNewFunctionMenu(guanceMenu, "materialChart", "物料追踪", "materialChart", "neolight/materialChart/index", "maChart",functionMenuMap);
//物联网:共享文件夹
Menu pMenuWulian = Menu.CreatePMenu("物联网", 30, "internet", 2, "interMenu");
Menu orderSet = new Menu(new ArrayList<Menu>(), 1, "orderSetting", "共享文件夹", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
orderSet.setHidden(true);
pMenuWulian.setHidden(true);
menus.addAll(createMenus(pMenuWulian, orderSet));
Menu pMenuWulian = Menu.CreatePMenu("物联网", 9, "internet", 2, "interMenu",null);
addNewFunctionMenu(pMenuWulian, "orderSetting", "共享文件夹", "orderSetting", "system/orderSetting/index", "sysSet",functionMenuMap);
//设置:料仓管理,菜单管理
Menu poutSet = Menu.CreatePMenu("设置", 30, "system", 2, "system");
Menu menuStorage = new Menu(new ArrayList<Menu>(), 1, "storage:list", "设备管理", 1, "bunker", "storage/storage/index", "", 0, "database");
Menu menuStoragePos = new Menu(new ArrayList<Menu>(), 1, "storagePos:list", "库位管理", 1, "storagePos", "storagePos/storagePos/index", "", 0, "tree-table");
Menu menuMenu = new Menu(new ArrayList<Menu>(), 1, "menu:list", "菜单管理", 1, "menu", "system/menu/index", "", 0, "menu");
// Menu sysSetting = new Menu(new ArrayList<Menu>(), 1, "barcode", "条码设置", 1, "barcodeSetting", "system/barcodeSetting/index", "", 0, "database");
// Menu outSet = new Menu(new ArrayList<Menu>(), 1, "outSetting", "出库策略", 1, "outSetting", "system/outSetting/index", "", 0, "outSet");
Menu sysSet = new Menu(new ArrayList<Menu>(), 1, "sysSetting", "系统设置", 1, "sysSetting", "system/sysSetting/index", "", 0, "sysSet");
Menu translationSet = new Menu(new ArrayList<Menu>(), 1, "translation", "资源翻译", 1, "translation", "system/translation/index", "", 0, "translation");
// Menu orderSet = new Menu(new ArrayList<Menu>(), 1, "orderSetting", "工单设置", 1, "orderSetting", "system/orderSetting/index", "", 0, "sysSet");
Menu shelfMenu = new Menu(new ArrayList<Menu>(), 1, "shelfSetting", "料架设置", 1, "shelfSetting", "system/shelfSetting/index", "", 0, "translation");
// outSet.setHidden(true);
// orderSet.setHidden(true);
menuMenu.setHidden(true);
translationSet.setHidden(true);
shelfMenu.setHidden(isMimo);
menus.addAll(createMenus(poutSet, menuStorage, menuStoragePos, menuMenu,sysSet,translationSet,shelfMenu));
Menu poutSet = Menu.CreatePMenu("设置", 10, "system", 2, "system",null);
addNewFunctionMenu(poutSet, "storage:list", "设备管理", "bunker", "storage/storage/index", "database",functionMenuMap);
addNewFunctionMenu(poutSet, "storagePos:list", "库位管理", "storagePos", "storagePos/storagePos/index", "tree-table",functionMenuMap);
addNewFunctionMenu(poutSet, "menu:list", "菜单管理", "menu", "system/menu/index", "menu",functionMenuMap);
// Menu sysSetting = new Menu(, "barcode", "条码设置", "barcodeSetting", "system/barcodeSetting/index", "database");
// Menu outSet = new Menu(, "outSetting", "出库策略", "outSetting", "system/outSetting/index", "outSet");
addNewFunctionMenu(poutSet, "sysSetting", "系统设置", "sysSetting", "system/sysSetting/index", "sysSet",functionMenuMap);
addNewFunctionMenu(poutSet, "translation", "资源翻译", "translation", "system/translation/index", "translation",functionMenuMap);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addNewFunctionMenu(poutSet, "shelfSetting", "料架设置", "shelfSetting", "system/shelfSetting/index", "translation",functionMenuMap);
//用户管理:用户管理,角色管理
Menu pMenuUser = Menu.CreatePMenu("用户管理", 11, "userManager", 2, "Steve-Jobs", null);
addNewFunctionMenu(pMenuUser,"user:list", "用户管理", "peoples", "system/user/index", "peoples",functionMenuMap);
addNewFunctionMenu(pMenuUser,"role:list", "角色管理", "role", "system/role/index", "role",functionMenuMap);
Menu pMenuUser = Menu.CreatePMenu("用户管理", 30, "userManager", 2, "Steve-Jobs");
Menu menuUser = new Menu(new ArrayList<Menu>(), 1, "user:list", "用户管理", 1, "peoples", "system/user/index", "", 0, "peoples");
Menu menuRole = new Menu(new ArrayList<Menu>(), 1, "role:list", "角色管理", 1, "role", "system/role/index", "", 0, "role");
menus.addAll(createMenus(pMenuUser, menuUser, menuRole));
Menu helpAbout = Menu.CreatePMenu("帮助", 12, "help", 2, "help",null);
addNewFunctionMenu(helpAbout, "instruction", "说明书", "instruction", "system/instruction/index","aboutBook",functionMenuMap);
addNewFunctionMenu(helpAbout, "about", "关于","about", "system/about/index","message",functionMenuMap);
Menu helpAbout = Menu.CreatePMenu("帮助", 30, "help", 2, "help");
Menu instruMenu = new Menu(new ArrayList<Menu>(), 1, "instruction", "说明书", 1, "instruction", "system/instruction/index", "", 0, "aboutBook");
Menu aboutMenu = new Menu(new ArrayList<Menu>(), 1, "about", "关于", 1, "about", "system/about/index", "", 0, "message");
instruMenu.setHidden(true);
menus.addAll(createMenus(helpAbout,instruMenu,aboutMenu));
return functionMenuMap;
}
Set<String> menuIdSet = new HashSet<String>() {};
for (Menu menu : menus) {
log.info("创建默认菜单:" + menu.toString());
menuIdSet.add(menu.getId());
private void updateMenu(String[] menuListToShow, String[] menuListToHide){
List<Menu> dbMenus = menuManager.findAll();
if(dbMenus.isEmpty()){
log.info("创建默认菜单...");
menuListToShow = new String[]{
"lockMaterial", //设备看板
"singleOuput",
"tacticsOuput",
"outSetting",
"componentParts",
"barcode",
"barcodeSetting",
"taskLog",
"inOutData", //报表->出入库
"inventory", //报表->库存
"bunker", //设备管理
"storagePos", //库位管理
//"sysSetting", //系统设置
"peoples", //用户管理
"role" //角色管理
};
}
Map<String, Menu> allMenus = getAllMenuMap();
Set<String> showIdSet = showMenu(allMenus,menuListToShow);
Set<String> hideIdSet = hideMenu(allMenus, menuListToHide);
if(!showIdSet.isEmpty() || !hideIdSet.isEmpty()){
List<Role> roles = roleManager.findByQuery(new Query(Criteria.where("name").is("admin")));
Role roleAdmin = roles.get(0);
Set<String> roleMenus = roleAdmin.getMenus();
roleMenus.addAll(showIdSet);
roleMenus.removeAll(hideIdSet);
roleManager.saveRole(roleAdmin);
}
}
/**
* 循环添加菜单ID(父级菜单也会添加)
*/
private void addToMenuIdSet(Set<String> menuIdSet,Menu menu){
menuIdSet.add(menu.getId());
if(menu.getParentMenu() != null){
addToMenuIdSet(menuIdSet,menu.getParentMenu());
}
}
/**
* 展示菜单
*/
private Set<String> showMenu(Map<String, Menu> allMenu, String[] menuListToShow){
Set<String> showIdSet = new HashSet<>();
for (String showPath : menuListToShow) {
Menu showMenu = allMenu.get(showPath);
if(showMenu != null){
showMenu = createMenu(showMenu);
log.info("展示菜单:" + showMenu.getPath());
addToMenuIdSet(showIdSet,showMenu);
}else{
log.error("展示菜单:" + showPath + "不存在");
}
}
return showIdSet;
}
/**
* 隐藏菜单
*/
private Set<String> hideMenu(Map<String, Menu> allMenu, String[] menuListToHide){
Set<String> hideIdSet = new HashSet<>();
for (String showPath : menuListToHide) {
Menu hideMenu = allMenu.get(showPath);
if(hideMenu != null){
hideMenu = menuManager.findByPath(hideMenu.getPath());
if(hideMenu != null){
hideMenu.setHidden(true);
menuManager.saveMenu(hideMenu);
log.info("隐藏菜单:" + hideMenu.getPath());
addToMenuIdSet(hideIdSet,hideMenu);
}
}else{
log.error("菜单:" + showPath + "不存在");
}
}
return menuIdSet;
return hideIdSet;
}
}
......@@ -169,6 +169,10 @@ public class PermissionInitUtil {
if (targetStr.contains("@el.check")) {
int endIndex = targetStr.length() - 2;
if(endIndex <= 11){
log.error("path="+path+"的权限定义"+targetStr+"异常,忽略");
continue;
}
targetStr = targetStr.substring(11, endIndex);
String[] targetArray = targetStr.split("','");
tList = Lists.newArrayList(targetArray);
......@@ -188,7 +192,7 @@ public class PermissionInitUtil {
resMap.put(path, tbPer);
} catch (Exception ex) {
log.error("解析 path=" + path + " 出错: " + ex.toString());
log.error("解析 path=" + path + " 出错: ",ex);
}
}
......
......@@ -117,8 +117,7 @@ public class LanguageMsgService {
List<String> list = getAllLanList();
list.add("");
for (String lan :
list) {
for (String lan : list) {
String[] array = lan.split("-");
Locale locale = null;
if (array.length == 2) {
......
......@@ -84,4 +84,6 @@ public interface IMenuManager extends IBaseManager<Menu> {
void delete(Set<Menu> menuSet) throws ValidateException;
Menu saveMenu(Menu menu) throws ValidateException;
Menu findByPath(String path);
}
......@@ -7,7 +7,6 @@ import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.vo.MenuMetaVo;
import com.neotel.smfcore.security.rest.bean.vo.MenuVo;
import com.neotel.smfcore.security.service.dao.IMenuDao;
......@@ -18,7 +17,6 @@ import com.neotel.smfcore.security.service.po.Menu;
import com.neotel.smfcore.security.service.po.Role;
import com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
......@@ -326,6 +324,11 @@ public class MenuManagerImpl implements IMenuManager {
return menuDao.save(menu);
}
@Override
public Menu findByPath(String path){
return menuDao.findOneByCondition(new String[]{"path"}, new String[]{path});
}
// /**
// * 清理缓存
// * @param id 菜单ID
......
......@@ -19,6 +19,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.core.language.util.MessageUtils;
import lombok.*;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
......@@ -98,6 +99,12 @@ public class Menu extends BasePo implements Serializable {
*/
private String titleKey;
/**
* 父级菜单,主要用于初始化菜单,不存数据库
*/
@Transient
private Menu parentMenu;
public Boolean getHasChildren() {
if(subCount==0){
return false;
......@@ -159,16 +166,16 @@ public class Menu extends BasePo implements Serializable {
* 此方法用于构建权限菜单,type=2
*/
public static Menu CreatePerMenu( final String permission, final String title, final String pid ) {
Menu menu=new Menu(new ArrayList<Menu>(),2,permission,title,999,"","",pid,0,false,false,false,"","","");
Menu menu=new Menu(new ArrayList<Menu>(),2,permission,title,999,"","",pid,0,false,false,false,"","","",null);
return menu;
}
/**
* 此方法用户创建只用于显示的一级菜单,type=0
*/
public static Menu CreatePMenu( final String title, final Integer menuSort, final String path, final Integer subCount, final String icon ) {
public static Menu CreatePMenu( final String title, final Integer menuSort, final String path, final Integer subCount, final String icon, Menu parentMenu ) {
String titleKey=path;
Menu menu = new Menu(new ArrayList<Menu>(), 0, "", title, menuSort, path, "", "", subCount, false, false, false, title, icon,titleKey);
Menu menu = new Menu(new ArrayList<Menu>(), 0, "", title, menuSort, path, "", "", subCount, false, false, false, title, icon,titleKey,parentMenu);
return menu;
}
......
......@@ -34,7 +34,7 @@ spring:
mongodb:
host: localhost # 主机地址
port: 27017 # 端口
database: smf # 数据库
database: smf-test # 数据库
messages:
encoding: utf-8
main:
......@@ -47,4 +47,8 @@ rsa:
app:
version: '1.25.0517'
type: ""
\ No newline at end of file
type: ""
menu:
show:
hide:
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!