From 4422008672f79f74841e11f20430c5e76686e293 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周四, 19 12月 2024 10:33:46 +0800
Subject: [PATCH] 修复 hmid更改合格状态,没清理 不合格原因的问题

---
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs |  689 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 443 insertions(+), 246 deletions(-)

diff --git a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
index a14231a..b846ff4 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/OP80QualityDataHandler.cs
@@ -28,6 +28,8 @@
         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 string _DataCapturePointName = "OP80璐ㄩ噺鏁版嵁閲囬泦";
+        public static readonly string _EquipmentId = "EOP80";
         public static readonly LogType logType = LogType.PLCOP80_QC;
 
         public OP80QualityDataHandler()
@@ -88,8 +90,22 @@
                     threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
                     threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
 
+                    var time = DateTimeHelper.GetDateTime();
+
+                    //OP80 闇�瑕佹壂鎻忔枃浠惰鍙栬川閲忎俊鎭�
+                    //鎵弿淇敼鏃堕棿鍦ㄤ笂娆℃壂鎻忔椂闂翠箣鍓�30绉掑埌褰撳墠鏃堕棿鐨勪箣闂寸殑鏂囦欢
+                    List<FileInfo> allFiles = new List<FileInfo>();
+                    var newFiles = FileHelper.DetectNewFilesCSV(path, 300, time.AddDays(-30), time.AddDays(1));
+                    foreach (var file in newFiles)
+                    {
+                        allFiles.Add((FileInfo)file);
+                    }
+                    //files = files.OrderByDescending(o => o.LastWriteTime).ToList();
+                    allFiles = allFiles.OrderBy(o => o.LastWriteTime).ToList();//鏃堕棿鍗囧簭
+                    Log4NetHelper.WriteInfoLog(logType, $"OP80涓嬬嚎瀹屾垚璇诲彇鍒版枃浠秢allFiles.Count()}涓�");
+
                     var processList = db.WorkPieceProcess.Where(o => o.WorkingProcedureCurrent == query_WorkingProcedureCurrent && o.GetQcDataFlag == 0
-                    ).OrderBy(x => x.CreatedTime).ToList();
+                ).OrderBy(x => x.CreatedTime).ToList();
                     foreach (var item in processList)
                     {
                         var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == item.WorkPieceID).FirstOrDefault();
@@ -105,286 +121,467 @@
                             continue;
                         }
 
-                        Do_One(db, info, item, qualityData, WorkingProcedure);
+                        var findFiles = allFiles.Where(x => x.Name.Contains(item.WorkPieceID)).OrderByDescending(x => x.LastWriteTime).ToList();
+                        if (findFiles != null && findFiles.Count > 0)
+                        {
+                            var file = findFiles.First();
+                        }
+
+                        Do_One(false, false, false, allFiles, db, info, item, qualityData, findFiles);
 
                         Thread.Sleep(1000);
+
+
                     }
+
+                    //澶勭悊鍓╀綑鐨勬枃浠�
+                    if (allFiles.Count() > 0)
+                    {
+                        Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛氬彂鐜拌澶勭悊鍓╀綑鐨勬枃浠秢allFiles.Count()}浠�");
+                        foreach (var otherFile in allFiles)
+                        {
+                            DoOtherFile(allFiles, otherFile, db);
+                            Thread.Sleep(1000);
+                        }
+                    }
+                    Thread.Sleep(1000);
 
                     WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor);
                 }
                 catch (Exception e)
                 {
-                    Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛歿e.Message} {e.StackTrace}");
+                    Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛歿e.Message} {e.StackTrace}", e);
                 }
             }
         }
 
