屠宰场管理服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
4.0 KiB

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.CarcassTrendAnalyse_
{
class CarcassTrendAnalyse : 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());
}
DateInput dateInput;
private void AddQueryControl(Panel queryPanel)
{
var hp = queryPanel.EAdd(new Panel());
hp.Style.Add("float", "right");
hp.EAdd(new SimpleLabel("出库日期"));
dateInput = hp.EAdd(new DateInput() { Width = Unit.Pixel(100) });
dateInput.Style.Add("margin-right", "10px");
var btn = hp.EAdd(new TSButton("开始查询", delegate { StartQuery(); }));
btn.Style.Add("padding", "5px 10px");
btn.Style.Add("margin-right", "10px");
var rbtn = hp.EAdd(new RedirectTSButton("清除条件"));
rbtn.Style.Add("padding", "5px 10px");
rbtn.Style.Add("margin-right", "10px");
}
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 dateExp = DQExpression.Snippet("CAST([_main].[PickTime] AS DATE)");
var query = new DQueryDom(new JoinAlias("_main", typeof(CarcassFullInfo)));
query.Columns.Add(DQSelectColumn.Field("PickType", "出库类型"));
query.Columns.Add(DQSelectColumn.Create(dateExp.ECastType<DateTime?>(), "出库日期"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Value<int>(1)), "头数"));
query.Columns.Add(DQSelectColumn.Sum("InStoreWeight", "入库重量"));
query.Columns.Add(DQSelectColumn.Sum("PickWeight", "出库重量"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Subtract(DQExpression.IfNull(DQExpression.Field("InStoreWeight"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("PickWeight"), DQExpression.Value(0)))), "损耗"));
query.GroupBy.Expressions.Add(DQExpression.Field("PickType"));
query.GroupBy.Expressions.Add(dateExp);
if (!dateInput.IsEmpty)
query.Where.Conditions.Add(DQCondition.EQ(dateExp, DQExpression.Value(dateInput.Date)));
var args = new LoadArguments(query);
for (var i = 2; i <= 5; i++)
args.SumColumns.Add(i);
args.GroupSumColumns.Add(2);
args.GroupSumColumns.Add(6);
mBrowseGrid.LoadArguments = args;
mBrowseGrid.DataBind();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
StartQuery();
}
}
}