506583276@qq.com 2 years ago
parent
commit
cf1dc79728
  1. 25
      BBWYB.Client/APIServices/TestApiService.cs
  2. 2
      BBWYB.Client/GlobalContext.cs
  3. 9
      BBWYB.Client/Models/Enums.cs
  4. 2
      BBWYB.Client/Views/WebB/WebB.xaml.cs
  5. 6
      BBWYB.Client/WebView2Manager.cs
  6. 7
      BBWYB.Server.API/Controllers/DataRepairController.cs
  7. 43
      BBWYB.Server.API/Controllers/OrderController.cs
  8. 10
      BBWYB.Server.API/Controllers/PurchaseOrderController.cs
  9. 7
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  10. 52
      BBWYB.Server.Business/Extensions/OrderStateExtension.cs
  11. 59
      BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs
  12. 376
      BBWYB.Server.Business/Order/OrderBusiness.cs
  13. 850
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  14. 7
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  15. 46
      BBWYB.Server.Model/Db/Order/ExpressOrderRelationInfo.cs
  16. 10
      BBWYB.Server.Model/Db/Order/Order.cs
  17. 137
      BBWYB.Server.Model/Db/Order/OrderSku.cs
  18. 11
      BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs
  19. 15
      BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs
  20. 12
      BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs
  21. 23
      BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs
  22. 2
      BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs
  23. 4
      BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs
  24. 26
      BBWYB.Server.Model/Enums.cs
  25. 6
      U/WebView2Manager.cs

25
BBWYB.Client/APIServices/TestApiService.cs

@ -0,0 +1,25 @@
using BBWYB.Common.Http;
using BBWYB.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BBWYB.Client.APIServices
{
public class TestApiService : BaseApiService, IDenpendency
{
public TestApiService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
{
}
public ApiResponse<object> BatchManualSign()
{
return SendRequest<object>(globalContext.BBWYApiHost, "Api/PurchaseOrder/BatchManualSign", new
{
wayBillNoList = new string[] { "ceshi123456" }
}, null, System.Net.Http.HttpMethod.Post);
}
}
}

2
BBWYB.Client/GlobalContext.cs

@ -20,7 +20,7 @@ namespace BBWYB.Client
{
public GlobalContext()
{
BBWYBApiVersion = "10024";
BBWYBApiVersion = "10025";
}
private User user;

9
BBWYB.Client/Models/Enums.cs

@ -94,8 +94,8 @@
/// <para>暂停 = 7</para>
/// <para>已退款 = 8</para>
/// <para>Unknow = 100</para>
/// <para>打包中 = 140</para>
/// <para>待完结 = 150</para>
/// <para>待验收 = 140</para>
/// <para>待核算 = 150</para>
/// </summary>
public enum OrderState
{
@ -112,9 +112,8 @@
= 7,
退 = 8,
Unknow = 100,
= 140,
= 150
= 140,
= 150
//待配置 = 101,
}

2
BBWYB.Client/Views/WebB/WebB.xaml.cs

@ -80,7 +80,7 @@ namespace BBWYB.Client.Views.WebB
};
w2m.Init();
w2m.Init("bbwyb_web");
w2m.wb2.SetValue(Grid.RowProperty, 1);
w2m.wb2.Margin = new Thickness(1, 0, 1, 0);
//grid.Children.Clear();

6
BBWYB.Client/WebView2Manager.cs

@ -13,12 +13,12 @@ namespace BBWYB.Client
//{
// Init();
//}
public void Init()
public void Init(string folderName = "WebView2UserData")
{
if (wb2 == null)
{
wb2 = new WebView2();
var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WebView2UserData")).Result;
var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), folderName)).Result;
wb2.EnsureCoreWebView2Async(wb2Setting);
wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted;
wb2.NavigationCompleted += Wb2_NavigationCompleted;
@ -29,7 +29,7 @@ namespace BBWYB.Client
public Action<CoreWebView2WebMessageReceivedEventArgs> OnWebMessageReceived;
public Action<CoreWebView2NavigationCompletedEventArgs> OnNavigationCompleted;
public Action<CoreWebView2InitializationCompletedEventArgs> CoreWebView2InitializationCompleted;
public bool IsInitializationCompleted { get ; private set; }
public bool IsInitializationCompleted { get; private set; }
private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
{

7
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -14,12 +14,6 @@ namespace BBWYB.Server.API.Controllers
this.dataRepairBusiness = dataRepairBusiness;
}
[HttpPost]
public void RepairPurchaseExpressOrder()
{
dataRepairBusiness.RepairPurchaseExpressOrder();
}
/// <summary>
/// 手动订阅快递100
/// </summary>
@ -30,5 +24,6 @@ namespace BBWYB.Server.API.Controllers
{
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
}
}
}

