This commit is contained in:
zpc 2025-09-21 16:59:17 +08:00
parent cedfeefd26
commit 6e60d634ac
7 changed files with 329 additions and 10 deletions

View File

@ -0,0 +1,55 @@
using Microsoft.AspNetCore.Mvc;
using ZR.Model.Business.Dto;
using ZR.Model.Business;
using ZR.Service.Business.IBusinessService;
//创建时间2025-09-21
namespace ZR.Admin.WebApi.Controllers.Business
{
/// <summary>
/// 错误日志
/// </summary>
[Route("business/OdfPortFault")]
public class OdfPortFaultController : BaseController
{
/// <summary>
/// 错误日志接口
/// </summary>
private readonly IOdfPortFaultService _OdfPortFaultService;
public OdfPortFaultController(IOdfPortFaultService OdfPortFaultService)
{
_OdfPortFaultService = OdfPortFaultService;
}
/// <summary>
/// 查询错误日志列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpGet("list")]
[ActionPermissionFilter(Permission = "odfportfault:list")]
public IActionResult QueryOdfPortFault([FromQuery] OdfPortFaultQueryDto parm)
{
var response = _OdfPortFaultService.GetList(parm);
return SUCCESS(response);
}
/// <summary>
/// 查询错误日志详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "odfportfault:query")]
public IActionResult GetOdfPortFault(int Id)
{
var response = _OdfPortFaultService.GetInfo(Id);
var info = response.Adapt<OdfPortFaultDto>();
return SUCCESS(info);
}
}
}

View File

