Browse Source

2023年5月16日17:57:08

纪新园 2 years ago
parent
commit
3c4b33773e

+ 6 - 1
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -726,12 +726,17 @@ public class Order implements Serializable {
 	/**
 	 * 本次使用返利
 	 */
-	private BigDecimal thisUsedProfit;
+	private BigDecimal thisUsedProfit = new BigDecimal("0");
 	/**
 	 * 产生返利
 	 */
 	private BigDecimal createProfit;
 
+	/**
+	 * 货款金额
+	 */
+	private BigDecimal paymentGoods;
+
 	//请核标识  1采购 2销售
 	@TableField(exist = false)
 	private Integer checkFlag;

+ 11 - 1
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TradingBoxServiceImpl.java

@@ -236,6 +236,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 			tradingBox.setTotalAmount(tradingBoxItemList.stream().map(TradingBoxItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
+			if (tradingBoxItemList.size() != codes.size()) {
+				throw new RuntimeException("本单据明细存在重复箱号,操作失败!");
+			}
 			tradingBox.setCode(String.join(",", codes));
 			StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = tradingBoxItemList.stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType())).map(TradingBoxItem::getBoxType).distinct().collect(Collectors.toList());
@@ -254,6 +257,10 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				if ("BUY".equals(tradingBox.getType())) {
 					tradingBoxItem.setBoxSource("购买");
 					tradingBoxItem.setStatus("待使用");
+					if (archivesMapper.selectCount(new LambdaQueryWrapper<Archives>()
+						.eq(Archives::getCode, tradingBoxItem.getCode())) > 0) {
+						throw new RuntimeException("箱号:"+tradingBoxItem.getCode()+"已存在,操作失败!");
+					}
 				} else {
 					if (tradingBoxItem.getBoxSource().equals("购买")) {
 						tradingBoxItem.setStatus("卖出");
@@ -482,6 +489,9 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 		if (ObjectUtils.isNotNull(tradingBoxItemList) && tradingBoxItemList.size() > 0) {
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
+			if (tradingBoxItemList.size() != codes.size()) {
+				throw new RuntimeException("本单据明细存在重复箱号,操作失败!");
+			}
 			tradingBox.setCode(String.join(",", codes));
 			StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = tradingBoxItemList.stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType())).map(TradingBoxItem::getBoxType).distinct().collect(Collectors.toList());
@@ -1822,7 +1832,7 @@ public class TradingBoxServiceImpl extends ServiceImpl<TradingBoxMapper, Trading
 				List<Items> itemsList = new ArrayList<>();
 				for (TransportItemFees tradingBoxFees : transportItemFeesList) {
 					Items items = new Items();
-					if (ObjectUtils.isNotEmpty(tradingBoxFees.getAmount())){
+					if (ObjectUtils.isNotEmpty(tradingBoxFees.getAmount())) {
 						amount = tradingBoxFees.getAmount();
 					}
 					//计算单价

+ 3 - 0
blade-service/blade-box-tube/src/main/java/org/springblade/box/tube/service/impl/TransferServiceImpl.java

@@ -117,6 +117,9 @@ public class TransferServiceImpl implements ITransferService {
 		if (ObjectUtils.isNotNull(tradingBoxItemList) && tradingBoxItemList.size() > 0) {
 			//箱号拼接字符串
 			List<String> codes = tradingBoxItemList.stream().map(TradingBoxItem::getCode).distinct().collect(Collectors.toList());
+			if (tradingBoxItemList.size() != codes.size()) {
+				throw new RuntimeException("本单据明细存在重复箱号,操作失败!");
+			}
 			tradingBox.setCode(String.join(",", codes));
 			StringBuilder boxTypeNumber = new StringBuilder();
 			List<String> boxType = tradingBoxItemList.stream().filter(e -> ObjectUtils.isNotNull(e.getBoxType())).map(TradingBoxItem::getBoxType).distinct().collect(Collectors.toList());

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

@@ -210,6 +210,9 @@ public class TransportServiceImpl extends ServiceImpl<TransportMapper, Transport
 		if (ObjectUtils.isNotNull(transportItemList) && transportItemList.size() > 0) {
 			//箱号拼接字符串
 			List<String> codes = transportItemList.stream().map(TransportItem::getCode).distinct().collect(Collectors.toList());
+			if (transportItemList.size() != codes.size()) {
+				throw new RuntimeException("本单据明细存在重复箱号,操作失败!");
+			}
 			transport.setCode(String.join(",", codes));
 			transport.setTotalAmount(transportItemList.stream().map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 			transport.setOverdueAmount(transportItemList.stream().map(TransportItem::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));

+ 3 - 4
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -364,7 +364,7 @@ public class PaymentServiceImpl implements IPaymentService {
 											} else {
 												surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 												balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-												balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+												balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 												stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 
 												r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
@@ -517,12 +517,11 @@ public class PaymentServiceImpl implements IPaymentService {
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
-
 	}
 
-	private void returnMethod(HttpServletResponse response, String setXML) {
+	private void returnMethod(HttpServletResponse response, String setXml) {
 		try {
-			response.getWriter().write(setXML);
+			response.getWriter().write(setXml);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}

+ 104 - 82
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -687,6 +687,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 			}
 		}
+		// todo 新
+		if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+			order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+		}
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 			for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -1873,7 +1877,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 								&& s.getTenantId().equals(SecureUtil.getTenantId())
 						).findFirst().orElse(null);
 						if (oneStock == null) {
-							throw new SecurityException("编号:"+oneStock.getCode()+"撤销失败:未查询到库存信息");
+							throw new SecurityException("编号:" + oneStock.getCode() + "撤销失败:未查询到库存信息");
 						}
 						// 原单据的订货数量
 						BigDecimal orderQuantity = e.getOrderQuantity();
@@ -1884,7 +1888,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 						// 判断比较大小
 						if (orderQuantity.compareTo(lockingQuantity) > 0) {
-							throw new SecurityException("撤销失败:原单据的" + oneStock.getCode() + "订货数量:"+orderQuantity+"大于锁定库存:"+lockingQuantity+",无法释放 库存");
+							throw new SecurityException("撤销失败:原单据的" + oneStock.getCode() + "订货数量:" + orderQuantity + "大于锁定库存:" + lockingQuantity + ",无法释放 库存");
 						}
 						// 增加可用库存
 						oneStock.setSurplusRouteQuantity(surplusRouteQuantity.add(orderQuantity));
@@ -2677,7 +2681,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
 							costAmount = costAmount.add(r.getData().getStockPrice().multiply(orderItems.getStorageInQuantity()));
 						}
-						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
+//						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
 						r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
 						r.getData().setOutAmount(r.getData().getOutAmount().add(orderItems.getAmount()));
 
@@ -2687,23 +2691,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					} else {
 						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-						if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
-							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
-						} else {
-							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
-						}
-						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity), MathContext.DECIMAL32);
+						balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32))).setScale(2, RoundingMode.HALF_UP);
+						stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, RoundingMode.HALF_UP).setScale(2, RoundingMode.HALF_UP), MathContext.DECIMAL32);
 						r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
 						r.getData().setInAmount(r.getData().getInAmount().add(orderItems.getAmount()));
 
 						costAmount = costAmount.add(orderItems.getPrice().multiply(orderItems.getStorageInQuantity()));
 						grossProfit = grossProfit.add(new BigDecimal("0.00"));
