You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using AutoMapper;
using Entity.Api.Req;
using Entity.DbModel.Station;
using Entity.Dto;
using HybirdFrameworkCore.Autofac.Attribute;
using HybirdFrameworkCore.Entity;
using HybirdFrameworkCore.Utils;
using Magicodes.ExporterAndImporter.Excel;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Repository.Station;
using SqlSugar;
namespace Service.Station;
[Scope("SingleInstance")]
public class EquipAlarmDefineService: BaseServices<EquipAlarmDefine>
{
EquipAlarmDefineRepository _elecPriceModelVersionRepository;
public EquipAlarmDefineService(EquipAlarmDefineRepository dal)
{
_elecPriceModelVersionRepository = dal;
BaseDal = dal;
}
/// <summary>
/// 查询未处理报警列表
/// </summary>
/// <param name="typeCode">设备类型:-1-查询全部0-充电机1-电表2-水冷机3-plc<</param>
/// <param name="equipCode">设备编码</param>
/// <returns></returns>
public Result<PageResult<EquipAlarmDefine>> QueryEquipAlarmPage(EquipAlarmDefineReq req)
{
int totalCount = 0;
int EquipTypeCode = req.EquipTypeCode;
string EquipCode = req.EquipCode;
string ErrorCode = req.ErrorCode;
string ErrorLevel = req.ErrorLevel;
string ErrorMsg = req.ErrorMsg;
string ProcessMethod = req.ProcessMethod;
List<EquipAlarmDefine> list = BaseDal.Queryable()
.WhereIF(EquipTypeCode != -1, it => it.EquipTypeCode == EquipTypeCode)
.WhereIF(ObjUtils.IsNotNullOrWhiteSpace(EquipCode), it => it.EquipCode == EquipCode)
.WhereIF(ObjUtils.IsNotNullOrWhiteSpace(ErrorLevel), it => it.ErrorLevel == ErrorLevel)
.WhereIF(ObjUtils.IsNotNullOrWhiteSpace(ErrorMsg), it => it.ErrorMsg.Contains(ErrorMsg))
.WhereIF(ObjUtils.IsNotNullOrWhiteSpace(ProcessMethod), it => it.ProcessMethod.Contains(ProcessMethod))
.ToList(); // 注意:这里添加了 ToList() 来确保执行查询
PageResult<EquipAlarmDefine> result = new PageResult<EquipAlarmDefine>()
{
PageNum = req.PageNum,
PageSize = req.PageSize,
ToTal = totalCount,
Rows = list
};
return Result<PageResult<EquipAlarmDefine>>.Success(result);
}
/// <summary>
/// 导出
/// </summary>
/// <returns></returns>
public async Task<IActionResult> ExportEquipAlarmRecord()
{
List<EquipAlarmDefine> equipAlarmRecords = await BaseDal.QueryAsync();
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<EquipAlarmDefineDto, EquipAlarmDefine>().ReverseMap();
});
IMapper mapper = config.CreateMapper();
List<EquipAlarmDefineDto> logExList = mapper.Map<List<EquipAlarmDefineDto>>(equipAlarmRecords);
IExcelExporter excelExporter = new ExcelExporter();
var res = await excelExporter.ExportAsByteArray(logExList);
return new FileStreamResult(new MemoryStream(res), "application/octet-stream")
{ FileDownloadName = DateTime.Now.ToString("yyyyMMddHHmm") + "设备报警基础信息.xlsx" };
}
/// <summary>
/// 新增
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Result<string>> Add([FromBody] EquipAlarmDefineReq req)
{
if (req.EquipCode == null)
{
return Result<string>.Fail("设备类型编码不能为空");
}
if (req.ErrorCode == null)
{
return Result<string>.Fail("报警编码不能为空");
}
if (req.ErrorLevel == null)
{
return Result<string>.Fail("报警等级不能为空");
}
if (req.ErrorMsg == null)
{
return Result<string>.Fail("报警描述不能为空");
}
var equipAlarmDefineTask =
BaseDal.QueryByClauseAsync(u =>
u.EquipTypeCode == req.EquipTypeCode && u.EquipCode == req.EquipCode && u.ErrorCode == req.ErrorCode &&
u.ErrorLevel == req.ErrorLevel);
await Task.WhenAll(equipAlarmDefineTask);
var isExist = equipAlarmDefineTask.Result;
if (isExist != null)
{
return Result<string>.Fail("已存在同名或同编码设备信息");
}
var equipInfo = req.Adapt<EquipAlarmDefine>();
var insertEquipInfoTask = BaseDal.InsertAsync(equipInfo);
await Task.WhenAll(insertEquipInfoTask);
var insertAsync = insertEquipInfoTask.Result;
if (insertAsync.Id > 0)
{
return Result<string>.Success("新增id" + insertAsync.Id);
}
return Result<string>.Fail("新增失败");
}
/// <summary>
/// 修改报警数据编码
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Result<string>> Modify([FromBody] EquipAlarmDefineReq req)
{
// 查询 EquipInfo
var equipInfo = await BaseDal.QueryByClauseAsync(u => u.Id == req.Id);
if (equipInfo == null)
{
return Result<string>.Fail("id不存在");
}
if (req.EquipCode == null)
{
return Result<string>.Fail("设备类型编码不能为空");
}
if (req.ErrorCode == null)
{
return Result<string>.Fail("报警编码不能为空");
}
if (req.ErrorLevel == null)
{
return Result<string>.Fail("报警等级不能为空");
}
if (req.ErrorMsg == null)
{
return Result<string>.Fail("报警描述不能为空");
}
//判断是否重复
var equipAlarmDefineTask =
BaseDal.QueryByClauseAsync(u =>
u.EquipTypeCode == req.EquipTypeCode && u.EquipCode == req.EquipCode && u.ErrorCode == req.ErrorCode &&
u.ErrorLevel == req.ErrorLevel);
await Task.WhenAll(equipAlarmDefineTask);
var insertAsync = equipAlarmDefineTask.Result;
if (insertAsync.Id > 0)
{
return Result<string>.Success("新增id" + insertAsync.Id);
}
return Result<string>.Fail("修改失败");
}
/// <summary>
/// 删除
/// </summary>
/// <param name="ids">ids id列表</param>
/// <returns></returns>
[HttpPost("DeleteByIds")]
public async Task<Result<string>> DeleteByIds([FromBody] EquipAlarmDefineReq req)
{
// 查询 EquipInfo
var equipInfo = await BaseDal.QueryByClauseAsync(u => u.Id == req.Id);
if (equipInfo == null)
{
return Result<string>.Fail("id不存在");
}
// 查询 EquipNetInfo
var equipNetInfo = await BaseDal.QueryByClauseAsync(u => u.EquipCode == equipInfo.EquipCode);
if (equipNetInfo == null)
{
return Result<string>.Fail("不存在此编码");
}
var deleteEquipInfoTask = BaseDal.DeleteAsync(equipInfo);
await Task.WhenAll(deleteEquipInfoTask);
var deleteResult = deleteEquipInfoTask.Result;
if (deleteResult)
{
return Result<string>.Success("删除成功");
}
return Result<string>.Fail("删除失败");
}
}