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