/// <summary>
        /// 根据上架单号获取任务单详情
        /// </summary>
        /// <param name="shelfTaskName"></param>
        /// <returns></returns>
        public BaseData <AllotShelf> GetAllotShelfTask()
        {
            //获取待完成上架工单
            BaseData <AllotShelf> baseDataShelfTask = HttpHelper.GetInstance().Get <AllotShelf>(new QueryParam
            {
                view_filter =
                {
                    filter                =
                    {
                        //logical_relation = "1 AND 2",
                        logical_relation = "1",
                        expressions      =
                        {
                            //new QueryParam.Expressions
                            //{
                            //    field = "Status",
                            //    @operator = "==",
                            //    operands = {$"'{ HttpUtility.UrlEncode(ShelfTaskStatus.待上架.ToString()) }'" }
                            //},
                            new QueryParam.Expressions
                            {
                                field     = "Operator",
                                @operator = "==",
                                operands  = { $"'{ HttpUtility.UrlEncode(ApplicationState.GetUserInfo().id) }'" }
                            }
                        }
                    }
                }
            });

            BaseData <AllotShelfCommodity> baseDataShelfTaskCommodityDetail = GetShelfTaskCommodityDetail(baseDataShelfTask);

            //校验是否含有数据
            HttpHelper.GetInstance().ResultCheck(baseDataShelfTaskCommodityDetail, out bool isSuccess);

            if (isSuccess)
            {
                //WARING 这种做法只在单柜下才是完全正确,在多柜中需要修改
                string id = ApplicationState.GetAllCabIds().ToList().First();

                List <AllotShelf> taskList = new List <AllotShelf>();

                var shelfTasks = baseDataShelfTask.body.objects.Where(item => item.Status != ShelfTaskStatus.已完成.ToString() && item.Status != ShelfTaskStatus.异常.ToString()).ToList();

                var shelfTaskCommodityDetails = baseDataShelfTaskCommodityDetail.body.objects.Where(item => item.GoodsLocationId == id);
                shelfTasks.ForEach(it =>
                {
                    it.ShelfNumber = shelfTaskCommodityDetails.Where(sit => sit.AllotShelfId == it.id).Count();
                    if (it.ShelfNumber != 0)
                    {
                        it.GoodLocationName = ApplicationState.GetCabNameById(id);
                        taskList.Add(it);
                    }
                });

                baseDataShelfTask.body.objects = taskList;
            }

            return(baseDataShelfTask);
        }
        /// <summary>
        /// 根据拣货单号获取任务单详情
        /// </summary>
        /// <param name="pickTaskName"></param>
        /// <returns></returns>
        public BaseData <PickTask> GetPickTask()
        {
            //获取待完成拣货工单
            BaseData <PickTask> baseDataPickTask = HttpHelper.GetInstance().Get <PickTask>(new QueryParam
            {
                view_filter =
                {
                    filter                =
                    {
                        logical_relation = "1 AND 2",
                        expressions      =
                        {
                            new QueryParam.Expressions
                            {
                                field     = "BillStatus",
                                @operator = "==",
                                operands  = { $"'{ HttpUtility.UrlEncode(PickTaskStatus.待拣货.ToString()) }'" }
                            },
                            new QueryParam.Expressions
                            {
                                field     = "Operator",
                                @operator = "==",
                                operands  = { $"'{ HttpUtility.UrlEncode(ApplicationState.GetUserInfo().id) }'" }
                            }
                        }
                    }
                }
            });

            //校验是否含有数据
            HttpHelper.GetInstance().ResultCheck(baseDataPickTask, out bool isSuccess0);

            if (isSuccess0)
            {
                BaseData <PickCommodity> baseDataPickTaskCommodityDetail = GetPickTaskCommodityDetail(baseDataPickTask);

                //校验是否含有数据
                HttpHelper.GetInstance().ResultCheck(baseDataPickTaskCommodityDetail, out bool isSuccess);

                if (isSuccess)
                {
                    //WARING 这种做法只在单柜下才是完全正确,在多柜中需要修改
                    string          id       = ApplicationState.GetAllCabIds().ToList().First();
                    List <PickTask> taskList = new List <PickTask>();

                    var pickTasks = baseDataPickTask.body.objects;
                    var pickTaskCommodityDetails = baseDataPickTaskCommodityDetail.body.objects.Where(item => item.GoodsLocationId == id);
                    pickTasks.ForEach(it =>
                    {
                        //ids.ForEach(id => {
                        //    it.NeedPickTotalNumber = pickTaskCommodityDetails.Where(sit => sit.PickTaskId == it.id && sit.GoodsLocationId == id).GroupBy(sit => new { sit.PickTaskId, sit.GoodsLocationId }).Select(group => group.Sum(sit => (sit.Number - sit.PickNumber))).Single();
                        //    if (it.NeedPickTotalNumber != 0)
                        //    {
                        //        it.GoodLocationName = ApplicationState.GetCabNameById(id);
                        //        taskList.Add(it);
                        //    }
                        //});

                        it.NeedPickTotalNumber = pickTaskCommodityDetails.Where(sit => sit.PickTaskId == it.id).GroupBy(sit => sit.PickTaskId).Select(group => group.Sum(sit => (sit.Number - sit.PickNumber))).FirstOrDefault();
                        if (it.NeedPickTotalNumber != 0)
                        {
                            it.GoodLocationName = ApplicationState.GetCabNameById(id);
                            taskList.Add(it);
                        }
                    });

                    baseDataPickTask.body.objects = taskList;
                }
            }

            return(baseDataPickTask);
        }