From 939aaceb32c03fa7006352e6f866ea1bf63f9e7c Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 16 6月 2024 06:07:23 +0800
Subject: [PATCH] 2

---
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare.config                           |   34 +++
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/Enums.cs                                                 |   40 ++-
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs  |    9 
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs |  386 ++++++++++++++++++++++++++++++++++++++
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/TableModel/WorkPieceProcess.cs                           |   17 +
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs                    |   17 +
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs                        |    5 
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare - 复制用.config                     |   46 ++++
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs                                      |    8 
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/iWare_SCADA_BusinessLogical.csproj             |    5 
 10 files changed, 545 insertions(+), 22 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 d9aa9db..9775d69 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -1012,11 +1012,14 @@
                             info.CompleteTime = DateTimeHelper.GetDateTime();
                             info.OP80NewCode = loginfo.OP80NewCode;
 
+                            //璐ㄦ鏁版嵁鏀逛负 鑾峰彇鏂囦欢鍚庝慨鏀� 銆怑ditby shaocx,2024-06-15銆�
+                            /*
                             info.QualityState = (int)((loginfo.QualityStateStr.Equals("OK") || loginfo.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
                             loginfo.QualityState = info.QualityState;
                             info.QualityStateUpdateUser = loginfo.UpdatedUserName;
                             info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime;
                             info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
+                            //*/
 
                             var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault();
                             if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
@@ -1027,6 +1030,8 @@
                             //淇敼QualityDataInfo琛� //閲嶅鏀跺埌璐ㄩ噺淇℃伅锛屼細瑕嗙洊涔嬪墠鐨�
                             EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(loginfo, qualityData, GetQualityDataInfoUpdate(loginfo.WorkingProcedure, loginfo.MonitoringPoint));//鎸囧畾淇敼瀛楁
 
+                            //璐ㄦ鏁版嵁鏀逛负 鑾峰彇鏂囦欢鍚庝慨鏀� 銆怑ditby shaocx,2024-06-15銆�
+                            /*
                             qualityData.QualityStateUpdateUser = info.UpdatedUserName;
                             qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime;
                             qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode;
@@ -1043,6 +1048,7 @@
                             {
                                 info.QualityErrorInfo = "";
                             }
+                            //*/
                         }
                         else if (loginfo.WorkingProcedure.Equals("OP30"))
                         {
@@ -1098,6 +1104,10 @@
                             process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                             process.OperationType = OperationType.鐢熶骇.ToString();
                             process.Remarks = "";
+                            if (loginfo.WorkingProcedure.Equals("OP80"))
+                            {
+                                process.GetQcDataFlag = loginfo.GetQcDataFlag;//璧嬪�兼爣璁� [Editby shaocx,2024-06-15]
+                            }
                             if (op80id > 0)
                             {
                                 process.QualityDataInfoID = op80id;
@@ -1113,6 +1123,13 @@
                             pro.EndTime = DateTimeHelper.GetDateTime();
                             pro.UpdatedUserName = loginfo.MonitoringPoint;
                             pro.UpdatedTime = DateTimeHelper.GetDateTime();
+                            if (loginfo.WorkingProcedure.Equals("OP80"))
+                            {
+                                if (pro.GetQcDataFlag != 0)
+                                {
+                                    pro.GetQcDataFlag = loginfo.GetQcDataFlag;//璧嬪�兼爣璁� [Editby shaocx,2024-06-15]
+                                }
+                            }
                         }
 
 
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
index ae9bc7b..d0c98e8 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
@@ -154,7 +154,13 @@
                                     }
                                 }
 
-
+                                //鐗规畩澶勭悊OP80 銆怑ditby shaocx,2024-06-15銆�
+                                if (WorkingProcedure.Equals("OP80"))
+                                {
+                                    wplog.GetQcDataFlag = 0;
+                                }
+                                //娉ㄩ噴涓嬮潰鐨勬柟娉曪紝浼樺寲绋嬪簭 銆怑ditby shaocx,2024-06-15銆�
+                                /*
                                 try
                                 {
                                     if (WorkingProcedure.Equals("OP80"))
@@ -334,6 +340,7 @@
                                     threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} 璇诲彇{DataCapturePointCode}涓嬬嚎鏍囪 瀹屾垚璇诲彇鏂囦欢鏁版嵁鏃跺紓甯革紝璇锋煡鐪嬫棩蹇楋紒";
                                     Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢鏁版嵁鏃跺紓甯�,閬垮厤宸ュ簭瀹屾垚寮傚父锛�", ex);
                                 }
+                                //*/
 
                                 //鏇存柊WorkPieceInfo琛ㄤ互鍙婃彃鍏orkPieceLog琛ㄥ拰WorkPieceInfoLog琛�
                                 WorkPieceInfoManager.WorkingProcedureComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
