Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
smf-core
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 112e597a
由
sunke
编写于
2022-12-15 12:02:56 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
菜单重构
1 个父辈
7abd1e25
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
417 行增加
和
246 行删除
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
src/main/java/com/neotel/smfcore/core/api/SmfApi.java
src/main/java/com/neotel/smfcore/custom/haman/HamanMenu.java
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
src/main/resources/config/application.yml
src/main/java/com/neotel/smfcore/common/init/DataInitManager.java
查看文件 @
112e597
...
...
@@ -17,6 +17,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
;
...
...
@@ -43,14 +44,15 @@ public class DataInitManager {
@Autowired
IRoleManager
roleManager
;
@Autowired
IMenuManager
menuManager
;
@Autowired
DataCache
dataCache
;
@Autowired
MainTimer
mainTimer
;
@Autowired
MenuInit
menuInit
;
@Autowired
PermissionInitUtil
annotationUtil
;
@Autowired
...
...
@@ -66,16 +68,10 @@ public class DataInitManager {
@Value
(
"${app.version}"
)
private
String
version
;
/**
* 是否是mimo专用版本
*/
@Value
(
"${app.type}"
)
private
String
appType
=
""
;
@PostConstruct
public
void
DataInit
()
{
try
{
log
.
info
(
"smfcore Version:["
+
version
+
"],
类型["
+
appType
+
"]。
初始化环境..."
);
log
.
info
(
"smfcore Version:["
+
version
+
"],
初始化环境..."
);
//查询admin的用户是否存在
String
userName
=
Constants
.
SUPER_USERNAME
;
User
admin
=
userManager
.
findByUserName
(
userName
);
...
...
@@ -98,7 +94,7 @@ public class DataInitManager {
log
.
info
(
"初始化环境完成..."
);
}
updateMenu
(
menuShowList
,
menuHideList
);
menuInit
.
updateMenu
(
menuShowList
,
menuHideList
);
mainTimer
.
init
();
...
...
@@ -117,226 +113,4 @@ public class DataInitManager {
log
.
error
(
"初始化环境出错..."
+
exception
.
toString
(),
exception
);
}
}
/**
* 循环创建父级菜单
*/
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
(
int
menuSort
,
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
,
menuSort
,
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
<>();
//AGV看板
addNewFunctionMenu
(
1
,
null
,
"agvkanban"
,
"AGV看板"
,
"agvkanban"
,
"agv/agvkanban/index"
,
"agv"
,
functionMenuMap
);
//设备看板
addNewFunctionMenu
(
1
,
null
,
"boxkanban"
,
"设备看板"
,
"lockMaterial"
,
"lockMaterial/material/index"
,
"kanban"
,
functionMenuMap
);
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
Menu
poutOut
=
Menu
.
CreatePMenu
(
"物料管理"
,
1
,
"order"
,
2
,
"workOrder"
,
null
);
Menu
out
=
Menu
.
CreatePMenu
(
"查找出库"
,
11
,
"searchOut"
,
2
,
"findOut"
,
poutOut
);
addNewFunctionMenu
(
1
,
out
,
"checkOut"
,
"UID出库"
,
"singleOuput"
,
"neolight/singleOuput/index"
,
"export1"
,
functionMenuMap
);
addNewFunctionMenu
(
2
,
out
,
"tacticsOuput"
,
"PN出库"
,
"tacticsOuput"
,
"neolight/tacticsOuput/index"
,
"tacticsOuput"
,
functionMenuMap
);
addNewFunctionMenu
(
1
,
poutOut
,
"workOrder"
,
"工单出库"
,
"workOrder"
,
"neolight/workOrder/index"
,
"orderOut"
,
functionMenuMap
);
addNewFunctionMenu
(
2
,
poutOut
,
"posOutput"
,
"库位出库"
,
"posOutput"
,
"system/posOutput/index"
,
"swagger"
,
functionMenuMap
);
addNewFunctionMenu
(
3
,
poutOut
,
"labelOuput"
,
"物料标签"
,
"labelOuput"
,
"neolight/labelOuput/index"
,
"mgroup"
,
functionMenuMap
);
addNewFunctionMenu
(
4
,
poutOut
,
"materialBox"
,
"料盒操作"
,
"materialBox"
,
"neolight/materialBox/index"
,
"mIbox"
,
functionMenuMap
);
addNewFunctionMenu
(
12
,
poutOut
,
"outSetting"
,
"出库策略"
,
"outSetting"
,
"system/outSetting/index"
,
"outSet"
,
functionMenuMap
);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addNewFunctionMenu
(
5
,
poutOut
,
"inList"
,
"入库单"
,
"inList"
,
"system/inList/index"
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
6
,
poutOut
,
"putIn"
,
"物料入库"
,
"putIn"
,
"system/putIn/index"
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
7
,
poutOut
,
"dumpWarehousing"
,
"转储入库"
,
"dumpWarehousing"
,
"system/dumpWarehousing/index"
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
8
,
poutOut
,
"singleDiskWarehousing"
,
"单盘入库"
,
"singleDiskWarehousing"
,
"system/singleDiskWarehousing/index"
,
"headIcon"
,
functionMenuMap
);
addNewFunctionMenu
(
9
,
poutOut
,
"sluggishMaterials"
,
"呆滞物料"
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
"sMaterial"
,
functionMenuMap
);
addNewFunctionMenu
(
10
,
poutOut
,
"safetyInventory"
,
"安全库存"
,
"safetyInventory"
,
"system/safetyInventory/index"
,
"safeInventory"
,
functionMenuMap
);
addNewFunctionMenu
(
11
,
poutOut
,
"expireMaterials"
,
"过期物料"
,
"expireMaterials"
,
"system/expireMaterials/index"
,
"sMaterial"
,
functionMenuMap
);
//MSD管理:MSD库存.MSD追溯性.MSD设置
Menu
msd
=
Menu
.
CreatePMenu
(
"MSD管理"
,
2
,
"msd"
,
2
,
"MSD"
,
null
);
addNewFunctionMenu
(
21
,
msd
,
"msdManage"
,
"MSD库存"
,
"msdManage"
,
"neolight/msdManage/index"
,
"MSDManager"
,
functionMenuMap
);
addNewFunctionMenu
(
22
,
msd
,
"msdData"
,
"MSD追溯性"
,
"msdData"
,
"neolight/msdData/index"
,
"MSDData"
,
functionMenuMap
);
addNewFunctionMenu
(
23
,
msd
,
"msdSetting"
,
"MSD设置"
,
"msdSetting"
,
"neolight/msdSetting/index"
,
"MSDSet"
,
functionMenuMap
);
//锡膏管理:设备概览.库存.追溯性.设置
Menu
solderPaste
=
Menu
.
CreatePMenu
(
"锡膏管理"
,
3
,
"solderPaste"
,
2
,
"sMana"
,
null
);
addNewFunctionMenu
(
31
,
solderPaste
,
"solderPasteKanban"
,
"设备概览"
,
"solderPasteKanban"
,
"neolight/solderPasteKanban/index"
,
"sKanban"
,
functionMenuMap
);
addNewFunctionMenu
(
32
,
solderPaste
,
"solderPasteManage"
,
"库存"
,
"solderPasteManage"
,
"neolight/solderPasteManage/index"
,
"solder"
,
functionMenuMap
);
addNewFunctionMenu
(
33
,
solderPaste
,
"solderPasteData"
,
"追溯性"
,
"solderPasteData"
,
"neolight/solderPasteData/index"
,
"sData"
,
functionMenuMap
);
addNewFunctionMenu
(
34
,
solderPaste
,
"solderPasteSetting"
,
"设置"
,
"solderPasteSetting"
,
"neolight/solderPasteSetting/index"
,
"system"
,
functionMenuMap
);
//档案管理:元器件
Menu
pMenuWl
=
Menu
.
CreatePMenu
(
"档案管理"
,
4
,
"materiel "
,
2
,
"BOM"
,
null
);
addNewFunctionMenu
(
41
,
pMenuWl
,
"component:list"
,
"元器件"
,
"componentParts"
,
"parts/component/index"
,
"server"
,
functionMenuMap
);
//条形码:条码管理,条码设置
Menu
pMenuBarcode
=
Menu
.
CreatePMenu
(
"条形码"
,
5
,
"barcodes "
,
2
,
"barcodeMenu"
,
null
);
addNewFunctionMenu
(
51
,
pMenuBarcode
,
"barcode:list"
,
"条码管理"
,
"barcode"
,
"barcode/barcode/index"
,
"chart"
,
functionMenuMap
);
addNewFunctionMenu
(
52
,
pMenuBarcode
,
"barcode"
,
"条码设置"
,
"barcodeSetting"
,
"system/barcodeSetting/index"
,
"barcode"
,
functionMenuMap
);
//日志管理:物料日志
Menu
pMenuLog
=
Menu
.
CreatePMenu
(
"日志管理"
,
6
,
"log"
,
2
,
"log"
,
null
);
addNewFunctionMenu
(
61
,
pMenuLog
,
"taskLog"
,
"物料日志"
,
"taskLog"
,
"neolight/taskLog/index"
,
"education"
,
functionMenuMap
);
addNewFunctionMenu
(
62
,
pMenuLog
,
"message"
,
"消息查询"
,
"message"
,
"neolight/message/index"
,
"messagefind"
,
functionMenuMap
);
addNewFunctionMenu
(
63
,
pMenuLog
,
"interfaceException"
,
"接口异常"
,
"interfaceException"
,
"neolight/interfaceException/index"
,
"messagefind"
,
functionMenuMap
);
//报表:出入库、库存
Menu
pMenuReport
=
Menu
.
CreatePMenu
(
"报表"
,
7
,
"report"
,
2
,
"inOutData"
,
null
);
addNewFunctionMenu
(
71
,
pMenuReport
,
"inOutData"
,
"出入库"
,
"inOutData"
,
"neolight/inOutData/index"
,
"outPut"
,
functionMenuMap
);
addNewFunctionMenu
(
72
,
pMenuReport
,
"inventory"
,
"库存"
,
"inventory"
,
"neolight/inventory/index"
,
"inventory"
,
functionMenuMap
);
addNewFunctionMenu
(
73
,
pMenuReport
,
"humiture"
,
"温湿度"
,
"humiture"
,
"humiture/humitureReport/index"
,
"humiture"
,
functionMenuMap
);
//可观测性:物料追踪
Menu
guanceMenu
=
Menu
.
CreatePMenu
(
"可观测性"
,
8
,
"observability"
,
2
,
"scanKey"
,
null
);
addNewFunctionMenu
(
81
,
guanceMenu
,
"materialChart"
,
"物料追踪"
,
"materialChart"
,
"neolight/materialChart/index"
,
"maChart"
,
functionMenuMap
);
//物联网:共享文件夹
Menu
pMenuWulian
=
Menu
.
CreatePMenu
(
"物联网"
,
9
,
"internet"
,
2
,
"interMenu"
,
null
);
addNewFunctionMenu
(
91
,
pMenuWulian
,
"orderSetting"
,
"共享文件夹"
,
"orderSetting"
,
"system/orderSetting/index"
,
"sysSet"
,
functionMenuMap
);
//设置:料仓管理,菜单管理
Menu
poutSet
=
Menu
.
CreatePMenu
(
"设置"
,
10
,
"system"
,
2
,
"system"
,
null
);
addNewFunctionMenu
(
101
,
poutSet
,
"storage:list"
,
"设备管理"
,
"bunker"
,
"storage/storage/index"
,
"database"
,
functionMenuMap
);
addNewFunctionMenu
(
102
,
poutSet
,
"storagePos:list"
,
"库位管理"
,
"storagePos"
,
"storagePos/storagePos/index"
,
"tree-table"
,
functionMenuMap
);
addNewFunctionMenu
(
103
,
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
(
104
,
poutSet
,
"sysSetting"
,
"系统设置"
,
"sysSetting"
,
"system/sysSetting/index"
,
"sysSet"
,
functionMenuMap
);
addNewFunctionMenu
(
105
,
poutSet
,
"translation"
,
"资源翻译"
,
"translation"
,
"system/translation/index"
,
"translation"
,
functionMenuMap
);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addNewFunctionMenu
(
106
,
poutSet
,
"shelfSetting"
,
"料架设置"
,
"shelfSetting"
,
"system/shelfSetting/index"
,
"translation"
,
functionMenuMap
);
//用户管理:用户管理,角色管理
Menu
pMenuUser
=
Menu
.
CreatePMenu
(
"用户管理"
,
11
,
"userManager"
,
2
,
"Steve-Jobs"
,
null
);
addNewFunctionMenu
(
111
,
pMenuUser
,
"user:list"
,
"用户管理"
,
"peoples"
,
"system/user/index"
,
"peoples"
,
functionMenuMap
);
addNewFunctionMenu
(
112
,
pMenuUser
,
"role:list"
,
"角色管理"
,
"role"
,
"system/role/index"
,
"role"
,
functionMenuMap
);
Menu
helpAbout
=
Menu
.
CreatePMenu
(
"帮助"
,
12
,
"help"
,
2
,
"help"
,
null
);
addNewFunctionMenu
(
121
,
helpAbout
,
"instruction"
,
"说明书"
,
"instruction"
,
"system/instruction/index"
,
"aboutBook"
,
functionMenuMap
);
addNewFunctionMenu
(
122
,
helpAbout
,
"about"
,
"关于"
,
"about"
,
"system/about/index"
,
"message"
,
functionMenuMap
);
return
functionMenuMap
;
}
private
void
updateMenu
(
String
[]
menuListToShow
,
String
[]
menuListToHide
){
List
<
Menu
>
dbMenus
=
menuManager
.
findAll
();
List
<
String
>
menuList
=
Lists
.
newArrayList
();
if
(
dbMenus
.
isEmpty
()){
log
.
info
(
"创建默认菜单..."
);
String
[]
defaultMenus
=
new
String
[]{
"lockMaterial"
,
//设备看板
"singleOuput"
,
"tacticsOuput"
,
"outSetting"
,
"componentParts"
,
"barcode"
,
"barcodeSetting"
,
"taskLog"
,
"msdSetting"
,
//"orderSetting",//工单设置
"inOutData"
,
//报表->出入库
"inventory"
,
//报表->库存
"bunker"
,
//设备管理
"storagePos"
,
//库位管理
//"sysSetting", //系统设置
"peoples"
,
//用户管理
"role"
//角色管理
};
menuList
=
Lists
.
newArrayList
(
defaultMenus
);
}
for
(
String
menuToShow
:
menuListToShow
)
{
menuList
.
add
(
menuToShow
);
}
Set
<
String
>
showIdSet
=
showMenu
(
menuList
);
Set
<
String
>
hideIdSet
=
hideMenu
(
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
(
List
<
String
>
menuListToShow
){
Map
<
String
,
Menu
>
allMenus
=
getAllMenuMap
();
Set
<
String
>
showIdSet
=
new
HashSet
<>();
for
(
String
showPath
:
menuListToShow
)
{
Menu
showMenu
=
allMenus
.
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
(
String
[]
menuListToHide
){
Set
<
String
>
hideIdSet
=
new
HashSet
<>();
for
(
String
hidePath
:
menuListToHide
)
{
Menu
hideMenu
=
menuManager
.
findByPath
(
hidePath
);
if
(
hideMenu
!=
null
){
hideMenu
.
setHidden
(
true
);
menuManager
.
saveMenu
(
hideMenu
);
log
.
info
(
"隐藏菜单:"
+
hideMenu
.
getPath
());
addToMenuIdSet
(
hideIdSet
,
hideMenu
);
}
else
{
log
.
error
(
"菜单:"
+
hidePath
+
"不存在"
);
}
}
return
hideIdSet
;
}
}
src/main/java/com/neotel/smfcore/common/init/MenuInit.java
0 → 100644
查看文件 @
112e597
package
com
.
neotel
.
smfcore
.
common
.
init
;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.security.service.manager.IMenuManager
;
import
com.neotel.smfcore.security.service.manager.IRoleManager
;
import
com.neotel.smfcore.security.service.po.Menu
;
import
com.neotel.smfcore.security.service.po.Role
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
/**
* @author sunke
* @date 2022/12/14 10:04 AM
*/
@Slf4j
@Service
public
class
MenuInit
{
@Autowired
IMenuManager
menuManager
;
@Autowired
IRoleManager
roleManager
;
/**
* 默认展示菜单
*/
private
static
String
DEFAULT_SHOW_MENU
=
"default"
;
/**
* XLC展示菜单
*/
private
static
String
XLC_SHOW_MENU
=
"xlc"
;
/**
* 锡膏料仓展示菜单
*/
private
static
String
SP_SHOW_MENU
=
"sp"
;
private
static
Map
<
String
,
Menu
>
allMenuMap
=
new
HashMap
<>();
/**
* 展示菜单
* @param menuPathOrClientLabel 菜单路径或菜单标识
*/
public
void
showMenu
(
String
...
menuPathOrClientLabel
){
updateMenu
(
menuPathOrClientLabel
,
new
String
[]{});
}
/**
* 给菜单打标识
* @param label
* @param menus
*/
public
void
labelMenu
(
String
label
,
String
...
menus
){
Map
<
String
,
Menu
>
allMenuMap
=
getAllMenuMap
();
for
(
String
menuPath
:
menus
)
{
Menu
menu
=
allMenuMap
.
get
(
menuPath
);
if
(
menu
!=
null
){
addMenu
(
label
,
menu
);
}
else
{
log
.
error
(
"标记菜单["
+
menuPath
+
"]为["
+
label
+
"]时,未找到菜单"
);
}
}
}
/**
* 添加自定义菜单
* @param clientLabel 菜单标识
* @param menus 菜单列表
*/
public
static
void
addMenu
(
String
clientLabel
,
Menu
...
menus
){
for
(
Menu
menu
:
menus
)
{
Menu
existMenu
=
allMenuMap
.
get
(
menu
.
getPath
());
if
(
existMenu
!=
null
){
menu
=
existMenu
;
}
menu
.
addClientLabel
(
clientLabel
);
allMenuMap
.
put
(
menu
.
getPath
(),
menu
);
}
}
private
Map
<
String
,
Menu
>
getAllMenuMap
(){
//AGV看板
//addDefaultFunctionMenu(1,null,"AGV看板","agvkanban", "agv/agvkanban/index","agv");
//设备看板
addDefaultFunctionMenu
(
1
,
null
,
"设备看板"
,
"lockMaterial"
,
"lockMaterial/material/index"
,
"kanban"
,
DEFAULT_SHOW_MENU
);
//物料管理:工单出库,查找出库(UID出库,PN出库),物料标签,料盒操作,出库策略,工单设置
Menu
poutOut
=
Menu
.
CreatePMenu
(
"物料管理"
,
1
,
"order"
,
"workOrder"
,
null
);
Menu
out
=
Menu
.
CreatePMenu
(
"查找出库"
,
11
,
"searchOut"
,
"findOut"
,
poutOut
);
addDefaultFunctionMenu
(
1
,
out
,
"UID出库"
,
"singleOuput"
,
"neolight/singleOuput/index"
,
"export1"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
2
,
out
,
"PN出库"
,
"tacticsOuput"
,
"neolight/tacticsOuput/index"
,
"tacticsOuput"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
1
,
poutOut
,
"工单出库"
,
"workOrder"
,
"neolight/workOrder/index"
,
"orderOut"
);
addDefaultFunctionMenu
(
2
,
poutOut
,
"库位出库"
,
"posOutput"
,
"system/posOutput/index"
,
"swagger"
);
addDefaultFunctionMenu
(
3
,
poutOut
,
"物料标签"
,
"labelOuput"
,
"neolight/labelOuput/index"
,
"mgroup"
);
addDefaultFunctionMenu
(
4
,
poutOut
,
"料盒操作"
,
"materialBox"
,
"neolight/materialBox/index"
,
"mIbox"
);
addDefaultFunctionMenu
(
12
,
poutOut
,
"出库策略"
,
"outSetting"
,
"system/outSetting/index"
,
"outSet"
);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addDefaultFunctionMenu
(
5
,
poutOut
,
"入库单"
,
"inList"
,
"system/inList/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
6
,
poutOut
,
"物料入库"
,
"putIn"
,
"system/putIn/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
7
,
poutOut
,
"转储入库"
,
"dumpWarehousing"
,
"system/dumpWarehousing/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
8
,
poutOut
,
"单盘入库"
,
"singleDiskWarehousing"
,
"system/singleDiskWarehousing/index"
,
"headIcon"
);
addDefaultFunctionMenu
(
9
,
poutOut
,
"呆滞物料"
,
"sluggishMaterials"
,
"system/sluggishMaterials/index"
,
"sMaterial"
);
addDefaultFunctionMenu
(
10
,
poutOut
,
"安全库存"
,
"safetyInventory"
,
"system/safetyInventory/index"
,
"safeInventory"
);
addDefaultFunctionMenu
(
11
,
poutOut
,
"过期物料"
,
"expireMaterials"
,
"system/expireMaterials/index"
,
"sMaterial"
);
//MSD管理:MSD库存.MSD追溯性.MSD设置
Menu
msd
=
Menu
.
CreatePMenu
(
"MSD管理"
,
2
,
"msd"
,
"MSD"
,
null
);
addDefaultFunctionMenu
(
21
,
msd
,
"MSD库存"
,
"msdManage"
,
"neolight/msdManage/index"
,
"MSDManager"
);
addDefaultFunctionMenu
(
22
,
msd
,
"MSD追溯性"
,
"msdData"
,
"neolight/msdData/index"
,
"MSDData"
);
addDefaultFunctionMenu
(
23
,
msd
,
"MSD设置"
,
"msdSetting"
,
"neolight/msdSetting/index"
,
"MSDSet"
);
//锡膏管理:设备概览.库存.追溯性.设置
Menu
solderPaste
=
Menu
.
CreatePMenu
(
"锡膏管理"
,
3
,
"solderPaste"
,
"sMana"
,
null
);
addDefaultFunctionMenu
(
31
,
solderPaste
,
"设备概览"
,
"solderPasteKanban"
,
"neolight/solderPasteKanban/index"
,
"sKanban"
,
SP_SHOW_MENU
);
addDefaultFunctionMenu
(
32
,
solderPaste
,
"库存"
,
"solderPasteManage"
,
"neolight/solderPasteManage/index"
,
"solder"
,
SP_SHOW_MENU
);
addDefaultFunctionMenu
(
33
,
solderPaste
,
"追溯性"
,
"solderPasteData"
,
"neolight/solderPasteData/index"
,
"sData"
,
SP_SHOW_MENU
);
addDefaultFunctionMenu
(
34
,
solderPaste
,
"设置"
,
"solderPasteSetting"
,
"neolight/solderPasteSetting/index"
,
"system"
,
SP_SHOW_MENU
);
//档案管理:元器件
Menu
pMenuWl
=
Menu
.
CreatePMenu
(
"档案管理"
,
4
,
"materiel "
,
"BOM"
,
null
);
addDefaultFunctionMenu
(
41
,
pMenuWl
,
"元器件"
,
"componentParts"
,
"parts/component/index"
,
"server"
,
DEFAULT_SHOW_MENU
);
//条形码:条码管理,条码设置
Menu
pMenuBarcode
=
Menu
.
CreatePMenu
(
"条形码"
,
5
,
"barcodes "
,
"barcodeMenu"
,
null
);
addDefaultFunctionMenu
(
51
,
pMenuBarcode
,
"条码管理"
,
"barcode"
,
"barcode/barcode/index"
,
"chart"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
52
,
pMenuBarcode
,
"条码设置"
,
"barcodeSetting"
,
"system/barcodeSetting/index"
,
"barcode"
,
DEFAULT_SHOW_MENU
);
//日志管理:物料日志
Menu
pMenuLog
=
Menu
.
CreatePMenu
(
"日志管理"
,
6
,
"log"
,
"log"
,
null
);
addDefaultFunctionMenu
(
61
,
pMenuLog
,
"物料日志"
,
"taskLog"
,
"neolight/taskLog/index"
,
"education"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
62
,
pMenuLog
,
"消息查询"
,
"message"
,
"neolight/message/index"
,
"messagefind"
);
addDefaultFunctionMenu
(
63
,
pMenuLog
,
"接口异常"
,
"interfaceException"
,
"neolight/interfaceException/index"
,
"messagefind"
);
//报表:出入库、库存
Menu
pMenuReport
=
Menu
.
CreatePMenu
(
"报表"
,
7
,
"report"
,
"inOutData"
,
null
);
addDefaultFunctionMenu
(
71
,
pMenuReport
,
"出入库"
,
"inOutData"
,
"neolight/inOutData/index"
,
"outPut"
);
addDefaultFunctionMenu
(
72
,
pMenuReport
,
"库存"
,
"inventory"
,
"neolight/inventory/index"
,
"inventory"
);
addDefaultFunctionMenu
(
73
,
pMenuReport
,
"温湿度"
,
"humiture"
,
"humiture/humitureReport/index"
,
"humiture"
);
//可观测性:物料追踪
Menu
guanceMenu
=
Menu
.
CreatePMenu
(
"可观测性"
,
8
,
"observability"
,
"scanKey"
,
null
);
addDefaultFunctionMenu
(
81
,
guanceMenu
,
"物料追踪"
,
"materialChart"
,
"neolight/materialChart/index"
,
"maChart"
);
//物联网:共享文件夹
Menu
pMenuWulian
=
Menu
.
CreatePMenu
(
"物联网"
,
9
,
"internet"
,
"interMenu"
,
null
);
addDefaultFunctionMenu
(
91
,
pMenuWulian
,
"共享文件夹"
,
"orderSetting"
,
"system/orderSetting/index"
,
"sysSet"
);
//设置:料仓管理,菜单管理
Menu
poutSet
=
Menu
.
CreatePMenu
(
"设置"
,
10
,
"system"
,
"system"
,
null
);
addDefaultFunctionMenu
(
101
,
poutSet
,
"设备管理"
,
"bunker"
,
"storage/storage/index"
,
"database"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
102
,
poutSet
,
"库位管理"
,
"storagePos"
,
"storagePos/storagePos/index"
,
"tree-table"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
103
,
poutSet
,
"菜单管理"
,
"menu"
,
"system/menu/index"
,
"menu"
);
// Menu sysSetting = new Menu(, "barcode", "条码设置", "barcodeSetting", "system/barcodeSetting/index", "database");
// Menu outSet = new Menu(, "outSetting", "出库策略", "outSetting", "system/outSetting/index", "outSet");
addDefaultFunctionMenu
(
104
,
poutSet
,
"系统设置"
,
"sysSetting"
,
"system/sysSetting/index"
,
"sysSet"
);
addDefaultFunctionMenu
(
105
,
poutSet
,
"资源翻译"
,
"translation"
,
"system/translation/index"
,
"translation"
);
// Menu orderSet = new Menu(, "orderSetting", "工单设置", "orderSetting", "system/orderSetting/index", "sysSet");
addDefaultFunctionMenu
(
106
,
poutSet
,
"料架设置"
,
"shelfSetting"
,
"system/shelfSetting/index"
,
"translation"
);
//用户管理:用户管理,角色管理
Menu
pMenuUser
=
Menu
.
CreatePMenu
(
"用户管理"
,
11
,
"userManager"
,
"Steve-Jobs"
,
null
);
addDefaultFunctionMenu
(
111
,
pMenuUser
,
"用户管理"
,
"peoples"
,
"system/user/index"
,
"peoples"
,
DEFAULT_SHOW_MENU
);
addDefaultFunctionMenu
(
112
,
pMenuUser
,
"角色管理"
,
"role"
,
"system/role/index"
,
"role"
,
DEFAULT_SHOW_MENU
);
Menu
helpAbout
=
Menu
.
CreatePMenu
(
"帮助"
,
9999
,
"help"
,
"help"
,
null
);
addDefaultFunctionMenu
(
99991
,
helpAbout
,
"说明书"
,
"instruction"
,
"system/instruction/index"
,
"aboutBook"
);
addDefaultFunctionMenu
(
99992
,
helpAbout
,
"关于"
,
"about"
,
"system/about/index"
,
"message"
,
DEFAULT_SHOW_MENU
);
return
allMenuMap
;
}
private
void
addDefaultFunctionMenu
(
int
menuSort
,
Menu
parentMenu
,
String
title
,
String
path
,
String
component
,
String
icon
,
String
...
clientLabels
){
Menu
menu
=
Menu
.
createFunctionMenu
(
parentMenu
,
title
,
menuSort
,
path
,
component
,
icon
);
for
(
String
clientLabel
:
clientLabels
)
{
addMenu
(
clientLabel
,
menu
);
}
}
protected
void
updateMenu
(
String
[]
menuListToShow
,
String
[]
menuListToHide
){
List
<
Menu
>
dbMenus
=
menuManager
.
findAll
();
List
<
String
>
menuList
=
Lists
.
newArrayList
();
if
(
dbMenus
.
isEmpty
()){
log
.
info
(
"创建默认菜单..."
);
for
(
Menu
menu
:
getAllMenuMap
().
values
())
{
if
(
menu
.
getClients
().
contains
(
DEFAULT_SHOW_MENU
)){
menuList
.
add
(
menu
.
getPath
());
}
}
}
for
(
String
menuToShow
:
menuListToShow
)
{
menuList
.
add
(
menuToShow
);
}
Set
<
String
>
showIdSet
=
showMenu
(
menuList
);
Set
<
String
>
hideIdSet
=
hideMenu
(
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
(
List
<
String
>
menuListToShow
){
Map
<
String
,
Menu
>
allMenus
=
getAllMenuMap
();
Set
<
String
>
showIdSet
=
new
HashSet
<>();
for
(
String
showPath
:
menuListToShow
)
{
log
.
info
(
"展示菜单:"
+
showPath
);
Menu
showMenu
=
allMenus
.
get
(
showPath
);
if
(
showMenu
!=
null
){
showMenu
=
createMenu
(
showMenu
);
addToMenuIdSet
(
showIdSet
,
showMenu
);
}
else
{
for
(
Menu
menu
:
allMenus
.
values
())
{
if
(
menu
.
getClients
().
contains
(
showPath
)){
showMenu
=
createMenu
(
menu
);
log
.
info
(
"展示菜单:"
+
menu
.
getPath
());
addToMenuIdSet
(
showIdSet
,
menu
);
}
}
}
}
return
showIdSet
;
}
/**
* 隐藏菜单
*/
private
Set
<
String
>
hideMenu
(
String
[]
menuListToHide
){
Set
<
String
>
hideIdSet
=
new
HashSet
<>();
for
(
String
hidePath
:
menuListToHide
)
{
Menu
hideMenu
=
menuManager
.
findByPath
(
hidePath
);
if
(
hideMenu
!=
null
){
hideMenu
.
setHidden
(
true
);
menuManager
.
saveMenu
(
hideMenu
);
log
.
info
(
"隐藏菜单:"
+
hideMenu
.
getPath
());
addToMenuIdSet
(
hideIdSet
,
hideMenu
);
}
else
{
log
.
error
(
"菜单:"
+
hidePath
+
"不存在"
);
}
}
return
hideIdSet
;
}
/**
* 循环创建父级菜单
*/
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
;
}
}
src/main/java/com/neotel/smfcore/core/api/SmfApi.java
查看文件 @
112e597
...
...
@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.api;
import
com.google.common.collect.Lists
;
import
com.neotel.smfcore.common.exception.ValidateException
;
import
com.neotel.smfcore.common.init.MenuInit
;
import
com.neotel.smfcore.core.api.listener.ISmfApiListener
;
import
com.neotel.smfcore.core.barcode.service.po.Barcode
;
import
com.neotel.smfcore.core.api.bean.CodeValidateParam
;
...
...
@@ -77,7 +78,6 @@ public class SmfApi {
fetchInListUrl
=
dataCache
.
getConfigCache
(
"api.fetchInListUrl"
,
fetchInListUrl
);
fetchOrderUrl
=
dataCache
.
getConfigCache
(
"api.fetchOrderUrl"
,
fetchOrderUrl
);
}
/**
...
...
@@ -201,4 +201,7 @@ public class SmfApi {
return
false
;
}
public
String
getApiName
(){
return
apiName
;
}
}
src/main/java/com/neotel/smfcore/custom/haman/HamanMenu.java
0 → 100644
查看文件 @
112e597
package
com
.
neotel
.
smfcore
.
custom
.
haman
;
import
com.neotel.smfcore.common.init.MenuInit
;
import
com.neotel.smfcore.core.api.SmfApi
;
import
org.apache.logging.log4j.util.Strings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.PostConstruct
;
/**
* @author sunke
* @date 2022/12/14 4:01 PM
*/
@Component
public
class
HamanMenu
{
@Autowired
MenuInit
menuInit
;
@Autowired
SmfApi
smfApi
;
@PostConstruct
public
void
init
(){
String
[]
menus
=
new
String
[]{
"lockMaterial"
,
"workOrder"
,
"singleOuput"
,
"tacticsOuput"
,
"inList"
,
"sluggishMaterials"
,
"expireMaterials"
,
"outSetting"
,
"componentParts"
,
"barcode"
,
"barcodeSetting"
,
"taskLog"
,
"message"
,
"inOutData"
,
"inventory"
,
"orderSetting"
,
"bunker"
,
"storagePos"
,
"sysSetting"
,
"translation"
,
"shelfSetting"
,
"peoples"
,
"role"
,
"about"
};
menuInit
.
labelMenu
(
"haman"
,
menus
);
String
apiName
=
smfApi
.
getApiName
();
if
(
Strings
.
isNotBlank
(
apiName
)){
menuInit
.
showMenu
(
apiName
);
}
}
}
src/main/java/com/neotel/smfcore/security/service/po/Menu.java
查看文件 @
112e597
...
...
@@ -23,10 +23,7 @@ import org.springframework.data.annotation.Transient;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Objects
;
import
java.util.*
;
/**
* @author Zheng Jie
...
...
@@ -106,6 +103,15 @@ public class Menu extends BasePo implements Serializable {
@Transient
private
Menu
parentMenu
;
/**
* 定制菜单标识
*/
private
Set
<
String
>
clients
=
new
HashSet
<>();
public
void
addClientLabel
(
String
clientLabel
){
clients
.
add
(
clientLabel
);
}
public
Boolean
getHasChildren
()
{
if
(
subCount
==
0
){
return
false
;
...
...
@@ -128,7 +134,7 @@ public class Menu extends BasePo implements Serializable {
/**
* 此方法用于构建一级菜单,type=1
*/
public
Menu
(
final
List
<
Menu
>
children
,
final
Integer
type
,
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
String
component
,
final
String
pid
,
final
Integer
subCount
,
final
String
icon
)
{
public
Menu
(
final
List
<
Menu
>
children
,
final
Integer
type
,
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
String
component
,
final
String
pid
,
final
Integer
subCount
,
final
String
icon
)
{
this
.
children
=
children
;
this
.
permission
=
permission
;
this
.
type
=
type
;
...
...
@@ -145,7 +151,7 @@ public class Menu extends BasePo implements Serializable {
this
.
icon
=
icon
;
this
.
titleKey
=
path
;
}
public
Menu
(
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
pid
)
{
public
Menu
(
final
String
permission
,
final
String
title
,
final
Integer
menuSort
,
final
String
pid
)
{
this
.
children
=
new
ArrayList
<
Menu
>();
this
.
type
=
2
;
...
...
@@ -164,19 +170,51 @@ public class Menu extends BasePo implements Serializable {
this
.
titleKey
=
path
;
}
/**
* 此方法用于构建权限菜单,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
,
""
,
""
,
""
,
null
);
* 创建功能菜单
*/
public
static
Menu
createFunctionMenu
(
Menu
parentMenu
,
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
String
component
,
final
String
icon
)
{
Menu
menu
=
new
Menu
();
menu
.
setChildren
(
new
ArrayList
<
Menu
>());
menu
.
setType
(
1
);
menu
.
setPermission
(
path
);
menu
.
setTitle
(
title
);
menu
.
setMenuSort
(
menuSort
);
menu
.
setPath
(
path
);
menu
.
setComponent
(
component
);
menu
.
setPid
(
""
);
menu
.
setSubCount
(
0
);
menu
.
setIFrame
(
false
);
menu
.
setCache
(
false
);
menu
.
setHidden
(
false
);
menu
.
setComponentName
(
""
);
menu
.
setIcon
(
icon
);
menu
.
setTitleKey
(
""
);
menu
.
setParentMenu
(
parentMenu
);
return
menu
;
}
/**
* 此方法用户创建只用于显示的一级菜单,type=0
*/
public
static
Menu
CreatePMenu
(
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
final
Integer
subCount
,
final
String
icon
,
Menu
parentMenu
)
{
public
static
Menu
CreatePMenu
(
final
String
title
,
final
Integer
menuSort
,
final
String
path
,
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
,
parentMenu
);
Menu
menu
=
new
Menu
();
menu
.
setChildren
(
new
ArrayList
<
Menu
>());
menu
.
setType
(
0
);
menu
.
setPermission
(
""
);
menu
.
setTitle
(
title
);
menu
.
setMenuSort
(
menuSort
);
menu
.
setPath
(
path
);
menu
.
setComponent
(
""
);
menu
.
setPid
(
""
);
menu
.
setSubCount
(
1
);
menu
.
setIFrame
(
false
);
menu
.
setCache
(
false
);
menu
.
setHidden
(
false
);
menu
.
setComponentName
(
title
);
menu
.
setIcon
(
icon
);
menu
.
setTitleKey
(
titleKey
);
menu
.
setParentMenu
(
parentMenu
);
return
menu
;
}
...
...
src/main/resources/config/application.yml
查看文件 @
112e597
...
...
@@ -2,7 +2,7 @@ server:
port
:
8800
api
:
name
:
name
:
haman
inCheckUrl
:
outNotifyUrl
:
inNotifyUrl
:
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论