diff --git a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs
index 25af57d..283140c 100644
--- a/BBWYB.Server.Business/Extensions/OrderStateExtension.cs
+++ b/BBWYB.Server.Business/Extensions/OrderStateExtension.cs
@@ -14,12 +14,82 @@ namespace BBWYB.Server.Business
///
///
///
- public static Enums.OrderState CalculationOrderState(this Order order,
- IList orderSkuList,
- IList orderPurchaseInfoList)
+ public static void CalculationOrderState(this Order order,
+ IFreeSql fsql,
+ IList orderSkuList = null,
+ IList orderPurchaseInfoList = null)
{
+ if (order.OrderState == Enums.OrderState.已取消 ||
+ order.OrderState == Enums.OrderState.已完成 ||
+ order.OrderState == Enums.OrderState.待付款 ||
+ order.OrderState == Enums.OrderState.待完结)
+ return;
- return Enums.OrderState.Unknow;
+ if (orderSkuList == null)
+ orderSkuList = fsql.Select().Where(osku => osku.OrderId == order.Id).ToList();
+ if (orderPurchaseInfoList == null)
+ orderPurchaseInfoList = fsql.Select().Where(opi => opi.OrderId == order.Id && opi.IsEnabled == true).ToList();
+
+ #region 等待采购
+ if (orderPurchaseInfoList == null || orderPurchaseInfoList.Count() == 0)
+ {
+ order.OrderState = Enums.OrderState.等待采购;
+ return;
+ }
+ #endregion
+
+ #region 部分采购
+ foreach (var osku in orderSkuList)
+ {
+ if (!orderPurchaseInfoList.Any(opi => opi.BelongSkuIds.Contains(osku.SkuId)))
+ {
+ order.OrderState = Enums.OrderState.部分采购;
+ return;
+ }
+ }
+ #endregion
+
+ #region 待发货
+ if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.待发货))
+ {
+ order.OrderState = Enums.OrderState.待发货;
+ return;
+ }
+ #endregion
+
+ #region 部分发货
+ if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.待收货) &&
+ orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.待收货) < orderPurchaseInfoList.Count())
+ {
+ order.OrderState = Enums.OrderState.部分发货;
+ return;
+ }
+ #endregion
+
+ #region 待收货
+ if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.待收货))
+ {
+ order.OrderState = Enums.OrderState.待收货;
+ return;
+ }
+ #endregion
+
+ #region 部分收货
+ if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) &&
+ orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收) < orderPurchaseInfoList.Count())
+ {
+ order.OrderState = Enums.OrderState.部分收货;
+ return;
+ }
+ #endregion
+
+ #region 打包中
+ if (orderPurchaseInfoList.Count() == orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.已签收))
+ {
+ order.OrderState = Enums.OrderState.打包中;
+ return;
+ }
+ #endregion
}
}
}
diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs
index 48ec72e..0ea00b3 100644
--- a/BBWYB.Server.Business/Order/OrderBusiness.cs
+++ b/BBWYB.Server.Business/Order/OrderBusiness.cs
@@ -184,25 +184,29 @@ namespace BBWYB.Server.Business
if (!string.IsNullOrEmpty(request.TargetExpressId))
{
- try
- {
- opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
- .OutStock(new OP_OutStockRequest()
- {
- AppKey = request.AppKey,
- AppSecret = request.AppSecret,
- AppToken = request.AppToken,
- ExpressId = request.TargetExpressId,
- ExpressName = request.TargetExpressName,
- OrderId = request.OrderId,
- Platform = (AdapterEnums.PlatformType)request.Platform,
- WayBillNo = request.WayBillNo
- });
- }
- catch (Exception ex)
- {
- nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
- }
+ #region 订阅快递100
+
+ #endregion
+
+ //try
+ //{
+ // opPlatformClientFactory.GetClient((AdapterEnums.PlatformType)request.Platform)
+ // .OutStock(new OP_OutStockRequest()
+ // {
+ // AppKey = request.AppKey,
+ // AppSecret = request.AppSecret,
+ // AppToken = request.AppToken,
+ // ExpressId = request.TargetExpressId,
+ // ExpressName = request.TargetExpressName,
+ // OrderId = request.OrderId,
+ // Platform = (AdapterEnums.PlatformType)request.Platform,
+ // WayBillNo = request.WayBillNo
+ // });
+ //}
+ //catch (Exception ex)
+ //{
+ // nLogManager.Default().Error(ex, $"OutStock Request {JsonConvert.SerializeObject(request)}");
+ //}
}
#region 通知C端出库
@@ -229,12 +233,13 @@ namespace BBWYB.Server.Business
fsql.Transaction(() =>
{
- fsql.Update().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId)
+ fsql.Update().Where(opi => opi.PurchaseOrderId == request.PurchaseOrderId && opi.IsEnabled == true)
.Set(opi => opi.WaybillNo, request.WayBillNo)
.Set(opi => opi.SourceExpressId, request.SourceExpressId)
.Set(opi => opi.SourceExpressName, request.SourceExpressName)
.Set(opi => opi.TargetExpressId, request.TargetExpressId)
.Set(opi => opi.TargetExpressName, request.TargetExpressName)
+ .Set(opi => opi.OrderState, Enums.PurchaseOrderState.待收货)
.ExecuteAffrows();
if (dbOrder.OrderState == Enums.OrderState.待出库)
diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
index 6b5e45c..73e0dda 100644
--- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
+++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
@@ -827,13 +827,18 @@ namespace BBWYB.Server.Business
throw new BusinessException("无效采购单号");
if (!dbOrderPurchaseInfo.IsEnabled)
throw new BusinessException("采购单已失效");
- if (dbOrderPurchaseInfo.IsSign == true)
+ if (dbOrderPurchaseInfo.OrderState == Enums.PurchaseOrderState.已签收 ||
+ dbOrderPurchaseInfo.IsSign == true)
throw new BusinessException("采购单已签收");
+ dbOrderPurchaseInfo.IsSign = true;
+ dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收;
+
fsql.Transaction(() =>
{
- fsql.Update(dbOrderPurchaseInfo.Id).Set(opi => opi.IsSign, true).ExecuteAffrows();
+ fsql.Update().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
fsql.Update(dbOrder.Id).Set(o => o.IsWaitPack, true).ExecuteAffrows();
+ Enums.OrderState.待收货;
});
}
@@ -899,19 +904,19 @@ namespace BBWYB.Server.Business
{
#region 查询代发信息
currentProgress = "查询代发信息";
- var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId).ToOne();
+ var orderPurchaseInfo = fsql.Select().Where(o => o.PurchaseOrderId == purchaseOrderId && orderPurchaseInfo.IsEnabled == true).ToOne();
if (orderPurchaseInfo == null)
throw new Exception("未查询到代发信息");
orderId = orderPurchaseInfo.OrderId;
shopId = orderPurchaseInfo.ShopId;
#endregion
- #region 查询采购账号的归属店铺
- currentProgress = "查询采购账号归属店铺";
- var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
- if (shop == null)
- throw new Exception("未查询到店铺信息");
- #endregion
+ //#region 查询采购账号的归属店铺
+ //currentProgress = "查询采购账号归属店铺";
+ //var shop = venderBusiness.GetShopList(shopId: shopId)?.FirstOrDefault();
+ //if (shop == null)
+ // throw new Exception("未查询到店铺信息");
+ //#endregion
#region 查询采购账号
currentProgress = "查询采购账号";
@@ -938,58 +943,80 @@ namespace BBWYB.Server.Business
}
#endregion
- #region 获取目标平台的物流公司列表
- currentProgress = "获取店铺平台物流公司列表";
- var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
+ //#region 获取目标平台的物流公司列表
+ //currentProgress = "获取店铺平台物流公司列表";
+ //var expressCompanyList = venderBusiness.GetExpressCompanyList(new PlatformRequest()
+ //{
+ // AppKey = shop.AppKey,
+ // AppSecret = shop.AppSecret,
+ // AppToken = shop.AppToken,
+ // Platform = shop.PlatformId
+ //});
+ //if (expressCompanyList != null)
+ // expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
+ //#endregion
+
+
+
+ //#region 物流公司翻译
+ //currentProgress = "物流公司翻译";
+
+ //OP_QueryExpressCompanyResponse convertExpressCompany = null;
+
+ //try
+ //{
+ // convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName,
+ // (AdapterEnums.PlatformType)callbackPlatform,
+ // (AdapterEnums.PlatformType)shop.PlatformId,
+ // expressCompanyList);
+ // if (convertExpressCompany != null)
+ // expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
+ //}
+ //catch
+ //{
+ // throw;
+ //}
+ //finally
+ //{
+ // #region 店铺平台订单出库
+ // currentProgress = "店铺平台订单出库";
+ // orderBusiness.OutStock(new OutStockRequest()
+ // {
+ // AppKey = shop.AppKey,
+ // AppSecret = shop.AppSecret,
+ // AppToken = shop.AppToken,
+ // OrderId = orderId,
+ // TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
+ // TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
+ // SourceExpressId = wayBillNoResponse.ExpressId,
+ // SourceExpressName = wayBillNoResponse.ExpressName,
+ // PurchaseOrderId = purchaseOrderId,
+ // Platform = shop.PlatformId,
+ // WayBillNo = wayBillNoResponse.WayBillNo
+ // });
+ // #endregion
+ //}
+ //#endregion
+
+
+ #region 店铺平台订单出库
+ currentProgress = "店铺平台订单出库";
+ orderBusiness.OutStock(new OutStockRequest()
{
- AppKey = shop.AppKey,
- AppSecret = shop.AppSecret,
- AppToken = shop.AppToken,
- Platform = shop.PlatformId
+ //AppKey = shop.AppKey,
+ //AppSecret = shop.AppSecret,
+ //AppToken = shop.AppToken,
+ OrderId = orderId,
+ //TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
+ //TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
+ SourceExpressId = wayBillNoResponse.ExpressId,
+ SourceExpressName = wayBillNoResponse.ExpressName,
+ PurchaseOrderId = purchaseOrderId,
+ //Platform = shop.PlatformId,
+ WayBillNo = wayBillNoResponse.WayBillNo
});
- if (expressCompanyList != null)
- expressCompanyListInfo = JsonConvert.SerializeObject(expressCompanyList);
#endregion
- #region 物流公司翻译
- currentProgress = "物流公司翻译";
-
- OP_QueryExpressCompanyResponse convertExpressCompany = null;
-
- try
- {
- convertExpressCompany = expressCompanyNameConverter.Converter(wayBillNoResponse.ExpressName,
- (AdapterEnums.PlatformType)callbackPlatform,
- (AdapterEnums.PlatformType)shop.PlatformId,
- expressCompanyList);
- if (convertExpressCompany != null)
- expressCompanyInfo = JsonConvert.SerializeObject(convertExpressCompany);
- }
- catch
- {
- throw;
- }
- finally
- {
- #region 店铺平台订单出库
- currentProgress = "店铺平台订单出库";
- orderBusiness.OutStock(new OutStockRequest()
- {
- AppKey = shop.AppKey,
- AppSecret = shop.AppSecret,
- AppToken = shop.AppToken,
- OrderId = orderId,
- TargetExpressId = convertExpressCompany?.ExpressId ?? string.Empty, //物流公司Id
- TargetExpressName = convertExpressCompany?.ExpressName ?? string.Empty, //物流公司名称
- SourceExpressId = wayBillNoResponse.ExpressId,
- SourceExpressName = wayBillNoResponse.ExpressName,
- PurchaseOrderId = purchaseOrderId,
- Platform = shop.PlatformId,
- WayBillNo = wayBillNoResponse.WayBillNo
- });
- #endregion
- }
- #endregion
nLogManager.Default().Info($"DeliveryCallback 回调平台{callbackPlatform},订单号{orderId},采购单号{purchaseOrderId},执行进度[{currentProgress}],采购单物流信息:{wayBillNoResponseInfo},店铺平台物流公司列表:{expressCompanyListInfo},翻译后的物流公司:{expressCompanyInfo}");
}
@@ -1008,6 +1035,7 @@ namespace BBWYB.Server.Business
Task.Factory.StartNew(() =>
{
IList> updateOrderPurchaseSkuInfoList = new List>();
+ IList> updateOrderPurchaseInfoList = new List>();
var statusChanged = jObject["data"]["OrderLogisticsTracingModel"].Value("statusChanged").ToUpper();
var orderLogsItems = jObject["data"]["OrderLogisticsTracingModel"]["orderLogsItems"].Children();
@@ -1015,6 +1043,8 @@ namespace BBWYB.Server.Business
var purchaseOrderIds = orderLogsItems.Select(x => x.Value("orderId")).Distinct().ToList();
var orderEntryIds = orderLogsItems.Select(x => x.Value("orderEntryId")).Distinct().ToList();
+ var dbOrderPurchaseInfoList = fsql.Select().Where(opi => purchaseOrderIds.Contains(opi.PurchaseOrderId) && opi.IsEnabled == true).ToList();
+
var dbOrderPurchaseSkuInfoList = fsql.Select()
.WhereIf(purchaseOrderIds.Count() > 1, ops => purchaseOrderIds.Contains(ops.PurchaseOrderId))
.WhereIf(purchaseOrderIds.Count() == 1, ops => ops.PurchaseOrderId == purchaseOrderIds[0])
@@ -1043,12 +1073,20 @@ namespace BBWYB.Server.Business
foreach (var group in groupsByPoIds)
{
var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count();
+ if (isSignAll)
+ {
+ var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(x => x.PurchaseOrderId == group.Key && x.IsEnabled == true);
+ if (dbOrderPurchaseInfo != null)
+ {
+ dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.已签收;
+ updateOrderPurchaseInfoList.Add(fsql.Update().SetSource(dbOrderPurchaseInfo));
+ }
+ }
#region 通知齐库
var relationList = dbOrderPurchaseRelationInfoList.Where(x => x.PurchaseOrderId == group.Key).ToList();
foreach (var relation in relationList)
{
- //通知C端
try
{
restApiService.SendRequest("http://qiku.qiyue666.com",
@@ -1069,37 +1107,16 @@ namespace BBWYB.Server.Business
}
#endregion
}
-
- var groupsByOrderIds = dbOrderPurchaseSkuInfoList.GroupBy(x => x.OrderId);
- foreach (var group in groupsByOrderIds)
- {
- var isSignAll = group.Count() == group.Where(x => x.ExpressState == "SIGN").Count();
-
- if (isSignAll)
- {
- //通知C端
- try
- {
- restApiService.SendRequest("https://bbwy.qiyue666.com",
- "/Api/PurchaseOrder/SignPurchaseOrder",
- new { orderId = group.Key },
- null,
- HttpMethod.Post);
- }
- catch (Exception ex)
- {
-
- }
- }
- }
}
- if (updateOrderPurchaseSkuInfoList.Count() > 0)
+ if (updateOrderPurchaseSkuInfoList.Count() > 0 || updateOrderPurchaseInfoList.Count() > 0)
{
fsql.Transaction(() =>
{
foreach (var update in updateOrderPurchaseSkuInfoList)
update.ExecuteAffrows();
+ foreach (var update in updateOrderPurchaseInfoList)
+ update.ExecuteAffrows();
});
}
diff --git a/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs b/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
index cf11eca..8d8a304 100644
--- a/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
+++ b/BBWYB.Server.Model/Dto/Request/Order/OutStockRequest.cs
@@ -1,6 +1,6 @@
namespace BBWYB.Server.Model.Dto
{
- public class OutStockRequest : PlatformRequest
+ public class OutStockRequest
{
///
/// 订单Id