From 7f4c3bcbcc384c2af7a0cd5004ae376993658a11 Mon Sep 17 00:00:00 2001 From: yibo <361071264@qq.com> Date: Mon, 15 Oct 2018 20:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E7=BA=BF=E8=B7=AF=E6=B4=BE=E8=BD=A6?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tools/CarLoadingBySendLinePage.cs | 140 +++++++++--------- .../B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs | 25 +++- 2 files changed, 92 insertions(+), 73 deletions(-) diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs index 72ef14c..3920fe1 100644 --- a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs +++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs @@ -26,7 +26,7 @@ using TSingSoft.WebPluginFramework.Controls; namespace BWP.Web.Pages.B3QingDaoWanFu.Tools { - class CarLoadingBySendLinePage:AppBasePage + class CarLoadingBySendLinePage : AppBasePage { private readonly DFInfo _dFInfo = DFInfo.Get(typeof(SaleOutStore)); @@ -58,7 +58,9 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools var btnSearch = new TSButton("开始查询", (sender, e) => { - _slGrid.Query = GetSendLineQuery(_slQueryContainer.Build(), _slChbHidden.Checked); + var min = (DateTime?)_slQueryContainer.GetInput("MinLoadTime"); + var max = (DateTime?)_slQueryContainer.GetInput("MaxLoadTime"); + _slGrid.Query = GetSendLineQuery(_slQueryContainer.Build(), _slChbHidden.Checked, min, max); _slGrid.DataBind(); }); @@ -99,8 +101,8 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools private void CreateSendLineGridColumns() { _slGrid.Columns.Add(new DFBrowseGridColumn("路线")); - _slGrid.Columns.Add(new DFBrowseGridColumn("辅数量")); -// _slGrid.Columns.Add(new DFBrowseGridColumn("AllUnitNum")); + _slGrid.Columns.Add(new DFBrowseGridColumn("SecondNumber", "辅数量")); + // _slGrid.Columns.Add(new DFBrowseGridColumn("AllUnitNum")); var allUnitNumcol = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) => { var allUnitNum = _slGrid.CurrentData.Data.Rows[rowIndex]["AllUnitNum"]; @@ -139,11 +141,10 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools }; cell.Controls.Add(link); cell.Align = "right"; - }) - { HeaderText = "报价数量" }; + }) { HeaderText = "报价数量" }; _slGrid.Columns.EAdd(allUnitNumcol); - _slGrid.Columns.Add(new DFBrowseGridColumn("已派车数量")); + _slGrid.Columns.Add(new DFBrowseGridColumn("AlreadyNumber", "已派车数量")); var thisTimeLoadNum = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) => { var x = new Label(); @@ -152,8 +153,7 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools x.Text = num.ToString(); cell.Controls.Add(x); cell.Align = "right"; - }) - { HeaderText = "本次派车数量" }; + }) { HeaderText = "本次派车数量" }; _slGrid.Columns.Add(thisTimeLoadNum); var staffColumn = new DFEditGridColumn("业务员ID"); staffColumn.InitEditControl += (sender, e) => @@ -233,8 +233,8 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools _slGrid.DataBind(); AspUtil.Alert(this, msg); - -// _carLoadingGrid.DataBind(); + + // _carLoadingGrid.DataBind(); } else { @@ -247,76 +247,84 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools } - private class AreadyLoadBill - { - public long SaleOutStore_ID { get; set; } - } - public static DQueryDom GetSendLineQuery(DQueryDom dom, bool hidden) + + public static DQueryDom GetSendLineQuery(DQueryDom dom, bool hidden, DateTime? min, DateTime? max) { - var areadyLoadBill = new JoinAlias("AreadyLoadBill", typeof(AreadyLoadBill)); + var main = new JoinAlias(typeof(temp2)); + var query = new DQueryDom(main); + OrganizationUtil.RegisterOrganizationQueryTable(query); + AreadyLoadBill.Register(query, min, max); + temp2.Register(query, dom, hidden); var sendLine = new JoinAlias("SendLine", typeof(DeliverGoodsLine)); - var sendLineDetail = new JoinAlias(typeof(DeliverGoodsLine_Detail)); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(sendLineDetail), DQCondition.EQ(sendLineDetail, "Customer_ID", dom.From.RootSource.Alias, "Customer_ID")); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(sendLine), DQCondition.EQ(sendLineDetail, "DeliverGoodsLine_ID", sendLine, "ID")); - dom.RegisterQueryTable(typeof(AreadyLoadBill), new List { "SaleOutStore_ID" }, GetTemDom()); - dom.From.AddJoin(JoinType.Left, new DQDmoSource(areadyLoadBill), DQCondition.EQ(areadyLoadBill, "SaleOutStore_ID", dom.From.RootSource.Alias, "ID")); - - dom.Columns.Clear(); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "ID"), "路线ID")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Name"), "路线")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "ID")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Name")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("AllUnitNum")), "AllUnitNum")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.GreaterThan(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID"), DQExpression.Snippet("0")), DQExpression.Field("AllUnitNum"), DQExpression.NULL)), "已派车数量")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet?>("null"), "本次派车数量")); - -// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("null"), "业务员ID")); -// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("''"), "业务员")); + query.From.AddJoin(JoinType.Left, new DQDmoSource(sendLine), DQCondition.EQ(main, "DeliverGoodsLine_ID", sendLine, "ID")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "业务员ID")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "业务员")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Employee_ID")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Employee_Name")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "送货人员ID")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "送货人员")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "ID"), "路线ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Name"), "路线")); + query.Columns.Add(DQSelectColumn.Field("AllUnitNum", main)); + query.Columns.Add(DQSelectColumn.Field("SecondNumber", main)); + query.Columns.Add(DQSelectColumn.Field("AlreadyNumber", main)); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet?>("null"), "本次派车数量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "业务员ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "业务员")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "送货人员ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "送货人员")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_ID"), "车辆ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_Name"), "车辆")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("''"), "Remark")); + return query; + } -// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("null"), "送货人员ID")); -// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("''"), "送货人员")); + class temp2 + { + public long? DeliverGoodsLine_ID { get; set; } + public Money? AllUnitNum { get; set; } + public Money? SecondNumber { get; set; } + public Money? AlreadyNumber { get; set; } - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine,"Car_ID"), "车辆ID")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_Name"), "车辆")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Car_ID")); - dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Car_Name")); - // dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("null"), "车辆ID")); - // dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("''"), "车辆")); - dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("''"), "Remark")); - dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核)); - dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", 配送方式.公司配送)); - dom.Where.Conditions.Add(DQCondition.GreaterThan(DQExpression.IfNull(DQExpression.Field(sendLine, "ID"), DQExpression.Snippet("0")), DQExpression.Snippet("0"))); - dom.Where.Conditions.Add(DQCondition.Or( - DQCondition.InEQ(DQExpression.Field("AllUnitNum"), DQExpression.Snippet?>("0")), - DQCondition.InEQ(DQExpression.Field("SecondNumber"), DQExpression.Snippet?>("0")))); - if (hidden) + public static void Register(DQueryDom root, DQueryDom dom, bool hidden) { - dom.Having.Conditions.Add(DQCondition.InEQ(DQExpression.Count(DQExpression.Field("ID")), DQExpression.Count(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID")))); - } + var areadyLoadBill = new JoinAlias("AreadyLoadBill", typeof(AreadyLoadBill)); + dom.From.AddJoin(JoinType.Left, new DQDmoSource(areadyLoadBill), DQCondition.EQ(areadyLoadBill, "SaleOutStore_ID", dom.From.RootSource.Alias, "ID")); - OrganizationUtil.AddOrganizationLimit(dom,typeof(SaleOutStore)); - return dom; + dom.Columns.Clear(); + dom.Columns.Add(DQSelectColumn.Field("DeliverGoodsLine_ID")); + dom.GroupBy.Expressions.Add(DQExpression.Field("DeliverGoodsLine_ID")); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("AllUnitNum")), "AllUnitNum")); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量")); + dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID")), DQExpression.NULL, DQExpression.Field("AllUnitNum"))), "已派车数量")); + dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核)); + dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", 配送方式.公司配送)); + dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("DeliverGoodsLine_ID"))); + dom.Where.Conditions.Add(DQCondition.Or( + DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("AllUnitNum"), DQExpression.Value(0)), DQExpression.Value(0)), + DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("SecondNumber"), DQExpression.Value(0)), DQExpression.Value(0)))); + if (hidden) + { + dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID"))); + } + OrganizationUtil.AddOrganizationLimit(dom, typeof(SaleOutStore)); + root.RegisterQueryTable(typeof(temp2), new string[] { "DeliverGoodsLine_ID", "AllUnitNum", "SecondNumber", "AlreadyNumber" }, dom); + } } + } - private static DQueryDom GetTemDom() + public class AreadyLoadBill + { + public long SaleOutStore_ID { get; set; } + public static void Register(DQueryDom root, DateTime? min, DateTime? max) { var carLoadingBillDetail = new JoinAlias(typeof(CarLoading_BillDetail)); var temDom = new DQueryDom(carLoadingBillDetail); - temDom.Columns.Add(DQSelectColumn.Field("BillID", "SaleOutStore_ID")); + temDom.Columns.Add(DQSelectColumn.Field("BillID", carLoadingBillDetail, "SaleOutStore_ID")); + temDom.GroupBy.Expressions.Add(DQExpression.Field(carLoadingBillDetail, "BillID")); + if (min.HasValue) + temDom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("LoadTime", min)); + if (max.HasValue) + temDom.Where.Conditions.Add(DQCondition.LessThanOrEqual("LoadTime", max)); temDom.Where.Conditions.Add(DQCondition.EQ(carLoadingBillDetail, "BillTypeID", DmoTypeIDAttribute.GetID(typeof(SaleOutStore)))); - temDom.GroupBy.Expressions.Add(DQExpression.Field("BillID")); - return temDom; + root.RegisterQueryTable(typeof(AreadyLoadBill), new string[] { "SaleOutStore_ID" }, temDom); } - } } diff --git a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs index 228adfb..4f5c2d4 100644 --- a/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs +++ b/B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs @@ -14,6 +14,8 @@ using Forks.EnterpriseServices.SqlDoms; using Forks.Utils; using TSingSoft.WebControls2; using TSingSoft.WebPluginFramework.Controls; +using BWP.B3Frameworks.BO.NamedValueTemplate; +using BWP.B3Sale.Utils; namespace BWP.Web.Pages.B3QingDaoWanFu.Tools { @@ -142,22 +144,31 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools } DQueryDom GetQuery() { - var dom = new DQueryDom(new JoinAlias(typeof(SaleOutStore))); - dom = CarLoadingBySendLinePage.GetSendLineQuery(dom, false); - dom.Columns.Clear(); - dom.GroupBy.Expressions.Clear(); - dom.Having.Conditions.Clear(); + var main = new JoinAlias(typeof(SaleOutStore)); + var dom = new DQueryDom(main); + var detail = new JoinAlias(typeof(AreadyLoadBill)); + AreadyLoadBill.Register(dom, MinTime, MaxTime); + dom.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "SaleOutStore_ID")); if (MinTime != null) dom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("LoadTime", MinTime)); if (MaxTime != null) dom.Where.Conditions.Add(DQCondition.LessThanOrEqual("LoadTime", MaxTime)); - dom.Where.Conditions.Add(DQExpression.Snippet("[SendLine].[ID]=" + SendLineID)); - dom.Where.Conditions.Add(DQExpression.Snippet("ISNULL([AreadyLoadBill].[SaleOutStore_ID], 0)=0")); + + dom.Where.Conditions.Add(DQCondition.EQ("DeliverGoodsLine_ID", SendLineID)); + dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(detail, "SaleOutStore_ID"))); dom.Columns.Add(DQSelectColumn.Field("ID")); dom.Columns.Add(DQSelectColumn.Field("LoadTime")); dom.Columns.Add(DQSelectColumn.Field("Customer_Name")); dom.Columns.Add(DQSelectColumn.Field("AllUnitNum")); dom.Columns.Add(DQSelectColumn.Field("SecondNumber")); + + dom.Where.Conditions.Add(DQCondition.EQ("BillState", 单据状态.未审核)); + dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", 配送方式.公司配送)); + dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("DeliverGoodsLine_ID"))); + dom.Where.Conditions.Add(DQCondition.Or( + DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("AllUnitNum"), DQExpression.Value(0)), DQExpression.Value(0)), + DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("SecondNumber"), DQExpression.Value(0)), DQExpression.Value(0)))); + OrganizationUtil.AddOrganizationLimit(dom, typeof(SaleOutStore)); return dom; } }