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