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