+						r.getData().setStockPrice(stockPrice);
 
 					}
 					r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 					r.getData().setBalanceQuantity(balanceQuantity);
 					r.getData().setBalanceAmount(balanceAmount);
-					r.getData().setStockPrice(stockPrice);
 					stockGoodsClient.updateStock(r.getData());
 				} else {
 					StockGoods stockGoods = new StockGoods();
@@ -2788,7 +2788,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 			//根据角色设置权限
 			String role = AuthUtil.getUserRole();
-			if (!role.contains("撤销权限")){//只有包含撤销权限的用户再能撤销
+			if (!role.contains("撤销权限")) {//只有包含撤销权限的用户再能撤销
 				throw new RuntimeException("当前用户无撤销权限");
 			}
 			LambdaQueryWrapper<OrderItems> orderItemsLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -2814,28 +2814,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					if ("XS".equals(order.getBillType())) {
 						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-						if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
+						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));
+//							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);
-						if (balanceQuantity.compareTo(BigDecimal.ZERO) < 0){
+						if (balanceQuantity.compareTo(BigDecimal.ZERO) < 0) {
 							throw new SecurityException("明细数量大于库存数量,禁止撤销");
-						}else if(balanceQuantity.compareTo(BigDecimal.ZERO) > 0){
-							balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().subtract(orderItems.getStorageInQuantity().multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32)));
+						} else if (balanceQuantity.compareTo(BigDecimal.ZERO) > 0) {
+							balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().subtract(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32))).setScale(2, RoundingMode.HALF_UP);
 							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()));
+						r.getData().setStockPrice(stockPrice);
 					}
 					r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 					r.getData().setBalanceQuantity(balanceQuantity);
 					r.getData().setBalanceAmount(balanceAmount);
-					r.getData().setStockPrice(stockPrice);
 					stockGoodsClient.updateStock(r.getData());
 				}
 			}
@@ -3078,6 +3078,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 					BigDecimal costAmount = new BigDecimal("0.00");
 					BigDecimal grossProfit = new BigDecimal("0.00");
+					// todo 新
+					if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+						order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+					}
 					// 保存订单明细
 					if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 						for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -3256,16 +3260,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 									surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 									balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
 
-
 									if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
 										costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 									} else {
 										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));
+//									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));
@@ -3276,7 +3278,7 @@ 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));
+									balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 									stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 
 									r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
@@ -3284,12 +3286,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 									costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 									grossProfit = grossProfit.add(new BigDecimal("0.00"));
-
+									r.getData().setStockPrice(stockPrice);
 								}
 								r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 								r.getData().setBalanceQuantity(balanceQuantity);
 								r.getData().setBalanceAmount(balanceAmount);
