21
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
zpc 2026-04-02 16:57:24 +08:00
parent 5b0de386f1
commit 1e6c6cbf66
4 changed files with 68 additions and 33 deletions

View File

@ -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<Dictionary<string, object>>();
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<string>();
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<string, object>
{
["编号"] = 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);
}

View File

@ -108,4 +108,25 @@ namespace ZR.Model.Business.Dto
{
public string MileageCorrection { get; set; }
}
/// <summary>
/// 干线故障导出对象(联查光缆名称)
/// </summary>
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; }
}
}

View File

@ -32,7 +32,7 @@ namespace ZR.Service.Business.IBusinessService
/// <summary>
/// 导出故障列表
/// </summary>
PagedInfo<dynamic> ExportList(OdfCableFaultsQueryDto parm);
List<OdfCableFaultExportDto> ExportList(OdfCableFaultsQueryDto parm);
/// <summary>
/// 批量导入故障

View File

@ -226,11 +226,32 @@ namespace ZR.Service.Business
/// <summary>
/// 导出故障列表
/// </summary>
public PagedInfo<dynamic> ExportList(OdfCableFaultsQueryDto parm)
public List<OdfCableFaultExportDto> ExportList(OdfCableFaultsQueryDto parm)
{
parm.PageNum = 1;
parm.PageSize = 100000;
return GetList(parm);
var predicate = QueryExp(parm);
return Queryable()
.Where(predicate.ToExpression())
.LeftJoin<OdfCables>((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();
}
/// <summary>