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