From 9597b1df912c1ca4401a74970d9472e268b3a9c2 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周六, 07 12月 2024 15:12:59 +0800 Subject: [PATCH] 33 --- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs | 383 +++--------------------------------------------------- 1 files changed, 23 insertions(+), 360 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 32d8dac..a397772 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,9 +4,6 @@ using System.Data; using System.Web; using System.Text; -using System; -using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto; - namespace Admin.NET.Application; /// <summary> /// 搴撳瓨淇℃伅鏈嶅姟 @@ -15,16 +12,9 @@ public class WmsStockQuanService : IDynamicApiController, ITransient { 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<V_Station_Quan> v_Station_Quan_Rep) + public WmsStockQuanService(SqlSugarRepository<WmsStockQuan> rep) { _rep = rep; - _Mes_BatchOrderUPI_New_Rep = Mes_BatchOrderUPI_New_Rep; - _V_Station_Quan_Rep = v_Station_Quan_Rep; } /// <summary> @@ -168,12 +158,12 @@ .Select<WmsStockQuanOutput>(); if(input.InTimeRange != null && input.InTimeRange.Count >0) { - DateTime? start= input.InTimeRange[0].Value.AddDays(-1); - query = query.WhereIF(start.HasValue, u => u.InTime > start); + DateTime? start= input.InTimeRange[0].Value; + query = query.WhereIF(start.HasValue, u => u.InTime >= start); if (input.InTimeRange.Count >1 && input.InTimeRange[1].HasValue) { - var end = input.InTimeRange[1].Value.AddDays(1); - query = query.Where(u => u.InTime < end); + var end = input.InTimeRange[1].Value; + query = query.Where(u => u.InTime <= end); } } if(input.OperTimeRange != null && input.OperTimeRange.Count >0) @@ -199,13 +189,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) { @@ -228,347 +218,20 @@ 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) - { - // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曪紝骞舵彁鍙栨墍闇�淇℃伅 - var list = await _rep.AsQueryable() - .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 = 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) - .ToList(); - - return finalResult; - } - - - - /// <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 = 1 == 1? 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(KittingListInput input) - { - var listRes = await GetShortageListCore(input); - - if (!string.IsNullOrWhiteSpace(input.UPI)) - { - listRes = listRes.Where(u => u.UPI == input.UPI).ToList(); - } - - return listRes; - } - - /// <summary> - /// 鍒嗛〉鏌ヨ鎵规缂烘枡娓呭崟 涓嶉綈鍖� - /// </summary> - /// <param name="input"></param> - /// <returns></returns> - [HttpPost] - [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> - [HttpPost] - [ApiDescriptionSettings(Name = "ShortagePageGroupByInfo5")] - [Description("WmsStockQuan/ShortagePageGroupByInfo5")] - public async Task<SqlSugarPagedList<WmsShortageListOutput>> ShortagePageGroupByInfo5(KittingListInput input) - { - var listRes = await GetShortageListCore(input); - - // 鎸夌収瀛楁 Info5 鍒嗙粍 - var groupedList = listRes - .GroupBy(x => x.Info5) // 鏍规嵁 Info5 瀛楁杩涜鍒嗙粍 - .Select(g => new WmsShortageListOutput // 鍋囪鎮ㄥ皢鍒嗙粍鍚庣殑缁撴灉杞崲涓� WmsShortageListOutput - { - Info5 = g.Key, - ShortageCount = g.Count(), - }) - .ToList(); - - // 杩涜鍒嗛〉澶勭悊 - var totalCount = groupedList.Count; // 鑾峰彇鎬绘暟 - var pagedList = groupedList - //.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, - Info5= item.Info5, - Info16 = item.Info16, - }); - } - } - - 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() - .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 - }; - } - - - /// <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; // 杩斿洖鍒嗙粍缁撴灉 - } + #endregion } -- Gitblit v1.9.3