测试
This commit is contained in:
parent
7ef76129c6
commit
b46027e9b0
|
|
@ -152,11 +152,29 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[ActionPermissionFilter(Permission = "odfframes:edit")]
|
[ActionPermissionFilter(Permission = "odfframes:edit")]
|
||||||
[Log(Title = "框-信息", BusinessType = BusinessType.UPDATE)]
|
[Log(Title = "框-信息", BusinessType = BusinessType.UPDATE)]
|
||||||
public IActionResult UpdateOdfFrames([FromBody] OdfFramesDto parm)
|
public async Task<IActionResult> UpdateOdfFrames([FromBody] OdfFramesDto parm)
|
||||||
{
|
{
|
||||||
var modal = parm.Adapt<OdfFrames>().ToUpdate(HttpContext);
|
var modal = parm.Adapt<OdfFrames>().ToUpdate(HttpContext);
|
||||||
|
var oldModel = _OdfFramesService.GetById(parm.Id);
|
||||||
var response = _OdfFramesService.UpdateOdfFrames(modal);
|
var response = _OdfFramesService.UpdateOdfFrames(modal);
|
||||||
|
if (response > 0)
|
||||||
|
{
|
||||||
|
var rortsName = oldModel.PortsName;
|
||||||
|
var frameId = modal.Id;
|
||||||
|
var rackId = modal.RackId;
|
||||||
|
|
||||||
|
if (oldModel.PortsName != modal.PortsName)
|
||||||
|
{
|
||||||
|
// 最直接的转换
|
||||||
|
await _OdfPortsService.UpdateAsync(
|
||||||
|
it => it.FrameId == frameId && it.RackId == rackId, // WHERE条件
|
||||||
|
it => new OdfPorts // SET部分
|
||||||
|
{
|
||||||
|
FrameName = modal.PortsName,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
return ToResponse(response);
|
return ToResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetLiveInfoRespon
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ZR.Repository;
|
using ZR.Repository;
|
||||||
using Aliyun.OSS;
|
using Aliyun.OSS;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
//创建时间:2025-08-05
|
//创建时间:2025-08-05
|
||||||
namespace ZR.Admin.WebApi.Controllers.Business
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
|
@ -30,12 +31,16 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
private readonly IOdfRoomsService _OdfRoomsService;
|
private readonly IOdfRoomsService _OdfRoomsService;
|
||||||
|
|
||||||
|
|
||||||
|
private readonly ISysDeptService _SysDeptService;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly ISysUserService _SysUserService;
|
private readonly ISysUserService _SysUserService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///机架
|
///机架
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -51,13 +56,17 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
ISysUserService sysUserService,
|
ISysUserService sysUserService,
|
||||||
IOdfPortsService odfPortsService,
|
IOdfPortsService odfPortsService,
|
||||||
IOdfFramesService odfFramesService,
|
IOdfFramesService odfFramesService,
|
||||||
IOdfRacksService odfRacksService)
|
IOdfRacksService odfRacksService
|
||||||
|
|
||||||
|
)
|
||||||
{
|
{
|
||||||
_OdfRoomsService = OdfRoomsService;
|
_OdfRoomsService = OdfRoomsService;
|
||||||
_SysUserService = sysUserService;
|
_SysUserService = sysUserService;
|
||||||
_OdfPortsService = odfPortsService;
|
_OdfPortsService = odfPortsService;
|
||||||
_OdfFramesService = odfFramesService;
|
_OdfFramesService = odfFramesService;
|
||||||
_OdfRacksService = odfRacksService;
|
_OdfRacksService = odfRacksService;
|
||||||
|
_SysDeptService = sysDeptService;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -339,15 +348,143 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
[HttpPost("importData")]
|
[HttpPost("importData")]
|
||||||
[Log(Title = "端口导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
[Log(Title = "端口导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
||||||
[ActionPermissionFilter(Permission = "odfports:import")]
|
[ActionPermissionFilter(Permission = "odfports:import")]
|
||||||
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
public async Task<IActionResult> ImportData([FromForm(Name = "file")] IFormFile formFile)
|
||||||
{
|
{
|
||||||
List<OdfPortsDto> list = new();
|
List<OdfPortsImportDto> list = new();
|
||||||
using (var stream = formFile.OpenReadStream())
|
using (var stream = formFile.OpenReadStream())
|
||||||
{
|
{
|
||||||
list = stream.Query<OdfPortsDto>(startCell: "A1").ToList();
|
list = stream.Query<OdfPortsImportDto>(startCell: "A1").ToList();
|
||||||
|
}
|
||||||
|
int errorCount = 0;
|
||||||
|
int successCount = 0;
|
||||||
|
int addRoomCount = 0;
|
||||||
|
int addRackCount = 0;
|
||||||
|
int addFrameCount = 0;
|
||||||
|
int addPortCount = 0;
|
||||||
|
if (list.Count > 0)
|
||||||
|
{
|
||||||
|
List<OdfPorts> odfPorts = new List<OdfPorts>();
|
||||||
|
var deptName = list.Select(it => it.DeptName.Trim()).Distinct().ToList();
|
||||||
|
var deptInfo = _SysDeptService.AsQueryable().Where(it => deptName.Contains(it.DeptName)).Select(it => new { it.DeptId, it.DeptName }).ToList();
|
||||||
|
|
||||||
|
var roomNameList = list.Select(it => it.RoomName).Select(it => it.Trim()).Distinct().ToList();
|
||||||
|
var roomList = _OdfRoomsService.AsQueryable().Where(it => roomNameList.Contains(it.RoomName)).ToList();
|
||||||
|
foreach (var excelItem in list)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var dept = deptInfo.Find(it => it.DeptName == excelItem.DeptName);
|
||||||
|
if (dept == null)
|
||||||
|
{
|
||||||
|
//没有部门,下一个数据
|
||||||
|
errorCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var room = roomList.Find(it => it.RoomName == excelItem.RoomName);
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
//添加机房
|
||||||
|
var roomItem = new OdfRooms()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
RoomAddress = "",
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
DeptId = dept.DeptId,
|
||||||
|
DeptName = dept.DeptName,
|
||||||
|
RacksCount = 0,
|
||||||
|
Remarks = "",
|
||||||
|
RoomName = excelItem.RoomName
|
||||||
|
};
|
||||||
|
await _OdfRoomsService.InsertReturnEntityAsync(roomItem);
|
||||||
|
addRoomCount++;
|
||||||
|
roomList.Add(roomItem);
|
||||||
|
room = roomItem;
|
||||||
|
}
|
||||||
|
//添加机架
|
||||||
|
var rack = _OdfRacksService.AsQueryable().Where(it => it.RoomId == room.Id && it.RackName == excelItem.RackName).First();
|
||||||
|
if (rack == null)
|
||||||
|
{
|
||||||
|
var sequenceNumber = _OdfRacksService.AsQueryable().Where(it => it.RoomId == room.Id).Max(it => (int?)it.SequenceNumber) ?? 0;
|
||||||
|
sequenceNumber++;
|
||||||
|
rack = new OdfRacks()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
RoomId = room.Id,
|
||||||
|
RackName = excelItem.RackName,
|
||||||
|
DeptId = dept.DeptId,
|
||||||
|
FrameCount = 0,
|
||||||
|
SequenceNumber = sequenceNumber,
|
||||||
|
};
|
||||||
|
await _OdfRacksService.InsertReturnEntityAsync(rack);
|
||||||
|
addRackCount++;
|
||||||
|
}
|
||||||
|
//添加框
|
||||||
|
var frame = _OdfFramesService.AsQueryable().Where(it => it.RackId == rack.Id && it.PortsName == excelItem.FrameName).First();
|
||||||
|
if (frame == null)
|
||||||
|
{
|
||||||
|
var sequenceNumber = _OdfFramesService.AsQueryable().Where(it => it.RackId == rack.Id).Max(it => (int?)it.SequenceNumber) ?? 0;
|
||||||
|
sequenceNumber++;
|
||||||
|
frame = new OdfFrames()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdateAt = DateTime.Now,
|
||||||
|
RackId = rack.Id,
|
||||||
|
PortsName = excelItem.FrameName,
|
||||||
|
SequenceNumber = sequenceNumber,
|
||||||
|
PortsCol = 0,
|
||||||
|
PortsCount = 0,
|
||||||
|
DeptId = dept.DeptId,
|
||||||
|
PortsRow = 0,
|
||||||
|
};
|
||||||
|
await _OdfFramesService.InsertReturnEntityAsync(frame);
|
||||||
|
addFrameCount++;
|
||||||
|
}
|
||||||
|
//添加端口
|
||||||
|
var port = _OdfPortsService.AsQueryable().Where(it => it.FrameId == frame.Id && it.RowNumber == excelItem.RowNumber && it.PortNumber == excelItem.PortNumber).First();
|
||||||
|
if (port == null)
|
||||||
|
{
|
||||||
|
port = new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
DeptId = dept.DeptId,
|
||||||
|
DeptName = dept.DeptName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
RackId = rack.Id,
|
||||||
|
RackName = rack.RackName,
|
||||||
|
RoomId = room.Id,
|
||||||
|
RoomName = room.RoomName,
|
||||||
|
Name = excelItem.RowNumber + "-" + excelItem.PortNumber,
|
||||||
|
RowNumber = excelItem.RowNumber,
|
||||||
|
PortNumber = excelItem.PortNumber,
|
||||||
|
Status = excelItem.Status,
|
||||||
|
Remarks = excelItem.Remarks?.Trim(),
|
||||||
|
OpticalAttenuation = excelItem.OpticalAttenuation?.Trim(),
|
||||||
|
HistoryRemarks = excelItem.HistoryRemarks?.Trim(),
|
||||||
|
};
|
||||||
|
await _OdfPortsService.InsertAsync(port);
|
||||||
|
addPortCount++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
port.HistoryRemarks = excelItem.HistoryRemarks?.Trim();
|
||||||
|
port.Remarks = excelItem.Remarks?.Trim();
|
||||||
|
port.OpticalAttenuation = excelItem.OpticalAttenuation?.Trim();
|
||||||
|
port.Status = excelItem.Status;
|
||||||
|
await _OdfPortsService.UpdateAsync(port);
|
||||||
|
}
|
||||||
|
successCount++;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
errorCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS(_OdfPortsService.ImportOdfPorts(list.Adapt<List<OdfPorts>>()));
|
}
|
||||||
|
return SUCCESS($"共查询{list.Count}条数据,导入成功{successCount}条数据!导入失败{errorCount}条!{(addRoomCount > 0 ? "添加机房" + addRoomCount + "条," : "")}{(addRackCount > 0 ? "添加机架" + addRackCount + "条" : "")}{(addFrameCount > 0 ? "添加机框" + addFrameCount + "条" : "")}");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ using ZR.Model.Business;
|
||||||
using ZR.Service.Business.IBusinessService;
|
using ZR.Service.Business.IBusinessService;
|
||||||
using MiniExcelLibs;
|
using MiniExcelLibs;
|
||||||
using ZR.Service.Business;
|
using ZR.Service.Business;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
//创建时间:2025-08-05
|
//创建时间:2025-08-05
|
||||||
namespace ZR.Admin.WebApi.Controllers.Business
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
|
@ -207,11 +208,29 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[ActionPermissionFilter(Permission = "odfracks:edit")]
|
[ActionPermissionFilter(Permission = "odfracks:edit")]
|
||||||
[Log(Title = "机架列表", BusinessType = BusinessType.UPDATE)]
|
[Log(Title = "机架列表", BusinessType = BusinessType.UPDATE)]
|
||||||
public IActionResult UpdateOdfRacks([FromBody] OdfRacksDto parm)
|
public async Task<IActionResult> UpdateOdfRacks([FromBody] OdfRacksDto parm)
|
||||||
{
|
{
|
||||||
var modal = parm.Adapt<OdfRacks>().ToUpdate(HttpContext);
|
var modal = parm.Adapt<OdfRacks>().ToUpdate(HttpContext);
|
||||||
|
var oldModel = _OdfRacksService.GetById(parm.Id);
|
||||||
var response = _OdfRacksService.UpdateOdfRacks(modal);
|
var response = _OdfRacksService.UpdateOdfRacks(modal);
|
||||||
|
if (response > 0)
|
||||||
|
{
|
||||||
|
var rackName = oldModel.RackName;
|
||||||
|
var oldRoomId = modal.RoomId;
|
||||||
|
var rackId = modal.Id;
|
||||||
|
|
||||||
|
if (oldModel.RackName != modal.RackName)
|
||||||
|
{
|
||||||
|
// 最直接的转换
|
||||||
|
await _OdfPortsService.UpdateAsync(
|
||||||
|
it => it.RoomId == oldRoomId && it.RackId == rackId, // WHERE条件
|
||||||
|
it => new OdfPorts // SET部分
|
||||||
|
{
|
||||||
|
RackName = modal.RackName,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
return ToResponse(response);
|
return ToResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,9 @@ using ZR.ServiceCore.Services;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ZR.Service.Business;
|
using ZR.Service.Business;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
|
using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetLiveInfoResponse.Types;
|
||||||
|
using Aliyun.OSS;
|
||||||
|
using Azure;
|
||||||
|
|
||||||
//创建时间:2025-08-05
|
//创建时间:2025-08-05
|
||||||
namespace ZR.Admin.WebApi.Controllers.Business
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
|
@ -377,15 +380,18 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
var modal = parm.Adapt<OdfRooms>().ToUpdate(HttpContext);
|
var modal = parm.Adapt<OdfRooms>().ToUpdate(HttpContext);
|
||||||
var response = _OdfRoomsService.UpdateOdfRooms(modal);
|
var response = _OdfRoomsService.UpdateOdfRooms(modal);
|
||||||
if (response > 0)
|
if (response > 0)
|
||||||
{
|
|
||||||
if (oldModel.DeptId != modal.DeptId)
|
|
||||||
{
|
{
|
||||||
var deptId = modal.DeptId ?? 0;
|
var deptId = modal.DeptId ?? 0;
|
||||||
var deptName = modal.DeptName;
|
var deptName = modal.DeptName;
|
||||||
var roomId = oldModel.Id;
|
var roomName = modal.RoomName;
|
||||||
|
var oldRoomId = oldModel.Id;
|
||||||
|
|
||||||
|
if (oldModel.DeptId != modal.DeptId)
|
||||||
|
{
|
||||||
|
|
||||||
// 最直接的转换
|
// 最直接的转换
|
||||||
await _OdfPortsService.UpdateAsync(
|
await _OdfPortsService.UpdateAsync(
|
||||||
it => it.RoomId == roomId, // WHERE条件
|
it => it.RoomId == oldRoomId, // WHERE条件
|
||||||
it => new OdfPorts // SET部分
|
it => new OdfPorts // SET部分
|
||||||
{
|
{
|
||||||
DeptId = deptId,
|
DeptId = deptId,
|
||||||
|
|
@ -394,14 +400,14 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
);
|
);
|
||||||
// 1. 更新 odf_racks
|
// 1. 更新 odf_racks
|
||||||
var racksUpdated = await _OdfRacksService.UpdateAsync(
|
var racksUpdated = await _OdfRacksService.UpdateAsync(
|
||||||
r => r.RoomId == roomId,
|
r => r.RoomId == oldRoomId,
|
||||||
r => new OdfRacks { DeptId = deptId }
|
r => new OdfRacks { DeptId = deptId }
|
||||||
);
|
);
|
||||||
|
|
||||||
// 2. 更新 odf_frames(方法1:子查询)
|
// 2. 更新 odf_frames(方法1:子查询)
|
||||||
var framesUpdated = await _OdfFramesService.UpdateAsync(
|
var framesUpdated = await _OdfFramesService.UpdateAsync(
|
||||||
f => SqlFunc.Subqueryable<OdfRacks>()
|
f => SqlFunc.Subqueryable<OdfRacks>()
|
||||||
.Where(r => r.RoomId == roomId && r.Id == f.RackId)
|
.Where(r => r.RoomId == oldRoomId && r.Id == f.RackId)
|
||||||
.Any(),
|
.Any(),
|
||||||
f => new OdfFrames { DeptId = deptId }
|
f => new OdfFrames { DeptId = deptId }
|
||||||
);
|
);
|
||||||
|
|
@ -410,6 +416,17 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
//_OdfFramesService
|
//_OdfFramesService
|
||||||
//_OdfRacksService
|
//_OdfRacksService
|
||||||
}
|
}
|
||||||
|
if (oldModel.RoomName != modal.RoomName)
|
||||||
|
{
|
||||||
|
// 最直接的转换
|
||||||
|
await _OdfPortsService.UpdateAsync(
|
||||||
|
it => it.RoomId == oldRoomId, // WHERE条件
|
||||||
|
it => new OdfPorts // SET部分
|
||||||
|
{
|
||||||
|
RoomName = roomName,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ToResponse(response);
|
return ToResponse(response);
|
||||||
}
|
}
|
||||||
|
|
@ -454,15 +471,179 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
[HttpPost("importData")]
|
[HttpPost("importData")]
|
||||||
[Log(Title = "机房列表导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
[Log(Title = "机房列表导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
||||||
[ActionPermissionFilter(Permission = "odfrooms:import")]
|
[ActionPermissionFilter(Permission = "odfrooms:import")]
|
||||||
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
public async Task<IActionResult> ImportData([FromForm(Name = "file")] IFormFile formFile)
|
||||||
{
|
{
|
||||||
List<OdfRoomsDto> list = new();
|
List<OdfRoomsImDto> list = new();
|
||||||
using (var stream = formFile.OpenReadStream())
|
using (var stream = formFile.OpenReadStream())
|
||||||
{
|
{
|
||||||
list = stream.Query<OdfRoomsDto>(startCell: "A1").ToList();
|
list = stream.Query<OdfRoomsImDto>(startCell: "A1").ToList();
|
||||||
|
}
|
||||||
|
int errorCount = 0;
|
||||||
|
int successCount = 0;
|
||||||
|
int addRoomCount = 0;
|
||||||
|
int addRackCount = 0;
|
||||||
|
int addFrameCount = 0;
|
||||||
|
int addPortCount = 0;
|
||||||
|
if (list.Count > 0)
|
||||||
|
{
|
||||||
|
List<OdfPorts> odfPorts = new List<OdfPorts>();
|
||||||
|
var deptName = list.Select(it => it.DeptName.Trim()).Distinct().ToList();
|
||||||
|
var deptInfo = sysDeptService.AsQueryable().Where(it => deptName.Contains(it.DeptName)).Select(it => new { it.DeptId, it.DeptName }).ToList();
|
||||||
|
|
||||||
|
var roomNameList = list.Select(it => it.RoomName).Select(it => it.Trim()).Distinct().ToList();
|
||||||
|
var roomList = _OdfRoomsService.AsQueryable().Where(it => roomNameList.Contains(it.RoomName)).ToList();
|
||||||
|
foreach (var excelItem in list)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var dept = deptInfo.Find(it => it.DeptName == excelItem.DeptName);
|
||||||
|
if (dept == null)
|
||||||
|
{
|
||||||
|
//没有部门,下一个数据
|
||||||
|
errorCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var room = roomList.Find(it => it.RoomName == excelItem.RoomName);
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
//添加机房
|
||||||
|
var roomItem = new OdfRooms()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
RoomAddress = "",
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
DeptId = dept.DeptId,
|
||||||
|
DeptName = dept.DeptName,
|
||||||
|
RacksCount = excelItem.RacksCount,
|
||||||
|
Remarks = "",
|
||||||
|
RoomName = excelItem.RoomName
|
||||||
|
};
|
||||||
|
await _OdfRoomsService.InsertReturnEntityAsync(roomItem);
|
||||||
|
addRoomCount++;
|
||||||
|
roomList.Add(roomItem);
|
||||||
|
room = roomItem;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
room.RoomAddress = excelItem.RoomAddress?.Trim();
|
||||||
|
room.Remarks = excelItem.Remarks?.Trim();
|
||||||
|
room.RacksCount = excelItem.RacksCount ?? 0;
|
||||||
|
room.UpdatedAt = DateTime.Now;
|
||||||
|
await _OdfRoomsService.UpdateAsync(room);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (excelItem.RacksCount > 0)
|
||||||
|
{
|
||||||
|
var roomId = room.Id;
|
||||||
|
var roomName = room.RoomName;
|
||||||
|
List<OdfRacks> racksList = new List<OdfRacks>();
|
||||||
|
//添加机架
|
||||||
|
for (int i = 0; i < excelItem.RacksCount; i++)
|
||||||
|
{
|
||||||
|
var t = await _OdfRacksService.InsertReturnEntityAsync(new OdfRacks
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
FrameCount = excelItem.FrameCount,
|
||||||
|
DeptId = room.DeptId ?? 0,
|
||||||
|
RackName = $"odf-{(i + 1)}",
|
||||||
|
RoomId = roomId,
|
||||||
|
SequenceNumber = i + 1,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
}); // 直接插入机架
|
||||||
|
racksList.Add(t);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return SUCCESS(_OdfRoomsService.ImportOdfRooms(list.Adapt<List<OdfRooms>>()));
|
//机架添加完成
|
||||||
|
//return Insertable(model).ExecuteReturnEntity();
|
||||||
|
if (excelItem.FrameCount > 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
//添加机框
|
||||||
|
List<OdfFrames> framesList = new List<OdfFrames>();
|
||||||
|
|
||||||
|
foreach (var rack in racksList)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < excelItem.FrameCount; i++)
|
||||||
|
{
|
||||||
|
var t = await _OdfFramesService.InsertReturnEntityAsync(new OdfFrames()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdateAt = DateTime.Now,
|
||||||
|
PortsCol = 12,
|
||||||
|
PortsRow = 6,
|
||||||
|
PortsCount = 6 * 12,
|
||||||
|
DeptId = rack.DeptId,
|
||||||
|
PortsName = $"{(i + 1)}框",
|
||||||
|
RackId = rack.Id,
|
||||||
|
SequenceNumber = i + 1
|
||||||
|
});
|
||||||
|
framesList.Add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int index = 0;
|
||||||
|
//添加端口
|
||||||
|
foreach (var frame in framesList)
|
||||||
|
{
|
||||||
|
var ra = racksList.Find(it => it.Id == frame.RackId);
|
||||||
|
if (ra == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<OdfPorts> ports = new List<OdfPorts>();
|
||||||
|
for (int row = 0; row < 6; row++)
|
||||||
|
{
|
||||||
|
for (int port = 0; port < 12; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = frame.DeptId ?? 0,
|
||||||
|
DeptName = room.DeptName,
|
||||||
|
RackId = frame.RackId,
|
||||||
|
RackName = ra.RackName,
|
||||||
|
RoomId = roomId,
|
||||||
|
RoomName = roomName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
Name = $"{(row + 1)}-{(port + 1)}",
|
||||||
|
RowNumber = row,
|
||||||
|
PortNumber = port,
|
||||||
|
OpticalAttenuation = "",
|
||||||
|
HistoryRemarks = "",
|
||||||
|
Remarks = "",
|
||||||
|
Status = 1,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
//如果超过100个机框,则休眠一下,防止服务器死机
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
successCount++;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
errorCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return SUCCESS($"导入成功{successCount}条数据,失败{errorCount}");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/OdfPorts.xlsx
Normal file
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/OdfPorts.xlsx
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -204,6 +204,69 @@ namespace ZR.Model.Business.Dto
|
||||||
public string DeptName { get; set; }
|
public string DeptName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口输入对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfPortsImportDto
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房名称")]
|
||||||
|
[ExcelColumnName("机房名称")]
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机架名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机架名称")]
|
||||||
|
[ExcelColumnName("机架名称")]
|
||||||
|
public string RackName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机框名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机框名称")]
|
||||||
|
[ExcelColumnName("机框名称")]
|
||||||
|
public string FrameName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "行号不能为空")]
|
||||||
|
[ExcelColumn(Name = "行号(1-6)")]
|
||||||
|
[ExcelColumnName("行号(1-6)")]
|
||||||
|
public int RowNumber { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "端口号(1-12)不能为空")]
|
||||||
|
[ExcelColumn(Name = "端口号(1-12)")]
|
||||||
|
[ExcelColumnName("端口号(1-12)")]
|
||||||
|
public int PortNumber { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "连接状态,0正常,1断开不能为空")]
|
||||||
|
[ExcelColumn(Name = "连接状态,1正常,0断开")]
|
||||||
|
[ExcelColumnName("连接状态,1正常,0断开")]
|
||||||
|
public int Status { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "备注")]
|
||||||
|
[ExcelColumnName("备注")]
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "光衰值(dB)")]
|
||||||
|
[ExcelColumnName("光衰值(dB)")]
|
||||||
|
public string OpticalAttenuation { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "历史故障记录")]
|
||||||
|
[ExcelColumnName("历史故障记录")]
|
||||||
|
public string HistoryRemarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门名称
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "部门名称")]
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 端口输入输出对象
|
/// 端口输入输出对象
|
||||||
|
|
|
||||||
|
|
@ -105,9 +105,43 @@ namespace ZR.Model.Business.Dto
|
||||||
[ExcelColumn(Name = "修改时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
[ExcelColumn(Name = "修改时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
[ExcelColumnName("修改时间")]
|
[ExcelColumnName("修改时间")]
|
||||||
public DateTime? UpdatedAt { get; set; }
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsImDto
|
||||||
|
{
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "部门名称")]
|
||||||
|
[ExcelColumnName("部门名称")]
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房名称")]
|
||||||
|
[ExcelColumnName("机房名称")]
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "机房位置")]
|
||||||
|
[ExcelColumnName("机房位置")]
|
||||||
|
public string RoomAddress { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "备注")]
|
||||||
|
[ExcelColumnName("备注")]
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "机架数量")]
|
||||||
|
[ExcelColumnName("机架数量")]
|
||||||
|
public int? RacksCount { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "机框数量")]
|
||||||
|
[ExcelColumnName("机框数量")]
|
||||||
|
public int? FrameCount { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "是否生成端口数据,1生成,0只导入机房列表")]
|
||||||
|
[ExcelColumnName("是否生成端口数据,1生成,0只导入机房列表")]
|
||||||
|
public int? CreateRoomInfo { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user