Files
sy_hx_pbl_backend/DOAN.Service/PBL/InventorylogService.cs

130 lines
4.1 KiB
C#
Raw 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 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; // 或者返回空列表或其他适当的响应
}
}
}
}