using CMS.Plugin.HIAWms.Domain; using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; using CMS.Plugin.HIAWms.Domain.Shared.WmsMaterialStocks; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.EntityFrameworkCore.Modeling; 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 wmsmaterialstock. /// /// The builder. public static void ConfigureWmsMaterialStock(this ModelBuilder builder) { Check.NotNull(builder, nameof(builder)); builder.Entity(b => { // 配置表和架构名称 b.ToTable((CMSPluginDbProperties.DbTablePrefix + "_WmsMaterialStocks").ToLower(), CMSPluginDbProperties.DbSchema) .HasComment("WMS物料库存表"); b.ConfigureByConvention(); // 主键配置 b.HasKey(x => x.Id); // 属性配置 b.Property(x => x.MaterialId) .HasMaxLength(64) .IsRequired() .HasComment("物料ID"); b.Property(x => x.MaterialName) .HasMaxLength(128) .IsRequired() .HasComment("物料名称"); b.Property(x => x.ContainerNo) .HasMaxLength(64) .HasComment("容器编号"); b.Property(x => x.ContainerStatus) .HasComment("容器状态"); b.Property(x => x.ContainerType) .HasComment("容器类型"); b.Property(x => x.MaterialNo) .HasMaxLength(64) .IsRequired() .HasComment("物料编号"); b.Property(x => x.StockNumber) .HasComment("库存数量"); b.Property(x => x.MaterialBatch) .HasMaxLength(64) .HasComment("物料批次"); b.Property(x => x.SupplierCode) .HasMaxLength(64) .HasComment("供应商编号"); b.Property(x => x.MaterialModel) .HasMaxLength(128) .HasComment("机型/规格"); b.Property(x => x.PlaceNo) .HasMaxLength(64) .HasComment("库位编号"); b.Property(x => x.PlaceStatus) .HasComment("库位状态;"); b.Property(x => x.StorageTypeNo) .HasComment("库位类型"); b.Property(x => x.AreaCode) .HasMaxLength(64) .HasComment("区域编号"); b.Property(x => x.AreaName) .HasMaxLength(128) .HasComment("库区名称"); b.Property(x => x.IsLock) .HasComment("是否锁定(2:未锁定,1:已锁定)"); b.Property(x => x.EmptyContainer) .HasComment("是否空托(2:否,1:是)"); b.Property(x => x.InStockTime) .HasComment("入库时间"); b.Property(x => x.Sort) .HasDefaultValue(0) .HasComment("排序"); b.Property(x => x.Remark) .HasMaxLength(500) .HasComment("备注"); b.Property(x => x.IsDisabled) .HasComment("是否禁用"); // 索引配置 b.HasIndex(x => x.MaterialNo).IsUnique(); b.HasIndex(x => x.MaterialName); b.HasIndex(x => x.ContainerNo); b.HasIndex(x => x.PlaceNo); b.HasIndex(x => x.AreaCode); b.HasIndex(x => new { x.MaterialBatch, x.SupplierCode }); // 扩展属性配置 b.ApplyObjectExtensionMappings(); }); } }