Browse Source

按线路装车 需求单No.138520

master
luanhui 7 years ago
parent
commit
69f63b248f
5 changed files with 482 additions and 0 deletions
  1. +6
    -0
      B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj
  2. +307
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs
  3. +164
    -0
      B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs
  4. +1
    -0
      B3QingDaoWanFu.Web/PluginClass.cs
  5. +4
    -0
      WebFolder/config/plugins/B3QingDaoWanFu.plugin

+ 6
- 0
B3QingDaoWanFu.Web/B3QingDaoWanFu.Web.csproj View File

@ -156,6 +156,12 @@
<Compile Include="Pages\B3QingDaoWanFu\Reports\ComprehensiveReport.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\Tools\CarLoadingBySendLinePage.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\B3QingDaoWanFu\Tools\SaleOutstoreInfo.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Pages\TypeIOCs\CarLoadingTypeIOC.cs" />
<Compile Include="PluginClass.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />


+ 307
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.cs View File

@ -0,0 +1,307 @@
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;
using BWP.B3Frameworks.BO.NamedValueTemplate;
using BWP.B3Frameworks.Utils;
using BWP.B3Sale.BL;
using BWP.B3Sale.BO;
using BWP.B3Sale.Utils;
using BWP.Web.Pages.B3Sale.Bills.SaleOutStore_;
using BWP.Web.Utils;
using BWP.Web.WebControls;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using Forks.Utils.Collections;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework;
using TSingSoft.WebPluginFramework.Controls;
namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
{
class CarLoadingBySendLinePage:AppBasePage
{
private readonly DFInfo _dFInfo = DFInfo.Get(typeof(SaleOutStore));
private DFBrowseGrid _slGrid;
private QueryContainer _slQueryContainer;
private CheckBox _slChbHidden;
protected override void InitForm(HtmlForm form)
{
_slQueryContainer = QueryContainer.FromResource(typeof(SaleOutStoreList).FullName + ".xml", typeof(SaleOutStoreList).Assembly);
form.Controls.Add(new PageTitle("按线路派车"));
var vPanel = new VLayoutPanel();
form.Controls.Add(vPanel);
AddSearchConditions(vPanel);
AddSendLineGrid(vPanel);
}
private void AddSearchConditions(VLayoutPanel vPanel)
{
var tablePanel = new TableLayoutPanel(2, 1);
vPanel.Add(tablePanel);
var row = 0;
const int width = 4;
tablePanel.Add(0, 1, row, row + 1, new DFLabel(_dFInfo.Fields["LoadTime"], width));
tablePanel.Add(1, 2, row, ++row, QueryCreator.TimeRange(_dFInfo.Fields["LoadTime"], _slQueryContainer, "MinLoadTime", "MaxLoadTime", BLContext.Today, BLContext.Today.AddDays(1).AddMinutes(-1)));
var hPanel = new HLayoutPanel();
var btnSearch = new TSButton("开始查询", (sender, e) =>
{
_slGrid.Query = GetSendLineQuery(_slQueryContainer.Build(), _slChbHidden.Checked);
_slGrid.DataBind();
});
_slChbHidden = new CheckBox
{
Checked = true,
Text = "隐藏已派完路线"
};
hPanel.Add(btnSearch);
hPanel.Add(new RedirectTSButton("清除条件"));
hPanel.Add(_slChbHidden);
vPanel.Add(hPanel);
}
private void AddSendLineGrid(VLayoutPanel vPanel)
{
_slGrid = new DFBrowseGrid(new DFDataTableEditor())
{
Width = Unit.Percentage(100),
IgnoreItemsCount = true
};
CreateSendLineGridColumns();
var hPanel = new HLayoutPanel();
vPanel.Add(hPanel, new VLayoutOption(HorizontalAlign.Left));
vPanel.Add(_slGrid);
}
Dictionary<string, List<string>> ThisTimeLoadBills
{
get
{
if (ViewState["ThisTimeLoadBills"] == null)
ViewState["ThisTimeLoadBills"] = new Dictionary<string, List<string>>();
return (Dictionary<string, List<string>>)ViewState["ThisTimeLoadBills"];
}
set { ViewState["ThisTimeLoadBills"] = value; }
}
private void CreateSendLineGridColumns()
{
_slGrid.Columns.Add(new DFBrowseGridColumn("路线"));
_slGrid.Columns.Add(new DFBrowseGridColumn("辅数量"));
// _slGrid.Columns.Add(new DFBrowseGridColumn("AllUnitNum"));
var allUnitNumcol = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) =>
{
var allUnitNum = _slGrid.CurrentData.Data.Rows[rowIndex]["AllUnitNum"];
var name = (string)_slGrid.CurrentData.Data.Rows[rowIndex]["路线"];
var id = (long)_slGrid.CurrentData.Data.Rows[rowIndex]["路线ID"];
var text = allUnitNum.ToString();
var link = new DialogButton();
link.Text = text;
var min = (DateTime?)_slQueryContainer.GetInput("MinLoadTime");
var max = (DateTime?)_slQueryContainer.GetInput("MaxLoadTime");
link.Url = UrlUtility.AppendParam(UrlUtility.AppendParam(
"SaleOutstoreInfo.aspx", "sendlineID", id.ToString()),
"time", string.Format("{0}|{1}", min, max));
link.Click += delegate
{
_slGrid.GetFromUI();
var bills = DialogUtil.GetCachedObj<string>(this);
var allnum = bills.LastOrDefault();
if (!string.IsNullOrEmpty(allnum))
{
_slGrid.DataFilter = dt => { dt.Rows[rowIndex]["本次派车数量"] = decimal.Parse(allnum); };
}
if (bills.Count > 1)
{
bills.RemoveAt(bills.Count - 1);
if (ThisTimeLoadBills.ContainsKey(name))
ThisTimeLoadBills[name] = bills.ToList();
else
{
ThisTimeLoadBills.Add(name, bills.ToList());
}
}
_slGrid.DataBind();
};
cell.Controls.Add(link);
cell.Align = "right";
})
{ HeaderText = "报价数量" };
_slGrid.Columns.EAdd(allUnitNumcol);
_slGrid.Columns.Add(new DFBrowseGridColumn("已派车数量"));
var thisTimeLoadNum = new DFBrowseGridCustomExtColumn((row, cell, rowIndex) =>
{
var x = new Label();
var num = _slGrid.CurrentData.Data.Rows[rowIndex]["本次派车数量"];
if (num != null)
x.Text = num.ToString();
cell.Controls.Add(x);
cell.Align = "right";
})
{ HeaderText = "本次派车数量" };
_slGrid.Columns.Add(thisTimeLoadNum);
var staffColumn = new DFEditGridColumn<DFChoiceBox>("业务员ID");
staffColumn.InitEditControl += (sender, e) =>
{
e.Control.Width = Unit.Pixel(130);
e.Control.DataKind = "员工";
e.Control.EnableInputArgument = true;
e.Control.DFDisplayField = "业务员";
};
var carColumn = new DFEditGridColumn<DFChoiceBox>("车辆ID");
carColumn.InitEditControl += (sender, e) =>
{
e.Control.Width = Unit.Pixel(130);
e.Control.DataKind = B3SaleDataSources.;
e.Control.EnableInputArgument = true;
e.Control.DFDisplayField = "车辆";
};
var staff2Column = new DFEditGridColumn<DFChoiceBox>("送货人员ID");
staff2Column.InitEditControl += (sender, e) =>
{
e.Control.Width = Unit.Pixel(130);
e.Control.DataKind = "员工";
e.Control.EnableInputArgument = true;
e.Control.DFDisplayField = "送货人员";
};
var remarkColumn = new DFEditGridColumn<DFTextBox>("Remark");
remarkColumn.InitEditControl += (sender, e) =>
{
e.Control.Width = Unit.Pixel(130);
};
_slGrid.Columns.EAdd(carColumn).HeaderText = "运输车辆";
_slGrid.Columns.EAdd(staffColumn).HeaderText = "业务员";
_slGrid.Columns.EAdd(staff2Column).HeaderText = "送货人员";
_slGrid.Columns.EAdd(remarkColumn).HeaderText = "摘要";
_slGrid.Columns.EAdd(new DFBrowseGridCustomExtColumn((row, cell, rowIndex) =>
{
var lbtn = new LinkButton
{
Text = "派车",
Width = Unit.Pixel(60)
};
lbtn.Font.Underline = false;
lbtn.Command += (sender, e) =>
{
_slGrid.GetFromUI();
if ((((decimal?)row["本次派车数量"]) ?? 0) == 0)
throw new ApplicationException("请确认本次派车数量");
if (row["车辆ID"] == null)
throw new ApplicationException("请选择车辆");
var name = (string)_slGrid.CurrentData.Data.Rows[rowIndex]["路线"];
var bl = BIFactory.Create<ICarLoadingBL>();
if (ThisTimeLoadBills.ContainsKey(name))
{
var list = ThisTimeLoadBills[name].Select(long.Parse);
var carID = (long)row["车辆ID"];
string msg;
var carLoading = bl.LoadTodayNoChecked(carID);
if (carLoading == null)
{
var parameters = new CarLoadingParameters();
parameters.CarID = carID;
parameters.SendLineID = (long)row["路线ID"];
parameters.StaffID = (long?)row["业务员ID"];
parameters.StaffID2 = (long?)row["送货人员ID"];
parameters.Remark = (string)row["Remark"];
var id = bl.InsertFromSaleOutStore(list, parameters);
msg = "生成装车单No." + id;
}
else
{
bl.UpdateFromSaleOutStore(list, carLoading);
msg = "更新装车单No." + carLoading.ID;
}
_slGrid.DataBind();
AspUtil.Alert(this, msg);
// _carLoadingGrid.DataBind();
}
else
{
AspUtil.Alert(this, "没有数据");
}
};
cell.Controls.Add(lbtn);
cell.Align = "center";
})).HeaderText = "派车";
}
private class AreadyLoadBill
{
public long SaleOutStore_ID { get; set; }
}
public static DQueryDom GetSendLineQuery(DQueryDom dom, bool hidden)
{
var areadyLoadBill = new JoinAlias("AreadyLoadBill", typeof(AreadyLoadBill));
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>("''"), "业务员"));
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<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)
{
dom.Having.Conditions.Add(DQCondition.InEQ(DQExpression.Count(DQExpression.Field("ID")), DQExpression.Count(DQExpression.Field(areadyLoadBill, "SaleOutStore_ID"))));
}
OrganizationUtil.AddOrganizationLimit(dom,typeof(SaleOutStore));
return dom;
}
private static DQueryDom GetTemDom()
{
var carLoadingBillDetail = new JoinAlias(typeof(CarLoading_BillDetail));
var temDom = new DQueryDom(carLoadingBillDetail);
temDom.Columns.Add(DQSelectColumn.Field("BillID", "SaleOutStore_ID"));
temDom.Distinct = true;
temDom.Where.Conditions.Add(DQCondition.EQ(carLoadingBillDetail, "BillTypeID", DmoTypeIDAttribute.GetID(typeof(SaleOutStore))));
return temDom;
}
}
}

