diff --git a/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs b/BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs new file mode 100644 index 0000000..6b736db --- /dev/null +++ b/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; + } + + /// + /// 检查任务过期 + /// + [HttpPost] + public void CheckTask() + { + timeLimitTaskSyncBusiness.CheckTask(); + } + } +} diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 88c895b..cb198f1 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/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().Where(t => orderIdList.Contains(t.OrderId)) + .ToList(); + + #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() diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index fb8599d..3c30438 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -477,7 +477,7 @@ namespace BBWYB.Server.Business if (updatePurchaseTimeLimitTaskOrderSkuList.Count() > 0) { fsql.Update().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().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 insertOrderCost = null; IUpdate updateOrderCost = null; + List updatePurchaseTimeLimitTaskOrderSkuList = new List(); + 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().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); } + ///// ///// 手动收货 ///// diff --git a/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs b/BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs new file mode 100644 index 0000000..34fc9ce --- /dev/null +++ b/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().Set(t => t.IsTimely, false) + .Where(t => t.CompletionTime == null) + .Where(t => t.ExpirationTime < DateTime.Now) + .ExecuteAffrows(); + } + } +} diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs index daafc7e..6e78a6c 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderSkuResponse.cs @@ -4,19 +4,20 @@ namespace BBWYB.Server.Model.Dto { public class OrderSkuResponse : OrderSku { - // /// - // /// 采购方案 - // /// - //public long SchemeId { get;set; } - public OrderSkuResponse() { PurchaseExpressOrderList = new List(); + TimeLimitTaskList = new List(); } /// /// 快递单列表 /// public IList PurchaseExpressOrderList { get; set; } + + /// + /// 限时任务列表 + /// + public IList TimeLimitTaskList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs b/BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs new file mode 100644 index 0000000..b4f0378 --- /dev/null +++ b/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 + { + } +}