From 478fa37ec863b2f7eb20ce19ad5cce96072bd4f9 Mon Sep 17 00:00:00 2001
From: liuying <1427574514@qq.com>
Date: 周日, 01 12月 2024 17:22:19 +0800
Subject: [PATCH] 标记ng页面
---
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsStockQuan/WmsStockQuan/WmsStockQuanService.cs | 387 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 368 insertions(+), 19 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..0b104e6 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,9 @@
using System.Data;
using System.Web;
using System.Text;
+using System;
+using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto;
+
namespace Admin.NET.Application;
/// <summary>
/// 搴撳瓨淇℃伅鏈嶅姟
@@ -12,9 +15,16 @@
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;
+ 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)
{
_rep = rep;
+ _Mes_BatchOrderUPI_New_Rep = Mes_BatchOrderUPI_New_Rep;
+ _V_Station_Quan_Rep = v_Station_Quan_Rep;
}
/// <summary>
@@ -189,13 +199,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)
{
@@ -218,20 +228,359 @@
throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
}
//鏍规嵁缁勫悎鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
-
-
-
-
-
-
-
-
//鏍规嵁鍗曠嫭鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
-
-
}
- #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)
+ {
+ // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曪紝骞舵彁鍙栨墍闇�淇℃伅
+ 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<WmsShortageListOutput> ShortageList(KittingListInput input)
+ {
+ var listRes = await GetShortageListCore(input);
+ var resJson = new WmsShortageListOutput();
+ if (!string.IsNullOrWhiteSpace(input.UPI))
+ {
+ resJson = listRes.FirstOrDefault(u => u.UPI == input.UPI);
+ //var filteredResult = listRes.FirstOrDefault(u => u.UPI == input.UPI);
+ }
+
+ return resJson;
+ }
+
+ /// <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,
+ Info4 = item.Info4,
+ Info10 = item.Info10,
+ Info11 = item.Info11,
+ Info12= item.Info12,
+ Info13 = item.Info13,
+ //Info14 = item.Info14,
+ Info15 = item.Info15,
+ Info16 = item.Info16,
+ Info18 = item.Info18,
+ Length = item.Length,
+ Width = item.Width,
+ Thk = item.Thk
+ });
+ }
+ }
+
+ 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; // 杩斿洖鍒嗙粍缁撴灉
+ }
}
--
Gitblit v1.9.3