From c4f9580164155cc24234330c67c82530b67b3d12 Mon Sep 17 00:00:00 2001
From: shanji <18996038927@163.com>
Date: Mon, 10 Jul 2023 13:23:50 +0800
Subject: [PATCH] =?UTF-8?q?=E9=99=90=E6=97=B6=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../TimeLimitTaskSyncController.cs | 24 ++++++++
BBWYB.Server.Business/Order/OrderBusiness.cs | 57 ++++++++-----------
.../PurchaseOrder/PurchaseOrderBusiness.cs | 32 +++++++----
.../Sync/TimeLimitTaskSyncBusiness.cs | 24 ++++++++
.../Dto/Response/Order/OrderSkuResponse.cs | 11 ++--
.../TimeLimitTask/TimeLimitTaskResponse.cs | 8 +++
6 files changed, 107 insertions(+), 49 deletions(-)
create mode 100644 BBWYB.Server.API/Controllers/TimeLimitTaskSyncController.cs
create mode 100644 BBWYB.Server.Business/Sync/TimeLimitTaskSyncBusiness.cs
create mode 100644 BBWYB.Server.Model/Dto/Response/TimeLimitTask/TimeLimitTaskResponse.cs
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
+ {
+ }
+}