+ 164
- 0
B3QingDaoWanFu.Web/Pages/B3QingDaoWanFu/Tools/SaleOutstoreInfo.cs View File

@ -0,0 +1,164 @@
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.Utils;
using BWP.B3Sale.BO;
using BWP.Web.Utils;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using TSingSoft.WebControls2;
using TSingSoft.WebPluginFramework.Controls;
namespace BWP.Web.Pages.B3QingDaoWanFu.Tools
{
class SaleOutstoreInfo: AppBasePage
{
private DFBrowseGrid _billGrid;
long SendLineID
{
get
{
return long.Parse(Request.QueryString["sendlineID"]);
}
}
DateTime? MinTime
{
get
{
var strs = Request.QueryString["time"].Split('|');
if (string.IsNullOrEmpty(strs[0]))
return null;
return DateTime.Parse(strs[0]);
}
}
DateTime? MaxTime
{
get
{
var strs = Request.QueryString["time"].Split('|');
if (string.IsNullOrEmpty(strs[1]))
return null;
return DateTime.Parse(strs[1]);
}
}
protected override void InitForm(HtmlForm form)
{
// _pageView = new ClientPageView
// {
// TabPosition = TabPosition.Top
// };
// _pageView.Tabs.Add(CreateFirstTab());
// _pageView.Tabs.Add(CreateSecondTab());
// _pageView.Tabs.Add(CreateThirdTab());
// form.Controls.Add(_pageView);
form.Controls.Add(new PageTitle("单据列表"));
var vPanel = new VLayoutPanel();
form.Controls.Add(vPanel);
_billGrid = new DFBrowseGrid(new DFDataTableEditor())
{
Width = Unit.Percentage(100),
IgnoreItemsCount = true,
MultiSelectionEnabled = true
};
_billGrid.PagerCreating += GridPagerCreating;
_billGrid.MultiSelection += GridMultiSelection;
CreateSendLineGridColumns();
var hPanel = new HLayoutPanel();
vPanel.Add(hPanel, new VLayoutOption(HorizontalAlign.Right));
vPanel.Add(_billGrid);
}
private void CreateSendLineGridColumns()
{
_billGrid.Add(new DFBrowseGridColumn("ID"));
_billGrid.Add(new DFBrowseGridColumn("LoadTime"));
_billGrid.Add(new DFBrowseGridColumn("Customer_Name"));
_billGrid.Add(new DFBrowseGridColumn("AllUnitNum") { SumMode = SumMode.Sum });
_billGrid.Add(new DFBrowseGridColumn("SecondNumber") { SumMode = SumMode.Sum });
}
void GridPagerCreating(object sender, DFGridPagerCreatingEventArgs e)
{
var button = new TSButton("选中");
e.Pager.Controls.Add(button);
button.Click += GridMultiSelection;
var allSelect = new TSButton("全部选中");
e.Pager.Controls.Add(allSelect);
allSelect.Click += (sender1, e1) => {
var query = _billGrid.LastQuery.DQuery;
query.Range = SelectRange.All;
var table = new DFDataAdapter(new LoadArguments(query)).Fill();
IList<string> selectedList = new List<string>();
Money<decimal>? allnum = null;
foreach (var row in table.Rows)
{
selectedList.Add(row["ID"].ToString());
allnum = (allnum ?? 0) + (Money<decimal>)row["AllUnitNum"];
}
selectedList.Add(allnum == null ? string.Empty : allnum.ToString());
ReturnList(selectedList);
};
}
void GridMultiSelection(object sender, EventArgs e)
{
IList<string> selectedList = new List<string>();
Money<decimal>? allnum = null;
foreach (DFDataRow row in _billGrid.GetSelectedItems())
{
selectedList.Add(row["ID"].ToString());
allnum = (allnum ?? 0) + (Money<decimal>)row["AllUnitNum"];
}
selectedList.Add(allnum == null ? string.Empty : allnum.ToString());
ReturnList(selectedList);
}
private void ReturnList(IList<string> selectedList)
{
DialogUtil.SetCachedObj(this, selectedList);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!IsPostBack)
{
_billGrid.Query = GetQuery();
_billGrid.DataBind();
}
}
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();
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.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"));
return dom;
}
}
}

