Compare commits

...

6 Commits

Author SHA1 Message Date
sunkaixuan
9c472934eb Update demo 2025-08-16 15:34:09 +08:00
sunkaixuan
425a78694a Update exp to sql 2025-08-16 15:33:25 +08:00
sunkaixuan
e297e9f3ea Update demo 2025-08-16 14:12:29 +08:00
sunkaixuan
2cbfc3ad64 Update demo 2025-08-16 14:11:10 +08:00
sunkaixuan
37d5f7c6b2 Add user test case 2025-08-16 14:07:55 +08:00
sunkaixuan
1b952892f0 Update exp to sql 2025-08-16 14:07:15 +08:00
8 changed files with 481 additions and 1 deletions

View File

@ -34,6 +34,7 @@ namespace OrmTest
}
public static void Init()
{
Unitsdfayderqys.Init();
Unitsdfaysrs.Init();
Unitdslasdgy.Init();
Unitdafaaaaa.Init();

View File

@ -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;
}
}

View File

@ -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; }
}
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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));

View File

@ -32,6 +32,7 @@ namespace OrmTest
}
public static void Init()
{
UnitOneToManyNsdfafa.Init();
Unitasdfays.Init();
Unitadfafafa.Init();
UnitSubGroupadfa.Init();

View File

@ -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; }
}
}
}