From a68302033da081f9ad5e82268a01892c3e129cc1 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周五, 19 9月 2025 08:12:26 +0800
Subject: [PATCH] 增加信标

---
 siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs |  140 ++++++++++++++++++++++++++++
 siemenswmssditcode/wmsService/wcftest/wmsService.csproj                             |    1 
 siemenswmssditcode/wmsService/wcftest/Form1.cs                                      |  155 ++++++++++++++++++++++++++++--
 3 files changed, 282 insertions(+), 14 deletions(-)

diff --git a/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs b/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs
new file mode 100644
index 0000000..645db40
--- /dev/null
+++ b/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs
@@ -0,0 +1,140 @@
+锘縰sing logtxtWrite;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using wcftest.orm;
+
+namespace wcftest.BussinessExtension
+{
+    public class DeviceGeneralInfoHelper
+    {
+
+        /// <summary>
+        /// 澶勭悊 
+        /// </summary>
+        /// <param name="srmNo"></param>
+        /// <param name="enterTaskCount"></param>
+        /// <param name="outTaskCount"></param>
+        /// <param name="stockUsingCount"></param>
+        /// <param name="outTimeStockCount"></param>
+        /// <param name="mod"></param>
+        /// <param name="lastHour"></param>
+        /// <param name="todayTime"></param>
+        /// <param name="deviceSwForDetail"></param>
+        /// <param name="deviceRunTime"></param>
+        /// <param name="deviceAlarmTime"></param>
+        /// <param name="deviceWaitTime"></param>
+        public static void HandlerDeviceGeneralInfoForDetail(
+            int srmNo,
+             List<Task_Queue> enterTaskCount,
+            List<Task_Queue> outTaskCount,
+            List<Base_Position> stockUsingCount,
+            List<Base_ProductPosition> outTimeStockCount,
+            dbModel mod, int lastHour, DateTime todayTime,
+            Stopwatch deviceSwForDetail,
+            TimeSpan deviceRunTime,
+            TimeSpan deviceAlarmTime,
+             TimeSpan deviceWaitTime
+            )
+        {
+            try
+            {
+                //閲嶆柊缁勭粐鏁版嵁
+                enterTaskCount = enterTaskCount.Where(x => x.DoCount == srmNo).ToList();
+                outTaskCount = outTaskCount.Where(x => x.DoCount == srmNo).ToList();
+
+
+                //姣忛殧涓�灏忔椂淇濆瓨涓�娆¤澶囩姸鎬佹椂闂�
+                var str_srmNo = srmNo.ToString();
+                deviceGeneralInfoForDetail todayDeviceInfo = null;
+                todayDeviceInfo = mod.deviceGeneralInfoForDetail.FirstOrDefault(x => x.createTime > todayTime && x.ext1 == str_srmNo);
+                if (todayDeviceInfo == null)
+                {
+                    todayDeviceInfo = new deviceGeneralInfoForDetail();
+                    todayDeviceInfo.ext1 = str_srmNo;//璧嬪�� 鏈哄彿
+                    todayDeviceInfo.createTime = DateTime.Now;
+                    mod.deviceGeneralInfoForDetail.Add(todayDeviceInfo);
+                    //璁℃椂澶嶄綅
+                    deviceSwForDetail.Reset();
+                    deviceAlarmTime = deviceSwForDetail.Elapsed;
+                    deviceRunTime = deviceSwForDetail.Elapsed;
+                    deviceWaitTime = deviceSwForDetail.Elapsed;
+
+                }
+                else
+                {
+
+                    todayDeviceInfo.deviceRunTime = deviceRunTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceRunTime.TotalMinutes) : 0M;
+                    todayDeviceInfo.deviceAlarmTime = deviceAlarmTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceAlarmTime.TotalMinutes) : 0M;
+                    //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
+                    CommonCalcWaitTime(ref todayDeviceInfo);
+
+                    todayDeviceInfo.taskEnterCount = enterTaskCount.Count;//鍏ュ簱浠诲姟鏁�
+                    todayDeviceInfo.taskOutCount = outTaskCount.Count;//鍑哄簱浠诲姟鏁�
+                    //鏇存敼鏁伴噺 銆怑ditby shaocx,2024-11-22銆�
+                    decimal cout = stockUsingCount.Count / 1152M * 100;
+                    todayDeviceInfo.stockProportion = Convert.ToInt32(cout);//宸蹭娇鐢ㄧ殑搴撲綅
+                    todayDeviceInfo.outDate = outTimeStockCount.Count;//杩囨湡鏃堕棿灏忎簬涓�涓湀鐨勫簱瀛樻暟鎹�
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        public static void deviceInfoInitForDetails(int srmNo, DateTime todayTime, int lastHour, TimeSpan deviceAlarmTime, TimeSpan deviceRunTime, TimeSpan deviceWaitTime)
+        {
+            var str_srmNo = srmNo.ToString();
+            using (dbModel mod = new dbModel())
+            {
+                deviceGeneralInfoForDetail todayDeviceInfo = mod.deviceGeneralInfoForDetail.FirstOrDefault(x => x.createTime > todayTime && x.ext1 == str_srmNo);
+                if (todayDeviceInfo != null)
+                {
+                    TimeSpan alarmTime = new TimeSpan(Convert.ToInt32(Math.Floor((decimal)todayDeviceInfo.deviceAlarmTime / 60M)), Convert.ToInt32((decimal)todayDeviceInfo.deviceAlarmTime % 60), 0);
+                    deviceAlarmTime = alarmTime;
+                    TimeSpan runTime = new TimeSpan(Convert.ToInt32(Math.Floor((decimal)todayDeviceInfo.deviceRunTime / 60M)), Convert.ToInt32((decimal)todayDeviceInfo.deviceRunTime % 60), 0);
+                    deviceRunTime = runTime;
+                    TimeSpan waitTime = new TimeSpan(Convert.ToInt32(Math.Floor((decimal)todayDeviceInfo.deviceWaitTime / 60M)), Convert.ToInt32((decimal)todayDeviceInfo.deviceWaitTime % 60), 0);
+                    deviceWaitTime = waitTime;
+
+                }
+                else
+                {
+                    deviceGeneralInfoForDetail creatTodayDeviceInfo = new deviceGeneralInfoForDetail();
+                    creatTodayDeviceInfo.ext1 = str_srmNo;//鏈哄彿璧嬪��
+                    //璁惧鎶ヨ鏃堕棿
+                    creatTodayDeviceInfo.deviceAlarmTime = Convert.ToDecimal(deviceAlarmTime.Hours * 60M) + deviceAlarmTime.Minutes;//鍗曚綅鍒嗛挓
+                    //璁惧杩愯鏃堕棿
+                    creatTodayDeviceInfo.deviceRunTime = Convert.ToDecimal(deviceRunTime.Hours * 60M) + deviceRunTime.Minutes;//鍗曚綅鍒嗛挓
+                    //璁惧绛夊緟鏃堕棿
+                    //creatTodayDeviceInfo.deviceWaitTime = Convert.ToDecimal(deviceWaitTime.Hours * 60M) + deviceWaitTime.Minutes;//鍗曚綅鍒嗛挓
+                    //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
+                    DeviceGeneralInfoHelper.CommonCalcWaitTime(ref todayDeviceInfo);
+
+                    creatTodayDeviceInfo.createTime = DateTime.Now;
+                    mod.deviceGeneralInfoForDetail.Add(creatTodayDeviceInfo);
+                    mod.SaveChanges();
+                    //璁℃椂澶嶄綅
+
+                }
+
+            }
+        }
+
+
+        public static void CommonCalcWaitTime(ref deviceGeneralInfo todayDeviceInfo)
+        {
+            //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
+            todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime);
+        }
+        public static void CommonCalcWaitTime(ref deviceGeneralInfoForDetail todayDeviceInfo)
+        {
+            //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
+            todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime);
+        }
+    }
+}
diff --git a/siemenswmssditcode/wmsService/wcftest/Form1.cs b/siemenswmssditcode/wmsService/wcftest/Form1.cs
index 72e201d..2293db5 100644
--- a/siemenswmssditcode/wmsService/wcftest/Form1.cs
+++ b/siemenswmssditcode/wmsService/wcftest/Form1.cs
@@ -66,14 +66,20 @@
         /// 璁惧杩愯鏃堕棿
         /// </summary>
         public static TimeSpan deviceRunTime;