-								r.getData().setStockPrice(stockPrice);
 								stockGoodsClient.updateStock(r.getData());
 
 							} else {
@@ -3445,6 +3446,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 				BigDecimal costAmount = new BigDecimal("0.00");
 				BigDecimal grossProfit = new BigDecimal("0.00");
+				// todo 新
+				if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+					order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+				}
 				// 保存订单明细
 				if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 					for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -3464,17 +3469,13 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							if ("XS".equals(order.getBillType())) {
 								surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 								balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-
-
 								if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
 									costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 								} else {
 									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));
+//								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));
@@ -3485,7 +3486,7 @@ 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));
+								balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 
 								r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
@@ -3493,12 +3494,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 								costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 								grossProfit = grossProfit.add(new BigDecimal("0.00"));
+								r.getData().setStockPrice(stockPrice);
 
 							}
 							r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 							r.getData().setBalanceQuantity(balanceQuantity);
 							r.getData().setBalanceAmount(balanceAmount);
-							r.getData().setStockPrice(stockPrice);
 							stockGoodsClient.updateStock(r.getData());
 
 						} else {
@@ -3729,6 +3730,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 					BigDecimal costAmount = new BigDecimal("0.00");
 					BigDecimal grossProfit = new BigDecimal("0.00");
+					// todo 新
+					if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+						order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+					}
 					// 保存订单明细
 					if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 						for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -3892,6 +3897,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 					BigDecimal costAmount = new BigDecimal("0.00");
 					BigDecimal grossProfit = new BigDecimal("0.00");
+					// todo 新
+					if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+						order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+					}
 					// 保存订单明细
 					if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 						for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -3918,11 +3927,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 									} else {
 										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));
-
+//									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));
 
@@ -3932,7 +3938,7 @@ 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));
+									balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 									stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 
 									r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
@@ -3940,12 +3946,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 									costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 									grossProfit = grossProfit.add(new BigDecimal("0.00"));
-
+									r.getData().setStockPrice(stockPrice);
 								}
 								r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 								r.getData().setBalanceQuantity(balanceQuantity);
 								r.getData().setBalanceAmount(balanceAmount);
-								r.getData().setStockPrice(stockPrice);
 								stockGoodsClient.updateStock(r.getData());
 
 							} else {
@@ -4090,6 +4095,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					baseMapper.insert(order);
 					BigDecimal costAmount = new BigDecimal("0.00");
 					BigDecimal grossProfit = new BigDecimal("0.00");
+					// todo 新
+					if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+						order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+					}
 					// 保存订单明细
 					if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 						for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -4308,6 +4317,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					baseMapper.insert(order);
 					BigDecimal costAmount = new BigDecimal("0.00");
 					BigDecimal grossProfit = new BigDecimal("0.00");
+					// todo 新
+					if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+						order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+					}
 					// 保存订单明细
 					if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 						for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -4866,23 +4879,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 								surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().subtract(orderItems.getStorageInQuantity()));
 								balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
 								balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
-								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+//								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());
 							} else {
 								surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 								balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-								balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+								balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 								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()));
+								r.getData().setStockPrice(stockPrice);
 							}
 							r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 							r.getData().setBalanceQuantity(balanceQuantity);
 							r.getData().setBalanceAmount(balanceAmount);
-							r.getData().setStockPrice(stockPrice);
 							stockGoodsClient.updateStock(r.getData());
 						}
 						orderItems.setId(null);
@@ -4959,7 +4972,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
 								balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
-								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+//								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));
@@ -4970,7 +4983,7 @@ 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));
+								balanceAmount = balanceAmount.add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32)).add(r.getData().getBalanceAmount());
 								stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 
 								r.getData().setInQuantity(r.getData().getInQuantity().add(orderItems.getStorageInQuantity()));
@@ -4978,12 +4991,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 								costAmount = costAmount.add(orderItems.getPurchaseCost().multiply(orderItems.getStorageInQuantity()));
 								grossProfit = grossProfit.add(new BigDecimal("0.00"));
-
+								r.getData().setStockPrice(stockPrice);
 							}
 							r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 							r.getData().setBalanceQuantity(balanceQuantity);
 							r.getData().setBalanceAmount(balanceAmount);
