DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -183,7 +183,7 @@ info.Remarks = $"工件äºç»´ç ç¬¬ä¸æ¬¡åºç°çå·¥åº{loginfo.WorkingProcedure}䏿¯OP05,æ°æ®ç¼ºå¤±,请确认æ åµå¹¶åç¸åºå¤çï¼"; } else { {//OP05å·¥åº info.QualityState = (int)QualityStateEnum.OK;//æ¤å¤éè¦æ³¨æï¼å¤æææå·¥åºè´¨éï¼ç¶ååèµå¼ //é»è®¤åæ ¼ï¼OP05é»è®¤æ¯åæ ¼ info.Remarks = "OP05æ°å¢å·¥ä»¶ä¿¡æ¯"; } @@ -203,20 +203,29 @@ return; } } info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// info.WorkingProcedureEndTime = null; info.WorkPieceState = (int)WorkPieceState.WIP; info.EquipmentID = loginfo.EquipmentID; info.QualityStateUpdateUser = loginfo.UpdatedUserName; info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime; info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); info.UpdatedUserName = loginfo.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref info, loginfo.DataCapturePointCname); info.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); info.WorkPieceCurrentPosition = loginfo.WorkingProcedure; info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; info.WorkingProcedureCurrent = loginfo.WorkingProcedure; info.Remarks = $"{info.WorkingProcedureCurrent}工件ä¸çº¿"; if ((info.WorkingProcedureCurrent.Equals("OP05") && isAddWorkPieceInfo == false)) { //妿æ¯OP05çï¼å¹¶ä¸æ¯ ä¸éè¦æ°å¢ 表WorkPieceInfoï¼é£ä¹å°±ä¸éè¦æ´æ°è¡¨ WorkPieceInfo } else { info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();// info.WorkingProcedureEndTime = null; info.WorkPieceState = (int)WorkPieceState.WIP; info.EquipmentID = loginfo.EquipmentID; info.QualityStateUpdateUser = loginfo.UpdatedUserName; info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime; info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString(); info.UpdatedUserName = loginfo.MonitoringPoint; SystemBussinessHelper.SetWorkPieceInfoMiddleForUpdateDataCapturePointCname(ref info, loginfo.DataCapturePointCname); info.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); info.WorkPieceCurrentPosition = loginfo.WorkingProcedure; info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2; info.WorkingProcedureCurrent = loginfo.WorkingProcedure; info.Remarks = $"{info.WorkingProcedureCurrent}工件ä¸çº¿"; } //ä¿®å¤ä¸ op35 åä¸ä¸ªä»¶ ä¸çº¿æ¶é´è·ä¸ä¸ä¸ªä¸çº¿æ¶é´ä¸æ¨¡ä¸æ ·çé®é¢ ãEditby shaocx,2024-08-27ã var isNeedAddNewProcess = true; @@ -274,116 +283,127 @@ new_process.Remarks = ""; new_process.MyRemarks = "读ç ä¸çº¿æ¶ï¼æ¯æ¬¡æ«æä¸çº¿é½æå ¥è¿½æº¯è¡¨"; if (loginfo.WorkingProcedure.Equals("OP05")) { {//ç¹æ®å¤çOP05å·¥åº new_process.EndTime = new_process.StartTime; //妿已ç»åå¨å ¶ä»å·¥åºï¼é£ä¹å°±å¿ é¡»è¦æç §å ¶ä»å·¥åºçæ¶é´å¾åæ¨æ°æ® ãEditby shaocx,2024-09-05ã var op05OtherProccss = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID).OrderBy(x => x.StartTime).FirstOrDefault(); if (op05OtherProccss != null) {//说ææï¼é£ä¹æ¶é´å°±æç §è¿ä¸ªæ¶é´å¾åæ¨ var _time = op05OtherProccss.StartTime.AddHours(-1); new_process.StartTime = _time; new_process.EndTime = _time; new_process.CreatedTime = _time; new_process.UpdatedTime = _time; } db.WorkPieceProcess.Add(new_process); } db.WorkPieceProcess.Add(new_process); } //db.Database.AutoTransactionsEnabled = false;// åä¸ä¸ªSaveChangesé»è®¤äºå¡ï¼ å ³éé»è®¤äºå¡ï¼... 好åä¸è½ç¨åï¼åé¢åç ç©¶å§ if (isAddWorkPieceInfo) { db.WorkPieceInfo.Add(info); } else {//ä¸ç¡®å®infoæ¯ç´æ¥ä¼ä¿®æ¹è¿æ¯éè¦å次æ¥è¯¢ï¼å¾ æµè¯ //info.Remarks = "ä¿®æ¹ï¼å ·ä½ä¿®æ¹é»è¾å¾ å®"; } #region 夿æ¯å¦è·³åº,æè´¨éä¸ç¬¦å ç¶ååé¦PLC if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC) { bool checkQualityInfoCompleteFlag = false; bool plcFlag = true;//åé¦ç»PLCçæ è®° string message = ""; checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, loginfo, type); if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityStateEnum.OK) //db.Database.AutoTransactionsEnabled = false;// åä¸ä¸ªSaveChangesé»è®¤äºå¡ï¼ å ³éé»è®¤äºå¡ï¼... 好åä¸è½ç¨åï¼åé¢åç ç©¶å§ if (isAddWorkPieceInfo) { plcFlag = false; message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; message += info.QualityState != (int)QualityStateEnum.OK ? "è´¨éä¸ç¬¦å" : ""; db.WorkPieceInfo.Add(info); } ////åé¦ç»PLCï¼ï¼åå ¥ç¹å¾ å®ï¼ //MessageModel fr = null; //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); //if (fr.result) //{ // Log4NetHelper.WriteInfoLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}å·¥åºåé¦ç»PLC æåï¼ åºç° {message}"); //} //else //{ // Log4NetHelper.WriteErrorLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}å·¥åºåé¦ç»PLC å¤±è´¥ï¼ åºç° {message} ï¼å¤±è´¥åå ï¼{fr.resMsg}"); //} else {//ä¸ç¡®å®infoæ¯ç´æ¥ä¼ä¿®æ¹è¿æ¯éè¦å次æ¥è¯¢ï¼å¾ æµè¯ //info.Remarks = "ä¿®æ¹ï¼å ·ä½ä¿®æ¹é»è¾å¾ å®"; } //#region åé¦PLC #region 夿æ¯å¦è·³åº,æè´¨éä¸ç¬¦å ç¶ååé¦PLC if (IsFeedback.HasValue && IsFeedback.Value == (int)FeedbackMode.FeedbackPLC) { bool checkQualityInfoCompleteFlag = false; bool plcFlag = true;//åé¦ç»PLCçæ è®° string message = ""; checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, loginfo, type); //bool checkQualityInfoCompleteFlag = false; //bool plcFlag = true;//åé¦ç»PLCçæ è®° //string message = ""; //checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityStateEnum.OK) { plcFlag = false; message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; message += info.QualityState != (int)QualityStateEnum.OK ? "è´¨éä¸ç¬¦å" : ""; } ////åé¦ç»PLCï¼ï¼åå ¥ç¹å¾ å®ï¼ //MessageModel fr = null; //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); //if (fr.result) //{ // Log4NetHelper.WriteInfoLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}å·¥åºåé¦ç»PLC æåï¼ åºç° {message}"); //} //else //{ // Log4NetHelper.WriteErrorLog(type, $" 工件{info.WorkPieceID} {loginfo.WorkingProcedure}å·¥åºåé¦ç»PLC å¤±è´¥ï¼ åºç° {message} ï¼å¤±è´¥åå ï¼{fr.resMsg}"); //} //if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityState.OK) //{ // plcFlag = false; // message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; //message += info.QualityState != (int)QualityState.OK ? "è´¨éä¸ç¬¦å" : ""; //} ////åé¦ç»PLCï¼ï¼åå ¥ç¹å¾ å®ï¼ //MessageModel fr = null; //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); //if (fr.result) //{ // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}å·¥åºåé¦ç»PLC æåï¼ åºç° {message}"); //} //else //{ // Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}å·¥åºåé¦ç»PLC å¤±è´¥ï¼ åºç° {message} ï¼å¤±è´¥åå ï¼{fr.resMsg}"); //} //#endregion //#region åé¦PLC //bool checkQualityInfoCompleteFlag = false; //bool plcFlag = true;//åé¦ç»PLCçæ è®° //string message = ""; //checkQualityInfoCompleteFlag = WorkPieceInfoManager.CheckQualityInfoComplete(info, wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure)); //if (!checkQualityInfoCompleteFlag || info.QualityState != (int)QualityState.OK) //{ // plcFlag = false; // message = !checkQualityInfoCompleteFlag ? "è·³åºï¼" : ""; //message += info.QualityState != (int)QualityState.OK ? "è´¨éä¸ç¬¦å" : ""; //} ////åé¦ç»PLCï¼ï¼åå ¥ç¹å¾ å®ï¼ //MessageModel fr = null; //fr = plcService.WriteValuePoint("", "", plcFlag, PLCManger.GetTypeForString("bool")); //if (fr.result) //{ // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}å·¥åºåé¦ç»PLC æåï¼ åºç° {message}"); //} //else //{ // Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" 工件{wplog.WorkPieceID} {WorkingProcedure}å·¥åºåé¦ç»PLC å¤±è´¥ï¼ åºç° {message} ï¼å¤±è´¥åå ï¼{fr.resMsg}"); //} //#endregion } else {//读ç 宿è¥å·¥ä»¶è´¨éä¸ç¬¦åæåçè·³åºï¼ä¸ç¨ç®¡è®¾å¤æ¯å¦æå·¥ä»¶æ¾è¿å»ï¼æ°éç³»ç»é½ä¸åæ´å½åå·¥åºï¼åé¦è®¾å¤PLC工件ä¸ç¬¦åï¼ //è¥å·¥åºåç»æ¶éç¹æ¶å°ç¸å ³å·¥ä»¶ä¿¡æ¯ååæ´å½åå·¥åºï¼ ä½è´¨éä¿¡æ¯ä¸å info.WorkingProcedureCurrent = loginfo.WorkingProcedure; } #endregion #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == loginfo.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{loginfo.EquipmentID} åè¦çæ§{loginfo.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = loginfo.WorkPieceID; equinfo.UpdatedUserName = loginfo.MonitoringPoint; equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #endregion //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo)); db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(info)); //UpdateKnifeToolLift(db, loginfo);//æ´æ°åå ·å¯¿å½ä¿¡æ¯ } else {//读ç 宿è¥å·¥ä»¶è´¨éä¸ç¬¦åæåçè·³åºï¼ä¸ç¨ç®¡è®¾å¤æ¯å¦æå·¥ä»¶æ¾è¿å»ï¼æ°éç³»ç»é½ä¸åæ´å½åå·¥åºï¼åé¦è®¾å¤PLC工件ä¸ç¬¦åï¼ //è¥å·¥åºåç»æ¶éç¹æ¶å°ç¸å ³å·¥ä»¶ä¿¡æ¯ååæ´å½åå·¥åºï¼ ä½è´¨éä¿¡æ¯ä¸å info.WorkingProcedureCurrent = loginfo.WorkingProcedure; } #endregion #region æ´æ°è®¾å¤å®æ¶è¡¨ bool isAddEquipmentCurrentMonitor = false; EquipmentCurrentMonitor equinfo = new EquipmentCurrentMonitor(); equinfo = db.EquipmentCurrentMonitor.Where(o => o.EquipmentID == loginfo.EquipmentID).FirstOrDefault(); if (equinfo == null || equinfo.Id < 1) {//没æå·¥ä»¶ä¿¡æ¯ï¼ä¸åæ´æ° Log4NetHelper.WriteErrorLog(type, $"设å¤{loginfo.EquipmentID} åè¦çæ§{loginfo.WorkingProcedure} 没æè·åå°è®¾å¤çæ§ä¿¡æ¯ï¼ç°æ°å¢"); equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo); equinfo.OnlineTime = DateTime.Now; isAddEquipmentCurrentMonitor = true; } else {//æ´æ°å·¥ä»¶ equinfo.WorkPieceID = loginfo.WorkPieceID; equinfo.UpdatedUserName = loginfo.MonitoringPoint; equinfo.UpdatedTime = DateTime.Now; equinfo.OnlineTime = DateTime.Now; } if (isAddEquipmentCurrentMonitor) { equinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId(); db.EquipmentCurrentMonitor.Add(equinfo); } #endregion //db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo)); db.WorkPieceInfoLog.Add(GetAddWorkPieceInfoLog(info)); //UpdateKnifeToolLift(db, loginfo);//æ´æ°åå ·å¯¿å½ä¿¡æ¯ } else { loginfo.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); loginfo.Remarks = $"ä¸çº¿å®æè¯»åäºç»´ç {loginfo.WorkPieceID ?? "空"}å¼å¸¸"; Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}ä¸çº¿çæ§è¯»ç æ è®° 读åå·¥ä»¶ç æ°æ®[{loginfo.WorkPieceID ?? "空"}]æ¶å¼å¸¸ï¼"); } } } catch (Exception e) DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_OP0501 - ¸´ÖÆ.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,353 @@ //using iWare_SCADA_BusinessLogical.BLL; //using iWare_SCADA_BusinessLogical.Utils; //using iWare_SCADA_Model; //using System; //using System.Collections.Generic; //using System.Data; //using System.Globalization; //using System.IO; //using System.Linq; //using System.Text; //using System.Threading; //using System.Threading.Tasks; //using System.Web.UI.WebControls; //namespace iWare_SCADA_BusinessLogical //{ // /// <summary> // /// OP05 ææ å®ææ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ // /// </summary> // public class DataCaptureHandler_OP0501 : DataCaptureHandler // { // public static readonly DataCaptureHandler_OP0501 Instance = new DataCaptureHandler_OP0501(); // public DataCaptureHandler_OP0501() // { // } // public override string WorkingProcedure // { // get { return _dataCaptureConfig.WorkingProcedure; } // } // public override string DataCapturePointCode // { // get { return _dataCaptureConfig.DataCapturePointCode; } // } // public override string DataCapturePointCname // { // get { return _dataCaptureConfig.DataCapturePointCname; } // } // public override void RefreshDataList(List<DataCaptureConfig> dataCaptureConfig) // { // } // public override void DataCaptureStart() // { // if (IsCaptureflag) // { // //// plcè¿æ¥ // //var plcService = PLCManger.GetSinglePLCService(_dataCaptureConfig); // //if (plcService == null) // //{ // // SystemValue.lbl_Alert_OP0501 = $"{RandomHelper.GenerateRandomCode(4)} æ²¡ææ¾å°{_dataCaptureConfig.WorkingProcedure}çPLC设å¤"; // // return; // //} // //if (plcService != null && !plcService.IsConnected) // //{ // // plcService.Close(); // // plcService.OpenService(); // //} // while (true) // { // ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor(); // threadStatusMonitor.Threadcode = DataCapturePointCode; // threadStatusMonitor.Threadcname = DataCapturePointCname; // threadStatusMonitor.Threadendtime = DateTime.Now; // //threadStatusMonitor.Threadlastmodifytime = DateTime.Now; // threadStatusMonitor.Threadstatue = 0; // threadStatusMonitor.ThreadId = Thread.CurrentThread.ManagedThreadId.ToString(); // try // { // ////_dataCaptureConfig // //if (plcService == null || !plcService.IsConnected) // //{ // // SystemValue.lbl_Alert_OP0501 = $" {RandomHelper.GenerateRandomCode(4)} {_dataCaptureConfig.WorkingProcedure} PLCè¿æ¥å·²æå¼ï¼æ£å¨å°è¯æå¼!"; // // plcService.Close(); // // plcService.OpenService(); // // Thread.Sleep(100); // // continue; // //} // //else // { // //var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType)); // //if (SystemValue.value_OP0501.Equals("0") && value.ToString().Equals("1")) // {//å½ä¸ä¸æ è®°ä½0ï¼å½åè·åæ 记为1æ¶ï¼ // //触åæä½, å¹¶ç»éæåéèµå¼ä¸º1 // //ä¸å¡ä»£ç // //读ç å®ææ²¡å¥ä¸å¡æä½ï¼è·åäºç»´ç ï¼ç¶åæ¾å°éåä¸ // #region ä»å·¥æ§æºè·åç¸å ³äºç»´ç // var path = ConfigHelper.GetConfigString("WorkPeiceIDPath");//æç æºæç äºç»´ç è·¯å¾ // //æ«æå ±äº«ç®å½å¹¶å°æ°çæä»¶æ«æè¿å ä¸è¬èæå¨15ç§å·¦å³ï¼å¯ä»¥ç¡®è®¤ä¸ä¸ï¼ // //æ«æä¿®æ¹æ¶é´å¨ä¸æ¬¡æ«ææ¶é´ä¹å10ç§å°å½åæ¶é´çä¹é´çæä»¶ // var dataTime = CommonManager.Instance.CheackPath(Environment.CurrentDirectory + "\\LastModifyTime\\OP05-LastScapTime.txt", 4, -10); // var scapEndTime = DateTimeHelper.GetDateTime(); // var newFiles = FileHelper.DetectNewFilesCSV(path, 60, Convert.ToDateTime(dataTime), scapEndTime); // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯å¼å§:{dataTime}"); // foreach (System.IO.FileInfo file in newFiles) // { // threadStatusMonitor.Threadlastmodifytime = DateTime.Now; // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,æä»¶å:{file.FullName}"); // DataTable dt = null; // dt = CSVHelper.ReadCSV(file.FullName); // if (dt == null) // { // continue; // } // lock (SystemValue.lock5QRcodeList) // { // #region æ¸ è¿æç¼å // try // { // //æ¸ è¿æç¼å // var lstRemoveKey = SystemValue.QRcodeList // .Where(p => p.Value < DateTimeHelper.GetDateTime().AddMinutes(-600)) // .Select(p => p.Key).ToList(); // if (lstRemoveKey.Count > 0) // { // foreach (var key in lstRemoveKey) SystemValue.QRcodeList.Remove(key); // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"æ¸ é¤ç¼åæ°éï¼ï¼{lstRemoveKey.Count}ï¼ å©ä½ç¼åæ°éï¼ï¼{SystemValue.QRcodeList.Count}ï¼"); // } // } // catch (Exception ex) // { // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, "æ¸ é¤åè¦æ¥æIDç¼åé误ï¼", ex); // } // #endregion // ////çééè¦å¤ççäºç»´ç ä¿¡æ¯ // //DataRow[] drArr = dt.Select(" æ«ç ç»æ='æå'"); //æ¥è¯¢ // //DataTable dtNew = dt.Clone(); // //for (int i = 0; i < drArr.Length; i++) // //{ // // var now = DateTime.Now; // // var list = drArr[i]["æ¶é´"].ToString().Split(':'); // // var d = new DateTime(now.Year, now.Month, now.Day, Convert.ToInt32(list[0]), Convert.ToInt32(list[1]), Convert.ToInt32(list[2]), DateTimeKind.Local); // // //and æ¶é´> '19:19:34:547' // // if (Convert.ToDateTime(DateTime.Now.ToShortDateString() + " " +drArr[i]["æ¶é´"]).TimeOfDay> Convert.ToDateTime(DateTime.Now.ToShortDateString() + " 19:19:34:547").TimeOfDay) // // dtNew.ImportRow(drArr[i]); // // //è·åå°ç工件å·å¼å¸¸ // // SystemValue.lbl_Alert_OP0501 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"; // // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"); // //} // DataTable newDt = new DataTable(); // var dates = file.Name.Split('-', '.'); // var date = string.Format("{0:D4}-{1:D2}-{2:D2}", int.Parse(dates[0]), int.Parse(dates[1]), int.Parse(dates[2])); // if (DateTimeHelper.GetDateTime().Date != Convert.ToDateTime(date) && DateTimeHelper.GetDateTime().AddDays(-1).Date != Convert.ToDateTime(date)) // { // continue; // } // DataRow[] filteredRows = new DataRow[dt.Rows.Count]; // if (dt.Rows.Count > 0) // { // int j = 0; // var cache = DataCache.GetCache("OP501-LastTime"); // DateTime? lasttime = null; // if (cache != null) // { // lasttime = Convert.ToDateTime(cache); // } // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,å·¥ä»¶ææ°æ¶é´:{(cache == null ? "æ ç¼å" : cache.ToString())}"); // for (int i = dt.Rows.Count - 1; i >= 0; i--) // {//éåºï¼å³ä¼å 读åæå䏿¡æ°æ® // string timeValue = " "; // try // { // timeValue = dt.Rows[i]["æ¶é´"].ToString(); // string[] timeComponents = timeValue.Split(':'); // string correctedTime = string.Format("{0:D2}:{1:D2}:{2:D2}", int.Parse(timeComponents[0]), int.Parse(timeComponents[1]), int.Parse(timeComponents[2])); // var newTime = date + " " + correctedTime; // dt.Rows[i]["æ¶é´"] = newTime; // var currrentTime = Convert.ToDateTime(dt.Rows[i]["æ¶é´"]); // if (cache == null) // { // if (j == 0) // { // if (currrentTime > DateTimeHelper.GetDateTime().AddHours(-10)) // { // lasttime = currrentTime; // } // } // var oldTime = DateTime.Now.AddMinutes(-10); // if (currrentTime <= oldTime) // {//妿exceléçæ¶é´è¦æ¯ å½åå10åéæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã // break; // } // filteredRows[j] = dt.Rows[i]; // } // else // { // var cacheTime = Convert.ToDateTime(cache); // if (currrentTime <= cacheTime) // {//妿exceléçæ¶é´è¦æ¯ æç¼åä¸çæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã // break; // } // filteredRows[j] = dt.Rows[i]; // } // if (currrentTime > DateTimeHelper.GetDateTime().AddHours(-10)) // { // if (lasttime != null && lasttime < currrentTime) // { // lasttime = currrentTime; // } // } // j++; // } // catch (Exception ex) // { // SystemValue.lbl_Alert_OP0501 = $" {_dataCaptureConfig.WorkingProcedure}æä»¶ææ æ¶é´[{timeValue}]å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, $" {_dataCaptureConfig.WorkingProcedure}æä»¶ææ æ¶é´,åºç°å¼å¸¸ï¼", ex); // } // } // filteredRows = filteredRows.Where(item => item != null).ToArray(); // // 设置ç¼åå¼ // DateTime absoluteExpiration = DateTime.Now.AddDays(30); // TimeSpan slidingExpiration = TimeSpan.FromMinutes(20); // if (slidingExpiration == TimeSpan.Zero) // { // absoluteExpiration = DateTime.Now.AddDays(30); // } // else // { // absoluteExpiration = DateTime.MaxValue; // } // DataCache.SetCache("OP501-LastTime", lasttime, absoluteExpiration, slidingExpiration); // if (filteredRows.Count() <= 0) // { // continue; // } // if (file.LastAccessTime < Convert.ToDateTime(dataTime)) continue; // using (StreamWriter writer = new StreamWriter(Environment.CurrentDirectory + "\\OP05-LastScapTime.txt", false)) // { // dataTime = file.LastAccessTime.ToString(); // writer.Write(dataTime); // } // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"读åå°{filteredRows.Count()}è¡æ°æ®ï¼æ¶é´èå´æ¯{filteredRows[j - 1]["æ¶é´"]}-{filteredRows[0]["æ¶é´"]}"); // } // //// 工件å·ï¼äºç»´ç å¼ï¼ // //string WorkPieceID = dt.Rows[0][""].ToString(); // //if (WorkPieceID.Length != 22) // //{ // // //è·åå°ç工件å·å¼å¸¸ // // SystemValue.lbl_Alert_HMI01 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"; // // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ã" + WorkPieceID + "ãé¿åº¦å¼å¸¸ï¼é¿åº¦ä¸çäº22ä½"); // //} // //SystemValue.QRcodeList.Add("", DateTimeHelper.GetDateTime());//äºç»´ç æ·»å å°åè¡¨ä¸ // WorkPieceLog wplog = new WorkPieceLog(); // wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // wplog.WorkingProcedure = _dataCaptureConfig.WorkingProcedure; ; // //wplog.EquipmentID = WorkingProcedure; // wplog.Remarks = "cs"; // wplog.MonitoringPoint = DataCapturePointCode; // //wplog.CreatedUserName = DataCapturePointCode; // SystemBussinessHelper.SetWorkPieceLogMiddleForCreatedUserName(ref wplog, DataCapturePointCode, DataCapturePointCname); // wplog.CreatedTime = DateTimeHelper.GetDateTime(); // wplog.UpdatedTime = DateTimeHelper.GetDateTime(); // wplog.UpdatedUserName = Environment.MachineName + "èªå¨" + Thread.CurrentThread.ManagedThreadId.ToString(); // wplog.IsDeleted = false; // wplog.EquipmentID = _dataCaptureConfig.EquipmentID; // wplog.OnlineTime = DateTimeHelper.GetDateTime();//ç»ä¸çº¿æ¶é´ç¨ // //wplog.QualityState = 1; // wplog.QualityState = (int)QualityStateEnum.OK;//é»è®¤åæ ¼ï¼OP05é»è®¤åæ ¼ // wplog.ProcessingDuration = 1; // wplog.MachineToolState = 1; // wplog.AlertType = 1; // wplog.WorkPieceNumber = 1; // wplog.WorkPieceOnlineTime = Convert.ToDateTime(dataTime); // wplog.WorkPieceOfflineTime = Convert.ToDateTime(dataTime).AddHours(1); // wplog.WorkPieceStartMachiningTime = Convert.ToDateTime(dataTime); // wplog.WorkPieceEndMachiningTime = DateTime.Now.AddDays(7); // wplog.KnifeEdgeNumber = 10; // wplog.KnifeToolLife = 10; // wplog.KnifeToolEarlyWarningLife = 3; // wplog.KnifeToolSurplusLife = 10; // foreach (var item in filteredRows) // { // Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), // $"{_dataCaptureConfig.WorkingProcedure}å·¥åºè¯»åå·¥æ§æºä¸äºç»´ç ä¿¡æ¯,读å工件äºç»´ç :{item["ææ å 容"].ToString()}"); // if (item == null) break; // wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId(); // wplog.WorkPieceID = item["ææ å 容"].ToString(); // wplog.OfflineTime = Convert.ToDateTime(dataTime); // wplog.Remarks = item["æ¶é´"].ToString() + "|" + item["ææ å 容"].ToString() + "|" + item["ææ å 容"].ToString() + "|" + item["æ«ç ç级"].ToString() + "|" + item["æ«ç ç»æ"].ToString(); // WorkPieceInfoManager.ReadQRcode(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), null, _dataCaptureConfig.IsFeedback); // threadStatusMonitor.Threadstatue = 1; // } // } // } // #endregion // //var fileCount = ((iWare_SCADA_BusinessLogical.Utils.FindFiles)newFiles).; // //Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"æ«æå®æï¼å ±æ«æå°ï¼ï¼{fileCount.Count()}ï¼ä¸ªæä»¶"); // } // //SystemValue.value_OP0501 = value.ToString(); // } // } // catch (Exception ex) // { // threadStatusMonitor.ErrorMsg = $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; // SystemValue.lbl_Alert_OP0501 = $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼è¯·æ¥çæ¥å¿ï¼"; // Log4NetHelper.WriteErrorLog(LogType.PLCOP05, $" {_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯,åºç°å¼å¸¸ï¼", ex); // } // finally // { // WorkPieceInfoManager.ThreadMonitor(threadStatusMonitor); // } // //线ç¨å¤ä¹ æ§è¡ä¸æ¬¡ï¼ä¸å å«ä¸å¡å¤çæ¶é´ï¼ // if (!_dataCaptureConfig.DataCaptureFrequency.HasValue || _dataCaptureConfig.DataCaptureFrequency < 10) // { // Thread.Sleep(3000); // } // else // { // Thread.Sleep(_dataCaptureConfig.DataCaptureFrequency.Value); // } // } // } // else // { // SystemValue.lbl_Alert_OP0501 = $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ä¸åæ ¡éªï¼è¯·ç¡®è®¤é 置信æ¯ï¼"; // Log4NetHelper.WriteInfoLog(LogType.PLCOP05, $"{_dataCaptureConfig.WorkingProcedure}å·¥åºææ 宿æ è®°ï¼è¯»åå·¥æ§æºä¸æå°äºç»´ç ä¿¡æ¯ï¼ä¸åæ ¡éªï¼è¯·ç¡®è®¤é ç½®å¼å¸¸"); // } // } // } //} DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_OP0501.cs
@@ -59,6 +59,8 @@ // plcService.OpenService(); //} string lastHandlerWorkPileIDForOP0501 = "";//æå䏿¬¡å¤ççå·¥ä»¶å· while (true) { ThreadStatusMonitor threadStatusMonitor = new ThreadStatusMonitor(); @@ -189,7 +191,8 @@ } } var oldTime = DateTime.Now.AddMinutes(-10); if (currrentTime <= oldTime) // if (currrentTime <= oldTime) if (lastHandlerWorkPileIDForOP0501 == Convert.ToString(dt.Rows[i]["ææ å 容"])) {//妿exceléçæ¶é´è¦æ¯ å½åå10åéæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã break; } @@ -198,7 +201,8 @@ else { var cacheTime = Convert.ToDateTime(cache); if (currrentTime <= cacheTime) //if (currrentTime <= cacheTime) if (lastHandlerWorkPileIDForOP0501 == Convert.ToString(dt.Rows[i]["ææ å 容"])) {//妿exceléçæ¶é´è¦æ¯ æç¼åä¸çæ¶é´è¦æ©ï¼é£ä¹æå°±å¿½ç¥ä¸å¤çã break; } @@ -308,6 +312,8 @@ } //è®°å½ä¸æåä¸ä¸ªç lastHandlerWorkPileIDForOP0501 = Convert.ToString(dt.Rows[dt.Rows.Count - 1]["ææ å 容"]); } } 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\DataCaptureHandler_OP0501 - å¤å¶.cs" /> <Compile Include="DataCaptureHandlerV2\DeleteDataHandler.cs" /> <Compile Include="DataCaptureHandlerV2\OP80QualityDataHandler.cs" /> <Compile Include="DataCaptureHandlerV2\DataCaptureHandler_01.cs" />