|
|
|
@ -0,0 +1,171 @@ |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using BWP.B3ClientService.NamedValueTemplate; |
|
|
|
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.Text; |
|
|
|
using System.Web.UI.HtmlControls; |
|
|
|
using System.Web.UI.WebControls; |
|
|
|
using TSingSoft.WebControls2; |
|
|
|
using TSingSoft.WebPluginFramework; |
|
|
|
|
|
|
|
namespace BWP.Web.Pages.B3ClientService.Reports.SegmentProductInstoreDiff_ |
|
|
|
{ |
|
|
|
class SegmentProductInstoreDiff : DFGridReportPage |
|
|
|
{ |
|
|
|
protected override string AccessRoleName |
|
|
|
{ |
|
|
|
get { return "B3ClientService.报表展示.产出入库差异"; } |
|
|
|
} |
|
|
|
|
|
|
|
protected override string Caption |
|
|
|
{ |
|
|
|
get { return "产出入库差异"; } |
|
|
|
} |
|
|
|
|
|
|
|
long? SelectBatch |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
if (string.IsNullOrEmpty(Request.QueryString["BatchID"])) |
|
|
|
{ |
|
|
|
if (BatchList.Any()) |
|
|
|
return BatchList.Last().Item2; |
|
|
|
return null; |
|
|
|
} |
|
|
|
return long.Parse(Request.QueryString["BatchID"]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<Tuple<string, long>> BatchList |
|
|
|
{ |
|
|
|
get |
|
|
|
{ |
|
|
|
if (ViewState["BatchList"] == null) |
|
|
|
ViewState["BatchList"] = GetBatch(); |
|
|
|
return (List<Tuple<string, long>>)ViewState["BatchList"]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected override void InitForm(System.Web.UI.HtmlControls.HtmlForm form) |
|
|
|
{ |
|
|
|
base.InitForm(form); |
|
|
|
mDFGrid.HeaderPagerLock = true; |
|
|
|
mDFGrid.AllowRowGroup = true; |
|
|
|
mDFGrid.AllowColGroup = true; |
|
|
|
mDFGrid.AfterFillDetailRow += (htmlRow, dataRow) => |
|
|
|
{ |
|
|
|
var row = (DFDataRow)dataRow; |
|
|
|
var diff = Convert.ToDecimal(row["差异|数量"] ?? 0); |
|
|
|
if (diff > 0) |
|
|
|
{ |
|
|
|
BuildCell(htmlRow, row); |
|
|
|
htmlRow.Cells[6].Style.Add("background-color", "pink"); |
|
|
|
htmlRow.Cells[7].Style.Add("background-color", "pink"); |
|
|
|
} |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
private void BuildCell(HtmlTableRow htmlRow, DFDataRow dataRow) |
|
|
|
{ |
|
|
|
var url = "~/B3ClientService/Reports/SegmentProductInstoreDiff_/ShowGoodsDetail.aspx"; |
|
|
|
url = AspUtil.AddParamToUrl(url, "BatchID", string.Format("{0}", SelectBatch)); |
|
|
|
url = AspUtil.AddParamToUrl(url, "Goods_ID", dataRow["Goods_ID"].ToString()); |
|
|
|
url = WpfPageUrl.ToGlobal(url); |
|
|
|
for (var i = 6; i <= 7; i++) |
|
|
|
{ |
|
|
|
var cell = htmlRow.Cells[i]; |
|
|
|
cell.Attributes["onclick"] = "OpenUrlInTopTab('" + url + "','差异详情');"; |
|
|
|
cell.Style.Add("color", "blue"); |
|
|
|
cell.Style.Add("text-decoration", "underline"); |
|
|
|
cell.Style.Add("cursor", "pointer"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
protected override void InitQueryPanel(WebControls.QueryPanel queryPanel) |
|
|
|
{ |
|
|
|
//base.InitQueryPanel(queryPanel);
|
|
|
|
queryPanel.ConditonPanel.EAdd(CreateDateBtnPanel()); |
|
|
|
queryPanel.ButtonsPanel.Controls.Clear(); |
|
|
|
} |
|
|
|
|
|
|
|
private HLayoutPanel CreateDateBtnPanel() |
|
|
|
{ |
|
|
|
var panel = new HLayoutPanel(); |
|
|
|
var url = Request.Url.ToString(); |
|
|
|
foreach (var item in BatchList) |
|
|
|
{ |
|
|
|
var hl = panel.Add(new HyperLink() { Text = item.Item1 }); |
|
|
|
hl.Style.Add("margin-right", "10px"); |
|
|
|
hl.Style.Add("font-size", "15px"); |
|
|
|
hl.NavigateUrl = AspUtil.UpdateUrlParam(url, "BatchID", item.Item2.ToString()); |
|
|
|
if (SelectBatch.HasValue && item.Item2 == SelectBatch) |
|
|
|
{ |
|
|
|
hl.Style.Add("background-color", "#3CC24C"); |
|
|
|
hl.Style.Add("color", "#FFFFFF"); |
|
|
|
} |
|
|
|
} |
|
|
|
return panel; |
|
|
|
} |
|
|
|
|
|
|
|
List<Tuple<string, long>> GetBatch() |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(ProductBatch))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Name")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("BatchType", 批次类型.分割), DQCondition.Between("Date", DateTime.Today.AddDays(-4), DateTime.Today))); |
|
|
|
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Date")); |
|
|
|
return query.EExecuteList<string, long>(); |
|
|
|
} |
|
|
|
|
|
|
|
protected override DQueryDom GetQueryDom() |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(SegmentProductionInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Code", "存货编码")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Goods_Name", "存货名称")); |
|
|
|
foreach (var c in query.Columns) |
|
|
|
query.GroupBy.Expressions.Add(c.Expression); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Count(), "生产|数量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Weight")), "生产|重量")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field("InStoreTime")), DQExpression.NULL, DQExpression.Value(1))), "入库|数量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field("InStoreTime")), DQExpression.NULL, DQExpression.Field("Weight"))), "入库|重量")); |
|
|
|
|
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field("InStoreTime")), DQExpression.Value(1), DQExpression.NULL)), "差异|数量")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field("InStoreTime")), DQExpression.Field("Weight"), DQExpression.NULL)), "差异|重量")); |
|
|
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("ProductBatch_ID", SelectBatch), DQCondition.EQ("Delete", false))); |
|
|
|
var idx = -1; |
|
|
|
foreach (var c in query.Columns) |
|
|
|
{ |
|
|
|
idx++; |
|
|
|
if (idx == 0) |
|
|
|
continue; |
|
|
|
else |
|
|
|
ColumnNames.Add(c.Name); |
|
|
|
if (idx > 2) |
|
|
|
{ |
|
|
|
SumColumnNames.Add(c.Name); |
|
|
|
GroupSumColumnNamnes.Add(c.Name); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
protected override void OnLoad(EventArgs e) |
|
|
|
{ |
|
|
|
base.OnLoad(e); |
|
|
|
if (!IsPostBack) |
|
|
|
{ |
|
|
|
StartQuery(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |