diff --git a/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs b/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs index 4d706fc..d7a48fd 100644 --- a/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs +++ b/server/ZR.Admin.WebApi/Controllers/Business/OdfCableFaultsController.cs @@ -118,8 +118,7 @@ namespace ZR.Admin.WebApi.Controllers.Business var faultIds = list.Select(item => item.Id).ToList(); var allFaultTimes = _OdfCableFaultsService.GetFaultTimesByFaultIds(faultIds); - // 构建中文列头的导出数据 - var exportList = new List>(); + // 填充计算字段 foreach (var item in list) { // 拼接所有故障时间(首次 + 增加的频次时间) @@ -130,28 +129,13 @@ namespace ZR.Admin.WebApi.Controllers.Business times.AddRange(allFaultTimes[item.Id].Select(t => t.ToString("yyyy-MM-dd HH:mm:ss"))); } times.Sort(); + item.FaultTimesDisplay = string.Join("\n", times); - var row = new Dictionary - { - ["编号"] = item.Id, - ["光缆编号"] = item.CableId, - ["故障时间"] = string.Join("\n", times), - ["故障发生频次"] = item.FaultCount, - ["人员"] = item.Personnel, - ["故障原因"] = item.FaultReason, - ["表显故障里程"] = CalcDisplayMileage(item.Mileage, item.MileageCorrection), - ["表显里程矫正"] = item.MileageCorrection, - ["地点"] = item.Location, - ["纬度"] = item.Latitude, - ["经度"] = item.Longitude, - ["备注"] = item.Remark, - ["创建时间"] = item.CreatedAt, - ["所属光缆"] = item.CableName - }; - exportList.Add(row); + // 表显故障里程 = 原始里程 + 矫正值 + item.DisplayMileage = CalcDisplayMileage(item.Mileage, item.MileageCorrection); } - var result = ExportExcelMini(exportList, "故障列表", "故障列表"); + var result = ExportExcelMini(list, "故障列表", "故障列表"); return ExportExcel(result.Item2, result.Item1); } diff --git a/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs b/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs index 4fea087..dfa72a8 100644 --- a/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs +++ b/server/ZR.Model/Business/Dto/OdfCableFaultsDto.cs @@ -114,19 +114,52 @@ namespace ZR.Model.Business.Dto /// public class OdfCableFaultExportDto { + [ExcelColumnName("编号")] public int Id { get; set; } + + [ExcelColumnName("光缆编号")] 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; } + + [ExcelColumnName("故障时间")] + public string FaultTimesDisplay { get; set; } + + [ExcelColumnName("故障发生频次")] public int FaultCount { get; set; } + + [ExcelColumnName("人员")] + public string Personnel { get; set; } + + [ExcelColumnName("故障原因")] + public string FaultReason { get; set; } + + [ExcelColumnName("表显故障里程")] + public string DisplayMileage { get; set; } + + [ExcelColumnName("表显里程矫正")] + public string MileageCorrection { get; set; } + + [ExcelColumnName("地点")] + public string Location { get; set; } + + [ExcelColumnName("纬度")] + public decimal Latitude { get; set; } + + [ExcelColumnName("经度")] + public decimal Longitude { get; set; } + + [ExcelColumnName("备注")] + public string Remark { get; set; } + + [ExcelColumnName("创建时间")] + public DateTime? CreatedAt { get; set; } + + [ExcelColumnName("所属光缆")] public string CableName { get; set; } + + // 以下字段不导出,仅内部使用 + [ExcelIgnore] + public DateTime FaultTime { get; set; } + [ExcelIgnore] + public string Mileage { get; set; } } } diff --git a/server/ZR.Service/Business/OdfCableFaultsService.cs b/server/ZR.Service/Business/OdfCableFaultsService.cs index b361884..fc96abf 100644 --- a/server/ZR.Service/Business/OdfCableFaultsService.cs +++ b/server/ZR.Service/Business/OdfCableFaultsService.cs @@ -49,9 +49,40 @@ namespace ZR.Service.Business .OrderByDescending(it => it.FaultTime) .ToPageList(parm.PageNum, parm.PageSize, ref total); + // 批量查询频次时间记录 + var faultIds = list.Select(x => x.Id).ToList(); + var allFaultTimes = GetFaultTimesByFaultIds(faultIds); + + var resultList = list.Select(item => + { + var times = new List(); + if (allFaultTimes.ContainsKey(item.Id)) + { + times = allFaultTimes[item.Id].Select(t => t.ToString("yyyy-MM-dd HH:mm:ss")).ToList(); + } + return new + { + item.Id, + item.CableId, + item.FaultTime, + item.Personnel, + item.FaultReason, + item.Mileage, + item.MileageCorrection, + item.Location, + item.Latitude, + item.Longitude, + item.Remark, + item.CreatedAt, + item.FaultCount, + item.CableName, + FaultTimes = times + }; + }).ToList(); + return new PagedInfo { - Result = list.Cast().ToList(), + Result = resultList.Cast().ToList(), TotalNum = total, PageIndex = parm.PageNum, PageSize = parm.PageSize diff --git a/server/ZR.Vue/src/views/business/OdfCableFaults.vue b/server/ZR.Vue/src/views/business/OdfCableFaults.vue index 71f0575..45035db 100644 --- a/server/ZR.Vue/src/views/business/OdfCableFaults.vue +++ b/server/ZR.Vue/src/views/business/OdfCableFaults.vue @@ -79,7 +79,15 @@ @selection-change="handleSelectionChange"> - + + +