新增工资/仓储/生产日报等模块,移除旧考勤模块

- 新增 PayRoll(工资)、Wms(仓储)、Prod(车速/缫丝/考勤/丝片检测/丝片台账/纤检日报/质量日报) 模块
- 新增对应 Domain 实体、Application DTO/Service、Api Controller 与前端页面
- 移除旧 Attendance 考勤模块(Controller/Service/Entity/DTO 及 5 个前端页面),由 Prod/Kaoqin 取代
- 调整路由、仪表盘、Lsjl 流丝记录实体与服务
- 更新业务种子数据与 DbSeeder
- 补充工作进度文档 14-27
This commit is contained in:
yanpeng200212
2026-10-27 09:09:57 +08:00
parent 69c4052a64
commit 1f1b184411
119 changed files with 21576 additions and 1668 deletions
@@ -0,0 +1,32 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>秤大丝-落丝汇总(每个落丝记录一条)</summary>
[Table(Name = "CdsLsjls")]
[Index("IX_CdsLsjls_LsjlId", "LsjlId", IsUnique = true)]
public class CdsLsjl : BaseEntity
{
public long LsjlId { get; set; } // 落丝记录
public int Num { get; set; } // 已秤数(把数)
public int Siliang { get; set; } // 已秤丝量(g)
public int Jianliang { get; set; } // 茧量(g)= 落丝桶数 × 每桶茧量
public decimal Saozhe { get; set; } // 缫折 = 茧量 / 丝量 × 100
public decimal Taichan { get; set; } // 实绩台产 = 丝量 / 落丝时长 / 车台数
}
/// <summary>秤大丝-车台明细(每车台一行,4 个丝量值,单位 g)</summary>
[Table(Name = "CdsChetais")]
[Index("IX_CdsChetais_LsjlId_Chetaihao", "LsjlId, Chetaihao", IsUnique = true)]
public class CdsChetai : BaseEntity
{
public long LsjlId { get; set; } // 落丝记录
public int Chetaihao { get; set; } // 车台号
public int Sl1 { get; set; } // 丝量1
public int Sl2 { get; set; } // 丝量2
public int Sl3 { get; set; } // 丝量3
public int Sl4 { get; set; } // 丝量4
public int Num { get; set; } // 个数 = 丝量 > 0 的个数
public int Siliang { get; set; } // 小计丝量
}
@@ -0,0 +1,55 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>
/// 考勤登记主表:一人一天一条(唯一:日期 + 职工)。
/// 对应 F9 WinClient\F9.Business.Prod\KQ\CQDJ 的 Cqdj 实体。
/// </summary>
[Table(Name = "biz_prod_kq_cqdj")]
public class Cqdj : BaseEntity
{
public DateTime Date { get; set; } // 考勤日期
public long DepId { get; set; } // 部门(车间)
public long WorktypeId { get; set; } // 工种
public long EmployeeId { get; set; } // 职工
public int Banci { get; set; } // 班次(Prod_Banci_Enum:甲=1 乙=2)
public bool IsXuegong { get; set; } // 是否学工(未转正)
public decimal HoursStandard { get; set; } // 标准时长
public decimal HoursCq { get; set; } // 出勤时长(含正常/流动/代班/外派/工伤,不含加班)
public decimal HoursQj { get; set; } // 请假时长
public decimal HoursLd { get; set; } // 流动时长
public decimal HoursJb { get; set; } // 加班时长
public decimal HoursDb { get; set; } // 代班时长
public decimal HoursWp { get; set; } // 外派时长
public decimal HoursKg { get; set; } // 旷工时长
public decimal HoursGs { get; set; } // 工伤时长
public int CsYeban { get; set; } // 夜班次数
public string Memo { get; set; } = ""; // 备注
}
/// <summary>
/// 考勤登记明细:一人一天多行,按出勤类型拆分。
/// 对应 F9 WinClient\F9.Business.Prod\KQ\CQDJ 的 Cqdj_Item 实体。
/// </summary>
[Table(Name = "biz_prod_kq_cqdj_item")]
public class CqdjItem : BaseEntity
{
public long CqdjId { get; set; } // 主表 Id
public DateTime Date { get; set; } // 考勤日期
public long DepId { get; set; } // 出勤部门(流动/代班时可能是别的部门)
public long WorktypeId { get; set; } // 出勤工种
public long EmployeeId { get; set; } // 职工
public int Banci { get; set; } // 班次
public int TypeCq { get; set; } // 出勤类型(Cqdj_CqType_Enum)
public int TypeQj { get; set; } // 请假类型(Cqdj_QjType_Enum,非请假为 0)
public decimal Hours { get; set; } // 时长
public string Jizu { get; set; } = ""; // 机组
public string CtStart { get; set; } = ""; // 开始车台
public string CtEnd { get; set; } = ""; // 结束车台
public int DangcheNum { get; set; } // 挡车数
public string Memo { get; set; } = ""; // 备注
}
@@ -0,0 +1,74 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>
/// 考勤统计(月快照,一人一行)。
/// 对应 F9 WinClient\F9.Business.Prod\KQ\CQTJ 的 Cqtj 实体。
/// 数据由「录入 / 一键生成」按账期从考勤登记(Cqdj + CqdjItem)汇总后落库,
/// 落库后可在统计页手工调整(年假 / 公假 / 调休 / 法定假 / 全勤相关时长与金额等)。
/// </summary>
[Table(Name = "biz_prod_kq_cqtj")]
[Index("IX_Cqtj_Year_Month_DepId", "Year, Month, DepId", false)]
public class Cqtj : BaseEntity
{
public int Year { get; set; }
public int Month { get; set; }
public long DepId { get; set; }
public long WorktypeId { get; set; }
public long EmployeeId { get; set; }
// ===== 出勤天数 =====
public decimal DaysCqStandard { get; set; } // 标准出勤天数(工种配置 QqDaysStandard)
public decimal DaysCqActual { get; set; } // 实际出勤天数 = 本部门出勤时长 / HoursPerday
public decimal CqTianci { get; set; } // 出勤天次:(出勤 + 加班) > 0 的天数
// ===== 时长 =====
public decimal HoursCq { get; set; } // 出勤
public decimal HoursQj { get; set; } // 请假(合计)
public decimal HoursLd { get; set; } // 流动
public decimal HoursJb { get; set; } // 加班
public decimal HoursDb { get; set; } // 代班
public decimal HoursWp { get; set; } // 外派
public decimal HoursKg { get; set; } // 旷工
public int CsYeban { get; set; } // 夜班次数
// ===== 请假分项时长 =====
public decimal HoursQjShijia { get; set; } // 事假
public decimal HoursQjBj { get; set; } // 病假
public decimal HoursQjHj { get; set; } // 婚假
public decimal HoursQjCj { get; set; } // 产假
public decimal HoursQjLx { get; set; } // 轮休
public decimal HoursQjSangjia { get; set; } // 丧假
public decimal HoursQjGj { get; set; } // 公假
public decimal HoursQjNj { get; set; } // 年假
public decimal HoursQjTx { get; set; } // 调休
// ===== 学工时长 =====
public decimal HoursXgCq { get; set; } // 学工出勤
public decimal HoursXgJiaban { get; set; } // 学工加班
// ===== 法定假 / 全勤相关时长 =====
public decimal HoursFadingjiaqi { get; set; } // 法定假期时长 = 职工配置 法定补助 + 法定工资
public decimal HoursQjQqmc { get; set; } // 全勤免扣请假(加班免扣)
public decimal HoursQjQqcal { get; set; } // 全勤计算请假(本部门)
// ===== 金额 =====
public decimal JineQuanqin { get; set; } // 全勤奖
public decimal JineJb { get; set; } // 加班费
public decimal JineLiudong { get; set; } // 流动工资
public decimal JineDaiban { get; set; } // 代班工资
public decimal JineYb { get; set; } // 夜班补助
public decimal JineKgKk { get; set; } // 旷工考核
public decimal JineJqBzHj { get; set; } // 婚假补助
public decimal JineJqBzBj { get; set; } // 病假补助
public decimal JineJqBzLx { get; set; } // 轮休补助
public decimal JineJqBzSangjia { get; set; } // 丧假补助
public decimal JineJqBzFading { get; set; } // 法定假补助
public decimal JineJqBzTxnj { get; set; } // 调休 + 年假补助
public decimal JineJqBz { get; set; } // 假期补助合计
public string Memo { get; set; } = "";
}
@@ -0,0 +1,13 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>公量纤度(每个落丝记录一条,由质检录入)</summary>
[Table(Name = "Glxds")]
[Index("IX_Glxds_LsjlId", "LsjlId", IsUnique = true)]
public class Glxd : BaseEntity
{
public long LsjlId { get; set; } // 落丝记录
public decimal Gongliangxiandu { get; set; } // 公量纤度
}
@@ -20,6 +20,8 @@ public class LsjlRecord : BaseEntity
public int Chetaishu { get; set; } // 车台数
public bool Isbanche { get; set; } // 是否半车
public double Hours { get; set; } // 缫丝时长
public int Tongshu { get; set; } // 落丝桶数(秤大丝「茧量」口径需要)
public int Meitongjianliang { get; set; } // 每桶茧量(g,秤大丝「茧量」口径需要)
public string Guige { get; set; } = ""; // 规格
public double Chesu { get; set; } // 车速
}
@@ -0,0 +1,46 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>丝片检查(按「日期 + 车间 + 工艺庄口 + 规格」唯一)</summary>
[Table(Name = "Spjcs")]
[Index("IX_Spjcs_Date_DepId_GyzkId_Guige", "Date, DeptId, GyzkId, Guige", IsUnique = true)]
public class Spjc : BaseEntity
{
public DateTime Date { get; set; } // 日期
public long DeptId { get; set; } // 车间
public long GyzkId { get; set; } // 工艺庄口
public string Guige { get; set; } = ""; // 规格
public int Pianshu { get; set; } // 总片数
public int PianshuXuegong { get; set; } // 学工片数
// ---- 前缫 ----
public int QsJiahua { get; set; } // 夹花
public int QsYouwu { get; set; } // 油污
public int QsHeidian { get; set; } // 黑点
public int QsShangsi { get; set; } // 伤丝
public int QsYetiao { get; set; } // 野条
public int QsXiaosipian { get; set; } // 小丝片
public int QsQita { get; set; } // 其他
public int QsHeji { get; set; } // 合计
// ---- 后缫 ----
public int HsYouwu { get; set; } // 油污
public int HsShangsi { get; set; } // 伤丝
public int HsShuangsi { get; set; } // 双丝
public int HsZhisi { get; set; } // 直丝
public int HsZhantiao { get; set; } // 粘条
public int HsYingjiao { get; set; } // 硬胶
public int HsGuojiao { get; set; } // 过胶
public int HsShouchu { get; set; } // 手触
public int HsWuran { get; set; } // 污染
public int HsLiansi { get; set; } // 连丝
public int HsWdmt { get; set; } // 无底面头
public int HsMaoluan { get; set; } // 毛乱
public int HsQita { get; set; } // 其他
public int HsHeji { get; set; } // 合计
public string Memo { get; set; } = ""; // 备注
}
@@ -0,0 +1,29 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
/// <summary>丝片台帐(每日一条):浸丝 / 返丝 / 编丝 / 整理</summary>
[Table(Name = "Sptzs")]
[Index("IX_Sptzs_Date", "Date", IsUnique = true)]
public class Sptz : BaseEntity
{
public DateTime Date { get; set; } // 日期
public DateTime DateLast { get; set; } // 上一日(上一本台账日期)
// ---- 浸丝 ----
public int JsShangcun { get; set; } // 上存 = 上一日今存
public int JsXiasi { get; set; } // 下丝
public int JsJinsi { get; set; } // 浸丝
public int JsSrylJrxz { get; set; } // 上日遗留/今日新增 = 上存 − 浸丝
public int JsJincun { get; set; } // 今存 = 下丝 + 上日遗留/今日新增
public int FsFsps { get; set; } // 返丝片数
public int BsBsps { get; set; } // 编丝片数
// ---- 整理 ----
public int ZlZhengpin { get; set; } // 正品片数
public int ZlTichu { get; set; } // 剔除片数
public string Memo { get; set; } = ""; // 备注
}
@@ -0,0 +1,32 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
// 选茧班组(对应 F9 生产-选剥茧 XBJ\XJBZ 两张表:班组 / 班组职工)
// 数据口径:
// 1) XjpbBanzu 班组:【班次(甲/乙)+ 选茧组】一条,来自职工分配时勾选的组别。
// 2) XjpbBanzuZhigong 班组职工:某班组下的职工及顺序,来源是「选剥茧车间」下工种为「选茧工」的在职职工。
// 注意:老系统班组由「编辑录入」时勾选职工+组别后保存生成(XjpbBanzuZhigong_SaveCommand),
// 班组列表本身没有独立的新增入口,移植后同样以「编辑录入」批量保存为准。
/// <summary>选茧班组(F9 biz_prod_xbj_xjpb_banzu)</summary>
[Table(Name = "XjpbBanzus")]
public class XjpbBanzu : BaseEntity
{
public string Banci { get; set; } = ""; // 班次(甲 / 乙)
public int Zu { get; set; } // 选茧组
}
/// <summary>选茧班组职工(F9 biz_prod_xbj_xjpb_banzu_zhigong)</summary>
[Table(Name = "XjpbBanzuZhigongs")]
public class XjpbBanzuZhigong : BaseEntity
{
public long BanzuId { get; set; } // 选茧班组ID
public string Banci { get; set; } = ""; // 班次(甲 / 乙)
public int Zu { get; set; } // 选茧组
public long YgId { get; set; } // 职工ID
public string YgName { get; set; } = ""; // 职工姓名
public string YgPhone { get; set; } = ""; // 职工电话
public int Sort { get; set; } // 顺序
}
@@ -0,0 +1,113 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
namespace F9WebAiTest.Domain.Entities.Prod;
// 选茧日报(对应 F9 生产-选剥茧 XBJ\XJRB 三张表:日报主表 / 计划 / 计划明细)
// 数据口径:
// 1) XjrbRecord 日报:某日某工艺庄口一条,记录干茧领入与 8 类茧(联统/好五级/六级/绵/双宫/下脚/茧衣/茧花)的
// 包数与重量,另含「退回」、合计重量、联统率、盈亏。
// 2) XjrbPlan 计划:按领料单(原料出库单)下达的选茧计划,含计划的 8 类茧与选茧盈亏、是否完成。
// 3) XjrbItem 计划明细:挂在计划下的每日选茧进度行(外键 XjrbPlanId),完成勾选后回写计划盈亏。
//
// 盈亏 / 联统率口径(对齐 F9 GetXjrbCountYingkuiQuery):
// 累计区间 = 同庄口下 Date < 当前日期 的历史日报(含当前录入值)
// yllr = Σ 干茧领入重量(含当前)
// ltj = Σ 联统茧重量(含当前)
// all = Σ (联统+好五级+六级+绵+双宫+下脚+茧衣+茧花) 重量(含当前,不含退回)
// 联统率 = yllr != 0 ? (ltj / yllr) * 100 : 0
// 盈亏 = all - yllr
/// <summary>选茧日报主表(F9 biz_prod_xbj_xjrb)</summary>
[Table(Name = "XjrbRecords")]
public class XjrbRecord : BaseEntity
{
public DateTime Date { get; set; } // 选茧日期
public long GyzkId { get; set; } // 工艺庄口
public int YlLrBaoshu { get; set; } // 干茧领入包数
public decimal YlLrZhongliang { get; set; } // 干茧领入重量
public int LtjBaoshu { get; set; } // 联统茧包数
public decimal LtjZhongliang { get; set; } // 联统茧重量
public int HwjjBaoshu { get; set; } // 好五级茧包数
public decimal HwjjZhongliang { get; set; } // 好五级茧重量
public int LjjBaoshu { get; set; } // 六级茧包数
public decimal LjjZhongliang { get; set; } // 六级茧重量
public int MjBaoshu { get; set; } // 绵茧包数
public decimal MjZhongliang { get; set; } // 绵茧重量
public int SgjBaoshu { get; set; } // 双宫茧包数
public decimal SgjZhongliang { get; set; } // 双宫茧重量
public int XjjBaoshu { get; set; } // 下脚茧包数
public decimal XjjZhongliang { get; set; } // 下脚茧重量
public int JyBaoshu { get; set; } // 茧衣包数
public decimal JyZhongliang { get; set; } // 茧衣重量
public int JhBaoshu { get; set; } // 茧花包数
public decimal JhZhongliang { get; set; } // 茧花重量
public decimal TotalZhongliang { get; set; } // 合计重量(上述 8 项重量之和)
public int ThBaoshu { get; set; } // 退回包数
public decimal ThZhongliang { get; set; } // 退回重量
public decimal LiantongRate { get; set; } // 联统率(%)
public decimal Yingkui { get; set; } // 盈亏
}
/// <summary>选茧计划(F9 biz_prod_xbj_xjrb_plan):按领料单下达,含计划盈亏与完成标记</summary>
[Table(Name = "XjrbPlans")]
public class XjrbPlan : BaseEntity
{
public DateTime Date { get; set; } // 日期
public long GyzkId { get; set; } // 工艺庄口
public long YllingliaodanId { get; set; } // 领料单(原料出库单)ID
public int YlBaoshu { get; set; } // 原料领入包数
public decimal YlZhongliang { get; set; } // 原料领入重量
public int LtjBaoshu { get; set; } // 联统茧包数
public decimal LtjZhongliang { get; set; } // 联统茧重量
public int HwjjBaoshu { get; set; } // 好五级茧包数
public decimal HwjjZhongliang { get; set; } // 好五级茧重量
public int WjjBaoshu { get; set; } // 五级茧包数
public decimal WjjZhongliang { get; set; } // 五级茧重量
public int SgjBaoshu { get; set; } // 双宫茧包数
public decimal SgjZhongliang { get; set; } // 双宫茧重量
public int XjjBaoshu { get; set; } // 下脚茧包数
public decimal XjjZhongliang { get; set; } // 下脚茧重量
public int JyBaoshu { get; set; } // 茧衣包数
public decimal JyZhongliang { get; set; } // 茧衣重量
public int JhBaoshu { get; set; } // 茧花包数
public decimal JhZhongliang { get; set; } // 茧花重量
public decimal TotalZhongliang { get; set; } // 合计重量
public decimal LiantongRate { get; set; } // 联统率(%)
public decimal Yingkui { get; set; } // 选茧盈亏
public bool IsFinish { get; set; } // 是否选茧完成(完成后禁止改动明细)
}
/// <summary>选茧计划明细(F9 biz_prod_xbj_xjrb_item):挂在计划下的每日选茧进度行</summary>
[Table(Name = "XjrbItems")]
public class XjrbItem : BaseEntity
{
public long XjrbPlanId { get; set; } // 选茧计划ID
public DateTime Date { get; set; } // 选茧日期
public int LtjBaoshu { get; set; } // 联统茧包数
public decimal LtjZhongliang { get; set; } // 联统茧重量
public int HwjjBaoshu { get; set; } // 好五级茧包数
public decimal HwjjZhongliang { get; set; } // 好五级茧重量
public int WjjBaoshu { get; set; } // 五级茧包数
public decimal WjjZhongliang { get; set; } // 五级茧重量
public int SgjBaoshu { get; set; } // 双宫茧包数
public decimal SgjZhongliang { get; set; } // 双宫茧重量
public int XjjBaoshu { get; set; } // 下脚茧包数
public decimal XjjZhongliang { get; set; } // 下脚茧重量
public int JyBaoshu { get; set; } // 茧衣包数
public decimal JyZhongliang { get; set; } // 茧衣重量
public int JhBaoshu { get; set; } // 茧花包数
public decimal JhZhongliang { get; set; } // 茧花重量
public decimal TotalZhongliang { get; set; } // 合计重量
public bool IsFinish { get; set; } // 是否选茧完成(勾选后回写计划盈亏)
}
@@ -0,0 +1,79 @@
using FreeSql.DataAnnotations;
using F9WebAiTest.Domain.Common;
using F9WebAiTest.Domain.Enums.SYS.Employees;
namespace F9WebAiTest.Domain.Entities.Prod;
// 煮茧日报(对应 F9 生产-前缫 的 ZJRB 四张表:日报主表 / 机组 / 班次 / 机组班次)
// 数据口径:某日某车间某庄口某规格一条日报,主表存「班次合计」,机组存桶数,机组班次存甲乙班今缫桶数。
/// <summary>煮茧日报主表(biz_prod_qs_zjrb)</summary>
[Table(Name = "ZjrbRecords")]
public class ZjrbRecord : BaseEntity
{
public DateTime Date { get; set; } // 日期
public long DeptId { get; set; } // 车间(前缫)
public long GyzkId { get; set; } // 工艺庄口
public string Guige { get; set; } = ""; // 规格
public DateTime? LastDate { get; set; } // 上一日(写入时标记,取上一日一律按 Date < 当前日期)
public int StandardLuositongshu { get; set; } // 工艺落丝桶数(标准落丝桶数)
public int MeitongJianliang { get; set; } // 每桶茧量(g)
// 包数(今日 = 甲班 + 乙班)
public int BaoshuShangcun { get; set; } // 上存包数
public int BaoshuLingru { get; set; } // 领入包数
public int BaoshuSaosi { get; set; } // 今缫包数
public int BaoshuTuihui { get; set; } // 退回包数
public int BaoshuJincun { get; set; } // 今存包数
// 重量(kg,今日 = 甲班 + 乙班)
public decimal JianliangShangcun { get; set; } // 上存重量
public decimal JianliangLingru { get; set; } // 领入重量
public decimal JianliangSaosi { get; set; } // 今缫重量
public decimal JianliangTuihui { get; set; } // 退回重量
public decimal JianliangJincun { get; set; } // 今存重量
}
/// <summary>煮茧日报-机组(biz_prod_qs_zjrb_jizu):今存桶数 = 上存 + 今缫 - 今落</summary>
[Table(Name = "ZjrbJizus")]
public class ZjrbJizu : BaseEntity
{
public long ZjrbId { get; set; } // 煮茧日报ID
public int Jizu { get; set; } // 机组
public decimal JizuSaosiHours { get; set; } // 缫丝时长(小时,上限 20)
public int TongshuShangcun { get; set; } // 上存桶数
public int TongshuJinsao { get; set; } // 今缫桶数(= 甲班 + 乙班)
public int TongshuJinluo { get; set; } // 今落桶数
public int TongshuJincun { get; set; } // 今存桶数
}
/// <summary>煮茧日报-班次(biz_prod_qs_zjrb_banci):车间级甲乙班的包数/重量</summary>
[Table(Name = "ZjrbBancis")]
public class ZjrbBanci : BaseEntity
{
public long ZjrbId { get; set; } // 煮茧日报ID
public Prod_Banci_Enum Banci { get; set; } // 班次(甲/乙)
public int BaoshuShangcun { get; set; } // 上存包数
public int BaoshuLingru { get; set; } // 领入包数
public int BaoshuSaosi { get; set; } // 今缫包数
public int BaoshuTuihui { get; set; } // 退回包数
public int BaoshuJincun { get; set; } // 今存包数
public decimal JianliangShangcun { get; set; } // 上存重量
public decimal JianliangLingru { get; set; } // 领入重量
public decimal JianliangSaosi { get; set; } // 今缫重量
public decimal JianliangTuihui { get; set; } // 退回重量
public decimal JianliangJincun { get; set; } // 今存重量
}
/// <summary>煮茧日报-机组班次(biz_prod_qs_zjrb_jizu_banci):只存每机组每班次的今缫桶数</summary>
[Table(Name = "ZjrbJizuBancis")]
public class ZjrbJizuBanci : BaseEntity
{
public long ZjrbId { get; set; } // 煮茧日报ID
public long ZjrbJizuId { get; set; } // 煮茧日报机组ID
public int Jizu { get; set; } // 机组
public Prod_Banci_Enum Banci { get; set; } // 班次(甲/乙)
public int TongshuJinsao { get; set; } // 今缫桶数
}