130 lines
4.1 KiB
C#
130 lines
4.1 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// 库存日志Service业务层处理
|
||
/// </summary>
|
||
[AppService(ServiceType = typeof(IInventorylogService), ServiceLifetime = LifeTime.Transient)]
|
||
public class InventorylogService : BaseService<Inventorylog>, IInventorylogService
|
||
{
|
||
/// <summary>
|
||
/// 查询库存日志列表
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
public PagedInfo<InventorylogDto> GetList(InventorylogQueryDto parm)
|
||
{
|
||
var predicate = QueryExp(parm);
|
||
|
||
var response = Queryable()
|
||
.Where(predicate.ToExpression())
|
||
.OrderByDescending(it => it.CreatedTime)
|
||
.ToPage<Inventorylog, InventorylogDto>(parm);
|
||
|
||
return response;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取详情
|
||
/// </summary>
|
||
/// <param name="Id"></param>
|
||
/// <returns></returns>
|
||
public Inventorylog GetInfo(string Id)
|
||
{
|
||
var response = Queryable()
|
||
.Where(x => x.Id == Id)
|
||
.First();
|
||
|
||
return response;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 添加库存日志
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public Inventorylog AddInventorylog(Inventorylog model)
|
||
{
|
||
model.Id = XUEHUA;
|
||
return Insertable(model).ExecuteReturnEntity();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改库存日志
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public int UpdateInventorylog(Inventorylog model)
|
||
{
|
||
return Update(model, true);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询导出表达式
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
private static Expressionable<Inventorylog> QueryExp(InventorylogQueryDto parm)
|
||
{
|
||
var predicate = Expressionable.Create<Inventorylog>()
|
||
.AndIF(!string.IsNullOrEmpty(parm.RackCode), it => it.RackCode.Contains(parm.RackCode))
|
||
.AndIF(parm.Operation != null, it => it.Operation == parm.Operation)
|
||
|
||
;
|
||
|
||
return predicate;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 导出库存日志
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public List<Inventorylog> 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; // 或者返回空列表或其他适当的响应
|
||
}
|
||
}
|
||
}
|
||
} |