dengjunjie
2025-04-26 18d2f40bbf40469b033de6f07ca8a8e3bc191132
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -34,6 +34,44 @@
            return stockInfo;
        }
        /// <summary>
        /// æ·»åŠ ç©ºæ‰˜ç›˜ç»„ç›˜ä¿¡æ¯
        /// </summary>
        /// <returns></returns>
        public WebResponseContent AddStockEmpty(string palletCode)
        {
            try
            {
                Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == "Empty000");
                if (materielInfo == null) throw new Exception($"未找到空托盘信息,物料编号【Empty000】");
                Dt_StockInfo stockInfo = new Dt_StockInfo()
                {
                    PalletCode = palletCode,
                    StockStatus = StockStatusEmun.入库确认.ObjToInt(),
                    Creater = "System",
                    Details = new List<Dt_StockInfoDetail>()
                };
                Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
                {
                    Status = StockStatusEmun.入库确认.ObjToInt(),
                    OrderNo = DateTime.Now.ToString("yyMMdd"),
                    StockId = stockInfo.Id != 0 ? stockInfo.Id : 0,
                    MaterielName = materielInfo.MaterielName,
                    MaterielCode = materielInfo.MaterielCode,
                    BatchNo = DateTime.Now.ToString("yyMMdd") + "E",
                    StockQuantity = 1,
                    SerialNumber = "",
                    Creater = "System"
                };
                stockInfo.Details.Add(stockInfoDetail);
                AddMaterielGroup(stockInfo);
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// æ·»åŠ ç»„ç›˜/库存信息
        /// </summary>
        /// <returns></returns>
@@ -166,25 +204,48 @@
            {
                //Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materielCode);
                //if (materielInfo == null) throw new Exception($"未找到物料信息");
                return BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, StockSelectViewDTO>((a, b) => a.Id == b.StockId, (a, b) => new StockSelectViewDTO
                int i = 1;
                List<StockSelectViewDTO> stockSelectViewDTOs = new List<StockSelectViewDTO>();
                var StockSelectViewDTOs = BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, StockSelectViewDTO>((a, b) => a.Id == b.StockId, (a, b) => new StockSelectViewDTO
                {
                    LocationCode = a.LocationCode,
                    MaterielCode = b.MaterielCode,
                    MaterielName = b.MaterielName,
                    PalletCode = a.PalletCode,
                    OrderNo = b.OrderNo,
                    InDate = a.InDate,
                    //UseableQuantity = b.StockQuantity - b.OutboundQuantity
                    UseableQuantity = b.StockQuantity,
                    BatchNo = b.BatchNo,
                }, a => a.StockStatus == StockStatusEmun.已入库.ObjToInt(), b => b.Status == StockStatusEmun.已入库.ObjToInt() && b.MaterielCode == materielCode, x => true).GroupBy(x => x.LocationCode).Select(x => new StockSelectViewDTO
                }, a => a.StockStatus == StockStatusEmun.已入库.ObjToInt(), b => b.Status == StockStatusEmun.已入库.ObjToInt() && b.MaterielCode == materielCode, x => true).GroupBy(x => x.OrderNo).ToList();
                foreach (var item in StockSelectViewDTOs)
                {
                    LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
                    MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "",
                    MaterielName = x.FirstOrDefault()?.MaterielName ?? "",
                    PalletCode = string.Join(",", x.Select(x => x.PalletCode).ToList()),
                    //UseableQuantity = x.Sum(x => x.UseableQuantity)
                    UseableQuantity = x.Sum(x => x.UseableQuantity),
                    BatchNo = x.FirstOrDefault()?.BatchNo ?? ""
                }).ToList();
                    stockSelectViewDTOs.AddRange(item.GroupBy(x => x.BatchNo).Select(x => new StockSelectViewDTO
                    {
                        Id = i++,
                        LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
                        MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "",
                        MaterielName = x.FirstOrDefault()?.MaterielName ?? "",
                        PalletCode = string.Join(",", x.Select(x => x.PalletCode).ToList()),
                        UseableQuantity = x.Sum(x => x.UseableQuantity),
                        InDate = x.OrderByDescending(x => x.InDate).First().InDate,
                        OrderNo = item.Key,
                        BatchNo = x.Key
                    }));
                }
                //.Select(x => new StockSelectViewDTO
                //{
                //    LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
                //    MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "",
                //    MaterielName = x.FirstOrDefault()?.MaterielName ?? "",
                //    PalletCode = //string.Join(",", x.Select(x => x.PalletCode).ToList()),
                //    //UseableQuantity = x.Sum(x => x.UseableQuantity)
                //    UseableQuantity = x.Sum(x => x.UseableQuantity),
                //    OrderNo = x.First().OrderNo,
                //    BatchNo = x.FirstOrDefault()?.BatchNo ?? ""
                //}).ToList();
                return stockSelectViewDTOs;
            }
            catch (Exception ex)
            {