new file mode 100644
index 0000000..79c33bd
--- /dev/null
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
@@ -0,0 +1,386 @@
+锘縰sing iWare_SCADA_BusinessLogical.BLL;
+using iWare_SCADA_BusinessLogical.Utils;
+using iWare_SCADA_Model;
+using iWare_SCADA_Model.MiddleModel;
+using log4net;
+using System;
+using System.Collections.Generic;
+using System.Data.Entity.Core.Common.CommandTrees;
+using System.Data.Entity.Validation;
+using System.Data.SqlTypes;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Web.UI.WebControls;
+using System.Windows.Forms;
+
+namespace iWare_SCADA_BusinessLogical
+{
+    /// <summary>
+    /// OP80璐ㄩ噺鏁版嵁閲囬泦
+    /// </summary>
+    public class OP80QualityDataHandler : DataCaptureHandler
+    {
+        public static readonly OP80QualityDataHandler Instance = new OP80QualityDataHandler();
+        public static readonly string path = ConfigHelper.GetConfigString("OP80QualityData");//OP80鐨勫湴鍧�
+        public static readonly string query_WorkingProcedureCurrent = "OP80";
+        public static readonly string _DataCapturePointCode = "OP8002";
+        public static readonly LogType logType = LogType.PLCOP80_QC;
+
+        public OP80QualityDataHandler()
+        {
+        }
+
+        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()
+        {
+            while (true)
+            {
+                try
+                {
+                    Do();
+                }
+                catch (Exception ex)
+                {
+                    Log4NetHelper.WriteErrorLog(logType, $"OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛�", ex);
+                }
+                finally
+                {
+                }
+            }
+        }
+
+        private void Do()
+        {
+            using (DbModel db = new DbModel())
+            {
+                try
+                {
+                    ThreadStatusMonitorMiddle threadStatusMonitor = new ThreadStatusMonitorMiddle();
+                    threadStatusMonitor.ErrorMsg = "";
+                    threadStatusMonitor.Threadcode = logType.ToString();
+                    threadStatusMonitor.Threadcname = "OP80璐ㄩ噺鏁版嵁閲囬泦";
+                    threadStatusMonitor.Threadendtime = DateTime.Now;
+                    threadStatusMonitor.Threadstatue = 0;
+                    threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
+                    threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
+
+                    var processList = db.WorkPieceProcess.Where(o => o.WorkingProcedureCurrent == query_WorkingProcedureCurrent && o.GetQcDataFlag == 0
+                    ).OrderBy(x => x.CreatedTime).ToList();
+                    foreach (var item in processList)
+                    {
+                        var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == item.WorkPieceID).FirstOrDefault();
+                        if (qualityData == null)
+                        {
+                            Log4NetHelper.WriteErrorLog(logType, $"OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父,鏍规嵁宸ヤ欢鍙穥item.WorkPieceID}娌℃湁鎵惧埌璐ㄩ噺鏁版嵁");
+                            continue;
+                        }
+                        WorkPieceInfo info = db.WorkPieceInfo.Where(o => o.WorkPieceID == item.WorkPieceID).FirstOrDefault();
+                        if (info == null)
+                        {
+                            Log4NetHelper.WriteErrorLog(logType, $"OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父,鏍规嵁宸ヤ欢鍙穥item.WorkPieceID}娌℃湁鎵惧埌宸ヤ欢鏁版嵁");
+                            continue;
+                        }
+
+                        Do_One(db, info, item, qualityData, WorkingProcedure);
+
+                        Thread.Sleep(1000);
+                    }
+
+                    WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
+                }
+                catch (Exception e)
+                {
+                    Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛歿e.Message} {e.StackTrace}");
+                }
+            }
+        }
+
+        private void Do_One(DbModel db, WorkPieceInfo info, WorkPieceProcess pieceProcess, QualityDataInfo qualityData, string WorkingProcedure)
+        {
+            try
+            {
+                if (WorkingProcedure.Equals("OP80"))
+                {
+                    var time = DateTimeHelper.GetDateTime();
+
+                    //OP80 闇�瑕佹壂鎻忔枃浠惰鍙栬川閲忎俊鎭�
+                    //鎵弿淇敼鏃堕棿鍦ㄤ笂娆℃壂鎻忔椂闂翠箣鍓�30绉掑埌褰撳墠鏃堕棿鐨勪箣闂寸殑鏂囦欢
+                    List<FileInfo> files = new List<FileInfo>();
+                    var newFiles = FileHelper.DetectNewFilesCSV(path, 300, time.AddDays(-7), time.AddDays(1));
+                    foreach (var file in newFiles)
+                    {
+                        files.Add((FileInfo)file);
+                    }
+                    //files = files.OrderByDescending(o => o.LastWriteTime).ToList();
+                    files = files.OrderBy(o => o.LastWriteTime).ToList();//鏃堕棿鍗囧簭
+                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80涓嬬嚎瀹屾垚璇诲彇鍒版枃浠秢files.Count()}涓伐浠秢pieceProcess.WorkPieceID} ");
+
+                    bool isGetQcSuccess = false;
+
+                    foreach (var file in files)
+                    {//鍙栧�掑簭鍖归厤鐨勬枃浠跺悕涓哄伐浠跺彿鐨勬枃浠�
+                        if (file.Name.Contains(pieceProcess.WorkPieceID))
+                        {
+                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80涓嬬嚎瀹屾垚璇诲彇鍒版枃浠秢file.Name}锛屾槸鎸囧畾鐨勫伐浠秢pieceProcess.WorkPieceID}");
+
+                            WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
+                            wplog.WorkPieceID = pieceProcess.WorkPieceID;
+                            wplog.WorkingProcedure = _DataCapturePointCode;
+                            wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                            wplog.EquipmentID = _dataCaptureConfig.EquipmentID; ;
+                            wplog.Remarks = wplog.WorkingProcedure;
+                            wplog.MonitoringPoint = _DataCapturePointCode;
+                            wplog.CreatedTime = DateTimeHelper.GetDateTime();
+                            wplog.CreatedUserName = _DataCapturePointCode;
+                            wplog.UpdatedTime = DateTimeHelper.GetDateTime();
+                            wplog.UpdatedUserName = Environment.MachineName + "鑷姩" + Thread.CurrentThread.ManagedThreadId.ToString();
+                            wplog.IsDeleted = false;
+
+                            WorkPieceLog loginfo2 = new WorkPieceLog();
+                            loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(wplog);
+
+                            var datatable = CSVHelper.ReadCSVList(file.FullName);
+                            List<string> rowFirst = new List<string>();
+                            List<string> rowSecond = new List<string>();
+                            if (datatable.Count == 2)
+                            {
+                                rowFirst = datatable[0].Split(',').ToList();
+                                rowSecond = datatable[1].Split(',').ToList();
+                                if (rowSecond.Count < 11)
+                                {
+                                    continue;
+                                }
+                                //鏃ユ湡鍜屾椂闂�	鎵瑰彿/鏍囪瘑鍙�	宓屽鍙�/涓昏酱鍙�	鎿嶄綔绗�	鏂囨湰	娴嬮噺鏈�	杩囩▼鍙傛暟	娴嬮噺绯荤粺	杩囩▼鍙傛暟鍊�	搴忓垪鍙�	闆朵欢璇嗗埆鍙�	1
+                                OP80Info oP80Info = new OP80Info();
+                                oP80Info.鏃ユ湡鍜屾椂闂� = rowSecond[0];
+                                oP80Info.鎵瑰彿 = rowSecond[1];
+                                oP80Info.宓屽鍙� = rowSecond[2];
+                                oP80Info.鎿嶄綔绗� = rowSecond[3];
+                                oP80Info.鏂囨湰 = rowSecond[4];
+                                oP80Info.娴嬮噺鏈� = rowSecond[5];
+                                oP80Info.杩囩▼鍙傛暟 = rowSecond[6];
+                                oP80Info.娴嬮噺绯荤粺 = rowSecond[7];
+                                oP80Info.杩囩▼鍙傛暟鍊� = rowSecond[8];
+                                oP80Info.搴忓垪鍙� = rowSecond[9];
+                                oP80Info.闆朵欢璇嗗埆鍙� = rowSecond[10];
+                                for (int i = 1; i <= (rowSecond.Count - 11) / 10; i++)
+                                {
+                                    if (rowSecond.Count < (11 + i * 10))
+                                    {
+                                        break;
+                                    }
+                                    //鍚嶇О 鐩稿鍊� 鐩稿鍊煎崟浣� 缁濆鍊� 缁濆鍊煎崟浣� 鍚嶄箟鍊� 涓婇檺 涓嬮檺  鐘舵��/绛夌骇 鍒嗛殧绗�
+                                    OP80ItemInfo item = new OP80ItemInfo();
+                                    item.鍒嗛殧绗� = rowSecond[1 + i * 10];//渚嬪锛�*   琛ㄥご锛氱姸鎬�
+                                    item.鍚嶇О = rowSecond[2 + i * 10];//渚嬪锛歐eight Big End    琛ㄥご锛�*
+                                    item.鐩稿鍊� = rowSecond[3 + i * 10];//渚嬪锛�-2.8    琛ㄥご锛氱畝杩�
+                                    item.鐩稿鍊煎崟浣� = rowSecond[4 + i * 10];//渚嬪锛歡r    琛ㄥご锛歐eight Big End
+                                    item.缁濆鍊� = rowSecond[5 + i * 10];//渚嬪锛�371.66    琛ㄥご锛氭祴閲忓崟浣�
+                                    item.缁濆鍊煎崟浣� = rowSecond[6 + i * 10];//渚嬪锛歡r    琛ㄥご锛氱粷瀵瑰��
+                                    item.鍚嶄箟鍊� = rowSecond[7 + i * 10];//渚嬪锛�374.5    琛ㄥご锛氱粷瀵瑰�兼祴閲忓崟浣嶏紙UoM锛�
+                                    item.涓婇檺 = rowSecond[8 + i * 10];//渚嬪锛�10.5    琛ㄥご锛氬悕涔夊��
+                                    item.涓嬮檺 = rowSecond[9 + i * 10];//渚嬪锛�-10.5    琛ㄥご锛歎SL鍊�
+                                    item.鐘舵�� = rowSecond[10 + i * 10];//渚嬪锛�3    琛ㄥご锛歀SL鍊�
+                                    oP80Info.OP80ItemInfolist.Add(item);
+                                    if (item.鍚嶇О.Equals("Weight Class") || item.鍚嶇О.Equals("Weight Small End")
+                                        || item.鍚嶇О.Equals("Weight Big End") || item.鍚嶇О.Equals("Dime Small_End Class")
+                                        || item.鍚嶇О.Equals("Dime Big_End Class"))
+                                    {
+                                    }
+                                    else
+                                    {
+                                        if (!string.IsNullOrEmpty(item.鐘舵��))
+                                        {
+                                            oP80Info.OP80ItemStatusInfolist.Add(item);
+                                        }
+                                    }
+                                }
+                                if (oP80Info.OP80ItemStatusInfolist.Count > 0)
+                                {
+                                    if (oP80Info.OP80ItemStatusInfolist.Any(o => !o.鐘舵��.Equals("OK")))
+                                    {
+                                        wplog.QualityStateStr = "NG";
+                                    }
+                                    else
+                                    {
+                                        wplog.QualityStateStr = "OK";
+                                    }
+                                }
+                                else
+                                {
+                                    wplog.QualityStateStr = "OK";
+                                }
+
+
+                                wplog.OP80QualityFilePath = file.FullName;
+                                wplog.OP80NewCode = oP80Info.鎵瑰彿?.Replace("#", "");
+                                //澶уご閲嶉噺
+                                wplog.QualityOP80To1 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Weight Big End")).FirstOrDefault()?.缁濆鍊�;
+                                //灏忓ご閲嶉噺
+                                wplog.QualityOP80To2 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Weight Small End")).FirstOrDefault()?.缁濆鍊�;
+                                //鎬婚噸
+                                wplog.QualityOP80To3 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Total Weight")).FirstOrDefault()?.缁濆鍊�;
+                                //寮洸
+                                wplog.QualityOP80To4 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Bend to A")).FirstOrDefault()?.缁濆鍊�;
+                                //鎵害
+                                wplog.QualityOP80To5 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Twist to A")).FirstOrDefault()?.缁濆鍊�;
+                                //澶уご鍨傜洿搴�
+                                wplog.QualityOP80To6 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_C_Squareness")).FirstOrDefault()?.缁濆鍊�;
+                                //灏忓ご鍨傜洿搴�
+                                wplog.QualityOP80To10 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Sma_End_C_Squareness")).FirstOrDefault()?.缁濆鍊�;
+                                //澶уご瀛斿垎缁勭骇鍒�
+                                wplog.QualityOP80To7 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Dime Big_End Class")).FirstOrDefault()?.鐘舵��;
+                                //灏忓ご瀛斿垎缁勭骇鍒�
+                                wplog.QualityOP80To8 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Dime Small_End Class")).FirstOrDefault()?.鐘舵��;
+                                //閲嶉噺缁勫埆
+                                wplog.QualityOP80To9 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Weight Class")).FirstOrDefault()?.鐘舵��;
+                                //wplog.Remarks = (wplog.Remarks ?? "") + $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢{file.FullName},鏁版嵁銆恵wplog.OP80NewCode??"绌�"}銆戙�恵wplog.QualityOP80To1 ?? "绌�"}銆戙�恵wplog.QualityOP80To2 ?? "绌�"}銆戙�恵wplog.QualityOP80To3 ?? "绌�"}銆戙�恵wplog.QualityOP80To4 ?? "绌�"}銆戙�恵wplog.QualityOP80To5 ?? "绌�"}銆�";
+
+                                //鏂板OP80鐨勪竴浜涜川閲忔暟鎹� 銆怑ditby shaocx,2024-06-13銆�
+                                wplog.QualityOP80_Houdu = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Thickness")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_ZXJ = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Distance of Two Head")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_DTKYZD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Cylindricity")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_XTSMYD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_Roundn")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_XTXMYD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Bot_Roundn")).FirstOrDefault()?.缁濆鍊�;
+
+
+                                wplog.QualityOP80_D_S_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Top_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_D_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Top_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_D_X_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Bot_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_D_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Bot_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                //璁$畻澶уご瀛旂洿寰�,澶уご瀛旂洿寰�=锛堝ぇ澶翠笂闈鏂瑰悜鐩村緞+澶уご涓婇潰Y鏂瑰悜鐩村緞+澶уご涓嬮潰X鏂瑰悜鐩村緞+澶уご涓嬮潰Y鏂瑰悜鐩村緞锛�/4
+                                List<decimal> valueList = new List<decimal>() {
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_S_X),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_S_Y),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_X_X),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_D_X_Y),
+                                                    };
+                                wplog.QualityOP80_D_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
+
+
+                                wplog.QualityOP80_X_S_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_X_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_X_X_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Bot_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                wplog.QualityOP80_X_X_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Bot_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                                //璁$畻灏忓ご瀛旂洿寰�,灏忓ご瀛旂洿寰�=锛堝皬澶翠笂闈鏂瑰悜鐩村緞+灏忓ご涓婇潰Y鏂瑰悜鐩村緞+灏忓ご涓嬮潰X鏂瑰悜鐩村緞+灏忓ご涓嬮潰Y鏂瑰悜鐩村緞锛�/4
+                                valueList = new List<decimal>();
+                                valueList = new List<decimal>() {
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_S_X),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_S_Y),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_X_X),
+                                                        SystemHelper.GetDecimal(wplog.QualityOP80_X_X_Y),
+                                                    };
+                                wplog.QualityOP80_X_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
+
+                            }
+                            else
+                            {
+                                wplog.Remarks = (wplog.Remarks ?? "") + $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢{file.FullName}寮傚父锛岃鏁颁笉鏄�2琛�";
+                            }
+
+
+                            //鏇存柊WorkPieceInfo琛ㄤ互鍙婃彃鍏orkPieceLog琛ㄥ拰WorkPieceInfoLog琛�
+                            info.OP80NewCode = wplog.OP80NewCode;//鏇存柊鎴愬搧鍚�
+
+                            info.QualityState = (int)((wplog.QualityStateStr.Equals("OK") || wplog.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
+                            wplog.QualityState = info.QualityState;
+                            info.QualityStateUpdateUser = wplog.UpdatedUserName;
+                            info.QualityStateUpdateTime = wplog.UpdatedTime.Value.LocalDateTime;
+                            info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
+
+                            //var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == wplog.WorkPieceID).FirstOrDefault();
+                            //if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
+                            //{//鎻掑叆QualityDataInfo琛�
+                            //    qualityData = EntityPropHelper.Mapper<QualityDataInfo, WorkPieceLog>(wplog);
+                            //    db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData));
+                            //}
+                            //淇敼QualityDataInfo琛� //閲嶅鏀跺埌璐ㄩ噺淇℃伅锛屼細瑕嗙洊涔嬪墠鐨�
+                            EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(wplog, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(wplog.WorkingProcedure, wplog.MonitoringPoint));//鎸囧畾淇敼瀛楁
+
+                            qualityData.QualityStateUpdateUser = info.UpdatedUserName;
+                            qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime;
+                            qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode;
+                            qualityData.OP80QualityState = wplog.QualityState.HasValue ? wplog.QualityState.Value.ToString() : "3";
+                            qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime();
+                            qualityData.OP80QualityFilePath = wplog.OP80QualityFilePath;
+                            long op80id = qualityData.Id;
+                            if (op80id > 0)
+                            {
+                                pieceProcess.QualityDataInfoID = op80id;
+                            }
+                            loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"璐ㄩ噺锛歿wplog.QualityStateStr ?? "绌�"}";
+                            if (!info.QualityState.Equals(((int)QualityState.OK).ToString()))
+                            {
+                                info.QualityErrorInfo = $"{wplog.WorkingProcedure}宸ュ簭璐ㄩ噺閲囬泦鏁版嵁涓嶅悎鏍�";
+                            }
+                            else
+                            {
+                                info.QualityErrorInfo = "";
+                            }
+
+                            pieceProcess.GetQcDataCount = (pieceProcess.GetQcDataCount ?? 0) + 1;
+                            pieceProcess.GetQcDataFlag_Remark = "鎵惧埌鏂囦欢";
+                            pieceProcess.GetQcDataFlag = 1;
+
+                            db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//鎻掑叆宸ヤ欢閲囬泦鏃ュ織琛�
+
+                            //杞Щ鏂囦欢
+                            var toPath = file.FullName.Replace("CA4GC20TD", "CA4GC20TD_COPY");
+                            File.Move(file.FullName, toPath);//绉诲姩
+
+                            db.SaveChanges();
+
+                            isGetQcSuccess = true;
+
+                            break;
+                        }
+                        else
+                        {
+
+                        }
+                    }
+                    if (isGetQcSuccess == false)
+                    {
+                        pieceProcess.GetQcDataCount = (pieceProcess.GetQcDataCount ?? 0) + 1;
+                        pieceProcess.GetQcDataFlag_Remark = "娌℃湁鎵惧埌鏂囦欢";
+                        if (pieceProcess.GetQcDataCount >= 10)
+                        {
+                            pieceProcess.GetQcDataFlag = 2;
+                        }
+
+                        db.SaveChanges();
+
+                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢娌℃湁鎵惧埌鎸囧畾宸ヤ欢{info.WorkPieceID}鐨勬枃浠�");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"鎸囧畾宸ヤ欢{info.WorkPieceID},OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢鏁版嵁鏃跺紓甯�,閬垮厤宸ュ簭瀹屾垚寮傚父锛�", ex);
+            }
+        }
+
+    }
+}
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 c368587..03ff630 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
@@ -83,6 +83,7 @@
     <Compile Include="BLL\SystemValue.cs" />
     <Compile Include="BLL\WorkPieceInfoManager.cs" />
     <Compile Include="BLL\WorkPieceLogManager.cs" />