+        public static TimeSpan deviceRunTime_Srm1;
+        public static TimeSpan deviceRunTime_Srm2;
         /// <summary>璁惧绛夊緟鏃堕棿
         /// 璁惧绛夊緟鏃堕棿
         /// </summary>
         public static TimeSpan deviceWaitTime;
+        public static TimeSpan deviceWaitTime_Srm1;
+        public static TimeSpan deviceWaitTime_Srm2;
         /// <summary>璁惧鎶ヨ鏃堕棿
         /// 璁惧鎶ヨ鏃堕棿
         /// </summary>
         public static TimeSpan deviceAlarmTime;
+        public static TimeSpan deviceAlarmTime_Srm1;
+        public static TimeSpan deviceAlarmTime_Srm2;
         /// <summary>璁惧浣跨敤鐜�
         /// 璁惧浣跨敤鐜�
         /// </summary>
@@ -82,10 +88,14 @@
         /// 璁惧杩愯璁℃椂鍣�
         /// </summary>
         Stopwatch deviceSw = new Stopwatch();
+        Stopwatch deviceSw_Srm1 = new Stopwatch();
+        Stopwatch deviceSw_Srm2 = new Stopwatch();
         /// <summary>涓婁竴娆¤澶囪繍琛岀姸鎬�
         /// 涓婁竴娆¤澶囪繍琛岀姸鎬�
         /// </summary>
         public string lastStatus = "绛夊緟";
