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();
});
}
}