新增「车间班次」功能(前缫车间排班配置)

后端
- 新增实体 ChejianBanci(表 ChejianBancis:车间 / 班次 / 日工作小时数)
- 新增 ChejianBanciService 与 ChejianBanciController(api/prod/chejianbanci)
  分页列表、编辑回显、新增、修改、删除、前缫车间下拉;含必填校验与同车间同班次重复校验
- 菜单种子:基础数据 → 车间班次(Timer 图标,权限 base:chejianbanci:list)
- 修正历史数据:名称以「前缫」开头的部门职责类型改为「前缫」(25)。
  迁移时 duty_type 被统一写成「其他」,导致按职责类型筛选车间取不到数据

前端
- 新增 web/src/views/base/chejianbanci/index.vue(列表 / 搜索 / 分页 / 新增 / 编辑 / 删除)
- 注册组件映射 base/chejianbanci/index
This commit is contained in:
yanpeng200212
2026-10-12 16:33:40 +08:00
parent ba5b90d2ce
commit 2985003896
9 changed files with 496 additions and 0 deletions
@@ -82,6 +82,10 @@ public static class DbSeeder
// 6.68 生产模块(按工序拆分:生产-前缫 / 生产-后缫)
SeedProdMenus(fsql, snowflake);
// 6.69 车间班次菜单(挂在"基础数据"目录下)+ 修正前缫部门的职责类型
SeedChejianBanciMenus(fsql, snowflake);
FixQianxianDutyType(fsql);
// 6.7 为菜单创建权限单元(Permission),并修正旧菜单权限关联(统一权限模型)
FixMenuPermissions(fsql, snowflake);
@@ -763,6 +767,39 @@ public static class DbSeeder
}
}
/// <summary>车间班次菜单(挂在"基础数据"目录下)</summary>
private static void SeedChejianBanciMenus(IFreeSql fsql, ISnowflakeIdGenerator snowflake)
{
try
{
EnsureBaseDataMenu(fsql, snowflake, "/base/chejianbanci", "车间班次",
"base/chejianbanci/index", "base:chejianbanci:list", "Timer", 11);
Console.WriteLine("[DbSeeder] 车间班次菜单已就绪");
}
catch (Exception ex)
{
Console.WriteLine($"[DbSeeder] 车间班次菜单种子跳过:{ex}");
}
}
/// <summary>
/// 修正前缫部门的职责类型:历史数据迁移时 duty_type 统一写成了"其他"(5),
/// 而车间班次等模块需要按职责类型(前缫=25)筛选部门。
/// </summary>
private static void FixQianxianDutyType(IFreeSql fsql)
{
try
{
var rows = fsql.Ado.ExecuteNonQuery(
"UPDATE sys_departments SET duty_type = 25 WHERE is_deleted = 0 AND name LIKE '前缫%' AND duty_type <> 25");
if (rows > 0) Console.WriteLine($"[DbSeeder] 已修正 {rows} 个前缫部门的职责类型");
}
catch (Exception ex)
{
Console.WriteLine($"[DbSeeder] 部门职责类型修正跳过:{ex.Message}");
}
}
/// <summary>确保指定菜单已授权给角色(后续 FixMenuPermissions 会把 permission_id 修正为权限单元 Id)</summary>
private static void EnsureMenuPermission(IFreeSql fsql, ISnowflakeIdGenerator snowflake, long roleId, long menuId)
{