+    <Compile Include="DataCaptureHandlerV2\OP80QualityDataHandler.cs" />
     <Compile Include="DataCaptureHandlerV2\DataCaptureHandler_01.cs" />
     <Compile Include="DataCaptureHandlerV2\DataCaptureHandler_OP3002.cs" />
     <Compile Include="DataCaptureHandlerV2\DataCaptureHandler_02.cs" />
@@ -181,6 +182,10 @@
   <ItemGroup>
     <None Include="App.config" />
     <None Include="DLA\Dao\_system~.ini" />
+    <None Include="log4net_iWare - 澶嶅埗鐢�.config">
+      <SubType>Designer</SubType>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
     <None Include="log4net_iWare.config">
       <SubType>Designer</SubType>
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
diff --git "a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare - \345\244\215\345\210\266\347\224\250.config" "b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare - \345\244\215\345\210\266\347\224\250.config"
new file mode 100644
index 0000000..9d2ac5d
--- /dev/null
+++ "b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare - \345\244\215\345\210\266\347\224\250.config"
@@ -0,0 +1,46 @@
+锘�<configuration>
+  <configSections>
+    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
+  </configSections>
+  <appSettings>
+  </appSettings>
+  <log4net>
+    <!--  OP80璐ㄩ噺閲囬泦绾跨▼銆愪俊鎭�戞棩蹇�-->
+    <appender name="PLCOP80_QC_Info" type="log4net.Appender.RollingFileAppender">
+      <file value="D:\\Log\\SCADALog\\PLCOP80_QC_Info\\" />
+      <appendToFile value="true" />
+      <rollingStyle value="Date" />
+      <staticLogFileName value="false" />
+      <datePattern value="yyyy-MM-dd.LOG" />
+      <layout type="log4net.Layout.PatternLayout">
+        <!--杈撳嚭鏍煎紡-->
+        <param name="ConversionPattern" value="%n娑堟伅鏃堕棿锛�%d [%t] %n娑堟伅绾у埆锛�%-5p %n娑� 鎭� 绫伙細%c [%x] %n%m %n "/>
+      </layout>
+      <filter type="log4net.Filter.LoggerMatchFilter">
+        <loggerToMatch value="PLCOP80_QC_Info" />
+      </filter>
+      <filter type="log4net.Filter.DenyAllFilter" />
+    </appender>
+    <!--OP80璐ㄩ噺閲囬泦绾跨▼銆愰敊璇�戞棩蹇�-->
+    <appender name="PLCOP80_QC_Error" type="log4net.Appender.RollingFileAppender">
+      <file value="D:\\Log\\SCADALog\\PLCOP80_QC_Error\\" />
+      <appendToFile value="true" />
+      <rollingStyle value="Date" />
+      <staticLogFileName value="false" />
+      <datePattern value="yyyy-MM-dd.LOG" />
+      <layout type="log4net.Layout.PatternLayout">
+        <!--杈撳嚭鏍煎紡-->
+        <param name="ConversionPattern" value="%n寮傚父鏃堕棿锛�%d [%t] %n寮傚父绾у埆锛�%-5p %n寮� 甯� 绫伙細%c [%x] %n%m %n "/>
+      </layout>
+      <filter type="log4net.Filter.LoggerMatchFilter">
+        <loggerToMatch value="PLCOP80_QC_Error" />
+      </filter>
+      <filter type="log4net.Filter.DenyAllFilter" />
+    </appender>
+    <root>
+      <level value="ALL"/>
+      <appender-ref ref="PLCOP80_QC_Info"/>
+      <appender-ref ref="PLCOP80_QC_Error"/>
+    </root>
+  </log4net>
+</configuration>
\ No newline at end of file
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare.config b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare.config
index 8a47735..ac7cce6 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare.config
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/log4net_iWare.config
@@ -5,6 +5,38 @@
   <appSettings>
   </appSettings>
   <log4net>
