Browse Source

加入已任务发布日期为准

master
feng 3 years ago
parent
commit
0712acb559
  1. 15
      src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs
  2. 35
      src/Coldairarrow.Entity/DTO/TaskInfoDto.cs
  3. 61
      src/Coldairarrow.Util/Extention/Extention.Expression.cs

15
src/Coldairarrow.Business/HuiYan/teamitemsBusiness.cs

@ -320,7 +320,7 @@ namespace Coldairarrow.Business.HuiYan
var q = from a in q_titem.AsExpandable()
join b in Db.GetIQueryable<pricetasklog>() on a.Id equals b.TeamItemId into ab
from b in ab.DefaultIfEmpty()
select @select.Invoke(b, a);
select @select.Invoke(b==null?new pricetasklog():b, a);
var where = LinqHelper.True<TaskInfoDto>();
@ -355,18 +355,19 @@ namespace Coldairarrow.Business.HuiYan
}
public AjaxResult GetTjInfo(DateTime start, DateTime end)
{
Expression<Func<pricetasklog, teamitems, TaskInfoDto>> select = (a, b) => new TaskInfoDto
{
IsPass = b.IsQualified,
IsPass = b.IsQualified == null ? null : b.IsQualified.Value,
TeamId = b.TeamId,
TeamUserId = b.UserId,
TeamDate = b.CreateTime,
TeamOverDate = b.UpdateDate,
TeamOverDate = b.UpdateDate==null?null:b.UpdateDate.Value,
PriceTaskUserId = b.PriceTaskUserId,
TeamItemState = (TeamItemState?)b.State,
PriceTaskCreateDate=b.PriceTaskCreateDate
PriceTaskCreateDate = b.PriceTaskCreateDate == null ? null : b.PriceTaskCreateDate.Value
};
select = select.BuildExtendSelectExpre();
@ -375,13 +376,15 @@ namespace Coldairarrow.Business.HuiYan
var q = from a in q_titem.AsExpandable()
join b in Db.GetIQueryable<pricetasklog>() on a.Id equals b.TeamItemId into ab
from b in ab.DefaultIfEmpty()
select @select.Invoke(b, a);
select @select.Invoke(b==null?new pricetasklog():b, a);
var where = LinqHelper.True<TaskInfoDto>();
start=new DateTime(start.Year, start.Month, start.Day);
end = new DateTime(end.Year, end.Month, end.Day, 23, 59, 59);
where = where.And(c => c.PriceTaskCreateDate >= start && c.PriceTaskCreateDate <= end);
where = where.And(c => c.PriceTaskCreateDate >= start && c.PriceTaskCreateDate <= end);
var list = q.Where(where).ToList();

35
src/Coldairarrow.Entity/DTO/TaskInfoDto.cs

@ -33,6 +33,41 @@ namespace Coldairarrow.Entity.DTO
public DateTime? PriceTaskCreateDate { get; set; }
}
public class PriceTaskInfoDto:HuiYan.teamitems
{
public String TaskId { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime TaskCreateTime { get; set; }
/// <summary>
/// 分配的团队用户ID
/// </summary>
public String TaskUserId { get; set; }
/// <summary>
/// 团队商品的ID
/// </summary>
public String TeamItemId { get; set; }
/// <summary>
/// 比价状态
/// </summary>
public PriceTaskState TaskState { get; set; }
/// <summary>
/// 审核提交时间,超过24小时将自动完成
/// </summary>
public DateTime? WorkDate { get; set; }
/// <summary>
/// 订单ID
/// </summary>
public string OrderId { get; set; }
}
public class PriceTaskInfo
{

61
src/Coldairarrow.Util/Extention/Extention.Expression.cs

@ -235,41 +235,48 @@ namespace Coldairarrow.Util
private static Expression<TDelegate> GetExtendSelectExpre<TBase, TResult, TDelegate>(Expression<TDelegate> expression)
{
NewExpression newBody = Expression.New(typeof(TResult));
MemberInitExpression oldExpression = (MemberInitExpression)expression.Body;
ParameterExpression[] oldParamters = expression.Parameters.ToArray();
List<string> existsProperties = new List<string>();
oldExpression.Bindings.ToList().ForEach(aBinding =>
try
{
existsProperties.Add(aBinding.Member.Name);
});
NewExpression newBody = Expression.New(typeof(TResult));
MemberInitExpression oldExpression = (MemberInitExpression)expression.Body;
List<MemberBinding> newBindings = new List<MemberBinding>();
typeof(TBase).GetProperties().Where(x => !existsProperties.Contains(x.Name)).ToList().ForEach(aProperty =>
{
if (typeof(TResult).GetMembers().Any(x => x.Name == aProperty.Name))
ParameterExpression[] oldParamters = expression.Parameters.ToArray();
List<string> existsProperties = new List<string>();
oldExpression.Bindings.ToList().ForEach(aBinding =>
{
MemberBinding newMemberBinding = null;
var valueExpre = Expression.Property(oldParamters[0], aProperty.Name);
if (typeof(TBase).IsAssignableFrom(typeof(TResult)))
{
newMemberBinding = Expression.Bind(aProperty, valueExpre);
}
else
existsProperties.Add(aBinding.Member.Name);
});
List<MemberBinding> newBindings = new List<MemberBinding>();
typeof(TBase).GetProperties().Where(x => !existsProperties.Contains(x.Name)).ToList().ForEach(aProperty =>
{
if (typeof(TResult).GetMembers().Any(x => x.Name == aProperty.Name))
{
newMemberBinding = Expression.Bind(typeof(TResult).GetProperty(aProperty.Name), valueExpre);
MemberBinding newMemberBinding = null;
var valueExpre = Expression.Property(oldParamters[0], aProperty.Name);
if (typeof(TBase).IsAssignableFrom(typeof(TResult)))
{
newMemberBinding = Expression.Bind(aProperty, valueExpre);
}
else
{
newMemberBinding = Expression.Bind(typeof(TResult).GetProperty(aProperty.Name), valueExpre);
}
newBindings.Add(newMemberBinding);
}
newBindings.Add(newMemberBinding);
}
});
});
newBindings.AddRange(oldExpression.Bindings);
newBindings.AddRange(oldExpression.Bindings);
var body = Expression.MemberInit(newBody, newBindings.ToArray());
var resExpression = Expression.Lambda<TDelegate>(body, oldParamters);
var body = Expression.MemberInit(newBody, newBindings.ToArray());
var resExpression = Expression.Lambda<TDelegate>(body, oldParamters);
return resExpression;
return resExpression;
}
catch(Exception ex)
{
return null;
}
}
#endregion

Loading…
Cancel
Save