43
BBWYB.Server.API/Controllers/OrderController.cs

@ -23,11 +23,32 @@ namespace BBWYB.Server.API.Controllers
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public OrderListResponse GetOrderList(QueryOrderRequest request)
public OrderListResponse GetOrderList([FromBody] QueryOrderRequest request)
{
return orderBusiness.GetOrderList(request);
}
/// <summary>
/// 获取快递单列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList([FromBody] QueryExpressOrderRequest request)
{
return orderBusiness.GetPurchaseExpressOrderList(request);
}
/// <summary>
/// 批量查询快递单列表
/// </summary>
/// <param name="orderIds">订单Id数组</param>
/// <returns></returns>
[HttpPost]
public IList<PurchaseExpressOrderResponse> BatchGetPurchaseExpressOrderList([FromBody] IList<string> orderIds)
{
return orderBusiness.GetPurchaseExpressOrderList(orderIds);
}
///// <summary>
@ -83,6 +104,26 @@ namespace BBWYB.Server.API.Controllers
orderBusiness.EditOrderSkuRemark(request);
}
/// <summary>
/// 来源SKU验收
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void CheckSku([FromBody] CheckSkuRequest request)
{
orderBusiness.CheckSku(request);
}
/// <summary>
/// 核算订单
/// </summary>
/// <param name="orderId"></param>
[HttpPost("{orderId}")]
public void CheckComputationOrder([FromRoute]string orderId)
{
orderBusiness.CheckComputationOrder(orderId);
}
/// <summary>
/// 齐库推送打包费
/// </summary>

10
BBWYB.Server.API/Controllers/PurchaseOrderController.cs

@ -122,6 +122,16 @@ namespace BBWYB.Server.API.Controllers
purchaseOrderBusiness.ManualSign(request);
}
/// <summary>
/// 批量手动收货
/// </summary>
/// <param name="request"></param>
[HttpPost]
public void BatchManualSign([FromBody] BatchManualSignRequest request)
{
purchaseOrderBusiness.BatchManualSign(request);
}
/// <summary>
/// 1688回调
/// </summary>

7
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

@ -1,6 +1,7 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Yitter.IdGenerator;
@ -14,12 +15,8 @@ namespace BBWYB.Server.Business
this.kuaiDi100Manager = kuaiDi100Manager;
}
public void RepairPurchaseExpressOrder()
{
}
public void SubscribeKD100(string waybillNo,string targetCompanyCode)
public void SubscribeKD100(string waybillNo, string targetCompanyCode)
{
kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
}

52
BBWYB.Server.Business/Extensions/OrderStateExtension.cs

