diff --git a/B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs b/B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs index e000bbf..7aec798 100644 --- a/B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs +++ b/B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs @@ -129,10 +129,10 @@ namespace BWP.Web.Pages.B3ClientService.Reports.SectionInOutStoreAnalyse_ query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.LessThan("Time", startTime), DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight"))))), "期初库存|重量")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore",true)), DQExpression.Value(1))).ECastType(), "入库|头数")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", true)), DQExpression.Field("Number"))), "入库|重量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", true)), DQExpression.Field("Weight"))), "入库|重量")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", false)), DQExpression.Value(1))).ECastType(), "出库|头数")); - query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", false)), DQExpression.Field("Number"))), "出库|重量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("InStore", false)), DQExpression.Field("Weight"))), "出库|重量")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Value(1), DQExpression.Value(-1))).ECastType(), "期初库存|头数")); query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), "期初库存|重量")); diff --git a/B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs b/B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs index 369b3be..e17d924 100644 --- a/B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs +++ b/B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs @@ -1,131 +1,173 @@ -//using BWP.B3ClientService; -//using BWP.B3ClientService.BO; -//using BWP.B3Frameworks.Utils; -//using BWP.Web.Utils; -//using BWP.Web.WebControls; -//using Forks.EnterpriseServices.DataForm; -//using Forks.EnterpriseServices.DomainObjects2; -//using Forks.EnterpriseServices.DomainObjects2.DQuery; -//using Forks.EnterpriseServices.SqlDoms; -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Security; -//using System.Text; -//using System.Web.UI; -//using System.Web.UI.HtmlControls; -//using System.Web.UI.WebControls; -//using TSingSoft.WebControls2; -//using TSingSoft.WebPluginFramework.Controls; -//using TSingSoft.WebPluginFramework.Pages; -//using TSingSoft.WebPluginFramework; - -//namespace BWP.Web.Pages.B3ClientService.Reports.SectionLossAnalyse_ -//{ -// class SectionLossAnalyse : ServerPage -// { -// protected override void OnInit(EventArgs e) -// { -// if (!User.IsInRole("B3ClientService.报表展示.条段损耗")) -// throw new SecurityException(); -// base.OnInit(e); -// } - -// DFBrowseGrid mBrowseGrid; -// protected override void InitForm(HtmlForm form) -// { -// form.EAdd(new PageTitle("条段损耗")); - -// var queryPanel = new Panel(); -// queryPanel.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white"); -// queryPanel.CssClass = "QueryPanel PrintInVisible"; -// form.Controls.Add(queryPanel); - -// AddQueryControl(queryPanel); - -// var mZone = new TitlePanelZone(); -// form.Controls.Add(mZone); - -// mZone.Add(CreateResultTab()); -// } - -// ChoiceBox batchSelect; -// private void AddQueryControl(Panel queryPanel) -// { -// var hp = queryPanel.EAdd(new Panel()); -// hp.Style.Add("float", "right"); -// hp.EAdd(new SimpleLabel("生产批次")); -// batchSelect = hp.EAdd(new ChoiceBox(B3ClientServiceConsts.DataSources.生产批次) { EnableInputArgument = true, EnableTopItem = true, AutoPostBack = true, Width = Unit.Pixel(180) }); -// var batch = GetYesterdayBatch(); -// if (batch != null) -// batchSelect.Fill(batch.Item1.ToString(), batch.Item2); -// batchSelect.SelectedValueChanged += delegate -// { -// StartQuery(); -// }; -// } - -// Tuple GetYesterdayBatch() -// { -// var dom = new DQueryDom(new JoinAlias(typeof(ProductBatch))); -// dom.Columns.Add(DQSelectColumn.Field("ID")); -// dom.Columns.Add(DQSelectColumn.Field("Name")); -// dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("Date", true)); -// dom.Where.Conditions.Add(DQCondition.LessThan("Date", DateTime.Today)); -// dom.Range = SelectRange.Top(1); -// return dom.EExecuteScalar(); -// } - -// private TitlePanel CreateResultTab() -// { -// var result = new TitlePanel("查询结果"); -// mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) }); -// mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn()); -// var hPanel = result.EAdd(new HLayoutPanel()); -// PageUtil.AddExcelExportPanel(hPanel, mBrowseGrid, "条段损耗"); -// return result; -// } - -// void StartQuery() -// { -// var sumColumns = new List(); -// var groupSumColumns = new List(); - -// var main = new JoinAlias(typeof(SectionStoreDetail)); -// var goods = new JoinAlias("iGoods", typeof(Goods)); -// var query = new DQueryDom(main); -// query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(main, "Goods_ID", goods, "ID")); -// query.Columns.Add(DQSelectColumn.Field("Name", goods, "存货名称")); -// query.GroupBy.Expressions.Add(DQExpression.Field(goods, "Name")); - -// query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Value(1)).ECastType(), "头数")); -// sumColumns.Add(query.Columns.Count - 1); -// groupSumColumns.Add(query.Columns.Count - 1); -// query.Columns.Add(DQSelectColumn.Sum("GradeWeight", "胴体重量")); -// sumColumns.Add(query.Columns.Count - 1); -// query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(inGoods, "Name"), "存货名称")); -// query.GroupBy.Expressions.Add(DQExpression.Field(inGoods, "Name")); -// query.Columns.Add(DQSelectColumn.Sum("InStoreWeight", "入库重量")); -// sumColumns.Add(query.Columns.Count - 1); -// query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Subtract(DQExpression.Field("GradeWeight"), DQExpression.IfNull(DQExpression.Field("InStoreWeight"), DQExpression.Value(0)))), "损耗")); -// sumColumns.Add(query.Columns.Count - 1); -// groupSumColumns.Add(query.Columns.Count - 1); -// if (!batchSelect.IsEmpty) -// query.Where.Conditions.Add(DQCondition.EQ("ProductBatch_ID", long.Parse(batchSelect.Value))); -// var args = new LoadArguments(query); -// foreach (var idx in sumColumns) -// args.SumColumns.Add(idx); -// foreach (var idx in groupSumColumns) -// args.GroupSumColumns.Add(idx); -// mBrowseGrid.LoadArguments = args; -// mBrowseGrid.DataBind(); -// } - -// protected override void OnLoad(EventArgs e) -// { -// base.OnLoad(e); -// if (!IsPostBack) -// StartQuery(); -// } -// } -//} +using BWP.B3ClientService; +using BWP.B3ClientService.BO; +using BWP.B3Frameworks.Utils; +using BWP.Web.Utils; +using BWP.Web.WebControls; +using Forks.EnterpriseServices.DataForm; +using Forks.EnterpriseServices.DomainObjects2; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.SqlDoms; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security; +using System.Text; +using System.Web.UI; +using System.Web.UI.HtmlControls; +using System.Web.UI.WebControls; +using TSingSoft.WebControls2; +using TSingSoft.WebPluginFramework.Controls; +using TSingSoft.WebPluginFramework.Pages; +using TSingSoft.WebPluginFramework; +using BWP.B3ClientService.NamedValueTemplate; + +namespace BWP.Web.Pages.B3ClientService.Reports.SectionLossAnalyse_ +{ + class SectionLossAnalyse : ServerPage + { + protected override void OnInit(EventArgs e) + { + if (!User.IsInRole("B3ClientService.报表展示.条段损耗")) + throw new SecurityException(); + base.OnInit(e); + } + + DFBrowseGrid mBrowseGrid; + protected override void InitForm(HtmlForm form) + { + form.EAdd(new PageTitle("条段损耗")); + + var queryPanel = new Panel(); + queryPanel.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white"); + queryPanel.CssClass = "QueryPanel PrintInVisible"; + form.Controls.Add(queryPanel); + + AddQueryControl(queryPanel); + + var mZone = new TitlePanelZone(); + form.Controls.Add(mZone); + + mZone.Add(CreateResultTab()); + } + + ChoiceBox batchSelect; + private void AddQueryControl(Panel queryPanel) + { + var hp = queryPanel.EAdd(new Panel()); + hp.Style.Add("float", "right"); + hp.EAdd(new SimpleLabel("生产批次")); + batchSelect = hp.EAdd(new ChoiceBox(B3ClientServiceConsts.DataSources.生产批次) { EnableInputArgument = true, EnableTopItem = true, AutoPostBack = true, Width = Unit.Pixel(180) }); + var batch = GetYesterdayBatch(); + if (batch != null) + batchSelect.Fill(batch.Item1.ToString(), batch.Item2); + batchSelect.SelectedValueChanged += delegate + { + StartQuery(); + }; + } + + Tuple GetYesterdayBatch() + { + var dom = new DQueryDom(new JoinAlias(typeof(ProductBatch))); + dom.Columns.Add(DQSelectColumn.Field("ID")); + dom.Columns.Add(DQSelectColumn.Field("Name")); + dom.OrderBy.Expressions.Add(DQOrderByExpression.Create("Date", true)); + dom.Where.Conditions.Add(DQCondition.LessThan("Date", DateTime.Today)); + dom.Range = SelectRange.Top(1); + return dom.EExecuteScalar(); + } + + private TitlePanel CreateResultTab() + { + var result = new TitlePanel("查询结果"); + mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) }); + mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn()); + var hPanel = result.EAdd(new HLayoutPanel()); + PageUtil.AddExcelExportPanel(hPanel, mBrowseGrid, "条段损耗"); + return result; + } + + void StartQuery() + { + long? productBatch = null; + if (!batchSelect.IsEmpty) + productBatch = long.Parse(batchSelect.Value); + var main = new JoinAlias(typeof(UnionTemp)); + var batch = new JoinAlias(typeof(ProductBatch)); + var query = new DQueryDom(main); + UnionTemp.Register(query, productBatch); + query.From.AddJoin(JoinType.Left, new DQDmoSource(batch), DQCondition.EQ(main, "ProductBatch_ID", batch, "ID")); + query.Columns.Add(DQSelectColumn.Field("Name", batch, "生产批次")); + query.GroupBy.Expressions.Add(DQExpression.Field(batch, "Name")); + query.Columns.Add(DQSelectColumn.Sum("PickNumber", "领料|头数")); + query.Columns.Add(DQSelectColumn.Sum("PickWeight", "领料|重量")); + query.Columns.Add(DQSelectColumn.Sum("InNumber", "入库|头数")); + query.Columns.Add(DQSelectColumn.Sum("InWeight", "入库|重量")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field("PickWeight"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("InWeight"), DQExpression.Value(0)))).ECastType(), "差异")); + if (!batchSelect.IsEmpty) + query.Where.Conditions.Add(DQCondition.EQ("ProductBatch_ID", long.Parse(batchSelect.Value))); + var args = new LoadArguments(query); + for (var i = 1; i < query.Columns.Count; i++) + args.SumColumns.Add(i); + args.GroupSumColumns.Add(query.Columns.Count - 1); + mBrowseGrid.LoadArguments = args; + mBrowseGrid.DataBind(); + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + if (!IsPostBack) + StartQuery(); + } + } + + class UnionTemp + { + public long ProductBatch_ID { get; set; } + + public int? PickNumber { get; set; } + + public decimal? PickWeight { get; set; } + + public int? InNumber { get; set; } + + public decimal? InWeight { get; set; } + + public static void Register(DQueryDom root, long? productBatch) + { + var u1 = GetPickInfo(productBatch); + var u2 = GetSectionInStoreInfo(productBatch); + u1.UnionNext.Select = u2; + u1.UnionNext.Type = UnionType.All; + root.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductBatch_ID", "PickNumber", "PickWeight", "InNumber", "InWeight" }, u1); + } + + static DQueryDom GetPickInfo(long? batch) + { + var query = new DQueryDom(new JoinAlias(typeof(CarcassFullInfo))); + query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "PickNumber")); + query.Columns.Add(DQSelectColumn.Field("InStoreWeight", "PickWeight")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "InNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "InWeight")); + query.Where.Conditions.Add(DQCondition.EQ("PickType", 领用类型.条转段)); + if (batch.HasValue) + query.Where.Conditions.Add(DQCondition.EQ("ProductBatch_ID", batch)); + return query; + } + + static DQueryDom GetSectionInStoreInfo(long? batch) + { + var query = new DQueryDom(new JoinAlias(typeof(SectionStoreDetail))); + query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "PickNumber")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "PickWeight")); + query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.IsNotNull(DQExpression.Field("BarCode")), DQExpression.Value(1)), "InNumber")); + query.Columns.Add(DQSelectColumn.Field("Weight", "InWeight")); + if (batch.HasValue) + query.Where.Conditions.Add(DQCondition.EQ("ProductBatch_ID", batch)); + return query; + } + } +} diff --git a/WebFolder/config/plugins/B3ClientService.plugin b/WebFolder/config/plugins/B3ClientService.plugin index cd4ecc4..418f92a 100644 --- a/WebFolder/config/plugins/B3ClientService.plugin +++ b/WebFolder/config/plugins/B3ClientService.plugin @@ -134,7 +134,7 @@ - +