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.
 

245 lines
11 KiB

using BWP.B3Frameworks;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.Web.Layout;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using TSingSoft.WebControls2;
using TSingSoft.WebControls2.QBELinks;
namespace BWP.Web.Pages.B3YunKen.Reports
{
public class LogisticsAnalysisReport : DFBrowseGridReportPage
{
protected override string AccessRoleName
{
get
{
return "B3_YunKen.报表分析.物流分析表";
}
}
protected override string Caption
{
get { return "物流分析表"; }
}
CheckBoxListWithReverseSelect checkbox;
private readonly DFInfo mDFInfo = DFInfo.Get(typeof(SaleOutStore));
protected override void InitQueryPanel(QueryPanel queryPanel)
{
base.InitQueryPanel(queryPanel);
var panel = queryPanel.CreateTab("显示字段");
checkbox = new CheckBoxListWithReverseSelect() { RepeatColumns = 6, RepeatDirection = RepeatDirection.Horizontal };
var list = new List<Tuple<string, string>>();
list.Add(new Tuple<string, string>("LoadTime", "发货时间"));
list.Add(new Tuple<string, string>("Customer_Name", "购货客户"));
list.Add(new Tuple<string, string>("AccountCustomer_Name", "结账客户"));
list.Add(new Tuple<string, string>("Driver_Name", "司机姓名"));
list.Add(new Tuple<string, string>("Driver_Telephone", "司机电话"));
list.Add(new Tuple<string, string>("HandcarNumber", "车牌号"));
list.Add(new Tuple<string, string>("DriverCard", "司机驾驶证号"));
list.Add(new Tuple<string, string>("Carrier_Name", "货站名称"));//承运方 Carrier_Name
list.Add(new Tuple<string, string>("LinkManTel", "货站电话"));//电话
list.Add(new Tuple<string, string>("CustomerSaleZone_Name", "地区"));//销售地区
list.Add(new Tuple<string, string>("Car_Name", "车主姓名"));
list.Add(new Tuple<string, string>("FreightUnitPrice", "运费单价"));
list.Add(new Tuple<string, string>("AccountingUnit_Name", "会计单位"));
list.Add(new Tuple<string, string>("TakeGoods_Type", "提货方式"));//配送方式
list.Add(new Tuple<string, string>("FreightBear", "运费承担方"));
list.Add(new Tuple<string, string>("FreightPayment", "运费结算方式"));//支付方式
list.Add(new Tuple<string, string>("承运次数", "承运次数"));
var section = mPageLayoutManager.AddSection("显示字段", "显示字段");
section.ApplyLayout(list, mPageLayoutManager);
foreach (var item in list)
{
section.SetDisplayName(item.Item1, item.Item2);
checkbox.Items.Add(new ListItem(item.Item2, item.Item1));
}
panel.EAdd(checkbox);
mQueryControls.Add("显示字段", checkbox);
mQueryControls.EnableHoldLastControlNames.Add("显示字段");
}
protected override void AddQueryControls(VLayoutPanel vPanel)
{
var layout = new LayoutManager("main", mDFInfo, mQueryContainer);
layout.Add("AccountingUnit_ID", mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["AccountingUnit_ID"],
B3FrameworksConsts.DataSources.), s => long.Parse(s)), "AccountingUnit_ID"));
layout["AccountingUnit_ID"].NotAutoAddToContainer = true;
layout.Add("Carrier_ID", mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["Carrier_ID"],
B3SaleDataSources.), s => long.Parse(s)), "Carrier_ID"));
layout["Carrier_ID"].NotAutoAddToContainer = true;
layout.Add("CustomerSaleZone_ID", mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["CustomerSaleZone_ID"],
B3SaleDataSources.), s => long.Parse(s)), "CustomerSaleZone_ID"));
layout["CustomerSaleZone_ID"].NotAutoAddToContainer = true;
layout.Add("Customer_ID", mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["Customer_ID"],
B3SaleDataSources.), s => long.Parse(s)), "Customer_ID"));
layout["Customer_ID"].NotAutoAddToContainer = true;
layout.Add("AccountCustomer_ID", mQueryContainer.AddLink(new ChoiceBoxMultiSelectLink(QueryCreator.DFChoiceBoxEnableMultiSelection(mDFInfo.Fields["AccountCustomer_ID"],
B3SaleDataSources.), s => long.Parse(s)), "AccountCustomer_ID"));
layout["AccountCustomer_ID"].NotAutoAddToContainer = true;
var config = layout.CreateDefaultConfig(2);
config.Expand = false;
config.Add("LoadTime");
//config.Add("AccountingUnit_ID");
config.Add("Driver_ID");
config.Add("DriverCard");
//config.Add("Carrier_ID");
//config.Add("Customer_ID");
//config.Add("CustomerSaleZone_ID");
//config.Add("AccountCustomer_ID");
config.Add("Car_ID");
config.Add("TakeGoods_Type");
config.Add("FreightBear");
config.Add("FreightPayment");
layout.Config = config;
var section = mPageLayoutManager.AddSection("查询条件", "查询条件");
section.ApplyLayout(layout, config, mPageLayoutManager, mDFInfo);
vPanel.Add(layout.CreateLayout(), new VLayoutOption(HorizontalAlign.Center));
}
protected override DQueryDom GetQueryDom()
{
var dom = base.GetQueryDom();
var main = JoinAlias.Create("main");
foreach (ListItem item in checkbox.Items)
{
if (!item.Selected) { continue; }
var field = item.Value;
switch (field)
{
case "LoadTime":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "Customer_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "AccountCustomer_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "Driver_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "Driver_Telephone":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "HandcarNumber":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "Carrier_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "LinkManTel":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "CustomerSaleZone_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "Car_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "FreightUnitPrice":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "AccountingUnit_Name":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "TakeGoods_Type":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "FreightBear":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "FreightPayment":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
case "承运次数":
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Count(DQExpression.Field(main, "ID")), item.Text));
break;
default:
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(main, field), item.Text));
dom.GroupBy.Expressions.Add(DQExpression.Field(main, field));
break;
}
}
dom.Where.Conditions.Add(DQCondition.EQ(main, "BillState", .));
return dom;
}
}
}