@ -21,8 +21,7 @@ namespace BBWYB.Server.Business
{
if (order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState. ||
order.OrderState == Enums.OrderState.)
order.OrderState == Enums.OrderState.)
return;
if (orderSkuList == null)
@ -59,12 +58,19 @@ namespace BBWYB.Server.Business
#region 部分发货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
@ -78,20 +84,36 @@ namespace BBWYB.Server.Business
#region 部分收货
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
opi.OrderState == Enums.PurchaseOrderState.))
{
order.OrderState = Enums.OrderState.;
return;
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState. ||
opi.OrderState == Enums.PurchaseOrderState.) < orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
if (orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
return;
}
}
#endregion
#region 打包中
#region 待验收/待核算/已完成
if (orderPurchaseInfoList.Any(opi => opi.OrderState == Enums.PurchaseOrderState.) &&
orderPurchaseInfoList.Count(opi => opi.OrderState == Enums.PurchaseOrderState.) == orderPurchaseInfoList.Count())
{
order.OrderState = Enums.OrderState.;
if (order.IntoStoreType == Enums.IntoStoreType.)
{
if (orderSkuList.Any(osku => osku.IsCheck != true))
order.OrderState = Enums.OrderState.;
else
order.OrderState = Enums.OrderState.;
}
else
order.OrderState = Enums.OrderState.;
return;
}
#endregion
@ -131,7 +153,7 @@ namespace BBWYB.Server.Business
}
if (purchaseExpressOrderList == null)
purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(exo => exo.PurchaseOrderId == orderPurchaseInfo.PurchaseOrderId).ToList();
return;
if (orderPurchaseInfo.PurchasePlatform == Enums.Platform.) //支持采购sku和关联信息
{

59
BBWYB.Server.Business/Extensions/PurchaseExpressOrderExtension.cs

@ -0,0 +1,59 @@
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto;
namespace BBWYB.Server.Business.Extensions
{
public static class PurchaseExpressOrderExtension
{
/// <summary>
/// 计算快递单归属
/// </summary>
/// <param name="purchaseExpressOrder">必须是经过与快递单关系表进行联合查询的结果 (ExpressOrderRelationInfo-PurchaseExpressOrder)</param>
/// <param name="orderPurchaseInfoList"></param>
/// <param name="orderPurchaseRelationInfoList"></param>
/// <param name="orderPurchaseSkuInfoList"></param>
public static void CalculationBelongOrderSku(this PurchaseExpressOrderResponse purchaseExpressOrder,
IList<OrderPurchaseInfoResponse> orderPurchaseInfoList,
IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList,
IList<OrderPurchaseSkuInfoResponse> orderPurchaseSkuInfoList)
{
var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
if (purchaseOrder == null)
return;
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();
purchaseExpressOrder.BelongSkuIds = string.Join(",", orderSkuIds);
//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
{
purchaseExpressOrder.BelongSkuIds = purchaseOrder.BelongSkuIds;
//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);
//}
}
}
}
}

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

@ -54,8 +54,8 @@ namespace BBWYB.Server.Business
select = select.Where((o, ocs, oct) => childSelect.Where(opi => opi.OrderId == o.Id).Any());
}
select = select.WhereIf(request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState. ||
request.OrderState == Enums.OrderState.,
(o, ocs, oct) => o.OrderState == request.OrderState)
@ -111,6 +111,7 @@ namespace BBWYB.Server.Business
BuyerAccount = o.BuyerAccount,
InPackAmount = o.InPackAmount,
IsWaitPack = o.IsWaitPack,
IntoStoreType = o.IntoStoreType,
ContactName = ocs.ContactName,
Address = ocs.Address,
@ -128,6 +129,8 @@ namespace BBWYB.Server.Business
PurchaseAmount = oct.PurchaseAmount,
IsManualEdited = oct.IsManualEdited,
PackConfigState = o.PackConfigState,
SkuAmount = oct.SkuAmount,
PurchaseFreight = oct.PurchaseFreight
};
}
@ -151,7 +154,24 @@ namespace BBWYB.Server.Business
#endregion
#region 查询快递单信息
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => orderIdList.Contains(peo.OrderId)).ToList<PurchaseExpressOrderResponse>();
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => orderIdList.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
#endregion
#region 处理订单成本明细
@ -186,40 +206,51 @@ namespace BBWYB.Server.Business
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId);
if (purchaseOrder == null)
continue;
if (purchaseOrder.PurchasePlatform == Enums.Platform.)
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationInfoList, orderPurchaseSkuInfoList);
var currentOrderSkuList = orderSkuList.Where(osku => !string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds) &&
osku.OrderId == purchaseExpressOrder.OrderId &&
purchaseExpressOrder.BelongSkuIds.Contains(osku.SkuId)).ToList();
foreach (var osku in currentOrderSkuList)
{
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);
}
if (osku.PurchaseExpressOrderList.Any(peo => peo.WaybillNo == purchaseExpressOrder.WaybillNo))
continue;
osku.PurchaseExpressOrderList.Add(purchaseExpressOrder);
}
//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
}
@ -230,81 +261,114 @@ namespace BBWYB.Server.Business
};
}
//public void OutStock(OutStockRequest request)
//{
// var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
// if (dbOrder == null)
// throw new BusinessException($"订单{request.OrderId}不存在");
// var dbOrderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(opi => opi.OrderId == request.OrderId && opi.IsEnabled == true).ToList();
// var dbOrderPurchaseInfo = dbOrderPurchaseInfoList.FirstOrDefault(opi => opi.PurchaseOrderId == request.PurchaseOrderId);
// dbOrderPurchaseInfo.WaybillNo = request.WayBillNo;
// dbOrderPurchaseInfo.SourceExpressId = request.SourceExpressId;
// dbOrderPurchaseInfo.SourceExpressName = request.SourceExpressName;
// dbOrderPurchaseInfo.TargetExpressId = request.TargetExpressId;
// dbOrderPurchaseInfo.TargetExpressName = request.TargetExpressName;
// dbOrderPurchaseInfo.OrderState = Enums.PurchaseOrderState.待收货;
// #region 订单状态
// dbOrder.CalculationOrderState(fsql, null, dbOrderPurchaseInfoList);
// #endregion
// if (!string.IsNullOrEmpty(request.TargetExpressId))
// {
// #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端出库
// //通知C端
// try
// {
// restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/PurchaseOrder/QuanTanSendGoodsCallback",
// new
// {
// OrderId = request.OrderId,
// ExpressId = request.SourceExpressId,
// ExpressName = request.SourceExpressName,
// request.WayBillNo
// },
// null,
// HttpMethod.Post);
// }
// catch (Exception ex)
// {
// }
// #endregion
// fsql.Transaction(() =>
// {
// fsql.Update<OrderPurchaseInfo>().SetSource(dbOrderPurchaseInfo).ExecuteAffrows();
// fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, dbOrder.OrderState).ExecuteAffrows();
// });
//}
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList(QueryExpressOrderRequest request)
{
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => eori.OrderId == request.OrderId).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => op.OrderId == request.OrderId && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => opri.OrderId == request.OrderId && opri.SourceSkuId == request.SourceSkuId).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => posku.OrderId == request.OrderId).ToList<OrderPurchaseSkuInfoResponse>();
var orderSku = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId && osku.BelongSkuId == request.SourceSkuId).ToOne();
IList<PurchaseExpressOrderResponse> list = new List<PurchaseExpressOrderResponse>();
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
if (!string.IsNullOrEmpty(purchaseExpressOrder.BelongSkuIds))
{
if (purchaseExpressOrder.BelongSkuIds.Contains(orderSku.SkuId))
{
if (!list.Any(x => x.WaybillNo == purchaseExpressOrder.WaybillNo))
list.Add(purchaseExpressOrder);
}
}
}
//foreach (var purchaseOrder in orderPurchaseInfoList)
//{
// if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴)
// {
// var currentRelationList = orderPurchaseRelationList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// var waybillNos = orderPurchaseSkuList.Where(posku => posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId &&
// currentRelationList.Any(opri => opri.PurchaseSkuId == posku.PurchaseSkuId))
// .Select(x => x.WaybillNo)
// .ToList();
// foreach (var waybillNo in waybillNos)
// {
// var peo = purchaseExpressOrderList.FirstOrDefault(x => x.WaybillNo == waybillNo);
// if (peo != null && !list.Any(x => x.WaybillNo == waybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// else
// {
// var currentSkuList = orderSkuList.Where(osku => purchaseOrder.BelongSkuIds.Contains(osku.SkuId)).Select(osku => osku.BelongSkuId).Distinct().ToList();
// if (currentSkuList.Contains(request.SourceSkuId))
// {
// var peoList = purchaseExpressOrderList.Where(x => x.PurchaseOrderId == purchaseOrder.PurchaseOrderId).ToList();
// foreach (var peo in peoList)
// {
// if (!list.Any(x => x.WaybillNo == peo.WaybillNo && x.PurchaseOrderId == purchaseOrder.PurchaseOrderId))
// list.Add(peo);
// }
// }
// }
//}
#endregion
return list;
}
public IList<PurchaseExpressOrderResponse> GetPurchaseExpressOrderList(IList<string> orderIds)
{
var purchaseExpressOrderList = fsql.Select<ExpressOrderRelationInfo, PurchaseExpressOrder>()
.InnerJoin((eori, peo) => eori.WayBillNo == peo.WaybillNo)
.Where((eori, peo) => orderIds.Contains(eori.OrderId)).ToList((eori, peo) => new PurchaseExpressOrderResponse
{
CreateTime = peo.CreateTime,
ExpressContent = peo.ExpressContent,
ExpressChangedTime = peo.ExpressChangedTime,
ExpressState = peo.ExpressState,
IsSubscribeKD100 = peo.IsSubscribeKD100,
OrderId = eori.OrderId,
PurchaseOrderId = eori.PurchaseOrderId,
ShopId = eori.ShopId.Value,
SourceExpressId = peo.SourceExpressId,
SourceExpressName = peo.SourceExpressName,
TargetExpressId = peo.TargetExpressId,
TargetExpressName = peo.TargetExpressName,
WaybillNo = peo.WaybillNo
});
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIds.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var orderPurchaseRelationList = fsql.Select<OrderPurchaseRelationInfo>().Where(opri => orderIds.Contains(opri.OrderId)).ToList();
var orderPurchaseSkuList = fsql.Select<OrderPurchaseSkuInfo>().Where(posku => orderIds.Contains(posku.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
#region 处理SKU的快递单
foreach (var purchaseExpressOrder in purchaseExpressOrderList)
{
purchaseExpressOrder.CalculationBelongOrderSku(orderPurchaseInfoList, orderPurchaseRelationList, orderPurchaseSkuList);
}
#endregion
return purchaseExpressOrderList;
}
public void CancelOrder(CancelOrderRequest request, string mdsToken)
{
@ -320,13 +384,26 @@ namespace BBWYB.Server.Business
fsql.Update<Order>(request.OrderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
//取消C端采购单
restApiService.SendRequest("https://bbwy.qiyue666.com",
"/Api/Sql/ExecuteNonQuery",
new { sql = sql.AESEncrypt() },
new Dictionary<string, string>() { { "Authorization", $"{mdsToken}" } },
HttpMethod.Post);
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = request.OrderId,
PurchaseOrderState = Enums.OrderState.
}, null, HttpMethod.Post);
}
catch
{
}
//var sql = $"update purchaseorderv2 set OrderState=6 where Id='{request.OrderId}'";
////取消C端采购单
//restApiService.SendRequest("https://bbwy.qiyue666.com",
// "/Api/Sql/ExecuteNonQuery",
// new { sql = sql.AESEncrypt() },
// new Dictionary<string, string>() { { "Authorization", $"Bearer {mdsToken}" } },
// HttpMethod.Post);
try
{
@ -433,5 +510,70 @@ namespace BBWYB.Server.Business
{
}
public void CheckSku(CheckSkuRequest request)
{
var dbOrder = fsql.Select<Order>(request.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException($"订单{request.OrderId}不存在");
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == request.OrderId).ToList();
var orderSku = orderSkuList.FirstOrDefault(osku => osku.BelongSkuId == request.SourceSkuId);
if (orderSku == null)
throw new BusinessException($"订单{request.OrderId}的归属sku中不存在{request.SourceSkuId}");
if (orderSku.IsCheck == true)
throw new BusinessException("已验收,无需重复验收");
IUpdate<Order> updateOrder = null;
IUpdate<OrderSku> updateOrderSku = null;
orderSku.IsCheck = true;
updateOrderSku = fsql.Update<OrderSku>(orderSku.Id).Set(osku => osku.IsCheck, true);
var oldOrderState = dbOrder.OrderState;
dbOrder.CalculationOrderState(fsql, orderSkuList, null);
if (oldOrderState != dbOrder.OrderState)
updateOrder = fsql.Update<Order>(dbOrder.Id).Set(o => o.OrderState, dbOrder.OrderState);
fsql.Transaction(() =>
{
updateOrderSku?.ExecuteAffrows();
updateOrder?.ExecuteAffrows();
});
}
public void CheckComputationOrder(string orderId)
{
var order = fsql.Select<Order>(orderId).ToOne();
if (order == null)
throw new BusinessException("未查询到订单");
if (order.OrderState != Enums.OrderState.)
throw new BusinessException("订单状态不正确,只有待核算的订单才允许核算");
var orderCost = fsql.Select<OrderCost>(orderId).ToOne();
if (orderCost == null)
throw new BusinessException("未查询到订单成本");
if (Math.Abs(orderCost.Profit ?? 0) > 1M)
throw new BusinessException("订单利润绝对值不能大于1");
fsql.Update<Order>(orderId).Set(o => o.OrderState, Enums.OrderState.).ExecuteAffrows();
SendPurchaseOrderStateToC(orderId, Enums.OrderState.);
}
private void SendPurchaseOrderStateToC(string orderId, Enums.OrderState orderState)
{
try
{
restApiService.SendRequest("https://bbwy.qiyue666.com", "api/BatchPurchase/UpdatePurchaseOrderState", new
{
OrderId = orderId,
PurchaseOrderState = orderState
}, null, HttpMethod.Post);
}
catch
{
}
}
}
}

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

