From 0a62c93b185b78f2108b0e744067d7c99ffe4ddf Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 3 Jun 2019 12:40:29 +0800 Subject: [PATCH] Update exp to sql --- .../SqlServerTest/UnitTest/UQueryable.cs | 214 +++++++++++++++++- .../SqlServerTest/UnitTest/Updateable.cs | 14 +- .../MemberInitExpressionResolve.cs | 14 +- Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs | 5 + 4 files changed, 231 insertions(+), 16 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs index cb573c421..aa0906ec0 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs @@ -1,4 +1,5 @@ -using System; +using SqlSugar; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -65,8 +66,18 @@ namespace OrmTest Db.CodeFirst.InitTables(); var list5 = Db.Queryable().Where(it => SqlSugar.SqlFunc.ToString(it.Date.Value.Year) == "1").ToList(); - var list6 = Db.Queryable().Where(it => it.Date.Value.Year ==1).ToList(); - var list7 = Db.Queryable().Where(it => it.Date.Value.Date==DateTime.Now.Date).ToList(); + var list6 = Db.Queryable().Where(it => it.Date.Value.Year == 1).ToList(); + var list7 = Db.Queryable().Where(it => it.Date.Value.Date == DateTime.Now.Date).ToList(); + + + SaleOrder saleOrderInfo = new SaleOrder(); + Db.CodeFirst.InitTables(); + var result = Db.GetSimpleClient().Update(o => new SaleOrder() + { + OrderStatus = 1, + CheckMan = saleOrderInfo.CheckMan, + CheckTime = DateTime.Now + }, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1); } public static class IEnumerbleContains @@ -82,6 +93,203 @@ namespace OrmTest } } } + [SugarTable("UnitSaleOrder")] + public class SaleOrder + { + public SaleOrder() + { + SaleDate = DateTime.Now; + Team = 1; + AddTime = DateTime.Now; + OrderStatus = 0; + Points = 0; + PayPoints = 0; + PointsExchangeMoney = decimal.Zero; + IsPushMessage = false; + CostAmount = decimal.Zero; + OrderAmount = decimal.Zero; + RealOrderAmount = decimal.Zero; + AccountsDueAmount = decimal.Zero; + SettleType = 0; + IsPushMessage = false; + } + + /// + /// 订单号 + /// + public string OrderSn { get; set; } + + /// + /// 客户编号 + /// + public string CustomerNo { get; set; } + + + /// + /// 收货人姓名 + /// + public string CustomerName { get; set; } + + /// + /// 成本总金额 + /// + public decimal CostAmount { get; set; } + + /// + /// 订单总金额 + /// + public decimal OrderAmount { get; set; } + + /// + /// 实收金额(整单优惠后) + /// + public decimal RealOrderAmount { get; set; } + + /// + /// 销货日期 + /// + public DateTime SaleDate { get; set; } + + /// + /// 下单时间 + /// + public DateTime AddTime { get; set; } + + /// + /// 媒体资源投放ID + /// + public string IndustryCode { get; set; } + + public string IndustryName { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 班组 + /// + public int Team { get; set; } + + /// + /// 销售员编号 + /// + public string SellerNo { get; set; } + + /// + /// 销售员姓名 + /// + public string SellerName { get; set; } + + /// + /// 操作人ID + /// + public virtual string HandlerCode { get; set; } + + /// + /// 操作者 + /// + public string Handler { get; set; } + + /// + /// 发货仓库代号 + /// + public string StoreCode { get; set; } + + /// + /// 发货仓库名称 + /// + public string StoreName { get; set; } + + /// + /// 销货店铺渠道代号 + /// + public string ShopChannelCode { get; set; } + + /// + /// 销货店铺渠道名称 + /// + public string ShopChannelName { get; set; } + + /// + /// 订单产品数 + /// + public int GoodsNum { get; set; } + + /// + /// 礼品数量 + /// + public int GiftNum { get; set; } + + /// + /// 对应预订单号 + /// + public string CustomerOrderSn { get; set; } + + /// + /// 订单赠送积分 + /// + public int Points { get; set; } + + /// + /// 应收款金额 + /// + public decimal AccountsDueAmount { get; set; } + + /// + /// 来自预约单号 + /// + public string ReserationOrderSn { get; set; } + + + /// + /// 订单状态 0为未审核 1为已审核 + /// + public int OrderStatus { get; set; } + + /// + /// 审核人 + /// + public string CheckMan { get; set; } + + /// + /// 审核时间 + /// + public DateTime? CheckTime { get; set; } + + /// + /// 结算类型 0为非金工石(零售) 1为金工石 + /// + public int SettleType { get; set; } + + /// + /// 使用积分 + /// + public int PayPoints { get; set; } + + /// + /// 积分抵现金额 + /// + public decimal PointsExchangeMoney { get; set; } + + /// + /// 是否已推送微信消息 + /// + public bool IsPushMessage { get; set; } + + } + + public class SaleOrderBaseInfo + { + public int GoodsNum { get; set; } + + public int GiftNum { get; set; } + + public decimal OrderAmount { get; set; } + + } + public class UnitTest3 { diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Updateable.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Updateable.cs index 35564cd87..2397d6032 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Updateable.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Updateable.cs @@ -38,13 +38,21 @@ namespace OrmTest saveDiary.Content = "内容"; saveDiary.Time = DateTime.Now; saveDiary.IsRemind = false;//无论传false/true 最终执行的结果都是以true执行的 - + var sql = Db.Updateable().SetColumns(it => new UnitDiary() { IsRemind = saveDiary.IsRemind, }).Where(it => it.ID == saveDiary.ID).ToSql(); UValidate.Check(sql.Key, @"UPDATE [Diary] SET - [IsRemind] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); + [IsRemind] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); + + + sql = Db.Updateable().SetColumns(it => new UnitDiary() + { + TypeID = saveDiary.TypeID, + }).Where(it => it.ID == saveDiary.ID).ToSql(); + UValidate.Check(sql.Key, @"UPDATE [Diary] SET + [TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); } } @@ -73,7 +81,7 @@ namespace OrmTest /// /// 日记类型ID /// - public int TypeID { get; set; } + public int? TypeID { get; set; } /// /// 日记类型名称 /// diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs index d87e85709..41ded7e7a 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberInitExpressionResolve.cs @@ -107,23 +107,17 @@ namespace SqlSugar this.Context.Result.Append(base.Context.GetEqString(memberName, parameterName)); } } + else if (IsConst(item)&&IsConvert(item)&&UtilMethods.IsNullable(item.Type) && UtilMethods.GetUnderType(item.Type)==UtilConstants.BoolType) + { + parameter.Context.Result.Append(base.Context.GetEqString(memberName, GetNewExpressionValue(item))); + } else if (IsConst(item)) { - var oldCommonTempData = parameter.CommonTempData; - if (oldCommonTempData == null) - { - parameter.CommonTempData = CommonTempDataType.Result; - } base.Expression = item; - if (IsConvert(item)) - { - base.Expression = (base.Expression as UnaryExpression).Operand; - } base.Start(); string parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.Const + this.Context.ParameterIndex; parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameterName)); this.Context.Parameters.Add(new SugarParameter(parameterName, parameter.CommonTempData)); - parameter.CommonTempData = oldCommonTempData; this.Context.ParameterIndex++; } else if (item is MemberExpression) diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index 19bdfda00..52f7bcf02 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -93,6 +93,11 @@ namespace SqlSugar return unType != null; } + internal static bool IsNullable(Type type) + { + Type unType = Nullable.GetUnderlyingType(type); + return unType != null; + } internal static T IsNullReturnNew(T returnObj) where T : new() { if (returnObj.IsNullOrEmpty())