.NETAdmin/ZR.Service/Business/OdfRacksService.cs
2025-08-06 09:46:50 +08:00

138 lines
4.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}