Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ana-order-backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huluobin
ana-order-backend
Commits
278d3155
Commit
278d3155
authored
Aug 05, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
采购回调 参数调整 jackson设置
parent
43909d2a
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
370 additions
and
45 deletions
+370
-45
IOrderDetailService.java
.../bailuntec/ana/application/order/IOrderDetailService.java
+11
-0
OrderDetailServiceImpl.java
...ec/ana/application/order/impl/OrderDetailServiceImpl.java
+18
-0
IPurchaseOrderDetailService.java
...ana/application/purchase/IPurchaseOrderDetailService.java
+14
-1
IPurchaseOrderService.java
...untec/ana/application/purchase/IPurchaseOrderService.java
+13
-0
PurchaseOrderDetailServiceImpl.java
...ication/purchase/impl/PurchaseOrderDetailServiceImpl.java
+25
-2
PurchaseOrderServiceImpl.java
...a/application/purchase/impl/PurchaseOrderServiceImpl.java
+114
-1
OrderDetail.java
...main/java/com/bailuntec/ana/domain/order/OrderDetail.java
+1
-1
PurchaseOrder.java
...java/com/bailuntec/ana/domain/purchase/PurchaseOrder.java
+17
-5
PurchaseOrderDetail.java
...om/bailuntec/ana/domain/purchase/PurchaseOrderDetail.java
+19
-5
PurchaseTask.java
.../java/com/bailuntec/ana/domain/purchase/PurchaseTask.java
+1
-1
BaseResult.java
.../bailuntec/ana/infrastructure/common/base/BaseResult.java
+2
-0
ErrorCode.java
...luntec/ana/infrastructure/common/exception/ErrorCode.java
+5
-0
GlobalExceptionHandler.java
...frastructure/common/exception/GlobalExceptionHandler.java
+1
-0
PurchaseOrderMapper.java
...a/infrastructure/mapper/purchase/PurchaseOrderMapper.java
+12
-1
Schedule.java
...a/com/bailuntec/ana/infrastructure/schedule/Schedule.java
+2
-2
OrderController.java
...a/com/bailuntec/ana/interfaces/order/OrderController.java
+8
-1
Currency.java
src/main/java/com/bailuntec/ana/vo/order/Currency.java
+25
-4
PublishOrderCallBackRequest.java
...luntec/ana/vo/order/resp/PublishOrderCallBackRequest.java
+14
-10
PurchaseInfo.java
...in/java/com/bailuntec/ana/vo/order/resp/PurchaseInfo.java
+48
-0
CallBackPurchaseOrderDetail.java
...ailuntec/ana/vo/purchase/CallBackPurchaseOrderDetail.java
+9
-2
PurchaseCallBackRequest.java
...om/bailuntec/ana/vo/purchase/PurchaseCallBackRequest.java
+3
-3
PurchaseOrderMapper.xml
src/main/resources/mapper/purchase/PurchaseOrderMapper.xml
+5
-0
OmsApiTest.java
...va/com/bailuntec/ana/infrastructure/feign/OmsApiTest.java
+3
-6
No files found.
src/main/java/com/bailuntec/ana/application/order/IOrderDetailService.java
View file @
278d3155
...
...
@@ -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
);
}
src/main/java/com/bailuntec/ana/application/order/impl/OrderDetailServiceImpl.java
View file @
278d3155
...
...
@@ -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
());
...
...
src/main/java/com/bailuntec/ana/application/purchase/IPurchaseOrderDetailService.java
View file @
278d3155
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
);
}
src/main/java/com/bailuntec/ana/application/purchase/IPurchaseOrderService.java
View file @
278d3155
...
...
@@ -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
);
}
src/main/java/com/bailuntec/ana/application/purchase/impl/PurchaseOrderDetailServiceImpl.java
View file @
278d3155
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.ba
iluntec.ana.application.purchase.IPurchaseOrderDetailService
;
import
com.ba
omidou.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
()));
});
}
}
}
src/main/java/com/bailuntec/ana/application/purchase/impl/PurchaseOrderServiceImpl.java
View file @
278d3155
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
;
}
}
src/main/java/com/bailuntec/ana/domain/order/OrderDetail.java
View file @
278d3155
...
...
@@ -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
=
"成本容忍范围为空"
)
...
...
src/main/java/com/bailuntec/ana/domain/purchase/PurchaseOrder.java
View file @
278d3155
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
;
}
src/main/java/com/bailuntec/ana/domain/purchase/PurchaseOrderDetail.java
View file @
278d3155
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
;
}
src/main/java/com/bailuntec/ana/domain/purchase/PurchaseTask.java
View file @
278d3155
...
...
@@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
/**
* <p>
*
*
采购任务
* </p>
*
* @author robbendev
...
...
src/main/java/com/bailuntec/ana/infrastructure/common/base/BaseResult.java
View file @
278d3155
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
>
{
...
...
src/main/java/com/bailuntec/ana/infrastructure/common/exception/ErrorCode.java
View file @
278d3155
...
...
@@ -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
;
...
...
src/main/java/com/bailuntec/ana/infrastructure/common/exception/GlobalExceptionHandler.java
View file @
278d3155
...
...
@@ -109,6 +109,7 @@ public class GlobalExceptionHandler {
result
.
setCode
(
"500"
);
result
.
setMessage
(
ex
.
getMessage
());
result
.
setData
(
""
);
RequestBakRequestWrapper
bakRequestWrapper
=
(
RequestBakRequestWrapper
)
request
;
...
...
src/main/java/com/bailuntec/ana/infrastructure/mapper/purchase/PurchaseOrderMapper.java
View file @
278d3155
...
...
@@ -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
);
}
src/main/java/com/bailuntec/ana/infrastructure/schedule/Schedule.java
View file @
278d3155
...
...
@@ -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
))
{
...
...
src/main/java/com/bailuntec/ana/interfaces/order/OrderController.java
View file @
278d3155
...
...
@@ -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
();
}
...
...
src/main/java/com/bailuntec/ana/vo/order/Currency.java
View file @
278d3155
...
...
@@ -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
;
}
}
src/main/java/com/bailuntec/ana/vo/order/resp/PublishOrderCallBackRequest.java
View file @
278d3155
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
;
}
src/main/java/com/bailuntec/ana/vo/order/resp/PurchaseInfo.java
0 → 100644
View file @
278d3155
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
;
}
src/main/java/com/bailuntec/ana/vo/purchase/CallBackPurchaseOrder.java
→
src/main/java/com/bailuntec/ana/vo/purchase/CallBackPurchaseOrder
Detail
.java
View file @
278d3155
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
CallBackPurchaseOrder
Detail
{
@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
;
...
...
src/main/java/com/bailuntec/ana/vo/purchase/PurchaseCallBackRequest.java
View file @
278d3155
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
<
CallBackPurchaseOrder
Detail
>>
products
;
}
src/main/resources/mapper/purchase/PurchaseOrderMapper.xml
View file @
278d3155
...
...
@@ -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>
src/test/java/com/bailuntec/ana/infrastructure/feign/OmsApiTest.java
View file @
278d3155
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
));
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment