Beispiel #1
0
        public SOPhysicalCard(IPage page, string companyCode)
        {
            this.Page = page;
            InitializeComponent();
            UtilityHelper.ReadOnlyControl(gridTotalInfo, gridTotalInfo.Children.Count, true);

            ProductQueryFilter query = new ProductQueryFilter();

            query.ProductID    = "GC-002-";
            query.IsNotAbandon = true;
            query.CompanyCode  = CPApplication.Current.CompanyCode;
            query.PagingInfo   = new PagingInfo()
            {
                PageSize  = 1000,
                PageIndex = 0,
                SortBy    = "PP.CurrentPrice"
            };

            new OtherDomainQueryFacade(this.Page).QueryProductRequest(query, (obj, args) =>
            {
                if (args.FaultsHandle())
                {
                    return;
                }
                var list = args.Result.Rows;
                InitDataGrid(list);
            });
        }
 public async Task <IEnumerable <Product> > FindAllAsync(ProductQueryFilter filters)
 {
     return(await _productRepository.Queryable()
            .WhereFor(!filters.IncludeInactivated, product => !product.Inactivated)
            .WhereFor(filters.Description, product => EF.Functions.Like(product.Description, $"%{filters.Description}%"))
            .ToListAsync());
 }
Beispiel #3
0
        public IActionResult GetAllWithPaging([FromBody] ProductQueryFilter filter)
        {
            var products = _unitOfWork.Products.GetAllProductsWithPaging(filter);
            var metadata = new Metadata
            {
                TotalCount      = products.TotalCount,
                PageSize        = products.PageSize,
                CurrentPage     = products.CurrentPage,
                TotalPages      = products.TotalPages,
                HasNextPage     = products.HasNextPage,
                HasPreviousPage = products.HasPreviousPage,
                NextPageUrl     = _uriService.GetProductPaginationUri(filter, Url.RouteUrl(nameof(GetAllWithPaging))).ToString(),
                PreviousPageUrl = _uriService.GetProductPaginationUri(filter, Url.RouteUrl(nameof(GetAllWithPaging))).ToString()
            };

            var response = new ApiResponse <IEnumerable <Product> >(products)
            {
                Meta    = metadata,
                Status  = (int)HttpStatusCode.OK,
                Message = "Success",
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));
            return(Ok(response));
        }
 public UCProductSearchForSO()
 {
     InitializeComponent();
     this.Grid.DataContext = m_queryReq = new ProductQueryFilter();
     this.Loaded          += UCProductSearchForSO_Loaded;
     m_selectData          = new Dictionary <string, ProductVM>();
 }
Beispiel #5
0
 /// <summary>
 /// 分页查询商品
 /// </summary>
 /// <param name="queryFilter"></param>
 /// <returns></returns>
 public static QueryResult <ProductQueryInfo> QueryProduct(ProductQueryFilter queryFilter)
 {
     if (queryFilter == null || string.IsNullOrEmpty(queryFilter.VendorSysNo))
     {
         throw new BusinessException("商家编号不能为空");
     }
     return(ProductDA.QueryProduct(queryFilter));
 }
        public async Task <IActionResult> Get([FromQuery] ProductQueryFilter filters)
        {
            var products = await _productService.FindAllAsync(filters);

            var response = new Response(products);

            return(Ok(response));
        }
