public AuditOrderListModel GetAuditFltOrderList(AuditFltOrderListQueryModel query)
        {
            AuditOrderListModel result = new AuditOrderListModel {
                DataList = new List <AuditOrderListDataModel>()
            };

            if (!query.IsAudit)//待审核信息
            {
                List <AuditOrderListDataModel> fltList = _getAuditFltOrderListBll.GetAuditFltOrderList(query);
                List <AuditOrderListDataModel> modList = _getAuditFltModApplyListBll.GetAuditFltOrderList(query);
                List <AuditOrderListDataModel> retList = _getAuditFltRetApplyListBll.GetAuditFltOrderList(query);
                if (fltList != null && fltList.Count > 0)
                {
                    result.DataList.AddRange(fltList);
                }
                if (modList != null && modList.Count > 0)
                {
                    result.DataList.AddRange(modList);
                }
                if (retList != null && retList.Count > 0)
                {
                    result.DataList.AddRange(retList);
                }
            }
            else//已审核信息
            {
                List <AuditOrderListDataModel> fltList = _getAuditFltOrderListBll.GetAlreadyAuditFltOrderList(query);
                List <AuditOrderListDataModel> modList = _getAuditFltModApplyListBll.GetAlreadyAuditFltOrderList(query);
                List <AuditOrderListDataModel> retList = _getAuditFltRetApplyListBll.GetAlreadyAuditFltOrderList(query);
                if (fltList != null && fltList.Count > 0)
                {
                    result.DataList.AddRange(fltList);
                }
                if (modList != null && modList.Count > 0)
                {
                    result.DataList.AddRange(modList);
                }
                if (retList != null && retList.Count > 0)
                {
                    result.DataList.AddRange(retList);
                }

                //result.DataList = result.DataList.OrderByDescending(n => n.AuditTime).ToList();
            }

            return(result);
        }
        public GetAuditOrderListResponseViewModel GetAuditOrderList(GetAuditOrderListRequestViewModel request)
        {
            //1.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            if (string.IsNullOrEmpty(customerModel.IsCheckPerson) || customerModel.IsCheckPerson.ToUpper() != "T")
            {
                throw new Exception("当前用户无权审批");
            }



            AuditOrderListModel list = null;

            if (request.AuditType == 1)//待审批信息
            {
                #region 待审批信息

                list = _getCorpAduitOrderListServiceBll.GetWaitCorpAduitOrderList(new AuditOrderListQueryModel()
                {
                    AuditCid  = request.Cid,
                    PageSize  = request.PageSize,
                    PageIndex = request.PageIndex,
                    Customer  = customerModel
                });

                #endregion
            }
            else if (request.AuditType == 2)//审批通过
            {
                #region 审批通过
                list = _getCorpAduitOrderListServiceBll.GetPassCorpAduitOrderList(new AuditOrderListQueryModel()
                {
                    AuditCid  = request.Cid,
                    PageSize  = request.PageSize,
                    PageIndex = request.PageIndex,
                    Customer  = customerModel
                });
                #endregion
            }
            else if (request.AuditType == 3)//审批不通过
            {
                #region 审批不通过
                list = _getCorpAduitOrderListServiceBll.GetNoPassCorpAduitOrderList(new AuditOrderListQueryModel()
                {
                    AuditCid  = request.Cid,
                    PageSize  = request.PageSize,
                    PageIndex = request.PageIndex,
                    Customer  = customerModel
                });
                #endregion
            }



            #region 组装审批内容
            if (list != null && list.DataList != null && list.DataList.Count > 0)
            {
                //查询机场信息
                _getFltOrderBll.AportInfo = _getCityForFlightServiceBll.SearchAirport(new List <string>()
                {
                    "N"
                });
                _getFlightRetModApplyBll.AportInfo = _getCityForFlightServiceBll.SearchAirport(new List <string>()
                {
                    "N"
                });
                //调用查询该客户的差旅政策服务
                List <ChoiceReasonModel> reasonModels = _getCustomerCorpPolicyServiceBll.GetCorpReasonByCorpId(customerModel.CorpID);
                _getFlightRetModApplyBll.PolicyReasonList = reasonModels;

                foreach (var data in list.DataList)
                {
                    foreach (var detail in data.DetailList)
                    {
                        if (detail.OrderType == OrderSourceTypeEnum.Flt)
                        {
                            FltOrderInfoModel fltOrderInfoModel = _getFltOrderBll.GetFltOrderById(detail.OrderId);
                            if (fltOrderInfoModel == null)
                            {
                                continue;
                            }
                            detail.ChoiceReason      = fltOrderInfoModel.ChoiceReason;
                            detail.CorpPolicy        = fltOrderInfoModel.CorpPolicy;
                            detail.OrderAmount       = fltOrderInfoModel.Payamount;
                            detail.PassengerNameList = fltOrderInfoModel.PassengerNameList;
                            detail.TackOffTimeList   = fltOrderInfoModel.TackOffTimeList;
                            detail.TravelList        = fltOrderInfoModel.TravelList;
                            detail.OrderIdDes        = fltOrderInfoModel.OrderId.ToString();
                        }
                        else if (detail.OrderType == OrderSourceTypeEnum.FltModApply || detail.OrderType == OrderSourceTypeEnum.FltRetApply)
                        {
                            FltRetModApplyModel fltRetModApplyModel =
                                _getFlightRetModApplyBll.GetRetModApply(detail.OrderId);
                            if (fltRetModApplyModel == null)
                            {
                                continue;
                            }
                            detail.ChoiceReason      = fltRetModApplyModel.ChoiceReason;
                            detail.CorpPolicy        = fltRetModApplyModel.CorpPolicy;
                            detail.OrderAmount       = fltRetModApplyModel.TotalAuditPrice;
                            detail.PassengerNameList = fltRetModApplyModel.PassengerNameList;
                            detail.TackOffTimeList   = fltRetModApplyModel.TackOffTimeList;
                            detail.TravelList        = fltRetModApplyModel.TravelList;
                            detail.OrderIdDes        = fltRetModApplyModel.OrderId.ToString();
                        }
                        else if (detail.OrderType == OrderSourceTypeEnum.Tra)
                        {
                            TraOrderInfoModel traOrderInfoModel =
                                _getTraOrderServiceBll.GetTraOrderByOrderId(detail.OrderId);
                            if (traOrderInfoModel == null)
                            {
                                continue;
                            }
                            detail.ChoiceReason      = traOrderInfoModel.ChoiceReason;
                            detail.CorpPolicy        = traOrderInfoModel.CorpPolicy;
                            detail.OrderAmount       = traOrderInfoModel.Order.TotalMoney;
                            detail.PassengerNameList = traOrderInfoModel.PassengerNameList;
                            detail.TackOffTimeList   = traOrderInfoModel.TackOffTimeList;
                            detail.TravelList        = traOrderInfoModel.TravelList;
                            detail.OrderIdDes        = traOrderInfoModel.Order.OrderId.ToString();
                        }
                    }
                }
            }
            #endregion


            GetAuditOrderListResponseViewModel responseViewModel =
                Mapper.Map <AuditOrderListModel, GetAuditOrderListResponseViewModel>(list);
            return(responseViewModel);
        }
        /// <summary>
        /// 获取待审批信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public AuditOrderListModel GetWaitCorpAduitOrderList(AuditOrderListQueryModel query)
        {
            AuditOrderListModel resultModel = new AuditOrderListModel();

            #region 分页查询
            var select = from aduitOrder in Context.Set <CorpAduitOrderEntity>().AsNoTracking()
                         join
                         flow in Context.Set <CorpAduitOrderFlowEntity>().AsNoTracking()
                         on new { AduitOrderId = aduitOrder.AduitOrderId, CurrentFlow = aduitOrder.CurrentFlow } equals
            new { AduitOrderId = flow.AduitOrderId, CurrentFlow = flow.Flow }
            into a
            from flow in a.DefaultIfEmpty()
            where aduitOrder.CurrentFlow > 0 && flow.FlowCid == query.AuditCid && !flow.DealResult.HasValue &&
            aduitOrder.Status != 7 && aduitOrder.Status != 6 && (aduitOrder.IsDel ?? 0) == 0
            select new AuditOrderListDataModel()
            {
                Id              = aduitOrder.AduitOrderId,
                AuditStatusInt  = aduitOrder.Status,
                CurrentAuditCid = flow.FlowCid,
                CreateTime      = aduitOrder.CreateTime,
                CurrentFlow     = aduitOrder.CurrentFlow
            };

            if (query.AllowShowDataBeginTime.HasValue)
            {
                select = select.Where(n => n.CreateTime > query.AllowShowDataBeginTime.Value);
            }

            resultModel.TotalCount = select.Count();//查询所有结果的数量
            select =
                select.OrderByDescending(n => n.CreateTime).Skip(query.PageSize * (query.PageIndex - 1)).Take(query.PageSize);
            resultModel.DataList = select.ToList();//分页结果
            if (resultModel.DataList == null || resultModel.DataList.Count == 0)
            {
                return(resultModel);
            }

            #endregion

            List <int> aduitOrderIdList = new List <int>();
            resultModel.DataList.ForEach(n =>
            {
                aduitOrderIdList.Add(n.Id);
            });

            List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                    n => aduitOrderIdList.Contains(n.AduitOrderId),
                    true).ToList();

            List <AuditOrderDetailModel> auditOrderDetailModels = new List <AuditOrderDetailModel>();
            foreach (var detail in corpAduitOrderDetailEntities)
            {
                AuditOrderDetailModel model = new AuditOrderDetailModel()
                {
                    OrderId   = detail.OrderId,
                    Id        = detail.AduitOrderId,
                    OrderType = detail.OrderType.ValueToEnum <OrderSourceTypeEnum>()
                };
                auditOrderDetailModels.Add(model);
            }

            foreach (var aduitOrder in resultModel.DataList)
            {
                aduitOrder.DetailList = auditOrderDetailModels.FindAll(n => n.Id == aduitOrder.Id);
            }

            return(resultModel);
        }