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; // 或者返回空列表或其他适当的响应
}
}
}
}