Beispiel #7
0
        public QueryResult QueryProduct(ProductQueryFilter request)
        {
            int totalCount;
            var dataTable = ObjectFactory <IProductQueryDA> .Instance.QueryProduct(request, out totalCount);

            return(new QueryResult
            {
                Data = dataTable,
                TotalCount = totalCount
            });
        }
        public PagedList <Product> GetAllProductsWithPaging(ProductQueryFilter filter)
        {
            filter.PageNumber = filter.PageNumber == 0 ? _paginationOption.DefaultPageNumber : filter.PageNumber;
            filter.PageSize   = filter.PageSize == 0 ? _paginationOption.DefaultPageSize : filter.PageSize;

            var sql    = "SELECT * FROM Products";
            var result = base.DbConnection.Query <Product>(sql);

            var pagedProducts = PagedList <Product> .Create(result, filter.PageNumber, filter.PageSize);

            return(pagedProducts);
        }
        void UCProductSearchForCombo_Loaded(object sender, RoutedEventArgs e)
        {
            Loaded     -= new RoutedEventHandler(UCProductSearchForCombo_Loaded);
            this.Filter = new ProductQueryFilter();

            //商品类型
            this.cmbType.ItemsSource   = EnumConverter.GetKeyValuePairs <ProductType>(EnumConverter.EnumAppendItemType.All);
            this.cmbType.SelectedIndex = 0;

            //商品状态
            this.cmbStatus.ItemsSource   = EnumConverter.GetKeyValuePairs <ProductStatus>(EnumConverter.EnumAppendItemType.All);
            this.cmbStatus.SelectedIndex = 0;
        }
Beispiel #10
0
        /// <summary>
        /// 使用商家编号及ProductSysNo查询商品
        /// </summary>
        /// <param name="sellerSysNo">商家编号</param>
        /// <param name="productSysNo">商品编号</param>
        /// <returns></returns>
        public static ProductQueryInfo GetProductBySysNo(int productSysNo)
        {
            ProductQueryFilter filter = new ProductQueryFilter();

            filter.PageIndex    = 0;
            filter.PageSize     = int.MaxValue;
            filter.ProductSysNo = productSysNo;
            var result = ProductDA.QueryProduct(filter);

            if (result.ResultList.Count == 1)
            {
                return(result.ResultList[0]);
            }
            else if (result.ResultList.Count > 1)
            {
                string msg = string.Format("商品#{0}存在重复记录,请确认。", productSysNo);
                throw new BusinessException(msg);
            }
            string notFoundMsg = string.Format("商品#{0}不存在。", productSysNo);

            throw new BusinessException(notFoundMsg);
        }
Beispiel #11
0
        /// <summary>
        /// 获取商品销售区域列表
        /// </summary>
        /// <param name="productSysNo"></param>
        /// <returns></returns>
        public static QueryResult <ProductSalesAreaInfo> GetProductSalesAreaInfoBySysNo(ProductQueryFilter queryFilter)
        {
            CustomDataCommand command = DataCommandManager.CreateCustomDataCommandFromConfig("GetProductSalesAreaInfoBySysNo");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(command.CommandText, command, queryFilter, string.IsNullOrEmpty(queryFilter.SortFields) ? "pra.SysNo ASC" : queryFilter.SortFields))
            {
                if (queryFilter.ProductSysNo.HasValue)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "pra.ProductSysNo", DbType.Int32, "@ProductSysNo", QueryConditionOperatorType.Equal, queryFilter.ProductSysNo.Value);
                }
                command.CommandText = sqlBuilder.BuildQuerySql();
                List <ProductSalesAreaInfo> resultList = command.ExecuteEntityList <ProductSalesAreaInfo>();
                int totalCount = Convert.ToInt32(command.GetParameterValue("@TotalCount"));

                return(new QueryResult <ProductSalesAreaInfo>()
                {
                    PageInfo = new PageInfo()
                    {
                        PageIndex = queryFilter.PageIndex, PageSize = queryFilter.PageSize, TotalCount = totalCount, SortBy = queryFilter.SortFields
                    }, ResultList = resultList
                });
            }
        }
