public void TestGetWarehouse()
 {
     try
     {
         _warehouse.GetWarehouse(new Guid("84B303F5-2AA6-437D-9D23-3488AD55D278"));
     }
     catch (Exception ex)
     {
         Assert.IsTrue(!string.IsNullOrEmpty(ex.Message));
     }
 }
        public void RunFinish(DateTime finishDate, Guid personnelId, string operationer, Guid warehouseId, Guid expressId)
        {
            var taskDate = GetTaskDate(finishDate);
            var isFinish = DAL.OrderDao.ExistsFinish(warehouseId);

            while (!isFinish)
            {
                ERP.SAL.LogCenter.LogService.Log(LogCenter.Logger.LogLevel.Info, "任务还在继续...", "完成订单", new LogCenter.Logger.Models.MethodInfo("CompleteOrderTask.Core", "CompleteFristTask", "RunFinish"), finishDate, personnelId, operationer, warehouseId, expressId);
                Thread.Sleep(60000);
                isFinish = DAL.OrderDao.ExistsFinish(warehouseId);
            }
            var taskId = DAL.OrderDao.GetTaskId(taskDate, warehouseId, expressId);

            if (taskId == Guid.Empty)
            {
                taskId = Guid.NewGuid();
                DAL.OrderDao.AddTask(taskId, taskDate, warehouseId, expressId, operationer);
            }

            var warehouseInfo     = _warehouseManager.GetWarehouse(warehouseId);
            var memberCompanyInfo = _companyCussent.GetMemberGeneralLedger();

            if (warehouseInfo != null)
            {
                WriteLog(taskId,
                         "=================================================================================================");
                WriteLog(taskId, ">> 仓库:" + warehouseInfo.WarehouseName + ",开始进行完成订单任务");
                if (memberCompanyInfo == null)
                {
                    WriteLog(taskId, ">> 尚未绑定会员往来账,不允许发货处理!");
                }
                else
                {
                    var filiales = _filialeList.Where(ent => ent.Rank == (int)FilialeRank.Head && (ent.Type == (int)FilialeType.SaleCompany || ent.Type == (int)FilialeType.EntityShop));
                    foreach (var filialeInfo in filiales)
                    {
                        var fInfo = filialeInfo;
                        var count = DAL.OrderDao.CountByState((int)OrderState.WaitConsignmented, expressId, filialeInfo.ID);
                        if (expressId == Guid.Empty)
                        {
                            WriteLog(taskId, ">> 销售公司:" + filialeInfo.Name + ",待发货数:" + count);
                        }
                        else
                        {
                            var expressInfo = _express.GetExpress(expressId);
                            WriteLog(taskId, ">> 销售公司:" + filialeInfo.Name + ",快递公司:" + expressInfo.ExpressName + ",待发货数:" + count);
                        }
                        int s = 0; //成功数
                        int f = 0; //失败数量
                        IList <GoodsOrderInfo> orderList = DAL.OrderDao.GetOrderListByState((int)OrderState.WaitConsignmented,
                                                                                            expressId, filialeInfo.ID, warehouseId);
                        foreach (GoodsOrderInfo goodsOrderInfo in orderList)
                        {
                            var    orderInfo = goodsOrderInfo;
                            string errorMsg;
                            var    success = _orderManager.JoinWaitConsignmentOrder(personnelId, orderInfo, operationer, out errorMsg);
                            if (success)
                            {
                                s++;
                            }
                            else
                            {
                                WriteLog(taskId, ">> 销售公司:" + fInfo.Name + ",订单号:" + orderInfo.OrderNo + ",完成订单发生异常," + errorMsg);
                                f++;
                            }
                        }
                        WriteLog(taskId, ">> 销售公司:" + filialeInfo.Name + "成功完成订单:" + s + ",失败:" + f + "----------------");
                    }
                    DAL.OrderDao.FinishOver(taskId, warehouseId, expressId);
                }
            }
        }