| @ -0,0 +1,123 @@ | |||||
| using BWP.B3ButcherManage.BO; | |||||
| using BWP.B3ButcherManageExport.BL; | |||||
| using BWP.B3ExportBase; | |||||
| using BWP.Web.Pages.B3ExportBase; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using TSingSoft.WebControls2; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3ExportBase.Utils; | |||||
| namespace BWP.Web.Pages.B3ButcherManageExport.U8.ProductInStoreToU8_ | |||||
| { | |||||
| public class ProductInStoreToU8List : ExportBaseList<ProductInStore, IProductInStoreToU8BL> | |||||
| { | |||||
| protected override string Caption | |||||
| { | |||||
| get { return "屠宰场成品入库导U8产成品入库"; } | |||||
| } | |||||
| protected override void AddQueryControls(VLayoutPanel vPanel) | |||||
| { | |||||
| vPanel.Add(CreateDefaultBillQueryControls((panel, config) => | |||||
| { | |||||
| config.Add("AccountingUnit_ID"); | |||||
| config.Add("Department_ID"); | |||||
| config.Add("Employee_ID"); | |||||
| config.Add("Date"); | |||||
| config.Add("Store_ID"); | |||||
| config.Add("OtherInStoreType_ID"); | |||||
| config.Add("ProductBatch"); | |||||
| })); | |||||
| } | |||||
| protected override void AddDFBrowseGridColumn(DFBrowseGrid grid, string field) | |||||
| { | |||||
| base.AddDFBrowseGridColumn(grid, field); | |||||
| if (field == "BillState") | |||||
| { | |||||
| AddDFBrowseGridColumn(grid, "AccountingUnit_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Department_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Employee_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Date"); | |||||
| AddDFBrowseGridColumn(grid, "Store_Name"); | |||||
| AddDFBrowseGridColumn(grid, "OtherInStoreType_Name"); | |||||
| AddDFBrowseGridColumn(grid, "ProductBatch"); | |||||
| AddDFBrowseGridColumn(grid, "CheckUser_Name"); | |||||
| AddDFBrowseGridColumn(grid, "Remark"); | |||||
| } | |||||
| } | |||||
| protected override string DoExport(List<long> idList) | |||||
| { | |||||
| if (idList.Count == 0) | |||||
| { | |||||
| throw new ApplicationException("请选择单据!"); | |||||
| } | |||||
| if (_dfcUrl.IsEmpty) | |||||
| { | |||||
| throw new ApplicationException("请选择外部系统!"); | |||||
| } | |||||
| BL.Export(idList, long.Parse(_dfcUrl.Value), _billDate.Value); | |||||
| return BIFactory.GetLastMessage(); | |||||
| } | |||||
| private ChoiceBox _dfcUrl; | |||||
| private DFDateInput _billDate; | |||||
| protected override void AddExportControl(HLayoutPanel hbox) | |||||
| { | |||||
| hbox.Add(new SimpleLabel("外部系统")); | |||||
| _dfcUrl = hbox.Add(new ChoiceBox()); | |||||
| _dfcUrl.DataKind = B3ExportBaseConsts.DataSources.外部系统; | |||||
| _dfcUrl.EnableInputArgument = true; | |||||
| _dfcUrl.SmartOrderEnabled = false; | |||||
| _dfcUrl.EnableTopItem = true; | |||||
| _dfcUrl.Width = 130; | |||||
| hbox.Add(new SimpleLabel("单据日期")); | |||||
| _billDate = hbox.Add(new DFDateInput()); | |||||
| _billDate.Value = DateTime.Today; | |||||
| base.AddExportControl(hbox); | |||||
| } | |||||
| public override string Url | |||||
| { | |||||
| get { return "~/B3ButcherManageExport/U8/ProductInStoreToU8_/ProductInStoreToU8List.aspx"; } | |||||
| } | |||||
| protected override string EditUrl | |||||
| { | |||||
| get | |||||
| { | |||||
| return "B3ButcherManage/Bills/ProductInStore_/ProductInStoreEdit.aspx"; | |||||
| } | |||||
| } | |||||
| protected override DQueryDom GetQueryDom() | |||||
| { | |||||
| var dom = base.GetQueryDom(); | |||||
| dom.EAddCheckedCondition(dom.From.RootSource.Alias); | |||||
| return dom; | |||||
| } | |||||
| protected override void OnLoad(EventArgs e) | |||||
| { | |||||
| base.OnLoad(e); | |||||
| if (!IsPostBack) | |||||
| { | |||||
| var tuple = ExportConfigUtil.LoadDefaultExtSystems(MethodID); | |||||
| if (tuple != null) | |||||
| { | |||||
| _dfcUrl.Value = tuple.Item1.ToString(); | |||||
| _dfcUrl.DisplayValue = tuple.Item2; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,80 @@ | |||||
| <?xml version="1.0" encoding="utf-8" ?> | |||||
| <Select xmlns="urn:XDQuery"> | |||||
| <Columns> | |||||
| <Field name="ID"/> | |||||
| </Columns> | |||||
| <From> | |||||
| <DmoClass class="BWP.B3ButcherManage.BO.ProductInStore, B3ButcherManage"/> | |||||
| </From> | |||||
| <Where> | |||||
| <And> | |||||
| <EQ> | |||||
| <Field name="ID"/> | |||||
| <QBE paramName="ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Store_ID"/> | |||||
| <QBE paramName="Store_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="OtherInStoreType_ID"/> | |||||
| <QBE paramName="OtherInStoreType_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="ProductBatch"/> | |||||
| <QBE paramName="ProductBatch"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="AccountingUnit_ID"/> | |||||
| <QBE paramName="AccountingUnit_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Department_ID"/> | |||||
| <QBE paramName="Department_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="Employee_ID"/> | |||||
| <QBE paramName="Employee_ID"/> | |||||
| </EQ> | |||||
| <EQ> | |||||
| <Field name="IsLocked"/> | |||||
| <QBE paramName="IsLocked"/> | |||||
| </EQ> | |||||
| <Contains> | |||||
| <Field name="Remark"/> | |||||
| <QBE paramName="Remark"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CreateUser_Name"/> | |||||
| <QBE paramName="CreateUser_Name"/> | |||||
| </Contains> | |||||
| <Contains> | |||||
| <Field name="CheckUser_Name"/> | |||||
| <QBE paramName="CheckUser_Name"/> | |||||
| </Contains> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MinCreateTime" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="CreateTime"/> | |||||
| <QBE paramName="MaxCreateTime"/> | |||||
| </LessThanOrEqual> | |||||
| <GreaterThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MinDate" /> | |||||
| </GreaterThanOrEqual> | |||||
| <LessThanOrEqual> | |||||
| <Field name="Date"/> | |||||
| <QBE paramName="MaxDate"/> | |||||
| </LessThanOrEqual> | |||||
| <EQ> | |||||
| <Field name="BillState"/> | |||||
| <QBE paramName ="BillState"/> | |||||
| </EQ> | |||||
| </And> | |||||
| </Where> | |||||
| </Select> | |||||
| @ -0,0 +1,113 @@ | |||||
| using BWP.B3ButcherManage.BO; | |||||
| using BWP.B3ExportBase; | |||||
| using BWP.B3ExportBase.BL; | |||||
| using BWP.B3ExportBase.BO; | |||||
| using BWP.B3Frameworks; | |||||
| using Forks.EnterpriseServices; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| using TSingSoft.WebPluginFramework.BIPlugins.BLEvents; | |||||
| namespace BWP.B3ButcherManageExport.BL | |||||
| { | |||||
| [BusinessInterface(typeof(ProductInStoreToU8BL))] | |||||
| public interface IProductInStoreToU8BL : IExportU8BL | |||||
| { | |||||
| void Export(List<long> dmoIDs, long extSystemID, DateTime? date); | |||||
| } | |||||
| [LogicName("屠宰场成品入库导U8产成品入库")] | |||||
| [BindToFeature("B3ButcherManageExport.0007")] | |||||
| [ExportID(B3FrameworksConsts.DmoTypeIDBases.B3ButcherManageExport, B3ButcherManageExportConsts.ExportIDOffsets.ProductInStoreToU8)] | |||||
| public class ProductInStoreToU8BL : ExportU8BL<ProductInStore>, IProductInStoreToU8BL | |||||
| { | |||||
| protected override Ufinterface CreateUfinterface(IList<ProductInStore> dmos) | |||||
| { | |||||
| if (string.IsNullOrEmpty(Config.Script)) | |||||
| throw new ApplicationException("脚本为空"); | |||||
| var scriptHelper = new PythonScriptHelper(string.Empty, Config.Script, this); | |||||
| var inv = StatPayU8s.CreateStoreIn(); | |||||
| scriptHelper.AddLocalVar("dmos", dmos); | |||||
| scriptHelper.AddLocalVar("vouchers", inv); | |||||
| scriptHelper.Execute(); | |||||
| var i = 0; | |||||
| foreach (var voucher in inv.Bills) | |||||
| { | |||||
| //回执文件里 会有这个信息,通过这个voucherid来判断单据是否导出成功 | |||||
| voucher.Head.Id = i.ToString(); | |||||
| BillIDs.Add(i, voucher.B2BillIDs); | |||||
| i++; | |||||
| } | |||||
| return inv; | |||||
| } | |||||
| private DateTime _date; | |||||
| public DateTime Date | |||||
| { | |||||
| get { return _date; } | |||||
| set { _date = value; } | |||||
| } | |||||
| public void Export(List<long> dmoIDs, long extSystemID, DateTime? date) | |||||
| { | |||||
| _date = date ?? BLContext.Today; | |||||
| Export(dmoIDs, extSystemID); | |||||
| } | |||||
| protected override Action<List<ProductInStore>> FillDetail | |||||
| { | |||||
| get | |||||
| { | |||||
| return dmos => | |||||
| { | |||||
| var dmoType = typeof(ProductInStore_Detail); | |||||
| var dom = new DQueryDom(new JoinAlias(dmoType)); | |||||
| dom.Columns.Add(DQSelectColumn.Field("ID")); | |||||
| foreach (string property in MinDetailProperties) | |||||
| { | |||||
| dom.Columns.Add(DQSelectColumn.Field(property)); | |||||
| } | |||||
| var expressionList = new List<IDQExpression>(); | |||||
| foreach (var dmo in dmos) | |||||
| expressionList.Add(DQExpression.Value(dmo.ID)); | |||||
| dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ProductInStore_ID"), expressionList.ToArray())); | |||||
| var details = new List<ProductInStore_Detail>(); | |||||
| details.Clear(); | |||||
| using (IDQDataReader reader = Session.ExecuteReader(dom)) | |||||
| { | |||||
| while (reader.Read()) | |||||
| { | |||||
| var detail = new ProductInStore_Detail | |||||
| { | |||||
| ID = (long)reader[0] | |||||
| }; | |||||
| int i = 1; | |||||
| foreach (var property in MinDetailProperties) | |||||
| { | |||||
| dmoType.GetProperty(property).SetValue(detail, reader[i++], null); | |||||
| } | |||||
| details.Add(detail); | |||||
| } | |||||
| } | |||||
| var groups = details.GroupBy(x => x.ProductInStore_ID); | |||||
| foreach (var gDetail in groups) | |||||
| { | |||||
| var firstDmo = dmos.FirstOrDefault(x => x.ID == gDetail.Key); | |||||
| if (firstDmo == null) | |||||
| continue; | |||||
| foreach (var billDetail in gDetail) | |||||
| { | |||||
| firstDmo.Details.Add(billDetail); | |||||
| } | |||||
| } | |||||
| }; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||