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); }