wangxinhui
2025-04-29 95e39ae7aecd6e1016c71cf5ae70a680d8f569bb
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs
@@ -20,6 +20,8 @@
using WIDESEA_IOutboundRepository;
using WIDESEA_IStockRepository;
using WIDESEA_Common.StockEnum;
using WIDESEA_IBasicRepository;
using WIDESEA_Common.WareHouseEnum;
namespace WIDESEA_StockService
{
@@ -29,13 +31,15 @@
        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)
@@ -104,50 +108,45 @@
                        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.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)
            {
@@ -192,7 +191,7 @@
                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))
@@ -253,6 +252,8 @@
                        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
@@ -289,12 +290,13 @@
                    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);
@@ -358,35 +360,71 @@
            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.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)
            {