功能: - 后端新增 KtjlCtgs / KtjlDcgs 两张表、KtjlService 与 api/prod/ktjl 接口 (按日期+车间+班次查询、整组先删后建保存、整组删除、按看台排班带出默认记录、工种下拉) - 挡车数按 F9 口径自动重算(与他人接壤的边界车位各扣 0.5),机组由车位反查机组车台 - 前端新增 /prod/qianxian/ktjl 看台记录页:挡车工/车头工双页签、删除、录入(新增)、录入(指定日期) - 录入弹窗校验对齐 F9:个人时长不超标准、挡车数/看台时长匹配、车头工每机组≥2 人且时长为标准时长整数倍 - 生产-前缫菜单新增「看台记录」,权限 prod:ktjl:list 数据导入: - 新增内嵌资源 biz_prod_qs_ktjl_ctg.csv / biz_prod_qs_ktjl_dcg.csv(约 5 万行,采用紧凑 CSV) - 剔除软删除行、日期异常行、部门无法映射与职工不存在的行;日期由 Excel 序列号转换 - 车头工 12693 行、挡车工 38048 行入库,日期范围 2025-12-16 ~ 2026-09-11 - 表内已有数据则整体跳过,分批 1000 行插入 其他:同步工作进度-13 文档与开发数据库快照
44 lines
2.2 KiB
C#
44 lines
2.2 KiB
C#
using FreeSql.DataAnnotations;
|
||
using F9WebAiTest.Domain.Common;
|
||
using F9WebAiTest.Domain.Enums.SYS.Employees;
|
||
|
||
namespace F9WebAiTest.Domain.Entities.Prod;
|
||
|
||
// 看台记录(对应 F9 生产-前缫 的 KTJL 两张表:车头工 / 挡车工)
|
||
// 记录 = 某日某车间某班次的实际看台情况(由看台排班带出后再调整:车位、时长、代班、不计产量)。
|
||
|
||
/// <summary>车头工看台记录(biz_prod_qs_ktjl_ctg)</summary>
|
||
[Table(Name = "KtjlCtgs")]
|
||
public class KtjlCtg : BaseEntity
|
||
{
|
||
public DateTime Date { get; set; } // 日期
|
||
public long DeptId { get; set; } // 车间
|
||
public Prod_Banci_Enum Banci { get; set; } // 班次(甲/乙)
|
||
public int Jizu { get; set; } // 机组
|
||
public decimal Hours { get; set; } // 时长(小时)
|
||
public long EmployeeId { get; set; } // 车头工
|
||
public long EmployeeDepId { get; set; } // 职工所属部门
|
||
public long WorktypeId { get; set; } // 工种
|
||
public string WorktypeName { get; set; } = ""; // 工种名称(历史快照)
|
||
public bool NoChanliang { get; set; } // 不计产量
|
||
}
|
||
|
||
/// <summary>挡车工看台记录(biz_prod_qs_ktjl_dcg)</summary>
|
||
[Table(Name = "KtjlDcgs")]
|
||
public class KtjlDcg : BaseEntity
|
||
{
|
||
public DateTime Date { get; set; } // 日期
|
||
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 decimal DangcheNum { get; set; } // 挡车数(边界车位与他人共用时各计 0.5)
|
||
public decimal Hours { get; set; } // 时长(小时)
|
||
public long EmployeeId { get; set; } // 挡车工
|
||
public long EmployeeDepId { get; set; } // 职工所属部门
|
||
public long WorktypeId { get; set; } // 工种
|
||
public string WorktypeName { get; set; } = ""; // 工种名称(历史快照)
|
||
public bool NoChanliang { get; set; } // 不计产量
|
||
}
|