71 lines
2.4 KiB
C#
71 lines
2.4 KiB
C#
using Model;
|
||
using Model.Entity;
|
||
using ORM;
|
||
using Service.Interface;
|
||
using SqlSugar;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Service.Implement
|
||
{
|
||
/// <summary>
|
||
/// 监测数值记录服务实现
|
||
/// </summary>
|
||
public class MonitorValueService : BaseService<MonitorValueEntity>, IMonitorValueService
|
||
{
|
||
// 继承父类构造函数,注入 SqlSugar 仓储
|
||
public MonitorValueService(SqlSugarRepository<MonitorValueEntity> repository) : base(repository)
|
||
{
|
||
}
|
||
|
||
/// <summary>
|
||
/// 批量插入监测数据
|
||
/// </summary>
|
||
public async Task<Result<bool>> InsertRangeAsync(List<MonitorValueEntity> entities)
|
||
{
|
||
if (entities == null || entities.Count == 0)
|
||
return Result<bool>.Success(true);
|
||
|
||
try
|
||
{
|
||
// 使用 SqlSugar 的批量插入,底层会转换为 BulkCopy 或是批量 SQL,速度极快
|
||
var result = await _repository.Context.Insertable(entities).ExecuteCommandAsync();
|
||
return Result<bool>.Success(result > 0);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return Result<bool>.Error("批量插入监测数据失败", ex);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据监测通道名称,分页查询历史记录
|
||
/// </summary>
|
||
public async Task<Result<List<MonitorValueEntity>>> GetPagedByNameAsync(string monitorName, int pageIndex, int pageSize, RefAsync<int> total)
|
||
{
|
||
try
|
||
{
|
||
var query = _repository.Entities;
|
||
|
||
// 如果传了名字则按名字过滤
|
||
if (!string.IsNullOrEmpty(monitorName))
|
||
{
|
||
query = query.Where(x => x.MonitorName == monitorName);
|
||
}
|
||
|
||
var list = await query
|
||
.OrderByDescending(d => d.CreateTime) // 监测项通常优先看最新的数据
|
||
.ToPageListAsync(pageIndex, pageSize, total);
|
||
|
||
// 计算总页数
|
||
total.Value = (int)Math.Ceiling((double)total.Value / pageSize);
|
||
return Result<List<MonitorValueEntity>>.Success(list);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return Result<List<MonitorValueEntity>>.Error($"根据名称 [{monitorName}] 分页查询数据失败", ex);
|
||
}
|
||
}
|
||
}
|
||
} |