提交代码
This commit is contained in:
parent
d42c44c87b
commit
6941b6c1f8
178
ZR.Admin.WebApi/Controllers/Business/OdfFramesController.cs
Normal file
178
ZR.Admin.WebApi/Controllers/Business/OdfFramesController.cs
Normal file
|
|
@ -0,0 +1,178 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
using ZR.Service.Business;
|
||||||
|
|
||||||
|
//创建时间:2025-08-05
|
||||||
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息
|
||||||
|
/// </summary>
|
||||||
|
[Route("business/OdfFrames")]
|
||||||
|
public class OdfFramesController : BaseController
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfFramesService _OdfFramesService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfPortsService _OdfPortsService;
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRacksService _OdfRacksService;
|
||||||
|
private readonly IOdfRoomsService _odfRooms;
|
||||||
|
|
||||||
|
public OdfFramesController(IOdfRacksService OdfRacksService, IOdfRoomsService odfRooms,
|
||||||
|
IOdfFramesService odfFramesService,
|
||||||
|
IOdfPortsService odfPortsService)
|
||||||
|
{
|
||||||
|
_OdfRacksService = OdfRacksService;
|
||||||
|
_odfRooms = odfRooms;
|
||||||
|
_OdfFramesService = odfFramesService;
|
||||||
|
_OdfPortsService = odfPortsService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询框-信息列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("list")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfframes:list")]
|
||||||
|
public IActionResult QueryOdfFrames([FromQuery] OdfFramesQueryDto parm)
|
||||||
|
{
|
||||||
|
var response = _OdfFramesService.GetList(parm);
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询框-信息详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{Id}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfframes:query")]
|
||||||
|
public IActionResult GetOdfFrames(int Id)
|
||||||
|
{
|
||||||
|
var response = _OdfFramesService.GetInfo(Id);
|
||||||
|
|
||||||
|
var info = response.Adapt<OdfFramesDto>();
|
||||||
|
return SUCCESS(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加框-信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ActionPermissionFilter(Permission = "odfframes:add")]
|
||||||
|
[Log(Title = "框-信息", BusinessType = BusinessType.INSERT)]
|
||||||
|
public async Task<IActionResult> AddOdfFrames([FromBody] OdfFramesExpertDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfFrames>().ToCreate(HttpContext);
|
||||||
|
var rooms = _odfRooms.GetById(parm.RoomId);
|
||||||
|
if (rooms == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "机房不存在");
|
||||||
|
}
|
||||||
|
modal.DeptId = rooms.DeptId ?? 0;
|
||||||
|
modal.RackId = parm.RackId;
|
||||||
|
modal.PortsRow = parm.RowCount;
|
||||||
|
modal.PortsCol = parm.PortsCount;
|
||||||
|
modal.PortsCount = parm.RowCount * parm.PortsCount;
|
||||||
|
modal.UpdateAt = DateTime.Now;
|
||||||
|
modal.CreatedAt = DateTime.Now;
|
||||||
|
var response = _OdfFramesService.AddOdfFrames(modal);
|
||||||
|
var roomId = rooms.Id;
|
||||||
|
var roomName = rooms.RoomName;
|
||||||
|
|
||||||
|
var ra = _OdfRacksService.GetById(modal.RackId);
|
||||||
|
//添加机框结束
|
||||||
|
if (parm.RowCount > 0)
|
||||||
|
{
|
||||||
|
//添加行
|
||||||
|
if (parm.PortsCount > 0)
|
||||||
|
{
|
||||||
|
int index = 0;
|
||||||
|
//添加端口
|
||||||
|
|
||||||
|
var frame = response;
|
||||||
|
List<OdfPorts> ports = new List<OdfPorts>();
|
||||||
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
|
{
|
||||||
|
for (int port = 0; port < parm.PortsCount; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = rooms.DeptId ?? 0,
|
||||||
|
DeptName = rooms.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 = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
//如果超过100个机框,则休眠一下,防止服务器死机
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新框-信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut]
|
||||||
|
[ActionPermissionFilter(Permission = "odfframes:edit")]
|
||||||
|
[Log(Title = "框-信息", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult UpdateOdfFrames([FromBody] OdfFramesDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfFrames>().ToUpdate(HttpContext);
|
||||||
|
var response = _OdfFramesService.UpdateOdfFrames(modal);
|
||||||
|
|
||||||
|
return ToResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除框-信息
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("delete/{ids}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfframes:delete")]
|
||||||
|
[Log(Title = "框-信息", BusinessType = BusinessType.DELETE)]
|
||||||
|
public IActionResult DeleteOdfFrames([FromRoute] string ids)
|
||||||
|
{
|
||||||
|
var idArr = Tools.SplitAndConvert<int>(ids);
|
||||||
|
|
||||||
|
return ToResponse(_OdfFramesService.Delete(idArr, "删除框-信息"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
340
ZR.Admin.WebApi/Controllers/Business/OdfPortsController.cs
Normal file
340
ZR.Admin.WebApi/Controllers/Business/OdfPortsController.cs
Normal file
|
|
@ -0,0 +1,340 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
using MiniExcelLibs;
|
||||||
|
using ZR.Service.Business;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using SqlSugar;
|
||||||
|
using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetLiveInfoResponse.Types;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
//创建时间:2025-08-05
|
||||||
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口
|
||||||
|
/// </summary>
|
||||||
|
[Route("business/OdfPorts")]
|
||||||
|
public class OdfPortsController : BaseController
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfPortsService _OdfPortsService;
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRoomsService _OdfRoomsService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
private readonly ISysUserService _SysUserService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///机架
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRacksService _OdfRacksService;
|
||||||
|
/// <summary>
|
||||||
|
/// 框
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfFramesService _OdfFramesService;
|
||||||
|
|
||||||
|
|
||||||
|
public OdfPortsController(IOdfRoomsService OdfRoomsService,
|
||||||
|
ISysDeptService sysDeptService,
|
||||||
|
ISysUserService sysUserService,
|
||||||
|
IOdfPortsService odfPortsService,
|
||||||
|
IOdfFramesService odfFramesService,
|
||||||
|
IOdfRacksService odfRacksService)
|
||||||
|
{
|
||||||
|
_OdfRoomsService = OdfRoomsService;
|
||||||
|
_SysUserService = sysUserService;
|
||||||
|
_OdfPortsService = odfPortsService;
|
||||||
|
_OdfFramesService = odfFramesService;
|
||||||
|
_OdfRacksService = odfRacksService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询端口列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("list")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:list")]
|
||||||
|
public IActionResult QueryOdfPorts([FromQuery] OdfPortsQueryDto parm)
|
||||||
|
{
|
||||||
|
var response = _OdfPortsService.GetList(parm);
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询端口列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("mlist")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:list")]
|
||||||
|
public async Task<IActionResult> GetQueryOdfPorts([FromQuery] OdfPortsMQueryDto parm)
|
||||||
|
{
|
||||||
|
var list = await _OdfFramesService.AsQueryable().Where(it => it.RackId == parm.RackId)
|
||||||
|
.Select(it => new OdfPortsMListDto() { Id = it.Id, Name = it.PortsName }).ToListAsync();
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
var l = await _OdfPortsService.AsQueryable().Where(it => it.FrameId == item.Id).Select(it => new OdfPortsMDto() { Id = it.Id, Name = it.Name, Status = it.Status }).ToListAsync();
|
||||||
|
item.odfPortsList = l;
|
||||||
|
}
|
||||||
|
return SUCCESS(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询端口详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{Id}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:query")]
|
||||||
|
public IActionResult GetOdfPorts(int Id)
|
||||||
|
{
|
||||||
|
var response = _OdfPortsService.GetInfo(Id);
|
||||||
|
|
||||||
|
var info = response.Adapt<OdfPortsDto>();
|
||||||
|
return SUCCESS(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改端口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("status/{Id}/{status}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:edit")]
|
||||||
|
[Log(Title = "更新端口状态", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult GetOdfPortsStatus(int Id, int status)
|
||||||
|
{
|
||||||
|
var response = _OdfPortsService.GetInfo(Id);
|
||||||
|
response.Status = status;
|
||||||
|
response.UpdatedAt = DateTime.Now;
|
||||||
|
var s = _OdfPortsService.Update(response);
|
||||||
|
return SUCCESS(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("odf")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:edit")]
|
||||||
|
public IActionResult GetOdfTest()
|
||||||
|
{
|
||||||
|
|
||||||
|
return SUCCESS(new { update = true });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:add")]
|
||||||
|
[Log(Title = "端口", BusinessType = BusinessType.INSERT)]
|
||||||
|
public IActionResult AddOdfPorts([FromBody] OdfPortsDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfPorts>().ToCreate(HttpContext);
|
||||||
|
|
||||||
|
var response = _OdfPortsService.AddOdfPorts(modal);
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:edit")]
|
||||||
|
[Log(Title = "端口", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult UpdateOdfPorts([FromBody] OdfPortsDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfPorts>().ToUpdate(HttpContext);
|
||||||
|
var response = _OdfPortsService.UpdateOdfPorts(modal);
|
||||||
|
|
||||||
|
return ToResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("save")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:edit")]
|
||||||
|
[Log(Title = "APP更新端口", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult SaveMOdfPorts([FromBody] OdfPortsMMDto parm)
|
||||||
|
{
|
||||||
|
var port = _OdfPortsService.GetById(parm.Id);
|
||||||
|
if (port == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "保存失败");
|
||||||
|
}
|
||||||
|
port.Status = parm.Status;
|
||||||
|
port.HistoryRemarks = parm.HistoryRemarks;
|
||||||
|
port.Remarks = parm.Remarks;
|
||||||
|
port.OpticalAttenuation = parm.OpticalAttenuation;
|
||||||
|
var response = _OdfPortsService.UpdateOdfPorts(port);
|
||||||
|
|
||||||
|
return ToResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改端口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("empty/{Id}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:edit")]
|
||||||
|
[Log(Title = "清空数据", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult GetOdfPortsEmpty(int Id)
|
||||||
|
{
|
||||||
|
var response = _OdfPortsService.GetInfo(Id);
|
||||||
|
response.Status = 0;
|
||||||
|
response.Remarks = "";
|
||||||
|
response.HistoryRemarks = "";
|
||||||
|
response.OpticalAttenuation = "";
|
||||||
|
response.UpdatedAt = DateTime.Now;
|
||||||
|
var s = _OdfPortsService.Update(response);
|
||||||
|
return SUCCESS(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("delete/{ids}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:delete")]
|
||||||
|
[Log(Title = "端口", BusinessType = BusinessType.DELETE)]
|
||||||
|
public IActionResult DeleteOdfPorts([FromRoute] string ids)
|
||||||
|
{
|
||||||
|
var idArr = Tools.SplitAndConvert<int>(ids);
|
||||||
|
|
||||||
|
return ToResponse(_OdfPortsService.Delete(idArr, "删除端口"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Log(Title = "导出端口数据", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[HttpGet("export")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:export")]
|
||||||
|
|
||||||
|
public IActionResult Export([FromQuery] OdfPortsQueryDto parm)
|
||||||
|
{
|
||||||
|
var list = _OdfPortsService.ExportList(parm).Result;
|
||||||
|
if (list == null || list.Count <= 0)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "没有要导出的数据");
|
||||||
|
}
|
||||||
|
var result = ExportExcelMini(list, "端口", "端口");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="formFile"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("importData")]
|
||||||
|
[Log(Title = "端口导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:import")]
|
||||||
|
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
||||||
|
{
|
||||||
|
List<OdfPortsDto> list = new();
|
||||||
|
using (var stream = formFile.OpenReadStream())
|
||||||
|
{
|
||||||
|
list = stream.Query<OdfPortsDto>(startCell: "A1").ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(_OdfPortsService.ImportOdfPorts(list.Adapt<List<OdfPorts>>()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口导入模板下载
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("importTemplate")]
|
||||||
|
[Log(Title = "端口模板", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult ImportTemplateExcel()
|
||||||
|
{
|
||||||
|
var result = DownloadImportTemplate(new List<OdfPortsDto>() { }, "OdfPorts");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 删除端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("deleteAll")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:delete")]
|
||||||
|
[Log(Title = "删除端口数据", BusinessType = BusinessType.DELETE)]
|
||||||
|
public async Task<IActionResult> DeleteAll([FromBody] OdfRoomsTreeDto treeDto)
|
||||||
|
{
|
||||||
|
if (treeDto.Level == 2)
|
||||||
|
{
|
||||||
|
//删除全部
|
||||||
|
var room = _OdfRoomsService.GetById(treeDto.RoomId);
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "删除失败");
|
||||||
|
}
|
||||||
|
//删除机房下的所有端口
|
||||||
|
await _OdfPortsService.AsDeleteable().Where(it => it.RoomId == room.Id).ExecuteCommandAsync();
|
||||||
|
// delete odf_frames where exists ( select id from odf_racks where roomid=1 and id=odf_frames.RackId )
|
||||||
|
//删除机房下所有的框
|
||||||
|
var deletedCount = await _OdfFramesService.AsDeleteable()
|
||||||
|
.Where(f => SqlFunc.Subqueryable<OdfRacks>()
|
||||||
|
.Where(r => r.RoomId == room.Id && r.Id == f.RackId)
|
||||||
|
.Any())
|
||||||
|
.ExecuteCommandAsync();
|
||||||
|
|
||||||
|
//删除机房下所有的机架
|
||||||
|
await _OdfRacksService.AsDeleteable().Where(it => it.RoomId == room.Id).ExecuteCommandAsync();
|
||||||
|
|
||||||
|
_OdfRoomsService.Delete(room.Id, "删除机房");
|
||||||
|
}
|
||||||
|
else if (treeDto.Level == 3)
|
||||||
|
{
|
||||||
|
var racks = _OdfRacksService.GetById(treeDto.RacksId);
|
||||||
|
if (racks == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "删除失败");
|
||||||
|
}
|
||||||
|
//删除机房下的所有端口
|
||||||
|
await _OdfPortsService.AsDeleteable().Where(it => it.RackId == racks.Id).ExecuteCommandAsync();
|
||||||
|
//删除机房下所有的框
|
||||||
|
var deletedCount = await _OdfFramesService.AsDeleteable().Where(it => it.RackId == racks.Id).ExecuteCommandAsync();
|
||||||
|
//删除机架
|
||||||
|
_OdfRacksService.Delete(racks);
|
||||||
|
}
|
||||||
|
else if (treeDto.Level == 4)
|
||||||
|
{
|
||||||
|
var frames = _OdfFramesService.GetById(treeDto.FramesId);
|
||||||
|
if (frames == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "删除失败");
|
||||||
|
}
|
||||||
|
//删除机房下的所有端口
|
||||||
|
await _OdfPortsService.AsDeleteable().Where(it => it.FrameId == frames.Id).ExecuteCommandAsync();
|
||||||
|
_OdfFramesService.Delete(frames);
|
||||||
|
}
|
||||||
|
return SUCCESS(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
283
ZR.Admin.WebApi/Controllers/Business/OdfRacksController.cs
Normal file
283
ZR.Admin.WebApi/Controllers/Business/OdfRacksController.cs
Normal file
|
|
@ -0,0 +1,283 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
using MiniExcelLibs;
|
||||||
|
using ZR.Service.Business;
|
||||||
|
|
||||||
|
//创建时间:2025-08-05
|
||||||
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表
|
||||||
|
/// </summary>
|
||||||
|
[Route("business/OdfRacks")]
|
||||||
|
public class OdfRacksController : BaseController
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRacksService _OdfRacksService;
|
||||||
|
private readonly IOdfRoomsService _odfRooms;
|
||||||
|
/// <summary>
|
||||||
|
/// 框
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfFramesService _OdfFramesService;
|
||||||
|
/// <summary>
|
||||||
|
/// 端口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfPortsService _OdfPortsService;
|
||||||
|
|
||||||
|
public OdfRacksController(IOdfRacksService OdfRacksService, IOdfRoomsService odfRooms,
|
||||||
|
IOdfFramesService odfFramesService,
|
||||||
|
IOdfPortsService odfPortsService)
|
||||||
|
{
|
||||||
|
_OdfRacksService = OdfRacksService;
|
||||||
|
_odfRooms = odfRooms;
|
||||||
|
_OdfFramesService = odfFramesService;
|
||||||
|
_OdfPortsService = odfPortsService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机架列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("list")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:list")]
|
||||||
|
public IActionResult QueryOdfRacks([FromQuery] OdfRacksQueryDto parm)
|
||||||
|
{
|
||||||
|
var response = _OdfRacksService.GetList(parm);
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机架列表详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{Id}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:query")]
|
||||||
|
public IActionResult GetOdfRacks(int Id)
|
||||||
|
{
|
||||||
|
var response = _OdfRacksService.GetInfo(Id);
|
||||||
|
|
||||||
|
var info = response.Adapt<OdfRacksDto>();
|
||||||
|
return SUCCESS(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:add")]
|
||||||
|
[Log(Title = "机架列表", BusinessType = BusinessType.INSERT)]
|
||||||
|
public IActionResult AddOdfRacks([FromBody] OdfRacksDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfRacks>().ToCreate(HttpContext);
|
||||||
|
if (modal.RoomId > 0)
|
||||||
|
{
|
||||||
|
var rooms = _odfRooms.GetById(modal.RoomId);
|
||||||
|
if (rooms == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "机房不存在");
|
||||||
|
}
|
||||||
|
modal.DeptId = rooms.DeptId ?? 0;
|
||||||
|
}
|
||||||
|
var response = _OdfRacksService.AddOdfRacks(modal);
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("expert")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:add")]
|
||||||
|
[Log(Title = "机架列表", BusinessType = BusinessType.INSERT)]
|
||||||
|
public async Task<IActionResult> AddOdfRacksExpert([FromBody] OdfRacksExpertDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfRacks>().ToCreate(HttpContext);
|
||||||
|
|
||||||
|
if (modal.RoomId == 0)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "机房不存在");
|
||||||
|
|
||||||
|
}
|
||||||
|
var rooms = _odfRooms.GetById(modal.RoomId);
|
||||||
|
if (rooms == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "机房不存在");
|
||||||
|
}
|
||||||
|
modal.DeptId = rooms.DeptId ?? 0;
|
||||||
|
modal.FrameCount = parm.FramesCount;
|
||||||
|
var response = _OdfRacksService.AddOdfRacks(modal);
|
||||||
|
var roomId = rooms.Id;
|
||||||
|
var roomName = rooms.RoomName;
|
||||||
|
|
||||||
|
if (parm.FramesCount > 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
//添加机框
|
||||||
|
List<OdfFrames> framesList = new List<OdfFrames>();
|
||||||
|
var rack = response;
|
||||||
|
for (int i = 0; i < parm.FramesCount; i++)
|
||||||
|
{
|
||||||
|
var t = await _OdfFramesService.InsertReturnEntityAsync(new OdfFrames()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdateAt = DateTime.Now,
|
||||||
|
PortsCol = parm.PortsCount,
|
||||||
|
PortsCount = parm.PortsCount,
|
||||||
|
DeptId = rack.DeptId,
|
||||||
|
PortsRow = parm.PortsCount,
|
||||||
|
PortsName = $"{(i + 1)}框",
|
||||||
|
RackId = rack.Id,
|
||||||
|
SequenceNumber = i + 1
|
||||||
|
});
|
||||||
|
framesList.Add(t);
|
||||||
|
}
|
||||||
|
//添加机框结束
|
||||||
|
if (parm.RowCount > 0)
|
||||||
|
{
|
||||||
|
//添加行
|
||||||
|
if (parm.PortsCount > 0)
|
||||||
|
{
|
||||||
|
int index = 0;
|
||||||
|
//添加端口
|
||||||
|
foreach (var frame in framesList)
|
||||||
|
{
|
||||||
|
var ra = rack;
|
||||||
|
if (ra == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<OdfPorts> ports = new List<OdfPorts>();
|
||||||
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
|
{
|
||||||
|
for (int port = 0; port < parm.PortsCount; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = rooms.DeptId ?? 0,
|
||||||
|
DeptName = rooms.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 = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
//如果超过100个机框,则休眠一下,防止服务器死机
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:edit")]
|
||||||
|
[Log(Title = "机架列表", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public IActionResult UpdateOdfRacks([FromBody] OdfRacksDto parm)
|
||||||
|
{
|
||||||
|
var modal = parm.Adapt<OdfRacks>().ToUpdate(HttpContext);
|
||||||
|
var response = _OdfRacksService.UpdateOdfRacks(modal);
|
||||||
|
|
||||||
|
return ToResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("delete/{ids}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:delete")]
|
||||||
|
[Log(Title = "机架列表", BusinessType = BusinessType.DELETE)]
|
||||||
|
public IActionResult DeleteOdfRacks([FromRoute] string ids)
|
||||||
|
{
|
||||||
|
var idArr = Tools.SplitAndConvert<int>(ids);
|
||||||
|
|
||||||
|
return ToResponse(_OdfRacksService.Delete(idArr, "删除机架列表"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Log(Title = "机架列表", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[HttpGet("export")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:export")]
|
||||||
|
public IActionResult Export([FromQuery] OdfRacksQueryDto parm)
|
||||||
|
{
|
||||||
|
var list = _OdfRacksService.ExportList(parm).Result;
|
||||||
|
if (list == null || list.Count <= 0)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "没有要导出的数据");
|
||||||
|
}
|
||||||
|
var result = ExportExcelMini(list, "机架列表", "机架列表");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="formFile"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("importData")]
|
||||||
|
[Log(Title = "机架列表导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
||||||
|
[ActionPermissionFilter(Permission = "odfracks:import")]
|
||||||
|
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
||||||
|
{
|
||||||
|
List<OdfRacksDto> list = new();
|
||||||
|
using (var stream = formFile.OpenReadStream())
|
||||||
|
{
|
||||||
|
list = stream.Query<OdfRacksDto>(startCell: "A1").ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(_OdfRacksService.ImportOdfRacks(list.Adapt<List<OdfRacks>>()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表导入模板下载
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("importTemplate")]
|
||||||
|
[Log(Title = "机架列表模板", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult ImportTemplateExcel()
|
||||||
|
{
|
||||||
|
var result = DownloadImportTemplate(new List<OdfRacksDto>() { }, "OdfRacks");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
482
ZR.Admin.WebApi/Controllers/Business/OdfRoomsController.cs
Normal file
482
ZR.Admin.WebApi/Controllers/Business/OdfRoomsController.cs
Normal file
|
|
@ -0,0 +1,482 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
using MiniExcelLibs;
|
||||||
|
using ZR.ServiceCore.Services;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ZR.Service.Business;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
//创建时间:2025-08-05
|
||||||
|
namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表
|
||||||
|
/// </summary>
|
||||||
|
[Route("business/OdfRooms")]
|
||||||
|
public class OdfRoomsController : BaseController
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRoomsService _OdfRoomsService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门接口
|
||||||
|
/// </summary>
|
||||||
|
private readonly ISysDeptService sysDeptService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
private readonly ISysUserService _SysUserService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///机架
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfRacksService _OdfRacksService;
|
||||||
|
/// <summary>
|
||||||
|
/// 框
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfFramesService _OdfFramesService;
|
||||||
|
/// <summary>
|
||||||
|
/// 端口
|
||||||
|
/// </summary>
|
||||||
|
private readonly IOdfPortsService _OdfPortsService;
|
||||||
|
|
||||||
|
public OdfRoomsController(IOdfRoomsService OdfRoomsService,
|
||||||
|
ISysDeptService sysDeptService,
|
||||||
|
ISysUserService sysUserService,
|
||||||
|
IOdfPortsService odfPortsService,
|
||||||
|
IOdfFramesService odfFramesService,
|
||||||
|
IOdfRacksService odfRacksService)
|
||||||
|
{
|
||||||
|
_OdfRoomsService = OdfRoomsService;
|
||||||
|
this.sysDeptService = sysDeptService;
|
||||||
|
_SysUserService = sysUserService;
|
||||||
|
_OdfPortsService = odfPortsService;
|
||||||
|
_OdfFramesService = odfFramesService;
|
||||||
|
_OdfRacksService = odfRacksService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机房列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("list")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:list")]
|
||||||
|
public IActionResult QueryOdfRooms([FromQuery] OdfRoomsQueryDto parm)
|
||||||
|
{
|
||||||
|
//long userId = HttpContext.GetUId();
|
||||||
|
//var user = _SysUserService.SelectUserById(userId);
|
||||||
|
////user.RoleIds
|
||||||
|
//if (!user.IsAdmin && user.Roles.Any(it => it.DataScope == 4))
|
||||||
|
//{
|
||||||
|
// //user.DeptId;
|
||||||
|
// //parm.DeptIds = user.DeptIds;
|
||||||
|
//}
|
||||||
|
//else if (!user.IsAdmin && user.Roles.Any(it => it.DataScope == 3))
|
||||||
|
//{
|
||||||
|
// parm.DeptIds = new List<long>() { user.DeptId };
|
||||||
|
//}
|
||||||
|
var response = _OdfRoomsService.GetList(parm);
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机房列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("tree")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:list")]
|
||||||
|
public IActionResult GetTreeList([FromQuery] OdfRoomsTreeQueryDto parm)
|
||||||
|
{
|
||||||
|
List<OdfRoomsTreeDto> list = new List<OdfRoomsTreeDto>();
|
||||||
|
if (parm.Level == 1)
|
||||||
|
{
|
||||||
|
var response = _OdfRoomsService.GetList(parm);
|
||||||
|
response.ForEach(it =>
|
||||||
|
{
|
||||||
|
list.Add(new OdfRoomsTreeDto
|
||||||
|
{
|
||||||
|
Key = it.Id.ToString(),
|
||||||
|
Id = it.Id.ToString(),
|
||||||
|
Name = it.RoomName,
|
||||||
|
DeptId = it.DeptId ?? 0,
|
||||||
|
Level = 2,
|
||||||
|
Leaf = false,
|
||||||
|
RoomId = it.Id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (parm.Level == 2)
|
||||||
|
{
|
||||||
|
var response = _OdfRacksService.AsQueryable().Where(it => it.RoomId == parm.RoomId).OrderBy(it => it.SequenceNumber).ToList();
|
||||||
|
response.ForEach(it =>
|
||||||
|
{
|
||||||
|
list.Add(new OdfRoomsTreeDto
|
||||||
|
{
|
||||||
|
Key = parm.RoomId + "_" + it.Id.ToString(),
|
||||||
|
Id = parm.RoomId + "_" + it.Id.ToString(),
|
||||||
|
Name = it.RackName,
|
||||||
|
DeptId = it.DeptId,
|
||||||
|
Level = 3,
|
||||||
|
Leaf = false,
|
||||||
|
RoomId = parm.RoomId,
|
||||||
|
RacksId = it.Id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (parm.Level == 3)
|
||||||
|
{
|
||||||
|
var response = _OdfFramesService.AsQueryable().Where(it => it.RackId == parm.RacksId).OrderBy(it => it.SequenceNumber).ToList();
|
||||||
|
response.ForEach(it =>
|
||||||
|
{
|
||||||
|
list.Add(new OdfRoomsTreeDto
|
||||||
|
{
|
||||||
|
Key = parm.RoomId + "_" + parm.RacksId + "_" + it.Id.ToString(),
|
||||||
|
Id = parm.RoomId + "_" + parm.RacksId + "_" + it.Id.ToString(),
|
||||||
|
Name = it.PortsName,
|
||||||
|
DeptId = it.DeptId ?? 0,
|
||||||
|
Level = 4,
|
||||||
|
Leaf = true,
|
||||||
|
RoomId = parm.RoomId,
|
||||||
|
RacksId = parm.RacksId,
|
||||||
|
FramesId = it.Id,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return SUCCESS(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机房列表详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{Id}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:query")]
|
||||||
|
public IActionResult GetOdfRooms(int Id)
|
||||||
|
{
|
||||||
|
var response = _OdfRoomsService.GetInfo(Id);
|
||||||
|
|
||||||
|
var info = response.Adapt<OdfRoomsDto>();
|
||||||
|
return SUCCESS(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:add")]
|
||||||
|
[Log(Title = "机房列表", BusinessType = BusinessType.INSERT)]
|
||||||
|
public async Task<IActionResult> AddOdfRooms([FromBody] OdfRoomsDto parm)
|
||||||
|
{
|
||||||
|
parm.CreatedAt = DateTime.Now;
|
||||||
|
parm.UpdatedAt = DateTime.Now;
|
||||||
|
if (parm.DeptId == 0)
|
||||||
|
{
|
||||||
|
parm.DeptName = "未知部门";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dept = await sysDeptService.AsQueryable().Where(it => it.DeptId == parm.DeptId).FirstAsync();
|
||||||
|
if (dept == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.CUSTOM_ERROR, "部门不存在,请选择正确的部门!");
|
||||||
|
}
|
||||||
|
//var dept = _DeptService.GetInfo(parm.DeptId);
|
||||||
|
parm.DeptName = dept.DeptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
var modal = parm.Adapt<OdfRooms>().ToCreate(HttpContext);
|
||||||
|
var response = _OdfRoomsService.AddOdfRooms(modal);
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("expert")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:add")]
|
||||||
|
[Log(Title = "机房列表", BusinessType = BusinessType.INSERT)]
|
||||||
|
public async Task<IActionResult> AddExpertOdfRooms([FromBody] OdfRoomsExpertDto parm)
|
||||||
|
{
|
||||||
|
parm.CreatedAt = DateTime.Now;
|
||||||
|
parm.UpdatedAt = DateTime.Now;
|
||||||
|
if (parm.DeptId == 0)
|
||||||
|
{
|
||||||
|
parm.DeptName = "未知部门";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dept = await sysDeptService.AsQueryable().Where(it => it.DeptId == parm.DeptId).FirstAsync();
|
||||||
|
if (dept == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.CUSTOM_ERROR, "部门不存在,请选择正确的部门!");
|
||||||
|
}
|
||||||
|
//var dept = _DeptService.GetInfo(parm.DeptId);
|
||||||
|
parm.DeptName = dept.DeptName;
|
||||||
|
}
|
||||||
|
|
||||||
|
var modal = parm.Adapt<OdfRooms>().ToCreate(HttpContext);
|
||||||
|
modal.DeptId = parm.DeptId;
|
||||||
|
modal.DeptName = parm.DeptName;
|
||||||
|
var response = _OdfRoomsService.AddOdfRooms(modal);
|
||||||
|
if (parm.RacksCount > 0)
|
||||||
|
{
|
||||||
|
var roomId = response.Id;
|
||||||
|
var roomName = response.RoomName;
|
||||||
|
List<OdfRacks> racksList = new List<OdfRacks>();
|
||||||
|
//添加机架
|
||||||
|
for (int i = 0; i < parm.RacksCount; i++)
|
||||||
|
{
|
||||||
|
var t = await _OdfRacksService.InsertReturnEntityAsync(new OdfRacks
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
FrameCount = parm.FramesCount,
|
||||||
|
DeptId = response.DeptId ?? 0,
|
||||||
|
RackName = $"odf-{(i + 1)}",
|
||||||
|
RoomId = roomId,
|
||||||
|
SequenceNumber = i + 1,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
}); // 直接插入机架
|
||||||
|
racksList.Add(t);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//机架添加完成
|
||||||
|
//return Insertable(model).ExecuteReturnEntity();
|
||||||
|
if (parm.FramesCount > 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
//添加机框
|
||||||
|
List<OdfFrames> framesList = new List<OdfFrames>();
|
||||||
|
|
||||||
|
foreach (var rack in racksList)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < parm.FramesCount; i++)
|
||||||
|
{
|
||||||
|
var t = await _OdfFramesService.InsertReturnEntityAsync(new OdfFrames()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
UpdateAt = DateTime.Now,
|
||||||
|
PortsCol = parm.PortsCount,
|
||||||
|
PortsCount = parm.PortsCount,
|
||||||
|
DeptId = rack.DeptId,
|
||||||
|
PortsRow = parm.PortsCount,
|
||||||
|
PortsName = $"{(i + 1)}框",
|
||||||
|
RackId = rack.Id,
|
||||||
|
SequenceNumber = i + 1
|
||||||
|
});
|
||||||
|
framesList.Add(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加机框结束
|
||||||
|
if (parm.RowCount > 0)
|
||||||
|
{
|
||||||
|
//添加行
|
||||||
|
if (parm.PortsCount > 0)
|
||||||
|
{
|
||||||
|
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 < parm.RowCount; row++)
|
||||||
|
{
|
||||||
|
for (int port = 0; port < parm.PortsCount; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = frame.DeptId ?? 0,
|
||||||
|
DeptName = modal.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 = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
//如果超过100个机框,则休眠一下,防止服务器死机
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return SUCCESS(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPut]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:edit")]
|
||||||
|
[Log(Title = "机房列表", BusinessType = BusinessType.UPDATE)]
|
||||||
|
public async Task<IActionResult> UpdateOdfRooms([FromBody] OdfRoomsDto parm)
|
||||||
|
{
|
||||||
|
parm.UpdatedAt = DateTime.Now;
|
||||||
|
if (parm.DeptId == 0)
|
||||||
|
{
|
||||||
|
parm.DeptName = "未知部门";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dept = await sysDeptService.AsQueryable().Where(it => it.DeptId == parm.DeptId).FirstAsync();
|
||||||
|
if (dept == null)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.CUSTOM_ERROR, "部门不存在,请选择正确的部门!");
|
||||||
|
}
|
||||||
|
//var dept = _DeptService.GetInfo(parm.DeptId);
|
||||||
|
parm.DeptName = dept.DeptName;
|
||||||
|
}
|
||||||
|
var oldModel = _OdfRoomsService.GetById(parm.Id);
|
||||||
|
var modal = parm.Adapt<OdfRooms>().ToUpdate(HttpContext);
|
||||||
|
var response = _OdfRoomsService.UpdateOdfRooms(modal);
|
||||||
|
if (response > 0)
|
||||||
|
{
|
||||||
|
if (oldModel.DeptId != modal.DeptId)
|
||||||
|
{
|
||||||
|
var deptId = modal.DeptId ?? 0;
|
||||||
|
var deptName = modal.DeptName;
|
||||||
|
var roomId = oldModel.Id;
|
||||||
|
// 最直接的转换
|
||||||
|
await _OdfPortsService.UpdateAsync(
|
||||||
|
it => it.RoomId == roomId, // WHERE条件
|
||||||
|
it => new OdfPorts // SET部分
|
||||||
|
{
|
||||||
|
DeptId = deptId,
|
||||||
|
DeptName = deptName
|
||||||
|
}
|
||||||
|
);
|
||||||
|
// 1. 更新 odf_racks
|
||||||
|
var racksUpdated = await _OdfRacksService.UpdateAsync(
|
||||||
|
r => r.RoomId == roomId,
|
||||||
|
r => new OdfRacks { DeptId = deptId }
|
||||||
|
);
|
||||||
|
|
||||||
|
// 2. 更新 odf_frames(方法1:子查询)
|
||||||
|
var framesUpdated = await _OdfFramesService.UpdateAsync(
|
||||||
|
f => SqlFunc.Subqueryable<OdfRacks>()
|
||||||
|
.Where(r => r.RoomId == roomId && r.Id == f.RackId)
|
||||||
|
.Any(),
|
||||||
|
f => new OdfFrames { DeptId = deptId }
|
||||||
|
);
|
||||||
|
// update odf_frames f set DeptId=0 where RackId exists ( select id from odf_racks where roomid=1 and id=f.RackId )
|
||||||
|
// update odf_racks set DeptId=0 where roomid=1
|
||||||
|
//_OdfFramesService
|
||||||
|
//_OdfRacksService
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ToResponse(response);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("delete/{ids}")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:delete")]
|
||||||
|
[Log(Title = "机房列表", BusinessType = BusinessType.DELETE)]
|
||||||
|
public IActionResult DeleteOdfRooms([FromRoute] string ids)
|
||||||
|
{
|
||||||
|
var idArr = Tools.SplitAndConvert<int>(ids);
|
||||||
|
|
||||||
|
return ToResponse(_OdfRoomsService.Delete(idArr, "删除机房列表"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Log(Title = "机房列表", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[HttpGet("export")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:export")]
|
||||||
|
public IActionResult Export([FromQuery] OdfRoomsQueryDto parm)
|
||||||
|
{
|
||||||
|
var list = _OdfRoomsService.ExportList(parm).Result;
|
||||||
|
if (list == null || list.Count <= 0)
|
||||||
|
{
|
||||||
|
return ToResponse(ResultCode.FAIL, "没有要导出的数据");
|
||||||
|
}
|
||||||
|
var result = ExportExcelMini(list, "机房列表", "机房列表");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="formFile"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("importData")]
|
||||||
|
[Log(Title = "机房列表导入", BusinessType = BusinessType.IMPORT, IsSaveRequestData = false)]
|
||||||
|
[ActionPermissionFilter(Permission = "odfrooms:import")]
|
||||||
|
public IActionResult ImportData([FromForm(Name = "file")] IFormFile formFile)
|
||||||
|
{
|
||||||
|
List<OdfRoomsDto> list = new();
|
||||||
|
using (var stream = formFile.OpenReadStream())
|
||||||
|
{
|
||||||
|
list = stream.Query<OdfRoomsDto>(startCell: "A1").ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(_OdfRoomsService.ImportOdfRooms(list.Adapt<List<OdfRooms>>()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表导入模板下载
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("importTemplate")]
|
||||||
|
[Log(Title = "机房列表模板", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult ImportTemplateExcel()
|
||||||
|
{
|
||||||
|
var result = DownloadImportTemplate(new List<OdfRoomsDto>() { }, "OdfRooms");
|
||||||
|
return ExportExcel(result.Item2, result.Item1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
using Lazy.Captcha.Core;
|
using Lazy.Captcha.Core;
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
using ZR.Model.Models;
|
using ZR.Model.Models;
|
||||||
using ZR.Model.System;
|
using ZR.Model.System;
|
||||||
using ZR.Model.System.Dto;
|
using ZR.Model.System.Dto;
|
||||||
|
|
@ -67,8 +69,8 @@ namespace ZR.Admin.WebApi.Controllers.System
|
||||||
|
|
||||||
List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.UserId);
|
List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.UserId);
|
||||||
//权限集合 eg *:*:*,system:user:list
|
//权限集合 eg *:*:*,system:user:list
|
||||||
List<string> permissions = permissionService.GetMenuPermission(new SysUserDto() { UserId = user.UserId});
|
List<string> permissions = permissionService.GetMenuPermission(new SysUserDto() { UserId = user.UserId });
|
||||||
|
|
||||||
TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>())
|
TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>())
|
||||||
{
|
{
|
||||||
TenantId = loginBody.TenantId,
|
TenantId = loginBody.TenantId,
|
||||||
|
|
@ -78,6 +80,39 @@ namespace ZR.Admin.WebApi.Controllers.System
|
||||||
return SUCCESS(JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser)));
|
return SUCCESS(JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 登录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="loginBody">登录对象</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Route("appLogin")]
|
||||||
|
[HttpPost]
|
||||||
|
[Log(Title = "登录")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public IActionResult AppLogin([FromBody] LoginBodyDto loginBody)
|
||||||
|
{
|
||||||
|
if (loginBody == null) { throw new CustomException("请求参数错误"); }
|
||||||
|
loginBody.LoginIP = HttpContextExtension.GetClientUserIp(HttpContext);
|
||||||
|
|
||||||
|
sysLoginService.CheckLockUser(loginBody.Username);
|
||||||
|
string location = HttpContextExtension.GetIpInfo(loginBody.LoginIP);
|
||||||
|
var user = sysLoginService.Login(loginBody, new SysLogininfor() { LoginLocation = location });
|
||||||
|
|
||||||
|
List<SysRole> roles = roleService.SelectUserRoleListByUserId(user.UserId);
|
||||||
|
//权限集合 eg *:*:*,system:user:list
|
||||||
|
List<string> permissions = permissionService.GetMenuPermission(new SysUserDto() { UserId = user.UserId });
|
||||||
|
|
||||||
|
TokenModel loginUser = new(user.Adapt<TokenModel>(), roles.Adapt<List<Roles>>())
|
||||||
|
{
|
||||||
|
TenantId = loginBody.TenantId,
|
||||||
|
Permissions = permissions,
|
||||||
|
};
|
||||||
|
//CacheService.SetUserPerms(GlobalConstant.UserPermKEY + user.UserId, permissions);
|
||||||
|
var jwt = JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser));
|
||||||
|
return SUCCESS(new { jwt, user.UserId, user.UserName });
|
||||||
|
}
|
||||||
|
//
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 注销
|
/// 注销
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -103,7 +138,7 @@ namespace ZR.Admin.WebApi.Controllers.System
|
||||||
{
|
{
|
||||||
long userId = HttpContext.GetUId();
|
long userId = HttpContext.GetUId();
|
||||||
var user = sysUserService.SelectUserById(userId);
|
var user = sysUserService.SelectUserById(userId);
|
||||||
|
|
||||||
//前端校验按钮权限使用
|
//前端校验按钮权限使用
|
||||||
//角色集合 eg: admin,yunying,common
|
//角色集合 eg: admin,yunying,common
|
||||||
List<string> roles = permissionService.GetRolePermission(user);
|
List<string> roles = permissionService.GetRolePermission(user);
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@
|
||||||
"Issuer": "ZRAdmin.NET", //即token的签发者。
|
"Issuer": "ZRAdmin.NET", //即token的签发者。
|
||||||
"Audience": "ZRAdmin.NET", //指该token是服务于哪个群体的(群体范围)
|
"Audience": "ZRAdmin.NET", //指该token是服务于哪个群体的(群体范围)
|
||||||
"SecretKey": "SecretKey-ZRADMIN.NET-202311281883838",
|
"SecretKey": "SecretKey-ZRADMIN.NET-202311281883838",
|
||||||
"Expire": 1440, //jwt登录过期时间(分)
|
"Expire": 60, //jwt登录过期时间(分)
|
||||||
"RefreshTokenTime": 30, //分钟
|
"RefreshTokenTime": 7200, //分钟
|
||||||
"TokenType": "Bearer"
|
"TokenType": "Bearer"
|
||||||
},
|
},
|
||||||
"MainDb": "0", // 多租户主库配置ID
|
"MainDb": "0", // 多租户主库配置ID
|
||||||
|
|
|
||||||
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/OdfRooms.xlsx
Normal file
BIN
ZR.Admin.WebApi/wwwroot/ImportTemplate/OdfRooms.xlsx
Normal file
Binary file not shown.
61
ZR.Model/Business/Dto/OdfFramesDto.cs
Normal file
61
ZR.Model/Business/Dto/OdfFramesDto.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business.Dto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息查询对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfFramesQueryDto : PagerInfo
|
||||||
|
{
|
||||||
|
public int? RackId { get; set; }
|
||||||
|
public string PortsName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfFramesDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "Id不能为空")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "ODF机架ID不能为空")]
|
||||||
|
public int RackId { get; set; }
|
||||||
|
|
||||||
|
public string PortsName { get; set; }
|
||||||
|
|
||||||
|
public long? DeptId { get; set; }
|
||||||
|
|
||||||
|
public int? SequenceNumber { get; set; }
|
||||||
|
|
||||||
|
public int? PortsCount { get; set; }
|
||||||
|
|
||||||
|
public int? PortsCol { get; set; }
|
||||||
|
|
||||||
|
public int? PortsRow { get; set; }
|
||||||
|
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
public DateTime? UpdateAt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OdfFramesExpertDto : OdfFramesDto
|
||||||
|
{
|
||||||
|
public int RoomId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 行数
|
||||||
|
/// </summary>
|
||||||
|
public int RowCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 端口数量
|
||||||
|
/// </summary>
|
||||||
|
public int PortsCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public int DefaultStatus { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
190
ZR.Model/Business/Dto/OdfPortsDto.cs
Normal file
190
ZR.Model/Business/Dto/OdfPortsDto.cs
Normal file
|
|
@ -0,0 +1,190 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business.Dto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口查询对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfPortsQueryDto : PagerInfo
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public long? DeptId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 历史故障记录
|
||||||
|
/// </summary>
|
||||||
|
public string HistoryRemarks { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房id
|
||||||
|
/// </summary>
|
||||||
|
public int? RoomId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 机架id
|
||||||
|
/// </summary>
|
||||||
|
public int? RacksId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 框id
|
||||||
|
/// </summary>
|
||||||
|
public int? FramesId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OdfPortsMQueryDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房id
|
||||||
|
/// </summary>
|
||||||
|
public int? RoomId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架id
|
||||||
|
/// </summary>
|
||||||
|
public int? RackId { get; set; }
|
||||||
|
}
|
||||||
|
public class OdfPortsMListDto
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
public List<OdfPortsMDto> odfPortsList { get; set; } = new List<OdfPortsMDto>();
|
||||||
|
}
|
||||||
|
public class OdfPortsMDto
|
||||||
|
{
|
||||||
|
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int Status { get; set; }
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 端口输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfPortsDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "Id不能为空")]
|
||||||
|
[ExcelColumn(Name = "Id")]
|
||||||
|
[ExcelColumnName("Id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "端口名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "端口名称")]
|
||||||
|
[ExcelColumnName("端口名称")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房ID不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房ID")]
|
||||||
|
[ExcelColumnName("机房ID")]
|
||||||
|
public int RoomId { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房名称")]
|
||||||
|
[ExcelColumnName("机房名称")]
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机架ID不能为空")]
|
||||||
|
[ExcelColumn(Name = "机架ID")]
|
||||||
|
[ExcelColumnName("机架ID")]
|
||||||
|
public int RackId { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机架名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机架名称")]
|
||||||
|
[ExcelColumnName("机架名称")]
|
||||||
|
public string RackName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "框ID不能为空")]
|
||||||
|
[ExcelColumn(Name = "框ID")]
|
||||||
|
[ExcelColumnName("框ID")]
|
||||||
|
public int FrameId { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "框名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "框名称")]
|
||||||
|
[ExcelColumnName("框名称")]
|
||||||
|
public string FrameName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "部门ID不能为空")]
|
||||||
|
[ExcelColumn(Name = "部门ID")]
|
||||||
|
[ExcelColumnName("部门ID")]
|
||||||
|
public long DeptId { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "行号(1-6)不能为空")]
|
||||||
|
[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 = "连接状态,0正常,1断开")]
|
||||||
|
[ExcelColumnName("连接状态,0正常,1断开")]
|
||||||
|
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; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "创建时间不能为空")]
|
||||||
|
[ExcelColumn(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("创建时间")]
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "修改时间不能为空")]
|
||||||
|
[ExcelColumn(Name = "修改时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("修改时间")]
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "连接状态,0正常,1断开")]
|
||||||
|
public string StatusLabel { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门名称
|
||||||
|
/// </summary>
|
||||||
|
[ExcelColumn(Name = "部门名称")]
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfPortsMMDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "Id不能为空")]
|
||||||
|
[ExcelColumn(Name = "Id")]
|
||||||
|
[ExcelColumnName("Id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public int Status { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
public string OpticalAttenuation { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "历史故障表")]
|
||||||
|
[ExcelColumnName("历史故障表")]
|
||||||
|
public string HistoryRemarks { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
76
ZR.Model/Business/Dto/OdfRacksDto.cs
Normal file
76
ZR.Model/Business/Dto/OdfRacksDto.cs
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business.Dto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表查询对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRacksQueryDto : PagerInfo
|
||||||
|
{
|
||||||
|
public int? RoomId { get; set; }
|
||||||
|
public string RackName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRacksDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "Id不能为空")]
|
||||||
|
[ExcelColumn(Name = "Id")]
|
||||||
|
[ExcelColumnName("Id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房")]
|
||||||
|
[ExcelColumnName("机房")]
|
||||||
|
public int RoomId { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "序号不能为空")]
|
||||||
|
[ExcelColumn(Name = "序号")]
|
||||||
|
[ExcelColumnName("序号")]
|
||||||
|
public int SequenceNumber { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "ODF名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "ODF名称")]
|
||||||
|
[ExcelColumnName("ODF名称")]
|
||||||
|
public string RackName { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "框数量(固定9框)")]
|
||||||
|
[ExcelColumnName("框数量(固定9框)")]
|
||||||
|
public int? FrameCount { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "CreatedAt", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("CreatedAt")]
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "UpdatedAt", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("UpdatedAt")]
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class OdfRacksExpertDto : OdfRacksDto
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机框数量
|
||||||
|
/// </summary>
|
||||||
|
public int FramesCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 行数
|
||||||
|
/// </summary>
|
||||||
|
public int RowCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 端口数量
|
||||||
|
/// </summary>
|
||||||
|
public int PortsCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public int DefaultStatus { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
137
ZR.Model/Business/Dto/OdfRoomsDto.cs
Normal file
137
ZR.Model/Business/Dto/OdfRoomsDto.cs
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business.Dto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表查询对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsQueryDto : PagerInfo
|
||||||
|
{
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
public string RoomAddress { get; set; }
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
public List<long> DeptIds { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表查询对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsTreeQueryDto : PagerInfo
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public int? DeptId { get; set; }
|
||||||
|
public int Level { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房id
|
||||||
|
/// </summary>
|
||||||
|
public int? RoomId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 机架id
|
||||||
|
/// </summary>
|
||||||
|
public int? RacksId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 框id
|
||||||
|
/// </summary>
|
||||||
|
public int? FramesId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房树结构
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsTreeDto
|
||||||
|
{
|
||||||
|
public string Key { get; set; }
|
||||||
|
public string Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public long DeptId { get; set; }
|
||||||
|
public int Level { get; set; }
|
||||||
|
public bool Leaf { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 机房id
|
||||||
|
/// </summary>
|
||||||
|
public int? RoomId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 机架id
|
||||||
|
/// </summary>
|
||||||
|
public int? RacksId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 框id
|
||||||
|
/// </summary>
|
||||||
|
public int? FramesId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表输入输出对象
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "Id不能为空")]
|
||||||
|
[ExcelColumn(Name = "Id")]
|
||||||
|
[ExcelColumnName("Id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "部门ID")]
|
||||||
|
[ExcelColumnName("部门ID")]
|
||||||
|
public long? DeptId { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "部门名称")]
|
||||||
|
[ExcelColumnName("部门名称")]
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房名称不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房名称")]
|
||||||
|
[ExcelColumnName("机房名称")]
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
[Required(ErrorMessage = "机房位置不能为空")]
|
||||||
|
[ExcelColumn(Name = "机房位置")]
|
||||||
|
[ExcelColumnName("机房位置")]
|
||||||
|
public string RoomAddress { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "机架数量")]
|
||||||
|
[ExcelColumnName("机架数量")]
|
||||||
|
public int? RacksCount { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "备注")]
|
||||||
|
[ExcelColumnName("备注")]
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "创建时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("创建时间")]
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
[ExcelColumn(Name = "修改时间", Format = "yyyy-MM-dd HH:mm:ss", Width = 20)]
|
||||||
|
[ExcelColumnName("修改时间")]
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class OdfRoomsExpertDto : OdfRoomsDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机框数量
|
||||||
|
/// </summary>
|
||||||
|
public int FramesCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 行数
|
||||||
|
/// </summary>
|
||||||
|
public int RowCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 端口数量
|
||||||
|
/// </summary>
|
||||||
|
public int PortsCount { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public int DefaultStatus { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
62
ZR.Model/Business/OdfFrames.cs
Normal file
62
ZR.Model/Business/OdfFrames.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("odf_frames")]
|
||||||
|
public class OdfFrames
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ODF机架ID
|
||||||
|
/// </summary>
|
||||||
|
public int RackId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 名称
|
||||||
|
/// </summary>
|
||||||
|
public string PortsName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 所属部门
|
||||||
|
/// </summary>
|
||||||
|
public long? DeptId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 序号
|
||||||
|
/// </summary>
|
||||||
|
public int? SequenceNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口数量
|
||||||
|
/// </summary>
|
||||||
|
public int? PortsCount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 列数量
|
||||||
|
/// </summary>
|
||||||
|
public int? PortsCol { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 行数量
|
||||||
|
/// </summary>
|
||||||
|
public int? PortsRow { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdateAt { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
102
ZR.Model/Business/OdfPorts.cs
Normal file
102
ZR.Model/Business/OdfPorts.cs
Normal file
|
|
@ -0,0 +1,102 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("odf_ports")]
|
||||||
|
public class OdfPorts
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口名称
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房ID
|
||||||
|
/// </summary>
|
||||||
|
public int RoomId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房名称
|
||||||
|
/// </summary>
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架ID
|
||||||
|
/// </summary>
|
||||||
|
public int RackId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架名称
|
||||||
|
/// </summary>
|
||||||
|
public string RackName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 框ID
|
||||||
|
/// </summary>
|
||||||
|
public int FrameId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 框名称
|
||||||
|
/// </summary>
|
||||||
|
public string FrameName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门ID
|
||||||
|
/// </summary>
|
||||||
|
public long DeptId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门名称
|
||||||
|
/// </summary>
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 行号(1-6)
|
||||||
|
/// </summary>
|
||||||
|
public int RowNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口号(1-12)
|
||||||
|
/// </summary>
|
||||||
|
public int PortNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 连接状态,0正常,1断开
|
||||||
|
/// </summary>
|
||||||
|
public int Status { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 光衰值(dB)
|
||||||
|
/// </summary>
|
||||||
|
public string OpticalAttenuation { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 历史故障表
|
||||||
|
/// </summary>
|
||||||
|
public string HistoryRemarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
51
ZR.Model/Business/OdfRacks.cs
Normal file
51
ZR.Model/Business/OdfRacks.cs
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("odf_racks")]
|
||||||
|
public class OdfRacks
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房
|
||||||
|
/// </summary>
|
||||||
|
public int RoomId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 序号
|
||||||
|
/// </summary>
|
||||||
|
public int SequenceNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ODF名称
|
||||||
|
/// </summary>
|
||||||
|
public string RackName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 框数量(固定9框)
|
||||||
|
/// </summary>
|
||||||
|
public int? FrameCount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门
|
||||||
|
/// </summary>
|
||||||
|
public long DeptId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
57
ZR.Model/Business/OdfRooms.cs
Normal file
57
ZR.Model/Business/OdfRooms.cs
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
namespace ZR.Model.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表
|
||||||
|
/// </summary>
|
||||||
|
[SugarTable("odf_rooms")]
|
||||||
|
public class OdfRooms
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Id
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门ID
|
||||||
|
/// </summary>
|
||||||
|
public long? DeptId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 部门名称
|
||||||
|
/// </summary>
|
||||||
|
public string DeptName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房名称
|
||||||
|
/// </summary>
|
||||||
|
public string RoomName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机房位置
|
||||||
|
/// </summary>
|
||||||
|
public string RoomAddress { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 机架数量
|
||||||
|
/// </summary>
|
||||||
|
public int? RacksCount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 备注
|
||||||
|
/// </summary>
|
||||||
|
public string Remarks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? CreatedAt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -32,4 +32,31 @@ namespace ZR.Model.System.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TenantId { get; set; }
|
public string TenantId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LoginMBodyDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 用户名
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "用户名不能为空")]
|
||||||
|
public string Username { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用户密码
|
||||||
|
/// </summary>
|
||||||
|
[Required(ErrorMessage = "密码不能为空")]
|
||||||
|
public string Password { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 验证码
|
||||||
|
/// </summary>
|
||||||
|
public string Code { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 唯一标识
|
||||||
|
/// </summary>
|
||||||
|
public string Uuid { get; set; } = "";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
ZR.Service/Business/IBusinessService/IOdfFramesService.cs
Normal file
21
ZR.Service/Business/IBusinessService/IOdfFramesService.cs
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business.IBusinessService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息service接口
|
||||||
|
/// </summary>
|
||||||
|
public interface IOdfFramesService : IBaseService<OdfFrames>
|
||||||
|
{
|
||||||
|
PagedInfo<OdfFramesDto> GetList(OdfFramesQueryDto parm);
|
||||||
|
|
||||||
|
OdfFrames GetInfo(int Id);
|
||||||
|
|
||||||
|
|
||||||
|
OdfFrames AddOdfFrames(OdfFrames parm);
|
||||||
|
int UpdateOdfFrames(OdfFrames parm);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
23
ZR.Service/Business/IBusinessService/IOdfPortsService.cs
Normal file
23
ZR.Service/Business/IBusinessService/IOdfPortsService.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business.IBusinessService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口service接口
|
||||||
|
/// </summary>
|
||||||
|
public interface IOdfPortsService : IBaseService<OdfPorts>
|
||||||
|
{
|
||||||
|
PagedInfo<OdfPortsDto> GetList(OdfPortsQueryDto parm);
|
||||||
|
|
||||||
|
OdfPorts GetInfo(int Id);
|
||||||
|
|
||||||
|
|
||||||
|
OdfPorts AddOdfPorts(OdfPorts parm);
|
||||||
|
int UpdateOdfPorts(OdfPorts parm);
|
||||||
|
|
||||||
|
(string, object, object) ImportOdfPorts(List<OdfPorts> list);
|
||||||
|
|
||||||
|
PagedInfo<OdfPortsDto> ExportList(OdfPortsQueryDto parm);
|
||||||
|
}
|
||||||
|
}
|
||||||
23
ZR.Service/Business/IBusinessService/IOdfRacksService.cs
Normal file
23
ZR.Service/Business/IBusinessService/IOdfRacksService.cs
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business.IBusinessService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表service接口
|
||||||
|
/// </summary>
|
||||||
|
public interface IOdfRacksService : IBaseService<OdfRacks>
|
||||||
|
{
|
||||||
|
PagedInfo<OdfRacksDto> GetList(OdfRacksQueryDto parm);
|
||||||
|
|
||||||
|
OdfRacks GetInfo(int Id);
|
||||||
|
|
||||||
|
|
||||||
|
OdfRacks AddOdfRacks(OdfRacks parm);
|
||||||
|
int UpdateOdfRacks(OdfRacks parm);
|
||||||
|
|
||||||
|
(string, object, object) ImportOdfRacks(List<OdfRacks> list);
|
||||||
|
|
||||||
|
PagedInfo<OdfRacksDto> ExportList(OdfRacksQueryDto parm);
|
||||||
|
}
|
||||||
|
}
|
||||||
24
ZR.Service/Business/IBusinessService/IOdfRoomsService.cs
Normal file
24
ZR.Service/Business/IBusinessService/IOdfRoomsService.cs
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business.IBusinessService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表service接口
|
||||||
|
/// </summary>
|
||||||
|
public interface IOdfRoomsService : IBaseService<OdfRooms>
|
||||||
|
{
|
||||||
|
PagedInfo<OdfRoomsDto> GetList(OdfRoomsQueryDto parm);
|
||||||
|
|
||||||
|
List<OdfRooms> GetList(OdfRoomsTreeQueryDto parm);
|
||||||
|
OdfRooms GetInfo(int Id);
|
||||||
|
|
||||||
|
|
||||||
|
OdfRooms AddOdfRooms(OdfRooms parm);
|
||||||
|
int UpdateOdfRooms(OdfRooms parm);
|
||||||
|
|
||||||
|
(string, object, object) ImportOdfRooms(List<OdfRooms> list);
|
||||||
|
|
||||||
|
PagedInfo<OdfRoomsDto> ExportList(OdfRoomsQueryDto parm);
|
||||||
|
}
|
||||||
|
}
|
||||||
82
ZR.Service/Business/OdfFramesService.cs
Normal file
82
ZR.Service/Business/OdfFramesService.cs
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
using Infrastructure.Attribute;
|
||||||
|
using Infrastructure.Extensions;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Repository;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 框-信息Service业务层处理
|
||||||
|
/// </summary>
|
||||||
|
[AppService(ServiceType = typeof(IOdfFramesService), ServiceLifetime = LifeTime.Transient)]
|
||||||
|
public class OdfFramesService : BaseService<OdfFrames>, IOdfFramesService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 查询框-信息列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfFramesDto> GetList(OdfFramesQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
//.OrderBy("SequenceNumber asc")
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.ToPage<OdfFrames, OdfFramesDto>(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfFrames GetInfo(int Id)
|
||||||
|
{
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(x => x.Id == Id)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加框-信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfFrames AddOdfFrames(OdfFrames model)
|
||||||
|
{
|
||||||
|
return Insertable(model).ExecuteReturnEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改框-信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int UpdateOdfFrames(OdfFrames model)
|
||||||
|
{
|
||||||
|
return Update(model, true, "修改框-信息");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询导出表达式
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static Expressionable<OdfFrames> QueryExp(OdfFramesQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = Expressionable.Create<OdfFrames>();
|
||||||
|
|
||||||
|
predicate = predicate.AndIF(parm.RackId != null, it => it.RackId == parm.RackId);
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.PortsName), it => it.PortsName.Contains(parm.PortsName));
|
||||||
|
return predicate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
171
ZR.Service/Business/OdfPortsService.cs
Normal file
171
ZR.Service/Business/OdfPortsService.cs
Normal file
|
|
@ -0,0 +1,171 @@
|
||||||
|
using Infrastructure.Attribute;
|
||||||
|
using Infrastructure.Extensions;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Repository;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 端口Service业务层处理
|
||||||
|
/// </summary>
|
||||||
|
[AppService(ServiceType = typeof(IOdfPortsService), ServiceLifetime = LifeTime.Transient)]
|
||||||
|
public class OdfPortsService : BaseService<OdfPorts>, IOdfPortsService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 查询端口列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfPortsDto> GetList(OdfPortsQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
//.OrderBy("Id asc")
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.OrderBy("RoomId asc,RackId asc,FrameId asc,RowNumber asc,PortNumber Asc")
|
||||||
|
//.OrderBy(it => it.RoomId)
|
||||||
|
//.OrderBy(it => it.RackId)
|
||||||
|
//.OrderBy(it => it.Id)
|
||||||
|
//.OrderBy(it => it.Name)
|
||||||
|
.ToPage<OdfPorts, OdfPortsDto>(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfPorts GetInfo(int Id)
|
||||||
|
{
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(x => x.Id == Id)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加端口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfPorts AddOdfPorts(OdfPorts model)
|
||||||
|
{
|
||||||
|
return Insertable(model).ExecuteReturnEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改端口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int UpdateOdfPorts(OdfPorts model)
|
||||||
|
{
|
||||||
|
return Update(model, true, "修改端口");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入端口
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public (string, object, object) ImportOdfPorts(List<OdfPorts> list)
|
||||||
|
{
|
||||||
|
var x = Context.Storageable(list)
|
||||||
|
.SplitInsert(it => !it.Any())
|
||||||
|
.SplitError(x => x.Item.Name.IsEmpty(), "端口名称不能为空")
|
||||||
|
.SplitError(x => x.Item.RoomId.IsEmpty(), "机房ID不能为空")
|
||||||
|
.SplitError(x => x.Item.RoomName.IsEmpty(), "机房名称不能为空")
|
||||||
|
.SplitError(x => x.Item.RackId.IsEmpty(), "机架ID不能为空")
|
||||||
|
.SplitError(x => x.Item.RackName.IsEmpty(), "机架名称不能为空")
|
||||||
|
.SplitError(x => x.Item.FrameId.IsEmpty(), "框ID不能为空")
|
||||||
|
.SplitError(x => x.Item.FrameName.IsEmpty(), "框名称不能为空")
|
||||||
|
.SplitError(x => x.Item.DeptId.IsEmpty(), "部门ID不能为空")
|
||||||
|
.SplitError(x => x.Item.RowNumber.IsEmpty(), "行号(1-6)不能为空")
|
||||||
|
.SplitError(x => x.Item.PortNumber.IsEmpty(), "端口号(1-12)不能为空")
|
||||||
|
.SplitError(x => x.Item.Status.IsEmpty(), "连接状态,0正常,1断开不能为空")
|
||||||
|
.SplitError(x => x.Item.CreatedAt.IsEmpty(), "创建时间不能为空")
|
||||||
|
.SplitError(x => x.Item.UpdatedAt.IsEmpty(), "修改时间不能为空")
|
||||||
|
//.WhereColumns(it => it.UserName)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||||
|
.ToStorage();
|
||||||
|
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
||||||
|
|
||||||
|
string msg = $"插入{x.InsertList.Count} 更新{x.UpdateList.Count} 错误数据{x.ErrorList.Count} 不计算数据{x.IgnoreList.Count} 删除数据{x.DeleteList.Count} 总共{x.TotalList.Count}";
|
||||||
|
Console.WriteLine(msg);
|
||||||
|
|
||||||
|
//输出错误信息
|
||||||
|
foreach (var item in x.ErrorList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("错误" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
foreach (var item in x.IgnoreList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("忽略" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (msg, x.ErrorList, x.IgnoreList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出端口
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfPortsDto> ExportList(OdfPortsQueryDto parm)
|
||||||
|
{
|
||||||
|
parm.PageNum = 1;
|
||||||
|
parm.PageSize = 100000;
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.OrderBy("RoomId asc,RackId asc,FrameId asc,Name asc")
|
||||||
|
.Select((it) => new OdfPortsDto()
|
||||||
|
{
|
||||||
|
}, true)
|
||||||
|
.ToPage(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询导出表达式
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static Expressionable<OdfPorts> QueryExp(OdfPortsQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = Expressionable.Create<OdfPorts>();
|
||||||
|
if (parm.RoomId != null)
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.RoomId == parm.RoomId);
|
||||||
|
}
|
||||||
|
if (parm.RacksId != null)
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.RackId == parm.RacksId);
|
||||||
|
}
|
||||||
|
if (parm.FramesId != null)
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.FrameId == parm.FramesId);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(parm.Name))
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.Name.Contains(parm.Name));
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(parm.Remarks))
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.Remarks.Contains(parm.Remarks));
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(parm.HistoryRemarks))
|
||||||
|
{
|
||||||
|
predicate = predicate.And(f => f.HistoryRemarks.Contains(parm.HistoryRemarks));
|
||||||
|
}
|
||||||
|
return predicate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
138
ZR.Service/Business/OdfRacksService.cs
Normal file
138
ZR.Service/Business/OdfRacksService.cs
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
using Infrastructure.Attribute;
|
||||||
|
using Infrastructure.Extensions;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Repository;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机架列表Service业务层处理
|
||||||
|
/// </summary>
|
||||||
|
[AppService(ServiceType = typeof(IOdfRacksService), ServiceLifetime = LifeTime.Transient)]
|
||||||
|
public class OdfRacksService : BaseService<OdfRacks>, IOdfRacksService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机架列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfRacksDto> GetList(OdfRacksQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
.OrderBy("RoomId asc,SequenceNumber asc")
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.ToPage<OdfRacks, OdfRacksDto>(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfRacks GetInfo(int Id)
|
||||||
|
{
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(x => x.Id == Id)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfRacks AddOdfRacks(OdfRacks model)
|
||||||
|
{
|
||||||
|
model.CreatedAt = DateTime.Now;
|
||||||
|
model.UpdatedAt=DateTime.Now;
|
||||||
|
|
||||||
|
return Insertable(model).ExecuteReturnEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int UpdateOdfRacks(OdfRacks model)
|
||||||
|
{
|
||||||
|
model.UpdatedAt = DateTime.Now;
|
||||||
|
return Update(model, true, "修改机架列表");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public (string, object, object) ImportOdfRacks(List<OdfRacks> list)
|
||||||
|
{
|
||||||
|
var x = Context.Storageable(list)
|
||||||
|
.SplitInsert(it => !it.Any())
|
||||||
|
.SplitError(x => x.Item.RoomId.IsEmpty(), "机房不能为空")
|
||||||
|
.SplitError(x => x.Item.SequenceNumber.IsEmpty(), "序号不能为空")
|
||||||
|
.SplitError(x => x.Item.RackName.IsEmpty(), "ODF名称不能为空")
|
||||||
|
//.WhereColumns(it => it.UserName)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||||
|
.ToStorage();
|
||||||
|
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
||||||
|
|
||||||
|
string msg = $"插入{x.InsertList.Count} 更新{x.UpdateList.Count} 错误数据{x.ErrorList.Count} 不计算数据{x.IgnoreList.Count} 删除数据{x.DeleteList.Count} 总共{x.TotalList.Count}";
|
||||||
|
Console.WriteLine(msg);
|
||||||
|
|
||||||
|
//输出错误信息
|
||||||
|
foreach (var item in x.ErrorList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("错误" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
foreach (var item in x.IgnoreList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("忽略" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (msg, x.ErrorList, x.IgnoreList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出机架列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfRacksDto> ExportList(OdfRacksQueryDto parm)
|
||||||
|
{
|
||||||
|
parm.PageNum = 1;
|
||||||
|
parm.PageSize = 100000;
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.Select((it) => new OdfRacksDto()
|
||||||
|
{
|
||||||
|
}, true)
|
||||||
|
.ToPage(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询导出表达式
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static Expressionable<OdfRacks> QueryExp(OdfRacksQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = Expressionable.Create<OdfRacks>();
|
||||||
|
|
||||||
|
predicate = predicate.AndIF(parm.RoomId != null, it => it.RoomId == parm.RoomId);
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.RackName), it => it.RackName.Contains(parm.RackName));
|
||||||
|
return predicate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
173
ZR.Service/Business/OdfRoomsService.cs
Normal file
173
ZR.Service/Business/OdfRoomsService.cs
Normal file
|
|
@ -0,0 +1,173 @@
|
||||||
|
using Infrastructure.Attribute;
|
||||||
|
using Infrastructure.Extensions;
|
||||||
|
using ZR.Model.Business.Dto;
|
||||||
|
using ZR.Model.Business;
|
||||||
|
using ZR.Repository;
|
||||||
|
using ZR.Service.Business.IBusinessService;
|
||||||
|
using Infrastructure;
|
||||||
|
using SqlSugar.IOC;
|
||||||
|
|
||||||
|
namespace ZR.Service.Business
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 机房列表Service业务层处理
|
||||||
|
/// </summary>
|
||||||
|
[AppService(ServiceType = typeof(IOdfRoomsService), ServiceLifetime = LifeTime.Transient)]
|
||||||
|
public class OdfRoomsService : BaseService<OdfRooms>, IOdfRoomsService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 查询机房列表列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfRoomsDto> GetList(OdfRoomsQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
//.OrderBy("Id desc")
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.ToPage<OdfRooms, OdfRoomsDto>(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取详情
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfRooms GetInfo(int Id)
|
||||||
|
{
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(x => x.Id == Id)
|
||||||
|
.First();
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public OdfRooms AddOdfRooms(OdfRooms model)
|
||||||
|
{
|
||||||
|
return Insertable(model).ExecuteReturnEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="model"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int UpdateOdfRooms(OdfRooms model)
|
||||||
|
{
|
||||||
|
return Update(model, true, "修改机房列表");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导入机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public (string, object, object) ImportOdfRooms(List<OdfRooms> list)
|
||||||
|
{
|
||||||
|
var x = Context.Storageable(list)
|
||||||
|
.SplitInsert(it => !it.Any())
|
||||||
|
.SplitError(x => x.Item.RoomName.IsEmpty(), "机房名称不能为空")
|
||||||
|
.SplitError(x => x.Item.RoomAddress.IsEmpty(), "机房位置不能为空")
|
||||||
|
//.WhereColumns(it => it.UserName)//如果不是主键可以这样实现(多字段it=>new{it.x1,it.x2})
|
||||||
|
.ToStorage();
|
||||||
|
var result = x.AsInsertable.ExecuteCommand();//插入可插入部分;
|
||||||
|
|
||||||
|
string msg = $"插入{x.InsertList.Count} 更新{x.UpdateList.Count} 错误数据{x.ErrorList.Count} 不计算数据{x.IgnoreList.Count} 删除数据{x.DeleteList.Count} 总共{x.TotalList.Count}";
|
||||||
|
Console.WriteLine(msg);
|
||||||
|
|
||||||
|
//输出错误信息
|
||||||
|
foreach (var item in x.ErrorList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("错误" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
foreach (var item in x.IgnoreList)
|
||||||
|
{
|
||||||
|
Console.WriteLine("忽略" + item.StorageMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (msg, x.ErrorList, x.IgnoreList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 导出机房列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public PagedInfo<OdfRoomsDto> ExportList(OdfRoomsQueryDto parm)
|
||||||
|
{
|
||||||
|
parm.PageNum = 1;
|
||||||
|
parm.PageSize = 100000;
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.Select((it) => new OdfRoomsDto()
|
||||||
|
{
|
||||||
|
}, true)
|
||||||
|
.ToPage(parm);
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询导出表达式
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static Expressionable<OdfRooms> QueryExp(OdfRoomsQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = Expressionable.Create<OdfRooms>();
|
||||||
|
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.RoomName), it => it.RoomName.Contains(parm.RoomName));
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.RoomAddress), it => it.RoomAddress.Contains(parm.RoomAddress));
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Remarks), it => it.Remarks.Contains(parm.Remarks));
|
||||||
|
predicate = predicate.AndIF(parm.DeptIds != null && parm.DeptIds.Count > 0, it => parm.DeptIds.Contains(it.DeptId ?? 0));
|
||||||
|
return predicate;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查询导出表达式
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="parm"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static Expressionable<OdfRooms> QueryExp(OdfRoomsTreeQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = Expressionable.Create<OdfRooms>();
|
||||||
|
|
||||||
|
predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Name), it => (it.RoomName.Contains(parm.Name) || it.RoomAddress.Contains(parm.Name) || it.DeptName.Contains(parm.Name)));
|
||||||
|
if (parm.DeptId != null)
|
||||||
|
{
|
||||||
|
if (parm.DeptId == 0)
|
||||||
|
{
|
||||||
|
predicate = predicate.AndIF(parm.DeptId != null, it => parm.DeptId == (it.DeptId ?? 0));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var db = DbScoped.SugarScope.GetConnectionScope("0");
|
||||||
|
string sql = "WITH DeptCTE AS( SELECT DeptId, ParentId, DeptName FROM sys_dept WHERE DeptId =" + parm.DeptId + " UNION ALL SELECT d.DeptId, d.ParentId, d.DeptName FROM sys_dept d INNER JOIN DeptCTE cte ON d.ParentId = cte.DeptId WHERE d.DelFlag = 0) SELECT DeptId FROM DeptCTE ORDER BY DeptId";
|
||||||
|
var list = db.Ado.SqlQuery<long>(sql);
|
||||||
|
predicate = predicate.And(it => list.Contains(it.DeptId ?? 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return predicate;
|
||||||
|
}
|
||||||
|
public List<OdfRooms> GetList(OdfRoomsTreeQueryDto parm)
|
||||||
|
{
|
||||||
|
var predicate = QueryExp(parm);
|
||||||
|
|
||||||
|
var response = Queryable()
|
||||||
|
.Where(predicate.ToExpression())
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -156,6 +156,7 @@ namespace ZR.ServiceCore.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<SysDictDataDto> SelectDictDataByCustomSql(SysDictType sysDictType)
|
public List<SysDictDataDto> SelectDictDataByCustomSql(SysDictType sysDictType)
|
||||||
{
|
{
|
||||||
|
|
||||||
return Context.Ado.SqlQuery<SysDictDataDto>(sysDictType?.CustomSql).ToList();
|
return Context.Ado.SqlQuery<SysDictDataDto>(sysDictType?.CustomSql).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
using Infrastructure;
|
using Infrastructure;
|
||||||
using Infrastructure.Attribute;
|
using Infrastructure.Attribute;
|
||||||
|
|
||||||
|
using SqlSugar.IOC;
|
||||||
|
|
||||||
using ZR.Model;
|
using ZR.Model;
|
||||||
using ZR.Model.System;
|
using ZR.Model.System;
|
||||||
using ZR.Model.System.Dto;
|
using ZR.Model.System.Dto;
|
||||||
|
using ZR.ServiceCore.SqlSugar;
|
||||||
|
|
||||||
namespace ZR.ServiceCore.Services
|
namespace ZR.ServiceCore.Services
|
||||||
{
|
{
|
||||||
|
|
@ -123,12 +127,59 @@ namespace ZR.ServiceCore.Services
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<SysDictDataDto> SelectDictDataByCustomSql(string dictType)
|
public List<SysDictDataDto> SelectDictDataByCustomSql(string dictType)
|
||||||
{
|
{
|
||||||
|
|
||||||
var dictInfo = Queryable()
|
var dictInfo = Queryable()
|
||||||
.Where(f => f.DictType == dictType).First();
|
.Where(f => f.DictType == dictType).First();
|
||||||
if (dictInfo == null || !dictInfo.CustomSql.StartsWith("select", StringComparison.OrdinalIgnoreCase))
|
if (dictInfo == null || !dictInfo.CustomSql.StartsWith("select", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dictInfo.DictType == "sql_odf_room")
|
||||||
|
{
|
||||||
|
//获取当前用户的信息
|
||||||
|
var user = JwtUtil.GetLoginUser(App.HttpContext);
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
dictInfo.CustomSql += " and DeptId = 0";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//管理员不过滤
|
||||||
|
if (!user.RoleKeys.Any(f => f.Equals(GlobalConstant.AdminRole)))
|
||||||
|
{
|
||||||
|
foreach (var role in user.Roles.OrderBy(f => f.DataScope))
|
||||||
|
{
|
||||||
|
var dataScope = (DataPermiEnum)role.DataScope;
|
||||||
|
if (DataPermiEnum.All.Equals(dataScope))//所有权限
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (DataPermiEnum.CUSTOM.Equals(dataScope))//自定数据权限
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (DataPermiEnum.DEPT.Equals(dataScope))//本部门数据
|
||||||
|
{
|
||||||
|
//user.DeptId
|
||||||
|
dictInfo.CustomSql += " and DeptId = " + user.DeptId;
|
||||||
|
}
|
||||||
|
else if (DataPermiEnum.DEPT_CHILD.Equals(dataScope))//本部门及以下数据
|
||||||
|
{
|
||||||
|
//SQl OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )
|
||||||
|
|
||||||
|
var db = DbScoped.SugarScope.GetConnectionScope("0");
|
||||||
|
var allChildDepts = db.Queryable<SysDept>().ToChildList(it => it.ParentId, user.DeptId);
|
||||||
|
var allDeptId = allChildDepts.Select(f => f.DeptId).ToList();
|
||||||
|
dictInfo.CustomSql += " and DeptId in ( " + string.Join(",", allDeptId) + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return DictDataService.SelectDictDataByCustomSql(dictInfo);
|
return DictDataService.SelectDictDataByCustomSql(dictInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
using Infrastructure;
|
using Infrastructure;
|
||||||
|
|
||||||
using SqlSugar.IOC;
|
using SqlSugar.IOC;
|
||||||
|
|
||||||
using ZR.Model;
|
using ZR.Model;
|
||||||
|
using ZR.Model.Business;
|
||||||
using ZR.Model.Models;
|
using ZR.Model.Models;
|
||||||
using ZR.Model.System;
|
using ZR.Model.System;
|
||||||
|
|
||||||
|
|
@ -51,7 +54,9 @@ namespace ZR.ServiceCore.SqlSugar
|
||||||
var expLoginlog = Expressionable.Create<SysLogininfor>();
|
var expLoginlog = Expressionable.Create<SysLogininfor>();
|
||||||
var expSysMsg = Expressionable.Create<SysUserMsg>().And(it => it.IsDelete == 0);
|
var expSysMsg = Expressionable.Create<SysUserMsg>().And(it => it.IsDelete == 0);
|
||||||
var expDept = Expressionable.Create<SysDept>();
|
var expDept = Expressionable.Create<SysDept>();
|
||||||
|
var expOdfRooms = Expressionable.Create<OdfRooms>();
|
||||||
|
var expOdfRacks = Expressionable.Create<OdfRacks>();
|
||||||
|
var expOdfPorts = Expressionable.Create<OdfPorts>();
|
||||||
db.QueryFilter.AddTableFilter(expSysMsg.ToExpression());
|
db.QueryFilter.AddTableFilter(expSysMsg.ToExpression());
|
||||||
//管理员不过滤
|
//管理员不过滤
|
||||||
if (user.RoleKeys.Any(f => f.Equals(GlobalConstant.AdminRole))) return;
|
if (user.RoleKeys.Any(f => f.Equals(GlobalConstant.AdminRole))) return;
|
||||||
|
|
@ -73,6 +78,9 @@ namespace ZR.ServiceCore.SqlSugar
|
||||||
{
|
{
|
||||||
expUser.And(it => it.DeptId == user.DeptId);
|
expUser.And(it => it.DeptId == user.DeptId);
|
||||||
expDept.And(it => it.DeptId == user.DeptId);
|
expDept.And(it => it.DeptId == user.DeptId);
|
||||||
|
expOdfRooms.And(it => (it.DeptId == user.DeptId || it.DeptId == 0));
|
||||||
|
expOdfRacks.And(it => (it.DeptId == user.DeptId || it.DeptId == 0));
|
||||||
|
expOdfPorts.And(it => (it.DeptId == user.DeptId || it.DeptId == 0));
|
||||||
}
|
}
|
||||||
else if (DataPermiEnum.DEPT_CHILD.Equals(dataScope))//本部门及以下数据
|
else if (DataPermiEnum.DEPT_CHILD.Equals(dataScope))//本部门及以下数据
|
||||||
{
|
{
|
||||||
|
|
@ -82,6 +90,9 @@ namespace ZR.ServiceCore.SqlSugar
|
||||||
|
|
||||||
expUser.Or(it => allDeptId.Contains(it.DeptId));
|
expUser.Or(it => allDeptId.Contains(it.DeptId));
|
||||||
expDept.And(it => allDeptId.Contains(it.DeptId));
|
expDept.And(it => allDeptId.Contains(it.DeptId));
|
||||||
|
expOdfRooms.And(it => (allDeptId.Contains(it.DeptId ?? 0) || it.DeptId == 0));
|
||||||
|
expOdfRacks.And(it => (allDeptId.Contains(it.DeptId) || it.DeptId == 0));
|
||||||
|
expOdfPorts.And(it => (allDeptId.Contains(it.DeptId) || it.DeptId == 0));
|
||||||
}
|
}
|
||||||
else if (DataPermiEnum.SELF.Equals(dataScope))//仅本人数据
|
else if (DataPermiEnum.SELF.Equals(dataScope))//仅本人数据
|
||||||
{
|
{
|
||||||
|
|
@ -95,6 +106,9 @@ namespace ZR.ServiceCore.SqlSugar
|
||||||
db.QueryFilter.AddTableFilter(expUser.ToExpression());
|
db.QueryFilter.AddTableFilter(expUser.ToExpression());
|
||||||
db.QueryFilter.AddTableFilter(expRole.ToExpression());
|
db.QueryFilter.AddTableFilter(expRole.ToExpression());
|
||||||
db.QueryFilter.AddTableFilter(expLoginlog.ToExpression());
|
db.QueryFilter.AddTableFilter(expLoginlog.ToExpression());
|
||||||
|
db.QueryFilter.AddTableFilter(expOdfRooms.ToExpression());
|
||||||
|
db.QueryFilter.AddTableFilter(expOdfRacks.ToExpression());
|
||||||
|
db.QueryFilter.AddTableFilter(expOdfPorts.ToExpression());
|
||||||
db.QueryFilter.AddTableFilter<UserOnlineLog>(f => f.UserId == user.UserId, QueryFilterProvider.FilterJoinPosition.Where);
|
db.QueryFilter.AddTableFilter<UserOnlineLog>(f => f.UserId == user.UserId, QueryFilterProvider.FilterJoinPosition.Where);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user