File diff suppressed because it is too large

7
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -126,6 +126,9 @@ namespace BBWYB.Server.Business.Sync
if (jobject.ContainsKey("BelongSkus"))
belongSkus = jobject["BelongSkus"] as JArray;
if (jobject.ContainsKey("IntoStoreType"))
dbOrder.IntoStoreType = (Enums.IntoStoreType?)jobject.Value<int?>("IntoStoreType");
}
catch (Exception ex)
{
@ -236,7 +239,7 @@ namespace BBWYB.Server.Business.Sync
}
}
private Enums.OrderState ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased)
private Enums.OrderState? ConvertQuanTanOrderState(string qtOrderState, bool isPay, bool isPurchased)
{
/*
-1
@ -264,7 +267,7 @@ namespace BBWYB.Server.Business.Sync
return Enums.OrderState.;
if (qtOrderState == "3")
return Enums.OrderState.;
return Enums.OrderState.Unknow;
return null;
}
}
}

46
BBWYB.Server.Model/Db/Order/ExpressOrderRelationInfo.cs

@ -0,0 +1,46 @@
using FreeSql.DataAnnotations;
namespace BBWYB.Server.Model.Db
{
/// <summary>
/// 快递单关系表
/// </summary>
[Table(Name = "expressorderrelationinfo", DisableSyncStructure = true)]
public partial class ExpressOrderRelationInfo
{
[Column(IsPrimary = true)]
public long Id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 订单Id
/// </summary>
[Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// 采购单Id
/// </summary>
[Column(StringLength = 50)]
public string PurchaseOrderId { get; set; }
/// <summary>
/// 店铺Id
/// </summary>
public long? ShopId { get; set; }
/// <summary>
/// 快递单号
/// </summary>
[Column(StringLength = 50)]
public string WayBillNo { get; set; }
}
}

10
BBWYB.Server.Model/Db/Order/Order.cs

@ -194,6 +194,12 @@ namespace BBWYB.Server.Model.Db
[Column(IsIgnore = true)]
public decimal? PurchaseAmount { get; set; } = 0.00M;
[Column(IsIgnore = true)]
public decimal? SkuAmount { get; set; } = 0.00M;
[Column(IsIgnore = true)]
public decimal? PurchaseFreight { get; set; } = 0.00M;
/// <summary>
/// 发货快递费
/// </summary>
@ -242,6 +248,10 @@ namespace BBWYB.Server.Model.Db
/// </summary>
[Column(DbType = "bit")]
public bool? IsWaitPack { get; set; } = false;
[Column(MapType = typeof(int?))]
public Enums.IntoStoreType? IntoStoreType { get; set; }
}
}

137
BBWYB.Server.Model/Db/Order/OrderSku.cs

@ -7,67 +7,68 @@ namespace BBWYB.Server.Model.Db
/// 订单SKU
/// </summary>
[Table(Name = "ordersku", DisableSyncStructure = true)]
public partial class OrderSku {
public partial class OrderSku
{
[Column(IsPrimary = true)]
public long Id { get; set; }
[Column(IsPrimary = true)]
public long Id { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
[Column(DbType = "datetime")]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 是否退款
/// </summary>
public bool? IsRefund { get; set; } = false;
/// <summary>
/// 是否退款
/// </summary>
public bool? IsRefund { get; set; } = false;
/// <summary>
/// 销售数量
/// </summary>
[Column(DbType = "int(1)")]
public int? ItemTotal { get; set; }
/// <summary>
/// Logo
/// </summary>
public string Logo { get; set; }
/// <summary>
/// 销售数量
/// </summary>
[Column(DbType = "int(1)")]
public int? ItemTotal { get; set; }
/// <summary>
/// Logo
/// </summary>
public string Logo { get; set; }
[Column(StringLength = 50)]
public string OrderId { get; set; }
/// <summary>
/// 销售单价
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? Price { get; set; }
[Column(StringLength = 50)]
public string OrderId { get; set; }
[Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 销售单价
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? Price { get; set; }
/// <summary>
/// 货号
/// </summary>
[Column(StringLength = 50)]
public string ProductNo { get; set; }
[Column(StringLength = 50)]
public string ProductId { get; set; }
/// <summary>
/// 货号
/// </summary>
[Column(StringLength = 50)]
public string ProductNo { get; set; }
public long? ShopId { get; set; }
public long? ShopId { get; set; }
[Column(StringLength = 50, IsNullable = false)]
public string SkuId { get; set; }
[Column(StringLength = 50, IsNullable = false)]
public string SkuId { get; set; }
/// <summary>
/// 归属SkuId
/// </summary>
[Column(StringLength = 50)]
public string BelongSkuId { get; set; }
/// <summary>
/// 归属SkuId
/// </summary>
[Column(StringLength = 50)]
public string BelongSkuId { get; set; }
/// <summary>
/// Sku标题
/// </summary>
/// <summary>
/// Sku标题
/// </summary>
public string Title { get; set; }
public string Title { get; set; }
/// <summary>
@ -76,23 +77,29 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "int(1)", MapType = typeof(int?))]
public Enums.PackConfigState? PackConfigState { get; set; }
/// <summary>
/// 买家支付运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? BuyerPayFreight { get; set; } = 0.00M;
/// <summary>
/// 实收打包费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? InPackAmount { get; set; } = 0.00M;
/// <summary>
/// SKU备注
/// </summary>
[Column(StringLength = 500)]
public string Remark { get; set; }
}
/// <summary>
/// 买家支付运费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? BuyerPayFreight { get; set; } = 0.00M;
/// <summary>
/// 实收打包费
/// </summary>
[Column(DbType = "decimal(20,2)")]
public decimal? InPackAmount { get; set; } = 0.00M;
/// <summary>
/// SKU备注
/// </summary>
[Column(StringLength = 500)]
public string Remark { get; set; }
/// <summary>
/// 是否验收
/// </summary>
[Column(DbType = "bit", IsNullable = true)]
public bool? IsCheck { get; set; }
}
}

11
BBWYB.Server.Model/Db/Order/PurchaseExpressOrder.cs

@ -40,11 +40,6 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 100)]
public string ExpressState { get; set; }
[Column(StringLength = 100)]
public string OrderId { get; set; }
[Column(StringLength = 100)]
public string PurchaseOrderId { get; set; }
[Column(StringLength = 100)]
public long ShopId { get; set; }
@ -79,6 +74,12 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "bit")]
public bool IsSubscribeKD100 { get; set; } = false;
[Column(IsIgnore = true)]
public string OrderId { get; set; }
[Column(IsIgnore = true)]
public string PurchaseOrderId { get; set; }
}
}

15
BBWYB.Server.Model/Dto/Request/Order/CheckSkuRequest.cs

@ -0,0 +1,15 @@
namespace BBWYB.Server.Model.Dto
{
public class CheckSkuRequest
{
/// <summary>
/// 订单Id
/// </summary>
public string OrderId { get; set; }
/// <summary>
/// 来源SKUID (JD)
/// </summary>
public string SourceSkuId { get; set; }
}
}

12
BBWYB.Server.Model/Dto/Request/Order/QueryExpressOrderRequest.cs

@ -0,0 +1,12 @@
namespace BBWYB.Server.Model.Dto
{
public class QueryExpressOrderRequest
{
public string OrderId { get; set; }
/// <summary>
/// 来源SKUID (JD)
/// </summary>
public string SourceSkuId { get; set; }
}
}

23
BBWYB.Server.Model/Dto/Request/PurchaseOrder/ManualSignRequest.cs

@ -2,14 +2,25 @@
{
public class ManualSignRequest
{
/// <summary>
/// 采购单Id
/// </summary>
public string PurchaseOrderId { get; set; }
///// <summary>
///// 采购单Id
///// </summary>
//public string PurchaseOrderId { get; set; }
///// <summary>
///// 订单SkuId (OrderSku对象的SkuId)
///// </summary>
//public string SkuId { get; set; }
/// <summary>
/// 订单SkuId (OrderSku对象的SkuId)
/// 快递单号
/// </summary>
public string SkuId { get; set; }
public string WayBillNo { get; set; }
}
public class BatchManualSignRequest
{
public IList<string> WayBillNoList { get; set; }
}
}

2
BBWYB.Server.Model/Dto/Response/Order/OrderResponse.cs

@ -145,6 +145,8 @@
/// 打包状态
/// </summary>
public Enums.PackConfigState? PackConfigState { get; set; }
public Enums.IntoStoreType? IntoStoreType { get; set; }
}
public class OrderListResponse

4
BBWYB.Server.Model/Dto/Response/Order/PurchaseExpressOrderResponse.cs

@ -4,5 +4,9 @@ namespace BBWYB.Server.Model.Dto
{
public class PurchaseExpressOrderResponse: PurchaseExpressOrder
{
/// <summary>
/// 归属SkuId,逗号间隔 (拳探SKU)
/// </summary>
public string BelongSkuIds { get; set; }
}
}

26
BBWYB.Server.Model/Enums.cs

@ -78,13 +78,9 @@
/// <para>待发货 = 2, 部分发货 = 120</para>
/// <para>待收货 = 3, 部分收货 = 130</para>
/// <para>已完成 = 4</para>
/// <para>锁定 = 5</para>
/// <para>已取消 = 6</para>
/// <para>暂停 = 7</para>
/// <para>已退款 = 8</para>
/// <para>Unknow = 100</para>
/// <para>打包中 = 140</para>
/// <para>待完结 = 150</para>
/// <para>待验收 = 140</para>
/// <para>待核算 = 150</para>
/// </summary>
public enum OrderState
{
@ -96,15 +92,9 @@
= 3,
= 130,
= 4,
= 5,
= 6,
= 7,
退 = 8,
Unknow = 100,
= 140,
= 150
//待配置 = 101,
= 140,
= 150
}
/// <summary>
@ -307,5 +297,13 @@
= 0,
= 1
}
/// <summary>
/// 入仓类型 (发回齐越 = 0, 厂商代发入仓 = 1)
/// </summary>
public enum IntoStoreType
{
= 0, = 1
}
}
}

6
U/WebView2Manager.cs

@ -13,12 +13,12 @@ namespace U
//{
// Init();
//}
public void Init()
public void Init(string folderName = "WebView2UserData")
{
if (wb2 == null)
{
wb2 = new WebView2();
var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "UPC_WebView2UserData")).Result;
var wb2Setting = CoreWebView2Environment.CreateAsync(userDataFolder: io.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), folderName)).Result;
wb2.EnsureCoreWebView2Async(wb2Setting);
wb2.CoreWebView2InitializationCompleted += Wb2_CoreWebView2InitializationCompleted;
wb2.NavigationCompleted += Wb2_NavigationCompleted;
@ -29,7 +29,7 @@ namespace U
public Action<CoreWebView2WebMessageReceivedEventArgs> OnWebMessageReceived;
public Action<CoreWebView2NavigationCompletedEventArgs> OnNavigationCompleted;
public Action<CoreWebView2InitializationCompletedEventArgs> CoreWebView2InitializationCompleted;
public bool IsInitializationCompleted { get ; private set; }
public bool IsInitializationCompleted { get; private set; }
private void Wb2_WebMessageReceived(object sender, CoreWebView2WebMessageReceivedEventArgs e)
{

Loading…
Cancel
Save