改了排序

This commit is contained in:
2025-07-16 17:16:56 +08:00
parent f2fb16d1fa
commit a65c8f87f9
2 changed files with 96 additions and 3 deletions

View File

@@ -85,5 +85,8 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// 出库单对应箱明细Id /// 出库单对应箱明细Id
/// </summary> /// </summary>
public int OutStockBoxDetailsId { get; set; } = 0; public int OutStockBoxDetailsId { get; set; } = 0;
public int MaterialCount { get; set; } = 0;
} }
} }

View File

@@ -25,6 +25,7 @@ using WMS.Web.Domain.Values.Single;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using NPOI.HSSF.Record.Chart;
namespace WMS.Web.Domain.Services namespace WMS.Web.Domain.Services
{ {
@@ -555,6 +556,35 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess(); return Result.ReSuccess();
} }
///// <summary>
///// 得到物料个数
///// </summary>
///// <param name="entitys"></param>
///// <param name="SuitNumber"></param>
//public string GetMaterialCount(List<SerialNumbers> entitys, string SuitNumber)
//{
// string strReturn = "";
// foreach (var item in entitys)
// {
// if (item.SuitNumber == SuitNumber)
// {
// if (strReturn == "")
// {
// strReturn = item.SerialNumber;
// }
// else
// {
// strReturn = strReturn + "," + item.SerialNumber;
// }
// }
// }
// return strReturn;
//}
/// <summary> /// <summary>
/// 获取出库任务单详情 /// 获取出库任务单详情
/// </summary> /// </summary>
@@ -670,12 +700,68 @@ namespace WMS.Web.Domain.Services
//排序和加序号值以下为最先的 //排序和加序号值以下为最先的
response.Details = response.Details.OrderByDescending(s => s.Specifications)
var groupedByTwoColumns = response.Details
.GroupBy(
keySelector: p => new { p.BoxBillNo, p.Specifications } // 复合分组键(匿名类型)
// elementSelector: p => new { p.BoxBillNo, p.Specifications,p.Qty } // 可选指定分组后每组包含的元素此处只保留Price
)
// 对分组结果进行投影,提取关键信息
.Select(g => new
{
BoxBillNo = g.Key.BoxBillNo, // 第一分组列
Specifications = g.Key.Specifications, // 第二分组列
ProductCount = g.Count() // 每组商品数量
});
var hunzhuang = groupedByTwoColumns.GroupBy(p => p.BoxBillNo)
.Select(group => new
{
BoxBillNo = group.Key,
Count = group.Count()
});
foreach (var item in response.Details)
{
var eList = hunzhuang.Where(f => f.BoxBillNo == item.BoxBillNo ).ToList();
item.MaterialCount = eList[0].Count;
}
//for (int i = 0; i < response.Details.Count(); i++)
//{
// var infoDetail = response.Details[i];
//}
var detailsA = response.Details.Where(f=>f.MaterialCount==1).OrderByDescending(s => s.Specifications)
//.ThenByDescending(s => s.Method) //.ThenByDescending(s => s.Method)
//.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength) //.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength)
.ThenByDescending(s => s.Qty).ThenByDescending(s => s.BoxBillNo).ThenByDescending(s => s.Method).ToList(); .ThenByDescending(s => s.Qty).ThenByDescending(s => s.BoxBillNo).ThenByDescending(s => s.Method).ToList();
//for (int i = 0; i < response.Details.Count(); i++)
//{
// if (i == 0)
// response.Details[0].IndexNumber = 1;
// else
// {
// //和上一个箱子比 如果是相同的箱子序号一样
// if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo && response.Details[i].Method == "按箱" && response.Details[i - 1].Method== "按箱")
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
// else
// response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
// }
//}
var detailsB = response.Details.Where(f => f.MaterialCount > 1).OrderByDescending(s => s.Specifications)
//.ThenByDescending(s => s.Method)
//.ThenByDescending(s => s.BoxBillNo).ThenBy(s => s.BoxLength)
.ThenByDescending(s => s.Qty).ThenByDescending(s => s.BoxBillNo).ThenByDescending(s => s.Method).ToList();
detailsA.AddRange(detailsB);
response.Details=detailsA;
for (int i = 0; i < response.Details.Count(); i++) for (int i = 0; i < response.Details.Count(); i++)
{ {
if (i == 0) if (i == 0)
@@ -683,12 +769,16 @@ namespace WMS.Web.Domain.Services
else else
{ {
//和上一个箱子比 如果是相同的箱子序号一样 //和上一个箱子比 如果是相同的箱子序号一样
if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo && response.Details[i].Method == "按箱" && response.Details[i - 1].Method== "按箱") if (response.Details[i].BoxBillNo == response.Details[i - 1].BoxBillNo && response.Details[i].Method == "按箱" && response.Details[i - 1].Method == "按箱")
response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber; response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber;
else else
response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1; response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
} }
} }
//结束最先的 //结束最先的