chore: remove legacy inventory stocktake menu and permission configs

This commit is contained in:
DXC
2026-03-20 09:34:36 +08:00
parent b375cbfe25
commit 1ad57da2a7
2 changed files with 32 additions and 0 deletions

View File

@ -157,6 +157,8 @@ def create_app():
try:
from app.services.permission_service import PermissionService
with app.app_context():
# 先清理旧版菜单,再初始化新版
PermissionService.cleanup_legacy_stocktake_menus()
PermissionService.init_audit_menu()
PermissionService.init_stocktake_menus()
except Exception as e:

View File

@ -358,3 +358,33 @@ class PermissionService:
db.session.rollback()
print(f"❌ 初始化盘点管理菜单失败: {str(e)}")
raise e
@staticmethod
def cleanup_legacy_stocktake_menus():
"""
清理残留的旧版库存盘点菜单
如果数据库中存在挂在入库管理下的旧版库存盘点菜单,清理掉
"""
try:
# 查找可能存在的旧版库存盘点菜单(入库管理下的 stocktake
# 旧版可能在入库管理 (path like '%inventory%stocktake') 或者 code 包含 stocktake 但不是新的
legacy_menus = SysMenu.query.filter(
SysMenu.code.in_(['stocktake', 'inventory_stocktake_old'])
).all()
for menu in legacy_menus:
# 删除关联的权限
SysRolePermission.query.filter_by(target_code=menu.code).delete()
# 删除关联的元素
SysElement.query.filter_by(menu_code=menu.code).delete()
# 删除菜单
db.session.delete(menu)
print(f"🗑️ 已清理旧版库存盘点菜单: {menu.code} ({menu.name})")
db.session.commit()
return True
except Exception as e:
db.session.rollback()
print(f"⚠️ 清理旧版菜单失败: {str(e)}")
return False