Browse Source

按线路派车。

master^2
yibo 7 years ago
parent
commit
7f4c3bcbcc
2 changed files with 92 additions and 73 deletions
  1. +74
    -66
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs
  2. +18
    -7
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs

+ 74
- 66
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs View File

@ -26,7 +26,7 @@ using TSingSoft.WebPluginFramework.Controls;
namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
{
class CarLoadingBySendLinePage:AppBasePage
class CarLoadingBySendLinePage : AppBasePage
{
private readonly DFInfo _dFInfo = DFInfo.Get(typeof(SaleOutStore));
@ -58,7 +58,9 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
var btnSearch = new TSButton("开始查询", (sender, e) =>
{
_slGrid.Query = GetSendLineQuery(_slQueryContainer.Build(), _slChbHidden.Checked);
var min = (DateTime?)_slQueryContainer.GetInput("MinLoadTime");
var max = (DateTime?)_slQueryContainer.GetInput("MaxLoadTime");
_slGrid.Query = GetSendLineQuery(_slQueryContainer.Build(), _slChbHidden.Checked, min, max);
_slGrid.DataBind();
});
@ -99,8 +101,8 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
private void CreateSendLineGridColumns()
{
_slGrid.Columns.Add(new DFBrowseGridColumn("路线"));
_slGrid.Columns.Add(new DFBrowseGridColumn("辅数量"));
// _slGrid.Columns.Add(new DFBrowseGridColumn("AllUnitNum"));
_slGrid.Columns.Add(new DFBrowseGridColumn("SecondNumber", "辅数量"));
// _slGrid.Columns.Add(new DFBrowseGridColumn("AllUnitNum"));
var allUnitNumcol = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) =>
{
var allUnitNum = _slGrid.CurrentData.Data.Rows[rowIndex]["AllUnitNum"];
@ -139,11 +141,10 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
};
cell.Controls.Add(link);
cell.Align = "right";
})
{ HeaderText = "报价数量" };
}) { HeaderText = "报价数量" };
_slGrid.Columns.EAdd(allUnitNumcol);
_slGrid.Columns.Add(new DFBrowseGridColumn("已派车数量"));
_slGrid.Columns.Add(new DFBrowseGridColumn("AlreadyNumber", "已派车数量"));
var thisTimeLoadNum = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) =>
{
var x = new Label();
@ -152,8 +153,7 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
x.Text = num.ToString();
cell.Controls.Add(x);
cell.Align = "right";
})
{ HeaderText = "本次派车数量" };
}) { HeaderText = "本次派车数量" };
_slGrid.Columns.Add(thisTimeLoadNum);
var staffColumn = new DFEditGridColumn<DFChoiceBox>("业务员ID");
staffColumn.InitEditControl += (sender, e) =>
@ -233,8 +233,8 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
_slGrid.DataBind();
AspUtil.Alert(this, msg);
// _carLoadingGrid.DataBind();
// _carLoadingGrid.DataBind();
}
else
{
@ -247,76 +247,84 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
}
private class AreadyLoadBill
{
public long SaleOutStore_ID { get; set; }
}
public static DQueryDom GetSendLineQuery(DQueryDom dom, bool hidden)
public static DQueryDom GetSendLineQuery(DQueryDom dom, bool hidden, DateTime? min, DateTime? max)
{
var areadyLoadBill = new JoinAlias("AreadyLoadBill", typeof(AreadyLoadBill));
var main = new JoinAlias(typeof(temp2));
var query = new DQueryDom(main);
OrganizationUtil.RegisterOrganizationQueryTable(query);
AreadyLoadBill.Register(query, min, max);
temp2.Register(query, dom, hidden);
var sendLine = new JoinAlias("SendLine", typeof(DeliverGoodsLine));
var sendLineDetail = new JoinAlias(typeof(DeliverGoodsLine_Detail));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(sendLineDetail), DQCondition.EQ(sendLineDetail, "Customer_ID", dom.From.RootSource.Alias, "Customer_ID"));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(sendLine), DQCondition.EQ(sendLineDetail, "DeliverGoodsLine_ID", sendLine, "ID"));
dom.RegisterQueryTable(typeof(AreadyLoadBill), new List<string> { "SaleOutStore_ID" }, GetTemDom());
dom.From.AddJoin(JoinType.Left, new DQDmoSource(areadyLoadBill), DQCondition.EQ(areadyLoadBill, "SaleOutStore_ID", dom.From.RootSource.Alias, "ID"));
dom.Columns.Clear();
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "ID"), "路线ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Name"), "路线"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Name"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("AllUnitNum")), "AllUnitNum"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.GreaterThan(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID"), DQExpression.Snippet<long>("0")), DQExpression.Field("AllUnitNum"), DQExpression.NULL)), "已派车数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<Money<decimal>?>("null"), "本次派车数量"));
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<long?>("null"), "业务员ID"));
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("''"), "业务员"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(sendLine), DQCondition.EQ(main, "DeliverGoodsLine_ID", sendLine, "ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "业务员ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "业务员"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Employee_ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Employee_Name"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "送货人员ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "送货人员"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "ID"), "路线ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Name"), "路线"));
query.Columns.Add(DQSelectColumn.Field("AllUnitNum", main));
query.Columns.Add(DQSelectColumn.Field("SecondNumber", main));
query.Columns.Add(DQSelectColumn.Field("AlreadyNumber", main));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<Money<decimal>?>("null"), "本次派车数量"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "业务员ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "业务员"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_ID"), "送货人员ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Employee_Name"), "送货人员"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_ID"), "车辆ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_Name"), "车辆"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("''"), "Remark"));
return query;
}
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<long?>("null"), "送货人员ID"));
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("''"), "送货人员"));
class temp2
{
public long? DeliverGoodsLine_ID { get; set; }
public Money<decimal>? AllUnitNum { get; set; }
public Money<decimal>? SecondNumber { get; set; }
public Money<decimal>? AlreadyNumber { get; set; }
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine,"Car_ID"), "车辆ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Field(sendLine, "Car_Name"), "车辆"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Car_ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field(sendLine, "Car_Name"));
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<long?>("null"), "车辆ID"));
// dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("''"), "车辆"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<string>("''"), "Remark"));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", .));
dom.Where.Conditions.Add(DQCondition.GreaterThan(DQExpression.IfNull(DQExpression.Field(sendLine, "ID"), DQExpression.Snippet<long>("0")), DQExpression.Snippet<long>("0")));
dom.Where.Conditions.Add(DQCondition.Or(
DQCondition.InEQ(DQExpression.Field("AllUnitNum"), DQExpression.Snippet<Money<decimal>?>("0")),
DQCondition.InEQ(DQExpression.Field("SecondNumber"), DQExpression.Snippet<Money<decimal>?>("0"))));
if (hidden)
public static void Register(DQueryDom root, DQueryDom dom, bool hidden)
{
dom.Having.Conditions.Add(DQCondition.InEQ(DQExpression.Count(DQExpression.Field("ID")), DQExpression.Count(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID"))));
}
var areadyLoadBill = new JoinAlias("AreadyLoadBill", typeof(AreadyLoadBill));
dom.From.AddJoin(JoinType.Left, new DQDmoSource(areadyLoadBill), DQCondition.EQ(areadyLoadBill, "SaleOutStore_ID", dom.From.RootSource.Alias, "ID"));
OrganizationUtil.AddOrganizationLimit(dom,typeof(SaleOutStore));
return dom;
dom.Columns.Clear();
dom.Columns.Add(DQSelectColumn.Field("DeliverGoodsLine_ID"));
dom.GroupBy.Expressions.Add(DQExpression.Field("DeliverGoodsLine_ID"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("AllUnitNum")), "AllUnitNum"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.Field("SecondNumber")), "辅数量"));
dom.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID")), DQExpression.NULL, DQExpression.Field("AllUnitNum"))), "已派车数量"));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", .));
dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("DeliverGoodsLine_ID")));
dom.Where.Conditions.Add(DQCondition.Or(
DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("AllUnitNum"), DQExpression.Value(0)), DQExpression.Value(0)),
DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("SecondNumber"), DQExpression.Value(0)), DQExpression.Value(0))));
if (hidden)
{
dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID")));
}
OrganizationUtil.AddOrganizationLimit(dom, typeof(SaleOutStore));
root.RegisterQueryTable(typeof(temp2), new string[] { "DeliverGoodsLine_ID", "AllUnitNum", "SecondNumber", "AlreadyNumber" }, dom);
}
}
}
private static DQueryDom GetTemDom()
public class AreadyLoadBill
{
public long SaleOutStore_ID { get; set; }
public static void Register(DQueryDom root, DateTime? min, DateTime? max)
{
var carLoadingBillDetail = new JoinAlias(typeof(CarLoading_BillDetail));
var temDom = new DQueryDom(carLoadingBillDetail);
temDom.Columns.Add(DQSelectColumn.Field("BillID", "SaleOutStore_ID"));
temDom.Columns.Add(DQSelectColumn.Field("BillID", carLoadingBillDetail, "SaleOutStore_ID"));
temDom.GroupBy.Expressions.Add(DQExpression.Field(carLoadingBillDetail, "BillID"));
if (min.HasValue)
temDom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("LoadTime", min));
if (max.HasValue)
temDom.Where.Conditions.Add(DQCondition.LessThanOrEqual("LoadTime", max));
temDom.Where.Conditions.Add(DQCondition.EQ(carLoadingBillDetail, "BillTypeID", DmoTypeIDAttribute.GetID(typeof(SaleOutStore))));
temDom.GroupBy.Expressions.Add(DQExpression.Field("BillID"));
return temDom;
root.RegisterQueryTable(typeof(AreadyLoadBill), new string[] { "SaleOutStore_ID" }, temDom);
}
}
}

