|
|
using Admin.Core.Common;
|
|
|
using Admin.Core.IService;
|
|
|
using Admin.Core.Model;
|
|
|
using Admin.Core.Model.Model_New;
|
|
|
using log4net;
|
|
|
using Serilog;
|
|
|
using StackExchange.Profiling.Internal;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Timers;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 测温数据采集
|
|
|
/// </summary>
|
|
|
namespace Aucma.Core.TemperatureTask
|
|
|
{
|
|
|
public class AucamTemperatureMeasurementService: IAucamTemperatureMeasurementService
|
|
|
{
|
|
|
public delegate Task RefreshBoxFoamDataDelegate();
|
|
|
public static event RefreshBoxFoamDataDelegate? RefreshBoxFoamDataDelegateEvent;
|
|
|
|
|
|
private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(AucamTemperatureMeasurementService));
|
|
|
private readonly ITestedCodeMESServices _codeMESServices;
|
|
|
private readonly ITemperatureHistoryServices _temperatureHistoryServices;
|
|
|
private readonly IMaterialCompletionServices _materialCompletionServices;
|
|
|
private readonly IPrintBarCodeServices _printBarCodeServices;
|
|
|
private readonly IReportQualityInspectionServices _reportQualityInspectionServices;
|
|
|
|
|
|
|
|
|
System.Timers.Timer timer1 = new System.Timers.Timer(5000);
|
|
|
bool flag = true;
|
|
|
public AucamTemperatureMeasurementService(ITemperatureHistoryServices temperatureHistoryServices,
|
|
|
ITestedCodeMESServices codeMESServices, IMaterialCompletionServices materialCompletionServices,
|
|
|
IPrintBarCodeServices printBarCodeServices, IReportQualityInspectionServices reportQualityInspectionServices)
|
|
|
{
|
|
|
_codeMESServices = codeMESServices;
|
|
|
_temperatureHistoryServices = temperatureHistoryServices;
|
|
|
_materialCompletionServices = materialCompletionServices;
|
|
|
_printBarCodeServices = printBarCodeServices;
|
|
|
_reportQualityInspectionServices = reportQualityInspectionServices;
|
|
|
}
|
|
|
|
|
|
public void Execute()
|
|
|
{
|
|
|
timer1.Elapsed += new System.Timers.ElapsedEventHandler(Run); //到达时间的时候执行事件;
|
|
|
timer1.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
|
|
|
timer1.Enabled = true;//需要调用 timer.Start()或者timer.Enabled = true来启动它,
|
|
|
timer1.Start();//timer.Start()的内部原理还是设置timer.Enabled = true;
|
|
|
}
|
|
|
|
|
|
#region 采集任务处理
|
|
|
/// <summary>
|
|
|
/// 采集任务处理
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
private async void Run(object? sender, ElapsedEventArgs e)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
|
|
|
if (flag)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
flag = false;
|
|
|
var historyList = _codeMESServices.QueryAsync(d => d.IsSync == 0).Result;
|
|
|
if (historyList == null || historyList.Count == 0) return;
|
|
|
Console.WriteLine($"【{DateTime.Now}】开始读取测温数据");
|
|
|
Console.WriteLine(historyList.ToJson());
|
|
|
var query = (from a in historyList
|
|
|
select new TemperatureHistory
|
|
|
{
|
|
|
Line_No = a.Line_No,
|
|
|
GongwNo = a.GongwNo,
|
|
|
CpNo = a.CpNo,
|
|
|
CpModel = a.CpModel,
|
|
|
FactoryModel = a.factoryModel,
|
|
|
Voltage = a.Voltage,
|
|
|
Frequency = a.Frequency,
|
|
|
Point2 = a.Point2,
|
|
|
TestTime = a.TestTime,
|
|
|
TestedTime = a.TestedTime,
|
|
|
Etemp = a.Etemp,
|
|
|
BeginDateTime = Convert.ToDateTime(a.BeginDateTime),
|
|
|
CpResult = a.CpResult,
|
|
|
EndDateTime = Convert.ToDateTime(a.EndDateTime),
|
|
|
UserName = a.UserName,
|
|
|
Remark = a.Remark,
|
|
|
TestNo = a.TestNo,
|
|
|
Temp_Mes = a.Temp_Mes,
|
|
|
Power_Mes = a.Power_Mes,
|
|
|
Part_Mes = a.Part_Mes,
|
|
|
LowV_Time = a.LowV_Time,
|
|
|
LowV_PowerMin = a.LowV_PowerMin,
|
|
|
LowV_PowerMax = a.LowV_PowerMax,
|
|
|
LowV_PowerFact = a.LowV_PowerFact,
|
|
|
LowVoltage = a.LowVoltage,
|
|
|
SyncDate = DateTime.Now,
|
|
|
IsFlag = 0
|
|
|
}).ToList();
|
|
|
|
|
|
if (query == null || query.Count == 0) return;
|
|
|
logHelper.Error($"读取数据个数:{historyList.Count()}");
|
|
|
Console.WriteLine($"【{DateTime.Now}】读取数据个数:{historyList.Count()}");
|
|
|
var result = _temperatureHistoryServices.AddAsync(query).Result;
|
|
|
if (result > 0)
|
|
|
{
|
|
|
historyList.ForEach(d => d.IsSync = 1);
|
|
|
int r = _codeMESServices.UpateTemperatureHistoryFlag(historyList);
|
|
|
if (r > 0)
|
|
|
{
|
|
|
InsertToCompleteAndCheck(query);//保存过点数据
|
|
|
ToMes();//更新测温质检数据
|
|
|
Console.WriteLine($"【{DateTime.Now}】保存测温数据成功!保存数量:{query.Count}");
|
|
|
}
|
|
|
}
|
|
|
Console.WriteLine($"【{DateTime.Now}】测温数据同步成功!数量:{query.Count}");
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
Console.WriteLine($"【{DateTime.Now}】 {ex.Message}");
|
|
|
logHelper.Error(ex.Message);
|
|
|
}
|
|
|
finally { flag = true; }
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
logHelper.Error($"测温数据处理异常:{ex.Message}");
|
|
|
Console.WriteLine($"测温数据处理异常:{ex.Message}");
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 保存过点数和测温质检
|
|
|
|
|
|
/// <summary>
|
|
|
/// 保存过点数和测温质检
|
|
|
/// </summary>
|
|
|
/// <param name="list"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool InsertToCompleteAndCheck(List<TemperatureHistory> list)
|
|
|
{
|
|
|
List<MaterialCompletion> completionList = new List<MaterialCompletion>();
|
|
|
var printBarCodeList = _printBarCodeServices.QueryAsync().Result;
|
|
|
foreach (var temperatureHistory in list)
|
|
|
{
|
|
|
PrintBarCode barcode = printBarCodeList.First(d => d.MaterialBarcode == temperatureHistory.CpNo);
|
|
|
if (barcode == null) return false;
|
|
|
#region 更新过点数据
|
|
|
MaterialCompletion completion = new MaterialCompletion();
|
|
|
completion.OrderCode = barcode.OrderCode;
|
|
|
completion.MaterialBarcode = temperatureHistory.CpNo;
|
|
|
completion.MaterialCode = barcode.MaterialCode;
|
|
|
completion.MaterialName = barcode.MaterialName;
|
|
|
string stationName = Appsettings.app("Common", "StationName");
|
|
|
completion.StationName = stationName;
|
|
|
completion.ProductLineCode = "CX_02";
|
|
|
completion.CompleteDate = DateTime.Now;
|
|
|
completionList.Add(completion);
|
|
|
#endregion
|
|
|
}
|
|
|
int r = _materialCompletionServices.AddAsync(completionList).Result;
|
|
|
if (r > 0) return true;
|
|
|
else return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 发送质检请求
|
|
|
/// <summary>
|
|
|
/// 发送质检请求
|
|
|
/// </summary>
|
|
|
/// <param name="list"></param>
|
|
|
/// <returns></returns>
|
|
|
public void ToMes()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
var list = _temperatureHistoryServices.QueryAsync(d => d.IsFlag == 0).Result;
|
|
|
if (list == null || list.Count == 0) return;
|
|
|
Console.WriteLine($"【{DateTime.Now}】开始向质检发送测温数据");
|
|
|
foreach (var temperatureHistory in list)
|
|
|
{
|
|
|
//var r= _reportQualityInspectionServices.FirstAsync(d => d.BarCode == temperatureHistory.CpNo && d.TreatmentMeasure == "3"&& d.StationCode=="2009").Result;
|
|
|
//if (r != null)
|
|
|
//{
|
|
|
// var checkList = _temperatureHistoryServices.GetAllIsFlag(temperatureHistory.ObjId).Result;
|
|
|
// if (checkList != null)
|
|
|
// {
|
|
|
// var check = checkList.First();
|
|
|
// r.FinishTime = check.FinishTime;
|
|
|
// r.BarCode = check.BarCode;
|
|
|
// r.MaterialName = check.MaterialName;
|
|
|
// r.ProcessCode = check.ProcessCode;
|
|
|
// r.TestItemCode = check.TestItemCode;
|
|
|
// r.QualityDefectCode = check.QualityDefectCode;
|
|
|
// r.QualityDefectName = check.QualityDefectName;
|
|
|
// r.TreatmentMeasure = check.TreatmentMeasure;
|
|
|
// r.ProcessResult = check.ProcessResult;
|
|
|
// r.GroupCode = check.GroupCode;
|
|
|
// r.InspectorCode = check.InspectorCode;
|
|
|
// r.InspectorTime = check.InspectorTime;
|
|
|
// r.ReworkNumber = check.ReworkNumber;
|
|
|
// r.IsFlag = check.IsFlag;
|
|
|
// r.StationCode = check.StationCode;
|
|
|
// r.UpdatedTime = check.UpdateTime;
|
|
|
|
|
|
// bool reportResult = _reportQualityInspectionServices.UpdateAsync(r).Result;
|
|
|
// if (reportResult)
|
|
|
// {
|
|
|
// temperatureHistory.IsFlag = 1;
|
|
|
// _ = _temperatureHistoryServices.UpdateAsync(temperatureHistory).Result;
|
|
|
// }
|
|
|
// }
|
|
|
//}
|
|
|
//else
|
|
|
{
|
|
|
var checkList = _temperatureHistoryServices.GetAllIsFlag(temperatureHistory.ObjId).Result;
|
|
|
if (checkList != null)
|
|
|
{
|
|
|
var check = checkList.First();
|
|
|
ReportQualityInsPection report = new ReportQualityInsPection();
|
|
|
if (check.TreatmentMeasure == "3")
|
|
|
{
|
|
|
report.FinishTime = null;
|
|
|
report.UpdatedTime = null;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//report.FinishTime = check.FinishTime;
|
|
|
report.UpdatedTime = null;
|
|
|
}
|
|
|
|
|
|
report.BarCode = check.BarCode;
|
|
|
report.MaterialName = check.MaterialName;
|
|
|
report.ProcessCode = check.ProcessCode;
|
|
|
report.TestItemCode = check.TestItemCode;
|
|
|
report.QualityDefectCode = check.QualityDefectCode;
|
|
|
report.QualityDefectName = check.QualityDefectName;
|
|
|
report.TreatmentMeasure = check.TreatmentMeasure;
|
|
|
//report.ProcessResult = check.ProcessResult;
|
|
|
report.GroupCode = check.GroupCode;
|
|
|
report.InspectorCode = check.InspectorCode;
|
|
|
report.InspectorTime = check.InspectorTime;
|
|
|
//report.ReworkNumber = check.ReworkNumber;
|
|
|
//report.IsFlag = check.IsFlag;
|
|
|
report.StationCode = check.StationCode;
|
|
|
report.UpdatedTime = check.UpdateTime;
|
|
|
int reportResult = _reportQualityInspectionServices.AddAsync(report).Result;
|
|
|
if (reportResult > 0)
|
|
|
{
|
|
|
temperatureHistory.IsFlag = 1;
|
|
|
_ = _temperatureHistoryServices.UpdateAsync(temperatureHistory).Result;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Console.WriteLine($"【{DateTime.Now}】更新测温质检数据成功!");
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
Console.WriteLine($"【{DateTime.Now}】更新测温质检数据失败!原因:{ex.Message}");
|
|
|
}
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
}
|