|
|
|
@ -52,7 +52,7 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
var goodsName = string.Empty; |
|
|
|
if (GoodsID.HasValue) |
|
|
|
goodsName = WebBLUtil.GetDmoPropertyByID<string>(typeof(Goods), "Name", GoodsID.Value); |
|
|
|
var billName = "期末"; |
|
|
|
var billName = "期初"; |
|
|
|
switch (Flag) |
|
|
|
{ |
|
|
|
case 0: |
|
|
|
@ -64,6 +64,9 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
case 2: |
|
|
|
billName = "销售出库"; |
|
|
|
break; |
|
|
|
case -2: |
|
|
|
billName = "期初"; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
return string.Format("{0}{1}信息", goodsName, billName); |
|
|
|
@ -80,22 +83,27 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
{ |
|
|
|
var sumColumns = new List<int>(); |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(UnionTemp))); |
|
|
|
query.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductBatch_ID", "Weight", "Time", "Flag" }, GetUnionDom(endTime)); |
|
|
|
var time = Flag == -1 ? startTime : endTime; |
|
|
|
query.RegisterQueryTable(typeof(UnionTemp), new string[] { "ProductBatch_ID", "Weight", "Time", "Flag" }, GetUnionDom(time, Flag != -1)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ProductBatch_Name", "批次")); |
|
|
|
|
|
|
|
if (Flag == -1) |
|
|
|
if (Flag < 0) |
|
|
|
{ |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))).ECastType<int>(), "头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))).ECastType<decimal>(), "重量")); |
|
|
|
query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)), DQExpression.Value(0)))); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", Flag)), DQExpression.Value(1))).ECastType<int>(), "头数")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.And(DQCondition.GreaterThanOrEqual("Time", startTime), DQCondition.EQ("Flag", Flag)), DQExpression.Field("Weight"))).ECastType<decimal>(), "重量")); |
|
|
|
|
|
|
|
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("Time", startTime)); |
|
|
|
|
|
|
|
query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.IfNull(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)), DQExpression.Value(0)))); |
|
|
|
} |
|
|
|
query.GroupBy.Expressions.Add(DQExpression.Field("ProductBatch_Name")); |
|
|
|
|
|
|
|
query.Having.Conditions.Add(DQCondition.Or(DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Value(1), DQExpression.Value(-1))), DQExpression.Value(0)), DQCondition.InEQ(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ("Flag", 0), DQExpression.Field("Weight"), DQExpression.Multiply(DQExpression.Value(-1), DQExpression.Field("Weight")))), DQExpression.Value(0)))); |
|
|
|
var args = new LoadArguments(query); |
|
|
|
for (var idx = 1; idx < query.Columns.Count; idx++) |
|
|
|
{ |
|
|
|
@ -126,59 +134,64 @@ namespace BWP.Web.Pages.B3ClientService.Reports.CarcassInOutStoreAnalyse_ |
|
|
|
public string ProductBatch_Name { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetUnionDom(DateTime endTime) |
|
|
|
DQueryDom GetUnionDom(DateTime endTime, bool eq) |
|
|
|
{ |
|
|
|
var u1 = GetInStore(endTime); |
|
|
|
var u2 = GetPickOutStore(endTime); |
|
|
|
var u1 = GetInStore(endTime, eq); |
|
|
|
var u2 = GetPickOutStore(endTime, eq); |
|
|
|
u1.UnionNext.Select = u2; |
|
|
|
u1.UnionNext.Type = UnionType.All; |
|
|
|
u2.UnionNext.Select = GetSaleOutStore(endTime); |
|
|
|
u2.UnionNext.Select = GetSaleOutStore(endTime, eq); |
|
|
|
u2.UnionNext.Type = UnionType.All; |
|
|
|
return u1; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetInStore(DateTime endTime) |
|
|
|
DQueryDom GetInStore(DateTime endTime, bool eq) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_inStore", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("InStoreTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(0), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.LessThanOrEqual("InStoreTime", endTime)); |
|
|
|
AddGoodsCondition(query, "InStoreGoods_ID"); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DateCondition(endTime, "InStoreTime", eq), GoodsCondition("InStoreGoods_ID"))); |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetPickOutStore(DateTime endTime) |
|
|
|
DQueryDom GetPickOutStore(DateTime endTime, bool eq) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_pickOut", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(1), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 0), DQCondition.LessThanOrEqual("PickTime", endTime))); |
|
|
|
AddGoodsCondition(query, "InStoreGoods_ID"); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 0), DateCondition(endTime, "PickTime", eq), GoodsCondition("InStoreGoods_ID"))); |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
DQueryDom GetSaleOutStore(DateTime endTime) |
|
|
|
DQueryDom GetSaleOutStore(DateTime endTime, bool eq) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias("_saleOut", typeof(CarcassFullInfo))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ProductBatch_ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickWeight")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PickTime")); |
|
|
|
query.Columns.Add(DQSelectColumn.Create(DQExpression.Value(2), "Falg")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 1), DQCondition.LessThanOrEqual("PickTime", endTime))); |
|
|
|
AddGoodsCondition(query, "SaleGoods_ID"); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("PickType", 1), DateCondition(endTime, "PickTime", eq), GoodsCondition("SaleGoods_ID"))); |
|
|
|
return query; |
|
|
|
} |
|
|
|
|
|
|
|
void AddGoodsCondition(DQueryDom query, string goodsField) |
|
|
|
IDQExpression DateCondition(DateTime endTime, string fieldName, bool eq) |
|
|
|
{ |
|
|
|
if (eq) |
|
|
|
return DQCondition.LessThanOrEqual(fieldName, endTime); |
|
|
|
else |
|
|
|
return DQCondition.LessThan(fieldName, endTime); |
|
|
|
} |
|
|
|
|
|
|
|
IDQExpression GoodsCondition(string goodsField) |
|
|
|
{ |
|
|
|
if (GoodsID.HasValue) |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ(goodsField, GoodsID)); |
|
|
|
return DQCondition.EQ(goodsField, GoodsID); |
|
|
|
else |
|
|
|
query.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(goodsField))); |
|
|
|
return DQCondition.IsNull(DQExpression.Field(goodsField)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |