private IQueryable <OrderPlacing> GetOrderCollectionStateQuery(OrderCollectionState orderCollectionState, bool storageFinished) { IQueryable <OrderPlacing> query; if (storageFinished) { query = DbSet.AsNoTracking().Where(o => o.StorageFinishedFlag == "1"); } else { query = DbSet.AsNoTracking().Where(o => o.StorageFinishedFlag == "0"); } switch (orderCollectionState) { case OrderCollectionState.NoneCare: break; case OrderCollectionState.NoneStartCollection: query = query.Where(o => o.OrderCollectionCount == 0); break; case OrderCollectionState.PartialCollection: query = query.Where(o => o.OrderCollectionCount != o.OnLineQuantity && o.OrderCollectionCount > 0); break; case OrderCollectionState.FinishedCollection: query = query.Where(o => o.OrderCollectionCount == o.OnLineQuantity); break; } return(query); }
/// <summary> /// 单选改变 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RadioBtnNotCollection_CheckedChanged(object sender, EventArgs e) { //改变会触发两次这个事件 造成偶尔访问数据库有问题 这里判断处理下 var radioButton = (RadioButton)sender; if (radioButton.Checked == false) { return; } //本身加载列表是未入库的 已入库的不考虑 //未开始领料 if (radioBtnNotCollection.Checked) { _orderCollectionState = OrderCollectionState.NoneStartCollection; } //部分领料 else if (radioBtnPartialCollection.Checked) { _orderCollectionState = OrderCollectionState.PartialCollection; } //领料完毕 else { _orderCollectionState = OrderCollectionState.FinishedCollection; } MultiThreadingBindingOrderData(1, _orderCollectionState); }
public IQueryable <OrderPlacing> GetOrders(int pageIndex, int pageSize, OrderCollectionState orderCollectionState, bool storageFinished = false) { var query = GetOrderCollectionStateQuery(orderCollectionState, storageFinished); query = query.OrderByDescending(order => order.OrderCreateTime); return(query.Skip((pageIndex - 1) * pageSize).Take(pageSize)); }
/// <summary> /// 从数据库获取分页的数据 /// </summary> /// <param name="pageIndex"> 哪一页的数据</param> /// <param name="orderCollectionState">获取订单领料状况</param> /// <returns></returns> private BindingList <OrderPlacing> FillData(int pageIndex, OrderCollectionState orderCollectionState) { var unitOfWork = new UnitOfWork(); var orderService = new OrderService(unitOfWork, unitOfWork.OrderRepository); var result = orderService.GetOrders(pageIndex, PageSize, orderCollectionState); var totalCount = result.TotalCount; //分页数量 _pageCount = (int)(totalCount % PageSize == 0 ? totalCount / PageSize : (totalCount / PageSize) + 1); return(result.CurrentPageData); }
/// <summary> /// 从数据库获取分页的数据 /// </summary> /// <param name="pageIndex"> 哪一页的数据</param> /// <param name="orderCollectionState">获取订单领料状况</param> /// <returns></returns> private BindingList <OrderCollectionDto> LoadData(int pageIndex, OrderCollectionState orderCollectionState) { var orderService = AutofacContainer.GetInstance().GetObject <IOrderService>(); var result = orderService.GetOrders(pageIndex, PageSize, orderCollectionState); var totalCount = result.TotalCount; //分页数量 _pageCount = (int)(totalCount % PageSize == 0 ? totalCount / PageSize : (totalCount / PageSize) + 1); _currentPage = _pageCount == 0 ? 0 : pageIndex; return(result.CurrentPageData); }
private void MultiThreadingBindingOrderData(int pageIndex, OrderCollectionState orderCollectionState) { //绑定数据源时会触发SelectionChanged dgvOrderlist.SelectionChanged -= dgvOrderList_SelectionChanged; Task.Factory.StartNew(() => LoadData(pageIndex, orderCollectionState)) .ContinueWith(preTask => { _dgvBindingSource.DataSource = preTask.Result; //此句位置很重要 会触发SelectionChanged this.dgvOrderlist.ClearSelection(); dgvOrderlist.SelectionChanged += dgvOrderList_SelectionChanged; this.lbInfo.Text = $"第{_currentPage}页/共{_pageCount}页 "; }, TaskScheduler.FromCurrentSynchronizationContext()); }
/// <summary> /// 单选改变 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RadioBtnNotCollection_CheckedChanged(object sender, EventArgs e) { //本身加载列表是未入库的 已入库的不考虑 //未开始领料 if (radioBtnNotCollection.Checked) { _orderCollectionState = OrderCollectionState.NoneStartCollection; MultiThreadingLoadOrderData(); } //部分领料 else if (radioBtnPartialCollection.Checked) { _orderCollectionState = OrderCollectionState.PartialCollection; MultiThreadingLoadOrderData(); } //领料完毕 else { _orderCollectionState = OrderCollectionState.FinishedCollection; MultiThreadingLoadOrderData(); } }
public int GetOrderCollectionStateCount(OrderCollectionState orderCollectionState, bool storageFinished = false) { var query = GetOrderCollectionStateQuery(orderCollectionState, storageFinished); return(query.Count()); }
//订单分页数据 //public PagedResult<OrderCollectionDto> LoadPageData(int pageIndex, int pageSize, bool storageFinished = false) //{ // //获得记录总数 // var count = _orderRepository.GetOrderCollectionStateCount(OrderCollectionState.NoneCare, storageFinished); // var bindingList = new BindingList<OrderCollectionDto>(); // var list = _orderRepository.GetOrders(pageIndex, pageSize, storageFinished) // .ProjectTo<OrderCollectionDto>(_mapper.ConfigurationProvider).ToList(); // list.ForEach(o => bindingList.Add(o)); // return new PagedResult<OrderCollectionDto>(pageIndex, pageSize, count, bindingList); //} /// <summary> /// 获取组装界面 展示订单数据 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="orderCollectionState"></param> /// <param name="storageFinished"></param> /// <returns></returns> public PagedResult <OrderCollectionDto> GetOrders(int pageIndex, int pageSize, OrderCollectionState orderCollectionState, bool storageFinished = false) { var bindingList = new BindingList <OrderCollectionDto>(); var list = _orderRepository.GetOrders(pageIndex, pageSize, orderCollectionState, storageFinished) .ProjectTo <OrderCollectionDto>(_mapper.ConfigurationProvider).ToList(); //获得记录总数 var count = _orderRepository.GetOrderCollectionStateCount(orderCollectionState, storageFinished); list.ForEach(o => bindingList.Add(o)); return(new PagedResult <OrderCollectionDto>(pageIndex, pageSize, count, bindingList)); }
/// <summary> /// 获取订单某状态下的数量 /// </summary> /// <param name="orderCollectionState"></param> /// <param name="storageFinished"></param> /// <returns></returns> public int GetOrderStateCount(OrderCollectionState orderCollectionState, bool storageFinished = false) { return(_orderRepository.GetOrderCollectionStateCount(orderCollectionState, storageFinished)); }