Beispiel #12
0
        /// <summary>
        /// 分页查询商品
        /// </summary>
        /// <param name="queryFilter"></param>
        /// <returns></returns>
        public static QueryResult <ProductQueryInfo> QueryProduct(ProductQueryFilter queryFilter)
        {
            CustomDataCommand command = DataCommandManager.CreateCustomDataCommandFromConfig("QueryProduct");

            using (var sqlBuilder = new DynamicQuerySqlBuilder(command.CommandText, command, queryFilter, string.IsNullOrEmpty(queryFilter.SortFields) ? "P.[SysNo] DESC" : queryFilter.SortFields))
            {
                if (!string.IsNullOrEmpty(queryFilter.VendorSysNo))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "P.MerchantSysNo", DbType.Int32, "@VendorSysNo", QueryConditionOperatorType.Equal, queryFilter.VendorSysNo);
                }
                if (queryFilter.ProductSysNo.HasValue && queryFilter.ProductSysNo > 0)
                {
                    sqlBuilder.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND
                        , "p.[SysNo]"
                        , DbType.Int32
                        , "@ProductSysNo"
                        , QueryConditionOperatorType.Equal
                        , queryFilter.ProductSysNo
                        );
                }
                if (!string.IsNullOrEmpty(queryFilter.ProductID))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "p.[ProductID]", DbType.String, "@ProductID", QueryConditionOperatorType.Like, queryFilter.ProductID);
                }
                if (!string.IsNullOrEmpty(queryFilter.ProductTitle))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "P.[ProductTitle]", DbType.String, "@ProductTitle", QueryConditionOperatorType.Like, queryFilter.ProductTitle);
                }
                if (!string.IsNullOrEmpty(queryFilter.Status))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "P.[Status]", DbType.Int32, "@Status", queryFilter.StatusCondition == 0 ? QueryConditionOperatorType.Equal : QueryConditionOperatorType.NotEqual, queryFilter.Status);
                }
                if (!string.IsNullOrEmpty(queryFilter.CategorySysNo))
                {
                    sqlBuilder.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND, "FPC.[SysNo]", QueryConditionOperatorType.In, queryFilter.CategorySysNo);
                }
                if (queryFilter.CreateTimeBegin != null && queryFilter.CreateTimeBegin != new DateTime())
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "P.[CreateTime]", DbType.DateTime, "@CreateTimeBegin", QueryConditionOperatorType.MoreThanOrEqual, queryFilter.CreateTimeBegin.ToString("yyyy-MM-dd"));
                }
                if (queryFilter.CreateTimeEnd != null && queryFilter.CreateTimeEnd != new DateTime())
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "P.[CreateTime]", DbType.DateTime, "@CreateTimeEnd", QueryConditionOperatorType.LessThan, queryFilter.CreateTimeEnd.AddDays(1).ToString("yyyy-MM-dd"));
                }
                if (!string.IsNullOrEmpty(queryFilter.ProductTradeType))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND, "PE.[ProductTradeType]", DbType.String, "@ProductTradeType", QueryConditionOperatorType.Equal, queryFilter.ProductTradeType);
                }
                if (!string.IsNullOrEmpty(queryFilter.UPCCode))
                {
                    sqlBuilder.ConditionConstructor.AddCondition(QueryConditionRelationType.AND
                                                                 , "PC.[UPCCode]"
                                                                 , DbType.String
                                                                 , "@UPCCode"
                                                                 , QueryConditionOperatorType.Like, queryFilter.UPCCode
                                                                 );
                }
                string sqlstr = sqlBuilder.BuildQuerySql();
                command.CommandText = sqlstr;

                List <ProductQueryInfo> resultList = command.ExecuteEntityList <ProductQueryInfo>();

                int totalCount = Convert.ToInt32(command.GetParameterValue("@TotalCount"));

                return(new QueryResult <ProductQueryInfo>()
                {
                    PageInfo = new PageInfo()
                    {
                        PageIndex = queryFilter.PageIndex,
                        PageSize = queryFilter.PageSize,
                        TotalCount = totalCount,
                        SortBy = queryFilter.SortFields
                    },
                    ResultList = resultList
                });
            }
        }
Beispiel #13
0
 public void QueryProduct(ProductQueryFilter filter, EventHandler <RestClientEventArgs <dynamic> > callback)
 {
     filter.CompanyCode = CPApplication.Current.CompanyCode;
     restClient.QueryDynamicData("/IMService/Product/QueryProduct", filter, callback);
 }
