From 4e475294999e7053036cc162de388010f6ee3132 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 08 1月 2025 07:33:02 +0800
Subject: [PATCH] 202518-修复op35设备状态不对的问题

---
 DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs |  201 ++++++++++----------------------------------------
 1 files changed, 40 insertions(+), 161 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 6f034ad..b4c5868 100644
--- a/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
+++ b/DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -642,13 +642,10 @@
                             {//鑷姩杩愯鐘舵��+涓嬫枡閬撴弧鏂� =  瀹屾垚 锛堝氨鏄湁鐢熶骇鍑烘潵浣嗘病鏈夊嚭璁惧锛�
                                 State = ((int)EnumEquipmentCurrentStateDisplay.瀹屾垚).ToString();
                             }
-                            //else if (loginfo.IsNormalProduction && loginfo.LackMaterial)
-                            //{//鍏朵粬鐘舵�佸叏绠楀緟鏈�
-                            //    State = ((int)EnumEquipmentCurrentStateDisplay.寰呮満).ToString();
-                            //}
                             else
                             {//鍏朵粬鐘舵�佸叏绠楀緟鏈�
                                 State = ((int)EnumEquipmentCurrentStateDisplay.寰呮満).ToString();
+                                CommonHandleEnumEquipmentCurrentState(db, info, ref State); //鍏叡澶勭悊 璁惧褰撳墠鐘舵�� [Editby shaocx,2025-01-07]
                             }
                         }
                     }
@@ -735,164 +732,7 @@
                             equlogalert.WarnEndTime = DateTimeHelper.GetDateTime();
                         }
                     }
-                    #region 鍘熸潵鐨勪唬鐮侊紝浠ュ悗鍒犳帀
 
