|
@@ -119,8 +119,11 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
if (orderByOrderNo.getBalancePaymentAmount() != null && orderByOrderNo.getBalancePaymentAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
sysUserCashAccountService.updateBalance(orderByOrderNo.getUserId(), orderByOrderNo.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
|
|
|
}
|
|
|
- studentGoodsSell = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
|
|
|
- studentGoodsSell.setGoodsSellDtos(JSON.parseArray(studentGoodsSell.getGoodsJson(),GoodsSellDto.class));
|
|
|
+ StudentGoodsSell byOrderNo = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
|
|
|
+ if(byOrderNo != null){
|
|
|
+ studentGoodsSell = byOrderNo;
|
|
|
+ studentGoodsSell.setGoodsSellDtos(JSON.parseArray(byOrderNo.getGoodsJson(),GoodsSellDto.class));
|
|
|
+ }
|
|
|
}
|
|
|
Integer studentId = studentGoodsSell.getUserId();
|
|
|
List<GoodsSellDto> goodsSellDtos = studentGoodsSell.getGoodsSellDtos();
|
|
@@ -743,7 +746,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
Map<Integer, List<Goods>> goodsMap = goodsByIds.stream().collect(Collectors.groupingBy(Goods::getId));
|
|
|
Map<String, BigDecimal> costMap = new HashMap<>(2);
|
|
|
List<SellOrder> sellOrders = new ArrayList<>();
|
|
|
- goodsId.forEach(e->{
|
|
|
+ BigDecimal balancePaymentAmount = orderByOrderNo.getBalancePaymentAmount();
|
|
|
+
|
|
|
+ for (Integer e : goodsId) {
|
|
|
GoodsSellDto goodsSellDto = collect.get(e).get(0);
|
|
|
Goods goods = goodsMap.get(e).get(0);
|
|
|
|
|
@@ -756,9 +761,24 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
sellOrder.setTransNo(orderByOrderNo.getTransNo());
|
|
|
sellOrder.setOrderId(orderByOrderNo.getId());
|
|
|
sellOrder.setOrderNo(orderByOrderNo.getOrderNo());
|
|
|
- sellOrder.setExpectAmount(orderByOrderNo.getExpectAmount());
|
|
|
- sellOrder.setActualAmount(orderByOrderNo.getActualAmount());
|
|
|
- sellOrder.setBalanceAmount(orderByOrderNo.getBalancePaymentAmount());
|
|
|
+ sellOrder.setExpectAmount(goodsSellDto.getTotalGoodsPrice());
|
|
|
+ //如果没有使用余额,那么实际金额和预计金额一致
|
|
|
+ if(balancePaymentAmount.doubleValue() == 0l){
|
|
|
+ sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice());
|
|
|
+ sellOrder.setBalanceAmount(BigDecimal.ZERO);
|
|
|
+ }else {
|
|
|
+ //余额大于等于商品总价
|
|
|
+ if(balancePaymentAmount.compareTo(goodsSellDto.getTotalGoodsPrice()) >= 1){
|
|
|
+ sellOrder.setActualAmount(BigDecimal.ZERO);
|
|
|
+ sellOrder.setBalanceAmount(goodsSellDto.getTotalGoodsPrice());
|
|
|
+ balancePaymentAmount = balancePaymentAmount.subtract(goodsSellDto.getTotalGoodsPrice());
|
|
|
+ }else {
|
|
|
+ //余额小于商品总价
|
|
|
+ sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice().subtract(balancePaymentAmount));
|
|
|
+ sellOrder.setBalanceAmount(balancePaymentAmount);
|
|
|
+ balancePaymentAmount = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ }
|
|
|
sellOrder.setSellCost(goods.getDiscountPrice());
|
|
|
sellOrder.setSellCost2(JSONObject.toJSONString(costMap));
|
|
|
sellOrder.setType(SellTypeEnum.valueOf(goods.getType().getCode()));
|
|
@@ -772,7 +792,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
|
|
|
sellOrder.setEduTeacherId(studentGoodsSell.getTeacherId());
|
|
|
sellOrder.setCooperationOrganId(studentGoodsSell.getCooperationOrganId());
|
|
|
sellOrders.add(sellOrder);
|
|
|
- });
|
|
|
+ }
|
|
|
if(sellOrders.size() > 0){
|
|
|
sellOrderService.batchInsert(sellOrders);
|
|
|
}
|