|
|
|
@ -0,0 +1,152 @@ |
|
|
|
using BWP.B3ClientService; |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using BWP.B3Frameworks.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.B3Frameworks.BO.MoneyTemplate; |
|
|
|
using Forks.Utils; |
|
|
|
using System.Web; |
|
|
|
|
|
|
|
namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInStoreLossAnalyse_ |
|
|
|
{ |
|
|
|
class CarcassInStoreLossAnalyse : 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()); |
|
|
|
mBrowseGrid.OnDetailDataBound = (tr, obj, index) => |
|
|
|
{ |
|
|
|
var row = obj as DFDataRow; |
|
|
|
var lid = string.Format("{0}", row["Livestock_ID"]); |
|
|
|
var url = BuildUrl(string.Format("{0}", lid)); |
|
|
|
url = WpfPageUrl.ToGlobal(url); |
|
|
|
SetCellAtt(tr.Cells[4], url, "入库明细"); |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
string BuildUrl(string livestockID) |
|
|
|
{ |
|
|
|
var url = "~/B3ClientService/Reports/CarcassInStoreLossAnalyse_/InStoreDetail.aspx"; |
|
|
|
url = AspUtil.AddParamToUrl(url, "Date", dateInput.Text); |
|
|
|
url = AspUtil.AddParamToUrl(url, "ProductBatchID", batchSelect.Value); |
|
|
|
url = AspUtil.AddParamToUrl(url, "Livestock_ID", livestockID); |
|
|
|
return url; |
|
|
|
} |
|
|
|
|
|
|
|
void SetCellAtt(HtmlTableCell cell, string url, string title) |
|
|
|
{ |
|
|
|
cell.Attributes["onclick"] = "OpenUrlInTopTab('" + url + "','" + title + "');"; |
|
|
|
cell.Style.Add("color", "blue"); |
|
|
|
cell.Style.Add("text-decoration", "underline"); |
|
|
|
cell.Style.Add("cursor", "pointer"); |
|
|
|
} |
|
|
|
|
|
|
|
ChoiceBox batchSelect; |
|
|
|
DFDateInput 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 DFDateInput() { Date = DateTime.Today }); |
|
|
|
hp.EAdd(new SimpleLabel("生产批次")); |
|
|
|
batchSelect = hp.EAdd(new ChoiceBox(B3ClientServiceConsts.DataSources.生产批次) { EnableInputArgument = true, EnableTopItem = true, AutoPostBack = true, Width = Unit.Pixel(180) }); |
|
|
|
hp.EAdd(new TSButton("开始查询", delegate { StartQuery(); })); |
|
|
|
} |
|
|
|
|
|
|
|
private TitlePanel CreateResultTab() |
|
|
|
{ |
|
|
|
var result = new TitlePanel("查询结果"); |
|
|
|
mBrowseGrid = result.EAdd(new DFBrowseGrid(new DFDataTableEditor()) { Width = Unit.Percentage(100) }); |
|
|
|
mBrowseGrid.Columns.Add(new DFBrowseGridAutoColumn("Livestock_ID")); |
|
|
|
var hPanel = result.EAdd(new HLayoutPanel()); |
|
|
|
PageUtil.AddExcelExportPanel(hPanel, mBrowseGrid, "白条损耗"); |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
void StartQuery() |
|
|
|
{ |
|
|
|
var main = new JoinAlias(typeof(CarcassFullInfo)); |
|
|
|
var livestock = new JoinAlias(typeof(Livestock)); |
|
|
|
var gradeBatch = new JoinAlias("gBatch", typeof(ProductBatch)); |
|
|
|
var inBatch = new JoinAlias("iBatch", typeof(ProductBatch)); |
|
|
|
var query = new DQueryDom(main); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(livestock), DQCondition.EQ(main, "Livestock_ID", livestock, "ID")); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(gradeBatch), DQCondition.EQ(main, "GradeProductBatch_ID", gradeBatch, "ID")); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(inBatch), DQCondition.EQ(main, "ProductBatch_ID", inBatch, "ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Livestock_ID")); |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("Livestock_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Name", livestock, "胴体级别")); |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field(livestock, "Name")); |
|
|
|
var gNumber = DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNotNull(DQExpression.Field("Livestock_ID")), DQExpression.Value(1), DQExpression.Value(0))); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(gNumber.ECastType<int?>(), "头数")); |
|
|
|
var gWeight=DQExpression.Subtract(DQExpression.Field("GradeWeight"),DQExpression.Value(4.2m)); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(gWeight).ECastType<decimal?>(), "胴体重量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Divide(DQExpression.Sum(gWeight), DQExpression.NullIfZero(gNumber)).ECastType<Money<二位小数>?>(), "胴体均重")); |
|
|
|
var iNumber = DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNotNull(DQExpression.Field("InStoreGoods_ID")), DQExpression.Value(1), DQExpression.Value(0))); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(iNumber.ECastType<int?>(), "入库头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Sum("InStoreWeight", "入库重量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Divide(DQExpression.Sum(DQExpression.Field("InStoreWeight")), DQExpression.NullIfZero(iNumber)).ECastType<Money<二位小数>?>(), "入库均重")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Subtract(gNumber, iNumber).ECastType<int?>(), "差异头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Subtract(DQExpression.IfNull(gWeight, DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field("InStoreWeight"), DQExpression.Value(0)))).ECastType<decimal?>(), "差异重量")); |
|
|
|
|
|
|
|
if (!batchSelect.IsEmpty) |
|
|
|
query.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ("GradeProductBatch_ID", long.Parse(batchSelect.Value)), DQCondition.EQ("ProductBatch_ID", long.Parse(batchSelect.Value)))); |
|
|
|
if (!dateInput.IsEmpty) |
|
|
|
query.Where.Conditions.Add(DQCondition.Or(DQCondition.EQ(gradeBatch, "Date", dateInput.Date), DQCondition.EQ(inBatch, "Date", dateInput.Date))); |
|
|
|
var args = new LoadArguments(query); |
|
|
|
for (var i = 0; i < query.Columns.Count; i++) |
|
|
|
{ |
|
|
|
if (i <= 1) |
|
|
|
continue; |
|
|
|
args.SumColumns.Add(i); |
|
|
|
args.GroupSumColumns.Add(i); |
|
|
|
} |
|
|
|
mBrowseGrid.LoadArguments = args; |
|
|
|
mBrowseGrid.DataBind(); |
|
|
|
} |
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e) |
|
|
|
{ |
|
|
|
base.OnLoad(e); |
|
|
|
if (!IsPostBack) |
|
|
|
StartQuery(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |