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