入库记录查询支持时间区间和交易类型筛选
调整查询接口为POST,参数改为Body方式; DTO中CreatedTime改为数组,新增TransactionType字段; 服务层支持时间区间和交易类型多条件筛选; 优化本地化日期处理,提升查询灵活性。
This commit is contained in:
@@ -29,9 +29,9 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("list")]
|
||||
[HttpPost("list")]
|
||||
[ActionPermissionFilter(Permission = "mmrecordinbound:list")]
|
||||
public IActionResult QueryMmRecordInbound([FromQuery] MmRecordInboundQueryDto parm)
|
||||
public IActionResult QueryMmRecordInbound([FromBody] MmRecordInboundQueryDto parm)
|
||||
{
|
||||
var response = _MmRecordInboundService.GetList(parm);
|
||||
return SUCCESS(response);
|
||||
|
||||
@@ -10,11 +10,13 @@ namespace DOAN.Model.BZFM.Dto
|
||||
|
||||
public string Operator { get; set; }
|
||||
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
public DateTime[] CreatedTime { get; set; } = new DateTime[2];
|
||||
|
||||
public string MaterialCode { get; set; }
|
||||
|
||||
public string InboundNo { get; set; }
|
||||
|
||||
public string TransactionType { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -22,11 +22,7 @@ namespace DOAN.Service.BZFM
|
||||
/// <returns></returns>
|
||||
public PagedInfo<MmRecordInboundDto> GetList(MmRecordInboundQueryDto parm)
|
||||
{
|
||||
// 本地化日期,避免时差异常
|
||||
if (parm != null && parm.CreatedTime != null)
|
||||
{
|
||||
parm.CreatedTime = DOANConvertDate.ConvertLocalDate(parm.CreatedTime.Value);
|
||||
}
|
||||
|
||||
var predicate = QueryExp(parm);
|
||||
|
||||
var response = Queryable()
|
||||
@@ -78,13 +74,28 @@ namespace DOAN.Service.BZFM
|
||||
/// <returns></returns>
|
||||
private static Expressionable<MmRecordInbound> QueryExp(MmRecordInboundQueryDto parm)
|
||||
{
|
||||
if (parm.CreatedTime != null && parm.CreatedTime.Length > 0)
|
||||
{
|
||||
parm.CreatedTime[0] = DOANConvertDate.ConvertLocalDate(parm.CreatedTime[0]);
|
||||
parm.CreatedTime[1] = DOANConvertDate.ConvertLocalDate(parm.CreatedTime[1]);
|
||||
parm.CreatedTime[0] = parm.CreatedTime[0].Date;
|
||||
parm.CreatedTime[1] = parm.CreatedTime[1].Date;
|
||||
}
|
||||
var predicate = Expressionable.Create<MmRecordInbound>()
|
||||
.AndIF(!string.IsNullOrEmpty(parm.SupplierCode), it => it.SupplierCode.Contains(parm.SupplierCode))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Operator), it => it.Operator.Contains(parm.Operator))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.MaterialCode), it => it.MaterialCode.Contains(parm.MaterialCode))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.InboundNo), it => it.InboundNo.Contains(parm.InboundNo))
|
||||
.AndIF(parm.CreatedTime > DateTime.MinValue, it => it.CreatedTime < parm.CreatedTime)
|
||||
;
|
||||
.AndIF(!string.IsNullOrEmpty(parm.TransactionType), it => it.TransactionType.Contains(parm.TransactionType))
|
||||
.AndIF(
|
||||
parm.CreatedTime != null && parm.CreatedTime[0] > DateTime.MinValue,
|
||||
it => it.CreatedTime >= parm.CreatedTime[0]
|
||||
)
|
||||
.AndIF(
|
||||
parm.CreatedTime != null && parm.CreatedTime[1] > DateTime.MinValue,
|
||||
it => it.CreatedTime <= parm.CreatedTime[1]
|
||||
);
|
||||
;
|
||||
|
||||
return predicate;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user