NEW_ENTITIES_CREATION_REPORT.md 9.0 KB

新增实体类及租户支持完成报告

完成时间

2026-04-22

新增实体类汇总

一、WorkOrder 模块(5个实体)

1. WorkOrdMaster - 工单主数据

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/WorkOrder/Entity/WorkOrdMaster.cs
  • 数据库表: WorkOrdMaster
  • 主键: RecID(自增)
  • 关键字段: WorkOrd, ItemNum, Status, Typed, QtyOrded, QtyCompleted, Priority
  • 租户字段: ✅ tenant_id(已添加)

2. WorkOrdDetail - 工单物料明细

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/WorkOrder/Entity/WorkOrdDetail.cs
  • 数据库表: WorkOrdDetail
  • 主键: RecID(自增)
  • 关联字段: WorkOrdMasterRecID(关联工单主表)
  • 关键字段: WorkOrd, ItemNum, LineNum, QtyRequired, QtyIssued
  • 租户字段: ✅ tenant_id(已添加)

3. WorkOrdRouting - 工单工序表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/WorkOrder/Entity/WorkOrdRouting.cs
  • 数据库表: WorkOrdRouting
  • 主键: RecID(自增)
  • 关联字段: WorkOrdMasterRecID(关联工单主表)
  • 关键字段: WorkOrd, OP, ItemNum, WorkCtr, Status, QtyComplete
  • 租户字段: ✅ tenant_id(已添加)

4. MesMorder - 工单信息表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/WorkOrder/Entity/MesMorder.cs
  • 数据库表: mes_morder
  • 主键: Id(自增)
  • 关键字段: morder_no, product_code, morder_state, morder_production_number
  • 租户字段: ✅ tenant_id(已存在,无需修改)

5. MesMoentry - 工单附属表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/WorkOrder/Entity/MesMoentry.cs
  • 数据库表: mes_moentry
  • 主键: Id(自增)
  • 关联字段: moentry_moid(关联工单主表)
  • 关键字段: moentry_mono, fbill_no, morder_production_number
  • 租户字段: ✅ tenant_id(已添加)

二、Production 模块(5个实体)

6. PeriodSequenceDet - 工序间衔接

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/Production/Entity/PeriodSequenceDet.cs
  • 数据库表: PeriodSequenceDet
  • 主键: RecID(自增)
  • 关键字段: ItemNum, Line, Op, WorkCtr, Period, Sequence, OrdQty
  • 租户字段: ✅ tenant_id(已添加)

7. ScheduleResultOpMaster - 排产结果

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/Production/Entity/ScheduleResultOpMaster.cs
  • 数据库表: ScheduleResultOpMaster
  • 主键: RecID(自增)
  • 关键字段: WorkOrd, WorkCtr, Line, ItemNum, Op, WorkDate, WorkQty
  • 租户字段: ✅ tenant_id(已添加)

8. ShopCalendarWorkCtr - 产线工作日历表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/Production/Entity/ShopCalendarWorkCtr.cs
  • 数据库表: ShopCalendarWorkCtr
  • 主键: RecID(自增)
  • 关键字段: WorkCtr, ProdLine, WeekDay, IsWorkDay, ShiftsStart1-4
  • 租户字段: ✅ tenant_id(已添加)

9. QualityLineWorkDetail - 产线休息时间表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/Production/Entity/QualityLineWorkDetail.cs
  • 数据库表: QualityLineWorkDetail
  • 主键: RecID(自增)
  • 关键字段: ProdLine, WorkShift, Period, RestTimePoint, RestTime
  • 租户字段: ✅ tenant_id(已添加)

10. ResourceOccupancyTime - 产线加班表

  • 文件路径: server/Plugins/Admin.NET.Plugin.AiDOP/Production/Entity/ResourceOccupancyTime.cs
  • 数据库表: ResourceOccupancyTime
  • 主键: RecID(自增)
  • 关键字段: ResourceType, Resource, StartTime, EndTime, IsRest
  • 租户字段: ✅ tenant_id(已添加)

实体类特性

统一规范

所有实体类均遵循以下规范:

1. 命名空间

// WorkOrder 模块
namespace Admin.NET.Plugin.AiDOP.WorkOrder;

// Production 模块
namespace Admin.NET.Plugin.AiDOP.Production;

2. 表映射

[SugarTable("TableName", "表中文名")]
public class EntityName

3. 主键定义

[SugarColumn(ColumnName = "RecID", IsPrimaryKey = true, IsIdentity = true)]
public long RecID { get; set; }

4. 租户字段

/// <summary>租户ID(多租户隔离)</summary>
[SugarColumn(ColumnName = "tenant_id", IsNullable = true)]
public long? TenantId { get; set; }

5. 字段类型映射

  • 字符串: string?(可空)+ Length 参数
  • 数值: decimal?, int?, long?(可空)
  • 日期: DateTime?(可空)
  • 布尔: int?(数据库存储0/1)

