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