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.
 

906 lines
56 KiB

using BWP.B3ButcherManage.BO;
using BWP.B3ButcherManage.NamedValueTemplate;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.Web.Layout;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using BWP.B3Frameworks.BO.MoneyTemplate;
using BWP.B3ProduceUnitedInfos.BO;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.SqlDoms;
using TSingSoft.WebControls2;
using TSingSoft.WebControls2.DFGrids;
using TSingSoft.WebPluginFramework;
using BWP.B3Frameworks;
namespace BWP.Web.Pages.B3QingDaoWanFu.Reports
{
public class ComprehensiveReport : DFGridReportPage<StatPay>
{
protected override string Caption
{
get { return "收购综合报表"; }
}
// protected override string QueryOptionsTabName
// {
// get
// {
// return "显示字段";
// }
// }
protected override string AccessRoleName
{
get { return "B3QingDaoWanFu.报表.收购综合报表"; }
}
protected override void BeforeInitAllDataQueryResult(DFDataTable table)
{
ResetTable(table);
}
protected override bool AllDataMode {
get { return true; }
}
private void ResetTable(DFDataTable table)
{
decimal sum皮肉重量 = 0;
foreach (DFDataRow row in table.Rows)
{
try
{
var = row["皮肉重量"];
var = row["皮重"];
var = (Money<>?)(objToDecimal() + objToDecimal());
row["皮肉重量"] = ;
sum皮肉重量 += ( ?? 0);
var = objToDecimal(row["到厂毛重"]);
row["皮肉比"] = Math.Round((double)( / * 100), 2);
}
catch { }
}
SetCommonDivSumTable(table, "毛重单价", "应付金额", "到厂毛重");
SetCommonDivSumTable(table, "实付单价", "实付金额", "到厂毛重");
SetCommonDivSumTable(table, "单头盈亏", "盈亏", "收购头数");
SetCommonDivSumTable(table, "均重", "到厂毛重", "收购头数");
SetCommonDivSumTable(table, "损耗比", "损耗", "原发毛重",true);
SetCommonDivSumTable(table, "皮肉比", "皮肉重量", "到厂毛重", true);
Set占比(table);
// Set占比(table,);
try
{
table.SumRow["皮肉重量"] = sum皮肉重量;
}
catch { }
}
private void Set占比(DFDataTable table)
{
try
{
var = objToDecimal(table.SumRow["剥皮|一级|重量"]);
var = objToDecimal(table.SumRow["剥皮|二级|重量"]);
var = objToDecimal(table.SumRow["剥皮|三级|重量"]);
var = objToDecimal(table.SumRow["剥皮|四级|重量"]);
var = objToDecimal(table.SumRow["剥皮|五级|重量"]);
var = + + + + ;
var = objToDecimal(table.SumRow["烫褪|一级|重量"]);
var = objToDecimal(table.SumRow["烫褪|二级|重量"]);
var = objToDecimal(table.SumRow["烫褪|三级|重量"]);
var = objToDecimal(table.SumRow["烫褪|四级|重量"]);
var = objToDecimal(table.SumRow["烫褪|五级|重量"]);
var = + + + + ;
table.SumRow["剥皮|一级|占比"] =Math.Round( / *100,2);
table.SumRow["剥皮|二级|占比"] =Math.Round( / *100,2);
table.SumRow["剥皮|三级|占比"] =Math.Round( / *100,2);
table.SumRow["剥皮|四级|占比"] =Math.Round( / *100,2);
table.SumRow["剥皮|五级|占比"] =Math.Round( / *100,2);
table.SumRow["烫褪|一级|占比"] =Math.Round( / *100,2);
table.SumRow["烫褪|二级|占比"] =Math.Round( / *100,2);
table.SumRow["烫褪|三级|占比"] =Math.Round( / *100,2);
table.SumRow["烫褪|四级|占比"] =Math.Round( / *100,2);
table.SumRow["烫褪|五级|占比"] =Math.Round( / *100, 2);
var = + + + ;
var = + ;
table.SumRow["一二级比"] =Math.Round( / * 100, 2);
}
catch
{
}
}
void SetCommonDivSumTable(DFDataTable table, string sumname,string chu, string chuyi,bool mul100=false)
{
try
{
var value = (Money<>?) (objToDecimal(table.SumRow[chu]) / objToDecimal(table.SumRow[chuyi]));
if (mul100)
{
value = value * 100;
}
table.SumRow[sumname] = value;
}
catch { }
}
decimal objToDecimal(object obj)
{
if (obj == null)
{
return 0;
}
var r = Convert.ToDecimal(obj);
return r;
}
protected override void AddQueryControls(VLayoutPanel vPanel)
{
var layoutManager = new LayoutManager("Main", mDFInfo, mQueryContainer);
DFNamedValueInput<> input;
layoutManager.Add("BillState", input = QueryCreator.(mDFInfo.Fields["BillState"], true));
input.Value = .;
var config = new AutoLayoutConfig() { Cols = 4 };
layoutManager.Add("ID", new SimpleLabel("结算单号"), QueryCreator.DFTextBox(mDFInfo.Fields["ID"]));
layoutManager.Add("HotFreshType", new SimpleLabel("热鲜"), QueryCreator.DFNameValueInput<>(mDFInfo.Fields["BillState"]));
config.Add("AccountingUnit_ID");
config.Add("ID");
// config.Add("Weigh_ID");
config.Add("BillState");
config.Add("HotFreshType");
config.Add("Supplier_ID");
config.Add("SupplierClass_ID");
config.Add("Employee_ID");
config.Add("ValuationArea_ID");
config.Add("PurchaseType");
config.Add("Date");
layoutManager.Config = config;
vPanel.Add(layoutManager.CreateLayout());
}
private CheckBoxListWithReverseSelect _checkbox;
protected override void InitQueryPanel(QueryPanel queryPanel)
{
base.InitQueryPanel(queryPanel);
var panel = queryPanel.CreateTab("显示字段");
_checkbox = new CheckBoxListWithReverseSelect { RepeatColumns = 6, RepeatDirection = RepeatDirection.Horizontal };
_checkbox.Items.Add(new ListItem("收购日期", "WeighTime"));
_checkbox.Items.Add(new ListItem("收购类型", "PurchaseType"));
_checkbox.Items.Add(new ListItem("供应商", "Supplier_Name"));
_checkbox.Items.Add(new ListItem("来源地", "来源地"));
_checkbox.Items.Add(new ListItem("过磅单号", "Weigh_ID"));
_checkbox.Items.Add(new ListItem("结算单号", "ID"));
_checkbox.Items.Add(new ListItem("业务员", "Employee_Name"));
_checkbox.Items.Add(new ListItem("收购头数", "RealNumber"));
_checkbox.Items.Add(new ListItem("均重", "均重"));
_checkbox.Items.Add(new ListItem("毛猪等级", "HogGrade_Name"));
_checkbox.Items.Add(new ListItem("原发毛重", "ShackWeight"));
_checkbox.Items.Add(new ListItem("到厂毛重", "RealWeight"));
_checkbox.Items.Add(new ListItem("损耗", "损耗"));
_checkbox.Items.Add(new ListItem("损耗比", "损耗比"));
_checkbox.Items.Add(new ListItem("烫褪头数", "烫褪头数"));
_checkbox.Items.Add(new ListItem("头数重量", "头数重量"));
_checkbox.Items.Add(new ListItem("皮重", "皮重"));
_checkbox.Items.Add(new ListItem("皮肉重量", "皮肉重量"));
_checkbox.Items.Add(new ListItem("皮肉比", "皮肉比"));
_checkbox.Items.Add(new ListItem("一二级比", "一二级比"));
_checkbox.Items.Add(new ListItem("单价金额", "单价金额"));
_checkbox.Items.Add(new ListItem("合计金额", "合计金额"));
_checkbox.Items.Add(new ListItem("宰前扣款", "ExceptionMoney"));
_checkbox.Items.Add(new ListItem("宰后扣款", "宰后扣款"));
_checkbox.Items.Add(new ListItem("死猪扣款", "DeadPigRewardMoney"));
_checkbox.Items.Add(new ListItem("实付金额", "ActualMoney"));
_checkbox.Items.Add(new ListItem("应付金额", "Money"));
_checkbox.Items.Add(new ListItem("实付单价", "ActualPrice"));
_checkbox.Items.Add(new ListItem("毛重单价", "RawPrice"));
_checkbox.Items.Add(new ListItem("盈亏", "盈亏"));
_checkbox.Items.Add(new ListItem("单头盈亏", "单头盈亏"));
panel.EAdd(_checkbox);
mQueryControls.Add("显示字段", _checkbox);
mQueryControls.EnableHoldLastControlNames.Add("显示字段");
}
protected override DQueryDom GetQueryDom()
{
var query = base.GetQueryDom();
var bill = JoinAlias.Create("bill");
var weight = new JoinAlias("mainweight", typeof(WeighBill));
query.From.AddJoin(JoinType.Left, new DQDmoSource(weight), DQCondition.EQ(bill, "Weigh_ID", weight, "ID"));
var hotFreshInput = mQueryContainer.GetInput("HotFreshType");
if (hotFreshInput != null)
ButcherOrderTemp.AddJoinWithCondition(query, weight, hotFreshInput);
tempUnionDom.Register(query);
var unionAlias = new JoinAlias("tempUnionDom", typeof(tempUnionDom));
query.From.AddJoin(JoinType.Left, new DQDmoSource(unionAlias), DQCondition.EQ(bill, "ID", unionAlias, "StatPay_ID"));
query.GroupBy.Expressions.Add(DQExpression.Field(bill, "Date"));
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "ShackWeight")));
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "RealWeight")));
var = DQExpression.Subtract(, );
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "TotalWeight")));
var = DQExpression.Subtract(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "Money"))), DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "ActualMoney"))));
var sumColumn = new List<string>();
foreach (ListItem field in _checkbox.Items)
{
if (field.Selected)
{
switch (field.Text)
{
case "来源地":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(weight, "Zone_Name"), field.Text));
query.GroupBy.Expressions.Add(DQExpression.Field(weight, "Zone_Name"));
break;
case "收购日期":
case "收购类型":
case "供应商":
case "业务员":
case "过磅单号":
case "结算单号":
case "毛猪等级":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(field.Value), field.Text));
query.GroupBy.Expressions.Add(DQExpression.Field(field.Value));
break;
case "均重":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "RealWeight"))).ESafeDivide(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "RealNumber")))).ECastType<Money<>>(), "均重"));
break;
case "收购头数":
case "原发毛重":
case "到厂毛重":
case "实付金额":
case "应付金额":
case "毛重单价":
case "实付单价":
case "宰前扣款":
case "死猪扣款":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, field.Value))), field.Text));
sumColumn.Add(field.Text);
break;
case "盈亏":
query.Columns.Add(DQSelectColumn.Create(, "盈亏"));
sumColumn.Add(field.Text);
break;
case "单头盈亏":
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "RealNumber")));
var = .ESafeDivide().ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "单头盈亏"));
// sumColumn.Add(field.Text);
break;
case "宰后扣款":
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "OtherRewardMoney")));
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 1), DQExpression.Field(unionAlias, "DeadPigRewardMoney")));
var = DQExpression.Subtract(, DQExpression.IfNull(, DQExpression.Value(0)));
query.Columns.Add(DQSelectColumn.Create(, "宰后扣款"));
sumColumn.Add(field.Text);
break;
case "损耗":
query.Columns.Add(DQSelectColumn.Create(, "损耗"));
sumColumn.Add(field.Text);
break;
case "损耗比":
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "损耗比"));
break;
case "皮重":
var = DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo1Number"))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo2Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo3Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo4Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo5Number"))));
var = DQExpression.SubQuery(Get当天总皮重(bill));
var = DQExpression.SubQuery(Get当天总毛剥头数(bill));
var = DQExpression.Multiply(, .ESafeDivide()).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "皮重"));
sumColumn.Add(field.Text);
break;
case "皮肉重量":
query.Columns.Add(DQSelectColumn.Create(, "皮肉重量"));
sumColumn.Add(field.Text);
break;
case "皮肉比":
// var 皮肉比 =DQExpression.Multiply( 皮肉重量.ESafeDivide(榜前重量),DQExpression.Value(100)).ECastType<Money<金额>>();
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "皮肉比"));
break;
case "一二级比":
var = DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo1Weight"))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo2Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang1Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang2Weight")))
);
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "一二级比"));
break;
case "烫褪头数":
var = DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang1Number"))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang2Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang3Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang4Number")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang5Number"))));
query.Columns.Add(DQSelectColumn.Create(, "烫褪头数"));
sumColumn.Add(field.Text);
break;
#region 头数重量
case "头数重量":
var = DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo1Weight"))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo2Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo3Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo4Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Bo5Weight"))));
var = DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Add(
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang1Weight"))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang2Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang3Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang4Weight")))),
DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2),
DQExpression.Field(unionAlias, "Tang5Weight"))));
var = DQExpression.Add(, );
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo1Number")));
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo1Weight")));
query.Columns.Add(DQSelectColumn.Create(, "剥皮|一级|头数"));
sumColumn.Add("剥皮|一级|头数");
query.Columns.Add(DQSelectColumn.Create(, "剥皮|一级|重量"));
sumColumn.Add("剥皮|一级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "剥皮|一级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo2Number"))), "剥皮|二级|头数"));
sumColumn.Add("剥皮|二级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo2Weight")));
query.Columns.Add(DQSelectColumn.Create(, "剥皮|二级|重量"));
sumColumn.Add("剥皮|二级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "剥皮|二级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo3Number"))), "剥皮|三级|头数"));
sumColumn.Add("剥皮|三级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo3Weight")));
query.Columns.Add(DQSelectColumn.Create(, "剥皮|三级|重量"));
sumColumn.Add("剥皮|三级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "剥皮|三级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo4Number"))), "剥皮|四级|头数"));
sumColumn.Add("剥皮|四级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo4Weight")));
query.Columns.Add(DQSelectColumn.Create(, "剥皮|四级|重量"));
sumColumn.Add("剥皮|四级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "剥皮|四级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo5Number"))), "剥皮|五级|头数"));
sumColumn.Add("剥皮|五级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo5Weight")));
query.Columns.Add(DQSelectColumn.Create(, "剥皮|五级|重量"));
sumColumn.Add("剥皮|五级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "剥皮|五级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang1Number"))), "烫褪|一级|头数"));
sumColumn.Add("烫褪|一级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang1Weight")));
query.Columns.Add(DQSelectColumn.Create(, "烫褪|一级|重量"));
sumColumn.Add("烫褪|一级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "烫褪|一级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang2Number"))), "烫褪|二级|头数"));
sumColumn.Add("烫褪|二级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang2Weight")));
query.Columns.Add(DQSelectColumn.Create(, "烫褪|二级|重量"));
sumColumn.Add("烫褪|二级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "烫褪|二级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang3Number"))), "烫褪|三级|头数"));
sumColumn.Add("烫褪|三级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang3Weight")));
query.Columns.Add(DQSelectColumn.Create(, "烫褪|三级|重量"));
sumColumn.Add("烫褪|三级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "烫褪|三级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang4Number"))), "烫褪|四级|头数"));
sumColumn.Add("烫褪|四级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang4Weight")));
query.Columns.Add(DQSelectColumn.Create(, "烫褪|四级|重量"));
sumColumn.Add("烫褪|四级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "烫褪|四级|占比"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang5Number"))), "烫褪|五级|头数"));
sumColumn.Add("烫褪|五级|头数");
var = DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang5Weight")));
query.Columns.Add(DQSelectColumn.Create(, "烫褪|五级|重量"));
sumColumn.Add("烫褪|五级|重量");
var = DQExpression.Multiply(.ESafeDivide(), DQExpression.Value(100)).ECastType<Money<>>();
query.Columns.Add(DQSelectColumn.Create(, "烫褪|五级|占比"));
break;
#endregion
#region 单价金额
case "单价金额":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Price1"))), "单价|一级"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Price2"))), "单价|二级"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Price3"))), "单价|三级"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Price4"))), "单价|四级"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Price5"))), "单价|五级"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo1Money"))), "金额|剥皮|一级"));
sumColumn.Add("金额|剥皮|一级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo2Money"))), "金额|剥皮|二级"));
sumColumn.Add("金额|剥皮|二级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo3Money"))), "金额|剥皮|三级"));
sumColumn.Add("金额|剥皮|三级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo4Money"))), "金额|剥皮|四级"));
sumColumn.Add("金额|剥皮|四级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Bo5Money"))), "金额|剥皮|五级"));
sumColumn.Add("金额|剥皮|五级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang1Money"))), "金额|烫褪|一级"));
sumColumn.Add("金额|烫褪|一级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang2Money"))), "金额|烫褪|二级"));
sumColumn.Add("金额|烫褪|二级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang3Money"))), "金额|烫褪|三级"));
sumColumn.Add("金额|烫褪|三级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang4Money"))), "金额|烫褪|四级"));
sumColumn.Add("金额|烫褪|四级");
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "Tang5Money"))), "金额|烫褪|五级"));
sumColumn.Add("金额|烫褪|五级");
break;
case "合计金额":
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(unionAlias, "UnionType", 2), DQExpression.Field(unionAlias, "TotalMoney"))), "合计金额"));
sumColumn.Add(field.Text);
break;
#endregion
default:
break;
}
}
}
foreach (var c in query.Columns)
ColumnNames.Add(c.Name);
foreach (var c in sumColumn)
{
SumColumnNames.Add(c);
GroupSumColumnNamnes.Add(c);
// SubtotalGroupColumnNames.Add(c);
}
return query;
}
private DQueryDom Get当天总毛剥头数(JoinAlias bill)
{
var stat = new JoinAlias("bonumber", typeof(StatPay));
var statdetail = new JoinAlias("bonumberdetail", typeof(StatPay_Butcher));
var query = new DQueryDom(stat);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(statdetail), DQCondition.EQ(stat, "ID", statdetail, "StatPay_ID"));
// query.Where.Conditions.Add(DQCondition.EQ(DQExpression.Snippet("CAST(CONVERT(varchar(10), [bill].[Date], 120 )as smalldatetime)"),DQExpression.Snippet("CAST(CONVERT(varchar(10), [bonumber].[Date], 120 )as smalldatetime)")));
query.Where.Conditions.Add(DQCondition.EQ(bill, "Date", stat, "Date"));
query.Where.Conditions.Add(DQCondition.EQ(statdetail, "Technics", .));
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(stat, "BillState", .));
query.Columns.Add(DQSelectColumn.Sum(statdetail, "Number"));
return query;
}
private DQueryDom Get当天总皮重(JoinAlias bill)
{
var main = new JoinAlias("byproduct", typeof(ByProductRecord));
var detail = new JoinAlias("byproductdetail", typeof(ByProductDetailed));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "ByProduct_ID"));
query.Where.Conditions.Add(DQCondition.EQ(bill, "Date", main, "ButcherDate"));
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(main, "BillState", .));
// query.Where.Conditions.Add(DQCondition.EQ(DQExpression.Snippet("CAST(CONVERT(varchar(10), [bill].[Date], 120 )as smalldatetime)"), DQExpression.Snippet("CAST(CONVERT(varchar(10), [byproduct].[ButcherDate], 120 )as smalldatetime)")));
query.Columns.Add(DQSelectColumn.Sum(detail, "Weight"));
return query;
}
class tempUnionDom
{
#region prop
public int UnionType { get; set; }
public long StatPay_ID { get; set; }
public decimal? RealNumber { get; set; }
public decimal? ShackWeight { get; set; }
public decimal? RealWeight { get; set; }
public decimal? ActualMoney { get; set; }
public decimal? Money { get; set; }
public decimal? RawPrice { get; set; }
public decimal? ActualPrice { get; set; }
public decimal? ExceptionMoney { get; set; }
public decimal? OtherRewardMoney { get; set; }
public decimal? DeadPigRewardMoney { get; set; }
public decimal? Bo1Number { get; set; }
public decimal? Bo1Weight { get; set; }
public decimal? Bo2Number { get; set; }
public decimal? Bo2Weight { get; set; }
public decimal? Bo3Number { get; set; }
public decimal? Bo3Weight { get; set; }
public decimal? Bo4Number { get; set; }
public decimal? Bo4Weight { get; set; }
public decimal? Bo5Number { get; set; }
public decimal? Bo5Weight { get; set; }
public decimal? Tang1Number { get; set; }
public decimal? Tang1Weight { get; set; }
public decimal? Tang2Number { get; set; }
public decimal? Tang2Weight { get; set; }
public decimal? Tang3Number { get; set; }
public decimal? Tang3Weight { get; set; }
public decimal? Tang4Number { get; set; }
public decimal? Tang4Weight { get; set; }
public decimal? Tang5Number { get; set; }
public decimal? Tang5Weight { get; set; }
public decimal? Price1 { get; set; }
public decimal? Price2 { get; set; }
public decimal? Price3 { get; set; }
public decimal? Price4 { get; set; }
public decimal? Price5 { get; set; }
public decimal? Bo1Money { get; set; }
public decimal? Bo2Money { get; set; }
public decimal? Bo3Money { get; set; }
public decimal? Bo4Money { get; set; }
public decimal? Bo5Money { get; set; }
public decimal? Tang1Money { get; set; }
public decimal? Tang2Money { get; set; }
public decimal? Tang3Money { get; set; }
public decimal? Tang4Money { get; set; }
public decimal? Tang5Money { get; set; }
public decimal? TotalMoney { get; set; }
public decimal? TotalWeight { get; set; }
#endregion
static DQueryDom GetUnionDom()
{
var billDom = GetBillDom();
var detailDom = GetDetailDom();
billDom.UnionNext.Select = detailDom;
return billDom;
}
static DQueryDom GetBillDom()
{
var query = new DQueryDom(new JoinAlias("statpay", typeof(StatPay)));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value<int>(1), "UnionType"));
query.Columns.Add(DQSelectColumn.Field("ID", "StatPay_ID"));
query.Columns.Add(DQSelectColumn.Field("RealNumber", "RealNumber"));
query.Columns.Add(DQSelectColumn.Field("ShackWeight", "ShackWeight"));
query.Columns.Add(DQSelectColumn.Field("RealWeight", "RealWeight"));
query.Columns.Add(DQSelectColumn.Field("ActualMoney", "ActualMoney"));
query.Columns.Add(DQSelectColumn.Field("Money", "Money"));
query.Columns.Add(DQSelectColumn.Field("RawPrice", "RawPrice"));
query.Columns.Add(DQSelectColumn.Field("ActualPrice", "ActualPrice"));
query.Columns.Add(DQSelectColumn.Field("ExceptionMoney", "ExceptionMoney"));
query.Columns.Add(DQSelectColumn.Field("OtherRewardMoney", "OtherRewardMoney"));
query.Columns.Add(DQSelectColumn.Field("DeadPigRewardMoney", "DeadPigRewardMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo1Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo1Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo2Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo2Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo3Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo3Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo4Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo4Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo5Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo5Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang1Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang1Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang2Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang2Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang3Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang3Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang4Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang4Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang5Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang5Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Price1"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Price2"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Price3"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Price4"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Price5"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo1Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo2Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo3Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo4Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Bo5Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang1Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang2Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang3Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang4Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "Tang5Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "TotalMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "TotalWeight"));
// query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "ByProductWeight"));
return query;
}
static DQueryDom GetDetailDom()
{
var detail = new JoinAlias("detail", typeof(StatPay_Butcher));
var bill = new JoinAlias("bill", typeof(StatPay));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(bill), DQCondition.EQ(bill, "ID", detail, "StatPay_ID"));
query.GroupBy.Expressions.Add(DQExpression.Field(detail, "StatPay_ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value<int>(2), "UnionType"));
query.Columns.Add(DQSelectColumn.Field("StatPay_ID", detail, "StatPay_ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "RealNumber"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ShackWeight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "RealWeight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ActualMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "RawPrice"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ActualPrice"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "ExceptionMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "OtherRewardMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL, "DeadPigRewardMoney"));
var bo1 = 6;
var bo2 = 7;
var bo3 = 8;
var bo4 = 9;
var bo5 = 10;
var tang1 = 1;
var tang2 = 2;
var tang3 = 3;
var tang4 = 4;
var tang5 = 5;
#region 重量头数
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo1)), DQExpression.Field("Number"), DQExpression.Value(0))), "Bo1Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo1)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Bo1Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo2)), DQExpression.Field("Number"), DQExpression.Value(0))), "Bo2Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo2)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Bo2Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo3)), DQExpression.Field("Number"), DQExpression.Value(0))), "Bo3Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo3)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Bo3Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo4)), DQExpression.Field("Number"), DQExpression.Value(0))), "Bo4Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo4)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Bo4Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo5)), DQExpression.Field("Number"), DQExpression.Value(0))), "Bo5Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo5)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Bo5Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang1)), DQExpression.Field("Number"), DQExpression.Value(0))), "Tang1Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang1)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Tang1Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang2)), DQExpression.Field("Number"), DQExpression.Value(0))), "Tang2Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang2)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Tang2Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang3)), DQExpression.Field("Number"), DQExpression.Value(0))), "Tang3Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang3)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Tang3Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang4)), DQExpression.Field("Number"), DQExpression.Value(0))), "Tang4Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang4)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Tang4Weight"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang5)), DQExpression.Field("Number"), DQExpression.Value(0))), "Tang5Number"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang5)), DQExpression.Field("Weight"), DQExpression.Value(0))), "Tang5Weight"));
#endregion
#region 单价金额
//烫褪 毛剥 价格一样
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang1)), DQExpression.Field("Price"), DQExpression.Value(0))), "Price1"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang2)), DQExpression.Field("Price"), DQExpression.Value(0))), "Price2"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang3)), DQExpression.Field("Price"), DQExpression.Value(0))), "Price3"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang4)), DQExpression.Field("Price"), DQExpression.Value(0))), "Price4"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang5)), DQExpression.Field("Price"), DQExpression.Value(0))), "Price5"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo1)), DQExpression.Field("Money"), DQExpression.Value(0))), "Bo1Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo2)), DQExpression.Field("Money"), DQExpression.Value(0))), "Bo2Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo3)), DQExpression.Field("Money"), DQExpression.Value(0))), "Bo3Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo4)), DQExpression.Field("Money"), DQExpression.Value(0))), "Bo4Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", bo5)), DQExpression.Field("Money"), DQExpression.Value(0))), "Bo5Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang1)), DQExpression.Field("Money"), DQExpression.Value(0))), "Tang1Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang2)), DQExpression.Field("Money"), DQExpression.Value(0))), "Tang2Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang3)), DQExpression.Field("Money"), DQExpression.Value(0))), "Tang3Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang4)), DQExpression.Field("Money"), DQExpression.Value(0))), "Tang4Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.EQ("Technics", .), DQCondition.EQ("Livestock_ID", tang5)), DQExpression.Field("Money"), DQExpression.Value(0))), "Tang5Money"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Money")), "TotalMoney"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("Weight")), "TotalWeight"));
#endregion
// query.Columns.Add(DQSelectColumn.Create(DQExpression.NULL.ECastType<decimal?>(), "ByProductWeight"));
//query.Where.Conditions.Add(DQCondition.EQ(bill, "ID", 445));
return query;
}
public static void Register(DQueryDom root)
{
var butcherQuery = GetUnionDom();
root.RegisterQueryTable(typeof(tempUnionDom), new string[] { "UnionType", "StatPay_ID", "RealNumber", "ShackWeight", "RealWeight", "ActualMoney", "Money", "RawPrice", "ActualPrice", "ExceptionMoney", "OtherRewardMoney", "DeadPigRewardMoney", "Bo1Number", "Bo1Weight", "Bo2Number", "Bo2Weight", "Bo3Number", "Bo3Weight", "Bo4Number", "Bo4Weight", "Bo5Number", "Bo5Weight", "Tang1Number", "Tang1Weight", "Tang2Number", "Tang2Weight", "Tang3Number", "Tang3Weight", "Tang4Number", "Tang4Weight", "Tang5Number", "Tang5Weight", "Price1", "Price2", "Price3", "Price4", "Price5", "Bo1Money", "Bo2Money", "Bo3Money", "Bo4Money", "Bo5Money", "Tang1Money", "Tang2Money", "Tang3Money", "Tang4Money", "Tang5Money", "TotalMoney", "TotalWeight" }, butcherQuery);
}
}
class ButcherOrderTemp
{
public long? Weigh_ID { get; set; }
public static void AddJoinWithCondition(DQueryDom root, JoinAlias weighBill, object hotFreshType)
{
var main = new JoinAlias(typeof(ButcherOrder));
var detail = new JoinAlias(typeof(ButcherOrder_Detail));
var query = new DQueryDom(detail);
query.From.AddJoin(JoinType.Inner, new DQDmoSource(main), DQCondition.EQ(main, "ID", detail, "ButcherOrder_ID"));
query.Columns.Add(DQSelectColumn.Field("WeighBill_ID"));
query.GroupBy.Expressions.Add(DQExpression.Field("WeighBill_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(main, "Domain_ID", DomainContext.Current.ID), DQCondition.GreaterThanOrEqual(main, "BillState", .), DQCondition.EQ("HotFreshType", hotFreshType)));
var alias = new JoinAlias(typeof(ButcherOrderTemp));
root.RegisterQueryTable(typeof(ButcherOrderTemp), new string[] { "Weigh_ID" }, query);
root.From.AddJoin(JoinType.Inner, new DQDmoSource(alias), DQCondition.EQ(weighBill, "ID", alias, "Weigh_ID"));
}
}
}
}