+    <!--  OP80璐ㄩ噺閲囬泦绾跨▼銆愪俊鎭�戞棩蹇�-->
+    <appender name="PLCOP80_QC_Info" type="log4net.Appender.RollingFileAppender">
+      <file value="D:\\Log\\SCADALog\\PLCOP80_QC_Info\\" />
+      <appendToFile value="true" />
+      <rollingStyle value="Date" />
+      <staticLogFileName value="false" />
+      <datePattern value="yyyy-MM-dd.LOG" />
+      <layout type="log4net.Layout.PatternLayout">
+        <!--杈撳嚭鏍煎紡-->
+        <param name="ConversionPattern" value="%n娑堟伅鏃堕棿锛�%d [%t] %n娑堟伅绾у埆锛�%-5p %n娑� 鎭� 绫伙細%c [%x] %n%m %n "/>
+      </layout>
+      <filter type="log4net.Filter.LoggerMatchFilter">
+        <loggerToMatch value="PLCOP80_QC_Info" />
+      </filter>
+      <filter type="log4net.Filter.DenyAllFilter" />
+    </appender>
+    <!--OP80璐ㄩ噺閲囬泦绾跨▼銆愰敊璇�戞棩蹇�-->
+    <appender name="PLCOP80_QC_Error" type="log4net.Appender.RollingFileAppender">
+      <file value="D:\\Log\\SCADALog\\PLCOP80_QC_Error\\" />
+      <appendToFile value="true" />
+      <rollingStyle value="Date" />
+      <staticLogFileName value="false" />
+      <datePattern value="yyyy-MM-dd.LOG" />
+      <layout type="log4net.Layout.PatternLayout">
+        <!--杈撳嚭鏍煎紡-->
+        <param name="ConversionPattern" value="%n寮傚父鏃堕棿锛�%d [%t] %n寮傚父绾у埆锛�%-5p %n寮� 甯� 绫伙細%c [%x] %n%m %n "/>
+      </layout>
+      <filter type="log4net.Filter.LoggerMatchFilter">
+        <loggerToMatch value="PLCOP80_QC_Error" />
+      </filter>
+      <filter type="log4net.Filter.DenyAllFilter" />
+    </appender>
     <!--  铏氭嫙搴撳瓨鍑哄簱绾跨▼銆愪俊鎭�戞棩蹇�-->
     <appender name="FormMain_Info" type="log4net.Appender.RollingFileAppender">
       <file value="D:\\Log\\SCADALog\\FormMain_Info\\" />
