转本地时间
This commit is contained in:
parent
14fec2641c
commit
4323bc20ed
@ -128,11 +128,11 @@ namespace DOAN.Service.group
|
||||
/// <returns></returns>
|
||||
public PagedInfo<MmRequirePlanDto> GetList(MmRequirePlanQueryDto parm)
|
||||
{
|
||||
|
||||
var predicate = Expressionable.Create<MmRequirePlan>()
|
||||
.AndIF(!string.IsNullOrEmpty(parm.MaterialCode),it=>it.MaterialCode.Contains(parm.MaterialCode))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.MaterialName),it=>it.MaterialName.Contains(parm.MaterialName))
|
||||
.AndIF(parm.RequireDate!=null&&parm.RequireDate>DateTime.MinValue,it=>it.RequireDate==parm.RequireDate)
|
||||
|
||||
.AndIF(parm.RequireDate!=null&&parm.RequireDate>DateTime.MinValue,it=>it.RequireDate==parm.RequireDate.Value.ToLocalTime().Date)
|
||||
;
|
||||
|
||||
var response = Queryable()
|
||||
|
||||
@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
|
||||
using NLog;
|
||||
using DOAN.Model.System;
|
||||
using DOAN.Service.System.IService;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace DOAN.ServiceCore.Middleware
|
||||
{
|
||||
@ -29,16 +30,38 @@ namespace DOAN.ServiceCore.Middleware
|
||||
/// <returns></returns>
|
||||
public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
|
||||
{
|
||||
var method = context.HttpContext.Request.Method;
|
||||
|
||||
// 在执行控制器动作之前,检查是否有 DateTime 参数需要转换
|
||||
foreach (var arg in context.ActionArguments)
|
||||
// 根据请求方法获取请求参数
|
||||
var parameters = GetRequestParameters(context, method);
|
||||
|
||||
// 遍历每个参数并转换 DateTime 类型的参数
|
||||
foreach (var arg in parameters)
|
||||
{
|
||||
if (arg.Value is DateTime dateTime && dateTime.Kind == DateTimeKind.Utc)
|
||||
|
||||
//检查是否为 DateTime 类型
|
||||
if (arg.Value is DateTime dateTime)
|
||||
{
|
||||
var localTime = dateTime.ToLocalTime();
|
||||
context.ActionArguments[arg.Key] = localTime;
|
||||
//if (dateTime.Kind == DateTimeKind.Utc)
|
||||
//{
|
||||
var localTime = dateTime.ToLocalTime();
|
||||
context.ActionArguments[arg.Key] = localTime;
|
||||
//}
|
||||
}
|
||||
// 检查是否为 DateTime? 类型
|
||||
if (arg.Value is DateTime? && ((DateTime?)arg.Value).HasValue)
|
||||
{
|
||||
var nullableDateTime = (DateTime?)arg.Value;
|
||||
if (nullableDateTime.Value.Kind == DateTimeKind.Utc)
|
||||
{
|
||||
var localTime = nullableDateTime.Value.ToLocalTime();
|
||||
context.ActionArguments[arg.Key] = localTime;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//string msg = string.Empty;
|
||||
//var values = context.ModelState.Values;
|
||||
//foreach (var item in values)
|
||||
@ -62,9 +85,13 @@ namespace DOAN.ServiceCore.Middleware
|
||||
|
||||
// context.Result = new JsonResult(response);
|
||||
//}
|
||||
|
||||
|
||||
|
||||
return base.OnActionExecutionAsync(context, next);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// OnActionExecuted是在Action中的代码执行之后运行的方法。
|
||||
/// </summary>
|
||||
@ -146,5 +173,90 @@ namespace DOAN.ServiceCore.Middleware
|
||||
|
||||
return attribute as LogAttribute;
|
||||
}
|
||||
|
||||
private IDictionary<string, object> GetRequestParameters(ActionExecutingContext context, string method)
|
||||
{
|
||||
// 根据请求方法获取请求参数
|
||||
if (method.Equals("GET", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return ConvertToDictionary(context.HttpContext.Request.Query);
|
||||
}
|
||||
else if (method.Equals("POST", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// 假设 POST 请求参数已经绑定到了 ActionArguments 中
|
||||
return context.ActionArguments;
|
||||
}
|
||||
|
||||
return new Dictionary<string, object>();
|
||||
}
|
||||
|
||||
private IDictionary<string, object> ConvertToDictionary(IQueryCollection queryCollection)
|
||||
{
|
||||
var dictionary = new Dictionary<string, object>();
|
||||
|
||||
foreach (var entry in queryCollection)
|
||||
{
|
||||
// 尝试将查询字符串值转换为对象
|
||||
if (TryConvertToObjectOfType(entry.Value, out var value))
|
||||
{
|
||||
dictionary[entry.Key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
private bool TryConvertToObjectOfType(StringValues values, out object convertedValue)
|
||||
{
|
||||
if (values.Count > 1)
|
||||
{
|
||||
// 处理多个值的情况
|
||||
var list = new List<object>();
|
||||
foreach (var value in values)
|
||||
{
|
||||
if (TryParse(value, out var parsedValue))
|
||||
{
|
||||
list.Add(parsedValue);
|
||||
}
|
||||
}
|
||||
|
||||
convertedValue = list;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return TryParse(values.First(), out convertedValue);
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryParse(string value, out object parsedValue)
|
||||
{
|
||||
if (int.TryParse(value, out int intValue))
|
||||
{
|
||||
parsedValue = intValue;
|
||||
return true;
|
||||
}
|
||||
else if (long.TryParse(value, out long longValue))
|
||||
{
|
||||
parsedValue = longValue;
|
||||
return true;
|
||||
}
|
||||
else if (double.TryParse(value, out double doubleValue))
|
||||
{
|
||||
parsedValue = doubleValue;
|
||||
return true;
|
||||
}
|
||||
else if (DateTime.TryParse(value, out DateTime dateTimeValue))
|
||||
{
|
||||
parsedValue = dateTimeValue;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
parsedValue = value;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user