|
|
@@ -2660,6 +2660,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
public R revoke(Order order) {
|
|
|
Order selectOrder = baseMapper.selectById(order.getId());
|
|
|
if (ObjectUtils.isNotNull(selectOrder)) {
|
|
|
@@ -2667,6 +2669,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
if (ObjectUtils.isNotNull(settlementList) && settlementList.size() > 0) {
|
|
|
throw new RuntimeException("该账单已结算,无法撤回");
|
|
|
}
|
|
|
+ //根据角色设置权限
|
|
|
+ String role = AuthUtil.getUserRole();
|
|
|
+ if (!role.contains("撤销权限")){//只有包含撤销权限的用户再能撤销
|
|
|
+ throw new RuntimeException("当前用户无撤销权限");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
orderItemsLambdaQueryWrapper.eq(OrderItems::getIsDeleted, 0)
|
|
|
.eq(OrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
@@ -2679,19 +2686,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
BigDecimal balanceAmount = new BigDecimal("0.00");
|
|
|
//获取本商品库存
|
|
|
R<StockGoodsVO> r = stockGoodsClient.selectStock(null, orderItems.getStorageId(), orderItems.getItemId(), null, null, null, null, null, null);
|
|
|
+ GoodsDesc goodsDesc = goodsDescClient.getGoodsDescDetail(orderItems.getItemId());
|
|
|
+ if (ObjectUtils.isNotNull(goodsDesc)) {
|
|
|
+ orderItems.setCname(goodsDesc.getCname());
|
|
|
+ orderItems.setGoodsName(goodsDesc.getCname());
|
|
|
+ orderItems.setPurchasePrice(goodsDesc.getPurchasePrice());
|
|
|
+ orderItems.setUrl(goodsDesc.getUrl());
|
|
|
+ }
|
|
|
if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
|
|
|
if ("XS".equals(order.getBillType())) {
|
|
|
surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
- balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32)));
|
|
|
- stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
|
|
|
+ balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32)));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
r.getData().setOutQuantity(r.getData().getOutQuantity().subtract(orderItems.getStorageInQuantity()));
|
|
|
r.getData().setOutAmount(r.getData().getOutAmount().subtract(orderItems.getAmount()));
|
|
|
} else {
|
|
|
surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
|
|
|
balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
- balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().subtract(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32)));
|
|
|
- stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
|
|
|
+ balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32)));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
r.getData().setInQuantity(r.getData().getInQuantity().subtract(orderItems.getStorageInQuantity()));
|
|
|
r.getData().setInAmount(r.getData().getInAmount().subtract(orderItems.getAmount()));
|
|
|
}
|
|
|
@@ -6319,9 +6337,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
costAmount = costAmount.add(r.getData().getStockPrice().multiply(orderItems.getStorageInQuantity()));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
|
|
|
- stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
|
|
|
r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
r.getData().setOutAmount(r.getData().getOutAmount().add(costAmount));
|
|
|
@@ -6332,8 +6351,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
|
|
} else {
|
|
|
surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
|
|
|
- balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
|
|
|
- stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
|
|
|
+ balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
|
|
|
+ stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
|
|
|
r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
|
|
|
r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
|