Beispiel #14
0
        public ActionResult AjaxQuery()
        {
            ProductQueryFilter queryFilter = BuildQueryFilterEntity <ProductQueryFilter>();

            int currentSellerSysNoValue = UserAuthHelper.GetCurrentUser().SellerSysNo;

            if (currentSellerSysNoValue > 0)
            {
                queryFilter.VendorSysNo = currentSellerSysNoValue.ToString();
            }

            if (queryFilter.CategorySysNo == "0")
            {
                queryFilter.CategorySysNo = string.Empty;
            }

            if (queryFilter.StatusCondition == -1)
            {
                queryFilter.StatusCondition = 0;
                queryFilter.Status          = string.Empty;
            }
            //假设我拿到的是类别的CategoryCode,我需要根据他的值“CategoryCode-层级数-CategorySysNo” 拿到对应的三级CategorySysNo字符列表
            if ((!string.IsNullOrWhiteSpace(queryFilter.CategoryCode)) && queryFilter.CategoryCode != "0")
            {
                string CategoryCode  = queryFilter.CategoryCode.Split('-')[0].Trim();
                string CategorySysNo = queryFilter.CategoryCode.Split('-')[2];
                string IsLeaf        = queryFilter.CategoryCode.Split('-')[3];
                switch (queryFilter.CategoryCode.Split('-')[1])
                {
                case "1":
                    if (IsLeaf == "0")
                    {
                        var CateGory2List_One = ProductMaintainService.GetFrontProductCategoryByParentCode(CategoryCode);
                        foreach (var CateGory2 in CateGory2List_One)
                        {
                            if (CateGory2.IsLeaf == CommonYesOrNo.Yes)
                            {
                                queryFilter.CategorySysNo += CateGory2.SysNo + ",";
                            }
                            var Category3List_One = ProductMaintainService.GetFrontProductCategoryByParentCode(CateGory2.CategoryCode);
                            foreach (var item in Category3List_One)
                            {
                                queryFilter.CategorySysNo += item.SysNo + ",";
                            }
                        }
                        //去掉最后余出来的“,”
                        if (!string.IsNullOrWhiteSpace(queryFilter.CategorySysNo))
                        {
                            int RemoveIndex_One = queryFilter.CategorySysNo.Length - 1;
                            queryFilter.CategorySysNo = queryFilter.CategorySysNo.Remove(RemoveIndex_One);
                        }
                        else
                        {
                            queryFilter.CategorySysNo = CategorySysNo;
                        }
                    }
                    else
                    {
                        queryFilter.CategorySysNo = CategorySysNo;
                    }

                    break;

                case "2":
                    if (IsLeaf == "0")
                    {
                        var Category3List_Two = ProductMaintainService.GetFrontProductCategoryByParentCode(CategoryCode);
                        foreach (var item in Category3List_Two)
                        {
                            queryFilter.CategorySysNo += item.SysNo + ",";
                        }
                        //去掉最后余出来的“,”
                        if (!string.IsNullOrWhiteSpace(queryFilter.CategorySysNo))
                        {
                            int RemoveIndex_One = queryFilter.CategorySysNo.Length - 1;
                            queryFilter.CategorySysNo = queryFilter.CategorySysNo.Remove(RemoveIndex_One);
                        }
                        else
                        {
                            queryFilter.CategorySysNo = CategorySysNo;
                        }
                    }
                    else
                    {
                        queryFilter.CategorySysNo = CategorySysNo;
                    }

                    break;

                case "3":
                    queryFilter.CategorySysNo = CategorySysNo;
                    break;

                default:
                    queryFilter.CategorySysNo = string.Empty;
                    break;
                }
            }


            QueryResult <ProductQueryInfo>
            result = ProductService.QueryProduct(queryFilter);

            return(AjaxGridJson(result));
        }
 /// <summary>
 /// 获取订单相关RMA
 /// </summary>
 /// <param name="query">过滤条件</param>
 /// <param name="callback">回调函数</param>
 public void QueryProductRequest(ProductQueryFilter query, EventHandler <RestClientEventArgs <dynamic> > callback)
 {
     query.CompanyCode = CPApplication.Current.CompanyCode;
     GetRestClient(ConstValue.DomainName_IM).QueryDynamicData("/IMService/Product/QueryProduct", query, callback);
 }
        public async Task <IEnumerable <ProductResponseModel> > FindAllAsync(ProductQueryFilter filters)
        {
            var products = await _productService.FindAllAsync(filters);

            return(_mapper.Map <IEnumerable <ProductResponseModel> >(products));
        }
