using Infrastructure.Attribute; using Infrastructure.Extensions; using DOAN.Model.PBL.Dto; using DOAN.Model.PBL; using DOAN.Repository; using DOAN.Service.PBL.IService; using Aliyun.OSS; using System; namespace DOAN.Service.PBL { /// /// 库存日志Service业务层处理 /// [AppService(ServiceType = typeof(IInventorylogService), ServiceLifetime = LifeTime.Transient)] public class InventorylogService : BaseService, IInventorylogService { /// /// 查询库存日志列表 /// /// /// public PagedInfo GetList(InventorylogQueryDto parm) { var predicate = QueryExp(parm); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(it => it.CreatedTime) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public Inventorylog GetInfo(string Id) { var response = Queryable() .Where(x => x.Id == Id) .First(); return response; } /// /// 添加库存日志 /// /// /// public Inventorylog AddInventorylog(Inventorylog model) { model.Id = XUEHUA; return Insertable(model).ExecuteReturnEntity(); } /// /// 修改库存日志 /// /// /// public int UpdateInventorylog(Inventorylog model) { return Update(model, true); } /// /// 查询导出表达式 /// /// /// private static Expressionable QueryExp(InventorylogQueryDto parm) { var predicate = Expressionable.Create() .AndIF(!string.IsNullOrEmpty(parm.RackCode), it => it.RackCode.Contains(parm.RackCode)) .AndIF(parm.Operation != null, it => it.Operation == parm.Operation) ; return predicate; } /// /// 导出库存日志 /// /// /// public List ExportInventorylog(InventorylogExportDto model) { try { // 将字符串类型的 StartTime 和 EndTime 转换为 DateTime 类型 if (!DateTime.TryParse(model.StartTime, out DateTime startTime)) { throw new ArgumentException("开始时间格式无效。"); } if (!DateTime.TryParse(model.EndTime, out DateTime endTime)) { throw new ArgumentException("结束时间格式无效。"); } // 设置开始时间为当天的开始时间(00:00:00) startTime = startTime.Date; // 设置结束时间为当天的结束时间(23:59:59) endTime = endTime.Date.AddDays(1).AddTicks(-1); // 查询符合条件的库存日志 var response = Queryable() .Where(it => it.CreatedTime >= startTime && it.CreatedTime <= endTime) .OrderBy(it => it.CreatedTime) .ToList(); return response; } catch (Exception ex) { // 记录异常信息(可以使用日志框架如 NLog 或 Serilog) Console.WriteLine($"导出库存日志异常: {ex.Message}\n堆栈跟踪: {ex.StackTrace}"); throw; // 或者返回空列表或其他适当的响应 } } } }