From 18966e02fb573c7e2bb0c6426ed792b38b910940 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周五, 19 9月 2025 15:37:55 +0800
Subject: [PATCH] 333

---
 siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)

diff --git a/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs b/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs
new file mode 100644
index 0000000..1c35f71
--- /dev/null
+++ b/siemenswmssditcode/wmsService/wcftest/BussinessExtension/DeviceGeneralInfoHelper.cs
@@ -0,0 +1,154 @@
+锘縰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.ext2 = GetCurrentPeriod();
+                    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.ext2 = GetCurrentPeriod();
+                    //璁惧鎶ヨ鏃堕棿
+                    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 creatTodayDeviceInfo);
+
+                    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);
+        }
+
+
+
+        public static string GetCurrentPeriod()
+        {
+            DateTime today = DateTime.Today;
+            DateTime startDate = new DateTime(today.Year, today.Month, today.Day, 0, 0, 0);
+            DateTime endDate = new DateTime(today.Year, today.Month, today.Day, 23, 59, 59);
+
+            return string.Format("{0:yyyy-MM-dd HH:mm:ss} 鑷� {1:yyyy-MM-dd HH:mm:ss}",
+                               startDate, endDate);
+        }
+    }
+}

--
Gitblit v1.9.3