@ -12,6 +12,7 @@ using ZR.Repository;
using Aliyun.OSS;
using System.Linq;
using ZR.Model.System.Dto;
using Microsoft.AspNetCore.Connections.Features;
//创建时间2025-08-05
namespace ZR.Admin.WebApi.Controllers.Business
@ -51,13 +52,19 @@ namespace ZR.Admin.WebApi.Controllers.Business
/// </summary>
private readonly IOdfFramesService _OdfFramesService;
/// <summary>
/// 故障
/// </summary>
private readonly IOdfPortFaultService _OdfPortFaultService;
public OdfPortsController(IOdfRoomsService OdfRoomsService,
ISysDeptService sysDeptService,
ISysUserService sysUserService,
IOdfPortsService odfPortsService,
IOdfFramesService odfFramesService,
IOdfRacksService odfRacksService
IOdfRacksService odfRacksService,
IOdfPortFaultService odfPortFaultService
)
{
@ -67,7 +74,7 @@ namespace ZR.Admin.WebApi.Controllers.Business
_OdfFramesService = odfFramesService;
_OdfRacksService = odfRacksService;
_SysDeptService = sysDeptService;
_OdfPortFaultService = odfPortFaultService;
}
/// <summary>
@ -118,12 +125,37 @@ namespace ZR.Admin.WebApi.Controllers.Business
Name = it.Name,
Status = it.Status,
PortNumber = it.PortNumber,
RowNumber = it.RowNumber
RowNumber = it.RowNumber,
Tips = it.Remarks,
OpticalAttenuation = it.OpticalAttenuation
}).ToListAsync();
List<OdfPortsMDtot> row = new List<OdfPortsMDtot>();
l.GroupBy(it => it.RowNumber).ToList().ForEach(g =>
{
var li = l.Where(it => it.RowNumber == g.Key).OrderBy(it => it.PortNumber).Select(it => new OdfPortsMDto { Id = it.Id, Name = it.Name, Status = it.Status }).ToList();
var li = l.Where(it => it.RowNumber == g.Key).OrderBy(it => it.PortNumber).Select(it =>
{
var tips = "";
if (it.Status == 1)
{
tips = it.OpticalAttenuation;
}
else
{
if (!string.IsNullOrEmpty(it.Tips))
{
var t = it.Tips.Split(" ");
if (t.Length > 0 && t.Length > 2 && t[2].Length > 0)
{
tips = t[2].Substring(0, 1);
}
else
{
tips = it.Tips.Substring(0, 1);
}
}
}
return new OdfPortsMDto { Id = it.Id, Name = it.Name, Status = it.Status, Tips = tips };
}).ToList();
row.Add(new OdfPortsMDtot() { RowList = li, Name = (g.Key + 1).ToString() });
});
@ -141,11 +173,29 @@ namespace ZR.Admin.WebApi.Controllers.Business
/// <returns></returns>
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "odfports:query")]
public IActionResult GetOdfPorts(int Id)
public async Task<IActionResult> GetOdfPorts(int Id)
{
var response = _OdfPortsService.GetInfo(Id);
var info = response.Adapt<OdfPortsDto>();
info.HistoryFault = new List<OdfPortsHistoryDto>();
if (info != null)
{
var faults = await _OdfPortFaultService.GetListAsync(it => it.PortId == info.Id);
if (faults != null && faults.Count > 0)
{
foreach (var item in faults)
{
info.HistoryFault.Add(new OdfPortsHistoryDto()
{
FaultReason = item.FaultReason,
FaultTime = item.FaultTime ?? DateTime.Now,
});
}
}
}
return SUCCESS(info);
}
@ -245,7 +295,6 @@ namespace ZR.Admin.WebApi.Controllers.Business
[ActionPermissionFilter(Permission = "odfports:edit")]
public IActionResult GetOdfTest()
{
return SUCCESS(new { update = true });
}
@ -289,7 +338,7 @@ namespace ZR.Admin.WebApi.Controllers.Business
[HttpPost("save")]
[ActionPermissionFilter(Permission = "odfports:edit")]
[Log(Title = "APP修改端口", BusinessType = BusinessType.UPDATE)]
public IActionResult SaveMOdfPorts([FromBody] OdfPortsMMDto parm)
public async Task<IActionResult> SaveMOdfPorts([FromBody] OdfPortsMMDto parm)
{
var port = _OdfPortsService.GetById(parm.Id);
if (port == null)
@ -302,13 +351,32 @@ namespace ZR.Admin.WebApi.Controllers.Business
port.OpticalAttenuation = parm.OpticalAttenuation;
port.UpdatedAt = DateTime.Now;
port.OpticalCableOffRemarks = parm.OpticalCableOffRemarks;
if (port.Status == 0)
{
port.Remarks = "";
}
var response = _OdfPortsService.UpdateOdfPorts(port);
var count = await _OdfPortFaultService.CountAsync(it => it.PortId == port.Id);
if (count > 0)
{
await _OdfPortFaultService.DeleteAsync(it => it.PortId == port.Id);
}
if (parm.HistoryFault != null && parm.HistoryFault.Count > 0)
{
foreach (var item in parm.HistoryFault)
{
var o = new OdfPortFault()
{
CreateTime = DateTime.Now,
FaultReason = item.FaultReason,
FaultTime = item.FaultTime,
PortId = port.Id,
};
await _OdfPortFaultService.InsertAsync(o);
}
}
return ToResponse(response);
}

View File

@ -0,0 +1,33 @@
namespace ZR.Model.Business.Dto
{
/// <summary>
/// 错误日志查询对象
/// </summary>
public class OdfPortFaultQueryDto : PagerInfo
{
}
/// <summary>
/// 错误日志输入输出对象
/// </summary>
public class OdfPortFaultDto
{
[Required(ErrorMessage = "主键ID不能为空")]
public int Id { get; set; }
[Required(ErrorMessage = "对应的端口ID不能为空")]
public int PortId { get; set; }
[Required(ErrorMessage = "历史故障发生时间不能为空")]
public DateTime? FaultTime { get; set; }
public string FaultReason { get; set; }
[Required(ErrorMessage = "创建时间不能为空")]
public DateTime? CreateTime { get; set; }
}
}

View File

