yonge 3 年之前
父節點
當前提交
cb4171a532

+ 12 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -307,10 +307,10 @@ public class PayServiceImpl implements PayService {
 									/*tempBalance = balanceAmount.multiply(spod.getPrice()).divide(totalAmout).multiply(groupPurchaseAmount)
 											.divide(totalGroupPurchaseAmount);*/
 									tempBalance = balanceAmount.multiply(spod.getPrice()).multiply(groupPurchaseAmount)
-											.divide(totalGroupPurchaseAmount.multiply(totalAmout), RoundingMode.HALF_UP);
+											.divide(totalGroupPurchaseAmount.multiply(totalAmout), BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
 									subBalance = subBalance.add(tempBalance);
 								}
-								tempCashAmount = spod.getPrice().subtract(tempBalance).multiply(groupPurchaseAmount).divide(totalGroupPurchaseAmount, RoundingMode.HALF_UP);
+								tempCashAmount = spod.getPrice().subtract(tempBalance).multiply(groupPurchaseAmount).divide(totalGroupPurchaseAmount, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
 								subCashAmount = subCashAmount.add(tempCashAmount);
 								spod.setIncomeItem(OrderDetailTypeEnum.CLOUD_TEACHER.name());
 								spod.setIncome(tempCashAmount);
@@ -349,7 +349,6 @@ public class PayServiceImpl implements PayService {
     	            studentPaymentRouteOrder.setCreateTime(date);
     	            studentPaymentRouteOrder.setUpdateTime(date);
     	            studentPaymentRouteOrderDao.insert(studentPaymentRouteOrder);
-    	            
 
     	            routeScaleDtoForGoodsSell = new RouteScaleDto();
     	            routeScaleDtoForGoodsSell.setAmount(subCashAmount);
@@ -362,8 +361,16 @@ public class PayServiceImpl implements PayService {
         	}
         }
 		
-		amount = amount.subtract(subCashAmount);
-		balanceAmount = balanceAmount.subtract(subBalance);
+        if(amount.compareTo(subCashAmount) <= 0){
+        	amount = BigDecimal.ZERO;
+        }else{
+        	amount = amount.subtract(subCashAmount);
+        }
+        if(balanceAmount.compareTo(subBalance) <= 0){
+        	balanceAmount = BigDecimal.ZERO;
+        }else{
+        	balanceAmount = balanceAmount.subtract(subBalance);
+        }
         
         String usePaymentConfig = sysConfigDao.findConfigValue("use_payment_config");// 是否用收费配置(1:使用 0:不使用)
         List<RouteScaleDto> routeScaleDtos = null;

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -407,7 +407,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 	                
 	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, RoundingMode.UP);
 	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0){
+	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() - 1){
 	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
 	                }else{
 	                	studentPaymentOrderDetail.setPrice(tempPrice);
@@ -743,7 +743,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 	                
 	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, RoundingMode.UP);
 	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0){
+	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()){
 	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
 	                }else{
 	                	studentPaymentOrderDetail.setPrice(tempPrice);
@@ -992,7 +992,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 	                
 	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, RoundingMode.UP);
 	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0){
+	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()){
 	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
 	                }else{
 	                	studentPaymentOrderDetail.setPrice(tempPrice);

+ 12 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -346,7 +346,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 
                 BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(goodsTotalGroupPurchasePrice, RoundingMode.UP);
                 
-                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0){
+                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() - 1){
                 	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
                 }else{
                 	studentPaymentOrderDetail.setPrice(tempPrice);
@@ -556,8 +556,6 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 	                studentPaymentOrderDetail.setUpdateTime(nowDate);
 	                studentPaymentOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
 	                
-	                studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
-	                
 	                //扣减库存
 					
 					BigDecimal totalGroupPurchaseAmount = BigDecimal.ZERO;
@@ -628,6 +626,17 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 							}
 						}
 					}
+					
+					if (minuendStockGoodsIdList.size() > 0) {
+						studentPaymentOrderDetail.setIncomeItem(OrderDetailTypeEnum.CLOUD_TEACHER.name());
+						studentPaymentOrderDetail.setIncome(BigDecimal.ZERO);
+						studentPaymentOrderDetail.setBalanceIncome(BigDecimal.ZERO);
+						if(minuendStockGoodsIdList.size() > 0){
+							studentPaymentOrderDetail.setMinuendStockGoodsIdList(minuendStockGoodsIdList.stream().map(t -> t.toString()).collect(Collectors.joining(",")));
+						}
+					}
+	                
+	                studentPaymentOrderDetailList.add(studentPaymentOrderDetail);
 				}
         	}