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