This commit is contained in:
parent
5b0de386f1
commit
1e6c6cbf66
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace ZR.Service.Business.IBusinessService
|
|||
/// <summary>
|
||||
/// 导出故障列表
|
||||
/// </summary>
|
||||
PagedInfo<dynamic> ExportList(OdfCableFaultsQueryDto parm);
|
||||
List<OdfCableFaultExportDto> ExportList(OdfCableFaultsQueryDto parm);
|
||||
|
||||
/// <summary>
|
||||
/// 批量导入故障
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user