添加项目文件。
This commit is contained in:
103
MoviconWebApi/API/ClearStaticApi/Data.cs
Normal file
103
MoviconWebApi/API/ClearStaticApi/Data.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
MoviconWebApi/API/ClearStaticApi/Endpoint.cs
Normal file
80
MoviconWebApi/API/ClearStaticApi/Endpoint.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using Azure;
|
||||
using FastEndpoints;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MoviconWebApi.Common;
|
||||
|
||||
namespace MoviconWebApi.API.ClearStaticApi
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取清洗统计数据端点
|
||||
/// </summary>
|
||||
public class Endpoint : Endpoint<ClearStaticRequest, ApiResponse<ClearStaticResponse>>
|
||||
{
|
||||
private readonly IFreeSql _freeSql;
|
||||
|
||||
/// <summary>
|
||||
/// 构造函数,注入FreeSql实例
|
||||
/// </summary>
|
||||
/// <param name="freeSql">FreeSql实例</param>
|
||||
public Endpoint(IFreeSql freeSql)
|
||||
{
|
||||
_freeSql = freeSql;
|
||||
}
|
||||
|
||||
public override void Configure()
|
||||
{
|
||||
// 配置路由,支持GET方式
|
||||
Get("/clearstatic/summary");
|
||||
|
||||
// 允许匿名访问(根据实际需求可以改为需要认证)
|
||||
AllowAnonymous();
|
||||
|
||||
// 配置摘要信息(用于Swagger文档)
|
||||
Summary(s =>
|
||||
{
|
||||
s.Summary = "获取清洗统计数据";
|
||||
s.Description = "根据设备编号获取清洗统计数据,包括作业数量、作业时长等";
|
||||
s.Response<ApiResponse<ClearStaticResponse>>(200, "成功返回清洗统计数据");
|
||||
s.Response(404, "未找到数据");
|
||||
s.Response(500, "服务器内部错误");
|
||||
});
|
||||
}
|
||||
|
||||
public override async Task HandleAsync(ClearStaticRequest request, CancellationToken ct)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 调用Data层方法获取数据
|
||||
var staticData = await Data.GetClearStatic(request, _freeSql);
|
||||
|
||||
if (staticData == null)
|
||||
{
|
||||
// 未找到数据,返回空数据但状态码200
|
||||
Response = ApiResponse<ClearStaticResponse>.Success(
|
||||
new ClearStaticResponse(),
|
||||
"暂无数据"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 返回统计数据
|
||||
Response = ApiResponse<ClearStaticResponse>.Success(
|
||||
staticData,
|
||||
"查询成功"
|
||||
);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 记录错误日志
|
||||
Logger.LogError(ex, "获取清洗统计数据失败");
|
||||
|
||||
// 返回错误响应
|
||||
Response = ApiResponse<ClearStaticResponse>.Error(
|
||||
"500",
|
||||
"服务器内部错误"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
MoviconWebApi/API/ClearStaticApi/Mapper.cs
Normal file
28
MoviconWebApi/API/ClearStaticApi/Mapper.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
namespace MoviconWebApi.API.ClearStaticApi
|
||||
{
|
||||
/// <summary>
|
||||
/// 清洗统计数据映射工具类
|
||||
/// </summary>
|
||||
public static class Mapper
|
||||
{
|
||||
/// <summary>
|
||||
/// 格式化小数为两位小数的字符串
|
||||
/// </summary>
|
||||
/// <param name="value">原始值</param>
|
||||
/// <returns>格式化后的字符串</returns>
|
||||
public static string FormatDecimal(decimal value)
|
||||
{
|
||||
return value.ToString("0.00");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 格式化日期时间为yyyy-MM-dd HH:mm:ss格式
|
||||
/// </summary>
|
||||
/// <param name="dateTime">日期时间</param>
|
||||
/// <returns>格式化后的字符串</returns>
|
||||
public static string FormatDateTime(DateTime dateTime)
|
||||
{
|
||||
return dateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
}
|
||||
}
|
||||
84
MoviconWebApi/API/ClearStaticApi/Models.cs
Normal file
84
MoviconWebApi/API/ClearStaticApi/Models.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
namespace MoviconWebApi.API.ClearStaticApi
|
||||
{
|
||||
/// <summary>
|
||||
/// 清洗统计请求模型
|
||||
/// </summary>
|
||||
public class ClearStaticRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 设备编号
|
||||
/// </summary>
|
||||
public string? DeviceCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 清洗统计响应模型
|
||||
/// </summary>
|
||||
public class ClearStaticResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 累计作业数量
|
||||
/// </summary>
|
||||
public int TotalJobCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本年度作业数
|
||||
/// </summary>
|
||||
public int YearJobCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月作业数
|
||||
/// </summary>
|
||||
public int MonthJobCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 今日作业数
|
||||
/// </summary>
|
||||
public int TodayJobCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 累计作业时长(时)
|
||||
/// </summary>
|
||||
public decimal TotalJobHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本年作业时长(时)
|
||||
/// </summary>
|
||||
public decimal YearJobHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本月作业时长(时)
|
||||
/// </summary>
|
||||
public decimal MonthJobHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 今日作业时长(时)
|
||||
/// </summary>
|
||||
public decimal TodayJobHours { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前机型
|
||||
/// </summary>
|
||||
public string? CurrentVehicleModel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前车号
|
||||
/// </summary>
|
||||
public string? CurrentLocomotiveNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前修程
|
||||
/// </summary>
|
||||
public string? CurrentRepairProcess { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 车轮编号
|
||||
/// </summary>
|
||||
public string? CurrentWheelNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
public string? UpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user