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.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;
//重新计算设备等待时间 【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.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;//单位分钟
//重新计算设备等待时间 【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);
}
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);
}
}
}