From fc7ce1e5533b0178847dd87465d4a4c6a38d43db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=8D=A2=E6=B1=9F=E6=B5=B7?= <18360817963@163.com>
Date: Mon, 24 Mar 2025 15:43:32 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=80=E6=AC=A1=E5=90=88?=
=?UTF-8?q?=E6=A0=BC=E5=93=81=E4=BB=93=E5=BA=93=E5=88=97=E8=A1=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IService/IWmOneTimeInventoryService.cs | 13 +-
.../mes/wms/WmOneTimeInventoryService.cs | 125 +++++++++++++++++-
2 files changed, 126 insertions(+), 12 deletions(-)
diff --git a/ZR.Service/mes/wms/IService/IWmOneTimeInventoryService.cs b/ZR.Service/mes/wms/IService/IWmOneTimeInventoryService.cs
index 4cba4d90..b4229233 100644
--- a/ZR.Service/mes/wms/IService/IWmOneTimeInventoryService.cs
+++ b/ZR.Service/mes/wms/IService/IWmOneTimeInventoryService.cs
@@ -11,12 +11,13 @@ namespace ZR.Service.mes.wms.IService
{
WmOneTimeInventoryTableDto GetList(WmOneTimeInventoryQueryDto parm);
- ///
- /// 一次合格导出
- ///
- ///
- ///
- List GetExportList(WmOneTimeInventoryQueryDto parm);
+ WmOneTimeInventoryTableDto GetListNew(WmOneTimeInventoryQueryDto parm);
+ ///
+ /// 一次合格导出
+ ///
+ ///
+ ///
+ List GetExportList(WmOneTimeInventoryQueryDto parm);
WmOneTimeInventory GetInfo(string Id);
diff --git a/ZR.Service/mes/wms/WmOneTimeInventoryService.cs b/ZR.Service/mes/wms/WmOneTimeInventoryService.cs
index 50840b4d..20358339 100644
--- a/ZR.Service/mes/wms/WmOneTimeInventoryService.cs
+++ b/ZR.Service/mes/wms/WmOneTimeInventoryService.cs
@@ -231,12 +231,125 @@ namespace ZR.Service.mes.wms
return response;*/
}
- ///
- /// 获取详情
- ///
- ///
- ///
- public WmOneTimeInventory GetInfo(string Id)
+
+
+ ///
+ /// 查询一次合格品仓库列表
+ ///
+ ///
+ ///
+ public WmOneTimeInventoryTableDto GetListNew(WmOneTimeInventoryQueryDto parm)
+ {
+ var list = Context
+ .Queryable()
+ .LeftJoin((m, p) => m.Partnumber == p.Partnumber)
+ .Distinct()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Description),
+ (m, p) => m.Description.Contains(parm.Description)
+ )
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ (m, p) => m.Partnumber.Contains(parm.Partnumber)
+ )
+ .Where((m, p) => m.Status == 1)
+ .Where((m, p) => m.Type == 1)
+ // .WhereIF(string.IsNullOrEmpty(parm.Partnumber), (m, p) => p.Status == 1)
+ .OrderBy((m, p) => m.Description)
+ .Select(
+ (m, p) =>
+ new WmOneTimeInventoryDto
+ {
+ RealQuantity = 0,
+ Partnumber = m.Partnumber,
+ Color = m.Color,
+ Specification = m.Specification,
+ Description = m.Description,
+ Id = p.Id ?? m.Id,
+ BlankNum = p.BlankNum,
+ Quantity = p.Quantity ?? 0,
+ MaxNum = p.MaxNum,
+ MinNum = p.MinNum,
+ WarnNum = p.WarnNum,
+ Type = p.Type ?? 1,
+ Status = p.Status,
+ Remark = p.Remark,
+ CreatedBy = p.CreatedBy,
+ CreatedTime = p.CreatedTime,
+ UpdatedBy = p.UpdatedBy,
+ UpdatedTime = p.UpdatedTime,
+ }
+ )
+ .ToList();
+ //TODO 取出库存表 WmOneTimeInventory 最小CreatedTime时间
+ DateTime minDateTime =
+ Context
+ .Queryable()
+ .OrderBy(it => it.CreatedTime)
+ .Select(it => it.CreatedTime)
+ .First() ?? DateTime.Now;
+ //TODO 根据时间范围取出所有记录数据
+ List wmOneTimeRecords = Context
+ .Queryable()
+ //.Where(it => it.Code == "自动")
+ .Where(it => it.ActionTime >= minDateTime)
+ .ToList();
+ foreach (WmOneTimeInventoryDto item in list)
+ {
+ int? runum = wmOneTimeRecords
+ .Where(o =>
+ o.ActionTime >= item.CreatedTime
+ && o.Partnumber == item.Partnumber
+ && o.ChangeType == 1
+ )
+ .Select(o => o.ChangeQuantity)
+ .Sum();
+ int? chunum = wmOneTimeRecords
+ .Where(o =>
+ o.ActionTime >= item.CreatedTime
+ && o.Partnumber == item.Partnumber
+ && o.ChangeType == 2
+ )
+ .Select(o => o.ChangeQuantity)
+ .Sum();
+ item.RealQuantity = item.Quantity.Value + (runum.Value - chunum.Value);
+ }
+
+ list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0)
+ .Where(it => !string.IsNullOrEmpty(it.Partnumber))
+ .DistinctBy(it => it.Partnumber)
+ .ToList();
+
+ int total = list.Count;
+ // 仓库总盘点零件数
+ int StocktakingTotal =
+ Context.Queryable().Sum(it => it.Quantity) ?? 0;
+ // 仓库当前查询盘点零件数
+ int QuantitySum = list.Sum(it => it.Quantity) ?? 0;
+ // 仓库当前查询实际零件数
+ int RealQuantitySum = list.Sum(it => it.RealQuantity);
+ WmOneTimeInventoryTableDto response =
+ new()
+ {
+ Total = total,
+ StocktakingTotal = StocktakingTotal,
+ QuantitySum = QuantitySum,
+ RealQuantitySum = RealQuantitySum,
+ Result = list.Skip((parm.PageNum - 1) * parm.PageSize)
+ .Take(parm.PageSize)
+ .ToList(),
+ };
+ return response;
+
+
+ }
+
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ public WmOneTimeInventory GetInfo(string Id)
{
var response = Queryable().Where(x => x.Id == Id).First();