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 { /// /// 机架列表Service业务层处理 /// [AppService(ServiceType = typeof(IOdfRacksService), ServiceLifetime = LifeTime.Transient)] public class OdfRacksService : BaseService, IOdfRacksService { /// /// 查询机架列表列表 /// /// /// public PagedInfo GetList(OdfRacksQueryDto parm) { var predicate = QueryExp(parm); var response = Queryable() .OrderBy("RoomId asc,SequenceNumber asc") .Where(predicate.ToExpression()) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public OdfRacks GetInfo(int Id) { var response = Queryable() .Where(x => x.Id == Id) .First(); return response; } /// /// 添加机架列表 /// /// /// public OdfRacks AddOdfRacks(OdfRacks model) { model.CreatedAt = DateTime.Now; model.UpdatedAt=DateTime.Now; return Insertable(model).ExecuteReturnEntity(); } /// /// 修改机架列表 /// /// /// public int UpdateOdfRacks(OdfRacks model) { model.UpdatedAt = DateTime.Now; return Update(model, true, "修改机架列表"); } /// /// 导入机架列表 /// /// public (string, object, object) ImportOdfRacks(List 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); } /// /// 导出机架列表 /// /// /// public PagedInfo 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; } /// /// 查询导出表达式 /// /// /// private static Expressionable QueryExp(OdfRacksQueryDto parm) { var predicate = Expressionable.Create(); 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; } } }