Commit 278d3155 by huluobin

采购回调 参数调整 jackson设置

parent 43909d2a
......@@ -2,6 +2,7 @@ package com.bailuntec.ana.application.order;
import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.domain.order.OrderDetail;
import com.bailuntec.ana.domain.purchase.PurchaseOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
......@@ -41,4 +42,14 @@ public interface IOrderDetailService extends IService<OrderDetail> {
* @param order 订单
*/
void setOrderDetail(Order order);
/**
* <p>
* 聚合订单详情
* </p>
*
* @param purchaseOrderDetailList purchaseOrderDetailList
*/
void setPurchaseOrderDetailOrderDetail(List<PurchaseOrderDetail> purchaseOrderDetailList);
}
......@@ -4,6 +4,7 @@ import com.bailuntec.ana.application.order.IOrderDetailService;
import com.bailuntec.ana.application.order.IOrderSpecificationService;
import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.domain.order.OrderDetail;
import com.bailuntec.ana.domain.purchase.PurchaseOrderDetail;
import com.bailuntec.ana.infrastructure.common.util.ListUtil;
import com.bailuntec.ana.infrastructure.mapper.order.OrderDetailMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -53,6 +54,23 @@ public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, Order
}
}
@Override
public void setPurchaseOrderDetailOrderDetail(List<PurchaseOrderDetail> purchaseOrderDetailList) {
List<String> orderDetailIdList = purchaseOrderDetailList.stream().map(PurchaseOrderDetail::getOrderDetailId).collect(Collectors.toList());
if (ListUtil.isNotEmpty(orderDetailIdList)) {
List<OrderDetail> orderDetailList = this.listByIds(orderDetailIdList);
orderSpecificationService.setOrderSpecification(orderDetailList);
Map<String, OrderDetail> orderDetailMap = orderDetailList.stream()
.collect(Collectors.toMap(OrderDetail::getOrderId, orderDetail -> orderDetail, (k1, k2) -> k1));
purchaseOrderDetailList.forEach(purchaseOrderDetail -> purchaseOrderDetail.setOrderDetail(orderDetailMap.get(purchaseOrderDetail.getOrderDetailId())));
}
}
@Override
public void setOrderDetail(Order order) {
List<OrderDetail> orderDetailList = baseMapper.selectByOrderId(order.getId());
......
package com.bailuntec.ana.application.purchase;
import com.bailuntec.ana.domain.purchase.PurchaseOrder;
import com.bailuntec.ana.domain.purchase.PurchaseOrderDetail;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* 服务类
* </p>
*
* @author robbendev
......@@ -13,4 +16,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IPurchaseOrderDetailService extends IService<PurchaseOrderDetail> {
/**
* <p>
* 设置采购订单详情
* </p>
*
* @param purchaseOrderList purchaseOrderList
*/
void setPurchaseOrderDetail(List<PurchaseOrder> purchaseOrderList);
}
......@@ -5,6 +5,8 @@ import com.bailuntec.ana.vo.purchase.PmsCallBackResult;
import com.bailuntec.ana.vo.purchase.PurchaseCallBackRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
......@@ -23,4 +25,15 @@ public interface IPurchaseOrderService extends IService<PurchaseOrder> {
* @param request callback
*/
void callBackPurchaseOrder(PmsCallBackResult<PurchaseCallBackRequest> request);
/**
* <p>
* 查询平台订单对应的所有采购订单
* </p>
*
* @param orderId 平台订单
* @return 采购订单
*/
List<PurchaseOrder> listByOrderId(String orderId);
}
package com.bailuntec.ana.application.purchase.impl;
import com.bailuntec.ana.application.purchase.IPurchaseOrderDetailService;
import com.bailuntec.ana.domain.purchase.PurchaseOrder;
import com.bailuntec.ana.domain.purchase.PurchaseOrderDetail;
import com.bailuntec.ana.infrastructure.common.util.ListUtil;
import com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseOrderDetailMapper;
import com.bailuntec.ana.application.purchase.IPurchaseOrderDetailService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
* 服务实现类
* 服务实现类
* </p>
*
* @author robbendev
......@@ -17,4 +24,20 @@ import org.springframework.stereotype.Service;
@Service
public class PurchaseOrderDetailServiceImpl extends ServiceImpl<PurchaseOrderDetailMapper, PurchaseOrderDetail> implements IPurchaseOrderDetailService {
@Override
public void setPurchaseOrderDetail(List<PurchaseOrder> purchaseOrderList) {
List<String> purchaseOrderIdList = purchaseOrderList.stream().map(PurchaseOrder::getId).collect(Collectors.toList());
if (ListUtil.isNotEmpty(purchaseOrderIdList)) {
List<PurchaseOrderDetail> purchaseOrderDetailList = baseMapper.selectList(new LambdaQueryWrapper<PurchaseOrderDetail>()
.in(PurchaseOrderDetail::getPurchaseOrderId, purchaseOrderIdList));
Map<String, List<PurchaseOrderDetail>> listMap = purchaseOrderDetailList.stream()
.collect(Collectors.groupingBy(PurchaseOrderDetail::getPurchaseOrderId));
purchaseOrderList.forEach(purchaseOrder -> {
purchaseOrder.setPurchaseOrderDetailList(listMap.get(purchaseOrder.getId()));
});
}
}
}
package com.bailuntec.ana.application.purchase.impl;
import com.bailuntec.ana.application.order.IOrderDetailService;
import com.bailuntec.ana.application.order.IOrderService;
import com.bailuntec.ana.application.purchase.IPurchaseOrderDetailService;
import com.bailuntec.ana.application.purchase.IPurchaseOrderService;
import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.domain.order.OrderDetail;
import com.bailuntec.ana.domain.purchase.PurchaseOrder;
import com.bailuntec.ana.domain.purchase.PurchaseOrderDetail;
import com.bailuntec.ana.domain.purchase.PurchaseTask;
import com.bailuntec.ana.infrastructure.common.exception.BizRuntimeException;
import com.bailuntec.ana.infrastructure.common.exception.ErrorCode;
import com.bailuntec.ana.infrastructure.feign.OmsApi;
import com.bailuntec.ana.infrastructure.mapper.order.OrderDetailMapper;
import com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseOrderDetailMapper;
import com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseOrderMapper;
import com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseTaskDetailMapper;
import com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseTaskMapper;
import com.bailuntec.ana.vo.order.Currency;
import com.bailuntec.ana.vo.order.resp.PublishOrderCallBackRequest;
import com.bailuntec.ana.vo.order.resp.PurchaseInfo;
import com.bailuntec.ana.vo.purchase.CallBackPurchaseOrderDetail;
import com.bailuntec.ana.vo.purchase.PmsCallBackResult;
import com.bailuntec.ana.vo.purchase.PurchaseCallBackRequest;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
......@@ -36,33 +51,131 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
OrderDetailMapper orderDetailMapper;
@Resource
IOrderDetailService orderDetailService;
@Resource
IOrderService orderService;
@Resource
OmsApi omsApi;
@Resource
PurchaseOrderDetailMapper purchaseOrderDetailMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public void callBackPurchaseOrder(PmsCallBackResult<PurchaseCallBackRequest> request) {
String purchaseTaskId = request.getId();
//采购任务对应的订单详情列表
List<OrderDetail> orderDetailList = orderDetailMapper.selectByTaskId(purchaseTaskId);
PurchaseTask purchaseTask = purchaseTaskMapper.selectById(purchaseTaskId);
if (!request.getData().getSuccess()) {
//采购任务失败
purchaseTask.setStatus(PurchaseTask.STATUS_FAILED);
purchaseTask.setMessage(request.getData().getMessage());
purchaseTaskMapper.updateById(purchaseTask);
//订单详情采购状态采购失败
orderDetailList.forEach(orderDetail -> {
if (!orderDetail.getPurchaseStatus().equals(OrderDetail.PURCHASE_STATUS_PURCHASING)) {
throw new BizRuntimeException(ErrorCode.PU_10001);
}
orderDetail.setPurchaseStatus(OrderDetail.PURCHASE_STATUS_FAILED);
orderDetail.setPurchaseMessage(request.getData().getMessage());
orderDetailMapper.updateById(orderDetail);
});
} else {
//采购成功
purchaseTask.setStatus(PurchaseTask.STATUS_SUCCESS);
purchaseTaskMapper.updateById(purchaseTask);
//订单详情采购状态采购成功
orderDetailList.forEach(orderDetail -> {
if (!orderDetail.getPurchaseStatus().equals(OrderDetail.PURCHASE_STATUS_PURCHASING)) {
throw new BizRuntimeException(ErrorCode.PU_10001);
}
orderDetail.setPurchaseStatus(OrderDetail.PURCHASE_STATUS_SUCCESS);
orderDetailMapper.updateById(orderDetail);
});
//todo 回调oms
//生成采购订单
request.getData().getProducts().forEach((purchaseOrderNo, callBackPurchaseOrderDetailList) -> {
BigDecimal totalPrice = callBackPurchaseOrderDetailList.stream().map(CallBackPurchaseOrderDetail::getPrice).map(Currency::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal totalTax = callBackPurchaseOrderDetailList.stream().map(CallBackPurchaseOrderDetail::getTax).map(Currency::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal totalShip = callBackPurchaseOrderDetailList.stream().map(CallBackPurchaseOrderDetail::getShip).map(Currency::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
PurchaseOrder purchaseOrder = new PurchaseOrder();
purchaseOrder.setOrderNo(purchaseOrderNo);
purchaseOrder.setPurchaseTaskId(purchaseTaskId);
purchaseOrder.setTotalTax(new Currency(totalTax));
purchaseOrder.setTotalPrice(new Currency(totalPrice));
purchaseOrder.setTotalShipCost(new Currency(totalShip));
purchaseOrder.setOrderId(purchaseTask.getOrderId());
baseMapper.insert(purchaseOrder);
//采购订单详情
callBackPurchaseOrderDetailList.forEach(callBackPurchaseOrderDetail -> {
OrderDetail orderDetail = orderDetailList.stream().filter(item -> item.getPurchaseAsin().equals(callBackPurchaseOrderDetail.getAsin())
&& item.getPurchaseSkuNo().equals(callBackPurchaseOrderDetail.getSku()))
.findAny()
.orElseThrow(() -> new BizRuntimeException(ErrorCode.PU_10002));
PurchaseOrderDetail purchaseOrderDetail = new PurchaseOrderDetail();
purchaseOrderDetail.setAsin(callBackPurchaseOrderDetail.getAsin());
purchaseOrderDetail.setMerchantId(callBackPurchaseOrderDetail.getMerchant_id());
purchaseOrderDetail.setPurchaseOrderId(purchaseOrder.getId());
purchaseOrderDetail.setPrice(callBackPurchaseOrderDetail.getPrice());
purchaseOrderDetail.setTax(callBackPurchaseOrderDetail.getTax());
purchaseOrderDetail.setShipCost(callBackPurchaseOrderDetail.getShip());
purchaseOrderDetail.setSku(callBackPurchaseOrderDetail.getSku());
purchaseOrderDetail.setOrderDetailId(orderDetail.getId());
purchaseOrderDetailMapper.insert(purchaseOrderDetail);
orderDetail.setPurchaseStatus(OrderDetail.PURCHASE_STATUS_SUCCESS);
orderDetailMapper.updateById(orderDetail);
});
});
Order order = orderService.queryDetail(purchaseTask.getOrderId());
boolean isPartialPurchase = order.getOrderDetailList().stream().anyMatch(orderDetail -> !orderDetail.getPurchaseStatus().equals(OrderDetail.PURCHASE_STATUS_SUCCESS));
order.setPurchaseStatus(isPartialPurchase ? PublishOrderCallBackRequest.PURCHASE_STATUS_PARTIAL_PURCHASE : Order.PURCHASE_STATUS_SUCCESS);
orderService.updateById(order);
//回调oms系统
PublishOrderCallBackRequest callBackRequest = new PublishOrderCallBackRequest();
callBackRequest.setStatus(isPartialPurchase ? PublishOrderCallBackRequest.PURCHASE_STATUS_PARTIAL_PURCHASE : PublishOrderCallBackRequest.PURCHASE_STATUS_SUCCESS);
callBackRequest.setPdsAccountId(order.getPdsAccountId());
List<PurchaseOrder> purchaseOrderList = this.listByOrderId(order.getId());
callBackRequest.setPurchaseInfos(purchaseOrderList.stream().map(purchaseOrder -> {
PurchaseInfo purchaseInfo = new PurchaseInfo();
purchaseInfo.setPurchaseOrderNo(purchaseOrder.getOrderNo());
purchaseInfo.setTax(purchaseOrder.getTotalTax());
purchaseInfo.setShippingCost(purchaseOrder.getTotalShipCost());
purchaseInfo.setPlatSkus(purchaseOrder.getPurchaseOrderDetailList().stream().map(purchaseOrderDetail -> purchaseOrderDetail.getOrderDetail()
.getSkuNo()).collect(Collectors.toList()));
return purchaseInfo;
})
.collect(Collectors.toList()));
omsApi.updateOrderStatusForAna(callBackRequest);
}
}
@Resource
IPurchaseOrderDetailService purchaseOrderDetailService;
@Override
public List<PurchaseOrder> listByOrderId(String orderId) {
List<PurchaseOrder> purchaseOrderList = baseMapper.selectByOrderId(orderId);
purchaseOrderDetailService.setPurchaseOrderDetail(purchaseOrderList);
return purchaseOrderList;
}
}
......@@ -80,7 +80,7 @@ public class OrderDetail extends BaseModel {
@Valid
@NotNull(groups = OrderValidGroup.Purchase.class, message = "采购成本还未从刊登系统同步完成")
@TableField(typeHandler = JacksonTypeHandler.class)
@ApiModelProperty(value = "采购成本")
@ApiModelProperty(value = "采购预计成本")
private Currency costPrice;
@NotNull(groups = OrderValidGroup.Purchase.class, message = "成本容忍范围为空")
......
package com.bailuntec.ana.domain.purchase;
import com.bailuntec.ana.infrastructure.common.base.BaseModel;
import com.bailuntec.ana.vo.order.Currency;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* <p>
*
*
* </p>
*
* @author robbendev
......@@ -19,7 +22,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PurchaseOrder对象", description="")
@ApiModel(value = "PurchaseOrder对象", description = "")
public class PurchaseOrder extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -30,11 +33,20 @@ public class PurchaseOrder extends BaseModel {
@ApiModelProperty(value = "采购订单号")
private String orderNo;
@ApiModelProperty(value = "税")
private String tax;
@ApiModelProperty(value = "采购单加权平均税")
private Currency totalTax;
@ApiModelProperty(value = "采购单加权平均邮费")
private Currency totalShipCost;
private Currency totalPrice;
@ApiModelProperty(value = "采购任务id")
private String purchaseTaskId;
@ApiModelProperty(value = "平台订单id")
private String orderId;
@TableField(exist = false)
private List<PurchaseOrderDetail> purchaseOrderDetailList;
}
package com.bailuntec.ana.domain.purchase;
import com.bailuntec.ana.domain.order.OrderDetail;
import com.bailuntec.ana.infrastructure.common.base.BaseModel;
import com.bailuntec.ana.vo.order.Currency;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -11,7 +13,7 @@ import lombok.EqualsAndHashCode;
/**
* <p>
*
*
* </p>
*
* @author robbendev
......@@ -19,7 +21,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PurchaseOrderDetail对象", description="")
@ApiModel(value = "PurchaseOrderDetail对象", description = "")
public class PurchaseOrderDetail extends BaseModel {
private static final long serialVersionUID = 1L;
......@@ -31,17 +33,29 @@ public class PurchaseOrderDetail extends BaseModel {
@ApiModelProperty(value = "采购订单平台skuId")
private String purchaseOrderId;
@ApiModelProperty(value = "平台订单详情id")
private String orderDetailId;
@ApiModelProperty(value = "采购skuNo")
private String sku;
@ApiModelProperty(value = "采购listing页面爬虫需要的id 亚马逊是skuId、ebay是spuId")
private String asin;
@ApiModelProperty(value = "实际成本(单价 * 数量 + 加权平均邮费)采购系统回调")
private String price;
@ApiModelProperty(value = "实际成本(单价 * 数量)采购系统回调")
private Currency price;
@ApiModelProperty(value = "加权平均邮费")
private Currency shipCost;
@ApiModelProperty(value = "加权平均税")
private Currency tax;
@ApiModelProperty(value = "卖家ID 采购系统回调回传")
private String merchantId;
@TableField(exist = false)
private OrderDetail orderDetail;
}
......@@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
/**
* <p>
*
* 采购任务
* </p>
*
* @author robbendev
......
package com.bailuntec.ana.infrastructure.common.base;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -11,6 +12,7 @@ import lombok.Data;
* @author robbendev
* @since 2020/7/7 9:33 上午
*/
@JsonInclude()
@Data
@AllArgsConstructor
public class BaseResult<T> {
......
......@@ -12,9 +12,14 @@ public enum ErrorCode {
OR_00001("OR_00001", "订单采购状态异常"),
OR_00002("OR_00002", "无法获取刊登帐号id"),
OR_10003("OR_10003", "找不到对应订单"),
PU_10001("PU_10001", "订单详情采购状态异常"),
PU_10002("PU_10002", "回调订单详情采购sku不存在"),
;
private String code;
private String message;
......
......@@ -109,6 +109,7 @@ public class GlobalExceptionHandler {
result.setCode("500");
result.setMessage(ex.getMessage());
result.setData("");
RequestBakRequestWrapper bakRequestWrapper = (RequestBakRequestWrapper) request;
......
......@@ -3,9 +3,11 @@ package com.bailuntec.ana.infrastructure.mapper.purchase;
import com.bailuntec.ana.domain.purchase.PurchaseOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
/**
* <p>
* Mapper 接口
* Mapper 接口
* </p>
*
* @author robbendev
......@@ -13,4 +15,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface PurchaseOrderMapper extends BaseMapper<PurchaseOrder> {
/**
* <p>
* 根据平台订单id查询采购订单
* </p>
*
* @param orderId 平台订单id
* @return 采购订单
*/
List<PurchaseOrder> selectByOrderId(String orderId);
}
......@@ -26,7 +26,7 @@ public class Schedule {
* 从pams同步订单里面的刊登帐号信息
* </p>
*/
@Scheduled(cron = "*/5 * * * * ?")
@Scheduled(cron = "*/30 * * * * ?")
public void syncOrderPdsAccount() {
List<Order> orderList = orderService.queryUnSyncPdsAccountOrder();
......@@ -47,7 +47,7 @@ public class Schedule {
* 从刊登系统同步订单详情销售sku对应的采购item,采购sku,成本
* </p>
*/
@Scheduled(cron = "*/5 * * * * ?")
@Scheduled(cron = "*/30 * * * * ?")
public void syncOrderDetails() {
List<Order> orderList = orderService.queryUnSyncDetailsOrder();
if (ListUtil.isNotEmpty(orderList)) {
......
......@@ -5,12 +5,15 @@ import com.bailuntec.ana.application.order.IOrderService;
import com.bailuntec.ana.application.purchase.IPurchaseTaskService;
import com.bailuntec.ana.domain.order.Order;
import com.bailuntec.ana.infrastructure.common.base.BaseResult;
import com.bailuntec.ana.infrastructure.common.exception.BizRuntimeException;
import com.bailuntec.ana.infrastructure.common.exception.ErrorCode;
import com.bailuntec.ana.infrastructure.common.util.lock.OrderIdLock;
import com.bailuntec.ana.vo.order.req.OrderQueryPageRequest;
import com.bailuntec.ana.vo.order.req.RefundOrderRequest;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -36,7 +39,11 @@ public class OrderController {
@ApiOperation("oms推送订单")
@PostMapping("/publishOrder")
public BaseResult<Void> publishOrder(@RequestBody @Validated(value = OrderValidGroup.PublishOrder.class) Order order) {
orderService.publishOrder(order);
try {
orderService.publishOrder(order);
} catch (DuplicateKeyException ex) {
throw new BizRuntimeException(ErrorCode.OR_10003);
}
return BaseResult.success();
}
......
......@@ -3,9 +3,7 @@ package com.bailuntec.ana.vo.order;
import com.bailuntec.ana.interfaces.order.OrderValidGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.DecimalMin;
......@@ -19,8 +17,7 @@ import java.math.BigDecimal;
* @author robbendev
* @since 2020-07-31
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
@Accessors(chain = true)
@ApiModel(value = "Currency对象", description = "")
......@@ -40,4 +37,28 @@ public class Currency {
public static final Currency TEST = new Currency(BigDecimal.ONE, BigDecimal.ONE, "CNY");
/**
* <p>
* 默认货币构造器:CNY
* </p>
*
* @param amount 金额
*/
public Currency(BigDecimal amount) {
exchangeRate = BigDecimal.ONE;
amount = amount;
currencyCode = "CNY";
}
public Currency() {
}
public Currency(BigDecimal exchangeRate, BigDecimal amount, String currencyCode) {
this.exchangeRate = exchangeRate;
this.amount = amount;
this.currencyCode = currencyCode;
}
}
package com.bailuntec.ana.vo.order.resp;
import com.bailuntec.ana.vo.order.Currency;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -18,6 +17,15 @@ import java.util.List;
@Data
public class PublishOrderCallBackRequest {
//部分采购
public static final Integer PURCHASE_STATUS_PARTIAL_PURCHASE = 0;
//全部已采购
public static final Integer PURCHASE_STATUS_SUCCESS = 1;
//部分发货
public static final Integer DELIVERY_STATUS_PARTIAL_DELIVERY = 2;
//全部已发货
public static final Integer DELIVERY_STATUS_SUCCESS = 3;
@JsonProperty("OriginalOrderNo")
@ApiModelProperty("平台单号")
private String originalOrderNo;
......@@ -26,15 +34,11 @@ public class PublishOrderCallBackRequest {
@ApiModelProperty("平台帐号id")
private String pdsAccountId;
@ApiModelProperty("状态 0-已下单 1-已发货")
@JsonProperty("Status")
@ApiModelProperty("状态 状态 0:部分下单,1:完全下单,2:部分发货,3:完全发货,这个有改动了,注意一下")
private Integer status;
@ApiModelProperty("物流跟踪号")
private List<String> trackingNos;
@ApiModelProperty("总实际采购成本")
private Currency totalPrice;
@ApiModelProperty("税")
private Currency tax;
@JsonProperty("PurchaseInfos")
@ApiModelProperty("采购信息")
private List<PurchaseInfo> purchaseInfos;
}
package com.bailuntec.ana.vo.order.resp;
import com.bailuntec.ana.vo.order.Currency;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/5 1:34 下午
*/
@Data
public class PurchaseInfo {
@JsonProperty("PurchaseOrderNo")
@ApiModelProperty("采购单号")
private String purchaseOrderNo;
@JsonProperty("TrackingNo")
@ApiModelProperty("采购单号")
private String trackingNo;
@JsonProperty("Provider")
@ApiModelProperty("物流商")
private String provider;
@JsonProperty("PlatSkus")
@ApiModelProperty("对应的oms平台sku")
private List<String> platSkus;
@JsonProperty("TotalPrice")
@ApiModelProperty("订单总价(不含税")
private Currency totalPrice;
@JsonProperty("Tax")
@ApiModelProperty("税额")
private Currency tax;
@JsonProperty("ShippingCost")
@ApiModelProperty("运费")
private Currency shippingCost;
}
package com.bailuntec.ana.vo.purchase;
import com.bailuntec.ana.vo.order.Currency;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -14,7 +15,7 @@ import java.math.BigDecimal;
* @since 2020/7/31 4:32 下午
*/
@Data
public class CallBackPurchaseOrder {
public class CallBackPurchaseOrderDetail {
@ApiModelProperty("商品asin")
private String asin;
......@@ -23,7 +24,13 @@ public class CallBackPurchaseOrder {
private String sku;
@ApiModelProperty("实际成本(单价 * 数量 + 加权平均邮费)")
private BigDecimal price;
private Currency price;
@ApiModelProperty("加权平均税费")
private Currency tax;
@ApiModelProperty("加权平均邮费")
private Currency ship;
private String merchant_id;
......
package com.bailuntec.ana.vo.purchase;
import com.bailuntec.ana.vo.order.Currency;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
......@@ -25,8 +25,8 @@ public class PurchaseCallBackRequest {
private String message;
@ApiModelProperty("税")
private BigDecimal tax;
private Currency tax;
@ApiModelProperty("回调订单 key-订单号 value-订单详情")
private Map<String, List<CallBackPurchaseOrder>> products;
private Map<String, List<CallBackPurchaseOrderDetail>> products;
}
......@@ -2,4 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bailuntec.ana.infrastructure.mapper.purchase.PurchaseOrderMapper">
<select id="selectByOrderId" resultType="com.bailuntec.ana.domain.purchase.PurchaseOrder">
select *
from purchase_order
where order_id = #{orderId}
</select>
</mapper>
package com.bailuntec.ana.infrastructure.feign;
import com.bailuntec.ana.infrastructure.common.util.JsonUtilByFsJson;
import com.bailuntec.ana.vo.order.Currency;
import com.bailuntec.ana.vo.order.resp.OmsBaseResult;
import com.bailuntec.ana.vo.order.resp.PublishOrderCallBackRequest;
import com.google.common.collect.Lists;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
* <p>
......@@ -34,9 +31,9 @@ public class OmsApiTest {
request.setOriginalOrderNo("OR000001");
request.setPdsAccountId("pds0001");
request.setStatus(1);
request.setTax(new Currency(BigDecimal.ONE, new BigDecimal("1.0001"), "CNY"));
request.setTotalPrice(new Currency(BigDecimal.ONE, new BigDecimal("100.0001"), "CNY"));
request.setTrackingNos(Lists.newArrayList("TRA00001", "TRA00002"));
// request.setTax(new Currency(BigDecimal.ONE, new BigDecimal("1.0001"), "CNY"));
// request.setTotalPrice(new Currency(BigDecimal.ONE, new BigDecimal("100.0001"), "CNY"));
// request.setTrackingNos(Lists.newArrayList("TRA00001", "TRA00002"));
OmsBaseResult<Void> result = omsApi.updateOrderStatusForAna(request);
System.out.println(JsonUtilByFsJson.beanToJson(result));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment