104 lines
4.3 KiB
C#
104 lines
4.3 KiB
C#
using MoviconWebApi.Entities;
|
||
|
||
namespace MoviconWebApi.API.ClearStaticApi
|
||
{
|
||
/// <summary>
|
||
/// 清洗统计数据访问类
|
||
/// </summary>
|
||
public static class Data
|
||
{
|
||
/// <summary>
|
||
/// 获取清洗统计数据
|
||
/// </summary>
|
||
/// <param name="request">请求参数</param>
|
||
/// <param name="freeSql">FreeSql实例</param>
|
||
/// <returns>清洗统计响应</returns>
|
||
internal static async Task<ClearStaticResponse?> GetClearStatic(ClearStaticRequest request, IFreeSql freeSql)
|
||
{
|
||
try
|
||
{
|
||
// 获取当前日期信息
|
||
var today = DateTime.Today;
|
||
var firstDayOfMonth = new DateTime(today.Year, today.Month, 1);
|
||
var firstDayOfYear = new DateTime(today.Year, 1, 1);
|
||
|
||
// 构建基础查询
|
||
var query = freeSql.Select<DeviceState>();
|
||
// 构建基础查询
|
||
//var queryDeviceState = freeSql.Select<DeviceState>();
|
||
|
||
var CurRunClearData = freeSql.Select<CurRunClearState>().Where(a => a.Test_PartsEquipmentStatus == "1").OrderByDescending(a => a.CreateTime).First();
|
||
|
||
// 根据设备编号过滤
|
||
if (!string.IsNullOrWhiteSpace(request.DeviceCode))
|
||
{
|
||
query = query.Where(x => x.DeviceCode == request.DeviceCode);
|
||
}
|
||
|
||
// 计算累计作业数量
|
||
var totalJobCount = await query.CountAsync();
|
||
|
||
// 计算本年度作业数
|
||
var yearJobCount = await query
|
||
.Where(x => x.CreateTime >= firstDayOfYear)
|
||
.CountAsync();
|
||
|
||
// 计算本月作业数
|
||
var monthJobCount = await query
|
||
.Where(x => x.CreateTime >= firstDayOfMonth)
|
||
.CountAsync();
|
||
|
||
// 计算今日作业数
|
||
var todayJobCount = await query
|
||
.Where(x => x.CreateTime >= today)
|
||
.CountAsync();
|
||
|
||
// 计算累计作业时长
|
||
// 注意:这里假设ClearData表中有一个字段表示清洗时长,可能需要根据实际情况调整
|
||
var totalJobHours = await query
|
||
.SumAsync(x => Convert.ToDecimal(x.RunTime)) / 60; // 假设时长单位是秒,转换为小时
|
||
|
||
// 计算本年作业时长
|
||
var yearJobHours = await query
|
||
.Where(x => x.CreateTime >= firstDayOfYear)
|
||
.SumAsync(x => Convert.ToDecimal(x.RunTime)) / 60;
|
||
|
||
// 计算本月作业时长
|
||
var monthJobHours = await query
|
||
.Where(x => x.CreateTime >= firstDayOfMonth)
|
||
.SumAsync(x => Convert.ToDecimal(x.RunTime)) / 60;
|
||
|
||
// 计算今日作业时长
|
||
var todayJobHours = await query
|
||
.Where(x => x.CreateTime >= today)
|
||
.SumAsync(x => Convert.ToDecimal(x.RunTime)) / 60;
|
||
|
||
// 返回结果
|
||
return new ClearStaticResponse
|
||
{
|
||
TotalJobCount = (int)totalJobCount,
|
||
YearJobCount = (int)yearJobCount,
|
||
MonthJobCount = (int)monthJobCount,
|
||
TodayJobCount = (int)todayJobCount,
|
||
TotalJobHours = Math.Round(totalJobHours, 2),
|
||
YearJobHours = Math.Round(yearJobHours, 2),
|
||
MonthJobHours = Math.Round(monthJobHours, 2),
|
||
TodayJobHours = Math.Round(todayJobHours, 2),
|
||
CurrentVehicleModel = CurRunClearData != null ? CurRunClearData.vehicle_model : "",
|
||
CurrentLocomotiveNumber = CurRunClearData != null ? CurRunClearData.locomotive_number : "",
|
||
CurrentRepairProcess = CurRunClearData != null ? CurRunClearData.repair_process : "",
|
||
CurrentWheelNumber = "", // 假设part_num字段存储车轮编号
|
||
|
||
UpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
||
};
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// 记录异常日志
|
||
Console.WriteLine($"获取清洗统计数据失败:{ex.Message}");
|
||
return null;
|
||
}
|
||
}
|
||
}
|
||
}
|