+        public string lastStatus_Srm1 = "绛夊緟";
+        public string lastStatus_Srm2 = "绛夊緟";
         /// <summary>涓婁竴娆″皬鏃舵暟--姣忛殧涓�灏忔椂淇濆瓨涓�娆¤澶囩姸鎬佹椂闂�
         /// 涓婁竴娆″皬鏃舵暟--姣忛殧涓�灏忔椂淇濆瓨涓�娆¤澶囩姸鎬佹椂闂�
         /// </summary>
@@ -3122,6 +3132,8 @@
 
                     string[] containers = new string[19];
                     deviceSw.Start();// 璁惧杩愯璁$畻鍣ㄥ紑濮嬭鏃�
+                    deviceSw_Srm1.Start();// 璁惧杩愯璁$畻鍣ㄥ紑濮嬭鏃�
+                    deviceSw_Srm2.Start();// 璁惧杩愯璁$畻鍣ㄥ紑濮嬭鏃�
                     #region 鑾峰彇璁惧淇℃伅
 
                     if (allowGetDeviceInfo == true)
@@ -3195,7 +3207,7 @@
                             totalInfo.list11[1] = outTaskCount.Count;
                         }
 
-                       
+
                         totalInfo.list11[2] = 1152;
                         totalInfo.list11[3] = 1152 - stockUsingCount.Count();
 
@@ -3219,11 +3231,11 @@
                             }
                             else
                             {
-                                
+
                                 todayDeviceInfo.deviceRunTime = deviceRunTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceRunTime.TotalMinutes) : 0M;
                                 todayDeviceInfo.deviceAlarmTime = deviceAlarmTime.TotalMinutes > 0 ? Convert.ToDecimal(deviceAlarmTime.TotalMinutes) : 0M;
                                 //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
-                                CommonCalcWaitTime(ref todayDeviceInfo);
+                                DeviceGeneralInfoHelper.CommonCalcWaitTime(ref todayDeviceInfo);
 
                                 todayDeviceInfo.taskEnterCount = enterTaskCount.Count;//鍏ュ簱浠诲姟鏁�
                                 todayDeviceInfo.taskOutCount = outTaskCount.Count;//鍑哄簱浠诲姟鏁�
