diff --git a/ZR.Service/mes/pro/ProPackingDataBackService.cs b/ZR.Service/mes/pro/ProPackingDataBackService.cs index 68c61bea..050fd03c 100644 --- a/ZR.Service/mes/pro/ProPackingDataBackService.cs +++ b/ZR.Service/mes/pro/ProPackingDataBackService.cs @@ -28,17 +28,30 @@ namespace ZR.Service.mes.pro.IService { Context.Ado.BeginTran(); List newList = new(); + /* (string.IsNullOrEmpty(parm.Label) + && string.IsNullOrEmpty(parm.WorkOrder) + && string.IsNullOrEmpty(parm.PackingCode)) + ||*/ if ( string.IsNullOrEmpty(parm.Label) && string.IsNullOrEmpty(parm.WorkOrder) && string.IsNullOrEmpty(parm.PackingCode) ) { - throw new Exception("请输入工单号/产品码/箱码任意一个!"); + if ( + string.IsNullOrEmpty(parm.PartNumber) + || !(parm.StartTime > DateTime.MinValue) + || !(parm.EndTime > DateTime.MinValue) + ) + { + throw new Exception("请输入 [工单号/产品码] 或 [零件号和时间区间] 任意一种查询方式!"); + } } + // 根据包装标签打印记录,找出对应工单 var predicate = Expressionable.Create(); predicate + // 精确查看 .AndIF( !string.IsNullOrEmpty(parm.PartNumber), it => it.PartNum == parm.PartNumber @@ -48,6 +61,7 @@ namespace ZR.Service.mes.pro.IService !string.IsNullOrEmpty(parm.WorkOrder), it => it.WorkOrderNum == parm.WorkOrder ) + // 批量查看 .AndIF( !string.IsNullOrEmpty(parm.PackingCode), it => it.PackingCode.Contains(parm.PackingCode) @@ -61,111 +75,181 @@ namespace ZR.Service.mes.pro.IService it => it.CreateTime >= parm.StartTime ) .AndIF(parm.EndTime > DateTime.MinValue, it => it.CreateTime <= parm.EndTime); - var response = Queryable() + List packingList = Queryable() .Where(predicate.ToExpression()) - .OrderByDescending(it => it.BFilled) - .First(); - if (response == null) + .OrderBy(it => it.WorkOrderNum) + .GroupBy(it => it.WorkOrderNum) + .Select(it => new Model.mes.pro.WmPackingrecord + { + Id = SqlFunc.AggregateMax(it.Id), + PartNum = SqlFunc.AggregateMax(it.PartNum), + Machine = SqlFunc.AggregateMax(it.Machine), + PackingCode = SqlFunc.AggregateMax(it.PackingCode), + ProductCode = SqlFunc.AggregateMax(it.ProductCode), + ScannerContent = SqlFunc.AggregateMax(it.ScannerContent), + WorkOrderNum = it.WorkOrderNum, + BFilled = SqlFunc.AggregateMax(it.BFilled), + CreateTime = SqlFunc.AggregateMax(it.CreateTime), + Standby3 = SqlFunc.AggregateMax(it.Standby3), + Standby4 = SqlFunc.AggregateMax(it.Standby4), + Standby5 = SqlFunc.AggregateMax(it.Standby5), + BCombined = SqlFunc.AggregateMax(it.BCombined), + }) + .ToList(); + if (packingList.Count == 0) { return newList; } - // 零件号提取 - string _partNumber = response.PartNum ?? ""; - // 工单号提取 - string _workOrder = response.WorkOrderNum ?? ""; - // 产品条码提取 - string _label = response.ScannerContent ?? ""; - WmMaterial material = Context - .Queryable() - .Where(it => it.Partnumber == _partNumber) - .Where(it => it.Type == 1) - .Where(it => it.Status == 1) - .First(); - string _description = material.Description ?? "未知物料,不在物料清单或物料号不明确"; - ProPackageDataBackListDto newPackingRecordItem = - new() + foreach (var item in packingList) + { + // 零件号提取 + string _partNumber = item.PartNum ?? ""; + // 工单号提取 + string _workOrder = item.WorkOrderNum ?? ""; + // 产品条码提取 + string _label = item.ScannerContent ?? ""; + WmMaterial material = Context + .Queryable() + .Where(it => it.Partnumber == _partNumber) + .Where(it => it.Type == 1) + .Where(it => it.Status == 1) + .First(); + string _description = ""; + if (material == null) { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - SearchType = 1, - Module = "产线包装工序", - Machine = response.Machine, - WorkOrder = _workOrder, - PartNumber = _partNumber, - Description = _description, - PackageLabel = response.PackingCode, - InnerLabel = _label, - FullMsg = response.BFilled == true ? "满箱" : "零头箱", - Team = "", - SiteNo = "", - ComNo = "", - Remark = "", - CreateTime = response.CreateTime - }; - newList.Add(newPackingRecordItem); - // GP12 记录追溯 - QcGp12RecordLabelScan gp12LabelRecord = Context - .Queryable() - .Where(it => it.PartNumber == _partNumber) - .Where(it => it.Label.Contains(_workOrder)) - .Where(it => it.Type == "1") - .Where(it => it.Status == "1") - .First(); - if (gp12LabelRecord != null) - { - ProPackageDataBackListDto newGP12RecordItem = + _description = "未知物料,不在物料清单或物料号不明确"; + } + else + { + _description = !string.IsNullOrEmpty(material.Description) + ? material.Description + : material.ProductName; + } + ProPackageDataBackListDto newPackingRecordItem = new() { Id = SnowFlakeSingle.Instance.NextId().ToString(), - SearchType = 2, - Module = "GP12检验工序", - Machine = gp12LabelRecord.SiteNo, - WorkOrder = gp12LabelRecord.WorkOrder, + SearchType = 1, + Module = "产线包装工序", + Machine = item.Machine, + WorkOrder = _workOrder, PartNumber = _partNumber, Description = _description, - PackageLabel = "-", - InnerLabel = gp12LabelRecord.Label, - FullMsg = "-", - Team = gp12LabelRecord.Team, - SiteNo = gp12LabelRecord.SiteNo, - ComNo = gp12LabelRecord.ComNo, + PackageLabel = item.PackingCode, + InnerLabel = _label, + FullMsg = item.BFilled == true ? "满箱" : "零头箱", + Team = "", + SiteNo = "", + ComNo = "", Remark = "", - CreateTime = gp12LabelRecord.CreatedTime + CreateTime = item.CreateTime }; - newList.Add(newGP12RecordItem); - } - - // 后道记录追溯 - QcBackEndRecordLabelScan backendLabelRecord = Context - .Queryable() - .Where(it => it.PartNumber == _partNumber) - .Where(it => it.Label.Contains(_workOrder)) - .Where(it => it.Type == "1") - .Where(it => it.Status == "1") - .First(); - if (backendLabelRecord != null) - { - ProPackageDataBackListDto newBackEndRecordItem = - new() + newList.Add(newPackingRecordItem); + // GP12 记录追溯 + List gp12LabelRecords = Context + .Queryable() + .Where(it => it.PartNumber == _partNumber) + .Where(it => it.Label.Contains(_workOrder)) + .Where(it => it.Type == "1") + .Where(it => it.Status == "1") + .GroupBy(it => it.WorkOrder) + .Select(it => new QcGp12RecordLabelScan { - Id = SnowFlakeSingle.Instance.NextId().ToString(), - SearchType = 2, - Module = "GP12检验工序", - Machine = backendLabelRecord.SiteNo, - WorkOrder = backendLabelRecord.WorkOrder, - PartNumber = _partNumber, - Description = _description, - PackageLabel = "-", - InnerLabel = backendLabelRecord.Label, - FullMsg = "-", - Team = backendLabelRecord.Team, - SiteNo = backendLabelRecord.SiteNo, - ComNo = backendLabelRecord.ComNo, - Remark = "", - CreateTime = backendLabelRecord.CreatedTime - }; - newList.Add(newBackEndRecordItem); + Id = SqlFunc.AggregateMax(it.Id), + WorkOrder = it.WorkOrder, + PartNumber = SqlFunc.AggregateMax(it.PartNumber), + Team = SqlFunc.AggregateMax(it.Team), + SiteNo = SqlFunc.AggregateMax(it.SiteNo), + ComNo = SqlFunc.AggregateMax(it.ComNo), + Label = SqlFunc.AggregateMax(it.Label), + LabelType = SqlFunc.AggregateMax(it.LabelType), + LabelSort = SqlFunc.AggregateMax(it.LabelSort), + ScanTime = SqlFunc.AggregateMax(it.ScanTime), + Type = SqlFunc.AggregateMax(it.Type), + Status = SqlFunc.AggregateMax(it.Status), + Remark = SqlFunc.AggregateMax(it.Remark), + CreatedBy = SqlFunc.AggregateMax(it.CreatedBy), + CreatedTime = SqlFunc.AggregateMax(it.CreatedTime), + UpdatedBy = SqlFunc.AggregateMax(it.UpdatedBy), + UpdatedTime = SqlFunc.AggregateMax(it.UpdatedTime) + }) + .ToList(); + foreach (var gp12LabelRecord in gp12LabelRecords) + { + ProPackageDataBackListDto newGP12RecordItem = + new() + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + SearchType = 2, + Module = "GP12检验工序", + Machine = gp12LabelRecord.SiteNo, + WorkOrder = gp12LabelRecord.WorkOrder, + PartNumber = _partNumber, + Description = _description, + PackageLabel = "-", + InnerLabel = gp12LabelRecord.Label, + FullMsg = "-", + Team = gp12LabelRecord.Team, + SiteNo = gp12LabelRecord.SiteNo, + ComNo = gp12LabelRecord.ComNo, + Remark = "归属生产工单:" + _workOrder, + CreateTime = gp12LabelRecord.CreatedTime + }; + newList.Add(newGP12RecordItem); + } + // 后道记录追溯 + List backendLabelRecords = Context + .Queryable() + .Where(it => it.PartNumber == _partNumber) + .Where(it => it.Label.Contains(_workOrder)) + .Where(it => it.Type == "1") + .Where(it => it.Status == "1") + .GroupBy(it => it.WorkOrder) + .Select(it => new QcBackEndRecordLabelScan + { + Id = SqlFunc.AggregateMax(it.Id), + WorkOrder = it.WorkOrder, + PartNumber = SqlFunc.AggregateMax(it.PartNumber), + Team = SqlFunc.AggregateMax(it.Team), + SiteNo = SqlFunc.AggregateMax(it.SiteNo), + ComNo = SqlFunc.AggregateMax(it.ComNo), + Label = SqlFunc.AggregateMax(it.Label), + LabelType = SqlFunc.AggregateMax(it.LabelType), + LabelSort = SqlFunc.AggregateMax(it.LabelSort), + ScanTime = SqlFunc.AggregateMax(it.ScanTime), + Type = SqlFunc.AggregateMax(it.Type), + Status = SqlFunc.AggregateMax(it.Status), + Remark = SqlFunc.AggregateMax(it.Remark), + CreatedBy = SqlFunc.AggregateMax(it.CreatedBy), + CreatedTime = SqlFunc.AggregateMax(it.CreatedTime), + UpdatedBy = SqlFunc.AggregateMax(it.UpdatedBy), + UpdatedTime = SqlFunc.AggregateMax(it.UpdatedTime) + }) + .ToList(); + foreach (var backendLabelRecord in backendLabelRecords) + { + ProPackageDataBackListDto newBackEndRecordItem = + new() + { + Id = SnowFlakeSingle.Instance.NextId().ToString(), + SearchType = 3, + Module = "后道检验工序", + Machine = backendLabelRecord.SiteNo, + WorkOrder = backendLabelRecord.WorkOrder, + PartNumber = _partNumber, + Description = _description, + PackageLabel = "-", + InnerLabel = backendLabelRecord.Label, + FullMsg = "-", + Team = backendLabelRecord.Team, + SiteNo = backendLabelRecord.SiteNo, + ComNo = backendLabelRecord.ComNo, + Remark = "归属生产工单:" + _workOrder, + CreateTime = backendLabelRecord.CreatedTime + }; + newList.Add(newBackEndRecordItem); + } } - Context.Ado.CommitTran(); return newList; } @@ -211,10 +295,7 @@ namespace ZR.Service.mes.pro.IService !string.IsNullOrEmpty(parm.Machine), it => it.Machine.Contains(parm.Machine) ) - .AndIF( - parm.FillType != -1, - it => it.BFilled == (parm.FillType == 1) - ) + .AndIF(parm.FillType != -1, it => it.BFilled == (parm.FillType == 1)) .AndIF( parm.StartTime > DateTime.MinValue, it => it.CreateTime >= parm.StartTime