-							r.getData().setStockPrice(stockPrice);
 							stockGoodsClient.updateStock(r.getData());
 
 						} else {
@@ -5180,9 +5192,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			paymentDTO.setFqnum("");
 			paymentDTO.setCusId(parameters.getCusId());
 			paymentDTO.setAppId(parameters.getAppId());
-			if (ObjectUtils.isEmpty(parameters.getOrgid())){
+			if (ObjectUtils.isEmpty(parameters.getOrgid())) {
 				paymentDTO.setOrgid("");
-			}else {
+			} else {
 				paymentDTO.setOrgid(parameters.getOrgid());
 			}
 			paymentDTO.setTransactionType(parameters.getTransactionType());//交易类型
@@ -5403,7 +5415,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 					orderListAll.add(order);
 				}
-			}else {
+			} else {
 				if (ObjectUtils.isNotNull(order)) {
 					OrderItems orderItems_ = new OrderItems();
 					BeanUtil.copyProperties(items, orderItems_);
@@ -5526,21 +5538,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			for (OrderItems orderItems : orderItemsList) {
 				orderItemsMapper.updateById(orderItems);
 				if (1 == order.getPurchaseStatusType()) {//排产中
-					if (ObjectUtils.isNotEmpty(orderItems.getDetailType())){
-						if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())){
+					if (ObjectUtils.isNotEmpty(orderItems.getDetailType())) {
+						if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())) {
 							//更新对应配件明细采购数量
 							OrderParts srcItems = new OrderParts();
 							srcItems.setId(orderItems.getSrcItemId());
 							srcItems.setPurchasesNumber(orderItems.getActualQuantity());
 							orderPartsMapper.updateById(srcItems);
-						}else {
+						} else {
 							//更新对应销售单明细采购数量
 							OrderItems srcItems = new OrderItems();
 							srcItems.setId(orderItems.getSrcItemId());
 							srcItems.setPurchaseQuantity(orderItems.getActualQuantity());
 							orderItemsMapper.updateById(srcItems);
 						}
-					}else {
+					} else {
 						//更新对应销售单明细采购数量
 						OrderItems srcItems = new OrderItems();
 						srcItems.setId(orderItems.getSrcItemId());
@@ -5654,7 +5666,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (ObjectUtils.isNull(detail)) {
 			throw new RuntimeException("未找到单据信息");
 		}
-		if ("预计货好".equals(detail.getFudaPurchaseStatus()) || "货备齐".equals(detail.getFudaPurchaseStatus())){
+		if ("预计货好".equals(detail.getFudaPurchaseStatus()) || "货备齐".equals(detail.getFudaPurchaseStatus())) {
 			throw new RuntimeException("订单已预计货好或货备齐,无法撤销排产");
 		}
 
@@ -5674,25 +5686,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			List<Long> pidList = new ArrayList<>();
 			for (OrderItems orderItems : orderItemsList) {
 				orderItemsMapper.updateById(orderItems);
-					if (ObjectUtils.isNotEmpty(orderItems.getDetailType())){
-						if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())){//更新对应配件明细采购数量
-							OrderParts srcItems = orderPartsMapper.selectById(orderItems.getSrcItemId());
-							srcItems.setPurchasesNumber(srcItems.getPurchasesNumber().subtract(orderItems.getActualQuantity()));
-							orderPartsMapper.updateById(srcItems);
-						}else {
-							//更新对应销售单明细采购数量
-							OrderItems srcItems = new OrderItems();
-							srcItems.setId(orderItems.getSrcItemId());
-							srcItems.setPurchaseQuantity(orderItems.getPurchaseQuantity().subtract(orderItems.getActualQuantity()));
-							orderItemsMapper.updateById(srcItems);
-						}
-					}else {
+				if (ObjectUtils.isNotEmpty(orderItems.getDetailType())) {
+					if (OrderTypeEnum.PARTSTYPE.getType().equals(orderItems.getDetailType())) {//更新对应配件明细采购数量
+						OrderParts srcItems = orderPartsMapper.selectById(orderItems.getSrcItemId());
+						srcItems.setPurchasesNumber(srcItems.getPurchasesNumber().subtract(orderItems.getActualQuantity()));
+						orderPartsMapper.updateById(srcItems);
+					} else {
 						//更新对应销售单明细采购数量
 						OrderItems srcItems = new OrderItems();
 						srcItems.setId(orderItems.getSrcItemId());
 						srcItems.setPurchaseQuantity(orderItems.getPurchaseQuantity().subtract(orderItems.getActualQuantity()));
 						orderItemsMapper.updateById(srcItems);
 					}
+				} else {
+					//更新对应销售单明细采购数量
+					OrderItems srcItems = new OrderItems();
+					srcItems.setId(orderItems.getSrcItemId());
+					srcItems.setPurchaseQuantity(orderItems.getPurchaseQuantity().subtract(orderItems.getActualQuantity()));
+					orderItemsMapper.updateById(srcItems);
+				}
 
 				pidList.add(orderItems.getSrcId());
 			}
@@ -5975,6 +5987,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			}
 			List<OrderItems> orderItemsList = orderItemsService.saveOrderItemsMessage(order.getOrderItemsList(), date, order.getId());
 			order.setOrderItemsList(orderItemsList);
+			// todo 新
+			order.setPaymentGoods(order.getOrderAmount());
 			//应收账款
 			order.setDebitAmount(order.getOrderAmount());
 			//入库出库金额
@@ -6227,23 +6241,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							//计算库存金额
 							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchaseCost(), MathContext.DECIMAL32));
 							//计算库存单价
-							stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
+//							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());
 						} else {
 							surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 							balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPrice(), MathContext.DECIMAL32));
