diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/FirstFQCController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/FirstFQCController.cs index f3d41fcb..0649afb6 100644 --- a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/FirstFQCController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/FirstFQCController.cs @@ -47,6 +47,20 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC return SUCCESS(itemTableDTO); } + + /// + /// 写入工序时间 (首检) + /// + /// + [HttpGet("writeProcessFlow_first")] + public IActionResult WriteProcessFlow_first(string workorderID,DateTime time) + { + + int result = fQCService.WriteProcessFlow_first(workorderID, time); + + return SUCCESS(result); + } + /// /// 获取 检测项 填充 (二检) /// @@ -286,12 +300,15 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC // 更改工单状态为完成态 [HttpGet("generateQualityStatisticsTable")] - public IActionResult GenerateQualityStatisticsTable(string workorderID,string team) + public IActionResult GenerateQualityStatisticsTable(string workorderID,string team, DateTime firstQuality_time) { - int result = fQCService.GenerateQualityStatisticsTable(workorderID, team); + int result = fQCService.GenerateQualityStatisticsTable(workorderID, team, firstQuality_time); return SUCCESS(result); } + + + } } diff --git a/ZR.Model/MES/md/ProWorkordertimeStep.cs b/ZR.Model/MES/md/ProWorkordertimeStep.cs new file mode 100644 index 00000000..56564b87 --- /dev/null +++ b/ZR.Model/MES/md/ProWorkordertimeStep.cs @@ -0,0 +1,60 @@ +namespace ZR.Model.MES.md +{ + /// + /// 工单时间流转表 + /// + [SugarTable("pro_workordertime_step")] + public class ProWorkordertimeStep + { + /// + /// + /// + [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + /// + /// 工单开始时间 + /// + [SugarColumn(ColumnName = "workorder_time")] + public DateTime? WorkorderTime { get; set; } + /// + /// 首检结束时间 + /// + [SugarColumn(ColumnName = "first_inspect_time")] + public DateTime? FirstInspectTime { get; set; } + /// + /// 二检结束时间 + /// + [SugarColumn(ColumnName = "again_inspect_time")] + public DateTime? AgainInspectTime { get; set; } + /// + /// 三检结束时间 + /// + [SugarColumn(ColumnName = "final_inspect_time")] + public DateTime? FinalInspectTime { get; set; } + /// + /// 包装时间 + /// + [SugarColumn(ColumnName = "pack_time")] + public DateTime? PackTime { 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/pro/ProWorkordertimeStep.cs b/ZR.Model/MES/pro/ProWorkordertimeStep.cs new file mode 100644 index 00000000..635206a8 --- /dev/null +++ b/ZR.Model/MES/pro/ProWorkordertimeStep.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using SqlSugar; +namespace ZR.Model.MES.pro +{ + /// + /// 工单时间流转表 + /// + [SugarTable("pro_workordertime_step")] + public class ProWorkordertimeStep + { + /// + /// + /// + [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + /// + /// 工单id + /// + [SugarColumn(ColumnName = "workoder_id")] + public string WorkoderId { get; set; } + /// + /// 工单开始时间 + /// + [SugarColumn(ColumnName = "workorder_time")] + public DateTime? WorkorderTime { get; set; } + /// + /// 首检结束时间 + /// + [SugarColumn(ColumnName = "first_inspect_time")] + public DateTime? FirstInspectTime { get; set; } + /// + /// 二检结束时间 + /// + [SugarColumn(ColumnName = "again_inspect_time")] + public DateTime? AgainInspectTime { get; set; } + /// + /// 三检结束时间 + /// + [SugarColumn(ColumnName = "final_inspect_time")] + public DateTime? FinalInspectTime { get; set; } + /// + /// 包装时间 + /// + [SugarColumn(ColumnName = "pack_time")] + public DateTime? PackTime { 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.Service/mes/qc/FirstFQCService.cs b/ZR.Service/mes/qc/FirstFQCService.cs index 6a398bc3..d62b60e7 100644 --- a/ZR.Service/mes/qc/FirstFQCService.cs +++ b/ZR.Service/mes/qc/FirstFQCService.cs @@ -121,6 +121,28 @@ namespace ZR.Service.mes.qc } + /// + /// 首检写入时间流转表 + /// + /// 工单id + /// 首检结束时间 + /// + /// + + public int WriteProcessFlow_first(string workorderID, DateTime time) + { + ProWorkordertimeStep step = new ProWorkordertimeStep(); + step.FirstInspectTime = time; + step.CreatedTime = DateTime.Now; + step.WorkoderId = workorderID; + + + var x = Context.Storageable(step).WhereColumns(it => it.WorkoderId).ToStorage(); + x.AsInsertable.ExecuteCommand();//不存在插入 + x.AsUpdateable.ExecuteCommand();//存在更新 + + return 1; + } /// /// 获取检测项 (二检) @@ -1366,11 +1388,11 @@ namespace ZR.Service.mes.qc /// /// /// - /// - public int GenerateQualityStatisticsTable(string workorderID, string team) + public int GenerateQualityStatisticsTable(string workorderID, string team, DateTime firstQuality_time) { if (!string.IsNullOrEmpty(workorderID)) { + ProWorkordertimeStep step = Context.Queryable().Where(it => it.WorkoderId == workorderID).First(); #region 首检 #region 抛光 QcQualityStatisticsFirst first = new QcQualityStatisticsFirst(); @@ -1383,7 +1405,15 @@ namespace ZR.Service.mes.qc first.FinishedPartNumber = workorder_item.FinishedPartNumber; first.ProductDescription = workorder_item.ProductDescription; first.RequireNumber = workorder_item.PreviousNumber; - first.StartTime = workorder_item.CreatedTime;//这地方是不妥的 + if (step != null) + { + first.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + first.StartTime = null; + } + } @@ -1587,10 +1617,20 @@ namespace ZR.Service.mes.qc ProWorkorder_v2 workorder_item2 = Context.Queryable().Where(it => it.ClientWorkorder == workorderID).First(); if (workorder_item2 != null) { + first2.FinishedPartNumber = workorder_item2.FinishedPartNumber; first2.ProductDescription = workorder_item2.ProductDescription; first2.RequireNumber = workorder_item2.PreviousNumber; - first2.StartTime = workorder_item2.CreatedTime;//这地方是不妥的 + + if (step != null) + { + first2.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + first2.StartTime = null; + } + } @@ -1800,8 +1840,14 @@ namespace ZR.Service.mes.qc first3.FinishedPartNumber = workorder_item3.FinishedPartNumber; first3.ProductDescription = workorder_item3.ProductDescription; first3.RequireNumber = workorder_item3.PreviousNumber; - first3.StartTime = workorder_item3.CreatedTime;//这地方是不妥的 - + if (step != null) + { + first3.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + first3.StartTime = null; + } } first3.Team = team; @@ -1996,7 +2042,10 @@ namespace ZR.Service.mes.qc int qualifiedNumber_No_all = paoguang_total + damo_total + baofei_total; first.QualifiedNumber = first.RequireNumber - qualifiedNumber_No_all; - first.QualifiedRate = Math.Round(((decimal)first.QualifiedNumber / (decimal)first.RequireNumber) * 100, 3); + if (first.RequireNumber == 0) first.QualifiedRate = 0; + else + + first.QualifiedRate = Math.Round(((decimal)first.QualifiedNumber / (decimal)first.RequireNumber) * 100, 3); first.PaoguangTotal = paoguang_total; first.DamoTotal = damo_total; first.BaofeiTotal = baofei_total; @@ -2006,7 +2055,15 @@ namespace ZR.Service.mes.qc x.AsInsertable.ExecuteCommand();//不存在插入 x.AsUpdateable.IgnoreColumns(z => z.CreatedTime).ExecuteCommand();//存在更新 first2.QualifiedNumber = first2.RequireNumber - qualifiedNumber_No_all; - first2.QualifiedRate = Math.Round(((decimal)first2.QualifiedNumber / (decimal)first2.RequireNumber) * 100, 3); + if (first2.RequireNumber == 0) + { + first2.QualifiedRate = 0; + } + else + { + first2.QualifiedRate = Math.Round(((decimal)first2.QualifiedNumber / (decimal)first2.RequireNumber) * 100, 3); + } + first2.PaoguangTotal = paoguang_total; first2.DamoTotal = damo_total; first2.BaofeiTotal = baofei_total; @@ -2018,7 +2075,13 @@ namespace ZR.Service.mes.qc first3.QualifiedNumber = first3.RequireNumber - qualifiedNumber_No_all; - first3.QualifiedRate = Math.Round(((decimal)first3.QualifiedNumber / (decimal)first3.RequireNumber) * 100, 3); + if (first3.RequireNumber == 0) + { + first3.QualifiedRate = 0; + + } + else + first3.QualifiedRate = Math.Round(((decimal)first3.QualifiedNumber / (decimal)first3.RequireNumber) * 100, 3); first3.PaoguangTotal = paoguang_total; first3.DamoTotal = damo_total; first3.BaofeiTotal = baofei_total; @@ -2046,7 +2109,14 @@ namespace ZR.Service.mes.qc // XXX:二检入参修改为一检抛光记录值 //again2.RequireNumber = workorder_again2.PreviousNumber; again2.RequireNumber = paoguang_total; - again2.StartTime = workorder_again2.CreatedTime;//这地方是不妥的 + if (step != null) + { + again2.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + again2.StartTime = null; + } } @@ -2261,7 +2331,14 @@ namespace ZR.Service.mes.qc // XXX:二检(抛光)报废分数据上件数为首检抛光数 again3.RequireNumber = paoguang_total; // again3.RequireNumber = workorder_again3.PreviousNumber; - again3.StartTime = workorder_again3.CreatedTime;//这地方是不妥的 + if (step != null) + { + again3.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + again3.StartTime = null; + } } @@ -2464,7 +2541,12 @@ namespace ZR.Service.mes.qc int qualifiedNumber_No_all_again = damo_total_again + baofei_total_again3; again2.QualifiedNumber = again2.RequireNumber - qualifiedNumber_No_all_again; - again2.QualifiedRate = Math.Round(((decimal)again2.QualifiedNumber / (decimal)again2.RequireNumber) * 100, 3); + if (again2.RequireNumber == 0) + { + again2.QualifiedNumber = 0; + } + else + again2.QualifiedRate = Math.Round(((decimal)again2.QualifiedNumber / (decimal)again2.RequireNumber) * 100, 3); again2.DamoTotal = damo_total_again; again2.BaofeiTotal = baofei_total_again3; @@ -2478,7 +2560,12 @@ namespace ZR.Service.mes.qc again3.QualifiedNumber = again3.RequireNumber - qualifiedNumber_No_all_again; - again3.QualifiedRate = Math.Round(((decimal)again3.QualifiedNumber / (decimal)again3.RequireNumber) * 100, 3); + if (again3.RequireNumber == 0) + { + again3.QualifiedRate = 0; + } + else + again3.QualifiedRate = Math.Round(((decimal)again3.QualifiedNumber / (decimal)again3.RequireNumber) * 100, 3); again3.DamoTotal = damo_total_again; again3.BaofeiTotal = baofei_total_again3; @@ -2506,7 +2593,14 @@ namespace ZR.Service.mes.qc // XXX:三检(包装),生产投入数为(一检投入数 - (一检报废数 + 二检报废数)) final2.RequireNumber = workorder_final2.PreviousNumber - (baofei_total + baofei_total_again3); - final2.StartTime = workorder_final2.CreatedTime;//这地方是不妥的 + if (step != null) + { + final2.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + final2.StartTime = null; + } } @@ -2721,9 +2815,16 @@ namespace ZR.Service.mes.qc final3.FinishedPartNumber = workorder_final3.FinishedPartNumber; final3.ProductDescription = workorder_final3.ProductDescription; // XXX:三检(包装-投入数) - final3.RequireNumber = workorder_final3.PreviousNumber - (baofei_total + baofei_total_again3); + final3.RequireNumber = workorder_final3.PreviousNumber - (baofei_total + baofei_total_again3); //final3.RequireNumber = workorder_final3.PreviousNumber; - final3.StartTime = workorder_final3.CreatedTime;//这地方是不妥的 + if (step != null) + { + final3.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + final3.StartTime = null; + } } @@ -2926,7 +3027,12 @@ namespace ZR.Service.mes.qc int qualifiedNumber_No_all_final = baofei_total_final + damo_total_final; final2.QualifiedNumber = final3.RequireNumber - qualifiedNumber_No_all_final; - final2.QualifiedRate = Math.Round(((decimal)final2.QualifiedNumber / (decimal)final2.RequireNumber) * 100, 3); + if (final2.RequireNumber == 0) + { + final2.QualifiedNumber = 0; + } + else + final2.QualifiedRate = Math.Round(((decimal)final2.QualifiedNumber / (decimal)final2.RequireNumber) * 100, 3); final2.DamoTotal = damo_total_final; final2.BaofeiTotal = baofei_total_final; @@ -2962,13 +3068,14 @@ namespace ZR.Service.mes.qc total2.FinishedPartNumber = again2.FinishedPartNumber; total2.ProductDescription = again2.ProductDescription; total2.RequireNumber = again2.RequireNumber; - total2.StartTime = again2.CreatedTime;//这地方是不妥的 - - - - - - + if (step != null) + { + total2.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + total2.StartTime = null; + } total2.Team = team; @@ -3024,7 +3131,15 @@ namespace ZR.Service.mes.qc total3.FinishedPartNumber = again3.FinishedPartNumber; total3.ProductDescription = again3.ProductDescription; total3.RequireNumber = again3.RequireNumber; - total3.StartTime = again3.CreatedTime;//这地方是不妥的 + if (step != null) + { + total3.StartTime = step.FirstInspectTime;//这地方是不妥的 + } + else + { + total3.StartTime = null; + + } @@ -3034,8 +3149,8 @@ namespace ZR.Service.mes.qc total3.Remark = "报废"; total3.Remark2 = 3; - total3.PaintSuokong = (again3.PaintSuokong??0) + (final3.PaintSuokong??0) + (first3.PaintSuokong??0); - total3.PaintZhengkong = (again3.PaintZhengkong ?? 0) + (final3.PaintZhengkong ?? 0) + (first3.PaintZhengkong ?? 00) ; + total3.PaintSuokong = (again3.PaintSuokong ?? 0) + (final3.PaintSuokong ?? 0) + (first3.PaintSuokong ?? 0); + total3.PaintZhengkong = (again3.PaintZhengkong ?? 0) + (final3.PaintZhengkong ?? 0) + (first3.PaintZhengkong ?? 00); total3.PaintShiguang = (again3.PaintShiguang ?? 0) + (final3.PaintShiguang ?? 0) + (first3.PaintShiguang ?? 0); total3.PaintSecha = (again3.PaintSecha ?? 0) + (final3.PaintSecha ?? 0) + (first3.PaintSecha ?? 0); total3.PaintDianzi = (again3.PaintDianzi ?? 0) + (final3.PaintDianzi ?? 0) + (first3.PaintDianzi ?? 0); @@ -3075,9 +3190,13 @@ namespace ZR.Service.mes.qc #region 计算汇总 int qualifiedNumber_No_all_total = qualifiedNumber_No_all + qualifiedNumber_No_all_again + qualifiedNumber_No_all_final; - total2.QualifiedNumber = (again2.RequireNumber??0) - qualifiedNumber_No_all_total; - - total2.QualifiedRate = Math.Round(((decimal)total2.QualifiedNumber / (decimal)total2.RequireNumber) * 100, 3); + total2.QualifiedNumber = (again2.RequireNumber ?? 0) - qualifiedNumber_No_all_total; + if (total2.RequireNumber == 0) + { + total2.QualifiedRate = 0; + } + else + total2.QualifiedRate = Math.Round(((decimal)total2.QualifiedNumber / (decimal)total2.RequireNumber) * 100, 3); total2.DamoTotal = damo_total_again + damo_total_final; total2.BaofeiTotal = baofei_total_again3 + baofei_total_final; @@ -3087,8 +3206,13 @@ namespace ZR.Service.mes.qc x_total_2.AsInsertable.ExecuteCommand();//不存在插入 x_total_2.AsUpdateable.IgnoreColumns(z => z.CreatedTime).ExecuteCommand();//存在更新 - total3.QualifiedNumber = again3.RequireNumber??0 - qualifiedNumber_No_all_total; - total3.QualifiedRate = Math.Round(((decimal)total3.QualifiedNumber / (decimal)total3.RequireNumber) * 100, 3); + total3.QualifiedNumber = again3.RequireNumber ?? 0 - qualifiedNumber_No_all_total; + if (total3.RequireNumber == 0) + { + total3.QualifiedRate = 0; + } + else + total3.QualifiedRate = Math.Round(((decimal)total3.QualifiedNumber / (decimal)total3.RequireNumber) * 100, 3); total3.DamoTotal = damo_total_again + damo_total_final; total3.BaofeiTotal = baofei_total_again3 + baofei_total_final; @@ -3114,5 +3238,6 @@ namespace ZR.Service.mes.qc } return 1; } + } } \ No newline at end of file diff --git a/ZR.Service/mes/qc/IService/IFirstFQCService.cs b/ZR.Service/mes/qc/IService/IFirstFQCService.cs index 4774be27..01fe5141 100644 --- a/ZR.Service/mes/qc/IService/IFirstFQCService.cs +++ b/ZR.Service/mes/qc/IService/IFirstFQCService.cs @@ -15,6 +15,8 @@ namespace ZR.Service.mes.qc.IService public CheckItemTableDTO GetCheckItemTable_first(string workorderID); public CheckItemTableDTO GetCheckItemTable_again(string workorderID); public CheckItemTableDTO GetCheckItemTable_thirty(string workorderID); + + public int WriteProcessFlow_first(string workorderID, DateTime time); 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); @@ -42,7 +44,7 @@ namespace ZR.Service.mes.qc.IService public int UpdateWorkorderStatus(string workorder_id); - public int GenerateQualityStatisticsTable(string workorderID, string team); + public int GenerateQualityStatisticsTable(string workorderID, string team,DateTime firstQuality_time); }