@@ -3232,6 +3244,15 @@
                                 todayDeviceInfo.stockProportion = Convert.ToInt32(cout);//宸蹭娇鐢ㄧ殑搴撲綅
                                 todayDeviceInfo.outDate = outTimeStockCount.Count;//杩囨湡鏃堕棿灏忎簬涓�涓湀鐨勫簱瀛樻暟鎹�
                             }
+
+                            DeviceGeneralInfoHelper.HandlerDeviceGeneralInfoForDetail(1, enterTaskCount, outTaskCount, stockUsingCount, outTimeStockCount,
+                                mod, lastHour, todayTime,
+                                deviceSw_Srm1, deviceRunTime_Srm1, deviceAlarmTime_Srm1, deviceWaitTime_Srm1
+                                );
+                            DeviceGeneralInfoHelper.HandlerDeviceGeneralInfoForDetail(2, enterTaskCount, outTaskCount, stockUsingCount, outTimeStockCount,
+                             mod, lastHour, todayTime,
+                             deviceSw_Srm2, deviceRunTime_Srm2, deviceAlarmTime_Srm2, deviceWaitTime_Srm2
+                             );
 
                             int chang = mod.SaveChanges();
                         }
@@ -3261,6 +3282,60 @@
                             if (lastStatus != "杩愯")
                             {
                                 setDeviceStatusTime(lastStatus, "杩愯");
+                            }
+                        }
+                    }
+                    #endregion
+
+                    #region 缁熻璁惧杩愯鏁堢巼锛堣缁嗭級 銆怑ditby shaocx,2025-09-19銆�
+                    //1鍙峰爢鍨涙満
+                    if (deviceListInfo.srm1.isAlarm == true)
+                    {
+                        if (lastStatus_Srm1 != "鎶ヨ")
+                        {
+                            setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "鎶ヨ");
+                        }
+                    }
+                    else
+                    {
+                        if (deviceListInfo.srm1.status == "绌洪棽")
+                        {
+                            if (lastStatus_Srm1 != "绛夊緟")
+                            {
+                                setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "绛夊緟");
+                            }
+                        }
+                        else
+                        {
+                            if (lastStatus_Srm1 != "杩愯")
+                            {
+                                setDeviceStatusTimeForDetail(1, lastStatus_Srm1, "杩愯");
+                            }
+                        }
+                    }
+                    //2鍙峰爢鍨涙満
+                    if (deviceListInfo.srm2.isAlarm == true)
+                    {
+                        if (lastStatus_Srm2 != "鎶ヨ")
+                        {
+                            setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "鎶ヨ");
+                        }
+
+                    }
+                    else
+                    {
+                        if (deviceListInfo.srm2.status == "绌洪棽")
+                        {
+                            if (lastStatus_Srm2 != "绛夊緟")
+                            {
+                                setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "绛夊緟");
+                            }
+                        }
+                        else
+                        {
+                            if (lastStatus_Srm2 != "杩愯")
+                            {
+                                setDeviceStatusTimeForDetail(2, lastStatus_Srm2, "杩愯");
                             }
                         }
                     }
@@ -3310,9 +3385,66 @@
             {
 
             }