+							balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32))).setScale(2, RoundingMode.HALF_UP);
 							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()));
+							r.getData().setStockPrice(stockPrice);
+
 						}
 						r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 						r.getData().setBalanceQuantity(balanceQuantity);
 						r.getData().setBalanceAmount(balanceAmount);
-						r.getData().setStockPrice(stockPrice);
 						stockGoodsClient.updateStock(r.getData());
 					}
 					orderItems.setPid(order.getId());
@@ -6423,6 +6438,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 		BigDecimal costAmount = new BigDecimal("0.00");
 		BigDecimal grossProfit = new BigDecimal("0.00");
+		// todo 新
+		if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+			order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+		}
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 			for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -6441,8 +6460,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 					if ("XS".equals(order.getBillType())) {
 						String burden = sysClient.getParamService("burden");
-						if ("0".equals(burden) || ObjectUtils.isNull(burden)){
-							if(new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())){
+						if ("0".equals(burden) || ObjectUtils.isNull(burden)) {
+							if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
 								throw new RuntimeException("该产品已售空");
 							}
 						}
@@ -6456,9 +6475,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 							costAmount = costAmount.add(r.getData().getStockPrice().multiply(orderItems.getStorageInQuantity()));
 						}
 
-						if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
+						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));
+//							stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 						}
 
 						r.getData().setOutQuantity(r.getData().getOutQuantity().add(orderItems.getStorageInQuantity()));
@@ -6470,8 +6489,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					} else {
 						surplusRouteQuantity = surplusRouteQuantity.add(r.getData().getSurplusRouteQuantity().add(orderItems.getStorageInQuantity()));
 						balanceQuantity = balanceQuantity.add(surplusRouteQuantity);
-						if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0){
-							balanceAmount = balanceAmount.add(balanceQuantity.multiply(orderItems.getPurchasePrice(), MathContext.DECIMAL32));
+						if (balanceQuantity.compareTo(BigDecimal.ZERO) != 0) {
+							balanceAmount = balanceAmount.add(r.getData().getBalanceAmount().add(orderItems.getStorageInQuantity().multiply(orderItems.getPrice(), MathContext.DECIMAL32))).setScale(2, RoundingMode.HALF_UP);
 							stockPrice = stockPrice.add(balanceAmount.divide(balanceQuantity, MathContext.DECIMAL32).setScale(2, RoundingMode.HALF_UP));
 						}
 
@@ -6480,12 +6499,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 						costAmount = costAmount.add(orderItems.getPurchasePrice().multiply(orderItems.getStorageInQuantity()));
 						grossProfit = grossProfit.add(new BigDecimal("0.00"));
-
+						r.getData().setStockPrice(stockPrice);
 					}
 					r.getData().setSurplusRouteQuantity(surplusRouteQuantity);
 					r.getData().setBalanceQuantity(balanceQuantity);
 					r.getData().setBalanceAmount(balanceAmount);
