diff --git a/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/UnitOneToManyNsdfafa.cs b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/UnitOneToManyNsdfafa.cs new file mode 100644 index 000000000..7d5150a1b --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/UnitOneToManyNsdfafa.cs @@ -0,0 +1,343 @@ +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(); + var PlanPackage = 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"); + } + /// + /// 作业表 + /// + [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; } + } + + } + +}