@@ -461,6 +493,8 @@
     </appender>
     <root>
       <level value="ALL"/>
+      <appender-ref ref="PLCOP80_QC_Info"/>
+      <appender-ref ref="PLCOP80_QC_Error"/>
       <appender-ref ref="FormMain_Info"/>
       <appender-ref ref="FormMain_Error"/>
       <appender-ref ref="PLCOP05_Info"/>
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
index cb1da00..366bb6d 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
@@ -1529,6 +1529,10 @@
                 //鍛婅鐩戞帶
                 AlertMonitor alert = new AlertMonitor();
                 _dataCaptureHandler.Add(alert);
+
+                //OP80鐨勮幏鍙栬川閲忔暟鎹� 銆怑ditby shaocx,2024-06-15銆�
+                OP80QualityDataHandler op80QualityDataHandler = new OP80QualityDataHandler();
+                _dataCaptureHandler.Add(op80QualityDataHandler);
                 #endregion
 
                 try
@@ -1838,8 +1842,8 @@
                     switch (config.DataCapturePointCode)
                     {
                         case "OP2002A":
-                        //case "OP2002B":
-                        //case "OP2002C":
+                            //case "OP2002B":
+                            //case "OP2002C":
                             DataCaptureHandler_02 dc02 = new DataCaptureHandler_02();
                             dc02._dataCaptureConfig = config;
                             _dataCaptureHandler.Add(dc02);
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/Enums.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/Enums.cs
index db6e273..a75543a 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/Enums.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/Enums.cs
@@ -38,7 +38,7 @@
         /// <summary>
         /// 鍦ㄥ埗鍝�
         /// </summary>
-        WIP=1,
+        WIP = 1,
         /// <summary>
         /// 鎺ㄥ嚭
         /// </summary>
@@ -69,15 +69,15 @@
         /// <summary>
         /// 鍚堟牸
         /// </summary>
-        OK=1,
+        OK = 1,
         /// <summary>
         /// 涓嶅悎鏍�
         /// </summary>
-        NG=2,
+        NG = 2,
         /// <summary>
         /// 鐤戜技
         /// </summary>
-        Suspected=3
+        Suspected = 3
     }
     /// <summary>
     /// 璐ㄩ噺鐘舵�佷慨鏀规柟寮�
