Parcourir la source

20230418 17:52

wangzhuo il y a 2 ans
Parent
commit
fed683ff29

+ 1 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransportServiceImpl.java

@@ -429,6 +429,7 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 			archives.setAddressId(Long.parseLong(addressId));
 			archives.setNewDate(newDate);
 			archives.setBoxAccessStatus(type);
+			archives.setStatus("待使用");
 			archivesMapper.updateCode(archives);
 
 			//添加箱轨迹信息

+ 30 - 9
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -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()));