+        }
+        /// <summary>璁惧鐘舵�佸彉鍖栫殑鏃跺�� 淇濆瓨鐘舵�佹椂闂达紙鏄庣粏锛�
+        /// 璁惧鐘舵�佸彉鍖栫殑鏃跺�� 淇濆瓨鐘舵�佹椂闂�
+        /// </summary>
+        /// <param name="status"></param>
+        private void setDeviceStatusTimeForDetail(int srmNo, string lastStatuss, string nowStatus)
+        {
+            try
+            {
+                switch (lastStatuss)
+                {
+                    case "绛夊緟":
+                        if (srmNo == 1)
+                        {
+                            deviceWaitTime_Srm1 += deviceSw_Srm1.Elapsed;
+                        }
+                        else
+                        {
+                            deviceWaitTime_Srm2 += deviceSw_Srm2.Elapsed;
+                        }
+                        break;
+                    case "杩愯":
+                        if (srmNo == 1)
+                        {
+                            deviceRunTime_Srm1 += deviceSw_Srm1.Elapsed;
+                        }
+                        else
+                        {
+                            deviceRunTime_Srm2 += deviceSw_Srm2.Elapsed;
+                        }
+                        break;
+                    case "鎶ヨ":
+                        if (srmNo == 1)
+                        {
+                            deviceAlarmTime_Srm1 += deviceSw_Srm1.Elapsed;
+                        }
+                        else
+                        {
+                            deviceAlarmTime_Srm2 += deviceSw_Srm2.Elapsed;
+                        }
+                        break;
+                }
 
+                if (srmNo == 1)
+                {
+                    deviceSw_Srm1.Restart();
 
+                    lastStatus_Srm1 = nowStatus;
+                }
+                else
+                {
+                    deviceSw_Srm2.Restart();
 
+                    lastStatus_Srm2 = nowStatus;
+                }
+            }
+            catch (Exception)
+            {
+
+            }
         }
         /// <summary>澶у睆淇℃伅鍒濆鍖�
         /// 澶у睆淇℃伅鍒濆鍖�
@@ -3347,7 +3479,7 @@
                         //璁惧绛夊緟鏃堕棿
                         //creatTodayDeviceInfo.deviceWaitTime = Convert.ToDecimal(deviceWaitTime.Hours * 60M) + deviceWaitTime.Minutes;//鍗曚綅鍒嗛挓
                         //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
-                        CommonCalcWaitTime(ref todayDeviceInfo);
+                        DeviceGeneralInfoHelper.CommonCalcWaitTime(ref todayDeviceInfo);
 
                         creatTodayDeviceInfo.createTime = DateTime.Now;
                         mod.deviceGeneralInfo.Add(creatTodayDeviceInfo);
@@ -3357,6 +3489,10 @@
                     }
 
                 }
+
+                DeviceGeneralInfoHelper.deviceInfoInitForDetails(1, todayTime, lastHour, deviceAlarmTime_Srm1, deviceRunTime_Srm1, deviceWaitTime_Srm1);
+                DeviceGeneralInfoHelper.deviceInfoInitForDetails(2, todayTime, lastHour, deviceAlarmTime_Srm2, deviceRunTime_Srm2, deviceWaitTime_Srm2);
+
                 deviceInfos = new Thread(deviceInfo);
                 deviceInfos.Start();
             }
@@ -3591,16 +3727,7 @@
             return resultDate;
         }
 
-        private void CommonCalcWaitTime(ref deviceGeneralInfo todayDeviceInfo)
-        {
-            //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
-            todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime);
-        }
-        private void CommonCalcWaitTime(ref deviceGeneralInfoForDetail todayDeviceInfo)
-        {
-            //閲嶆柊璁$畻璁惧绛夊緟鏃堕棿 銆怑ditby shaocx,2024-12-30銆�
-            todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime);
-        }
+
 
         #endregion
 
diff --git a/siemenswmssditcode/wmsService/wcftest/wmsService.csproj b/siemenswmssditcode/wmsService/wcftest/wmsService.csproj
index 739cf53..3679972 100644
--- a/siemenswmssditcode/wmsService/wcftest/wmsService.csproj
+++ b/siemenswmssditcode/wmsService/wcftest/wmsService.csproj
@@ -96,6 +96,7 @@
     <Compile Include="BussinessExtension\SAP\SAPHelper.cs" />
     <Compile Include="BussinessExtension\SystemHelper.cs" />
     <Compile Include="BussinessExtension\VirtualModeHelper.cs" />
+    <Compile Include="BussinessExtension\DeviceGeneralInfoHelper.cs" />
     <Compile Include="BussinessExtension\WcsWcfApiHelper.cs" />
     <Compile Include="deviceorm\ChaiDieTransport.cs" />
     <Compile Include="deviceorm\DevAlert.cs" />

--
Gitblit v1.9.3