Browse Source

条转段报表分析。

master
yibo 7 years ago
parent
commit
e70024120f
3 changed files with 176 additions and 134 deletions
  1. +2
    -2
      B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs
  2. +173
    -131
      B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs
  3. +1
    -1
      WebFolder/config/plugins/B3ClientService.plugin

+ 2
- 2
B3ClientService.Web/Pages/B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.cs View File

@ -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<int?>(), "入库|头数"));
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<int?>(), "出库|头数"));
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<int?>(), "期初库存|头数"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("InStore", true), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), "期初库存|重量"));


+ 173
- 131
B3ClientService.Web/Pages/B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.cs View File

@ -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<long, string> 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<long, string>();
// }
// 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<int>();
// var groupSumColumns = new List<int>();
// 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<int?>(), "头数"));
// 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<long, string> 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<long, string>();
}
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<int>(), "差异"));
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;
}
}
}

+ 1
- 1
WebFolder/config/plugins/B3ClientService.plugin View File

@ -134,7 +134,7 @@
<Menu id="0031" name="MES系统/MES报表展示/白条级别汇总" roles="B3ClientService.报表展示.白条级别汇总" url="B3ClientService/Reports/CarcassGradeAnalyse_/CarcassGradeAnalyse.aspx"/>
<Menu id="0032" name="MES系统/MES报表展示/白条进销存" roles="B3ClientService.报表展示.白条进销存" url="B3ClientService/Reports/CarcassInOutStoreAnalyse_/CarcassInOutStoreAnalyse.aspx"/>
<Menu id="0033" name="MES系统/MES报表展示/条段进销存" roles="B3ClientService.报表展示.条段进销存" url="B3ClientService/Reports/SectionInOutStoreAnalyse_/SectionInOutStoreAnalyse.aspx"/>
<!--<Menu id="0034" name="MES系统/MES报表展示/条段损耗" roles="B3ClientService.报表展示.条段损耗" url="B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.aspx"/>-->
<Menu id="0034" name="MES系统/MES报表展示/条段损耗" roles="B3ClientService.报表展示.条段损耗" url="B3ClientService/Reports/SectionLossAnalyse_/SectionLossAnalyse.aspx"/>
</Menus>
<Features>
</Features>


Loading…
Cancel
Save