Beispiel #17
0
        public Uri GetProductPaginationUri(ProductQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }
Beispiel #18
0
        /// <summary>
        /// 查询商品
        /// </summary>
        /// <returns></returns>
        public virtual DataTable QueryProduct(ProductQueryFilter filter, out int totalCount)
        {
            CustomDataCommand cmd = DataCommandManager.CreateCustomDataCommandFromConfig("QueryProduct");

            using (var sb = new DynamicQuerySqlBuilder(cmd.CommandText, cmd, ToPagingInfo(filter.PagingInfo), "Product.SysNo Desc"))
            {
                #region AddParameter

                //商品ID
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.ProductID",
                    DbType.String,
                    "@ProductID",
                    QueryConditionOperatorType.LeftLike,
                    StringUtility.IsEmpty(filter.ProductID) ? filter.ProductID : filter.ProductID.Trim()
                    );

                //商品系统编号
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.SysNo",
                    DbType.Int32,
                    "@ProductSysNo",
                    QueryConditionOperatorType.Equal,
                    filter.ProductSysNo
                    );

                //商品名称
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.ProductTitle",
                    DbType.String,
                    "@ProductName",
                    QueryConditionOperatorType.Like,
                    filter.ProductName
                    );

                if (filter.VendorSysNo.HasValue)
                {
                    // 供应商系统编号
                    //                    string template = string.Format(@"SELECT DISTINCT PO_ITM.ProductSysNo
                    //                                        FROM [IPP3].[dbo].[PO_Item] PO_ITM WITH(NOLOCK)
                    //                                        INNER JOIN [IPP3].[dbo].[PO_Master] PO_MST WITH(NOLOCK)
                    //                                        ON PO_MST.SysNo = PO_ITM.POSysNo WHERE PO_MST.VendorSysNo={0}", filter.VendorSysNo.Value);
                    //                    sb.ConditionConstructor.AddSubQueryCondition(QueryConditionRelationType.AND, "Product.SysNo",
                    //                        QueryConditionOperatorType.In, template);

                    sb.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "Product.MerchantSysNo",
                        DbType.Int32,
                        "@MerchantSysNo",
                        QueryConditionOperatorType.Equal,
                        filter.VendorSysNo
                        );
                }

                //PM操作人员
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.PMUserSysNo",
                    DbType.Int32,
                    "@PMUserSysNo",
                    QueryConditionOperatorType.Equal,
                    filter.PMUserSysNo
                    );

                //商品类型
                if (filter.ProductType.HasValue)
                {
                    //需要转变映射关系
                    sb.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "Product.ProductType",
                        DbType.Int32,
                        "@ProductType",
                        QueryConditionOperatorType.Equal,
                        (int)filter.ProductType.Value
                        );
                }

                //商品状态
                if (filter.ProductStatus.HasValue)
                {
                    sb.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "Product.Status",
                        DbType.Int32,
                        "@Status",
                        QueryConditionOperatorType.Equal,
                        (int)filter.ProductStatus.Value
                        );
                }

                //商品状态不为作废状态
                if (filter.IsNotAbandon.HasValue && filter.IsNotAbandon.Value)
                {
                    sb.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "Product.Status",
                        DbType.Int32,
                        "@IsNotAbandon",
                        QueryConditionOperatorType.NotEqual,
                        ProductStatus.Abandon
                        );
                }

                //品牌
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.BrandSysNo",
                    DbType.Int32,
                    "@BrandSysNo",
                    QueryConditionOperatorType.Equal,
                    filter.BrandSysNo
                    );

                //创建时间
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.[CreateTime]",
                    DbType.DateTime,
                    "@CreateDateFrom",
                    QueryConditionOperatorType.MoreThanOrEqual,
                    filter.CreateDateFrom
                    );

                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.[CreateTime]",
                    DbType.DateTime,
                    "@CreateDateTo",
                    QueryConditionOperatorType.LessThanOrEqual,
                    filter.CreateDateTo
                    );

                //第三级分类
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.C3SysNo",
                    DbType.Int32,
                    "@C3SysNo",
                    QueryConditionOperatorType.Equal,
                    filter.C3SysNo
                    );

                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "C3.C2SysNo",
                    DbType.Int32,
                    "@C2SysNo",
                    QueryConditionOperatorType.Equal,
                    filter.C2SysNo
                    );

                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "C2.C1SysNo",
                    DbType.Int32,
                    "@C1SysNo",
                    QueryConditionOperatorType.Equal,
                    filter.C1SysNo
                    );

                //仓库查询后续提供
                //sb.ConditionConstructor.AddCondition(
                // QueryConditionRelationType.AND,
                // "Inventory.WareHouseSysNumber",
                // DbType.Int32,
                // "@StockSysNo",
                // QueryConditionOperatorType.Equal,
                // filter.StockSysNo
                // );

                //频道?

                //是否代销
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.IsConsign",
                    DbType.String,
                    "@IsConsign",
                    QueryConditionOperatorType.Equal,
                    filter.IsConsign
                    );

                //库存数量
                if (filter.OnlineQty.HasValue)
                {
                    QueryConditionOperatorType operatorType = QueryConditionOperatorType.Equal;
                    switch (filter.OnlineCondition.ToLower())
                    {
                    case "greater":
                        operatorType = QueryConditionOperatorType.MoreThan;
                        break;

                    case "less":
                        operatorType = QueryConditionOperatorType.LessThan;
                        break;

                    default:
                        operatorType = QueryConditionOperatorType.Equal;
                        break;
                    }

                    sb.ConditionConstructor.AddCondition(
                        QueryConditionRelationType.AND,
                        "Inventory.OnlineQty",
                        DbType.Int32,
                        "@OnlineQty",
                        operatorType,
                        filter.OnlineQty
                        );
                }

                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "EX.CompanyProduct",
                    DbType.Int32,
                    "@CompanyProduct",
                    QueryConditionOperatorType.Equal,
                    filter.AZCustomer
                    );

                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.MerchantSysNo",
                    DbType.Int32,
                    "@MerchantSysNo",
                    QueryConditionOperatorType.Equal,
                    filter.MerchantSysNo
                    );

                //公司编码
                sb.ConditionConstructor.AddCondition(
                    QueryConditionRelationType.AND,
                    "Product.CompanyCode",
                    DbType.String,
                    "@CompanyCode",
                    QueryConditionOperatorType.Equal,
                    filter.CompanyCode
                    );

                if (filter.ProductIds != null && filter.ProductIds.Count > 0)
                {
                    sb.ConditionConstructor.AddInCondition <string>(
                        QueryConditionRelationType.AND,
                        "Product.ProductID",
                        DbType.String,
                        filter.ProductIds
                        );
                }

                cmd.CommandText = sb.BuildQuerySql();

                #endregion
                EnumColumnList columnConfig = new EnumColumnList();
                columnConfig.Add("Status", typeof(ProductStatus));
                columnConfig.Add("ProductType", typeof(ProductType));
                columnConfig.Add("InventoryType", typeof(ProductInventoryType));
                var dt = cmd.ExecuteDataTable(columnConfig);
                totalCount = Convert.ToInt32(cmd.GetParameterValue("@TotalCount"));
                return(dt);
            }
        }