From 80ff5f04f2e09de39ff5ac4bf1a6a96be52da677 Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Mon, 18 Dec 2023 16:01:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E7=BB=9F=E8=AE=A1=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/Extensions/EntityExtension.cs | 3 - ZR.Admin.WebApi/Hubs/MessageHub.cs | 70 ++++- ZR.Model/MES/op/DTO/QcFqcDTO.cs | 44 ++- ZR.Model/MES/qc/QcAgaininspectionRecord.cs | 61 ++++ ZR.Model/MES/qc/QcFinalinspectionRecord.cs | 61 ++++ ZR.Model/MES/qc/QcFqc.cs | 24 +- ZR.Service/mes/op/OperationService.cs | 18 +- ZR.Service/mes/qc/FirstFQCService.cs | 285 +++++++++++++++++- .../mes/qc/IService/IFirstFQCService.cs | 4 +- 9 files changed, 526 insertions(+), 44 deletions(-) create mode 100644 ZR.Model/MES/qc/QcAgaininspectionRecord.cs create mode 100644 ZR.Model/MES/qc/QcFinalinspectionRecord.cs diff --git a/ZR.Admin.WebApi/Extensions/EntityExtension.cs b/ZR.Admin.WebApi/Extensions/EntityExtension.cs index 5cb646de..622879fd 100644 --- a/ZR.Admin.WebApi/Extensions/EntityExtension.cs +++ b/ZR.Admin.WebApi/Extensions/EntityExtension.cs @@ -18,9 +18,6 @@ namespace ZR.Admin.WebApi.Extensions types.GetProperty("Create_by", flag)?.SetValue(source, context.GetName(), null); types.GetProperty("CreatedBy", flag)?.SetValue(source, context.GetName(), null); types.GetProperty("UserId", flag)?.SetValue(source, context.GetUId(), null); - - - return source; } diff --git a/ZR.Admin.WebApi/Hubs/MessageHub.cs b/ZR.Admin.WebApi/Hubs/MessageHub.cs index 40ab34b5..e55b318a 100644 --- a/ZR.Admin.WebApi/Hubs/MessageHub.cs +++ b/ZR.Admin.WebApi/Hubs/MessageHub.cs @@ -110,13 +110,14 @@ namespace ZR.Admin.WebApi.Hubs } /// - /// 保存油漆缺陷采集累加信息 + /// 保存油漆缺陷采集累加信息 首检 /// /// 工单id /// 检测项 /// - public async Task SaveCacheInformation(string workorderid, string Moudle, string checkid) + public async Task SaveCacheInformation_v1(string workorderid, string Moudle, string checkid) { + checkid = checkid + "_v1"; if (CacheHelper.Exists(checkid)) { @@ -124,15 +125,72 @@ namespace ZR.Admin.WebApi.Hubs logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为{sum}"); CacheHelper.SetCache(checkid, sum); //SaveinspectItem - await firstFQCService.SaveinspectItem(workorderid,Moudle, checkid,sum); - await Clients.All.SendAsync("GetCache", Moudle,checkid, sum); + await firstFQCService.SaveinspectItem_v1(workorderid,Moudle, checkid,sum); + await Clients.All.SendAsync("GetCache_v1", Moudle,checkid, sum); } else { CacheHelper.SetCache(checkid, 1); logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为1"); - await firstFQCService.SaveinspectItem(workorderid, Moudle, checkid, 1); - await Clients.All.SendAsync("GetCache", Moudle, checkid, 1); + await firstFQCService.SaveinspectItem_v1(workorderid, Moudle, checkid, 1); + await Clients.All.SendAsync("GetCache_v1", Moudle, checkid, 1); + } + } + + + /// + /// 保存油漆缺陷采集累加信息 二检 + /// + /// 工单id + /// 检测项 + /// + public async Task SaveCacheInformation_v2(string workorderid, string Moudle, string checkid) + { + checkid = checkid + "_v2"; + + if (CacheHelper.Exists(checkid)) + { + int sum = Convert.ToInt32(CacheHelper.GetCache(checkid)) + 1; + logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为{sum}"); + CacheHelper.SetCache(checkid, sum); + //SaveinspectItem + await firstFQCService.SaveinspectItem_v2(workorderid, Moudle, checkid, sum); + await Clients.All.SendAsync("GetCache_v2", Moudle, checkid, sum); + } + else + { + CacheHelper.SetCache(checkid, 1); + logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为1"); + await firstFQCService.SaveinspectItem_v2(workorderid, Moudle, checkid, 1); + await Clients.All.SendAsync("GetCache_v2", Moudle, checkid, 1); + } + } + + /// + /// 保存油漆缺陷采集累加信息 三检 + /// + /// 工单id + /// 检测项 + /// + public async Task SaveCacheInformation_v3(string workorderid, string Moudle, string checkid) + { + checkid = checkid + "_v3"; + + if (CacheHelper.Exists(checkid)) + { + int sum = Convert.ToInt32(CacheHelper.GetCache(checkid)) + 1; + logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为{sum}"); + CacheHelper.SetCache(checkid, sum); + //SaveinspectItem + await firstFQCService.SaveinspectItem_v3(workorderid, Moudle, checkid, sum); + await Clients.All.SendAsync("GetCache_v3", Moudle, checkid, sum); + } + else + { + CacheHelper.SetCache(checkid, 1); + logger.Info($"当前保存工单号{workorderid},检测项{checkid},累加的数为1"); + await firstFQCService.SaveinspectItem_v3(workorderid, Moudle, checkid, 1); + await Clients.All.SendAsync("GetCache_v3", Moudle, checkid, 1); } } } diff --git a/ZR.Model/MES/op/DTO/QcFqcDTO.cs b/ZR.Model/MES/op/DTO/QcFqcDTO.cs index f2893d81..f81bbd48 100644 --- a/ZR.Model/MES/op/DTO/QcFqcDTO.cs +++ b/ZR.Model/MES/op/DTO/QcFqcDTO.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace ZR.Model.MES.op.DTO { - public class QcFqcDTO + public class QcFqcDTO { public int? Year { get; set; } @@ -52,15 +52,15 @@ namespace ZR.Model.MES.op.DTO /// /// 首检打磨数量 /// - public string PolishNum01 { get; set; } + public int? PolishNum01 { get; set; } /// /// 首检报废数量 /// - public string ScrapNum01 { get; set; } + public int? ScrapNum01 { get; set; } /// /// 二检合格数量 /// - public string QualifiedNum02 { get; set; } + public int? QualifiedNum02 { get; set; } /// /// 二检打磨数量 /// @@ -72,14 +72,44 @@ namespace ZR.Model.MES.op.DTO /// /// 三检合格数量 /// - public string QualifiedNum03 { get; set; } + public int? QualifiedNum03 { get; set; } /// /// 三检打磨数量 /// - public string PolishNum03 { get; set; } + public int? PolishNum03 { get; set; } /// /// 三检报废数量 /// - public string ScrapNum03 { get; set; } + public int? ScrapNum03 { get; set; } + + /// + /// 一次合格数量 + /// + + public int? FirstgoodNum { get; set; } + /// + /// 一次合格率80 + /// + + public double? FirstgoodRate { get; set; } + /// + /// 最终合格数量 + /// + + public int? FinalgoodNum { get; set; } + /// + /// 最终合格率70 + /// + + public double? FinalgoodRate { get; set; } + /// + /// 报废数 + /// + + public int? ScrapNum { get; set; } + /// + /// 报废率70 + /// + public double? ScrapRate { get; set; } } } diff --git a/ZR.Model/MES/qc/QcAgaininspectionRecord.cs b/ZR.Model/MES/qc/QcAgaininspectionRecord.cs new file mode 100644 index 00000000..a22fa900 --- /dev/null +++ b/ZR.Model/MES/qc/QcAgaininspectionRecord.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ZR.Model.MES.qc +{ + /// + /// 二检实时记录表 + /// + [SugarTable("qc_againinspection_record")] + public class QcAgaininspectionRecord + { + /// + /// 流水号 + /// + [SugarColumn(ColumnName = "id", IsPrimaryKey = true)] + public string Id { get; set; } + /// + /// 工单id + /// + [SugarColumn(ColumnName = "fk_workorder_id")] + public string FkWorkorderId { get; set; } + /// + /// 检测项id + /// + [SugarColumn(ColumnName = "fk_inpection_id")] + public string FkInpectionId { get; set; } + /// + /// 模块 + /// + [SugarColumn(ColumnName = "InspectionModule")] + public string InspectionModule { get; set; } + /// + /// 数值 + /// + [SugarColumn(ColumnName = "counter")] + public int? Counter { get; set; } + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "CREATED_BY")] + public string CreatedBy { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "CREATED_TIME")] + public DateTime? CreatedTime { get; set; } + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "UPDATED_BY")] + public string UpdatedBy { get; set; } + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "UPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + } +} diff --git a/ZR.Model/MES/qc/QcFinalinspectionRecord.cs b/ZR.Model/MES/qc/QcFinalinspectionRecord.cs new file mode 100644 index 00000000..c412b7b0 --- /dev/null +++ b/ZR.Model/MES/qc/QcFinalinspectionRecord.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ZR.Model.MES.qc +{ + /// + /// 三检实时记录表 + /// + [SugarTable("qc_finalinspection_record")] + public class QcFinalinspectionRecord + { + /// + /// 流水号 + /// + [SugarColumn(ColumnName = "id", IsPrimaryKey = true)] + public string Id { get; set; } + /// + /// 工单id + /// + [SugarColumn(ColumnName = "fk_workorder_id")] + public string FkWorkorderId { get; set; } + /// + /// 检测项id + /// + [SugarColumn(ColumnName = "fk_inpection_id")] + public string FkInpectionId { get; set; } + /// + /// 模块 + /// + [SugarColumn(ColumnName = "InspectionModule")] + public string InspectionModule { get; set; } + /// + /// 数值 + /// + [SugarColumn(ColumnName = "counter")] + public int? Counter { get; set; } + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "CREATED_BY")] + public string CreatedBy { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "CREATED_TIME")] + public DateTime? CreatedTime { get; set; } + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "UPDATED_BY")] + public string UpdatedBy { get; set; } + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "UPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + } +} diff --git a/ZR.Model/MES/qc/QcFqc.cs b/ZR.Model/MES/qc/QcFqc.cs index e8db4b48..cf8238d3 100644 --- a/ZR.Model/MES/qc/QcFqc.cs +++ b/ZR.Model/MES/qc/QcFqc.cs @@ -62,17 +62,17 @@ namespace ZR.Model.MES.qc /// 首检打磨数量 /// [SugarColumn(ColumnName = "polishNum01")] - public string PolishNum01 { get; set; } + public int? PolishNum01 { get; set; } /// /// 首检报废数量 /// [SugarColumn(ColumnName = "scrapNum01")] - public string ScrapNum01 { get; set; } + public int? ScrapNum01 { get; set; } /// /// 二检合格数量 /// [SugarColumn(ColumnName = "qualifiedNum02")] - public string QualifiedNum02 { get; set; } + public int? QualifiedNum02 { get; set; } /// /// 二检打磨数量 /// @@ -87,17 +87,17 @@ namespace ZR.Model.MES.qc /// 三检合格数量 /// [SugarColumn(ColumnName = "qualifiedNum03")] - public string QualifiedNum03 { get; set; } + public int? QualifiedNum03 { get; set; } /// /// 三检打磨数量 /// [SugarColumn(ColumnName = "polishNum03")] - public string PolishNum03 { get; set; } + public int? PolishNum03 { get; set; } /// /// 三检报废数量 /// [SugarColumn(ColumnName = "scrapNum03")] - public string ScrapNum03 { get; set; } + public int? ScrapNum03 { get; set; } /// /// 一次合格数量 @@ -108,7 +108,7 @@ namespace ZR.Model.MES.qc /// 一次合格率80 /// [SugarColumn(ColumnName = "firstgoodRate")] - public int? FirstgoodRate { get; set; } + public double? FirstgoodRate { get; set; } /// /// 最终合格数量 /// @@ -118,17 +118,17 @@ namespace ZR.Model.MES.qc /// 最终合格率70 /// [SugarColumn(ColumnName = "finalgoodRate")] - public int? FinalgoodRate { get; set; } + public double? FinalgoodRate { get; set; } /// /// 报废数 /// - [SugarColumn(ColumnName = "polishNum")] - public int? PolishNum { get; set; } + [SugarColumn(ColumnName = "scrapNum")] + public int? ScrapNum { get; set; } /// /// 报废率70 /// - [SugarColumn(ColumnName = "polishRate")] - public int? PolishRate { get; set; } + [SugarColumn(ColumnName = "scrapRate")] + public double? ScrapRate { get; set; } /// /// 创建人 /// diff --git a/ZR.Service/mes/op/OperationService.cs b/ZR.Service/mes/op/OperationService.cs index a2c71913..58a54438 100644 --- a/ZR.Service/mes/op/OperationService.cs +++ b/ZR.Service/mes/op/OperationService.cs @@ -71,7 +71,16 @@ namespace ZR.Service.MES.op return OpStatisticsDTOList; } - + /// + /// 质量统计分析表和工单关联一下 + /// + /// + /// + /// + /// + /// + /// + /// public (List,int) GueryQualityStatistics(string workorderid ,int pageNum, int pageSize, int year = -1, int week = -1, int date = -1) { var predicate = Expressionable.Create() @@ -79,6 +88,8 @@ namespace ZR.Service.MES.op .AndIF(week > 0, p => p.Week == week) .AndIF(date > 0, p => p.Date == date) .ToExpression(); + + var predicate2 = Expressionable.Create() .AndIF(!string.IsNullOrEmpty(workorderid),q=>q.FkWorkorderId== workorderid) .ToExpression(); @@ -109,6 +120,11 @@ namespace ZR.Service.MES.op QualifiedNum03 = q.QualifiedNum03, PolishNum03 = q.PolishNum03, ScrapNum03 = q.ScrapNum03, + FirstgoodNum=q.FirstgoodNum, + FirstgoodRate=q.FirstgoodRate, + FinalgoodRate=q.FinalgoodRate, + FinalgoodNum=q.FinalgoodNum, + }).MergeTable(); List QcFqcDTOList = query5.Where(predicate).ToPageList(pageNum, pageSize,ref totalCount); diff --git a/ZR.Service/mes/qc/FirstFQCService.cs b/ZR.Service/mes/qc/FirstFQCService.cs index cf457ec7..0f299609 100644 --- a/ZR.Service/mes/qc/FirstFQCService.cs +++ b/ZR.Service/mes/qc/FirstFQCService.cs @@ -1,5 +1,6 @@ using Infrastructure.Attribute; using Microsoft.Extensions.DependencyInjection; +using SqlSugar; using System; using System.Collections; using System.Collections.Generic; @@ -12,6 +13,7 @@ using ZR.Model.MES.qc.DTO; using ZR.Model.MES.qu; using ZR.Service.mes.qc.IService; using ZR.Service.mes.qu.IService; +using static Microsoft.Extensions.Logging.EventSource.LoggingEventSource; namespace ZR.Service.mes.qc { @@ -25,7 +27,6 @@ namespace ZR.Service.mes.qc checkItem.Paint = Queryable().Where(it => it.InspectionModule == "油漆").OrderBy(it => it.Id).ToList(); - checkItem.device = Queryable().Where(it => it.InspectionModule == "设备").OrderBy(it => it.Id).ToList(); checkItem.Blank = Queryable().Where(it => it.InspectionModule == "毛坯").OrderBy(it => it.Id).ToList(); checkItem.program = Queryable().Where(it => it.InspectionModule == "程序").OrderBy(it => it.Id).ToList(); @@ -36,28 +37,29 @@ namespace ZR.Service.mes.qc } /// - /// 保存检测结果 + /// 保存首次检测结果 /// - /// - /// - /// - /// + /// 工单 + /// 模块 + /// 检测项 + /// 数量 /// - public async Task SaveinspectItem(string workorder_id, string InspectionModule, string checkid, int counter) + public async Task SaveinspectItem_v1(string workorder_id, string InspectionModule, string checkid, int counter) { //更新实时记录表 QcFirstinspectionRecord record = new QcFirstinspectionRecord(); record.Id = DateTime.Now.ToString("MMddHHmmss"); record.InspectionModule = InspectionModule; record.FKWorkorderId = workorder_id; - record.FKInpectionId = checkid; + record.FKInpectionId = checkid.Substring(0, 3); record.Counter = counter; + record.UpdatedTime = DateTime.Now; var x = Context.Storageable(record) - .WhereColumns(it => new {it.FKInpectionId,it.FKWorkorderId,it.InspectionModule }) + .WhereColumns(it => new { it.FKInpectionId, it.FKWorkorderId, it.InspectionModule }) .ToStorage(); - x.AsInsertable.ExecuteCommandAsync(); //执行插入 - x.AsUpdateable.ExecuteCommandAsync(); //执行更新 + x.AsInsertable.ExecuteCommandAsync(); //执行插入 + x.AsUpdateable.ExecuteCommandAsync(); //执行更新 ////更新初检报废表 //if (Convert.ToInt32(checkid) / 10 % 10==3) @@ -83,10 +85,265 @@ namespace ZR.Service.mes.qc } - - - + + /// + /// 保存二次检测结果 + /// + /// 工单 + /// 模块 + /// 检测项 + /// 数量 + /// + public async Task SaveinspectItem_v2(string workorder_id, string InspectionModule, string checkid, int counter) + { + //更新实时记录表 + QcAgaininspectionRecord record = new QcAgaininspectionRecord(); + record.Id = DateTime.Now.ToString("MMddHHmmss"); + record.InspectionModule = InspectionModule; + record.FkWorkorderId = workorder_id; + record.FkInpectionId = checkid.Substring(0, 3); + record.Counter = counter; + record.UpdatedTime = DateTime.Now; + var x = Context.Storageable(record) + .WhereColumns(it => new { it.FkInpectionId, it.FkWorkorderId, it.InspectionModule }) + .ToStorage(); + + x.AsInsertable.ExecuteCommandAsync(); //执行插入 + x.AsUpdateable.ExecuteCommandAsync(); //执行更新 + + ////更新初检报废表 + //if (Convert.ToInt32(checkid) / 10 % 10==3) + //{ + // QcAgaininspectionUselessnum scrap =new QcAgaininspectionUselessnum(); + // scrap.Id = "scrap" + DateTime.Now.ToString("MMddHHmmss"); + // scrap.FkInspectionitemId = checkid; + // scrap.FkFqcId = ""; + // scrap.ProductName = ""; + // scrap.Number= 1; + + + + //} + + ////更新初检xiazi表 + //if (Convert.ToInt32(checkid) / 10 % 10 == 1) + //{ + + //} + + + + + } + + /// + /// 保存最终检测结果 + /// + /// 工单 + /// 模块 + /// 检测项 + /// 数量 + /// + public async Task SaveinspectItem_v3(string workorder_id, string InspectionModule, string checkid, int counter) + { + //更新实时记录表 + QcFinalinspectionRecord record = new QcFinalinspectionRecord(); + record.Id = DateTime.Now.ToString("MMddHHmmss"); + record.InspectionModule = InspectionModule; + record.FkWorkorderId = workorder_id; + record.FkInpectionId = checkid.Substring(0, 3); + record.Counter = counter; + record.UpdatedTime = DateTime.Now; + var x = Context.Storageable(record) + .WhereColumns(it => new { it.FkInpectionId, it.FkWorkorderId, it.InspectionModule }) + .ToStorage(); + + x.AsInsertable.ExecuteCommandAsync(); //执行插入 + x.AsUpdateable.ExecuteCommandAsync(); //执行更新 + + ////更新初检报废表 + //if (Convert.ToInt32(checkid) / 10 % 10==3) + //{ + // QcAgaininspectionUselessnum scrap =new QcAgaininspectionUselessnum(); + // scrap.Id = "scrap" + DateTime.Now.ToString("MMddHHmmss"); + // scrap.FkInspectionitemId = checkid; + // scrap.FkFqcId = ""; + // scrap.ProductName = ""; + // scrap.Number= 1; + + + + //} + + ////更新初检xiazi表 + //if (Convert.ToInt32(checkid) / 10 % 10 == 1) + //{ + + //} + + + + + } + + /// + /// 当产品切换时,完成质量统计分析 + /// + /// 工单 + /// 产品名称 + /// 左右 + /// 颜色 + /// 班组 + /// 投入数 + public void quailtyStatics(string workorderid, string productName, string leftRight, string color, string team, int inputNum) + { + QcFqc record = new QcFqc(); + record.Id = DateTime.Now.ToString("MMddHHmmss"); + record.ProductName = productName; + record.LeftRight = leftRight; + record.Color = color; + record.Team = team; + + //TODO 1. 处理首检 + + + //1.1 首检合格数=投入数-抛光数-打磨数-报废数 + List qcFirstinspections = Context.Queryable().Where(it => it.FKWorkorderId == workorderid).ToList(); + + int NoQualifiedNum01 = 0; + qcFirstinspections.ForEach(it => + { + NoQualifiedNum01 += (int)it.Counter; + + }); + record.QualifiedNum01 = inputNum - NoQualifiedNum01; + + + //1.2 首检抛光数 + List defectNum01RecordList = Context.Queryable().Where(it => it.FKWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 1 + "_" }).ToList(); + int defectNum01RecordSum = 0; + defectNum01RecordList.ForEach(it => + { + defectNum01RecordSum += (int)it.Counter; + }); + record.DefectNum01 = defectNum01RecordSum; + + //1.3 首检打磨数 + List polishNum01RecordList = Context.Queryable().Where(it => it.FKWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 2 + "_" }).ToList(); + int polishNum01RecordSum = 0; + polishNum01RecordList.ForEach(it => + { + polishNum01RecordSum += (int)it.Counter; + }); + record.PolishNum01 = polishNum01RecordSum; + + //1.4 首检报废数 + List scrapNum01RecordList = Context.Queryable().Where(it => it.FKWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 3 + "_" }).ToList(); + int scrapNum01RecordSum = 0; + scrapNum01RecordList.ForEach(it => + { + scrapNum01RecordSum += (int)it.Counter; + }); + record.PolishNum01 = scrapNum01RecordSum; + + + //TODO 2. 处理二检 + + //2.1 二检的合格数 = 首检的抛光数 - 二检打磨 - 二检报废 + List qcAgaininspections = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).ToList(); + + int NoQualifiedNum02 = 0; + qcAgaininspections.ForEach(it => + { + NoQualifiedNum02 += (int)it.Counter; + + }); + record.QualifiedNum02 = defectNum01RecordSum - NoQualifiedNum02; + + //2.2 二检打磨数 + List polishNum02RecordList = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 2 + "_" }).ToList(); + int polishNum02RecordSum = 0; + + polishNum02RecordList.ForEach(it => + { + polishNum02RecordSum += (int)it.Counter; + }); + record.PolishNum02 = polishNum02RecordSum; + + + //2.3 二检报废 + List scrapNum02RecordList = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 3 + "_" }).ToList(); + int scrapNum02RecordSum = 0; + scrapNum02RecordList.ForEach(it => + { + scrapNum02RecordSum += (int)it.Counter; + }); + record.ScrapNum02 = scrapNum02RecordSum; + + + //TODO 3. 处理三检 + // 3.1 三检合格数=(一检合格数 + 二检合格数) - (三检打磨数+三检报废数) + + List qcFinalinspections = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).ToList(); + + int NoQualifiedNum03 = 0; + qcAgaininspections.ForEach(it => + { + NoQualifiedNum03 += (int)it.Counter; + + }); + + record.QualifiedNum03 = (record.QualifiedNum01 + record.QualifiedNum02) - NoQualifiedNum03; + + //3.2 三检打磨数 + List polishNum03RecordList = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 2 + "_" }).ToList(); + int polishNum03RecordSum = 0; + + polishNum03RecordList.ForEach(it => + { + polishNum03RecordSum += (int)it.Counter; + }); + record.PolishNum03 = polishNum03RecordSum; + + //3.3 三检报废数 + + List scrapNum03RecordList = Context.Queryable().Where(it => it.FkWorkorderId == workorderid).Where("FKInpectionId like @FKInpectionId", new { FKInpectionId = "_" + 3 + "_" }).ToList(); + int scrapNum03RecordSum = 0; + scrapNum03RecordList.ForEach(it => + { + scrapNum03RecordSum += (int)it.Counter; + }); + record.ScrapNum03 = scrapNum03RecordSum; + + //TODO 4 统计分析 + + // 4.1 一次合格率 + record.FirstgoodNum = record.QualifiedNum01; + record.FirstgoodRate = CalculatePercentage((int)record.FirstgoodNum, inputNum); + // 4.2 最终合格率 + record.FinalgoodNum = record.QualifiedNum03 / inputNum; + record.FinalgoodRate = CalculatePercentage((int)record.FinalgoodNum, inputNum); + // 4.3 报废率 + record.ScrapNum = record.ScrapNum01 + record.ScrapNum02 + record.ScrapNum03; + record.ScrapRate = CalculatePercentage((int)record.ScrapNum, inputNum); + + record.CreatedTime = DateTime.Now; + Context.Insertable(record).ExecuteCommand(); + + } + /// + /// 计算百分比 + /// + /// + /// + /// + + static double CalculatePercentage(int num1, int num2) + { + double percentage = ((double)num1 / num2) * 100; + return Math.Round(percentage, 2); + } } } diff --git a/ZR.Service/mes/qc/IService/IFirstFQCService.cs b/ZR.Service/mes/qc/IService/IFirstFQCService.cs index 71fd70e9..379d6834 100644 --- a/ZR.Service/mes/qc/IService/IFirstFQCService.cs +++ b/ZR.Service/mes/qc/IService/IFirstFQCService.cs @@ -10,6 +10,8 @@ namespace ZR.Service.mes.qc.IService public interface IFirstFQCService { public CheckItemTableDTO GetCheckItemTable(); - public Task SaveinspectItem(string workorder_id, string InspectionModule, string checkid, int counter); + public Task SaveinspectItem_v1(string workorder_id, string InspectionModule, string checkid, int counter); + public Task SaveinspectItem_v2(string workorder_id, string InspectionModule, string checkid, int counter); + public Task SaveinspectItem_v3(string workorder_id, string InspectionModule, string checkid, int counter); } }