+ 18
- 7
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs View File

@ -14,6 +14,8 @@ using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework.Controls;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Sale.Utils;
namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
{
@ -142,22 +144,31 @@ namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
}
DQueryDom GetQuery()
{
var dom = new DQueryDom(new JoinAlias(typeof(SaleOutStore)));
dom = CarLoadingBySendLinePage.GetSendLineQuery(dom, false);
dom.Columns.Clear();
dom.GroupBy.Expressions.Clear();
dom.Having.Conditions.Clear();
var main = new JoinAlias(typeof(SaleOutStore));
var dom = new DQueryDom(main);
var detail = new JoinAlias(typeof(AreadyLoadBill));
AreadyLoadBill.Register(dom, MinTime, MaxTime);
dom.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "SaleOutStore_ID"));
if (MinTime != null)
dom.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("LoadTime", MinTime));
if (MaxTime != null)
dom.Where.Conditions.Add(DQCondition.LessThanOrEqual("LoadTime", MaxTime));
dom.Where.Conditions.Add(DQExpression.Snippet("[SendLine].[ID]=" + SendLineID));
dom.Where.Conditions.Add(DQExpression.Snippet("ISNULL([AreadyLoadBill].[SaleOutStore_ID], 0)=0"));
dom.Where.Conditions.Add(DQCondition.EQ("DeliverGoodsLine_ID", SendLineID));
dom.Where.Conditions.Add(DQCondition.IsNull(DQExpression.Field(detail, "SaleOutStore_ID")));
dom.Columns.Add(DQSelectColumn.Field("ID"));
dom.Columns.Add(DQSelectColumn.Field("LoadTime"));
dom.Columns.Add(DQSelectColumn.Field("Customer_Name"));
dom.Columns.Add(DQSelectColumn.Field("AllUnitNum"));
dom.Columns.Add(DQSelectColumn.Field("SecondNumber"));
dom.Where.Conditions.Add(DQCondition.EQ("BillState", .));
dom.Where.Conditions.Add(DQCondition.EQ("TakeGoods_Type", .));
dom.Where.Conditions.Add(DQCondition.IsNotNull(DQExpression.Field("DeliverGoodsLine_ID")));
dom.Where.Conditions.Add(DQCondition.Or(
DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("AllUnitNum"), DQExpression.Value(0)), DQExpression.Value(0)),
DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field("SecondNumber"), DQExpression.Value(0)), DQExpression.Value(0))));
OrganizationUtil.AddOrganizationLimit(dom, typeof(SaleOutStore));
return dom;
}
}


Loading…
Cancel
Save