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;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.WxaBusinessGetLiveInfoResponse.Types;
using Aliyun.OSS;
using Azure;
using ZR.Model.System.Dto;
using SkiaSharp;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.CardMemberCardActivateUserFormSetRequest.Types;
using ZR.Model.System;
//创建时间:2025-08-05
namespace ZR.Admin.WebApi.Controllers.Business
{
///
/// 机房列表
///
[Route("business/OdfRooms")]
public class OdfRoomsController : BaseController
{
///
/// 机房列表接口
///
private readonly IOdfRoomsService _OdfRoomsService;
///
/// 部门接口
///
private readonly ISysDeptService sysDeptService;
///
///
///
private readonly ISysUserService _SysUserService;
///
///机架
///
private readonly IOdfRacksService _OdfRacksService;
///
/// 框
///
private readonly IOdfFramesService _OdfFramesService;
///
/// 端口
///
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;
}
///
/// 查询机房列表列表
///
///
///
[HttpGet("list")]
[ActionPermissionFilter(Permission = "odfrooms:list")]
public IActionResult QueryOdfRooms([FromQuery] OdfRoomsQueryDto parm)
{
var response = _OdfRoomsService.GetList(parm);
return SUCCESS(response);
}
///
/// 查询机房列表列表
///
///
///
[HttpGet("tree")]
[ActionPermissionFilter(Permission = "odfrooms:list")]
public IActionResult GetTreeList([FromQuery] OdfRoomsTreeQueryDto parm)
{
List list = new List();
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 + $"[{it.DeptName}]",
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);
}
///
/// 查询机房列表详情
///
///
///
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "odfrooms:query")]
public IActionResult GetOdfRooms(int Id)
{
var response = _OdfRoomsService.GetInfo(Id);
var info = response.Adapt();
return SUCCESS(info);
}
///
/// 添加机房列表
///
///
[HttpPost]
[ActionPermissionFilter(Permission = "odfrooms:add")]
[Log(Title = "机房列表", BusinessType = BusinessType.INSERT)]
public async Task 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().ToCreate(HttpContext);
var response = _OdfRoomsService.AddOdfRooms(modal);
return SUCCESS(response);
}
///
/// 查询公司下的所有区域
///
///
[HttpGet("getcompany")]
[ActionPermissionFilter(Permission = "odfrooms:query")]
public IActionResult GetCompany()
{
var dept = sysDeptService.AsQueryable().Where(it => it.ParentId == 0 && it.Status == 0 && it.DelFlag == 0).First();
if (dept != null)
{
var list = sysDeptService.AsQueryable().Where(it => it.ParentId == dept.DeptId).Select(it => new { it.DeptId, it.DeptName }).ToList();
return SUCCESS(list);
}
if (dept == null)
{
var list = sysDeptService.AsQueryable().Where(it => it.ParentId == 1).Select(it => new { it.DeptId, it.DeptName }).ToList();
return SUCCESS(list);
}
return SUCCESS(new List