@ -92,6 +92,10 @@ namespace ZR.Model.Business.Dto
public int Id { get; set; }
public string Name { get; set; }
public int Status { get; set; }
public string Tips { get; set; }
public string OpticalAttenuation { get; set; }
}
public class OdfPortsMDtoc : OdfPortsMDto
{
@ -181,6 +185,10 @@ namespace ZR.Model.Business.Dto
[ExcelColumnName("历史故障表")]
public string HistoryRemarks { get; set; }
public List<OdfPortsHistoryDto> HistoryFault { get; set; }
[Required(ErrorMessage = "创建时间不能为空")]
[ExcelColumn(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
[ExcelColumnName("创建时间")]
@ -212,6 +220,8 @@ namespace ZR.Model.Business.Dto
[ExcelColumn(Name = "部门名称")]
public string DeptName { get; set; }
}
/// <summary>
@ -381,6 +391,9 @@ namespace ZR.Model.Business.Dto
public int Status { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remarks { get; set; }
public string OpticalAttenuation { get; set; }
@ -392,7 +405,26 @@ namespace ZR.Model.Business.Dto
/// <summary>
///
/// </summary>
public List<OdfPortsHistoryDto> HistoryFault { get; set; }
/// <summary>
/// 光缆段信息
/// </summary>
public string OpticalCableOffRemarks { get; set; }
}
public class OdfPortsHistoryDto
{
/// <summary>
/// 错误时间
/// </summary>
public DateTime FaultTime { get; set; }
/// <summary>
/// 故障原因
/// </summary>
public string FaultReason { get; set; }
}
}

View File

@ -0,0 +1,41 @@
namespace ZR.Model.Business
{
/// <summary>
/// 错误日志
/// </summary>
[SugarTable("odf_port_fault")]
public class OdfPortFault
{
/// <summary>
/// 主键ID
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 对应的端口ID
/// </summary>
[SugarColumn(ColumnName = "port_id")]
public int PortId { get; set; }
/// <summary>
/// 历史故障发生时间
/// </summary>
[SugarColumn(ColumnName = "fault_time")]
public DateTime? FaultTime { get; set; }
/// <summary>
/// 历史故障发生原因
/// </summary>
[SugarColumn(ColumnName = "fault_reason")]
public string FaultReason { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[SugarColumn(ColumnName = "create_time")]
public DateTime? CreateTime { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using ZR.Model.Business.Dto;
using ZR.Model.Business;
namespace ZR.Service.Business.IBusinessService
{
/// <summary>
/// 错误日志service接口
/// </summary>
public interface IOdfPortFaultService : IBaseService<OdfPortFault>
{
PagedInfo<OdfPortFaultDto> GetList(OdfPortFaultQueryDto parm);
OdfPortFault GetInfo(int Id);
OdfPortFault AddOdfPortFault(OdfPortFault parm);
}
}

View File

@ -0,0 +1,70 @@
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using ZR.Model.Business.Dto;
using ZR.Model.Business;
using ZR.Repository;
using ZR.Service.Business.IBusinessService;
namespace ZR.Service.Business
{
/// <summary>
/// 错误日志Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IOdfPortFaultService), ServiceLifetime = LifeTime.Transient)]
public class OdfPortFaultService : BaseService<OdfPortFault>, IOdfPortFaultService
{
/// <summary>
/// 查询错误日志列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<OdfPortFaultDto> GetList(OdfPortFaultQueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
//.OrderBy("Id asc")
.Where(predicate.ToExpression())
.ToPage<OdfPortFault, OdfPortFaultDto>(parm);
return response;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public OdfPortFault GetInfo(int Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加错误日志
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public OdfPortFault AddOdfPortFault(OdfPortFault model)
{
return Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 查询导出表达式
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
private static Expressionable<OdfPortFault> QueryExp(OdfPortFaultQueryDto parm)
{
var predicate = Expressionable.Create<OdfPortFault>();
return predicate;
}
}
}