From 5e537d1686dc273ca069431e4b241c3db1ea2ebf Mon Sep 17 00:00:00 2001 From: liuying <1427574514@qq.com> Date: 周二, 26 11月 2024 22:58:54 +0800 Subject: [PATCH] 大屏 --- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs | 229 ++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 162 insertions(+), 67 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 5ff4f56..2b6dbf5 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 @@ -14,12 +14,15 @@ { private readonly SqlSugarRepository<WmsStockQuan> _rep; private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _Mes_BatchOrderUPI_New_Rep; + private readonly SqlSugarRepository<V_Station_Quan> _V_Station_Quan_Rep; public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep, - SqlSugarRepository<Mes_BatchOrderUPI_New> Mes_BatchOrderUPI_New_Rep) + SqlSugarRepository<Mes_BatchOrderUPI_New> Mes_BatchOrderUPI_New_Rep, + SqlSugarRepository<V_Station_Quan> v_Station_Quan_Rep) { _rep = rep; _Mes_BatchOrderUPI_New_Rep = Mes_BatchOrderUPI_New_Rep; + _V_Station_Quan_Rep = v_Station_Quan_Rep; } /// <summary> @@ -223,55 +226,59 @@ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖"); } //鏍规嵁缁勫悎鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� - - - - - - - - //鏍规嵁鍗曠嫭鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹� - - } #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) + 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 + .WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim())) + .Select(x => new { x.PackageCode }) + .ToListAsync(); + + // 鍒涘缓涓�涓垪琛ㄤ互瀛樺偍 WmsPackListOutput + var resultList = new List<WmsPackListOutput>(); + + // 鍒嗙粍骞惰绠楁瘡缁勪俊鎭� + var groupedResult = list.GroupBy(x => x.PackageCode); + + foreach (var g in groupedResult) + { + // 鍦ㄨ繖閲岃绠楁瘡缁勭殑鎬绘暟 + var count = g.Count(); + var mesTotalCount = await _Mes_BatchOrderUPI_New_Rep.AsQueryable().CountAsync(m => m.PackageCode == g.Key); + + resultList.Add(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 - }) + PackageCode = g.Key, + Count = count, + MesTotalCount = mesTotalCount, + IsPack = count >= mesTotalCount, // 妫�鏌ユ槸鍚︽墦鍖� + LackCount = mesTotalCount - count + }); + } + + // 杩囨护銆佹帓搴忓苟杩斿洖鏈�缁堢粨鏋� + var finalResult = resultList .WhereIF(input.IsPack.HasValue, u => u.IsPack == input.IsPack) - .OrderBy(g => g.PackageCode) // 鏍规嵁 PackageCode 鎺掑簭 - .ToList(); // 杞崲涓� List - return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + .OrderBy(g => g.PackageCode) + .ToList(); + + return finalResult; } + /// <summary> @@ -291,6 +298,7 @@ OrderId = x.OrderId }) .ToListAsync(); // 纭繚鑾峰彇缁撴灉涓� List + // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� var groupedResult = list .GroupBy(x => x.OrderId) // 鎸� PackageCode 鍒嗙粍 @@ -298,7 +306,7 @@ { OrderId = g.Key, // 鑾峰彇鍒嗙粍鐨勯敭 Count = g.Count(), // 缁熻姣忕粍鐨勬暟閲� - IsKitting = g.Count() == 5 ? true : false // 濡傛灉 Count 涓� 5 鍒� IsKitting 涓� 1锛屽惁鍒欎负 0 + IsKitting = 1 == 1? true : false // 濡傛灉 Count 涓� 5 鍒� IsKitting 涓� 1锛屽惁鍒欎负 0 }) .WhereIF(input.IsKitting.HasValue, u => u.IsKitting == input.IsKitting) .OrderBy(g => g.OrderId) // 鏍规嵁 PackageCode 鎺掑簭 @@ -309,53 +317,27 @@ + + /// <summary> /// 涓嶅垎椤垫煡璇㈡壒娆$己鏂欐竻鍗� 涓嶉綈鍖� /// </summary> /// <param name="input"></param> /// <returns></returns> - [HttpGet] + /// [HttpGet] [ApiDescriptionSettings(Name = "ShortageList")] [Description("WmsStockQuan/ShortageList")] - public async Task<List<WmsShortageListOutput>> ShortageList([FromQuery] KittingListInput input) + public async Task<List<WmsShortageListOutput>> ShortageList(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 listRes = await GetShortageListCore(input); - // 鍒嗙粍骞惰繑鍥炲垎缁勪俊鎭� - 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) + if (!string.IsNullOrWhiteSpace(input.UPI)) { - 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; + listRes = listRes.Where(u => u.UPI == input.UPI).ToList(); } - return groupedResult; // 杩斿洖鍒嗙粍缁撴灉 + return listRes; } - - - /// <summary> /// 鍒嗛〉鏌ヨ鎵规缂烘枡娓呭崟 涓嶉綈鍖� @@ -366,6 +348,75 @@ [ApiDescriptionSettings(Name = "ShortagePage")] [Description("WmsStockQuan/ShortagePage")] public async Task<SqlSugarPagedList<WmsShortageListOutput>> ShortagePage(KittingListInput input) + { + var listRes = await GetShortageListCore(input); + // 杩涜鍒嗛〉澶勭悊 + var totalCount = listRes.Count; // 鑾峰彇鎬绘暟 + var pagedList = listRes + //.OrderBy(x => x.Id) // 鏍规嵁闇�瑕佽繘琛屾帓搴� + .Skip((input.Page - 1) * input.PageSize) + .Take(input.PageSize) + .ToList(); + + // 鏋勯�犲苟杩斿洖鍒嗛〉缁撴灉 + return new SqlSugarPagedList<WmsShortageListOutput> + { + Page = input.Page, + PageSize = input.PageSize, + Total = totalCount, + TotalPages = (int)Math.Ceiling((double)totalCount / input.PageSize), + Items = pagedList, + HasPrevPage = input.Page > 1, + HasNextPage = input.Page < ((int)Math.Ceiling((double)totalCount / input.PageSize)) + }; + } + + /// <summary> + /// 缂哄寘鏁版嵁 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + private async Task<List<WmsShortageListOutput>> GetShortageListCore(KittingListInput input) + { + var listRes = new List<WmsShortageListOutput>(); + // 缂撳瓨宀涙暟鎹� + var queryHcdList = _rep.AsQueryable().WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode == input.PackageCode); + + var listDao = await queryHcdList.ToListAsync(); + var packageCodes = listDao.Select(x => x.PackageCode).ToList(); + // 鑾峰彇 mes 鎵�鏈夌浉鍏宠褰� + var allRecords = await _Mes_BatchOrderUPI_New_Rep.AsQueryable() + .Where(m => packageCodes.Contains(m.PackageCode)) + .ToListAsync(); + // 閬嶅巻璁板綍锛屽姣� listDao + var listDaoUbi = listDao.Select(u => u.Upi).ToHashSet(); // 灏� UPI 杞崲涓� HashSet锛屾彁楂樻煡鎵炬晥鐜� + foreach (var item in allRecords) + { + if (!listDaoUbi.Contains(item.UPI)) // 浣跨敤 HashSet 杩涜鏌ユ壘 + { + listRes.Add(new WmsShortageListOutput + { + UPI = item.UPI, + PackageCode = item.PackageCode, + DetailName = item.DetailName, + OrderId = item.OrderId, + PlanNo = item.PlanNo + }); + } + } + + return listRes; + } + + /// <summary> + /// 鍒嗛〉鏌ヨ鎵规缂烘枡娓呭崟 涓嶉綈鍖� -鏆傛椂涓嶇敤 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "ShortagePage2")] + [Description("WmsStockQuan/ShortagePage2")] + public async Task<SqlSugarPagedList<WmsShortageListOutput>> ShortagePage2(KittingListInput input) { // 鑾峰彇鍩虹鏁版嵁 var list = await _rep.AsQueryable() @@ -424,6 +475,50 @@ } + /// <summary> + /// 涓嶅垎椤垫煡璇㈡壒娆$己鏂欐竻鍗� 涓嶉綈鍖�-鏆傛椂涓嶇敤 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpGet] + [ApiDescriptionSettings(Name = "ShortageList2")] + [Description("WmsStockQuan/ShortageList2")] + public async Task<List<WmsShortageListOutput>> ShortageList2([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; // 杩斿洖鍒嗙粍缁撴灉 + } } -- Gitblit v1.9.3