You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
5.3 KiB

using BBWYB.Client.Models;
using BBWYB.Common.Http;
using BBWYB.Common.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
namespace BBWYB.Client.APIServices
{
public class PurchaseOrderService : BaseApiService, IDenpendency
{
public PurchaseOrderService(RestApiService restApiService, GlobalContext globalContext) : base(restApiService, globalContext)
{
}
/// <summary>
/// 按采购商分组组装采购产品参数
/// </summary>
/// <param name="productSkuWithSchemeList"></param>
/// <returns></returns>
private IList<object> CombineCargoParamGroup(IList<ProductSkuWithScheme> productSkuWithSchemeList)
{
IList<object> cargoParamGroupList = new List<object>();
var purchaserGroups = productSkuWithSchemeList.GroupBy(s => s.PurchaserId);
foreach (var purchaserGroup in purchaserGroups)
{
var first = purchaserGroup.FirstOrDefault();
var cargoParamList = new List<object>();
foreach (var productSkuWithScheme in purchaserGroup)
{
foreach (var purchaseSchemeProductSku in productSkuWithScheme.PurchaseSchemeProductSkuList)
{
cargoParamList.Add(new
{
ProductId = purchaseSchemeProductSku.PurchaseProductId,
SkuId = purchaseSchemeProductSku.PurchaseSkuId,
SpecId = purchaseSchemeProductSku.PurchaseSkuSpecId,
Quantity = purchaseSchemeProductSku.ItemTotal,
BelongSkuId = productSkuWithScheme.SkuId,
SchemeId = productSkuWithScheme.PurchaseSchemeId
});
}
}
var cargoParamGroup = new
{
PurchaserId = purchaserGroup.Key,
first.PurchaserName,
first.PurchasePlatform,
cargoParamList
};
cargoParamGroupList.Add(cargoParamGroup);
}
return cargoParamGroupList;
}
/// <summary>
/// 预览订单
/// </summary>
/// <param name="consignee"></param>
/// <param name="productSkuWithSchemeList"></param>
/// <param name="purchaseOrderMode"></param>
/// <returns></returns>
public ApiResponse<PreviewOrderResponse> PreviewPurchaseOrder(Consignee consignee, IList<ProductSkuWithScheme> productSkuWithSchemeList, PurchaseOrderMode purchaseOrderMode)
{
var cargoParamGroupList = CombineCargoParamGroup(productSkuWithSchemeList);
return SendRequest<PreviewOrderResponse>(globalContext.BBWYApiHost, "api/PurchaseOrder/PreviewPurchaseOrder", new
{
purchaseOrderMode,
consignee,
cargoParamGroupList,
globalContext.User.Shop.PurchaseAccountList
}, null, HttpMethod.Post);
}
/// <summary>
/// 创建采购单
/// </summary>
/// <param name="consignee"></param>
/// <param name="productSkuWithSchemeList"></param>
/// <param name="purchaseOrderMode"></param>
/// <param name="remark"></param>
/// <param name="orderId"></param>
/// <param name="shopId"></param>
/// <param name="extensions"></param>
/// <returns></returns>
public ApiResponse<object> FastCreateOrder(Consignee consignee,
IList<ProductSkuWithScheme> productSkuWithSchemeList,
PurchaseOrderMode purchaseOrderMode,
string remark,
string orderId,
long shopId,
string extensions)
{
var cargoParamGroupList = CombineCargoParamGroup(productSkuWithSchemeList);
return SendRequest<object>(globalContext.BBWYApiHost, "api/purchaseOrder/CreatePurchaseOrder", new
{
purchaseOrderMode,
consignee,
cargoParamGroupList,
globalContext.User.Shop.PurchaseAccountList,
remark,
orderId,
shopId,
extensions
}, null, HttpMethod.Post);
}
/// <summary>
/// 查询审核采购单
/// </summary>
/// <param name="shopIdList"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public ApiResponse<IList<AuditPurchaseOrderResponse>> GetAuditPurchaseOrderList(IList<long> shopIdList, DateTime startDate, DateTime endDate)
{
return SendRequest<IList<AuditPurchaseOrderResponse>>(globalContext.BBWYApiHost, "Api/PurchaseOrder/GetAuditPurchaseOrderList", new
{
startDate,
endDate,
shopIdList
}, null, HttpMethod.Post);
}
}
}