@@ -87,11 +87,11 @@
         /// <summary>
         /// 鎵嬪姩
         /// </summary>
-        Manual=1,
+        Manual = 1,
         /// <summary>
         /// 鑷姩
         /// </summary>
-        Auto= 2,
+        Auto = 2,
         /// <summary>
         /// 鑷姩
         /// </summary>
@@ -108,7 +108,7 @@
         /// </summary>
         Online = 2
     }
-    
+
     public enum EDbError
     {
         璁板綍宸插瓨鍦� = -2146233087
@@ -136,7 +136,7 @@
         /// <summary>
         /// 涓荤晫闈㈠紓甯�
         /// </summary>
-        FormMain=1,
+        FormMain = 1,
 
         #region PLC閲囬泦 宸ュ簭鐩稿叧
         PLCOP05 = 10,
@@ -150,6 +150,10 @@
         PLCOP70 = 18,
         PLCOP80 = 19,
         PLCHMI = 20,
+        /// <summary>
+        /// OP80鐨勮川閲忔暟鎹噰闆� 銆怑ditby shaocx,2024-06-16銆�
+        /// </summary>
+        PLCOP80_QC = 21,
         #endregion
 
         #region PLC鐩稿叧
@@ -177,16 +181,16 @@
 
     public enum WorkingProcedureForHMI
     {
-        OP05=1,
-        OP10=2,
-        OP20=3,
-        OP30=4,
-        OP35=5,
-        OP40=6,
-        OP50=7,
-        OP60=8,
-        OP70=9,
-        OP80=10,
+        OP05 = 1,
+        OP10 = 2,
+        OP20 = 3,
+        OP30 = 4,
+        OP35 = 5,
+        OP40 = 6,
+        OP50 = 7,
+        OP60 = 8,
+        OP70 = 9,
+        OP80 = 10,
     }
 
     public enum FeedbackMode
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs
index 6ba7d29..6ecde99 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs
@@ -12,6 +12,11 @@
     [NotMapped]
     public class WorkPieceLogMiddle : WorkPieceLog
     {
+        /// <summary>
+        /// OP80鑾峰彇QC鏁版嵁鏍囪,0琛ㄧず寰呰幏鍙栵紝1琛ㄧず鑾峰彇鎴愬姛锛�2琛ㄧず鑾峰彇澶辫触 銆怑ditby shaocx,2024-06-15銆�
+        /// </summary>
+        public int? GetQcDataFlag { get; set; }
+
         #region SPC,NOOK 鎺ㄥ嚭澶氫欢 OP20锛孫P50锛孫P60
         public string WorkPieceIDA { get; set; }
         public string WorkPieceIDB { get; set; }
diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/TableModel/WorkPieceProcess.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/TableModel/WorkPieceProcess.cs
index 45d564d..f58e705 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/TableModel/WorkPieceProcess.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/TableModel/WorkPieceProcess.cs
@@ -44,12 +44,27 @@
 
         [StringLength(50)]
         public string UpdatedUserName { get; set; }
-        
+
         [StringLength(50)]
         public string OperationType { get; set; }
         [StringLength(255)]
         public string Remarks { get; set; }
 
         public bool IsDeleted { get; set; }
+
+        /// <summary>
+        /// 获取QC数据标记,0表示待获取,1表示获取成功,2表示获取失败 【Editby shaocx,2024-06-15】
+        /// </summary>
+        public int? GetQcDataFlag { get; set; }
+
+        /// <summary>
+        /// 获取QC数据标记次数 【Editby shaocx,2024-06-15】
+        /// </summary>
+        public int? GetQcDataCount { get; set; }
+
+        /// <summary>
+        /// 获取QC数据标记描述 【Editby shaocx,2024-06-15】
+        /// </summary>
+        public string GetQcDataFlag_Remark { get; set; }
     }
 }

--
Gitblit v1.9.3