-        private void Do_One(DbModel db, WorkPieceInfo info, WorkPieceProcess pieceProcess, QualityDataInfo qualityData, string WorkingProcedure)
+        private void Do_One(bool isAdd_WorkPieceInfo, bool isAdd_WorkPieceProcess, bool isAdd_QualityDataInfo, List<FileInfo> allFiles, DbModel db, WorkPieceInfo info,
+            WorkPieceProcess pieceProcess, QualityDataInfo qualityData,
+             List<FileInfo> findFiles)
         {
             try
             {
-                if (WorkingProcedure.Equals("OP80"))
+
+                bool isGetQcSuccess = false;
+
+
+                var file = findFiles.First();
+
+                Log4NetHelper.WriteInfoLog(logType, $"OP80涓嬬嚎瀹屾垚璇诲彇鍒版枃浠秢file.Name}锛屾槸鎸囧畾鐨勫伐浠秢pieceProcess.WorkPieceID}");
+
+                WorkPieceLogMiddle logMiddle = new WorkPieceLogMiddle();
+                logMiddle.WorkPieceID = pieceProcess.WorkPieceID;
+                logMiddle.WorkingProcedure = query_WorkingProcedureCurrent;
+                logMiddle.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                logMiddle.EquipmentID = _dataCaptureConfig.EquipmentID; ;
+                logMiddle.Remarks = logMiddle.WorkingProcedure;
+                logMiddle.MonitoringPoint = _DataCapturePointCode;
+                //logMiddle.CreatedUserName = _DataCapturePointCode;
+                SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref logMiddle, DataCapturePointCode, DataCapturePointCname);
+                logMiddle.CreatedTime = DateTimeHelper.GetDateTime();
+                logMiddle.UpdatedTime = DateTimeHelper.GetDateTime();
+                logMiddle.UpdatedUserName = Environment.MachineName + "鑷姩" + Thread.CurrentThread.ManagedThreadId.ToString();
+                logMiddle.IsDeleted = false;
+
+                WorkPieceLog loginfo2 = new WorkPieceLog();
+                loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(logMiddle);
+                loginfo2.DataCapturePointCname = "OP80璐ㄩ噺閲囬泦";
+                loginfo2.CreatedUserName = loginfo2.MonitoringPoint;
+
+                var datatable = CSVHelper.ReadCSVList(file.FullName);
+                List<string> rowFirst = new List<string>();
+                List<string> rowSecond = new List<string>();
+                if (datatable.Count == 2)
                 {
-                    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)
+                    rowFirst = datatable[0].Split(',').ToList();
+                    rowSecond = datatable[1].Split(',').ToList();
+                    if (rowSecond.Count < 11)
                     {
-                        files.Add((FileInfo)file);
+                        return;
                     }
-                    //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))
+                    //鏃ユ湡鍜屾椂闂�	鎵瑰彿/鏍囪瘑鍙�	宓屽鍙�/涓昏酱鍙�	鎿嶄綔绗�	鏂囨湰	娴嬮噺鏈�	杩囩▼鍙傛暟	娴嬮噺绯荤粺	杩囩▼鍙傛暟鍊�	搴忓垪鍙�	闆朵欢璇嗗埆鍙�	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))
                         {
-                            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));//鎻掑叆宸ヤ欢閲囬泦鏃ュ織琛�
-
-                            db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//鎻掑叆璐ㄩ噺鏃ュ織
-
-                            //杞Щ鏂囦欢
-                            var toPath = file.FullName.Replace("CA4GC20TD", "CA4GC20TD_COPY");
-                            File.Move(file.FullName, toPath);//绉诲姩
-
-                            db.SaveChanges();
-
-                            isGetQcSuccess = true;
-
                             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 (isGetQcSuccess == false)
+                    if (oP80Info.OP80ItemStatusInfolist.Count > 0)
                     {
-                        pieceProcess.GetQcDataCount = (pieceProcess.GetQcDataCount ?? 0) + 1;
-                        pieceProcess.GetQcDataFlag_Remark = "娌℃湁鎵惧埌鏂囦欢";
-                        if (pieceProcess.GetQcDataCount >= 10)
+                        if (oP80Info.OP80ItemStatusInfolist.Any(o => !o.鐘舵��.Equals("OK")))
                         {
-                            pieceProcess.GetQcDataFlag = 2;
+                            logMiddle.QualityStateStr = "NG";
                         }
-
-                        db.SaveChanges();
-
-                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢娌℃湁鎵惧埌鎸囧畾宸ヤ欢{info.WorkPieceID}鐨勬枃浠�");
+                        else
+                        {
+                            logMiddle.QualityStateStr = "OK";
+                        }
                     }
