From 1e6c6cbf6616059364d51745fbf1afa11b570644 Mon Sep 17 00:00:00 2001 From: zpc Date: Thu, 2 Apr 2026 16:57:24 +0800 Subject: [PATCH] 21 --- .../Business/OdfCableFaultsController.cs | 49 ++++++++----------- .../Business/Dto/OdfCableFaultsDto.cs | 21 ++++++++ .../IOdfCableFaultsService.cs | 2 +- .../Business/OdfCableFaultsService.cs | 29 +++++++++-- 4 files changed, 68 insertions(+), 33 deletions(-) diff --git a/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs b/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs index 5750b36..3bd024f 100644 --- a/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs +++ b/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs @@ -109,51 +109,44 @@ namespace ZR.Admin.WebApi.Controllers.Business public IActionResult Export([FromQuery] OdfCableFaultsQueryDto parm) { var list = _OdfCableFaultsService.ExportList(parm); - if (list == null || list.Result == null || list.Result.Count <= 0) + if (list == null || list.Count <= 0) { return ToResponse(ResultCode.FAIL, "没有要导出的数据"); } - // 收集所有故障ID,批量查询频次时间记录 - var faultIds = list.Result.Select(item => (int)((dynamic)item).Id).ToList(); + // 批量查询频次时间记录 + var faultIds = list.Select(item => item.Id).ToList(); var allFaultTimes = _OdfCableFaultsService.GetFaultTimesByFaultIds(faultIds); - // 将英文属性名转换为中文列头 + // 构建中文列头的导出数据 var exportList = new List>(); - foreach (var item in list.Result) + foreach (var item in list) { - var obj = (object)item; - var props = obj.GetType().GetProperties(); - var dict = props.ToDictionary(p => p.Name, p => p.GetValue(obj)); - var faultId = (int)dict.GetValueOrDefault("Id"); - var faultCount = dict.ContainsKey("FaultCount") ? dict["FaultCount"] : 1; - // 拼接所有故障时间(首次 + 增加的频次时间) var times = new List(); - var firstTime = dict.GetValueOrDefault("FaultTime"); - if (firstTime != null) times.Add(firstTime.ToString()); - if (allFaultTimes.ContainsKey(faultId)) + times.Add(item.FaultTime.ToString("yyyy-MM-dd HH:mm:ss")); + if (allFaultTimes.ContainsKey(item.Id)) { - times.AddRange(allFaultTimes[faultId].Select(t => t.ToString())); + times.AddRange(allFaultTimes[item.Id].Select(t => t.ToString("yyyy-MM-dd HH:mm:ss"))); } times.Sort(); var row = new Dictionary { - ["编号"] = dict.GetValueOrDefault("Id"), - ["光缆编号"] = dict.GetValueOrDefault("CableId"), + ["编号"] = item.Id, + ["光缆编号"] = item.CableId, ["故障时间"] = string.Join("\n", times), - ["故障发生频次"] = faultCount, - ["人员"] = dict.GetValueOrDefault("Personnel"), - ["故障原因"] = dict.GetValueOrDefault("FaultReason"), - ["表显故障里程"] = dict.GetValueOrDefault("Mileage"), - ["表显里程矫正"] = dict.GetValueOrDefault("MileageCorrection"), - ["地点"] = dict.GetValueOrDefault("Location"), - ["纬度"] = dict.GetValueOrDefault("Latitude"), - ["经度"] = dict.GetValueOrDefault("Longitude"), - ["备注"] = dict.GetValueOrDefault("Remark"), - ["创建时间"] = dict.GetValueOrDefault("CreatedAt"), - ["所属光缆"] = dict.GetValueOrDefault("CableName") + ["故障发生频次"] = item.FaultCount, + ["人员"] = item.Personnel, + ["故障原因"] = item.FaultReason, + ["表显故障里程"] = item.Mileage, + ["表显里程矫正"] = item.MileageCorrection, + ["地点"] = item.Location, + ["纬度"] = item.Latitude, + ["经度"] = item.Longitude, + ["备注"] = item.Remark, + ["创建时间"] = item.CreatedAt, + ["所属光缆"] = item.CableName }; exportList.Add(row); } diff --git a/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs b/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs index e6e1b53..4fea087 100644 --- a/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs +++ b/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs @@ -108,4 +108,25 @@ namespace ZR.Model.Business.Dto { public string MileageCorrection { get; set; } } + + /// + /// 干线故障导出对象(联查光缆名称) + /// + public class OdfCableFaultExportDto + { + public int Id { get; set; } + public int CableId { get; set; } + public DateTime FaultTime { get; set; } + public string Personnel { get; set; } + public string FaultReason { get; set; } + public string Mileage { get; set; } + public string MileageCorrection { get; set; } + public string Location { get; set; } + public decimal Latitude { get; set; } + public decimal Longitude { get; set; } + public string Remark { get; set; } + public DateTime? CreatedAt { get; set; } + public int FaultCount { get; set; } + public string CableName { get; set; } + } } diff --git a/server/ZR.Service/Business/IBusinessService/IOdfCableFaultsService.cs b/server/ZR.Service/Business/IBusinessService/IOdfCableFaultsService.cs index aa2d744..98435b9 100644 --- a/server/ZR.Service/Business/IBusinessService/IOdfCableFaultsService.cs +++ b/server/ZR.Service/Business/IBusinessService/IOdfCableFaultsService.cs @@ -32,7 +32,7 @@ namespace ZR.Service.Business.IBusinessService /// /// 导出故障列表 /// - PagedInfo ExportList(OdfCableFaultsQueryDto parm); + List ExportList(OdfCableFaultsQueryDto parm); /// /// 批量导入故障 diff --git a/server/ZR.Service/Business/OdfCableFaultsService.cs b/server/ZR.Service/Business/OdfCableFaultsService.cs index a20d491..b361884 100644 --- a/server/ZR.Service/Business/OdfCableFaultsService.cs +++ b/server/ZR.Service/Business/OdfCableFaultsService.cs @@ -226,11 +226,32 @@ namespace ZR.Service.Business /// /// 导出故障列表 /// - public PagedInfo ExportList(OdfCableFaultsQueryDto parm) + public List ExportList(OdfCableFaultsQueryDto parm) { - parm.PageNum = 1; - parm.PageSize = 100000; - return GetList(parm); + var predicate = QueryExp(parm); + + return Queryable() + .Where(predicate.ToExpression()) + .LeftJoin((f, c) => f.CableId == c.Id) + .Select((f, c) => new OdfCableFaultExportDto + { + Id = f.Id, + CableId = f.CableId, + FaultTime = f.FaultTime, + Personnel = f.Personnel, + FaultReason = f.FaultReason, + Mileage = f.Mileage, + MileageCorrection = f.MileageCorrection, + Location = f.Location, + Latitude = f.Latitude, + Longitude = f.Longitude, + Remark = f.Remark, + CreatedAt = f.CreatedAt, + FaultCount = f.FaultCount, + CableName = c.CableName + }) + .OrderByDescending(it => it.FaultTime) + .ToList(); } ///