public ActionResult GetBillDetail(LoadingAndLaborQueryView A, List <LaborAndLoading3QueryConditions> Businesstype, List <LaborAndLoading3QueryConditions> LodingType, List <LaborAndLoading3QueryConditions> Warehouseid, int billType)
        {
            if (billType == 0)//是否有单据类型
            {
                return(Content("没有单据类型!"));
            }
            LoadingExpensesBill bill = LoadingExpensesBillService.GetData(A, billType, Session["Power"].ToString().Trim(), Businesstype, LodingType, Warehouseid);

            return(Json(bill));
        }
        /// <summary>
        /// 根据条件查询单据信息(转仓单、退仓单、交货单、退货单、交货回执单)
        /// </summary>
        /// <param name="A"></param>
        /// <returns></returns>
        public LoadingExpensesBill GetData(LoadingAndLaborQueryView A, int billtype, string power, List <LaborAndLoading3QueryConditions> Businesstype, List <LaborAndLoading3QueryConditions> LodingType, List <LaborAndLoading3QueryConditions> Warehouseid)
        {
            LoadingExpensesBill bill = new LoadingExpensesBill();; //五个list合成一个返回

            if (!A.BackInput && A.BackInput && A.GiveBill && A.GiveBackBill && A.GiveBill)
            {
                return(bill);
            }
            else
            {
                if (A.TransferBill)//转仓单
                {
                    var transferbillList = CurrentDBSession.TransferBillDal.LoadEntities(a => a.ExamineDate != null);
                    if (string.IsNullOrWhiteSpace(A.Department2Id))
                    {
                        transferbillList = transferbillList.Where(a => power.Contains(a.DepartmentId));
                    }
                    else
                    {
                        transferbillList = transferbillList.Where(c => c.DepartmentId == A.Department2Id);
                    }
                    if (Businesstype != null)
                    {
                        string[] businesstype = new string[Businesstype.Count()];
                        int      i            = 0;
                        foreach (LaborAndLoading3QueryConditions item in Businesstype)
                        {
                            businesstype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        transferbillList = transferbillList.Where(c => businesstype.Contains(c.BusinessType));
                    }
                    if (LodingType != null)
                    {
                        string[] loadingtype = new string[LodingType.Count()];
                        int      i           = 0;
                        foreach (LaborAndLoading3QueryConditions item in LodingType)
                        {
                            loadingtype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        transferbillList = transferbillList.Where(c => loadingtype.Contains(c.LoadGoodsType));
                    }
                    if (Warehouseid != null)
                    {
                        int    counts           = Warehouseid.Count();
                        int?[] warehouseidArray = new int?[counts];
                        int    i = 0;
                        foreach (LaborAndLoading3QueryConditions item in Warehouseid)
                        {
                            warehouseidArray[i] = item.Id;
                            i++;
                        }
                        transferbillList = transferbillList.Where(c => warehouseidArray.Contains(c.WarehouseId));
                    }
                    if (A.dateStart != null)
                    {
                        transferbillList = transferbillList.Where(c => c.ExamineDate >= A.dateStart);
                    }
                    if (A.dateEnd != null)
                    {
                        A.dateEnd        = A.dateEnd.AddDays(1);
                        transferbillList = transferbillList.Where(c => c.ExamineDate < A.dateEnd);
                    }
                    if (transferbillList != null)
                    {
                        foreach (TransferBill item in transferbillList)
                        {
                            foreach (Record record in item.Record)
                            {
                                LoadingAndLaborCostDetail detail = new LoadingAndLaborCostDetail();
                                detail.ListType           = "转仓单";
                                detail.BillCode           = item.BillCode;
                                detail.BillExamineDate    = item.ExamineDate;
                                detail.Company            = item.Company;
                                detail.CompanyId          = item.CompanyId;
                                detail.Department         = item.Department;
                                detail.DepartmentId       = item.DepartmentId;
                                detail.Warehouse          = record.Warehouse;
                                detail.WarehouseId        = record.WarehouseId;
                                detail.BusinessType       = item.BusinessType;
                                detail.LoadingType        = item.LoadGoodsType;
                                detail.ItemCode           = record.ItemCode;
                                detail.ItemLine           = record.ItemLine;
                                detail.ItemName           = record.ItemName;
                                detail.ItemBatch          = record.ItemBatch;
                                detail.ItemSpecifications = record.ItemSpecifications;
                                detail.ItemUnit           = record.ItemUnit;
                                detail.Count      = record.Count;
                                detail.UnitWeight = Convert.ToDouble(record.UnitWeight);
                                detail.Weight     = record.Weight;
                                bill.LoadingAndLaborCostDetail.Add(detail);
                            }
                        }
                    }
                }
                if (A.BackInput)//退仓单
                {
                    var BackInputList = CurrentDBSession.BackInputDal.LoadEntities(a => a.ExamineDate != null);
                    if (string.IsNullOrWhiteSpace(A.Department2Id))
                    {
                        BackInputList = BackInputList.Where(a => power.Contains(a.DepartmentId));
                    }
                    else
                    {
                        BackInputList = BackInputList.Where(c => c.DepartmentId == A.Department2Id);
                    }
                    if (Businesstype != null)
                    {
                        string[] businesstype = new string[Businesstype.Count];
                        int      i            = 0;
                        foreach (LaborAndLoading3QueryConditions item in Businesstype)
                        {
                            businesstype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        BackInputList = BackInputList.Where(c => businesstype.Contains(c.BusinessType));
                    }
                    if (LodingType != null)
                    {
                        string[] loadingtype = new string[LodingType.Count];
                        int      i           = 0;
                        foreach (LaborAndLoading3QueryConditions item in LodingType)
                        {
                            loadingtype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        BackInputList = BackInputList.Where(c => loadingtype.Contains(c.LoadGoodsType));
                    }
                    if (Warehouseid != null)
                    {
                        int    counts           = Warehouseid.Count;
                        int?[] warehouseidArray = new int?[counts];
                        int    i = 0;
                        foreach (LaborAndLoading3QueryConditions item in Warehouseid)
                        {
                            warehouseidArray[i] = item.Id;
                            i++;
                        }
                        BackInputList = BackInputList.Where(c => warehouseidArray.Contains(c.WarehouseId));
                    }
                    if (A.dateStart != null)
                    {
                        BackInputList = BackInputList.Where(c => c.ExamineDate >= A.dateStart);
                    }
                    if (A.dateEnd != null)
                    {
                        A.dateEnd     = A.dateEnd.AddDays(1);
                        BackInputList = BackInputList.Where(c => c.ExamineDate < A.dateEnd);
                    }
                    if (BackInputList != null)
                    {
                        foreach (BackInput item in BackInputList)
                        {
                            foreach (Record record in item.Record)
                            {
                                LoadingAndLaborCostDetail detail = new LoadingAndLaborCostDetail();
                                detail.ListType           = "退仓单";
                                detail.BillCode           = item.BillCode;
                                detail.BillExamineDate    = item.ExamineDate;
                                detail.Company            = item.Company;
                                detail.CompanyId          = item.CompanyId;
                                detail.Department         = item.Department;
                                detail.DepartmentId       = item.DepartmentId;
                                detail.Warehouse          = record.Warehouse;
                                detail.WarehouseId        = record.WarehouseId;
                                detail.BusinessType       = item.BusinessType;
                                detail.LoadingType        = item.LoadGoodsType;
                                detail.ItemCode           = record.ItemCode;
                                detail.ItemLine           = record.ItemLine;
                                detail.ItemName           = record.ItemName;
                                detail.ItemBatch          = record.ItemBatch;
                                detail.ItemSpecifications = record.ItemSpecifications;
                                detail.ItemUnit           = record.ItemUnit;
                                detail.Count      = record.Count;
                                detail.UnitWeight = Convert.ToDouble(record.UnitWeight);
                                detail.Weight     = record.Weight;
                                bill.LoadingAndLaborCostDetail.Add(detail);
                            }
                        }
                    }
                }
                if (A.GiveBill)//交货单
                {
                    var GiveBillList = CurrentDBSession.GiveBillDal.LoadEntities(a => a.ExamineDate != null);
                    if (string.IsNullOrWhiteSpace(A.Department2Id))
                    {
                        GiveBillList = GiveBillList.Where(a => power.Contains(a.DepartmentId));
                    }
                    else
                    {
                        GiveBillList = GiveBillList.Where(c => c.DepartmentId == A.Department2Id);
                    }
                    if (Businesstype != null)
                    {
                        string[] businesstype = new string[Businesstype.Count];
                        int      i            = 0;
                        foreach (LaborAndLoading3QueryConditions item in Businesstype)
                        {
                            businesstype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => businesstype.Contains(c.BusinessType));
                    }
                    if (LodingType != null)
                    {
                        string[] loadingtype = new string[LodingType.Count];
                        int      i           = 0;
                        foreach (LaborAndLoading3QueryConditions item in LodingType)
                        {
                            loadingtype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => loadingtype.Contains(c.LoadGoodsType));
                    }
                    if (Warehouseid != null)
                    {
                        int    counts           = Warehouseid.Count;
                        int?[] warehouseidArray = new int?[counts];
                        int    i = 0;
                        foreach (LaborAndLoading3QueryConditions item in Warehouseid)
                        {
                            warehouseidArray[i] = item.Id;
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => warehouseidArray.Contains(c.WarehouseId));
                    }
                    if (A.dateStart != null)
                    {
                        GiveBillList = GiveBillList.Where(c => c.ExamineDate >= A.dateStart);
                    }
                    if (A.dateEnd != null)
                    {
                        A.dateEnd    = A.dateEnd.AddDays(1);
                        GiveBillList = GiveBillList.Where(c => c.ExamineDate < A.dateEnd);
                    }
                    if (GiveBillList != null)
                    {
                        foreach (GiveBill item in GiveBillList)
                        {
                            foreach (Record record in item.Record)
                            {
                                LoadingAndLaborCostDetail detail = new LoadingAndLaborCostDetail();
                                detail.ListType           = "交货单";
                                detail.BillCode           = item.BillCode;
                                detail.BillExamineDate    = item.ExamineDate;
                                detail.Company            = item.Company;
                                detail.CompanyId          = item.CompanyId;
                                detail.Department         = item.Department;
                                detail.DepartmentId       = item.DepartmentId;
                                detail.Warehouse          = record.Warehouse;
                                detail.WarehouseId        = record.WarehouseId;
                                detail.BusinessType       = item.BusinessType;
                                detail.LoadingType        = item.LoadGoodsType;
                                detail.ItemCode           = record.ItemCode;
                                detail.ItemLine           = record.ItemLine;
                                detail.ItemBatch          = record.ItemBatch;
                                detail.ItemName           = record.ItemName;
                                detail.ItemSpecifications = record.ItemSpecifications;
                                detail.ItemUnit           = record.ItemUnit;
                                detail.Count      = record.Count;
                                detail.UnitWeight = Convert.ToDouble(record.UnitWeight);
                                detail.Weight     = record.Weight;
                                bill.LoadingAndLaborCostDetail.Add(detail);
                            }
                        }
                    }
                }
                if (A.BackOutput)//退货单
                {
                    var BackOutputList = CurrentDBSession.BackOutputDal.LoadEntities(a => a.ExamineDate != null);
                    if (string.IsNullOrWhiteSpace(A.Department2Id))
                    {
                        BackOutputList = BackOutputList.Where(a => power.Contains(a.DepartmentId));
                    }
                    else
                    {
                        BackOutputList = BackOutputList.Where(c => c.DepartmentId == A.Department2Id);
                    }
                    if (Businesstype != null)
                    {
                        string[] businesstype = new string[Businesstype.Count];
                        int      i            = 0;
                        foreach (LaborAndLoading3QueryConditions item in Businesstype)
                        {
                            businesstype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        BackOutputList = BackOutputList.Where(c => businesstype.Contains(c.BusinessType));
                    }
                    if (LodingType != null)
                    {
                        string[] loadingtype = new string[LodingType.Count];
                        int      i           = 0;
                        foreach (LaborAndLoading3QueryConditions item in LodingType)
                        {
                            loadingtype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        BackOutputList = BackOutputList.Where(c => loadingtype.Contains(c.LoadGoodsType));
                    }
                    if (Warehouseid != null)
                    {
                        int    counts           = Warehouseid.Count;
                        int?[] warehouseidArray = new int?[counts];
                        int    i = 0;
                        foreach (LaborAndLoading3QueryConditions item in Warehouseid)
                        {
                            warehouseidArray[i] = item.Id;
                            i++;
                        }
                        BackOutputList = BackOutputList.Where(c => warehouseidArray.Contains(c.WarehouseId));
                    }
                    if (A.dateStart != null)
                    {
                        BackOutputList = BackOutputList.Where(c => c.ExamineDate >= A.dateStart);
                    }
                    if (A.dateEnd != null)
                    {
                        A.dateEnd      = A.dateEnd.AddDays(1);
                        BackOutputList = BackOutputList.Where(c => c.ExamineDate < A.dateEnd);
                    }
                    if (BackOutputList != null)
                    {
                        foreach (BackOutput item in BackOutputList)
                        {
                            foreach (Record record in item.Record)
                            {
                                LoadingAndLaborCostDetail detail = new LoadingAndLaborCostDetail();
                                detail.ListType           = "退货单";
                                detail.BillCode           = item.BillCode;
                                detail.BillExamineDate    = item.ExamineDate;
                                detail.Company            = item.Company;
                                detail.CompanyId          = item.CompanyId;
                                detail.Department         = item.Department;
                                detail.DepartmentId       = item.DepartmentId;
                                detail.Warehouse          = record.Warehouse;
                                detail.WarehouseId        = record.WarehouseId;
                                detail.BusinessType       = item.BusinessType;
                                detail.LoadingType        = item.LoadGoodsType;
                                detail.ItemCode           = record.ItemCode;
                                detail.ItemLine           = record.ItemLine;
                                detail.ItemName           = record.ItemName;
                                detail.ItemBatch          = record.ItemBatch;
                                detail.ItemSpecifications = record.ItemSpecifications;
                                detail.ItemUnit           = record.ItemUnit;
                                detail.Count      = record.Count;
                                detail.UnitWeight = Convert.ToDouble(record.UnitWeight);
                                detail.Weight     = record.Weight;
                                bill.LoadingAndLaborCostDetail.Add(detail);
                            }
                        }
                    }
                }
                if (A.GiveBackBill)//交货回执单
                {
                    var GiveBillList = CurrentDBSession.GiveBillDal.LoadEntities(a => a.ExamineDate != null);
                    if (string.IsNullOrWhiteSpace(A.Department2Id))
                    {
                        GiveBillList = GiveBillList.Where(a => power.Contains(a.DepartmentId));
                    }
                    else
                    {
                        GiveBillList = GiveBillList.Where(c => c.DepartmentId == A.Department2Id);
                    }
                    if (Businesstype != null)
                    {
                        string[] businesstype = new string[Businesstype.Count];
                        int      i            = 0;
                        foreach (LaborAndLoading3QueryConditions item in Businesstype)
                        {
                            businesstype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => businesstype.Contains(c.BusinessType));
                    }
                    if (LodingType != null)
                    {
                        string[] loadingtype = new string[LodingType.Count];
                        int      i           = 0;
                        foreach (LaborAndLoading3QueryConditions item in LodingType)
                        {
                            loadingtype[i] = item.Name.ToString().Trim();
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => loadingtype.Contains(c.LoadGoodsType));
                    }
                    if (Warehouseid != null)
                    {
                        int    counts           = Warehouseid.Count;
                        int?[] warehouseidArray = new int?[counts];
                        int    i = 0;
                        foreach (LaborAndLoading3QueryConditions item in Warehouseid)
                        {
                            warehouseidArray[i] = item.Id;
                            i++;
                        }
                        GiveBillList = GiveBillList.Where(c => warehouseidArray.Contains(c.WarehouseId));
                    }
                    if (A.dateStart != null)
                    {
                        GiveBillList = GiveBillList.Where(c => c.ExamineDate >= A.dateStart);
                    }
                    if (A.dateEnd != null)
                    {
                        A.dateEnd    = A.dateEnd.AddDays(1);
                        GiveBillList = GiveBillList.Where(c => c.ExamineDate < A.dateEnd);
                    }
                    if (GiveBillList != null)
                    {
                        foreach (GiveBill item in GiveBillList)
                        {
                            foreach (Record record in item.Record)
                            {
                                if (!string.IsNullOrWhiteSpace(record.ReceiveCount.ToString().Trim()) && !string.IsNullOrWhiteSpace(record.ReceiveWeight.ToString().Trim()))
                                {
                                    LoadingAndLaborCostDetail detail = new LoadingAndLaborCostDetail();
                                    detail.ListType           = "交货回执单";
                                    detail.BillCode           = item.BillCode;
                                    detail.BillExamineDate    = item.ExamineDate;
                                    detail.Company            = item.Company;
                                    detail.CompanyId          = item.CompanyId;
                                    detail.Department         = item.Department;
                                    detail.DepartmentId       = item.DepartmentId;
                                    detail.Warehouse          = record.Warehouse;
                                    detail.WarehouseId        = record.WarehouseId;
                                    detail.BusinessType       = item.BusinessType;
                                    detail.LoadingType        = item.LoadGoodsType;
                                    detail.ItemCode           = record.ItemCode;
                                    detail.ItemLine           = record.ItemLine;
                                    detail.ItemName           = record.ItemName;
                                    detail.ItemBatch          = record.ItemBatch;
                                    detail.ItemSpecifications = record.ItemSpecifications;
                                    detail.ItemUnit           = record.ItemUnit;
                                    detail.Count      = record.ReceiveCount;
                                    detail.UnitWeight = Convert.ToDouble(record.UnitWeight);
                                    detail.Weight     = record.ReceiveWeight;
                                    bill.LoadingAndLaborCostDetail.Add(detail);
                                }
                            }
                        }
                    }
                }
                switch (billtype)
                {
                case 1:      //装卸费应收
                    var list1 = CurrentDBSession.CostUnitListDetailDal.LoadEntities(a => a.RecordType == 2 && a.ExamineDate != null && a.CostItemCode.Trim() == "60010303" && a.CostItemName.Trim() == "装卸收入");
                    foreach (LoadingAndLaborCostDetail item in bill.LoadingAndLaborCostDetail)
                    {
                        item.CostItemCode = "60010303";    //装卸费  费用项目和编号只有一个写死
                        item.CostItemName = "装卸收入";
                        var temp = list1.Where(a => a.BuniessTypeName == item.BusinessType && a.LoadGoodsTypeName == item.LoadingType && (a.ItemLineName == null || a.ItemLineName == item.ItemLine)).OrderByDescending(a => a.ItemLineName).FirstOrDefault();
                        if (temp != null)
                        {
                            item.CostItemCode     = temp.CostItemCode;
                            item.CostItemName     = temp.CostItemName;
                            item.LoadingUnitPrice = temp.UnitPrice;
                            item.AllAmount        = item.Weight * item.LoadingUnitPrice / 1000;
                        }
                    }
                    break;

                case 2:    //装卸费成本

                    var list2 = CurrentDBSession.CostUnitListDetailDal.LoadEntities(a => a.RecordType == 1 && a.ExamineDate != null && a.CostItemCode.Trim() == "6401080105" && a.CostItemName.Trim() == "人工成本-装卸费");
                    foreach (LoadingAndLaborCostDetail item in bill.LoadingAndLaborCostDetail)
                    {
                        item.CostItemCode = "6401080105";    //装卸费  费用项目和编号只有一个写死
                        item.CostItemName = "人工成本-装卸费";
                        var temp = list2.Where(a => a.BuniessTypeName == item.BusinessType && a.LoadGoodsTypeName == item.LoadingType && (a.ItemLineName == null || a.ItemLineName == item.ItemLine)).OrderByDescending(a => a.ItemLineName).FirstOrDefault();
                        if (temp != null)
                        {
                            item.CostItemCode     = temp.CostItemCode;
                            item.CostItemName     = temp.CostItemName;
                            item.LoadingUnitPrice = temp.UnitPrice;
                            item.AllAmount        = item.Weight * item.LoadingUnitPrice / 1000;
                        }
                    }
                    break;

                case 3:     //力资费应收

                    var list3 = CurrentDBSession.CostUnitListDetailDal.LoadEntities(a => a.RecordType == 2 && a.ExamineDate != null && a.CostItemCode.Trim() == "60010302" && a.CostItemName.Trim() == "力资费收入");
                    foreach (LoadingAndLaborCostDetail item in bill.LoadingAndLaborCostDetail)
                    {
                        item.CostItemCode = "60010302";    //装卸费  费用项目和编号只有一个写死
                        item.CostItemName = "力资费收入";
                        var temp = list3.Where(a => a.BuniessTypeName == item.BusinessType && a.LoadGoodsTypeName == item.LoadingType && (a.ItemLineName == null || a.ItemLineName == item.ItemLine)).OrderByDescending(a => a.ItemLineName).FirstOrDefault();
                        if (temp != null)
                        {
                            item.CostItemCode   = temp.CostItemCode;
                            item.CostItemName   = temp.CostItemName;
                            item.LaborUnitPrice = temp.UnitPrice;
                            item.AllAmount      = item.Weight * item.LaborUnitPrice / 1000;
                        }
                    }
                    break;
                }
            }
            return(bill);
        }