+ 1
- 0
B3QingDaoWanFu.Web/PluginClass.cs View File

@ -22,6 +22,7 @@ namespace BWP.B3QingDaoWanFu
WpfPageFactory.RegisterPageOverlay(typeof(SaleOutStoreEdit).FullName, typeof(SaleOutStoreEdit_Ext).FullName);
GlobalFlags.On(B3ButcherManageConsts.GlobalFlags.StatPayAddRewardWithButcherUseWeight);
GlobalFlags.On(B3SaleConsts.Flags.MarketingActivityEnableAdjustPrice);
GlobalFlags.On(B3SaleConsts.Flags.SendOutStoreNoAvailableStorage);
}
}
}

+ 4
- 0
WebFolder/config/plugins/B3QingDaoWanFu.plugin View File

@ -24,10 +24,14 @@
<FunctionGroup name="配置" roleSchemas="employee">
<Function index="0" name="结账客户设备配置"/>
</FunctionGroup>
<FunctionGroup name="工具" roleSchemas="employee">
<Function index="0" name="按线路派车"/>
</FunctionGroup>
</Security>
<Menus>
<Menu id="0001" name="/B3青岛万福/报表/收购综合报表" roles="B3QingDaoWanFu.报表.收购综合报表" url="B3QingDaoWanFu/Reports/ComprehensiveReport.aspx"/>
<Menu id="0002" name="/B3青岛万福/结账客户设备配置" roles="B3QingDaoWanFu.配置.结账客户设备配置" url="B3QingDaoWanFu/CustomerDeviceSet_/CustomerDeviceSetEdit.aspx"/>
<Menu id="0003" name="/B3青岛万福/按线路派车" roles="B3QingDaoWanFu.工具.按线路派车" url="B3QingDaoWanFu/Tools/CarLoadingBySendLinePage.aspx"/>
</Menus>
<Features>
</Features>


Loading…
Cancel
Save