From a3e2b38a895b32ac08bb4acf18a4e57f65651c4a Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 18 8月 2024 08:14:51 +0800
Subject: [PATCH] 清洗机获取采集数据
---
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP7009.cs | 189 +++++++++++++++++++++++++++++++++++++
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs | 67 +++++++++++++
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs | 6 +
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj | 1
4 files changed, 263 insertions(+), 0 deletions(-)
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
index 0e02dea..04403fd 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -804,6 +804,73 @@
}
/// <summary>
+ /// 璐ㄩ噺妫�娴嬪畬鎴�-OP70涓撶敤
+ /// </summary>
+ /// <param name="logMiddle"></param>
+ /// <param name="type"></param>
+ public static void QualityInfoCompleteForOP70(WorkPieceLogMiddle logMiddle, LogType type)
+ {
+ if (string.IsNullOrEmpty(logMiddle.QualityOP70To1) && string.IsNullOrEmpty(logMiddle.QualityOP70To2) && string.IsNullOrEmpty(logMiddle.QualityOP70To3))
+ {
+ Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}宸ュ簭鐩戞帶娓呮礂鏈烘暟鎹� 璇诲彇宸ヤ欢鐮佹暟鎹甗{logMiddle.WorkPieceID ?? "绌�"}]鑾峰彇鐨勪笁涓�奸兘鏄┖鐨勶紝涓嶅鐞嗚繑鍥�");
+ return;
+ }
+ using (DbModel db = new DbModel())
+ {
+ try
+ {
+ bool isAdd = false;
+ if (logMiddle.WorkPieceID.Length == 22)
+ {
+ var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == logMiddle.WorkPieceID).FirstOrDefault();
+ if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
+ {//鎻掑叆QualityDataInfo琛�
+ isAdd = true;
+ qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(logMiddle);
+ }
+
+ qualityData.QualityStateUpdateUser = "OP7009";
+ qualityData.QualityReceiveTime = DateTime.Now;
+
+ //鐗规畩澶勭悊OP70鐨勮川閲忔暟鎹�
+ if (!string.IsNullOrEmpty(logMiddle.QualityOP70To1) && !string.IsNullOrEmpty(qualityData.QualityOP70To1))
+ {
+ qualityData.QualityOP70To1 = logMiddle.QualityOP70To1;
+ }
+ if (!string.IsNullOrEmpty(logMiddle.QualityOP70To2) && !string.IsNullOrEmpty(qualityData.QualityOP70To2))
+ {
+ qualityData.QualityOP70To2 = logMiddle.QualityOP70To2;
+ }
+ if (!string.IsNullOrEmpty(logMiddle.QualityOP70To3) && !string.IsNullOrEmpty(qualityData.QualityOP70To3))
+ {
+ qualityData.QualityOP70To3 = logMiddle.QualityOP70To3;
+ }
+
+ db.QualityDataInfoLog.Add(GetAddQualityDataInfoLog(qualityData));//鎻掑叆鏃ュ織
+
+ if (isAdd)
+ {
+ db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData));
+ }
+ db.SaveChanges();//淇濆瓨鏁版嵁
+ }
+ else
+ {
+ Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}宸ュ簭鐩戞帶娓呮礂鏈烘暟鎹� 璇诲彇宸ヤ欢鐮佹暟鎹甗{logMiddle.WorkPieceID ?? "绌�"}]鏃跺紓甯革細");
+
+ }
+ }
+ catch (Exception ex)
+ {
+ Log4NetHelper.WriteErrorLog(type, $" {logMiddle.WorkingProcedure}宸ュ簭鐩戞帶娓呮礂鏈烘暟鎹� 璇诲彇宸ヤ欢鐮佹暟鎹甗{logMiddle.WorkPieceID ?? "绌�"}]鏃跺紓甯革細", ex);
+ }
+ finally
+ {
+ }
+ }
+ }
+
+ /// <summary>
/// 璧嬪�� 淇敼浜� 銆怑ditby shaocx,2024-07-05銆�
/// </summary>
/// <param name="logMiddle"></param>
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP7009.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP7009.cs
new file mode 100644
index 0000000..e818816
--- /dev/null
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/Special/DataCaptureHandler_OP7009.cs
@@ -0,0 +1,189 @@
+锘縰sing iWare_SCADA_BusinessLogical.BLL;
+using iWare_SCADA_BusinessLogical.Utils;
+using iWare_SCADA_Model;
+using log4net;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Web.UI.WebControls;
+
+namespace iWare_SCADA_BusinessLogical
+{
+ /// <summary>
+ /// OP70 鐗规畩鏁版嵁閲囬泦
+ /// </summary>
+ public class DataCaptureHandler_OP7009 : DataCaptureHandler
+ {
+ public static readonly DataCaptureHandler_OP7009 Instance = new DataCaptureHandler_OP7009();
+
+ public DataCaptureHandler_OP7009()
+ {
+ }
+
+ public override string WorkingProcedure
+ {
+ get { return _dataCaptureConfig.WorkingProcedure; }
+ }
+
+ public override string DataCapturePointCode
+ {
+ get { return _dataCaptureConfig.DataCapturePointCode; }
+ }
+ public override string DataCapturePointCname
+ {
+ get { return _dataCaptureConfig.DataCapturePointCname; }
+ }
+
+
+ public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig)
+ {
+ }
+
+ public override void DataCaptureStart()
+ {
+ if (IsCaptureflag)
+ {
+ //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig);
+ var plcService = SystemValue.GetPLCService(_dataCaptureConfig);
+ if (plcService == null)
+ {
+ SystemValue.lbl_Alert_OP1002 = $"{RandomHelper.GenerateRandomCode(4)} 娌℃湁鎵惧埌{WorkingProcedure}鐨凱LC璁惧";
+ return;
+ }
+ if (plcService != null && !plcService.IsConnected)
+ {
+ SystemValue.PLCServiceReconnect(plcService);
+ //plcService.Close();
+ //plcService.OpenService();
+ }
+ while (true)
+ {
+ ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor();
+ threadStatusMonitor.Threadcode = DataCapturePointCode;
+ threadStatusMonitor.Threadcname = DataCapturePointCname;
+ threadStatusMonitor.Threadendtime = DateTime.Now;
+ //threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
+ threadStatusMonitor.Threadstatue = 0;
+ threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
+ try
+ {
+ //_dataCaptureConfig
+ if (plcService == null || !plcService.IsConnected)
+ {
+ threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLC杩炴帴宸叉柇寮�锛屾鍦ㄥ皾璇曟墦寮�!";
+
+ SystemValue.lbl_Alert_OP1002 = $" {RandomHelper.GenerateRandomCode(4)} {WorkingProcedure} PLC杩炴帴宸叉柇寮�锛屾鍦ㄥ皾璇曟墦寮�!";
+ SystemValue.PLCServiceReconnect(plcService);
+ //plcService.Close();
+ //plcService.OpenService();
+ Thread.Sleep(100);
+ continue;
+ }
+ else
+ {
+ Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}宸ュ簭娴嬫爣璁拌鍙杮DateTime.Now} *****0***");
+
+
+ Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}宸ュ簭娴嬫爣璁拌鍙杮DateTime.Now}***1****");
+
+ threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
+ WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
+ wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ wplog.WorkingProcedure = WorkingProcedure;
+ wplog.EquipmentID = _dataCaptureConfig.EquipmentID;
+ wplog.Remarks = WorkingProcedure;
+ wplog.MonitoringPoint = DataCapturePointCode;
+ wplog.CreatedTime = DateTimeHelper.GetDateTime();
+ wplog.CreatedUserName = DataCapturePointCode;
+ wplog.UpdatedTime = DateTimeHelper.GetDateTime();
+ wplog.UpdatedUserName = Environment.MachineName + "鑷姩" + Thread.CurrentThread.ManagedThreadId.ToString();
+ wplog.OnlineTime = DateTimeHelper.GetDateTime();
+ wplog.IsDeleted = false;
+ wplog.QualityType = QualityType.Online.ToString();
+
+ foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
+ {
+ try
+ {
+ var valuecol = plcService.ReadValuePoint(col.DbNumber, col.Offset, col.DataCaptureColumnLength.Value, PLCManger.GetTypeForString(col.DataCaptureColumnType));
+ //wplog.GetType().GetProperty(col.DataCaptureColumnTabelName).SetValue(wplog, valuecol);//缁欏姩鎬佸瓧娈佃祴鍊�
+ var set = wplog.GetType().GetProperty(col.DataCaptureColumnTabelName);
+ if (set == null)
+ {
+ Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {WorkingProcedure}宸ュ簭鐩戞帶璇荤爜鏍囪 璇诲彇宸ヤ欢鐮佸姩鎬佺敱浜庡瓧娈靛悕娌℃壘鍒帮紝璧嬪�笺�恵WorkingProcedure ?? "绌哄瓧绗︿覆"}銆戝け璐wplog.Id}");
+ }
+ Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}宸ュ簭娴嬫爣璁拌鍙杮DateTime.Now}***2****{col.DataCaptureColumnTabelName} 鍊� {valuecol.ToString() ?? ""}");
+
+ if (col.DataCaptureColumnTabelName.Contains("Quality"))
+ {//瀛楁鍚嶅寘鍚玅uality鏄涓烘槸璐ㄩ噺鏁版嵁锛岄兘鏄浆鎹㈡垚string
+ set.SetValue(wplog, valuecol.ToString());//缁欏姩鎬佸瓧娈佃祴鍊�
+ }
+ else
+ {
+ set.SetValue(wplog, valuecol);//缁欏姩鎬佸瓧娈佃祴鍊�
+ }
+ }
+ catch (Exception setex)
+ {
+ Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {WorkingProcedure}宸ュ簭鐩戞帶璇荤爜鏍囪 璇诲彇宸ヤ欢鐮佸姩鎬佽祴鍊笺�恵WorkingProcedure ?? "绌哄瓧绗︿覆"}銆戝紓甯竰wplog.Id}", setex);
+ }
+ }
+
+ Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}宸ュ簭娴嬫爣璁拌鍙杮DateTime.Now}***3****");
+
+ //鑾峰彇OP70鏈粨鏉熺殑宸ヤ欢鍒楄〃
+ var ooDateTime = Convert.ToDateTime("0001-01-01");
+ List<WorkPieceProcess> noFinishWorkPieceProcessList = null;
+ using (DbModel db = new DbModel())
+ {
+ var dateTime = DateTime.Now;
+ noFinishWorkPieceProcessList = db.WorkPieceProcess.Where(x => x.CreatedTime >= DateTime.Now.AddHours(-12)
+ && x.EndTime == ooDateTime).ToList();
+ }
+ if (noFinishWorkPieceProcessList?.Count > 0)
+ {
+ foreach (var item in noFinishWorkPieceProcessList)
+ {
+ wplog.WorkPieceID = item.WorkPieceID;
+ WorkPieceInfoManager.QualityInfoCompleteForOP70(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
+ threadStatusMonitor.Threadstatue = 1;
+ }
+ }
+ }
+
+
+ SystemValue.lbl_Alert_OP1002 = $"abcdefg:{RandomHelper.GenerateRandomCode(4)}";
+ if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10)
+ {
+ Thread.Sleep(5000);
+ }
+ else
+ {
+ Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ SystemValue.lbl_Alert_OP1002 = $" {RandomHelper.GenerateRandomCode(4)} 璇诲彇{DataCapturePointCode}璐ㄩ噺淇℃伅 鍑虹幇寮傚父锛岃鏌ョ湅鏃ュ織锛�";
+ Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"璇诲彇 {DataCapturePointCode}璐ㄩ噺淇℃伅鏃跺紓甯革細", ex);
+ }
+ finally
+ {
+ WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
+ }
+ }
+ }
+ else
+ {
+ SystemValue.lbl_Alert_OP1002 = $" {RandomHelper.GenerateRandomCode(4)} {DataCapturePointCode}璐ㄩ噺淇℃伅 涓嶅仛鏍¢獙锛岃纭閰嶇疆淇℃伅锛�";
+ Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}璐ㄩ噺淇℃伅 涓嶅仛鏍¢獙锛岃纭鏄惁閰嶇疆寮傚父");
+ }
+ }
+
+ }
+}
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj
index b547732..f524d2e 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj
@@ -94,6 +94,7 @@
<Compile Include="DataCaptureHandlerV2\DataCaptureHandler_06.cs" />
<Compile Include="DataCaptureHandlerV2\DataCaptureHandler_07.cs" />
<Compile Include="DataCaptureHandlerV2\DataCaptureHandler_OP0501.cs" />
+ <Compile Include="DataCaptureHandlerV2\Special\DataCaptureHandler_OP7009.cs" />
<Compile Include="DataCaptureHandlerV2\Special\DataCaptureHandler_OP1002.cs" />
<Compile Include="DataCaptureHandlerV2\Special\DataCaptureHandler_OP1003.cs" />
<Compile Include="DataCaptureHandlerV2\Special\DataCaptureHandler_OP1004.cs" />
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
index a05448e..f16f14c 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
@@ -1440,6 +1440,7 @@
DataCaptureHandler_OP6002.Instance._dataCaptureConfig = config;
_dataCaptureHandler.Add(DataCaptureHandler_OP6002.Instance);
break;
+
#endregion
#region 03 NOOK鎺ㄥ嚭
@@ -1501,6 +1502,11 @@
_dataCaptureHandler.Add(dc06);
break;
#endregion
+
+ case "OP7009"://娓呮礂鏈鸿幏鍙栭噰闆嗘暟鎹�
+ DataCaptureHandler_OP7009.Instance._dataCaptureConfig = config;
+ _dataCaptureHandler.Add(DataCaptureHandler_OP7009.Instance);
+ break;
//#region 07 鏁伴噰鐩掑瓙鍛婅閲囬泦
////case "OP1007":
--
Gitblit v1.9.3