From a65c8f87f981769568d9608fab8abc02e503b16f Mon Sep 17 00:00:00 2001
From: 18923810322 <1666941798@qq.com>
Date: Wed, 16 Jul 2025 17:16:56 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=BA=86=E6=8E=92=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../OutStockTaskInfoDetailsResponse.cs | 5 +-
.../Services/OutStockTaskService.cs | 94 ++++++++++++++++++-
2 files changed, 96 insertions(+), 3 deletions(-)
diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
index 886a70da..e87acef2 100644
--- a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
+++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
@@ -7,7 +7,7 @@ namespace WMS.Web.Core.Dto.OutStockTask
///
/// 出库任务单对应出库明细
///
- public class OutStockTaskInfoDetailsResponse
+ public class OutStockTaskInfoDetailsResponse
{
///
/// 物料名称
@@ -85,5 +85,8 @@ namespace WMS.Web.Core.Dto.OutStockTask
/// 出库单对应箱明细Id
///
public int OutStockBoxDetailsId { get; set; } = 0;
+
+ public int MaterialCount { get; set; } = 0;
+
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
index e9af2747..7d02430c 100644
--- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
@@ -25,6 +25,7 @@ using WMS.Web.Domain.Values.Single;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
+using NPOI.HSSF.Record.Chart;
namespace WMS.Web.Domain.Services
{
@@ -555,6 +556,35 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+
+ /////
+ ///// 得到物料个数
+ /////
+ /////
+ /////
+ //public string GetMaterialCount(List 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;
+ //}
+
+
///
/// 获取出库任务单详情
///
@@ -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.BoxBillNo).ThenBy(s => s.BoxLength)
.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++)
{
if (i == 0)
@@ -683,12 +769,16 @@ namespace WMS.Web.Domain.Services
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;
else
response.Details[i].IndexNumber = response.Details[i - 1].IndexNumber + 1;
}
}
+
+
+
+
//结束最先的