mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-20 09:28:53 +08:00
Compare commits
6 Commits
ea0044572d
...
9c472934eb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9c472934eb | ||
|
|
425a78694a | ||
|
|
e297e9f3ea | ||
|
|
2cbfc3ad64 | ||
|
|
37d5f7c6b2 | ||
|
|
1b952892f0 |
@ -34,6 +34,7 @@ namespace OrmTest
|
||||
}
|
||||
public static void Init()
|
||||
{
|
||||
Unitsdfayderqys.Init();
|
||||
Unitsdfaysrs.Init();
|
||||
Unitdslasdgy.Init();
|
||||
Unitdafaaaaa.Init();
|
||||
|
||||
@ -50,6 +50,15 @@ namespace Demo
|
||||
File = s.Image,
|
||||
//Image = s.Image == null ? null : new UploadFile() { Id = s.FileId, Url = s.Image == null ? "" : s.Image.FilePath }
|
||||
}).ToPageList(1, 2, ref total);
|
||||
|
||||
var isTrue = true;
|
||||
var list2 = Db.Queryable<SpShangPin>()
|
||||
.Select(s => new ShangPinView()
|
||||
{
|
||||
Id = s.Id,
|
||||
Image = new UploadFile() { Id = s.FileId, Url = isTrue?s.Id.ToString():s.Name},
|
||||
|
||||
}).ToList();
|
||||
return total;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
using NetTaste;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OrmTest
|
||||
{
|
||||
internal class Unitsdfayderqys
|
||||
{
|
||||
public static void Init()
|
||||
{
|
||||
var db = NewUnitTest.Db;
|
||||
db.CodeFirst.InitTables<WarehoseReqDetailEntity, SysItemsEntity>();
|
||||
db.DbMaintenance.TruncateTable<WarehoseReqDetailEntity, SysItemsEntity>();
|
||||
db.Insertable(new WarehoseReqDetailEntity()
|
||||
{
|
||||
agrname = "测试农资",
|
||||
agrtype = "1",
|
||||
agrclass = "化肥",
|
||||
factory = "测试工厂",
|
||||
intnum = 100,
|
||||
warehosereqno = "REQ001",
|
||||
strno = ""
|
||||
}).ExecuteReturnEntity();
|
||||
|
||||
db.Insertable(new SysItemsEntity()
|
||||
{
|
||||
fid = "1",
|
||||
fencode = "ITEM001",
|
||||
fparentid = "1",
|
||||
ffullname = "",
|
||||
fistree = true,
|
||||
flayers = 1
|
||||
// 其他需要的测试字段
|
||||
}).ExecuteReturnEntity();
|
||||
|
||||
|
||||
var list = db.Queryable<WarehoseReqDetailEntity>().Includes(x => x.SysItems)
|
||||
// .GroupBy(x => new { x.agrname, x.agrtype, x.agrclass, x.factory })
|
||||
.Select(x => new { x.factory, x.SysItems })
|
||||
.ToList();
|
||||
|
||||
var list2 = db.Queryable<WarehoseReqDetailEntity>().Includes(x => x.SysItems)
|
||||
// .GroupBy(x => new { x.agrname, x.agrtype, x.agrclass, x.factory })
|
||||
.Select(x => new DTO{ factory=x.factory, SysItems=x.SysItems })
|
||||
.ToList();
|
||||
|
||||
if (list.First().SysItems.fencode != "ITEM001") throw new Exception("unit error");
|
||||
if (list2.First().SysItems.fencode != "ITEM001") throw new Exception("unit error");
|
||||
}
|
||||
[SugarTable("WarehoseReqDetail")]
|
||||
public class WarehoseReqDetailEntity
|
||||
{
|
||||
[SugarColumn(IsPrimaryKey = true)]
|
||||
public string strno { get; set; }
|
||||
public string agrname { get; set; }
|
||||
public string agrtype { get; set; }
|
||||
public string factory { get; set; }
|
||||
public string agrclass { get; set; }
|
||||
public Int32 intnum { get; set; }
|
||||
public string warehosereqno { get; set; }
|
||||
|
||||
[Navigate(NavigateType.OneToOne, nameof(agrtype), nameof(SysItemsEntity.fid))]
|
||||
public SysItemsEntity SysItems { get; set; }
|
||||
|
||||
}
|
||||
[SugarTable("SysItems")]
|
||||
public class SysItemsEntity
|
||||
{
|
||||
[SugarColumn(IsPrimaryKey = true)]
|
||||
public string fid { get; set; }
|
||||
public string fparentid { get; set; }
|
||||
public string fencode { get; set; }
|
||||
public string ffullname { get; set; }
|
||||
public Boolean fistree { get; set; }
|
||||
public Int32 flayers { get; set; }
|
||||
|
||||
[Navigate(NavigateType.OneToOne, nameof(fparentid), nameof(SysItemsEntity.fid))]
|
||||
public SysItemsEntity Parent { get; set; }
|
||||
|
||||
}
|
||||
public class DTO
|
||||
{
|
||||
public string factory { get; set; }
|
||||
|
||||
public Unitsdfayderqys.SysItemsEntity SysItems { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -155,6 +155,13 @@ namespace SqlSugar
|
||||
if (this.Context?.SugarContext?.QueryBuilder?.AppendNavInfo?.MappingNavProperties?.ContainsKey(memberName) == true)
|
||||
{
|
||||
++i;
|
||||
if (this.Context?.SugarContext?.QueryBuilder is QueryBuilder builder&&item is MemberExpression member2&&member2?.Expression is ParameterExpression parameterExpression)
|
||||
{
|
||||
if (builder.SelectNewIgnoreColumns == null)
|
||||
builder.SelectNewIgnoreColumns = new List<KeyValuePair<string, string>>();
|
||||
var p=parameterExpression?.Type?.GetProperty(memberName);
|
||||
builder.SelectNewIgnoreColumns.Add(new KeyValuePair<string, string>(memberName,p?.PropertyType?.Name));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
++i;
|
||||
|
||||
@ -136,7 +136,14 @@ namespace SqlSugar
|
||||
MapperSql.Sql = $"( {queryable.ToSql().Key} ) ";
|
||||
if (isAny)
|
||||
{
|
||||
MapperSql.Sql = $" EXISTS( {MapperSql.Sql}) ";
|
||||
if (MapperSql.Sql.StartsWith("( ") && MapperSql.Sql.EndsWith(" ) "))
|
||||
{
|
||||
MapperSql.Sql = $" EXISTS {MapperSql.Sql} ";
|
||||
}
|
||||
else
|
||||
{
|
||||
MapperSql.Sql = $" EXISTS( {MapperSql.Sql}) ";
|
||||
}
|
||||
|
||||
}
|
||||
return MapperSql;
|
||||
|
||||
@ -546,6 +546,10 @@ namespace SqlSugar
|
||||
if (ignoreColumns.Any())
|
||||
{
|
||||
ignorePropertyNames = ignoreColumns.Select(it => it.Key).ToList();
|
||||
}
|
||||
if (ignorePropertyNames?.Contains(name)==true)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
result.Add(name, DataReaderToDynamicList_Part(readerValues, item, reval, mappingKeys, ignorePropertyNames));
|
||||
|
||||
@ -32,6 +32,7 @@ namespace OrmTest
|
||||
}
|
||||
public static void Init()
|
||||
{
|
||||
UnitOneToManyNsdfafa.Init();
|
||||
Unitasdfays.Init();
|
||||
Unitadfafafa.Init();
|
||||
UnitSubGroupadfa.Init();
|
||||
|
||||
@ -0,0 +1,359 @@
|
||||
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 OrmTest
|
||||
{
|
||||
internal class UnitOneToManyNsdfafa
|
||||
{
|
||||
public static void Init()
|
||||
{
|
||||
var db = NewUnitTest.Db;
|
||||
db.CodeFirst.InitTables<BaseProcess, ProcessPlanPackage, ProcessPlanPackageEntry, ProcessPlanPackageEntry, ProcessPlan
|
||||
>();
|
||||
db.CodeFirst.InitTables<ProcessPlanEntry>();
|
||||
|
||||
|
||||
Demo1(db);
|
||||
Demo2(db);
|
||||
}
|
||||
|
||||
private static void Demo2(SqlSugarClient db )
|
||||
{
|
||||
|
||||
var PlanPackage2 = db.Queryable<ProcessPlanPackage>()
|
||||
.Where(p => p.processPlanPackageEntries.Any(z =>
|
||||
z.processPlan.Entries.Any(c =>
|
||||
c.OrgId == 11 &&
|
||||
c.Process.Type == ProcessEnum.混色 &&
|
||||
|
||||
c.Pass == 0)))
|
||||
.SingleAsync(p => p.Code == "a").GetAwaiter().GetResult();
|
||||
}
|
||||
private static void Demo1(SqlSugarClient db)
|
||||
{
|
||||
var PlanPackage2 = db.Queryable<ProcessPlanPackageEntry>()
|
||||
.Where(it=>it.processPlan.Entries.Any(s=>s.Id==1))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 作业表
|
||||
/// </summary>
|
||||
[SugarTable(null, "作业表")]
|
||||
public class BaseProcess : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "名称", Length = 50)]
|
||||
[Required, MaxLength(50)]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "编码", Length = 50)]
|
||||
[Required, MaxLength(50)]
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 班组Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "班组Id")]
|
||||
[Required]
|
||||
public long SysOrgId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 图标
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "图标", Length = 50)]
|
||||
[MaxLength(50)]
|
||||
public string Icon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序类别
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "工序类别")]
|
||||
public ProcessEnum Type { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 工序类型枚举(多次报工领料区分)
|
||||
/// </summary>
|
||||
[Description("工序类型枚举(多次报工领料区分)")]
|
||||
public enum ProcessEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// 普通
|
||||
/// </summary>
|
||||
[Description("普通")]
|
||||
普通 = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 混色
|
||||
/// </summary>
|
||||
[Description("混色")]
|
||||
混色 = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 分把
|
||||
/// </summary>
|
||||
[Description("分把")]
|
||||
分把 = 2,
|
||||
/// <summary>
|
||||
/// 包装
|
||||
/// </summary>
|
||||
[Description("包装")]
|
||||
包装 = 3,
|
||||
/// <summary>
|
||||
/// PU
|
||||
/// </summary>
|
||||
[Description("PU")]
|
||||
PU = 4,
|
||||
}
|
||||
/// <summary>
|
||||
/// 工序计划包
|
||||
/// </summary>
|
||||
[SugarTable(null, "工序计划包")]
|
||||
public class ProcessPlanPackage : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 编码
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "编码", Length = 50)]
|
||||
[Required]
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 名称
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "名称", Length = 50)]
|
||||
public string Name { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 汇报重量
|
||||
///// </summary>
|
||||
//[SugarColumn(ColumnDescription = "汇报重量")]
|
||||
//public decimal Num { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序计划包明细
|
||||
/// </summary>
|
||||
[Navigate(NavigateType.OneToMany, nameof(ProcessPlanPackageEntry.PlanPackageId))]
|
||||
public List<ProcessPlanPackageEntry> processPlanPackageEntries { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工序计划包明细
|
||||
/// </summary>
|
||||
[SugarTable(null, "工序计划包明细")]
|
||||
public class ProcessPlanPackageEntry : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 工序计划包Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "工序计划包Id")]
|
||||
[Required]
|
||||
public long PlanPackageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 计划Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "计划Id")]
|
||||
[Required]
|
||||
public long PlanId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序计划包明细
|
||||
/// </summary>
|
||||
[Navigate(NavigateType.OneToOne, nameof(PlanId))]
|
||||
public ProcessPlan processPlan { get; set; }
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工序计划表
|
||||
/// </summary>
|
||||
[SugarTable(null, "工序计划表")]
|
||||
public class ProcessPlan : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 单据编号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "单据编号", Length = 50)]
|
||||
[Required, MaxLength(50)]
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物料Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "物料Id")]
|
||||
[Required]
|
||||
public long MaterialId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// erp工艺路线Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "erp工艺路线Id")]
|
||||
[Required]
|
||||
public long ProcessChainId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 生产订单编号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "生产订单编号", Length = 50)]
|
||||
[Required, MaxLength(50)]
|
||||
public string OrderCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 销售订单编号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "销售订单编号", Length = 300)]
|
||||
[Required, MaxLength(300)]
|
||||
public string SaleCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生产订单行号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "生产订单行号")]
|
||||
[Required]
|
||||
public int OrderEntrySeq { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "数量")]
|
||||
[Required]
|
||||
public decimal Num { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ERP未换算数量
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "ERP未换算数量")]
|
||||
[Required]
|
||||
public decimal ERPNum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 计划开工时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "计划开工时间")]
|
||||
[Required]
|
||||
public DateTime StartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 计划完工时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "计划完工时间")]
|
||||
[Required]
|
||||
public DateTime EndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工序计划工序列表
|
||||
/// </summary>
|
||||
[Navigate(NavigateType.OneToMany, nameof(ProcessPlanEntry.ProcessPlanId))]
|
||||
public List<ProcessPlanEntry> Entries { get; set; }
|
||||
/// <summary>
|
||||
/// 生产订单Id
|
||||
/// </summary>
|
||||
///
|
||||
[SugarColumn(ColumnDescription = "生产订单Id")]
|
||||
[Required]
|
||||
public long OrderId { get; set; }
|
||||
/// <summary>
|
||||
/// 是否成品订单
|
||||
/// </summary>
|
||||
///
|
||||
[SugarColumn(ColumnDescription = "是否成品订单")]
|
||||
[Required]
|
||||
public bool IsFinishedProduct { get; set; }
|
||||
/// <summary>
|
||||
/// 生产订单明细Id
|
||||
/// </summary>
|
||||
///
|
||||
[SugarColumn(ColumnDescription = "生产订单明细Id")]
|
||||
[Required]
|
||||
public long OrderEntryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生产车间Id
|
||||
/// </summary>
|
||||
///
|
||||
[SugarColumn(ColumnDescription = "生产车间Id")]
|
||||
[Required]
|
||||
public long OrgId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 进度
|
||||
/// </summary>
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public decimal Progress { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 工序计划工序表
|
||||
/// </summary>
|
||||
[SugarTable(null, "工序计划工序表")]
|
||||
public class ProcessPlanEntry : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 工序序列Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "工序序列Id")]
|
||||
[Required]
|
||||
public long SeqId { get; set; }
|
||||
/// <summary>
|
||||
/// 工序计划Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "工序计划Id")]
|
||||
[Required]
|
||||
public long ProcessPlanId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ERP工序序号
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "ERP工序序号")]
|
||||
[Required, MaxLength(50)]
|
||||
public int ErpProcessNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ERP工序计划明细Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "ERP工序计划明细Id")]
|
||||
[Required]
|
||||
public long ErpId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 作业Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "作业Id")]
|
||||
[Required]
|
||||
public long ProcessId { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 作业
|
||||
/// </summary>
|
||||
[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; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user