|
|
@ -1370,204 +1370,6 @@ namespace TradeManageNew.OuterService
|
|
|
|
md.Data = null;
|
|
|
|
md.Data = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (Method == "PostOrderUsedSaleEntry")
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var input = JsonConvert.DeserializeObject<OrderUsedSaleEntryInput>(ResponseContent);
|
|
|
|
|
|
|
|
var validatedSuccess = true;
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.OrderCode))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
|
|
|
md.Result = "Please enter order code";
|
|
|
|
|
|
|
|
md.Data = null;
|
|
|
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.GoodsCode))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
|
|
|
md.Result = "Please enter sku code";
|
|
|
|
|
|
|
|
md.Data = null;
|
|
|
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
input.GoodsCode = input.GoodsCode.Trim();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.TrackingCode))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
|
|
|
md.Result = "Please enter tracking code";
|
|
|
|
|
|
|
|
md.Data = null;
|
|
|
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
input.TrackingCode = input.TrackingCode.Trim();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (input.Quantity<=0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
|
|
|
md.Result = "The quantity must be greater than 0";
|
|
|
|
|
|
|
|
md.Data = null;
|
|
|
|
|
|
|
|
validatedSuccess = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (validatedSuccess)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var db = new ErpDbContext())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//订单信息
|
|
|
|
|
|
|
|
var order = db.DT_OrderInfo.FirstOrDefault(x =>
|
|
|
|
|
|
|
|
x.PlatOrderCode == input.OrderCode || x.OrderCode == input.OrderCode);
|
|
|
|
|
|
|
|
if (order is null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception($"There is no order with order number {input.OrderCode}");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//订单明细信息
|
|
|
|
|
|
|
|
var orderItem = db.DT_OrderGoods
|
|
|
|
|
|
|
|
.FirstOrDefault(x => x.OrderId == order.OrderId && x.GoodsSKU == input.GoodsCode);
|
|
|
|
|
|
|
|
if (orderItem is null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception(
|
|
|
|
|
|
|
|
$"There is no SKU with code {input.GoodsCode} in order [{input.OrderCode}]");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//SKU信息
|
|
|
|
|
|
|
|
var sku = db.HW_GoodsDetail.FirstOrDefault(x => x.DetailId == orderItem.DetailId);
|
|
|
|
|
|
|
|
if (sku is null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception(
|
|
|
|
|
|
|
|
$"There is no product information with ID {orderItem.DetailId}");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//检查是否存在相同跟踪号不同订单的情况
|
|
|
|
|
|
|
|
var repeatTrackingCodeOrderIds = db.DT_OrderUsedSaleEntry
|
|
|
|
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
|
|
|
|
.Select(x => x.OrderId)
|
|
|
|
|
|
|
|
.Distinct();
|
|
|
|
|
|
|
|
if (repeatTrackingCodeOrderIds.Any() && !repeatTrackingCodeOrderIds.Contains(order.OrderId))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception(
|
|
|
|
|
|
|
|
$"The tracking number has already been linked to an order");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var newOrderUsedSaleEntry =
|
|
|
|
|
|
|
|
new TradeUsedSale.Repositories.Models.DT_OrderUsedSaleEntry
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
OrderId = order.OrderId,
|
|
|
|
|
|
|
|
OrderCode = order.OrderCode,
|
|
|
|
|
|
|
|
PlatOrderCode=order.PlatOrderCode,
|
|
|
|
|
|
|
|
GoodsDetailId = sku.DetailId,
|
|
|
|
|
|
|
|
GoodsCode = sku.SKU1,
|
|
|
|
|
|
|
|
Quantity = input.Quantity,
|
|
|
|
|
|
|
|
TrackingCode = input.TrackingCode,
|
|
|
|
|
|
|
|
WarehouseLocation = input.WarehouseLocation,
|
|
|
|
|
|
|
|
CreationTime = DateTime.Now,
|
|
|
|
|
|
|
|
CreatorId = input.UserId
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
db.InsertWithInt32Identity(newOrderUsedSaleEntry);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
md.Code = "100";
|
|
|
|
|
|
|
|
md.Result = "Success";
|
|
|
|
|
|
|
|
md.Data = "";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Method == "GetOrderUsedSale")
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSaleInput>(ResponseContent);
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(input.TrackingCode))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
md.Code = "400";
|
|
|
|
|
|
|
|
md.Result = "Please enter tracking code";
|
|
|
|
|
|
|
|
md.Data = null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
input.TrackingCode = input.TrackingCode.Trim();
|
|
|
|
|
|
|
|
//可能需要处理扫描面单匹配的问题
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
using (var db = new ErpDbContext())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//此前已校验过一个跟踪号只能匹配相同的订单号
|
|
|
|
|
|
|
|
var orderUsedSaleEntryList = db.DT_OrderUsedSaleEntry
|
|
|
|
|
|
|
|
.Where(x => x.TrackingCode == input.TrackingCode)
|
|
|
|
|
|
|
|
.ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!orderUsedSaleEntryList.Any())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new Exception($"Tracking number {input.TrackingCode} has no data");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var groupOrderUsedSaleEntry = orderUsedSaleEntryList.GroupBy(x => x.GoodsDetailId)
|
|
|
|
|
|
|
|
.Select(o => new
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
o.Key,
|
|
|
|
|
|
|
|
Quantity = o.Sum(x => x.Quantity)
|
|
|
|
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var goodsDetailIds = groupOrderUsedSaleEntry.Select(x => x.Key).ToList();
|
|
|
|
|
|
|
|
var skus = db.HW_GoodsDetail.Where(x => goodsDetailIds.Contains(x.DetailId)).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var spuIds = skus.Select(x => x.GoodsId).Distinct().ToList();
|
|
|
|
|
|
|
|
var spus = db.HW_GoodsInfo.Where(x => spuIds.Contains(x.GoodsId));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var orderInfo = (from order in db.DT_OrderInfo
|
|
|
|
|
|
|
|
join orderXxInfo in db.DT_OrderXXInfo on order.OrderId equals orderXxInfo.OrderId
|
|
|
|
|
|
|
|
join shop in db.JC_Shop on order.ShopId equals shop.ShopId
|
|
|
|
|
|
|
|
where order.OrderId == orderUsedSaleEntryList.First().OrderId
|
|
|
|
|
|
|
|
select new
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
order.OrderId,
|
|
|
|
|
|
|
|
order.OrderCode,
|
|
|
|
|
|
|
|
order.PlatOrderCode,
|
|
|
|
|
|
|
|
orderXxInfo.RevName,
|
|
|
|
|
|
|
|
orderXxInfo.RevCountry,
|
|
|
|
|
|
|
|
orderXxInfo.RevAddr,
|
|
|
|
|
|
|
|
orderXxInfo.RevPhone,
|
|
|
|
|
|
|
|
orderXxInfo.RevPostCode,
|
|
|
|
|
|
|
|
shop.ShopName
|
|
|
|
|
|
|
|
}).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = new GetOrderUsedSaleDto
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
OrderId = orderInfo.OrderId,
|
|
|
|
|
|
|
|
OrderCode = orderInfo.OrderCode,
|
|
|
|
|
|
|
|
PlatOrderCode = orderInfo.PlatOrderCode,
|
|
|
|
|
|
|
|
RevName = orderInfo.RevName,
|
|
|
|
|
|
|
|
RevCountry = orderInfo.RevCountry,
|
|
|
|
|
|
|
|
RevAddr = orderInfo.RevAddr,
|
|
|
|
|
|
|
|
RevPhone = orderInfo.RevPhone,
|
|
|
|
|
|
|
|
RevPostCode = orderInfo.RevPostCode,
|
|
|
|
|
|
|
|
ShopName = orderInfo.ShopName,
|
|
|
|
|
|
|
|
Items = groupOrderUsedSaleEntry.Select(o =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var sku = skus.First(x => x.DetailId == o.Key);
|
|
|
|
|
|
|
|
var spu = spus.FirstOrDefault(x => x.GoodsId == o.Key);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new GetOrderUsedSaleItemDto
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ProductCode = spu?.GoodsCode,
|
|
|
|
|
|
|
|
ProductDescription = spu?.GoodsEnglisgName,
|
|
|
|
|
|
|
|
GoodsDetailId = sku.DetailId,
|
|
|
|
|
|
|
|
SkuCode = sku.SKU1,
|
|
|
|
|
|
|
|
Quantity = o.Quantity
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.ToList()
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
md.Code = "100";
|
|
|
|
|
|
|
|
md.Result = "Success";
|
|
|
|
|
|
|
|
md.Data = JsonConvert.SerializeObject(result);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Method == "GetOrderUsedSalePlatform")
|
|
|
|
if (Method == "GetOrderUsedSalePlatform")
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSalePlatformInput>(ResponseContent);
|
|
|
|
var input = JsonConvert.DeserializeObject<GetOrderUsedSalePlatformInput>(ResponseContent);
|
|
|
|