using CMS.Plugin.HIAWms.Domain; using CMS.Plugin.HIAWms.Domain.Shared.Enums; using CMS.Plugin.HIAWms.Domain.WmsMaterial; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; using CMS.Plugin.MyExtension.Domain; namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; /// /// EfCore扩展 /// public static partial class CMSPluginEfCoreExtensions { /// /// Includes the details. /// /// The queryable. /// if set to true [include]. /// public static IQueryable IncludeDetails(this IQueryable queryable, bool include = true) { if (!include) { return queryable; } return queryable; } /// /// Configures the wmsmaterial. /// /// The builder. public static void ConfigureWmsMaterial(this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); builder.Entity(b => { // 配置表名和注释 b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsMaterials").ToLower(), CMSPluginDbProperties.DbSchema) .HasComment("物料基础信息表"); b.ConfigureByConvention(); // 主键配置(FullAuditedAggregateRoot 已默认包含 Id) b.HasKey(x => x.Id); // 字段配置 b.Property(x => x.MaterialCode) .HasMaxLength(64) .IsRequired() .HasComment("物料编码(唯一标识)"); b.Property(x => x.MaterialName) .HasMaxLength(128) .IsRequired() .HasComment("物料名称"); b.Property(x => x.PurchaseType) .HasComment("采购类型(枚举值)"); b.Property(x => x.MaterialType) .HasComment("物料类型(枚举值)"); b.Property(x => x.PrimaryUnit) .HasMaxLength(20) .HasComment("主单位(如:kg、m、个)"); b.Property(x => x.Standard) .HasMaxLength(128) .HasComment("规格/标准(如:GB/T 8163-2018)"); b.Property(x => x.OuterDiameter) .HasColumnType("decimal(18,2)") .HasComment("外径(单位:mm)"); b.Property(x => x.WallThickness) .HasColumnType("decimal(18,2)") .HasComment("壁厚(单位:mm)"); b.Property(x => x.MaterialQuality) .HasMaxLength(64) .HasComment("材质(如:304不锈钢)"); b.Property(x => x.Length) .HasColumnType("decimal(18,2)") .HasComment("长度(单位:m)"); b.Property(x => x.IsMainBranch) .HasDefaultValue(YesNoEnum.N) .HasComment("是否为主支管"); b.Property(x => x.Factory) .HasMaxLength(64) .HasComment("生产工厂"); b.Property(x => x.Certification) .HasMaxLength(128) .HasComment("证书编号"); // 冗余字段配置 b.Property(x => x.RedundantField1) .HasMaxLength(256) .IsRequired(false) .HasComment("冗余字段1 - 预留扩展用途"); b.Property(x => x.RedundantField2) .HasMaxLength(256) .IsRequired(false) .HasComment("冗余字段2 - 预留扩展用途"); b.Property(x => x.RedundantField3) .HasMaxLength(256) .IsRequired(false) .HasComment("冗余字段3 - 预留扩展用途"); // 其他通用字段 b.Property(x => x.Sort) .HasDefaultValue(0) .HasComment("排序"); b.Property(x => x.Remark) .HasMaxLength(500) .IsRequired(false) .HasComment("备注"); b.Property(x => x.IsDisabled) .IsRequired(false) .HasDefaultValue(false) .HasComment("是否禁用"); b.Property(x => x.IsValid) .IsRequired() .HasComment("是否有效物料"); b.Property(x => x.IsSelfMade) .IsRequired(false) .HasComment("是否自产"); b.Property(x => x.Num) .IsRequired() .HasComment("数量"); b.Property(x => x.SelfNum) .IsRequired(false) .HasComment("自有数量"); // 索引配置 b.HasIndex(x => x.MaterialCode).IsUnique(); // 物料编码唯一索引 b.HasIndex(x => x.MaterialName); // 物料名称普通索引 b.HasIndex(x => x.PurchaseType); // 采购类型索引(如需查询过滤) b.HasIndex(x => x.MaterialType); // 物料类型索引(如需查询过滤) //配置通用字段 b.ConfigureMyCmsEntity(); // b.Property(x => x.CreatorId) // .HasMaxLength(36) // .IsRequired(false) // .HasComment("创建人ID"); // b.Property(x => x.CreatorName) // .HasMaxLength(64) // .IsRequired(false) // .HasComment("创建人"); // b.Property(x => x.CreationTime) //.IsRequired() //.HasComment("创建时间"); // b.Property(x => x.LastModifierName) // .HasMaxLength(64) // .IsRequired(false) // .HasComment("修改人"); // b.Property(x => x.LastModifierId) // .HasMaxLength(36) // .IsRequired(false) // .HasComment("修改人ID"); // b.Property(x => x.LastModificationTime) // .IsRequired(false) // .HasComment("修改时间"); // b.Property(x => x.IsDeleted) // .IsRequired() // .HasComment("是否删除"); // b.Property(x => x.DeleterId) // .HasMaxLength(36) // .IsRequired(false) // .HasComment("删除人ID"); // b.Property(x => x.DeletionTime) // .IsRequired(false) // .HasComment("删除时间"); // b.Property(x => x.ExtraProperties) //.IsRequired(false) //.HasComment("扩展属性"); // b.Property(x => x.ConcurrencyStamp) //.IsRequired(false) // .HasMaxLength(40) //.HasComment("并发戳"); // // 其他通用字段 // b.Property(x => x.Sort) // .HasDefaultValue(0) // .HasComment("排序"); // b.Property(x => x.Remark) // .HasMaxLength(500) // .IsRequired(false) // .HasComment("备注"); // b.Property(x => x.IsDisabled) // .IsRequired(false) // .HasDefaultValue(false) // .HasComment("是否禁用"); b.ApplyObjectExtensionMappings(); }); } }