From 4b2e89faeb6383335db4fc4a56d3cb71565abe08 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 26 11月 2024 17:42:24 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine --- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs | 210 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 201 insertions(+), 9 deletions(-) diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs index fe70b9d..5ff4f56 100644 --- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs +++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs @@ -4,6 +4,7 @@ using System.Data; using System.Web; using System.Text; +using System; namespace Admin.NET.Application; /// <summary> /// 搴撳瓨淇℃伅鏈嶅姟 @@ -12,9 +13,13 @@ public class WmsStockQuanService : IDynamicApiController, ITransient { private readonly SqlSugarRepository<WmsStockQuan> _rep; - public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep) + private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _Mes_BatchOrderUPI_New_Rep; + + public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep, + SqlSugarRepository<Mes_BatchOrderUPI_New> Mes_BatchOrderUPI_New_Rep) { _rep = rep; + _Mes_BatchOrderUPI_New_Rep = Mes_BatchOrderUPI_New_Rep; } /// <summary> @@ -189,13 +194,13 @@ return query; } - /// <summary> - /// 閲嶅鎬ч獙璇� - /// </summary> - /// <param name="input">楠岃瘉瀵硅薄</param> - /// <param name="isEdit">鏄惁鏄紪杈�</param> - /// <returns></returns> - private async Task CheckExist( WmsStockQuan input,bool isEdit=false) + /// <summary> + /// 閲嶅鎬ч獙璇� + /// </summary> + /// <param name="input">楠岃瘉瀵硅薄</param> + /// <param name="isEdit">鏄惁鏄紪杈�</param> + /// <returns></returns> + private async Task CheckExist( WmsStockQuan input,bool isEdit=false) { @@ -231,7 +236,194 @@ } - #endregion + #endregion + + + /// <summary> + /// 涓嶅垎椤垫煡璇㈤綈鍖呯鐞� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "packList")] + [Description("WmsStockQuan/packList")] + public async Task<List<WmsPackListOutput>> packList([FromQuery] PackListInput input) + { + // 鏌ヨ骞惰浆鎹负 WmsKittingListOutput 瀵硅薄鐨勫垪琛� + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsPackListOutput + { + PackageCode = x.PackageCode, + // 鏄犲皠鍏朵粬瀛楁 + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.PackageCode) // 鎸� PackageCode 鍒嗙粍 + .Select(g => new WmsPackListOutput + { + PackageCode = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + Count = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + IsPack = g.Count() == 5 ? true : false // 濡傛灉 Count 涓� 5 鍒� IsKitting 涓� 1锛屽惁鍒欎负 0 + }) + .WhereIF(input.IsPack.HasValue, u => u.IsPack == input.IsPack) + .OrderBy(g => g.PackageCode) // 鏍规嵁 PackageCode 鎺掑簭 + .ToList(); // 杞崲涓� List + return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + } + + + /// <summary> + /// 涓嶅垎椤垫煡璇㈤綈濂楃鐞� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "KittingList")] + [Description("WmsStockQuan/KittingList")] + public async Task<List<WmsKittingListOutput>> KittingList([FromQuery] KittingListInput input) + { + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsKittingListOutput + { + OrderId = x.OrderId + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.OrderId) // 鎸� PackageCode 鍒嗙粍 + .Select(g => new WmsKittingListOutput + { + OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + Count = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + IsKitting = g.Count() == 5 ? true : false // 濡傛灉 Count 涓� 5 鍒� IsKitting 涓� 1锛屽惁鍒欎负 0 + }) + .WhereIF(input.IsKitting.HasValue, u => u.IsKitting == input.IsKitting) + .OrderBy(g => g.OrderId) // 鏍规嵁 PackageCode 鎺掑簭 + .ToList(); // 杞崲涓� List + return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + } + + + + + /// <summary> + /// 涓嶅垎椤垫煡璇㈡壒娆$己鏂欐竻鍗� 涓嶉綈鍖� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "ShortageList")] + [Description("WmsStockQuan/ShortageList")] + public async Task<List<WmsShortageListOutput>> ShortageList([FromQuery] KittingListInput input) + { + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsShortageListOutput + { + OrderId = x.OrderId, + PlanNo = x.PlanNo, + PackageCode = x.PackageCode + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.OrderId) // 鎸� OrderId 鍒嗙粍 + .Select(g => new WmsShortageListOutput + { + OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + PlanNo = g.FirstOrDefault().PlanNo, // 鑾峰彇缁勫唴鐨勭涓�涓� PlanNo + PackageCode = g.FirstOrDefault().PackageCode, // 鑾峰彇缁勫唴鐨勭涓�涓� PackageCode + HasCount = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + TotalCount = 0, // 鍒濆鍖� TotalCount + ShortageCount = 0 // 鍒濆鍖� ShortageCount + }) + .OrderBy(g => g.OrderId) // 鏍规嵁 OrderId 鎺掑簭 + .ToList(); // 杞崲涓� List + + // 寰幆 groupedResult 缁欐瘡涓�鏉″姞涓婃�绘暟閲� CountTotal + foreach (var item in groupedResult) + { + item.TotalCount = await _Mes_BatchOrderUPI_New_Rep.AsQueryable().CountAsync(m => m.PackageCode == item.PackageCode); // 鏍规嵁 PackageCode 缁熻鎬绘潯鏁� + item.ShortageCount = item.TotalCount - item.HasCount > 0 ? item.TotalCount - item.HasCount : 0; + } + + return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + } + + + + + /// <summary> + /// 鍒嗛〉鏌ヨ鎵规缂烘枡娓呭崟 涓嶉綈鍖� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "ShortagePage")] + [Description("WmsStockQuan/ShortagePage")] + public async Task<SqlSugarPagedList<WmsShortageListOutput>> ShortagePage(KittingListInput input) + { + // 鑾峰彇鍩虹鏁版嵁 + var list = await _rep.AsQueryable() + .WhereIF(!string.IsNullOrWhiteSpace(input.DetailName), u => u.PlaceCode.Contains(input.DetailName.Trim())) + .Select(x => new WmsShortageListOutput + { + OrderId = x.OrderId, + PlanNo = x.PlanNo, + PackageCode = x.PackageCode + }) + .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� + var groupedResult = list + .GroupBy(x => x.OrderId) // 鎸� OrderId 鍒嗙粍 + .Select(g => new WmsShortageListOutput + { + OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 + PlanNo = g.FirstOrDefault().PlanNo, // 鑾峰彇缁勫唴鐨勭涓�涓� PlanNo + PackageCode = g.FirstOrDefault().PackageCode, // 鑾峰彇缁勫唴鐨勭涓�涓� PackageCode + HasCount = g.Count(), // 缁熻姣忕粍鐨勬暟閲� + TotalCount = 0, // 鍒濆鍖� TotalCount + ShortageCount = 0 // 鍒濆鍖� ShortageCount + }) + .OrderBy(g => g.OrderId) // 鏍规嵁 OrderId 鎺掑簭 + .ToList(); // 杞崲涓� List + + // 寰幆 groupedResult 缁欐瘡涓�鏉″姞涓婃�绘暟閲� TotalCount + foreach (var item in groupedResult) + { + item.TotalCount = await _Mes_BatchOrderUPI_New_Rep.AsQueryable().CountAsync(m => m.PackageCode == item.PackageCode); // 鏍规嵁 PackageCode 缁熻鎬绘潯鏁� + item.ShortageCount = item.TotalCount - item.HasCount > 0 ? item.TotalCount - item.HasCount : 0; + } + + // 鍒嗛〉澶勭悊 + var pagedResult = groupedResult.AsQueryable() // 灏嗗垎缁勭粨鏋滆浆鎹负鍙煡璇㈢殑闆嗗悎 + .OrderBy(g => g.OrderId) // 杩涜鎺掑簭 + .Skip((input.Page - 1) * input.PageSize) // 璺宠繃鍓嶉潰鐨勯〉鏁� + .Take(input.PageSize) // 鍙栧嚭褰撳墠椤电殑鏁版嵁 + .ToList(); // 杞崲涓� List + + var totalCount = groupedResult.Count; // 鑾峰彇鎬绘暟 + var totalPages = (int)Math.Ceiling((double)totalCount / input.PageSize); // 璁$畻鎬婚〉鏁� + + // 鏋勯�犲苟杩斿洖鍒嗛〉缁撴灉 + return new SqlSugarPagedList<WmsShortageListOutput> + { + Page = input.Page, + PageSize = input.PageSize, + Total = totalCount, + TotalPages = totalPages, + Items = pagedResult, + HasPrevPage = input.Page > 1, + HasNextPage = input.Page < totalPages + }; + } + + } -- Gitblit v1.9.3