数据库迁移

迁移脚本

📄 tools/sql/add_tenant_id_to_new_entities.sql

包含功能

  1. ✅ 为9张新增表添加 tenant_id 字段
  2. ✅ 为所有表创建 idx_tenant_id 索引
  3. ✅ 验证字段和索引创建结果
  4. ✅ 自动跳过已有 tenant_id 的表

执行命令

mysql -u root -p你的密码 aidopdev < tools/sql/add_tenant_id_to_new_entities.sql

字段统计

WorkOrder 模块字段数

  • WorkOrdMaster: 35个核心字段 + tenant_id
  • WorkOrdDetail: 27个字段 + tenant_id
  • WorkOrdRouting: 40个字段 + tenant_id
  • MesMorder: 48个字段 + tenant_id
  • MesMoentry: 15个字段 + tenant_id

Production 模块字段数

  • PeriodSequenceDet: 30个字段 + tenant_id
  • ScheduleResultOpMaster: 28个字段 + tenant_id
  • ShopCalendarWorkCtr: 24个字段 + tenant_id
  • QualityLineWorkDetail: 19个字段 + tenant_id
  • ResourceOccupancyTime: 15个字段 + tenant_id

下一步建议

1. 数据库迁移

执行 SQL 脚本为表添加 tenant_id 字段和索引。

2. Service 层开发

参照现有 Service 模式为新实体创建服务类:

  • 列表查询(带租户过滤)
  • 详情查询(带租户过滤)
  • 新增操作(写入租户ID)
  • 修改操作(租户隔离)
  • 删除操作(租户隔离)

3. 参考模板

public class WorkOrdMasterService : IDynamicApiController, ITransient
{
    private readonly ISqlSugarClient _db;
    private readonly UserManager _userManager;
    
    // 查询时过滤租户
    var tenantId = _userManager.TenantId;
    var list = await _db.Queryable<WorkOrdMaster>()
        .Where(x => x.TenantId == tenantId)
        .ToListAsync();
    
    // 新增时写入租户ID
    entity.TenantId = tenantId;
    await _db.Insertable(entity).ExecuteCommandAsync();
}

4. 为现有数据设置租户ID

如果表中已有数据,需要设置默认租户ID:

-- 假设默认租户ID为1
UPDATE WorkOrdMaster SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE WorkOrdDetail SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE WorkOrdRouting SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE mes_moentry SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE PeriodSequenceDet SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE ScheduleResultOpMaster SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE ShopCalendarWorkCtr SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE QualityLineWorkDetail SET tenant_id = 1 WHERE tenant_id IS NULL;
UPDATE ResourceOccupancyTime SET tenant_id = 1 WHERE tenant_id IS NULL;

实体关系

WorkOrder 模块关系

WorkOrdMaster (工单主表)
├── WorkOrdDetail (物料明细) - 通过 WorkOrdMasterRecID 关联
└── WorkOrdRouting (工序表) - 通过 WorkOrdMasterRecID 关联

MesMorder (MES工单主表)
└── MesMoentry (工单子表) - 通过 moentry_moid 关联

Production 模块关系

PeriodSequenceDet (工序间衔接) - 独立表
ScheduleResultOpMaster (排产结果) - 独立表
ShopCalendarWorkCtr (工作日历) - 独立表
QualityLineWorkDetail (休息时间) - 独立表
ResourceOccupancyTime (资源占用) - 独立表

技术亮点

1. 完整的多租户支持

  • ✅ 所有实体都包含 tenant_id 字段
  • ✅ 字段类型统一:BIGINT NULL
  • ✅ C# 属性统一:public long? TenantId { get; set; }

2. 规范的ORM映射

  • ✅ 使用 SqlSugar 特性
  • ✅ 字段名与数据库完全对应
  • ✅ 可空类型正确标注

3. 完善的注释

  • ✅ 类级别注释(表中文名)
  • ✅ 属性级别注释(重要字段)
  • ✅ 租户字段特殊标注

4. 性能优化

  • ✅ 所有租户字段添加索引
  • ✅ 使用条件索引创建(IF NOT EXISTS)
  • ✅ 主键为自增长类型

总结

已完成:

  • 10个实体类完整创建
  • 所有实体添加租户ID支持
  • 数据库迁移脚本生成
  • 索引优化脚本生成

📊 统计数据:

  • WorkOrder 模块:5个实体,165个字段
  • Production 模块:5个实体,116个字段
  • 总计:10个实体,281个字段

🎯 符合规范:

  • 统一使用 tenant_id(小写下划线)
  • 统一使用 SqlSugar ORM
  • 完整的可空类型支持
  • 规范的主键定义

生成时间:2026-04-22
涉及模块:WorkOrder、Production
实体总数:10个
字段总数:281个