Browse Source

限时任务

yijia
shanji 2 years ago
parent
commit
c4f9580164
  1. 24
      BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs
  2. 57
      BBWYB.Server.Business/Order/OrderBusiness.cs
  3. 32
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  4. 24
      BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs
  5. 11
      BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs
  6. 8
      BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs

24
BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs

@ -0,0 +1,24 @@
using BBWYB.Server.Business.Sync;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace BBWYB.Server.API.Controllers
{
public class TimeLimitTaskSyncController : BaseApiController
{
private TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness;
public TimeLimitTaskSyncController(IHttpContextAccessor httpContextAccessor, TimeLimitTaskSyncBusiness timeLimitTaskSyncBusiness) : base(httpContextAccessor)
{
this.timeLimitTaskSyncBusiness = timeLimitTaskSyncBusiness;
}
/// <summary>
/// 检查任务过期
/// </summary>
[HttpPost]
public void CheckTask()
{
timeLimitTaskSyncBusiness.CheckTask();
}
}
}

57
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -217,42 +217,31 @@ namespace BBWYB.Server.Business
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
}
#endregion
#region 限时任务
#region 需要订单关联的任务 (采购任务)
var purchaseTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => orderIdList.Contains(t.OrderId))
.ToList<TimeLimitTaskResponse>();
#endregion
#region 不需要订单关联的任务 (合格证任务)
//var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
//if (purchaseOrder == null)
// continue;
//if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
//{
// var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo &&
// posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId)
// .Select(posku => posku.PurchaseSkuId).ToList();
// var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// purchaseSkuIds.Contains(ori.PurchaseSkuId))
// .Select(ori => ori.BelongSkuId)
// .Distinct()
// .ToList();
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// orderSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
//else
//{
// var currentOrderSkuList = orderSkuList.Where(osku => osku.OrderId == purchaseOrder.OrderId &&
// purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
// foreach (var osku in currentOrderSkuList)
// {
// if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
// continue;
// osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
// }
//}
#endregion
foreach (var order in orderList)
{
foreach (var orderSku in order.ItemList)
{
var purchaseTimeLimitTask = purchaseTimeLimitTaskList.FirstOrDefault(x => x.OrderId == order.Id && x.SkuId == orderSku.SkuId);
if (purchaseTimeLimitTask != null)
orderSku.TimeLimitTaskList.Add(purchaseTimeLimitTask);
}
}
#endregion
}
return new OrderListResponse()

32
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -477,7 +477,7 @@ namespace BBWYB.Server.Business
if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0)
{
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now)
.SetIf(dbOrder.PayTime != null, t => t.IsTimely == DateTime.Now < t.ExpirationTime)
.SetIf(dbOrder.PayTime != null, t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false))
.Where(t => t.OrderId == request.OrderId)
.Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId))
.Where(t => t.CompletionTime == null)
@ -573,15 +573,6 @@ namespace BBWYB.Server.Business
if (request.AssociationPurchaseOrderList == null || request.AssociationPurchaseOrderList.Count() == 0)
throw new BusinessException("缺少采购单信息");
//var dbPurchaseOrderList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId).ToList();
//var dbInvalidPurchaseOrderIdList = dbPurchaseOrderList.Where(opi => !opi.IsEnabled).Select(opi => opi.PurchaseOrderId).ToList();
//var dbvalidPurchaseOrderList = dbPurchaseOrderList.Where(opi => opi.IsEnabled).ToList();
//if (request.AssociationPurchaseOrderList.Any(x => dbInvalidPurchaseOrderIdList.Contains(x.PurchaseOrderId)))
// throw new BusinessException("关联采购单时不能包含历史采购单");
var validation_groups_pid = request.AssociationPurchaseOrderList.GroupBy(po => po.PurchaseOrderId);
if (validation_groups_pid.Any(x => x.Count() > 1))
throw new BusinessException("不允许包含重复的采购单");
@ -641,6 +632,8 @@ namespace BBWYB.Server.Business
IInsert<OrderCost> insertOrderCost = null;
IUpdate<OrderCost> updateOrderCost = null;
List<string> updatePurchaseTimeLimitTaskOrderSkuList = new List<string>();
foreach (var purchaseOrder in request.AssociationPurchaseOrderList)
{
//if (dbInvalidPurchaseOrderIdList.Contains(purchaseOrder.PurchaseOrderId))
@ -803,6 +796,15 @@ namespace BBWYB.Server.Business
};
insertOrderPurchaseInfoList.Add(dbPurchaserOrder);
#endregion
#region 采购限时任务
foreach (var ocd in purchaseOrder.AssocationOrderCostDetailList)
{
if (!updatePurchaseTimeLimitTaskOrderSkuList.Any(x => x == ocd.SkuId))
updatePurchaseTimeLimitTaskOrderSkuList.Add(ocd.SkuId);
}
#endregion
}
else
{
@ -900,6 +902,15 @@ namespace BBWYB.Server.Business
if (insertOrderPurchaseRelationInfoList.Count() > 0)
fsql.Insert(insertOrderPurchaseRelationInfoList).ExecuteAffrows();
if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0)
{
fsql.Update<TimeLimitTask>().Set(t => t.CompletionTime, DateTime.Now)
.SetIf(dbOrder.PayTime != null, t => t.IsTimely == (DateTime.Now < t.ExpirationTime ? true : false))
.Where(t => t.OrderId == request.OrderId)
.Where(t => updatePurchaseTimeLimitTaskOrderSkuList.Contains(t.SkuId))
.Where(t => t.CompletionTime == null)
.ExecuteAffrows();
}
if (updateOrderPurchaseInfoList.Count() > 0)
{
foreach (var update in updateOrderPurchaseInfoList)
@ -1493,6 +1504,7 @@ namespace BBWYB.Server.Business
taskSchedulerManager.PurchaseOrderCallbackTaskScheduler);
}
///// <summary>
///// 手动收货
///// </summary>

24
BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs

@ -0,0 +1,24 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model.Db;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business.Sync
{
public class TimeLimitTaskSyncBusiness : BaseBusiness, IDenpendency
{
//private TaskSchedulerManager taskSchedulerManager;
public TimeLimitTaskSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
{
//this.taskSchedulerManager = taskSchedulerManager;
}
public void CheckTask()
{
fsql.Update<TimeLimitTask>().Set(t => t.IsTimely, false)
.Where(t => t.CompletionTime == null)
.Where(t => t.ExpirationTime < DateTime.Now)
.ExecuteAffrows();
}
}
}

11
BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs

@ -4,19 +4,20 @@ namespace BBWYB.Server.Model.Dto
{
public class OrderSkuResponse : OrderSku
{
// /// <summary>
// /// 采购方案
// /// </summary>
//public long SchemeId { get;set; }
public OrderSkuResponse()
{
PurchaseExpressOrderList = new List<PurchaseExpressOrderResponse>();
TimeLimitTaskList = new List<TimeLimitTaskResponse>();
}
/// <summary>
/// 快递单列表
/// </summary>
public IList<PurchaseExpressOrderResponse> PurchaseExpressOrderList { get; set; }
/// <summary>
/// 限时任务列表
/// </summary>
public IList<TimeLimitTaskResponse> TimeLimitTaskList { get; set; }
}
}

8
BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs

@ -0,0 +1,8 @@
using BBWYB.Server.Model.Db;
namespace BBWYB.Server.Model.Dto
{
public class TimeLimitTaskResponse : TimeLimitTask
{
}
}
Loading…
Cancel
Save