新增生产-前缫看台排班,并导入机组车台与看台排班数据

功能:
- 后端新增 KtpbCtgs / KtpbDcgs / KtpbZbzs 三张表、KtpbService 与 api/prod/ktpb 接口
  (车头工、挡车工、值班长分页查询与维护,挡车工按车间+班次+机组整组替换保存)
- 挡车数按 F9 口径自动重算:接壤车台各计 0.5,保存时服务端重新计算并校验车台范围
- 前端新增 /prod/qianxian/ktpb 看台排班页(三页签 + 车间/班次/机组过滤 + 批量编辑弹窗)
- 新增通用职工选择弹窗 EmployeeSelect(单选/多选,按部门过滤)
- 生产-前缫菜单下新增「看台排班」,权限 prod:ktpb:list

数据导入:
- 重新生成 biz_prod_qs_jzct.json,新增 ktpb_ctg / ktpb_dcg / ktpb_zbz 三个内嵌资源
- F9 部门 Id 经 DeptData 映射到本系统部门;职工按原始雪花 Id 关联
- 剔除软删除/脏数据:机组车台 24 条、车头工 33 条、挡车工 202 条(34 组)、值班长 7 条
- 导入幂等:机组车台按车间+机组 upsert,排班按业务唯一键去重,已维护的组不覆盖

其他:同步工作进度-12 文档与开发数据库快照
This commit is contained in:
yanpeng200212
2026-10-22 10:49:13 +08:00
parent a8890c81e9
commit a30d1cdcce
16 changed files with 2123 additions and 422 deletions
@@ -0,0 +1,41 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
using F9WebAiTest.Domain.Enums.SYS.Employees;
namespace F9WebAiTest.Domain.Entities.Prod;
// 看台排班(对应 F9 生产-前缫 的 KTPB 三张表:车头工 / 挡车工 / 值班长)
// 排班以「车间 + 班次」为组织单元;挡车工/车头工再细分「机组」。
/// <summary>车头工看台排班(biz_prod_qs_ktpb_ctg)</summary>
[Table(Name = "KtpbCtgs")]
public class KtpbCtg : BaseEntity
{
public long DeptId { get; set; } // 车间(前缫车间)
public Prod_Banci_Enum Banci { get; set; } // 班次(甲/乙)
public int Jizu { get; set; } // 机组
public long Ygid1 { get; set; } // 车头工1
public long Ygid2 { get; set; } // 车头工2
}
/// <summary>挡车工看台排班(biz_prod_qs_ktpb_dcg)</summary>
[Table(Name = "KtpbDcgs")]
public class KtpbDcg : BaseEntity
{
public long DeptId { get; set; } // 车间
public Prod_Banci_Enum Banci { get; set; } // 班次
public int Jizu { get; set; } // 机组
public int ChetaiStart { get; set; } // 起始车台号
public int ChetaiEnd { get; set; } // 结束车台号
public long YgId { get; set; } // 挡车工
public double Dangcheshu { get; set; } // 挡车数(相邻车台各 0.5 的口径,保存时重算)
}
/// <summary>值班长排班(biz_prod_qs_ktpb_zbz)</summary>
[Table(Name = "KtpbZbzs")]
public class KtpbZbz : BaseEntity
{
public long DeptId { get; set; } // 车间
public Prod_Banci_Enum Banci { get; set; } // 班次
public long YgId { get; set; } // 值班长
}