+                    else
+                    {
+                        logMiddle.QualityStateStr = "OK";
+                    }
+
+
+                    logMiddle.OP80QualityFilePath = file.FullName;
+                    logMiddle.OP80NewCode = oP80Info.鎵瑰彿?.Replace("#", "");
+                    //澶уご閲嶉噺
+                    logMiddle.QualityOP80To1 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Weight Big End")).FirstOrDefault()?.缁濆鍊�;
+                    //灏忓ご閲嶉噺
+                    logMiddle.QualityOP80To2 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Weight Small End")).FirstOrDefault()?.缁濆鍊�;
+                    //鎬婚噸
+                    logMiddle.QualityOP80To3 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Total Weight")).FirstOrDefault()?.缁濆鍊�;
+                    //寮洸
+                    logMiddle.QualityOP80To4 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Bend to A")).FirstOrDefault()?.缁濆鍊�;
+                    //鎵害
+                    logMiddle.QualityOP80To5 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Twist to A")).FirstOrDefault()?.缁濆鍊�;
+                    //澶уご鍨傜洿搴�
+                    logMiddle.QualityOP80To6 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_C_Squareness")).FirstOrDefault()?.缁濆鍊�;
+                    //灏忓ご鍨傜洿搴�
+                    logMiddle.QualityOP80To10 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Sma_End_C_Squareness")).FirstOrDefault()?.缁濆鍊�;
+                    //澶уご瀛斿垎缁勭骇鍒�
+                    logMiddle.QualityOP80To7 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Dime Big_End Class")).FirstOrDefault()?.鐘舵��;
+                    //灏忓ご瀛斿垎缁勭骇鍒�
+                    logMiddle.QualityOP80To8 = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Dime Small_End Class")).FirstOrDefault()?.鐘舵��;
+                    //閲嶉噺缁勫埆
+                    logMiddle.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銆�
+                    logMiddle.QualityOP80_Houdu = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Thickness")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_ZXJ = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Distance of Two Head")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_DTKYZD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Cylindricity")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_XTSMYD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_Roundn")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_XTXMYD = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Bot_Roundn")).FirstOrDefault()?.缁濆鍊�;
+
+
+                    logMiddle.QualityOP80_D_S_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Top_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_D_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Top_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_D_X_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Big_End_Bot_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.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(logMiddle.QualityOP80_D_S_X),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_D_S_Y),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_D_X_X),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_D_X_Y),
+                                                    };
+                    logMiddle.QualityOP80_D_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
+
+
+                    logMiddle.QualityOP80_X_S_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_X_S_Y = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Top_Y_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.QualityOP80_X_X_X = oP80Info.OP80ItemInfolist.Where(o => o.鍚嶇О.Equals("Small_End_Bot_X_Dia.")).FirstOrDefault()?.缁濆鍊�;
+                    logMiddle.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(logMiddle.QualityOP80_X_S_X),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_X_S_Y),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_X_X_X),
+                                                        SystemHelper.GetDecimal(logMiddle.QualityOP80_X_X_Y),
+                                                    };
+                    logMiddle.QualityOP80_X_TKZJ = SystemHelper.CalcDecimalAvg(valueList, 3);
+
+                }
+                else
+                {
+                    logMiddle.Remarks = $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢{file.FullName}寮傚父锛岃鏁颁笉鏄�2琛�";
+                }
+
+
+                //鏇存柊WorkPieceInfo琛ㄤ互鍙婃彃鍏orkPieceLog琛ㄥ拰WorkPieceInfoLog琛�
+                info.OP80NewCode = logMiddle.OP80NewCode;//鏇存柊鎴愬搧鍚�
+
+                //濡傛灉OP80涓嬬嚎锛屽凡缁忔洿鏀逛簡璐ㄦ鐘舵�侊紝骞朵笖璐ㄦ鐘舵�佺瓑浜庝笉鍚堟牸锛屽垯杩欓噷灏变笉瑕佺户缁洿鏀硅川妫�鐘舵�佷簡 銆怑ditby shaocx,2024-08-28銆�
+                bool isNeedUpdateQualityState = true;
+                var ooDateTime = Convert.ToDateTime("0001-01-01");
+                if (pieceProcess.EndTime != ooDateTime && pieceProcess.QualityState == (int)QualityStateEnum.NG)
+                {
+                    isNeedUpdateQualityState = false;
+                }
+                if (isNeedUpdateQualityState)
+                {
+                    info.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG);
+                    logMiddle.QualityState = info.QualityState;
+                    //鏍规嵁璐ㄩ噺鏁版嵁鍒ゆ柇鏄惁鍚堟牸/涓嶅悎鏍� 銆怑ditby shaocx,2024-06-25銆�
+                    WorkPieceInfoManager.SetLogMiddleForQuality(ref logMiddle);
+
+                    //璧嬪�间笉鍚堟牸鍘熷洜
+                    WorkPieceInfoManager.SetQualityNoOk_WorkPieceInfo(logMiddle, ref info);
+
+                    info.QualityStateUpdateUser = logMiddle.UpdatedUserName;
+                    info.QualityStateUpdateTime = logMiddle.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(logMiddle, qualityData, WorkPieceInfoManager.GetQualityDataInfoUpdate(logMiddle, logMiddle.WorkingProcedure, logMiddle.MonitoringPoint));//鎸囧畾淇敼瀛楁
+
+                //鍗曠嫭澶勭悊 璐ㄩ噺鏁版嵁鐨勭姸鎬�
+                if (isNeedUpdateQualityState)
+                {
+                    qualityData.QualityState = (int)((logMiddle.QualityStateStr.Equals("OK") || logMiddle.QualityStateStr.Equals("0K")) ? QualityStateEnum.OK : QualityStateEnum.NG);
+                }
+                else
+                {//蹇呯劧鏄笉鍚堟牸
+                    qualityData.QualityState = (int)(QualityStateEnum.NG);
+                }
+                qualityData.OP80QualityState = qualityData.QualityState.ToString();
+
+                qualityData.EquipmentID = _EquipmentId;
+                qualityData.QualityStateUpdateUser = info.UpdatedUserName;
+                qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime;
+                qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode;
+
+                qualityData.OP80QualityReceiveTime = DateTimeHelper.GetDateTime();
+                qualityData.OP80QualityFilePath = logMiddle.OP80QualityFilePath;
+                long op80id = qualityData.Id;
+                if (op80id > 0)
+                {
+                    pieceProcess.QualityDataInfoID = op80id;
+                }
+                loginfo2.Remarks = $"璐ㄩ噺锛歿logMiddle.QualityStateStr ?? "绌�"}";
+                if (!info.QualityState.Equals(((int)QualityStateEnum.OK).ToString()))
+                {
+                    info.QualityErrorInfo = $"{logMiddle.WorkingProcedure}宸ュ簭璐ㄩ噺閲囬泦鏁版嵁涓嶅悎鏍�";
+                }
+                else
+                {
+                    info.QualityErrorInfo = "";
+                }
+
+                pieceProcess.GetQcDataCount = (pieceProcess.GetQcDataCount ?? 0) + 1;
+                pieceProcess.GetQcDataFlag_Remark = "鎵惧埌鏂囦欢";
+                pieceProcess.GetQcDataFlag = 1;
+
+                if (isNeedUpdateQualityState)
+                {
+                    //涓嶅啀榛樿璧嬪�间负鍚堟牸 銆怑ditby shaocx,2024-08-16銆�
+                    pieceProcess.QualityState = WorkPieceInfoManager.GetQualityStateValue(info.QualityState);
+
+                    //璧嬪�间笉鍚堟牸鍘熷洜
+                    //TODO:闇�瑕侀厤缃甇P80璐ㄩ噺涓嶅悎鏍肩殑鍘熷洜鏄暐锛燂紵
+                    WorkPieceInfoManager.SetQualityNoOk_WorkPieceProcess(logMiddle, ref pieceProcess);
+                }
+
+                pieceProcess.EndTime = file.LastWriteTime;//涓嬬嚎鏃堕棿鏀逛负 鏂囦欢鏈�鍚庝慨鏀规椂闂� 銆怑ditby shaocx,2024-06-17銆�
+
+                db.WorkPieceLog.Add(WorkPieceInfoManager.GetAddWorkPieceLog(loginfo2));//鎻掑叆宸ヤ欢閲囬泦鏃ュ織琛�
+
+                db.QualityDataInfoLog.Add(WorkPieceInfoManager.GetAddQualityDataInfoLog(qualityData));//鎻掑叆璐ㄩ噺鏃ュ織
+
+                //杞Щ鏂囦欢
+                foreach (var item in findFiles)
+                {
+                    var toPath = item.FullName.Replace("CA4GC20TD", "CA4GC20TD_COPY");
+                    File.Move(item.FullName, toPath);//绉诲姩
+                    allFiles.Remove(item);//闆嗗悎绉婚櫎
+                }
+
+                if (isAdd_WorkPieceInfo)
+                {
+                    db.WorkPieceInfo.Add(info);
+                }
+                if (isAdd_WorkPieceProcess)
+                {
+                    db.WorkPieceProcess.Add(pieceProcess);
+                }
+                if (isAdd_QualityDataInfo)
+                {
+                    db.QualityDataInfo.Add(qualityData);
+                }
+
+                db.SaveChanges();
+
+                isGetQcSuccess = true;
+                Log4NetHelper.WriteInfoLog(logType, $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢锛屾垚鍔熷鐞嗕簡鎸囧畾宸ヤ欢{info.WorkPieceID}鐨勬枃浠�");
+
+
+                if (isGetQcSuccess == false)
+                {
+                    pieceProcess.GetQcDataCount = (pieceProcess.GetQcDataCount ?? 0) + 1;
+                    pieceProcess.GetQcDataFlag_Remark = "娌℃湁鎵惧埌鏂囦欢";
+                    if (pieceProcess.GetQcDataCount >= 10)
+                    {
+                        pieceProcess.GetQcDataFlag = 2;
+                    }
+
+                    db.SaveChanges();
+
+                    Log4NetHelper.WriteErrorLog(logType, $"OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢娌℃湁鎵惧埌鎸囧畾宸ヤ欢{info.WorkPieceID}鐨勬枃浠�");
                 }
             }
             catch (Exception ex)
             {
-                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"鎸囧畾宸ヤ欢{info.WorkPieceID},OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢鏁版嵁鏃跺紓甯�,閬垮厤宸ュ簭瀹屾垚寮傚父锛�", ex);
+                Log4NetHelper.WriteErrorLog(logType, $"鎸囧畾宸ヤ欢{info.WorkPieceID},OP80涓嬬嚎瀹屾垚璇诲彇鏂囦欢鏁版嵁鏃跺紓甯�,閬垮厤宸ュ簭瀹屾垚寮傚父锛�", ex);
             }
         }
 