-					r.getData().setStockPrice(stockPrice);
 					stockGoodsClient.updateStock(r.getData());
 
 				} else {
@@ -6588,10 +6606,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public R quickBillingMall(Order order) {
 
 		Order details = vocationalWork(order);
-		if (ObjectUtils.isNull(details) || details.getId() == null){
+		if (ObjectUtils.isNull(details) || details.getId() == null) {
 			throw new RuntimeException("下单失败");
 		}
 
@@ -6631,9 +6651,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		}
 	}
 
-	@Transactional(rollbackFor = Exception.class)
-	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public Order vocationalWork(Order order){
+	public Order vocationalWork(Order order) {
 // 校验单号重复-新增
 		if (order.getId() == null && StringUtils.isNotBlank(order.getSysNo())) {
 			LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -6705,6 +6723,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		baseMapper.insert(order);
 		BigDecimal costAmount = new BigDecimal("0.00");
 		BigDecimal grossProfit = new BigDecimal("0.00");
+		// todo 新
+		if (ObjectUtils.isNotNull(order.getPaymentGoods())) {
+			order.setOrderAmount(order.getPaymentGoods().subtract(order.getThisUsedProfit()));
+		}
 		// 保存订单明细
 		if (CollectionUtils.isNotEmpty(order.getOrderItemsList())) {
 			for (OrderItems orderItems : order.getOrderItemsList()) {
@@ -6719,8 +6741,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
 					if ("XS".equals(order.getBillType())) {
 						String burden = sysClient.getParamService("burden");
-						if ("0".equals(burden) || ObjectUtils.isNull(burden)){
-							if(new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())){
+						if ("0".equals(burden) || ObjectUtils.isNull(burden)) {
+							if (new BigDecimal("0.00").equals(r.getData().getSurplusRouteQuantity())) {
 								throw new RuntimeException("该产品已售空");
 							}
 						}

+ 86 - 66
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -88,38 +88,53 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
 
-	private OrderFeesServiceImpl orderFeesService;//订单费用明细表
-	private OrderFilesServiceImpl orderFilesService;//订单文件表
-	private OrderItemsServiceImpl orderItemsService;//订单明细表
-	private OrderModifyServiceImpl orderModifyService;//订单修改日志
-	private IUserClient userClient;//获取用户信息
-	private ISerialClient serialClient;//生成系统编号
-	private IFeesDescClient feesDescClient;//获取费用信息
-	private IGoodsDescClient goodsDescClient;//获取商品信息
-	private ICorpsDescClient corpsDescClient;//获取客户信息
-	private OrderMapper orderMapper;
-	private IStockGoodsClient stockGoodsClient;
-	private OrderItemsMapper orderItemsMapper;
-	private IOrderFreightService orderFreightService;
-	private IPriceBankClient priceBankClient;
+	//订单费用明细表
+	private final OrderFeesServiceImpl orderFeesService;
+	//订单文件表
+	private final OrderFilesServiceImpl orderFilesService;
+	//订单明细表
+	private final OrderItemsServiceImpl orderItemsService;
+	//订单修改日志
+	private final OrderModifyServiceImpl orderModifyService;
+	//获取用户信息
+	private final IUserClient userClient;
+	//生成系统编号
+	private final ISerialClient serialClient;
+	//获取费用信息
+	private final IFeesDescClient feesDescClient;
+	//获取商品信息
+	private final IGoodsDescClient goodsDescClient;
+	//获取客户信息
+	private final ICorpsDescClient corpsDescClient;
+	private final OrderMapper orderMapper;
+	private final IStockGoodsClient stockGoodsClient;
+	private final OrderItemsMapper orderItemsMapper;
+	private final IOrderFreightService orderFreightService;
+	private final IPriceBankClient priceBankClient;
 	private final ICheckClient iCheckClient;
 	private final IOrderSave orderSave;
 	private final OrderItemMapstructMapper orderItemMapstructMapper;
 	private final IStorageClient iStorageClient;
-	private final IFinanceClient financeClient;//财务
+	//财务
+	private final IFinanceClient financeClient;
 	private final ISysClient sysClient;
-	private final IMessageClient messageClient;//消息
-	private final AgreementServiceImpl agreementService;//仓储费
-	private final AgreementitemsServiceImpl agreementitemsService;//仓储费明细
-	private FinancingServiceImpl financingService;//融资
-	private IDictBizClient dictBizClient;//字典
+	//消息
+	private final IMessageClient messageClient;
+	//仓储费
+	private final AgreementServiceImpl agreementService;
+	//仓储费明细
+	private final AgreementitemsServiceImpl agreementitemsService;
+	//融资
+	private final FinancingServiceImpl financingService;
+	//字典
+	private final IDictBizClient dictBizClient;
 	private final RedisTemplate<String, Object> redisTemplate;
-	private IRedisClient redisClient;
+	private final IRedisClient redisClient;
 
 
 	@Override
 	public IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, OrderVO order) {
-		LambdaQueryWrapper<Order> lambdaQuery = Wrappers.<Order>lambdaQuery();
+		LambdaQueryWrapper<Order> lambdaQuery = Wrappers.lambdaQuery();
 		// 组装查询条件
 		pageQueryWrapper(lambdaQuery, order);
 
@@ -130,7 +145,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			List<OrderVO> copy = BeanUtil.copy(records, OrderVO.class);
 			// 获取客户信息
 			if (CollectionUtils.isNotEmpty(copy)) {
-				copy.stream().forEach(item -> {
+				copy.forEach(item -> {
 					if (item.getCorpId() != null) {
 						R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
 						if (corpMessage.isSuccess() && corpMessage.getData() != null) {
@@ -139,7 +154,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					}
 				});
 			}
-			List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
+//			List<OrderVO> orderVOList = records.stream().map(OrderMapstructMapper.INSTANCE::toVo).collect(Collectors.toList());
 			page.setRecords(copy);
 		}
 		page.setTotal(orderPage.getTotal());
@@ -203,7 +218,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * 获取订单详情
 	 *
 	 * @param id 订单id
-	 * @return
 	 */
 	@Override
 	public R<OrderVO> getOrderMessage(String id) {
@@ -232,31 +246,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		/*OrderVO vo = OrderMapstructMapper.INSTANCE.toVo(orderMessage);*/
 		//获取创建人中文名
 		if (ObjectUtils.isNotNull(userList)) {
-			User createUser = userList.stream().filter(user -> user.getId().equals(vo.getCreateUser())).findFirst().orElse(null);
-			if (ObjectUtils.isNotNull(createUser)) {
-				vo.setCreateUserName(createUser.getName());
-			}
+			userList.stream().filter(user -> user.getId().equals(vo.getCreateUser())).findFirst().ifPresent(createUser -> vo.setCreateUserName(createUser.getName()));
 		}
 		//获取供应商中文名
 		if (orderMessage.getCorpId() != null) {
-			CorpsDesc corpMessage = corpsDescList.stream().filter(corp -> corp.getId().equals(orderMessage.getCorpId())).findFirst().orElse(null);
-			if (ObjectUtils.isNotNull(corpMessage)) {
-				vo.setCorpName(corpMessage.getCname());
-			}
+			corpsDescList.stream().filter(corp -> corp.getId().equals(orderMessage.getCorpId())).findFirst().ifPresent(corpMessage -> vo.setCorpName(corpMessage.getCname()));
 		}
 		//获取货权人中文名
 		if (orderMessage.getPurchaserId() != null) {
-			CorpsDesc corpMessage = corpsDescList.stream().filter(corp -> corp.getId().equals(orderMessage.getPurchaserId())).findFirst().orElse(null);
-			if (ObjectUtils.isNotNull(corpMessage)) {
-				vo.setPurchaser(corpMessage.getCname());
-			}
+			corpsDescList.stream().filter(corp -> corp.getId().equals(orderMessage.getPurchaserId())).findFirst().ifPresent(corpMessage -> vo.setPurchaser(corpMessage.getCname()));
 		}
 		if (ObjectUtils.isNotNull(orderMessage.getStorageId())) {
 			//仓库
-			StorageType storageType = storageTypeList.stream().filter(storage -> storage.getId().equals(orderMessage.getStorageId())).findFirst().orElse(null);
-			if (ObjectUtils.isNotNull(storageType)) {
-				vo.setStorageName(storageType.getCname());
-			}
+			storageTypeList.stream().filter(storage -> storage.getId().equals(orderMessage.getStorageId())).findFirst().ifPresent(storageType -> vo.setStorageName(storageType.getCname()));
 		}
 		//获取订单明细信息
 		List<OrderItems> orderItemsList = this.getOrderItems(vo.getId(), null);
@@ -265,11 +267,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 //			vo.setItemsVOList(orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
 			List<OrderItemsVO> orderItemsVOList = orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList());
 			vo.setItemsVOList(orderItemsVOList);
-			BigDecimal orderQuantity = orderItemsList.stream().filter(it -> it.getOrderQuantity() != null)
-				.map(OrderItems::getOrderQuantity)
+			BigDecimal orderQuantity = orderItemsList.stream().map(OrderItems::getOrderQuantity)
+				.filter(Objects::nonNull)
 				.reduce(BigDecimal.ZERO, BigDecimal::add);
 			vo.setOrderQuantity(orderQuantity);
-			vo.setAmount(orderItemsList.stream().filter(e -> e.getAmount() != null).map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//销售金额
+			vo.setAmount(orderItemsList.stream().map(OrderItems::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));//销售金额
 		} else {
 			vo.setItemsVOList(new ArrayList<>());
 		}
@@ -293,15 +295,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 	/**
 	 * 报价单生成采购询价单
-	 *
-	 * @param order
-	 * @return
 	 */
 	@Override
 	@Transactional
 	public R<OrderVO> savePurchaseEnquiry(Order order) {
 		Order purchaseEnquiry = baseMapper.selectById(order.getId());
-		if (StringUtils.isNotBlank(purchaseEnquiry.getIfEnquiry()) && purchaseEnquiry.getIfEnquiry().equals("已询价")) {
+		if (StringUtils.isNotBlank(purchaseEnquiry.getIfEnquiry()) && "已询价".equals(purchaseEnquiry.getIfEnquiry())) {
 			throw new RuntimeException("已询价,请勿重复提交");
 		}
 		//获取系统编号
@@ -681,12 +680,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					stockGoods.setCreateUser(AuthUtil.getUserId());
 					stockGoods.setTenantId(AuthUtil.getTenantId());
 					//采购件数
-					stockGoods.setInQuantity(item.getOrderQuantity());//入库数量
-					stockGoods.setOutQuantity(BigDecimal.ZERO);//出库数量
-					stockGoods.setLockingQuantity(BigDecimal.ZERO);//锁定数量
-					stockGoods.setBalanceQuantity(item.getOrderQuantity());//结余数量
-					stockGoods.setEnRouteQuantity(BigDecimal.ZERO);//在途数量
-					stockGoods.setSurplusRouteQuantity(item.getOrderQuantity());//可用数量
+					//入库数量
+					stockGoods.setInQuantity(item.getOrderQuantity());
+					//出库数量
+					stockGoods.setOutQuantity(BigDecimal.ZERO);
+					//锁定数量
+					stockGoods.setLockingQuantity(BigDecimal.ZERO);
+					//结余数量
+					stockGoods.setBalanceQuantity(item.getOrderQuantity());
+					//在途数量
+					stockGoods.setEnRouteQuantity(BigDecimal.ZERO);
+					//可用数量
+					stockGoods.setSurplusRouteQuantity(item.getOrderQuantity());
 					//发票重量
 					stockGoods.setInWeight(BigDecimal.ZERO);
 					stockGoods.setOutWeight(BigDecimal.ZERO);
@@ -704,14 +709,22 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 					stockGoods.setLotNo(item.getLotNo());
 					stockGoods.setStorageId(selectById.getStorageId());
 					stockGoods.setTradeType(OrderTypeEnum.DEALER.getType());
+					// todo 新加库存价
+					stockGoods.setStockPrice(item.getAmount().divide(item.getOrderQuantity(), MathContext.DECIMAL32));
 					R saveStock = stockGoodsClient.saveStock(stockGoods);
 				} else {
 					StockGoodsVO data = stock.getData();
-					data.setBalanceQuantity(data.getBalanceQuantity().add(item.getOrderQuantity()));//结余数量
-					data.setSurplusRouteQuantity(data.getSurplusRouteQuantity().add(item.getOrderQuantity()));//可用数量
-					data.setInAmount(data.getInAmount().add(item.getAmount()));//入库金额
+					//结余数量
+					data.setBalanceQuantity(data.getBalanceQuantity().add(item.getOrderQuantity()));
+					//可用数量
+					data.setSurplusRouteQuantity(data.getSurplusRouteQuantity().add(item.getOrderQuantity()));
+					//入库金额
+					data.setInAmount(data.getInAmount().add(item.getAmount()));
 					data.setInQuantity(data.getInQuantity().add(item.getOrderQuantity()));
-					data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));//结余金额
+					//结余金额
+					data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));
+					// todo 新加库存价
+					data.setStockPrice(data.getBalanceAmount().divide(data.getBalanceQuantity(), MathContext.DECIMAL32));
 					boolean updateStock = stockGoodsClient.updateStock(data);
 				}
 				//更改明细状态
@@ -739,10 +752,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				}
 				//更改库存
 				StockGoodsVO data = stock.getData();
-				data.setBalanceQuantity(data.getBalanceQuantity().subtract(item.getOrderQuantity()));//结余数量
-				data.setSurplusRouteQuantity(data.getSurplusRouteQuantity().subtract(item.getOrderQuantity()));//可用数量
-				data.setInAmount(data.getInAmount().subtract(item.getAmount()));//入库金额
-				data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));//结余金额
+				//结余数量
+				data.setBalanceQuantity(data.getBalanceQuantity().subtract(item.getOrderQuantity()));
+				//可用数量
+				data.setSurplusRouteQuantity(data.getSurplusRouteQuantity().subtract(item.getOrderQuantity()));
+				//入库金额
+				data.setInAmount(data.getInAmount().subtract(item.getAmount()));
+				//结余金额
+				data.setBalanceAmount(data.getInAmount().subtract(data.getOutAmount()));
+				// todo 新加库存价
+				data.setStockPrice(data.getBalanceAmount().divide(data.getBalanceQuantity(), MathContext.DECIMAL32));
 				boolean updateStock = stockGoodsClient.updateStock(data);
 				//更改明细状态
 				item.setStatus(0);
@@ -962,7 +981,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 					// 判断比较大小
 					if (orderQuantity.compareTo(lockingQuantity) > 0) {
-						throw new SecurityException(oneStock.getCode()+"撤销失败:原单据的订货数量大于锁定库存,无法释放 库存");
+						throw new SecurityException(oneStock.getCode() + "撤销失败:原单据的订货数量大于锁定库存,无法释放 库存");
 					}
 					// 增加可用库存
 					oneStock.setSurplusRouteQuantity(surplusRouteQuantity.add(orderQuantity));
@@ -1004,6 +1023,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * @param excelList
 	 * @return
 	 */
+	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
 	public List<CMYWarehousingExcel> warehousing(List<CMYWarehousingExcel> excelList) {
@@ -1668,7 +1688,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 						.eq(OrderItems::getTenantId, AuthUtil.getTenantId());
 					//入库明细
 					List<OrderItems> RkOrderItemsList = orderItemsMapper.selectList(RKOrderItemsLambdaQueryWrapper);
-					long count = RkOrderItemsList.stream().filter(R -> R.getIsIssue().equals("7")).count();
+					long count = RkOrderItemsList.stream().filter(R -> "7".equals(R.getIsIssue())).count();
 					//判断入库明细是否已全部出库 true 修改入库主表总状态为已出库
 					if (count == RkOrderItemsList.size()) {
 						Order RKOrder = new Order();
@@ -1698,7 +1718,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 				RKOrderItems.setBalanceNumber(orderItems.getInventory());
 				RKOrderItems.setBalanceMoney(orderItems.getBalanceMoney());
 				RKOrderItems.setSurplusLoss(orderItems.getSurplusLoss());
-				if (orderItems.getIsIssue().equals("7")) {
+				if ("7".equals(orderItems.getIsIssue())) {
 					throw new SecurityException("捆包号:" + orderItems.getBillNo() + "已出库");
 				}
 				orderItemsMapper.updateById(RKOrderItems);
@@ -2611,7 +2631,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 			//获取入库日期
 			List<OrderItems> orderItemsList = order.getOrderItemsList();
 			StringBuilder text = new StringBuilder();
-			Long feeUnitId = 0l;
+			Long feeUnitId = 0L;
 			for (OrderItems orderItems : orderItemsList) {
 				int date = 0;
 				//获取存放天数