-                    //EquipmentWorkingLog infolog =new EquipmentWorkingLog();
-                    //infolog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
-                    //infolog.LogAddTime = DateTimeHelper.GetDateTime();
-                    //infolog.WorkPieceLogID = loginfo2.Id;
-                    //infolog.EquipmentID = info.EquipmentID;
-                    //bool isAddEquipmentWorkingLog = false;
-                    //if (loginfo.ischeckAlertStatus)
-                    //{//鍛婅鐘舵�佸彂鐢熷彉鏇�
-                    //    //璇存槑鏄竴涓柊鍛婅锛岄渶瑕佹洿鏂拌澶囩洃鎺ц〃
-                    //    //鏌ユ壘鏈粨鏉熺殑鍛婅
-                    //    var equlog = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID 
-                    //    && o.FailureStartTime != null && o.FailureStartTime != DateTime.MinValue)
-                    //        .OrderByDescending(o=>o.FailureStartTime).FirstOrDefault();
-                    //    if (loginfo.IsCloseAlert)
-                    //    {
-                    //        if (equlog == null|| (equlog.FailureEndTime!=null&& equlog.FailureEndTime > DateTime.MinValue))
-                    //        {
-                    //            info.AlertTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
-                    //            infolog.FailureStartTime = DateTimeHelper.GetDateTime();
-                    //            infolog.FailureType = faultall;
-                    //            infolog.FailureMsg = faultmsg;
-                    //            infolog.WorkingProcedure = loginfo.WorkingProcedure;
-                    //            infolog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //            infolog.Remarks = "鏁呴殰淇℃伅鍑虹幇鍙樻洿1";
-                    //            infolog.UpdateDesc = (infolog.UpdateDesc??"")+"鏁呴殰淇℃伅鍙樻洿\r\n";
-                    //            isAddEquipmentWorkingLog =true;
-                    //        }
-                    //    }
-                    //    else
-                    //    {
-                    //        if (equlog != null && (equlog.FailureEndTime == null || equlog.FailureEndTime <= DateTime.MinValue))
-                    //        {//鍛婅鍏抽棴鐨勶紝鑻ユ病鏈夊憡璀︿俊鎭紝涓嶇敤绠�
-                    //            equlog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //            equlog.FailureEndTime = DateTimeHelper.GetDateTime();
-                    //        }
-
-                    //    }
-                    //}
-                    //if (loginfo.ischeckMessageStatus)
-                    //{//鍛婅鐘舵�佸彂鐢熷彉鏇�
-                    //    //璇存槑鏄竴涓柊鍛婅锛岄渶瑕佹洿鏂拌澶囩洃鎺ц〃
-                    //    //鏌ユ壘鏈粨鏉熺殑鍛婅
-                    //    var equlog = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID 
-                    //    && o.WarnStartTime != null && o.WarnStartTime != DateTime.MinValue).OrderByDescending(o => o.WarnStartTime).FirstOrDefault();
-                    //    if (loginfo.IsMessage)
-                    //    {
-                    //        if (equlog == null || (equlog.WarnEndTime != null && equlog.WarnEndTime > DateTime.MinValue))
-                    //        {
-                    //            info.WarnTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
-                    //            infolog.WarnStartTime = DateTimeHelper.GetDateTime();
-                    //            infolog.WarnType = alertall;
-                    //            infolog.Warnmsg = warnmsg;
-                    //            infolog.WorkingProcedure = loginfo.WorkingProcedure;
-                    //            infolog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //            infolog.Remarks = "鍛婅淇℃伅鍑虹幇鍙樻洿2";
-                    //            infolog.UpdateDesc = (infolog.UpdateDesc ?? "") + "鍛婅淇℃伅鍙樻洿\r\n";
-                    //            isAddEquipmentWorkingLog = true;
-                    //        }
-                    //    }
-                    //    else
-                    //    {
-                    //        if (equlog != null && (equlog.WarnEndTime == null || equlog.WarnEndTime <= DateTime.MinValue))
-                    //        {//鍛婅鍏抽棴鐨勶紝鑻ユ病鏈夊憡璀︿俊鎭紝涓嶇敤绠�
-                    //            equlog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //            equlog.WarnEndTime = DateTimeHelper.GetDateTime();
-                    //        }
-
-                    //    }
-                    //}
-                    ////鏁呴殰銆嬭鍛娿�嬪叾浠�
-                    //if (loginfo.IsCloseAlert)
-                    //{//鏁呴殰
-                    //    info.AlertTime = info.AlertTime??DateTime.Now;
-                    //    info.FailureType = "";
-                    //    info.WarnType = "";
-                    //    info.Alertmsg = faultmsg;//杩欎釜闇�瑕佷唬鐮佸搴斿瓧鍏哥淮鎶や俊鎭墠鐭ラ亾
-                    //    info.FailureType = faultall;
-                    //    State = ((int)EnumEquipmentCurrentStateDisplay.鏁呴殰).ToString();
-
-
-                    //    infolog.FailureStartTime = DateTimeHelper.GetDateTime();
-                    //    infolog.FailureType = faultall;
-                    //    infolog.FailureMsg = faultmsg;
-                    //    if (loginfo.IsMessage)
-                    //    {
-                    //        info.WarnTime = info.WarnTime ?? DateTime.Now;
-                    //        info.Warnmsg = warnmsg;//杩欎釜闇�瑕佷唬鐮佸搴斿瓧鍏哥淮鎶や俊鎭墠鐭ラ亾
-                    //        info.WarnType = alertall;
-                    //    }
-                    //}
-                    //else if(loginfo.IsMessage)
-                    //{//璀﹀憡
-                    //    info.AlertTime = null;
-                    //    info.Alertmsg = "";//杩欎釜闇�瑕佷唬鐮佸搴斿瓧鍏哥淮鎶や俊鎭墠鐭ラ亾
-                    //    info.FailureType = "";
-
-                    //    info.WarnTime = info.WarnTime ?? DateTime.Now;
-                    //    info.Warnmsg = warnmsg;//杩欎釜闇�瑕佷唬鐮佸搴斿瓧鍏哥淮鎶や俊鎭墠鐭ラ亾
-                    //    info.WarnType = alertall;
-
-                    //    infolog.WarnStartTime = DateTimeHelper.GetDateTime();
-                    //    infolog.WarnType = alertall;
-                    //    infolog.Warnmsg = warnmsg;
-                    //    State = ((int)EnumEquipmentCurrentStateDisplay.璀﹀憡).ToString();
-                    //}
-                    //else
-                    //{//鍛婅缁撴潫锛岃幏鍙栨湁鍛婅鐨勬暟鎹紝鐒跺悗鍏抽棴浠�
-                    //    info.AlertTime = null;
-                    //    info.Alertmsg = "";//杩欎釜闇�瑕佷唬鐮佸搴斿瓧鍏哥淮鎶や俊鎭墠鐭ラ亾
-                    //    info.FailureType = "";
-                    //    info.WarnType = "";
-                    //    info.WarnTime = null;
-                    //    info.Warnmsg = "";
-                    //    if (loginfo.IsNormalProduction&& loginfo.LackMaterial)
-                    //    {
-                    //        State = ((int)EnumEquipmentCurrentStateDisplay.寰呮満).ToString();
-                    //    }
-                    //    else if(loginfo.IsNormalProduction && !loginfo.LackMaterial)
-                    //    {
-                    //        State = ((int)EnumEquipmentCurrentStateDisplay.鐢熶骇).ToString();
-                    //    }
-                    //    else if(loginfo.IsNormalProduction && loginfo.FullMaterial)
-                    //    {//姝e父鐢熶骇+涓嬫枡閬撴弧鏂� =  瀹屾垚 锛堝氨鏄湁鐢熶骇鍑烘潵浣嗘病鏈夊嚭璁惧锛�
-                    //        State = ((int)EnumEquipmentCurrentStateDisplay.瀹屾垚).ToString();
-                    //    }
-                    //    else
-                    //    {//鐞嗚涓婁笉鍙兘璧板埌杩欙紝鍙槸閬垮厤绌哄��
-                    //        State = ((int)EnumEquipmentCurrentStateDisplay.寰呮満).ToString();
-                    //    }
-                    //}
-                    //if (!string.IsNullOrEmpty(State) && State != info.EquipmentCurrentState)
-                    //{//鍙湁鐘舵�佸嚭鐜板彉鍖栨墠鍙樻洿
-                    //    info.UpdatedUserName = loginfo.MonitoringPoint;
-                    //    info.UpdatedTime = DateTime.Now;
-                    //    info.EquipmentCurrentState = State;
-
-                    //    var equlog = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID
-                    //    && o.EquipmentStateStartTime != null && o.EquipmentStateStartTime != DateTime.MinValue).OrderByDescending(o => o.EquipmentStateStartTime).FirstOrDefault();
-
-                    //    if (equlog != null && (equlog.EquipmentStateEndTime == null || equlog.EquipmentStateEndTime <= DateTime.MinValue))
-                    //    {
-                    //        equlog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //        equlog.EquipmentStateEndTime = DateTimeHelper.GetDateTime();
-
-                    //    }
-                    //    //鐘舵�佸彉鏇达紝闇�瑕佹洿鏂板師鏉ョ殑锛屽苟鎻掑叆鏂扮殑
-                    //    infolog.EquipmentState = State;
-                    //    infolog.EquipmentStateStartTime = DateTimeHelper.GetDateTime();
-                    //    infolog.WorkingProcedure = loginfo.WorkingProcedure;
-                    //    infolog.MonitoringPoint = loginfo.MonitoringPoint;
-                    //    infolog.Remarks = "鍛婅淇℃伅鍑虹幇鍙樻洿3";
-                    //    infolog.UpdateDesc = (infolog.UpdateDesc ?? "") + $"璁惧鐘舵�佸彉鏇翠负{((EnumEquipmentCurrentStateDisplay)int.Parse(State)).ToString()}\r\n";
-                    //    isAddEquipmentWorkingLog = true;
-                    //}
-                    ////info.Remarks = $"{loginfo.WorkingProcedure}宸ュ簭鍛婅";
-                    #endregion
                     if (isAddEquipmentCurrentMonitor)
                     {
                         info.Id = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -916,6 +756,45 @@
 
 
         /// <summary>
+        /// 鍏叡澶勭悊 璁惧褰撳墠鐘舵��
+        /// </summary>
+        /// <param name="db"></param>
+        /// <param name="info"></param>
+        /// <param name="state"></param>
+        private static void CommonHandleEnumEquipmentCurrentState(DbModel db, EquipmentCurrentMonitor info, ref string state)
+        {
+            try
+            {
+                //濡傛灉鏄疧P35锛屽垯澶勭悊锛屽鏋滀笉鏄紝鍒欎笉澶勭悊
+                var query_WorkingProcedure = "OP35";
+                if (info.WorkingProcedure == query_WorkingProcedure)
+                {
+                    var quereyCreateTime = DateTime.Now.AddMinutes(-5);
+                    //鍒ゆ柇10鍒嗛挓涔嬪唴 锛屽彧杩� 涓嶅嚭
+                    var num = db.WorkPieceProcess.Where(o => o.WorkingProcedureCurrent == query_WorkingProcedure
+                      && (o.EndTime == null || o.EndTime <= DateTime.MinValue)
+                      && o.CreatedTime >= quereyCreateTime
+                      ).Count();
+                    if (num > 0)
+                    {
+                        state = ((int)EnumEquipmentCurrentStateDisplay.鐢熶骇).ToString();
+                        return;
+                    }
+                }
+                else
+                {
+                    return;
+                }
+                return;
+            }
+            catch (Exception)
+            {
+                return;
+            }
+        }
+
+
+        /// <summary>
         /// 蹇冭烦鐩戞帶
         /// </summary>
         /// <param name="loginfo"></param>

--
Gitblit v1.9.3