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
|
{
|
|
/// <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;
|
//重新计算设备等待时间 【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);
|
}
|
}
|
}
|