From 18d2f40bbf40469b033de6f07ca8a8e3bc191132 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 26 四月 2025 19:21:40 +0800
Subject: [PATCH] 优化代码

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs |   81 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 71 insertions(+), 10 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs"
index 166af4f..566c8d8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/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($"鏈壘鍒扮┖鎵樼洏淇℃伅,鐗╂枡缂栧彿銆怑mpty000銆�");
+                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)
             {

--
Gitblit v1.9.3