using OrmTest; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SqlSeverTest.UserTestCases.UnitTest { internal class UnitOneToManyNsdfafa { public static void Init() { var db = NewUnitTest.Db; db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); Demo1(db); Demo2(db); } private static void Demo2(SqlSugarClient db ) { var PlanPackage2 = db.Queryable() .Where(p => p.processPlanPackageEntries.Any(z => z.processPlan.Entries.Any(c => c.Process.Type == ProcessEnum.混色 && c.OrgId == 11 && c.Pass == 0))) .SingleAsync(p => p.Code == "a"); } private static void Demo1(SqlSugarClient db) { var sql = db.Queryable() .Where(p => p.processPlanPackageEntries.Any(z => z.processPlan.Entries.Any(c => c.Process.Type == ProcessEnum.混色 && c.OrgId == 11 && c.Pass == 0))) .ToSqlString(); if (!sql.Contains("SELECT [Type] FROM [BaseProcess] WHERE ProcessPlanEntry1.[ProcessId]=[Id]")) { throw new Exception("unit error"); } var PlanPackage2 = db.Queryable() .Where(p => p.processPlanPackageEntries.Any(z => z.processPlan.Entries.Any(c => c.Process.Type == ProcessEnum.混色 && c.OrgId == 11 && c.Pass == 0))) .SingleAsync(p => p.Code == "a").GetAwaiter().GetResult(); } /// /// 作业表 /// [SugarTable(null, "作业表")] public class BaseProcess : EntityBase { /// /// 名称 /// [SugarColumn(ColumnDescription = "名称", Length = 50)] [Required, MaxLength(50)] public string Name { get; set; } /// /// 编码 /// [SugarColumn(ColumnDescription = "编码", Length = 50)] [Required, MaxLength(50)] public string Code { get; set; } /// /// 班组Id /// [SugarColumn(ColumnDescription = "班组Id")] [Required] public long SysOrgId { get; set; } /// /// 图标 /// [SugarColumn(ColumnDescription = "图标", Length = 50)] [MaxLength(50)] public string Icon { get; set; } /// /// 工序类别 /// [SugarColumn(ColumnDescription = "工序类别")] public ProcessEnum Type { get; set; } } /// /// 工序类型枚举(多次报工领料区分) /// [Description("工序类型枚举(多次报工领料区分)")] public enum ProcessEnum { /// /// 普通 /// [Description("普通")] 普通 = 0, /// /// 混色 /// [Description("混色")] 混色 = 1, /// /// 分把 /// [Description("分把")] 分把 = 2, /// /// 包装 /// [Description("包装")] 包装 = 3, /// /// PU /// [Description("PU")] PU = 4, } /// /// 工序计划包 /// [SugarTable(null, "工序计划包")] public class ProcessPlanPackage : EntityBase { /// /// 编码 /// [SugarColumn(ColumnDescription = "编码", Length = 50)] [Required] public string Code { get; set; } /// /// 名称 /// [SugarColumn(ColumnDescription = "名称", Length = 50)] public string Name { get; set; } ///// ///// 汇报重量 ///// //[SugarColumn(ColumnDescription = "汇报重量")] //public decimal Num { get; set; } /// /// 工序计划包明细 /// [Navigate(NavigateType.OneToMany, nameof(ProcessPlanPackageEntry.PlanPackageId))] public List processPlanPackageEntries { get; set; } } /// /// 工序计划包明细 /// [SugarTable(null, "工序计划包明细")] public class ProcessPlanPackageEntry : EntityBase { /// /// 工序计划包Id /// [SugarColumn(ColumnDescription = "工序计划包Id")] [Required] public long PlanPackageId { get; set; } /// /// 计划Id /// [SugarColumn(ColumnDescription = "计划Id")] [Required] public long PlanId { get; set; } /// /// 工序计划包明细 /// [Navigate(NavigateType.OneToOne, nameof(PlanId))] public ProcessPlan processPlan { get; set; } } /// /// 工序计划表 /// [SugarTable(null, "工序计划表")] public class ProcessPlan : EntityBase { /// /// 单据编号 /// [SugarColumn(ColumnDescription = "单据编号", Length = 50)] [Required, MaxLength(50)] public string Code { get; set; } /// /// 物料Id /// [SugarColumn(ColumnDescription = "物料Id")] [Required] public long MaterialId { get; set; } /// /// erp工艺路线Id /// [SugarColumn(ColumnDescription = "erp工艺路线Id")] [Required] public long ProcessChainId { get; set; } /// /// 生产订单编号 /// [SugarColumn(ColumnDescription = "生产订单编号", Length = 50)] [Required, MaxLength(50)] public string OrderCode { get; set; } /// /// 销售订单编号 /// [SugarColumn(ColumnDescription = "销售订单编号", Length = 300)] [Required, MaxLength(300)] public string SaleCode { get; set; } /// /// 生产订单行号 /// [SugarColumn(ColumnDescription = "生产订单行号")] [Required] public int OrderEntrySeq { get; set; } /// /// 数量 /// [SugarColumn(ColumnDescription = "数量")] [Required] public decimal Num { get; set; } /// /// ERP未换算数量 /// [SugarColumn(ColumnDescription = "ERP未换算数量")] [Required] public decimal ERPNum { get; set; } /// /// 计划开工时间 /// [SugarColumn(ColumnDescription = "计划开工时间")] [Required] public DateTime StartDate { get; set; } /// /// 计划完工时间 /// [SugarColumn(ColumnDescription = "计划完工时间")] [Required] public DateTime EndDate { get; set; } /// /// 工序计划工序列表 /// [Navigate(NavigateType.OneToMany, nameof(ProcessPlanEntry.ProcessPlanId))] public List Entries { get; set; } /// /// 生产订单Id /// /// [SugarColumn(ColumnDescription = "生产订单Id")] [Required] public long OrderId { get; set; } /// /// 是否成品订单 /// /// [SugarColumn(ColumnDescription = "是否成品订单")] [Required] public bool IsFinishedProduct { get; set; } /// /// 生产订单明细Id /// /// [SugarColumn(ColumnDescription = "生产订单明细Id")] [Required] public long OrderEntryId { get; set; } /// /// 生产车间Id /// /// [SugarColumn(ColumnDescription = "生产车间Id")] [Required] public long OrgId { get; set; } /// /// 进度 /// [SugarColumn(IsIgnore = true)] public decimal Progress { get; set; } } /// /// 工序计划工序表 /// [SugarTable(null, "工序计划工序表")] public class ProcessPlanEntry : EntityBase { /// /// 工序序列Id /// [SugarColumn(ColumnDescription = "工序序列Id")] [Required] public long SeqId { get; set; } /// /// 工序计划Id /// [SugarColumn(ColumnDescription = "工序计划Id")] [Required] public long ProcessPlanId { get; set; } /// /// ERP工序序号 /// [SugarColumn(ColumnDescription = "ERP工序序号")] [Required, MaxLength(50)] public int ErpProcessNo { get; set; } /// /// ERP工序计划明细Id /// [SugarColumn(ColumnDescription = "ERP工序计划明细Id")] [Required] public long ErpId { get; set; } /// /// 作业Id /// [SugarColumn(ColumnDescription = "作业Id")] [Required] public long ProcessId { get; set; } /// /// 作业 /// [Navigate(NavigateType.OneToOne, nameof(ProcessId))] public BaseProcess Process { get; set; } public int OrgId { get; set; } public int Pass { get; set; } } public class EntityBase { [SugarColumn(IsPrimaryKey =true)] public int Id { get; set; } } } }