+
+        private void DoOtherFile(List<FileInfo> allFiles, FileInfo file, DbModel db)
+        {
+            var arr = file.Name.Split('-');
+            if (arr.Length > 0)
+            {
+                if (string.IsNullOrEmpty(arr[0]))
+                {
+                    MoveFileToNoNum(allFiles, file);
+                    Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛氬鐞嗗墿浣欑殑鏂囦欢,杞Щ鍒版病鏈夊崟鍙锋枃浠跺す涓紝{file.Name}");
+                    return;
+                }
+                else
+                {
+                    if (file.LastWriteTime > DateTime.Now.AddDays(-1))
+                    {
+                        //褰撳ぉ鍐呯殑鏂囦欢鏆備笉澶勭悊
+                        return;
+                    }
+                    //濡傛灉鏄�15澶╁墠鐨勬枃浠讹紝鍒欒浆绉诲埌閿欒鏂囦欢澶逛腑
+                    if (file.LastWriteTime.AddDays(15) < DateTime.Now)
+                    {
+                        MoveFileToNoError(allFiles, file);
+                        Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛氬鐞嗗墿浣欑殑鏂囦欢,杞Щ鍒伴敊璇枃浠跺す涓紝{file.Name}");
+                        return;
+                    }
+
+                    var pieceID = arr[0];
+                    if (pieceID == "Err")
+                    {
+                        MoveFileToNoNum(allFiles, file);
+                        Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛氬鐞嗗墿浣欑殑鏂囦欢,杞Щ鍒版病鏈夊崟鍙锋枃浠跺す涓紝{file.Name}");
+                        return;
+                    }
+                    //璋冪敤鍏叡澶勭悊鏂规硶
+
+
+                    bool isAdd_WorkPieceInfo = false;
+                    bool isAdd_WorkPieceProcess = false;
+                    bool isAdd_QualityDataInfo = false;
+
+                    WorkPieceInfo info = db.WorkPieceInfo.Where(o => o.WorkPieceID == pieceID).FirstOrDefault();
+                    if (info == null)
+                    {
+                        isAdd_WorkPieceInfo = true;
+                        info = new WorkPieceInfo()
+                        {
+                            Id = Yitter.IdGenerator.YitIdHelper.NextId(),
+                            WorkPieceID = pieceID,
+                            WorkingProcedureCurrent = query_WorkingProcedureCurrent,
+                            EquipmentID = _EquipmentId,
+                            CreatedTime = DateTime.Now,
+                            CreatedUserName = _DataCapturePointCode,
+                            DataCapturePointCname = _DataCapturePointName
+                        };
+                    }
+
+                    var qualityData = db.QualityDataInfo.Where(o => o.WorkPieceID == pieceID).FirstOrDefault();
+                    if (qualityData == null || qualityData.WorkPieceID.Length < 1 || qualityData.WorkingProcedure.Length < 1)
+                    {//鎻掑叆QualityDataInfo琛�
+                        isAdd_QualityDataInfo = true;
+                        qualityData = new QualityDataInfo()
+                        {
+                            Id = Yitter.IdGenerator.YitIdHelper.NextId(),
+                            WorkPieceID = pieceID,
+                            WorkingProcedure = query_WorkingProcedureCurrent,
+                            CreatedTime = DateTime.Now,
+                            CreatedUserName = _DataCapturePointCode,
+                            EquipmentID = _EquipmentId,
+                        };
+                    }
+
+                    var process = db.WorkPieceProcess.Where(o => o.WorkPieceID == pieceID && o.WorkingProcedureCurrent == info.WorkingProcedureCurrent && o.OperationType == OperationType.鐢熶骇.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
+                    if (process == null)
+                    {
+                        isAdd_WorkPieceProcess = true;
+                        process = new WorkPieceProcess();
+                        process = EntityPropHelper.Mapper<WorkPieceProcess, WorkPieceInfo>(info);
+                        QualityStateHelper.ResetQualityNoOkForNewProcess(ref process);
+                        process.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+                        process.WorkingProcedureCurrent = query_WorkingProcedureCurrent;
+                        process.StartTime = DateTimeHelper.GetDateTime();
+                        process.EndTime = file.LastWriteTime;
+                        process.CreatedUserName = _DataCapturePointCode;
+                        process.JiaJuGongWei = "";
+                        process.DataCapturePointCname = DataCapturePointCname;
+                        process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
+                        process.UpdatedUserName = _DataCapturePointCode;
+                        process.UpdateDataCapturePointCname = DataCapturePointCname;
+                        process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
+                        process.OperationType = OperationType.鐢熶骇.ToString();
+                        process.Remarks = "";
+                    }
+
+                    //璋冪敤鏂规硶
+                    Do_One(isAdd_WorkPieceInfo, isAdd_WorkPieceProcess, isAdd_QualityDataInfo, allFiles, db, info, process, qualityData, new List<FileInfo>() { file });
+                }
+            }
+            else
+            {
+                //绉婚櫎璇ユ枃浠跺埌CA4GC20TD_NoNum
+                MoveFileToNoNum(allFiles, file);
+                Log4NetHelper.WriteErrorLog(logType, $" OP80璐ㄩ噺鏁版嵁閲囬泦寮傚父锛氬鐞嗗墿浣欑殑鏂囦欢,杞Щ鍒版病鏈夊崟鍙锋枃浠跺す涓紝{file.Name}");
+            }
+        }
+
+        private void MoveFileToNoNum(List<FileInfo> allFiles, FileInfo file)
+        {
+            //绉婚櫎璇ユ枃浠跺埌CA4GC20TD_NoNum
+            var toPath = file.FullName.Replace("CA4GC20TD", "CA4GC20TD_NoNum");
+            File.Move(file.FullName, toPath);//绉诲姩
+            allFiles.Remove(file);
+        }
+
+        private void MoveFileToNoError(List<FileInfo> allFiles, FileInfo file)
+        {
+            //绉婚櫎璇ユ枃浠跺埌CA4GC20TD_NoNum
+            var toPath = file.FullName.Replace("CA4GC20TD", "CA4GC20TD_Error");
+            File.Move(file.FullName, toPath);//绉诲姩
+            allFiles.Remove(file);
+        }
     }
 }

--
Gitblit v1.9.3