|  |  |  | 
|---|
|  |  |  | using WIDESEA_IOutboundRepository; | 
|---|
|  |  |  | using WIDESEA_IStockRepository; | 
|---|
|  |  |  | using WIDESEA_Common.StockEnum; | 
|---|
|  |  |  | using WIDESEA_IBasicRepository; | 
|---|
|  |  |  | using WIDESEA_Common.WareHouseEnum; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace WIDESEA_StockService | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | private readonly SqlSugarClient _dbBase; | 
|---|
|  |  |  | private readonly IOutboundRepository _outboundRepository; | 
|---|
|  |  |  | private readonly IStockRepository  _stockRepository; | 
|---|
|  |  |  | private readonly IBasicRepository _basicRepository; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ProStockViewService(IUnitOfWorkManage unitOfWorkManage, IOutboundRepository outboundRepository, IStockRepository stockRepository) | 
|---|
|  |  |  | public ProStockViewService(IUnitOfWorkManage unitOfWorkManage, IOutboundRepository outboundRepository, IStockRepository stockRepository,IBasicRepository basicRepository) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | _unitOfWorkManage = unitOfWorkManage; | 
|---|
|  |  |  | _dbBase = unitOfWorkManage.GetDbClient(); | 
|---|
|  |  |  | _outboundRepository = outboundRepository; | 
|---|
|  |  |  | _stockRepository = stockRepository; | 
|---|
|  |  |  | _basicRepository = basicRepository; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public virtual PageGridData<ProStockViewDTO> GetPageData(PageDataOptions options) | 
|---|
|  |  |  | 
|---|
|  |  |  | sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.ProductVersion.Contains(searchParameters.Value))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.SpecifyVer).FirstLetterToLower()); | 
|---|
|  |  |  | if (searchParameters != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.SpecifyVer.Contains(searchParameters.Value))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | { | 
|---|
|  |  |  | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.LotNumber).FirstLetterToLower()); | 
|---|
|  |  |  | if (searchParameters != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.LotNumber.Contains(searchParameters.Value))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | ProStockId = b.Id, | 
|---|
|  |  |  | StockStatus = b.StockStatus, | 
|---|
|  |  |  | Details = b.proStockInfoDetails, | 
|---|
|  |  |  | SumStocks=b.proStockInfoDetails.Sum(x=>x.StockPcsQty) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //var pklist = sugarQueryable1.Where(b => b.LocationCode == "å¹³åºä½").Select(b => new StockViewDTO | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    LocationCode = b.LocationCode, | 
|---|
|  |  |  | //    Column = 0, | 
|---|
|  |  |  | //    WarehouseId = b.WarehouseId, | 
|---|
|  |  |  | //    CreateDate = b.CreateDate, | 
|---|
|  |  |  | //    Creater = b.Creater, | 
|---|
|  |  |  | //    Depth = 0, | 
|---|
|  |  |  | //    EnalbeStatus = EnableStatusEnum.Normal.ObjToInt(), | 
|---|
|  |  |  | //    Layer = 0, | 
|---|
|  |  |  | //    LocationName = "å¹³åºä½", | 
|---|
|  |  |  | //    LocationStatus = LocationStatusEnum.InStock.ObjToInt(), | 
|---|
|  |  |  | //    LocationType = LocationTypeEnum.Undefined.ObjToInt(), | 
|---|
|  |  |  | //    Modifier = b.Modifier, | 
|---|
|  |  |  | //    ModifyDate = b.ModifyDate, | 
|---|
|  |  |  | //    PalletCode = b.PalletCode, | 
|---|
|  |  |  | //    StockRemark = b.Remark, | 
|---|
|  |  |  | //    RoadwayNo = "å¹³åº", | 
|---|
|  |  |  | //    Row = 0, | 
|---|
|  |  |  | //    StockId = b.Id, | 
|---|
|  |  |  | //    StockStatus = b.StockStatus, | 
|---|
|  |  |  | //    Details = b.Details, | 
|---|
|  |  |  | //}); | 
|---|
|  |  |  | var pklist = sugarQueryable1.Where(b => b.LocationCode == "æåå¾
åè´§åº" || b.LocationCode == "æåå
è£
æ£è´§åº").Select(b => new ProStockViewDTO | 
|---|
|  |  |  | { | 
|---|
|  |  |  | ProStockAttribute = b.ProStockAttribute, | 
|---|
|  |  |  | LocationCode = b.LocationCode, | 
|---|
|  |  |  | WarehouseId = b.WarehouseId, | 
|---|
|  |  |  | CreateDate = b.CreateDate, | 
|---|
|  |  |  | Creater = b.Creater, | 
|---|
|  |  |  | LocationName = b.LocationCode, | 
|---|
|  |  |  | Modifier = b.Modifier, | 
|---|
|  |  |  | ModifyDate = b.ModifyDate, | 
|---|
|  |  |  | PalletCode = b.PalletCode, | 
|---|
|  |  |  | StockRemark = b.Remark, | 
|---|
|  |  |  | ProStockId = b.Id, | 
|---|
|  |  |  | StockStatus = b.StockStatus, | 
|---|
|  |  |  | Details = b.proStockInfoDetails, | 
|---|
|  |  |  | SumStocks = b.proStockInfoDetails.Sum(x => x.StockPcsQty) | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int totalCount = 0; | 
|---|
|  |  |  | int pktotalCount = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount); | 
|---|
|  |  |  | //stockViewDTOs.AddRange(pklist.ToPageList(options.Page, options.Rows, ref pktotalCount)); | 
|---|
|  |  |  | stockViewDTOs.AddRange(pklist.ToPageList(options.Page, options.Rows, ref pktotalCount)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | stockViewDTOs.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); | 
|---|
|  |  |  | x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct()); | 
|---|
|  |  |  | x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? ""; | 
|---|
|  |  |  | x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? ""; | 
|---|
|  |  |  | x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? ""; | 
|---|
|  |  |  | x.SaleOrder=  x.Details.FirstOrDefault()?.SaleOrder ?? ""; | 
|---|
|  |  |  | x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); | 
|---|
|  |  |  | x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct()); | 
|---|
|  |  |  | x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct()); | 
|---|
|  |  |  | x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? ""; | 
|---|
|  |  |  | x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? ""; | 
|---|
|  |  |  | x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? ""; | 
|---|
|  |  |  | x.SaleOrder=  x.Details.FirstOrDefault()?.SaleOrder ?? ""; | 
|---|
|  |  |  | x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | return new PageGridData<ProStockViewDTO>(totalCount + pktotalCount, stockViewDTOs); | 
|---|
|  |  |  | return new PageGridData<ProStockViewDTO>(totalCount + pktotalCount, stockViewDTOs.OrderByDescending(x=>x.CreateDate).ToList()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | options.Order = "desc"; | 
|---|
|  |  |  | options.Sort = "proStockId"; | 
|---|
|  |  |  | List<ProStockViewDTO> stockViewDTOs = new List<ProStockViewDTO>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => x.WarehouseType == WarehouseTypEnum.æå.ToString()); | 
|---|
|  |  |  | string where = string.Empty; | 
|---|
|  |  |  | ISugarQueryable<Dt_ProStockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_ProStockInfo>().Includes(x => x.proStockInfoDetails); | 
|---|
|  |  |  | if (!string.IsNullOrEmpty(options.Wheres)) | 
|---|
|  |  |  | 
|---|
|  |  |  | ProStockId = b.Id, | 
|---|
|  |  |  | StockStatus = b.StockStatus, | 
|---|
|  |  |  | Details = b.proStockInfoDetails, | 
|---|
|  |  |  | SumStocks = b.proStockInfoDetails.Sum(x => x.StockPcsQty), | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //var pklist = sugarQueryable1.Where(b => b.LocationCode == "å¹³åºä½").Select(b => new StockViewDTO | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); | 
|---|
|  |  |  | x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct()); | 
|---|
|  |  |  | x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct()); | 
|---|
|  |  |  | x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? ""; | 
|---|
|  |  |  | x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? ""; | 
|---|
|  |  |  | x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? ""; | 
|---|
|  |  |  | x.SaleOrder = x.Details.FirstOrDefault()?.SaleOrder ?? ""; | 
|---|
|  |  |  | x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? ""; | 
|---|
|  |  |  | x.StockRemark = warehouses.FirstOrDefault(v => v.WarehouseId == x.WarehouseId).WarehouseName; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | byte[] data = exporter.ExportAsByteArray(stockViewDTOs).Result; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | string fileName = "åºåè§å¾.xlsx"; | 
|---|
|  |  |  | string fileName = "æååºåè§å¾.xlsx"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | FileHelper.WriteFile(savePath, fileName, data); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Dt_ProOutOrderDetail outOrderDetail = _outboundRepository.ProOutOrderDetailRepository.QueryFirst(x => x.Id == orderId); | 
|---|
|  |  |  | Dt_ProOutOrder outOrder = _outboundRepository.ProOutOrderRepository.QueryFirst(x => x.Id == outOrderDetail.Id); | 
|---|
|  |  |  | if (outOrderDetail == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception($"æªæ¾å°åºåºåæç»"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return _stockRepository.ProStockInfoRepository.QueryTabs<Dt_ProStockInfo, Dt_ProStockInfoDetail, ProStockViewDTO>((a, b) => a.Id == b.ProStockId, (a, b) => new ProStockViewDTO | 
|---|
|  |  |  | List<ProStockViewDTO> stockViewDTOs = new List<ProStockViewDTO>(); | 
|---|
|  |  |  | ISugarQueryable<Dt_ProStockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_ProStockInfo>().Includes(x => x.proStockInfoDetails); | 
|---|
|  |  |  | var pklist = sugarQueryable1.Where(b => b.LocationCode == "æåå¾
åè´§åº" && b.StockStatus==StockStatusEmun.å¹³åºå
¥åºå®æ.ObjToInt() && (b.ShipmentOrder==null|| b.ShipmentOrder =="")).Where(x=>x.proStockInfoDetails.Any(v=>v.ProductCode== outOrderDetail.PCode)).Select(b => new ProStockViewDTO | 
|---|
|  |  |  | { | 
|---|
|  |  |  | LocationCode = a.LocationCode, | 
|---|
|  |  |  | ProductCode = b.ProductCode, | 
|---|
|  |  |  | ProStockAttribute = a.ProStockAttribute, | 
|---|
|  |  |  | ProductVersion=b.ProductVersion, | 
|---|
|  |  |  | DateCode=b.DateCode, | 
|---|
|  |  |  | ProStockId=a.Id, | 
|---|
|  |  |  | SumStocks=b.StockPcsQty, | 
|---|
|  |  |  | SaleOrder=b.SaleOrder, | 
|---|
|  |  |  | PalletCode = a.PalletCode | 
|---|
|  |  |  | }, a => a.LocationCode == "æåå¾
åè´§åº", b => b.ProductCode == outOrderDetail.PCode, x => true).GroupBy(x => x.PalletCode).Select(x => new ProStockViewDTO | 
|---|
|  |  |  | { | 
|---|
|  |  |  | LocationCode = x.FirstOrDefault()?.LocationCode ?? "", | 
|---|
|  |  |  | ProductCode = x.FirstOrDefault()?.ProductCode ?? "", | 
|---|
|  |  |  | ProductVersion = x.FirstOrDefault()?.ProductVersion ?? "", | 
|---|
|  |  |  | DateCode = x.FirstOrDefault()?.DateCode ?? "", | 
|---|
|  |  |  | ProStockId = x.FirstOrDefault().ProStockId, | 
|---|
|  |  |  | SumStocks=x.FirstOrDefault().SumStocks, | 
|---|
|  |  |  | SaleOrder = x.FirstOrDefault()?.SaleOrder ?? "", | 
|---|
|  |  |  | ProStockAttribute=x.FirstOrDefault()?.ProStockAttribute ?? 0, | 
|---|
|  |  |  | PalletCode = x.Key, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }).ToList(); | 
|---|
|  |  |  | ProStockAttribute = b.ProStockAttribute, | 
|---|
|  |  |  | LocationCode = b.LocationCode, | 
|---|
|  |  |  | WarehouseId = b.WarehouseId, | 
|---|
|  |  |  | CreateDate = b.CreateDate, | 
|---|
|  |  |  | Creater = b.Creater, | 
|---|
|  |  |  | LocationName = b.LocationCode, | 
|---|
|  |  |  | Modifier = b.Modifier, | 
|---|
|  |  |  | ModifyDate = b.ModifyDate, | 
|---|
|  |  |  | PalletCode = b.PalletCode, | 
|---|
|  |  |  | StockRemark = b.Remark, | 
|---|
|  |  |  | ProStockId = b.Id, | 
|---|
|  |  |  | StockStatus = b.StockStatus, | 
|---|
|  |  |  | Details = b.proStockInfoDetails, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | stockViewDTOs.AddRange(pklist.ToList()); | 
|---|
|  |  |  | stockViewDTOs.ForEach(x => | 
|---|
|  |  |  | { | 
|---|
|  |  |  | x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct()); | 
|---|
|  |  |  | x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct()); | 
|---|
|  |  |  | x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct()); | 
|---|
|  |  |  | x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? ""; | 
|---|
|  |  |  | x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? ""; | 
|---|
|  |  |  | x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? ""; | 
|---|
|  |  |  | x.SaleOrder = x.Details.FirstOrDefault()?.SaleOrder ?? ""; | 
|---|
|  |  |  | x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? ""; | 
|---|
|  |  |  | x.SumStocks = x.Details.Sum(x => x.StockPcsQty); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | return stockViewDTOs.OrderBy(x => x.DateCode).ThenBy(x => x.CreateDate).ToList(); | 
|---|
|  |  |  | //return _stockRepository.ProStockInfoRepository.QueryTabs<Dt_ProStockInfo, Dt_ProStockInfoDetail, ProStockViewDTO>((a, b) => a.Id == b.ProStockId, (a, b) => new ProStockViewDTO | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    LocationCode = a.LocationCode, | 
|---|
|  |  |  | //    ProductCode = b.ProductCode, | 
|---|
|  |  |  | //    ProStockAttribute = a.ProStockAttribute, | 
|---|
|  |  |  | //    ProductVersion=b.ProductVersion, | 
|---|
|  |  |  | //    DateCode=b.DateCode, | 
|---|
|  |  |  | //    ProStockId=a.Id, | 
|---|
|  |  |  | //    SumStocks=b.StockPcsQty, | 
|---|
|  |  |  | //    SaleOrder=b.SaleOrder, | 
|---|
|  |  |  | //    PalletCode = a.PalletCode, | 
|---|
|  |  |  | //    CreateDate=a.CreateDate, | 
|---|
|  |  |  | //    ERPOrder=b.ERPOrder, | 
|---|
|  |  |  | //    MoNumber=b.MoNumber | 
|---|
|  |  |  | //}, a => a.LocationCode == "æåå¾
åè´§åº", b => b.ProductCode == outOrderDetail.PCode, x => true).GroupBy(x => x.PalletCode).Select(x => new ProStockViewDTO | 
|---|
|  |  |  | //{ | 
|---|
|  |  |  | //    LocationCode = x.FirstOrDefault()?.LocationCode ?? "", | 
|---|
|  |  |  | //    ProductCode = x.FirstOrDefault()?.ProductCode ?? "", | 
|---|
|  |  |  | //    ProductVersion = x.FirstOrDefault()?.ProductVersion ?? "", | 
|---|
|  |  |  | //    DateCode = x.FirstOrDefault()?.DateCode ?? "", | 
|---|
|  |  |  | //    ProStockId = x.FirstOrDefault().ProStockId, | 
|---|
|  |  |  | //    SumStocks=x.FirstOrDefault().SumStocks, | 
|---|
|  |  |  | //    SaleOrder = x.FirstOrDefault()?.SaleOrder ?? "", | 
|---|
|  |  |  | //    ProStockAttribute=x.FirstOrDefault()?.ProStockAttribute ?? 0, | 
|---|
|  |  |  | //    PalletCode = x.Key, | 
|---|
|  |  |  | //    ERPOrder=x.FirstOrDefault()?.ERPOrder ?? "", | 
|---|
|  |  |  | //    MoNumber=x.FirstOrDefault()?.MoNumber ?? "", | 
|---|
|  |  |  | //    CreateDate=x.FirstOrDefault()?.CreateDate ?? new DateTime() | 
|---|
|  |  |  | //}).ToList(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|