diff --git a/ZR.Service/mes/wms/WmOneTimeInventoryService.cs b/ZR.Service/mes/wms/WmOneTimeInventoryService.cs index 1e4f876b..af46be02 100644 --- a/ZR.Service/mes/wms/WmOneTimeInventoryService.cs +++ b/ZR.Service/mes/wms/WmOneTimeInventoryService.cs @@ -297,20 +297,18 @@ namespace ZR.Service.mes.wms .ToList(); foreach (WmOneTimeInventoryDto item in list) { - //TODO 20250408 盘点时间修正(三个时间比对) - WmOneTimeRecord minCheckRecord = - wmOneTimeRecords - .Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3) - .OrderByDescending(o => o.ActionTime) - .FirstOrDefault(); + WmOneTimeRecord minCheckRecord = wmOneTimeRecords + .Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3) + .OrderByDescending(o => o.ActionTime) + .FirstOrDefault(); DateTime minCheckRecordTime = DateTime.MinValue; int minCheckRecordQuantity = 0; if (minCheckRecord != null) { minCheckRecordTime = minCheckRecord.ActionTime ?? DateTime.MinValue; } - + DateTime minCheckInventoryTime = item.CreatedTime ?? minDateTime; //TODO 20250408修改 最小盘点时间判断/如有盘点记录,则优先取盘点记录数据 DateTime checkTime = @@ -343,11 +341,14 @@ namespace ZR.Service.mes.wms ) .Select(o => o.ChangeQuantity) .Sum(); - + item.RealQuantity = minCheckRecordQuantity + (runum.Value - chunum.Value); item.CreatedTime = checkTime; } - list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0) + list = list.WhereIF( + string.IsNullOrEmpty(parm.Partnumber), + it => it.RealQuantity != 0 || it.Quantity != 0 + ) .Where(it => !string.IsNullOrEmpty(it.Partnumber)) .DistinctBy(it => it.Partnumber) .OrderBy(it => it.RealQuantity) @@ -657,17 +658,17 @@ namespace ZR.Service.mes.wms { Context.Ado.BeginTran(); // 检查是否存在库中 -/* WmOneTimeInventory oneTImeInventory = Context - .Queryable() - .Where(it => it.Id == parm.Id) - .Where(it => it.Status == 1) - .First(); - if (oneTImeInventory == null) - { - Context.Ado.RollbackTran(); - throw new Exception("盘点记录不存在" + parm.Id); - } - Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/ + /* WmOneTimeInventory oneTImeInventory = Context + .Queryable() + .Where(it => it.Id == parm.Id) + .Where(it => it.Status == 1) + .First(); + if (oneTImeInventory == null) + { + Context.Ado.RollbackTran(); + throw new Exception("盘点记录不存在" + parm.Id); + } + Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/ // 已有则新增记录 //TODO 20250408 新逻辑调整 只添加盘点记录 算库存数时自动调整 string code = !string.IsNullOrEmpty(parm.WorkOrder) @@ -724,6 +725,7 @@ namespace ZR.Service.mes.wms .OrderBy(it => it.Description) .ToList(); } + //导出 public List GetExportList(WmOneTimeInventoryQueryDto parm) { @@ -748,13 +750,9 @@ namespace ZR.Service.mes.wms //TODO 20250408 新导出逻辑 // 构建导出数据 - WmOneTimeInventoryQueryDto queryParams = new() - { - PageSize = 10000, - PageNum = 1 - }; - List exportDto = GetListNew(queryParams).Result - .Select(it => + WmOneTimeInventoryQueryDto queryParams = new() { PageSize = 10000, PageNum = 1 }; + List exportDto = GetListNew(queryParams) + .Result.Select(it => { return new WmOneTimeInventoryExportDto { diff --git a/ZR.Service/mes/wms/WmOneTimeRecordService.cs b/ZR.Service/mes/wms/WmOneTimeRecordService.cs index 0992f9c4..5aceb590 100644 --- a/ZR.Service/mes/wms/WmOneTimeRecordService.cs +++ b/ZR.Service/mes/wms/WmOneTimeRecordService.cs @@ -1,7 +1,8 @@ +using System; +using System.Linq; +using System.Text.RegularExpressions; using Infrastructure.Attribute; using SqlSugar; -using System.Linq; -using System; using ZR.Model; using ZR.Model.Business; using ZR.Model.MES.qc; @@ -9,261 +10,257 @@ using ZR.Model.MES.wms; using ZR.Model.MES.wms.Dto; using ZR.Repository; using ZR.Service.mes.wms.IService; -using System.Text.RegularExpressions; namespace ZR.Service.mes.wms { - /// - /// 一次合格品仓库记录表Service业务层处理 - /// - [AppService( - ServiceType = typeof(IWmOneTimeRecordService), - ServiceLifetime = LifeTime.Transient - )] - public class WmOneTimeRecordService : BaseService, IWmOneTimeRecordService - { - /// - /// 查询一次合格品仓库记录表列表 - /// - /// - /// - public PagedInfo GetList(WmOneTimeRecordQueryDto parm) - { + /// + /// 一次合格品仓库记录表Service业务层处理 + /// + [AppService( + ServiceType = typeof(IWmOneTimeRecordService), + ServiceLifetime = LifeTime.Transient + )] + public class WmOneTimeRecordService : BaseService, IWmOneTimeRecordService + { + /// + /// 查询一次合格品仓库记录表列表 + /// + /// + /// + public PagedInfo GetList(WmOneTimeRecordQueryDto parm) + { var predicate = Expressionable - .Create() - .AndIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.Partnumber == parm.Partnumber + .Create() + .AndIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber == parm.Partnumber ) - .AndIF(!string.IsNullOrEmpty(parm.Remark), it => it.Remark.Contains(parm.Remark)) - .AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code)) - /*.AndIF( - !string.IsNullOrEmpty(parm.FkInventoryId), - it => it.FkInventoryId == parm.FkInventoryId - )*/ - .AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id) - .AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType) - .AndIF( - parm.StartActionTime != null, - it => parm.StartActionTime.Value.ToLocalTime() <= it.ActionTime - ) - .AndIF( - parm.EndActionTime != null, - it => parm.EndActionTime.Value.ToLocalTime() >= it.ActionTime - ); + .AndIF(!string.IsNullOrEmpty(parm.Remark), it => it.Remark.Contains(parm.Remark)) + .AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code)) + /*.AndIF( + !string.IsNullOrEmpty(parm.FkInventoryId), + it => it.FkInventoryId == parm.FkInventoryId + )*/ + .AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id) + .AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType) + .AndIF( + parm.StartActionTime != null, + it => parm.StartActionTime.Value.ToLocalTime() <= it.ActionTime + ) + .AndIF( + parm.EndActionTime != null, + it => parm.EndActionTime.Value.ToLocalTime() >= it.ActionTime + ); - var response = Queryable() - .Where(predicate.ToExpression()) - .ToPage(parm); + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); - return response; - } + return response; + } - /// - /// 获取详情 - /// - /// - /// - public WmOneTimeRecord GetInfo(string Id) - { - var response = Queryable().Where(x => x.Id == Id).First(); + /// + /// 获取详情 + /// + /// + /// + public WmOneTimeRecord GetInfo(string Id) + { + var response = Queryable().Where(x => x.Id == Id).First(); - return response; - } + return response; + } - /// - /// 添加一次合格品仓库记录表 - /// - /// - /// - public WmOneTimeRecord AddWmOneTimeRecord(WmOneTimeRecord model) - { - return Context.Insertable(model).ExecuteReturnEntity(); - } + /// + /// 添加一次合格品仓库记录表 + /// + /// + /// + public WmOneTimeRecord AddWmOneTimeRecord(WmOneTimeRecord model) + { + return Context.Insertable(model).ExecuteReturnEntity(); + } - /// - /// 修改一次合格品仓库记录表 - /// - /// - /// - public int UpdateWmOneTimeRecord(WmOneTimeRecord model) - { - //var response = Update(w => w.Id == model.Id, it => new WmOneTimeRecord() - //{ - // Code = model.Code, - // Partnumber = model.Partnumber, - // BlankNum = model.BlankNum, - // ChangeType = model.ChangeType, - // ChangeQuantity = model.ChangeQuantity, - // ActionTime = model.ActionTime, - // Status = model.Status, - // Remark = model.Remark, - // CreatedBy = model.CreatedBy, - // CreatedTime = model.CreatedTime, - // UpdatedBy = model.UpdatedBy, - // UpdatedTime = model.UpdatedTime, - //}); - //return response; - return Update(model, true); - } + /// + /// 修改一次合格品仓库记录表 + /// + /// + /// + public int UpdateWmOneTimeRecord(WmOneTimeRecord model) + { + //var response = Update(w => w.Id == model.Id, it => new WmOneTimeRecord() + //{ + // Code = model.Code, + // Partnumber = model.Partnumber, + // BlankNum = model.BlankNum, + // ChangeType = model.ChangeType, + // ChangeQuantity = model.ChangeQuantity, + // ActionTime = model.ActionTime, + // Status = model.Status, + // Remark = model.Remark, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } - - /// - /// 自动生成一次合格仓库记录日志 - /// - /// - /// - /// - public int GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm) - { - - if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue) - { - return -1; - } - else - { - #region 查询需要的数据 - //TODO 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达) - List qcQualityStatisticsFirsts = Context - .Queryable() - .WhereIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.FinishedPartNumber == parm.Partnumber - ) - .Where(it => !it.ProductDescription.Contains("倒车雷达")) + /// + /// 自动生成一次合格仓库记录日志 + /// + /// + /// + /// + public int GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm) + { + if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue) + { + return -1; + } + else + { + #region 查询需要的数据 + //TODO 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达) + List qcQualityStatisticsFirsts = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.FinishedPartNumber == parm.Partnumber + ) + .Where(it => !it.ProductDescription.Contains("倒车雷达")) .Where(it => it.StartTime >= parm.StartTime) - .Where(it => it.QualifiedNumber > 0) - .Where(it => it.Remark == "抛光") + .Where(it => it.QualifiedNumber > 0) + .Where(it => it.Remark == "抛光") .ToList(); - //TODO 入库条件2 抛光合格品 wm_polish_work_quality_statistics 合格数 - List wmPolishWorkQualityStatistics = Context - .Queryable() - .WhereIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.Partnumber == parm.Partnumber - ) - .Where(it => it.StartTime >= parm.StartTime) - .ToList(); + //TODO 入库条件2 抛光合格品 wm_polish_work_quality_statistics 合格数 + List wmPolishWorkQualityStatistics = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber == parm.Partnumber + ) + .Where(it => it.StartTime >= parm.StartTime) + .ToList(); - //TODO 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数 - List qcGp12ServiceStatistics = Context - .Queryable() - .WhereIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.PartNumber == parm.Partnumber - ) - .Where(it => it.StartTime >= parm.StartTime) - .Where(it => it.GroupSort == 1) - .ToList(); + //TODO 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数 + List qcGp12ServiceStatistics = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.PartNumber == parm.Partnumber + ) + .Where(it => it.StartTime >= parm.StartTime) + .Where(it => it.GroupSort == 1) + .ToList(); - //TODO 出库条件2 后道 wm_polish_quality_statistics 投入数 - List wmPolishQualityStatistics = Context - .Queryable() - .WhereIF( - !string.IsNullOrEmpty(parm.Partnumber), - it => it.Partnumber == parm.Partnumber - ) - .Where(it => it.StartTime >= parm.StartTime) - .ToList(); + //TODO 出库条件2 后道 wm_polish_quality_statistics 投入数 + List wmPolishQualityStatistics = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber == parm.Partnumber + ) + .Where(it => it.StartTime >= parm.StartTime) + .ToList(); - #endregion + #endregion - #region 组装 WmOneTimeRecord 实体 + #region 组装 WmOneTimeRecord 实体 - List wmOneTimeRecords = new List(); + List wmOneTimeRecords = new List(); - foreach (var item in qcQualityStatisticsFirsts) - { - wmOneTimeRecords.Add( - new WmOneTimeRecord - { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - FkInventoryId = item.Id, - Code = "自动", - Partnumber = item.FinishedPartNumber, - ChangeType = 1, - ChangeQuantity = item.QualifiedNumber, - ActionTime = item.StartTime, - Status = 1, - Remark = "产线报表合格品自动入库,来源工单号:" + item.WorkorderId - } - ); - } + foreach (var item in qcQualityStatisticsFirsts) + { + wmOneTimeRecords.Add( + new WmOneTimeRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = item.FinishedPartNumber, + ChangeType = 1, + ChangeQuantity = item.QualifiedNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = "产线报表合格品自动入库,来源工单号:" + item.WorkorderId + } + ); + } - foreach (var item in wmPolishWorkQualityStatistics) - { - wmOneTimeRecords.Add( - new WmOneTimeRecord - { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - FkInventoryId = item.Id, - Code = "自动", - Partnumber = item.Partnumber, - ChangeType = 1, - ChangeQuantity = item.QualifiedNumber, - ActionTime = item.StartTime, - Status = 1, - Remark = "抛光报表合格品自动入库" - } - ); - } + foreach (var item in wmPolishWorkQualityStatistics) + { + wmOneTimeRecords.Add( + new WmOneTimeRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = item.Partnumber, + ChangeType = 1, + ChangeQuantity = item.QualifiedNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = "抛光报表合格品自动入库" + } + ); + } - foreach (var item in qcGp12ServiceStatistics) - { - wmOneTimeRecords.Add( - new WmOneTimeRecord - { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - FkInventoryId = item.Id, - Code = "自动", - Partnumber = item.PartNumber, - ChangeType = 2, - ChangeQuantity = item.RequireNumber, - ActionTime = item.StartTime, - Status = 1, - Remark = "GP12触摸屏报表投入自动出库" - } - ); - } + foreach (var item in qcGp12ServiceStatistics) + { + wmOneTimeRecords.Add( + new WmOneTimeRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = item.PartNumber, + ChangeType = 2, + ChangeQuantity = item.RequireNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = "GP12触摸屏报表投入自动出库" + } + ); + } - foreach (var item in wmPolishQualityStatistics) - { - wmOneTimeRecords.Add( - new WmOneTimeRecord - { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - FkInventoryId = item.Id, - Code = "自动", - Partnumber = item.Partnumber, - ChangeType = 2, - ChangeQuantity = item.RequireNumber, - ActionTime = item.StartTime, - Status = 1, - Remark = "后道报表自动出库" - } - ); - } + foreach (var item in wmPolishQualityStatistics) + { + wmOneTimeRecords.Add( + new WmOneTimeRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = item.Partnumber, + ChangeType = 2, + ChangeQuantity = item.RequireNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = "后道报表自动出库" + } + ); + } + #endregion - #endregion + //如果有这个时间段的数据,要删除 + List delwmOneTimeRecords = Context + .Queryable() + .Where(it => it.Code == "自动") + .Where(it => it.ActionTime >= parm.StartTime) + .ToList(); + Context.Deleteable(delwmOneTimeRecords).ExecuteCommand(); + if (wmOneTimeRecords.Any()) + { + Context.Insertable(wmOneTimeRecords).ExecuteCommand(); + } - //如果有这个时间段的数据,要删除 - List delwmOneTimeRecords = Context - .Queryable() - .Where(it => it.Code == "自动") - .Where(it => it.ActionTime >= parm.StartTime) - .ToList(); - Context.Deleteable(delwmOneTimeRecords).ExecuteCommand(); - if (wmOneTimeRecords.Any()) - { - Context.Insertable(wmOneTimeRecords).ExecuteCommand(); - } - - return wmOneTimeRecords.Count; // 返回插入的记录数 - } - } + return wmOneTimeRecords.Count; // 返回插入的记录数 + } + } /// /// 自动生成一次合格仓库记录日志 (后道自动化版本) @@ -326,7 +323,15 @@ namespace ZR.Service.mes.wms ) .Where(it => it.StartTime >= parm.StartTime) .Where(it => it.GroupSort == 1) - // .Where(it => it.IsOut == 1) 待定 现在暂时都是直接出库 + // .Where(it => it.IsOut == 1) 待定 现在暂时都是直接出库 + .ToList(); + List wmPolishQualityStatistics = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber == parm.Partnumber + ) + .Where(it => it.StartTime >= parm.StartTime) .ToList(); #endregion @@ -417,7 +422,7 @@ namespace ZR.Service.mes.wms foreach (var item in qcBackEndQualityStatistics) { // TODO 零件号二次处理 - string partNumber = item.PartNumber; + string partNumber = item.PartNumber; // 使用正则表达式匹配并移除特殊后缀 string processedPartnumber = Regex.Replace( partNumber, @@ -440,10 +445,38 @@ namespace ZR.Service.mes.wms } ); } + //XXX 20250613 后道触摸屏与手填报表同时统计 + foreach (var item in wmPolishQualityStatistics) + { + // TODO 零件号二次处理 + string partNumber = item.Partnumber; + // 使用正则表达式匹配并移除特殊后缀 + string processedPartnumber = Regex.Replace( + partNumber, + @"-(FL|FR|RR|RL)$", + "", + RegexOptions.IgnoreCase + ); + wmOneTimeRecords.Add( + new WmOneTimeRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = processedPartnumber, + ChangeType = 2, + ChangeQuantity = item.RequireNumber, + ActionTime = item.StartTime, + Status = 1, + Remark = "后道报表-手填报表出库" + } + ); + } #endregion // 直接删除旧数据,避免先查询再删除的并发问题 - Context.Deleteable() + Context + .Deleteable() .Where(it => it.Code == "自动") .Where(it => it.ActionTime >= parm.StartTime) .ExecuteCommand(); @@ -469,7 +502,6 @@ namespace ZR.Service.mes.wms Context.Ado.RollbackTran(); return -1; } - } } } diff --git a/ZR.Service/mes/wms/WmPolishInventoryService.cs b/ZR.Service/mes/wms/WmPolishInventoryService.cs index db6c99e5..9dbdeedf 100644 --- a/ZR.Service/mes/wms/WmPolishInventoryService.cs +++ b/ZR.Service/mes/wms/WmPolishInventoryService.cs @@ -316,11 +316,10 @@ namespace ZR.Service.mes.wms foreach (WmPolishInventoryDto item in list) { //TODO 20250408 盘点时间修正(三个时间比对) - WmPolishRecord minCheckRecord = - wmPolishRecords - .Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3) - .OrderByDescending(o => o.ActionTime) - .FirstOrDefault(); + WmPolishRecord minCheckRecord = wmPolishRecords + .Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3) + .OrderByDescending(o => o.ActionTime) + .FirstOrDefault(); DateTime minCheckRecordTime = DateTime.MinValue; int minCheckRecordQuantity = 0; if (minCheckRecord != null) @@ -363,7 +362,10 @@ namespace ZR.Service.mes.wms item.CreatedTime = checkTime; } - list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0) + list = list.WhereIF( + string.IsNullOrEmpty(parm.Partnumber), + it => it.RealQuantity != 0 || it.Quantity != 0 + ) .Where(it => !string.IsNullOrEmpty(it.Partnumber)) .DistinctBy(it => it.Partnumber) .OrderBy(it => it.RealQuantity) @@ -726,6 +728,7 @@ namespace ZR.Service.mes.wms throw new Exception(e.Message); } } + // 盘点 public int DoWmPolishStocktaking(WmPolishInventory parm) { @@ -737,17 +740,17 @@ namespace ZR.Service.mes.wms { Context.Ado.BeginTran(); // 检查是否存在库中 - /* WmPolishInventory polishInventory = Context - .Queryable() - .Where(it => it.Id == parm.Id) - .Where(it => it.Status == 1) - .First(); - if (polishInventory == null) - { - Context.Ado.RollbackTran(); - throw new Exception("盘点记录不存在" + parm.Id); - } - Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/ + /* WmPolishInventory polishInventory = Context + .Queryable() + .Where(it => it.Id == parm.Id) + .Where(it => it.Status == 1) + .First(); + if (polishInventory == null) + { + Context.Ado.RollbackTran(); + throw new Exception("盘点记录不存在" + parm.Id); + } + Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/ // 已有则新增记录 string code = !string.IsNullOrEmpty(parm.WorkOrder) ? parm.WorkOrder @@ -828,14 +831,10 @@ namespace ZR.Service.mes.wms //TODO 20250408 新导出逻辑 // 构建导出数据 - WmPolishInventoryQueryDto queryParams = new() - { - PageSize = 10000, - PageNum = 1 - }; + WmPolishInventoryQueryDto queryParams = new() { PageSize = 10000, PageNum = 1 }; // 构建导出数据 - List exportDto = GetListNew(queryParams).Result - .Select(it => + List exportDto = GetListNew(queryParams) + .Result.Select(it => { return new WmPolishInventoryExportDto { @@ -901,7 +900,6 @@ namespace ZR.Service.mes.wms /// public (string, object, object) ImportExcel(List importList) { - List wmPolishInventorylist = importList .Select(it => new WmPolishInventory { diff --git a/ZR.Service/mes/wms/WmPolishRecordService.cs b/ZR.Service/mes/wms/WmPolishRecordService.cs index b35d8ae8..4b53533b 100644 --- a/ZR.Service/mes/wms/WmPolishRecordService.cs +++ b/ZR.Service/mes/wms/WmPolishRecordService.cs @@ -132,7 +132,7 @@ namespace ZR.Service.mes.wms .Where(it => !it.ProductDescription.Contains("倒车雷达")) .Where(it => it.StartTime >= parm.StartTime) .Where(it => it.PaoguangTotal > 0) - .Where(it=> it.Remark == "抛光") + .Where(it => it.Remark == "抛光") .ToList(); // 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics @@ -204,7 +204,7 @@ namespace ZR.Service.mes.wms ChangeQuantity = item.PaoguangTotal, ActionTime = item.StartTime, Status = 1, - Remark = "产线报表抛光件自动入库,来源工单:"+item.WorkorderId + Remark = "产线报表抛光件自动入库,来源工单:" + item.WorkorderId } ); } @@ -329,7 +329,7 @@ namespace ZR.Service.mes.wms .Where(it => it.Remark == "抛光") .ToList(); - // 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics + // 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics (XXX-20250613触摸屏数据+后道报表数据) List qcBackEndQualityStatistics = Context .Queryable() .WhereIF( @@ -340,6 +340,15 @@ namespace ZR.Service.mes.wms .Where(it => it.PolishNumber > 0) .Where(it => it.GroupSort == 1) .ToList(); + List wmPolishQualityStatistics = Context + .Queryable() + .WhereIF( + !string.IsNullOrEmpty(parm.Partnumber), + it => it.Partnumber == parm.Partnumber + ) + .Where(it => it.StartTime >= parm.StartTime) + .Where(it => it.PaoguangTotal > 0) + .ToList(); // GP12报表 根据日期范围 去取gp12反抛光的数据 qc_gp12_service_statistics GP12(new) wm_gp12_quality_statistics(old) List qcGp12ServiceStatistics = Context @@ -427,7 +436,33 @@ namespace ZR.Service.mes.wms } ); } - + //XXX20250613 后道触摸屏与手填报表同时统计 + foreach (var item in wmPolishQualityStatistics) + { + // TODO 零件号二次处理 + string partNumber = item.Partnumber; + // 使用正则表达式匹配并移除特殊后缀 + string processedPartnumber = Regex.Replace( + partNumber, + @"-(FL|FR|RR|RL)$", + "", + RegexOptions.IgnoreCase + ); + wmPolishRecords.Add( + new WmPolishRecord + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + FkInventoryId = item.Id, + Code = "自动", + Partnumber = processedPartnumber, + ChangeType = 1, + ChangeQuantity = item.PaoguangTotal, + ActionTime = item.StartTime, + Status = 1, + Remark = "后道手填报表-抛光件自动入库" + } + ); + } foreach (var item in qcGp12ServiceStatistics) { // TODO 零件号二次处理