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();