质量报表时间

This commit is contained in:
qianhao.xu 2024-02-24 15:33:40 +08:00
parent 3a609eaa3e
commit 8a9176549a
5 changed files with 308 additions and 35 deletions

View File

@ -47,6 +47,20 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC
return SUCCESS(itemTableDTO);
}
/// <summary>
/// 写入工序时间 (首检)
/// </summary>
/// <returns></returns>
[HttpGet("writeProcessFlow_first")]
public IActionResult WriteProcessFlow_first(string workorderID,DateTime time)
{
int result = fQCService.WriteProcessFlow_first(workorderID, time);
return SUCCESS(result);
}
/// <summary>
/// 获取 检测项 填充 (二检)
/// </summary>
@ -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);
}
}
}

View File

@ -0,0 +1,60 @@
namespace ZR.Model.MES.md
{
/// <summary>
/// 工单时间流转表
///</summary>
[SugarTable("pro_workordertime_step")]
public class ProWorkordertimeStep
{
/// <summary>
///
///</summary>
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 工单开始时间
///</summary>
[SugarColumn(ColumnName = "workorder_time")]
public DateTime? WorkorderTime { get; set; }
/// <summary>
/// 首检结束时间
///</summary>
[SugarColumn(ColumnName = "first_inspect_time")]
public DateTime? FirstInspectTime { get; set; }
/// <summary>
/// 二检结束时间
///</summary>
[SugarColumn(ColumnName = "again_inspect_time")]
public DateTime? AgainInspectTime { get; set; }
/// <summary>
/// 三检结束时间
///</summary>
[SugarColumn(ColumnName = "final_inspect_time")]
public DateTime? FinalInspectTime { get; set; }
/// <summary>
/// 包装时间
///</summary>
[SugarColumn(ColumnName = "pack_time")]
public DateTime? PackTime { get; set; }
/// <summary>
/// 创建人
///</summary>
[SugarColumn(ColumnName = "CREATED_BY")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
///</summary>
[SugarColumn(ColumnName = "CREATED_TIME")]
public DateTime? CreatedTime { get; set; }
/// <summary>
/// 更新人
///</summary>
[SugarColumn(ColumnName = "UPDATED_BY")]
public string UpdatedBy { get; set; }
/// <summary>
/// 更新时间
///</summary>
[SugarColumn(ColumnName = "UPDATED_TIME")]
public DateTime? UpdatedTime { get; set; }
}
}

View File

@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace ZR.Model.MES.pro
{
/// <summary>
/// 工单时间流转表
///</summary>
[SugarTable("pro_workordertime_step")]
public class ProWorkordertimeStep
{
/// <summary>
///
///</summary>
[SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 工单id
///</summary>
[SugarColumn(ColumnName = "workoder_id")]
public string WorkoderId { get; set; }
/// <summary>
/// 工单开始时间
///</summary>
[SugarColumn(ColumnName = "workorder_time")]
public DateTime? WorkorderTime { get; set; }
/// <summary>
/// 首检结束时间
///</summary>
[SugarColumn(ColumnName = "first_inspect_time")]
public DateTime? FirstInspectTime { get; set; }
/// <summary>
/// 二检结束时间
///</summary>
[SugarColumn(ColumnName = "again_inspect_time")]
public DateTime? AgainInspectTime { get; set; }
/// <summary>
/// 三检结束时间
///</summary>
[SugarColumn(ColumnName = "final_inspect_time")]
public DateTime? FinalInspectTime { get; set; }
/// <summary>
/// 包装时间
///</summary>
[SugarColumn(ColumnName = "pack_time")]
public DateTime? PackTime { get; set; }
/// <summary>
/// 创建人
///</summary>
[SugarColumn(ColumnName = "CREATED_BY")]
public string CreatedBy { get; set; }
/// <summary>
/// 创建时间
///</summary>
[SugarColumn(ColumnName = "CREATED_TIME")]
public DateTime? CreatedTime { get; set; }
/// <summary>
/// 更新人
///</summary>
[SugarColumn(ColumnName = "UPDATED_BY")]
public string UpdatedBy { get; set; }
/// <summary>
/// 更新时间
///</summary>
[SugarColumn(ColumnName = "UPDATED_TIME")]
public DateTime? UpdatedTime { get; set; }
}
}

View File

@ -121,6 +121,28 @@ namespace ZR.Service.mes.qc
}
/// <summary>
/// 首检写入时间流转表
/// </summary>
/// <param name="workorderID">工单id</param>
/// <param name="time">首检结束时间</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
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;
}
/// <summary>
/// 获取检测项 (二检)
@ -1366,11 +1388,11 @@ namespace ZR.Service.mes.qc
/// <param name="workorderID"></param>
/// <param name="team"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
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<ProWorkordertimeStep>().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<ProWorkorder_v2>().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;
}
}
}

View File

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