using 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 { /// /// 处理 /// /// /// /// /// /// /// /// /// /// /// /// /// public static void HandlerDeviceGeneralInfoForDetail( int srmNo, List enterTaskCount, List outTaskCount, List stockUsingCount, List 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; //重新计算设备等待时间 【Editby shaocx,2024-12-30】 CommonCalcWaitTime(ref todayDeviceInfo); todayDeviceInfo.taskEnterCount = enterTaskCount.Count;//入库任务数 todayDeviceInfo.taskOutCount = outTaskCount.Count;//出库任务数 //更改数量 【Editby 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;//单位分钟 //重新计算设备等待时间 【Editby 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) { //重新计算设备等待时间 【Editby shaocx,2024-12-30】 todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime); } public static void CommonCalcWaitTime(ref deviceGeneralInfoForDetail todayDeviceInfo) { //重新计算设备等待时间 【Editby shaocx,2024-12-30】 todayDeviceInfo.deviceWaitTime = 1440 - (todayDeviceInfo.deviceRunTime + todayDeviceInfo.deviceAlarmTime); } } }