| @ -0,0 +1,175 @@ | |||
| using BWP.B3UnitedInfos.BO; | |||
| using Forks.EnterpriseServices.DataForm; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.Utils; | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using TSingSoft.WebPluginFramework; | |||
| using Forks.Utils.Collections; | |||
| using TSingSoft.WebControls2; | |||
| using BWP.Web.WebControls; | |||
| using BWP.Web.Layout; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using BWP.B3Frameworks.Utils; | |||
| using BWP.B3UnitedInfos; | |||
| using BWP.Web.Utils; | |||
| using BWP.B3CowButcherManage.BO; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using System.Web.UI; | |||
| namespace BWP.Web.Pages.B3_QiLianMuGe.Dialogs | |||
| { | |||
| class QueryBarCode : DmoMultiSelectDialog<StockTakeCEUploadBarCode, BWP.B3CowButcherManage.BO.Goods> | |||
| { | |||
| protected override void SetResultFromDFDataRow(BWP.B3CowButcherManage.BO.Goods dmo, DFDataRow row) | |||
| { | |||
| //dmo.Goods_ID = (long)row["ID"]; | |||
| //dmo.Number = (Money<decimal>?)row["数量"]; | |||
| //dmo.SecondNumber = (Money<decimal>?)row["辅数量"]; | |||
| //dmo.BrandItem_ID = (long?)row["品牌项"]; | |||
| //if (dmo.BrandItem_ID != null) | |||
| // dmo.BrandItem_Name = WebBLUtil.GetDmoPropertyByID<string>(typeof(BrandItem), "Name", dmo.BrandItem_ID.Value); | |||
| } | |||
| protected override void InitForm(System.Web.UI.HtmlControls.HtmlForm form) | |||
| { | |||
| base.InitForm(form); | |||
| //form.Controls.Add(new GoodsEditGridScriptManager(base.queryGrid, "数量", "辅数量", "UnitConvertDirection", "MainUnitRatio", "SecondUnitRatio")); | |||
| } | |||
| protected override void CreateQuery(VLayoutPanel vPanel) | |||
| { | |||
| var layoutManager = new LayoutManager("", mDFInfo, mQueryContainer); | |||
| //layoutManager.Add("GoodsPropertyCatalog_ID"); | |||
| //layoutManager["GoodsPropertyCatalog_ID"].ExtDmoType = typeof(GoodsProperty); | |||
| layoutManager.Add("ScanTime", new SimpleLabel("扫描时间"), QueryCreator.TimeRange(mDFInfo.Fields["ScanTime"],mQueryContainer, "MinScanTime", "MaxScanTime")); | |||
| layoutManager.Add("UploadTime", new SimpleLabel("上传时间"), QueryCreator.TimeRange(mDFInfo.Fields["UploadTime"], mQueryContainer, "MinUploadTime", "MaxUploadTime")); | |||
| var config = new AutoLayoutConfig(); | |||
| config.Add("BarCode"); | |||
| config.Add("ScanTime"); | |||
| config.Add("UploadTime"); | |||
| layoutManager.Config = config; | |||
| vPanel.Add(layoutManager.CreateLayout()); | |||
| base.CreateQuery(vPanel); | |||
| } | |||
| protected override void AddSelectButtons(Control parent) | |||
| { | |||
| } | |||
| protected override void CreateQueryGridColumns(DFBrowseGrid grid) | |||
| { | |||
| grid.Columns.Add(new DFBrowseGridColumn("BarCode") { HeaderText = "条码"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("goodsName") { HeaderText = "存货名称"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("MainUnit") { HeaderText = "主单位"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("PWeight") { HeaderText = "主数量"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("SecondUnit") { HeaderText = "辅单位"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("Num") { HeaderText = "辅数量"}); | |||
| grid.Columns.Add(new DFBrowseGridColumn("ScanTime") { HeaderText = "扫描时间" }); | |||
| grid.Columns.Add(new DFBrowseGridColumn("UploadTime") { HeaderText = "上传时间" }); | |||
| } | |||
| protected override Forks.EnterpriseServices.DomainObjects2.DQuery.DQueryDom GetQueryDom() | |||
| { | |||
| var ceBarCode = new JoinAlias("_s",typeof(StockTakeCEUploadBarCode)); | |||
| var barCode = new JoinAlias("_l",typeof(BarCodeProductionInfo)); | |||
| var rightBarCode = new JoinAlias("_r",typeof(BarCodeProductionInfo)); | |||
| var goods = new JoinAlias("_g",typeof(BWP.B3CowButcherManage.BO.Goods)); | |||
| var query = new DQueryDom(ceBarCode); | |||
| query.From.AddJoin(JoinType.Inner, new DQDmoSource(barCode),DQCondition.And(DQCondition.EQ(barCode,"BarType",3),DQCondition.EQ(ceBarCode, "BarCode", barCode, "BarCode"))); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(goods),DQCondition.EQ(barCode, "Goods_ID", goods, "ID")); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(rightBarCode), DQCondition.EQ(barCode, "ID", rightBarCode, "PackageID")); | |||
| query.Columns.Add(DQSelectColumn.Field("BarCode", ceBarCode)); | |||
| query.Columns.Add(DQSelectColumn.Field("ScanTime", ceBarCode)); | |||
| query.Columns.Add(DQSelectColumn.Field("UploadTime", ceBarCode)); | |||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods, "Name"), "goodsName")); | |||
| query.Columns.Add(DQSelectColumn.Field("MainUnit", goods)); | |||
| query.Columns.Add(DQSelectColumn.Field("SecondUnit", goods)); | |||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.IsNull(DQExpression.Field(goods, "PackageWeight")),DQExpression.Sum(DQExpression.Field(rightBarCode,"Weight")), DQExpression.Field(goods, "PackageWeight")), "PWeight")); | |||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.Count(DQExpression.Field(rightBarCode,"ID")), "Num")); | |||
| if (!string.IsNullOrEmpty(Request.QueryString["Store_ID"])) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.Like(barCode, "Store_ID", Request.QueryString["Store_ID"])); | |||
| } | |||
| var txtbarCode = mQueryContainer.GetControl<DFTextBox>("BarCode"); | |||
| if (!txtbarCode.IsEmpty) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.Like(ceBarCode,"BarCode",txtbarCode.Text)); | |||
| } | |||
| var minScanTime = mQueryContainer.GetControl<DFDateTimeInput>("MinScanTime"); | |||
| var maxScanTime = mQueryContainer.GetControl<DFDateTimeInput>("MaxScanTime"); | |||
| var minUploadTime = mQueryContainer.GetControl<DFDateTimeInput>("MinUploadTime"); | |||
| var maxUploadTime = mQueryContainer.GetControl<DFDateTimeInput>("MaxUploadTime"); | |||
| if (!minScanTime.IsEmpty) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(ceBarCode, "ScanTime", minScanTime.Value)); | |||
| } | |||
| if (!maxScanTime.IsEmpty) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.LessThanOrEqual(ceBarCode, "ScanTime", maxScanTime.Value)); | |||
| } | |||
| if (!minUploadTime.IsEmpty) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(ceBarCode, "UploadTime", minUploadTime.Value)); | |||
| } | |||
| if (!maxUploadTime.IsEmpty) | |||
| { | |||
| query.Where.Conditions.Add(DQCondition.LessThanOrEqual(ceBarCode, "UploadTime", maxUploadTime.Value)); | |||
| } | |||
| query.GroupBy.Expressions.Add(DQExpression.Field("BarCode")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field("ScanTime")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field("UploadTime")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field(goods,"Name")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field(goods, "MainUnit")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field(goods, "SecondUnit")); | |||
| query.GroupBy.Expressions.Add(DQExpression.Field(goods, "PackageWeight")); | |||
| var ceBarCode2 = new JoinAlias("_s2",typeof(StockTakeCEUploadBarCode)); | |||
| var barCode2 = new JoinAlias("_l2",typeof(BarCodeProductionInfo)); | |||
| var goods2 = new JoinAlias("_g2",typeof(BWP.B3CowButcherManage.BO.Goods)); | |||
| var query2 = new DQueryDom(ceBarCode2); | |||
| query2.From.AddJoin(JoinType.Inner, new DQDmoSource(barCode2), DQCondition.And(DQCondition.InEQ(barCode2, "BarType", 3), DQCondition.EQ(ceBarCode2, "BarCode", barCode2, "BarCode"))); | |||
| query2.From.AddJoin(JoinType.Left, new DQDmoSource(goods2), DQCondition.EQ(barCode2, "Goods_ID", goods2, "ID")); | |||
| query2.Columns.Add(DQSelectColumn.Field("BarCode", ceBarCode2)); | |||
| query2.Columns.Add(DQSelectColumn.Field("ScanTime", ceBarCode2)); | |||
| query2.Columns.Add(DQSelectColumn.Field("UploadTime", ceBarCode2)); | |||
| query2.Columns.Add(DQSelectColumn.Create(DQExpression.Field(goods2, "Name"), "goodsName")); | |||
| query2.Columns.Add(DQSelectColumn.Field("MainUnit", goods2)); | |||
| query2.Columns.Add(DQSelectColumn.Field("SecondUnit", goods2)); | |||
| query2.Columns.Add(DQSelectColumn.Field("Weight", barCode2, "PWeight")); | |||
| query2.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet<int>("1"), "Num")); | |||
| if (!txtbarCode.IsEmpty) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.Like(ceBarCode2, "BarCode", txtbarCode.Text)); | |||
| } | |||
| if (!minScanTime.IsEmpty) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(ceBarCode2, "ScanTime", minScanTime.Value)); | |||
| } | |||
| if (!maxScanTime.IsEmpty) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.LessThanOrEqual(ceBarCode2, "ScanTime", maxScanTime.Value)); | |||
| } | |||
| if (!minUploadTime.IsEmpty) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.GreaterThanOrEqual(ceBarCode2, "UploadTime", minUploadTime.Value)); | |||
| } | |||
| if (!maxUploadTime.IsEmpty) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.LessThanOrEqual(ceBarCode2, "UploadTime", maxUploadTime.Value)); | |||
| } | |||
| if (!string.IsNullOrEmpty(Request.QueryString["Store_ID"])) | |||
| { | |||
| query2.Where.Conditions.Add(DQCondition.EQ(barCode2, "Store_ID", long.Parse(Request.QueryString["Store_ID"].ToString()))); | |||
| } | |||
| query.UnionNext.Select = query2; | |||
| query.UnionNext.Type = UnionType.Default; | |||
| return query; | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,33 @@ | |||
| <?xml version="1.0" encoding="utf-8" ?> | |||
| <Select xmlns="urn:XDQuery"> | |||
| <Columns> | |||
| <Field name="ID"/> | |||
| </Columns> | |||
| <From> | |||
| <DmoClass class="BWP.B3CowButcherManage.BO.StockTakeCEUploadBarCode,B3CowButcherManage"/> | |||
| </From> | |||
| <Where> | |||
| <And> | |||
| <GreaterThanOrEqual> | |||
| <Field name="ScanTime"/> | |||
| <QBE paramName="MinScanTime" /> | |||
| </GreaterThanOrEqual> | |||
| <LessThanOrEqual> | |||
| <Field name="ScanTime"/> | |||
| <QBE paramName="MaxScanTime"/> | |||
| </LessThanOrEqual> | |||
| <GreaterThanOrEqual> | |||
| <Field name="UploadTime"/> | |||
| <QBE paramName="MinUploadTime" /> | |||
| </GreaterThanOrEqual> | |||
| <LessThanOrEqual> | |||
| <Field name="UploadTime"/> | |||
| <QBE paramName="MaxUploadTime"/> | |||
| </LessThanOrEqual> | |||
| <Contains> | |||
| <Field name="BarCode"/> | |||
| <QBE paramName="BarCode"/> | |||
| </Contains> | |||
| </And> | |||
| </Where> | |||
| </Select> | |||
| @ -0,0 +1,268 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Web.UI; | |||
| using BWP.B3CowButcherManage.BO; | |||
| using BWP.B3Frameworks; | |||
| using BWP.Web.Pages.B3UnitedInfos.Bills.StockTake_; | |||
| using BWP.Web.WebControls; | |||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||
| using Forks.EnterpriseServices.DomainObjects2; | |||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||
| using Forks.EnterpriseServices.JsonRpc; | |||
| using Forks.EnterpriseServices.SqlDoms; | |||
| using Forks.Utils; | |||
| using TSingSoft.WebControls2; | |||
| namespace BWP.Web.Pages.Overlays | |||
| { | |||
| class StockTakeEdit_Ext: StockTakeEdit | |||
| { | |||
| protected override void AddCustomerToolsPanel(HLayoutPanel hPanel) | |||
| { | |||
| hPanel.Add(new LiteralControl(" ")); | |||
| hPanel.Add(new TSButton("根据条码载入盘点数量", delegate | |||
| { | |||
| mDFContainer.GetFromUI(); | |||
| _detailGrid.GetFromUI(); | |||
| var list = GetBarCodeData(); | |||
| var dic = new Dictionary<string, Tuple<Money<decimal>, Money<decimal>?>>(); | |||
| foreach (var detail in Dmo.Details) | |||
| { | |||
| var results = list.Where(x => x.GoodsBatch_ID == detail.GoodsBatch_ID && x.Goods_ID == detail.Goods_ID); | |||
| if (results.Count() > 0) | |||
| { | |||
| var first = results.First(); | |||
| detail.TakeNumber = first.Weight; | |||
| detail.SecondTakeNumber = first.Num; | |||
| } | |||
| } | |||
| _detailGrid.DataBind(); | |||
| AspUtil.Alert(this, "操作成功"); | |||
| })); | |||
| var btn_x = hPanel.Add(new DialogButton { Text = "查看本库条码", Url = "~/B3_QiLianMuGe/Dialogs/QueryBarCode.aspx?Store_ID='+__DFContainer.getValue('Store_ID')+'" }); | |||
| btn_x.Click += delegate | |||
| { | |||
| }; | |||
| var deleteBtn = new TSButton("删除盘点条码"); | |||
| deleteBtn.Click += delegate { | |||
| var dom = new DQDeleteDom(typeof(StockTakeCEUploadBarCode)); | |||
| using (var context = new TransactionContext()) | |||
| { | |||
| context.Session.ExecuteNonQuery(dom); | |||
| context.Session.Commit(); | |||
| } | |||
| AspUtil.Alert(this, "操作成功"); | |||
| }; | |||
| deleteBtn.Attributes.Add("OnClick", "javascript:return confirm('确认要删除所有仓库盘点的条码吗?请先确认所有仓库是否都盘点完毕后再删除,删除条码后无法恢复')"); | |||
| hPanel.Add(deleteBtn); | |||
| } | |||
| class MinSaelBarCode | |||
| { | |||
| public string PackageBarCode { get; set; } | |||
| public string BarCode { get; set; } | |||
| public long? Goods_ID { get; set; } | |||
| public string Goods_Name { get; set; } | |||
| public string Goods_Code { get; set; } | |||
| public decimal? Weight { get; set; } | |||
| public string Product_Batch { get; set; } | |||
| public decimal? PackageWeight { get; set; } | |||
| public long? PackageID { get; set; } | |||
| public string PackageProduct_Batch { get; set; } | |||
| public DateTime? RightInStoreTime { get; set; } | |||
| public bool? IsOpen { get; set; } | |||
| public long? Store_ID { get; set; } | |||
| public string Store_Name { get; set; } | |||
| public bool? IsAssignGoods { get; set; } | |||
| public long? AssignBillID { get; set; } | |||
| public int? PickType { get; set; } | |||
| public string RightProduct_Batch { get; set; } | |||
| } | |||
| private class BarCodeData | |||
| { | |||
| public long? Goods_ID { get; set; } | |||
| public string Product_Batch { get; set; } | |||
| public decimal? Weight { get; set; } | |||
| public decimal? Num { get; set; } | |||
| public long? GoodsBatch_ID { get; set; } | |||
| } | |||
| private List<BarCodeData> GetBarCodeData() | |||
| { | |||
| var uploadBarCode = new JoinAlias(typeof(StockTakeCEUploadBarCode)); | |||
| var left = new JoinAlias("_l", typeof(BarCodeProductionInfo)); | |||
| var right = new JoinAlias("_r", typeof(BarCodeProductionInfo)); | |||
| var goods = new JoinAlias("_g", typeof(BWP.B3CowButcherManage.BO.Goods)); | |||
| var query = new DQueryDom(left); | |||
| query.From.AddJoin(JoinType.Inner, new DQDmoSource(uploadBarCode), DQCondition.EQ(left, "BarCode", uploadBarCode, "BarCode")); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(right), DQCondition.EQ(left, "ID", right, "PackageID")); | |||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(goods), DQCondition.EQ(left, "Goods_ID", goods, "ID")); | |||
| var arr = new string[] { "Goods_ID", "Goods_Name", "Goods_Code", "Weight", "InStoreTime", "Store_ID", "Store_Name", "IsAssignGoods", "AssignBillID", "PickType" }; | |||
| foreach (var f in arr) | |||
| query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.EQ(left, "BarType", 3), DQExpression.Field(right, f), DQExpression.Field(left, f)), f)); | |||
| query.Columns.Add(DQSelectColumn.Field("PackageWeight", goods)); | |||
| query.Columns.Add(DQSelectColumn.Field("PackageID", right)); | |||
| query.Columns.Add(DQSelectColumn.Field("Product_Batch", left)); | |||
| query.Columns.Add(DQSelectColumn.Field("IsOpen", left)); | |||
| query.Columns.Add(DQSelectColumn.Field("Product_Batch", right)); | |||
| var list = new List<MinSaelBarCode>(); | |||
| using (var contex = new TransactionContext()) | |||
| { | |||
| using (var reader = contex.Session.ExecuteReader(query)) | |||
| { | |||
| while (reader.Read()) | |||
| { | |||
| decimal? packageWeight = null; | |||
| var num = (Money<decimal>?)reader[10]; | |||
| if (num != null) | |||
| { | |||
| packageWeight = num.Value.Value; | |||
| } | |||
| var obj = new MinSaelBarCode() | |||
| { | |||
| Goods_ID = (long?)reader[0], | |||
| Goods_Name = (string)reader[1], | |||
| Goods_Code = (string)reader[2], | |||
| Weight = (decimal?)reader[3], | |||
| RightInStoreTime = (DateTime?)reader[4], | |||
| Store_ID = (long?)reader[5], | |||
| Store_Name = (string)reader[6], | |||
| IsAssignGoods = (bool?)reader[7], | |||
| AssignBillID = (long?)reader[8], | |||
| PickType = (int?)reader[9], | |||
| PackageWeight = packageWeight, | |||
| PackageID = (long?)reader[11], | |||
| Product_Batch = (string)reader[12], | |||
| IsOpen = (bool?)reader[13], | |||
| RightProduct_Batch = (string)reader[14], | |||
| }; | |||
| list.Add(obj); | |||
| } | |||
| } | |||
| } | |||
| var weightList = new List<BarCodeData>(); | |||
| var results = list.Where(x => x.Goods_ID != null && x.Store_ID == Dmo.Store_ID); | |||
| if (results.Count() > 0) | |||
| { | |||
| var packageGroups = results.Where(x=>x.PackageID!=null).GroupBy(x => x.PackageID); | |||
| foreach (var package in packageGroups) | |||
| { | |||
| var datas = package.Where(x => x.PackageWeight != null); | |||
| if (datas.Count() > 0) | |||
| { | |||
| var result = datas.First(); | |||
| weightList.Add(new BarCodeData { Goods_ID = result.Goods_ID, Product_Batch = result.Product_Batch, Weight = result.PackageWeight, Num = datas.Count()}); | |||
| }else | |||
| { | |||
| foreach (var item in package) | |||
| { | |||
| weightList.Add(new BarCodeData { Goods_ID = item.Goods_ID, Product_Batch = item.RightProduct_Batch, Weight = item.Weight, Num = 1 }); | |||
| } | |||
| } | |||
| } | |||
| var items = results.Where(x => x.PackageID == null); | |||
| foreach (var item in items) | |||
| { | |||
| weightList.Add(new BarCodeData { Goods_ID = item.Goods_ID, Product_Batch = item.Product_Batch, Weight = item.Weight, Num = 1 }); | |||
| } | |||
| } | |||
| var batchGroups = weightList.GroupBy(x => x.Product_Batch); | |||
| foreach (var group in batchGroups) | |||
| { | |||
| var tuples = new List<Tuple<long,long>>(); | |||
| var goodsIds = group.Select(x => x.Goods_ID ?? 0).Distinct(); | |||
| var goodsLists = SplitListWithCount(goodsIds.ToList(), 1000); | |||
| foreach (var goodslist in goodsLists) | |||
| { | |||
| var batchs = QuerytGoodsBatch(group.Key, goodslist); | |||
| batchs.ForEach(x => tuples.Add(x)); | |||
| } | |||
| foreach (var item in group) | |||
| { | |||
| var batch = tuples.Where(x => x.Item1 == item.Goods_ID); | |||
| if(batch.Count() > 0) | |||
| { | |||
| item.GoodsBatch_ID = batch.First().Item2; | |||
| } | |||
| } | |||
| } | |||
| var details = new List<BarCodeData>(); | |||
| var goodsGroups = weightList.GroupBy(x => x.Goods_ID); | |||
| foreach (var group in goodsGroups) | |||
| { | |||
| var goodsBatchGroups = group.GroupBy(x=>x.GoodsBatch_ID); | |||
| foreach (var item in goodsBatchGroups) | |||
| { | |||
| var codeData = new BarCodeData(); | |||
| codeData.Goods_ID = group.Key; | |||
| codeData.GoodsBatch_ID = item.Key; | |||
| codeData.Weight = item.Sum(x=>x.Weight); | |||
| codeData.Num = item.Sum(x=>x.Num); | |||
| details.Add(codeData); | |||
| } | |||
| } | |||
| return details; | |||
| } | |||
| private List<Tuple<long, long>> QuerytGoodsBatch(string batch, IEnumerable<long> goodsIds) | |||
| { | |||
| var query = new DQueryDom(new JoinAlias(typeof(BWP.B3UnitedInfos.BO.GoodsBatch))); | |||
| query.Columns.Add(DQSelectColumn.Field("Goods_ID")); | |||
| query.Columns.Add(DQSelectColumn.Field("ID")); | |||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.InList(DQExpression.Field("Goods_ID"), goodsIds.Select(x => DQExpression.Value(x)).ToArray()), DQCondition.EQ("Name", batch))); | |||
| query.Where.Conditions.Add(DQCondition.EQ("Stopped", false)); | |||
| query.Where.Conditions.Add(DQCondition.EQ("Domain_ID", DomainContext.Current.ID)); | |||
| var list = new List<Tuple<long, long>>(); | |||
| using (var context2 = new TransactionContext()) | |||
| { | |||
| using (var reader = context2.Session.ExecuteReader(query)) | |||
| { | |||
| while (reader.Read()) | |||
| { | |||
| list.Add(new Tuple<long, long>((long)reader[0], (long)reader[1])); | |||
| } | |||
| } | |||
| } | |||
| return list; | |||
| } | |||
| private List<List<T>> SplitListWithCount<T>(IList<T> list, int count) | |||
| { | |||
| var num = list.Count / count; | |||
| var num2 = list.Count % count; | |||
| var results = new List<List<T>>(); | |||
| for (int i = 1; i <= num; i++) | |||
| { | |||
| var l = new List<T>(); | |||
| for (int j = (i - 1) * count; j < count * i; j++) | |||
| { | |||
| l.Add(list[j]); | |||
| } | |||
| results.Add(l); | |||
| } | |||
| if (num2 > 0) | |||
| { | |||
| var l = new List<T>(); | |||
| for (int i = num * count; i < list.Count; i++) | |||
| { | |||
| l.Add(list[i]); | |||
| } | |||
| results.Add(l); | |||
| } | |||
| return results; | |||
| } | |||
| } | |||
| } | |||