|
@@ -151,7 +151,6 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
|
|
|
private GoodsDao goodsDao;
|
|
|
@Autowired
|
|
|
private SellOrderService sellOrderService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private SysAreaService sysAreaService;
|
|
|
|
|
@@ -1153,14 +1152,42 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
|
|
|
|
|
|
public void saveSellOrder(List<MusicGroupPaymentCalenderGoods> goods, StudentPaymentOrder studentPaymentOrder) {
|
|
|
List<SellOrder> sellOrderList = new ArrayList<>();
|
|
|
- for (MusicGroupPaymentCalenderGoods calenderGood : goods) {
|
|
|
+ BigDecimal originalTotalAmount = goods.stream().map(e -> e.getTotalPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ //获取优惠金额
|
|
|
+ BigDecimal totalDiscountAmount = originalTotalAmount.subtract(studentPaymentOrder.getExpectAmount());
|
|
|
+ //待分配优惠
|
|
|
+ BigDecimal waitDiscountAmount = totalDiscountAmount;
|
|
|
+ for (int k = 0; k < goods.size(); k++) {
|
|
|
+ MusicGroupPaymentCalenderGoods calenderGood = goods.get(k);
|
|
|
+ //获取比例
|
|
|
+ BigDecimal totalProportion = BigDecimal.ZERO;
|
|
|
+ if(studentPaymentOrder.getExpectAmount().compareTo(BigDecimal.ZERO) > 0){
|
|
|
+ totalProportion = calenderGood.getTotalPrice().divide(originalTotalAmount, 6, RoundingMode.DOWN);
|
|
|
+ }
|
|
|
+ //获取现价
|
|
|
+ BigDecimal currentTotalAmount;
|
|
|
+ if (k == goods.size() - 1) {
|
|
|
+ currentTotalAmount = calenderGood.getTotalPrice().subtract(waitDiscountAmount);
|
|
|
+ } else {
|
|
|
+ BigDecimal amount = totalDiscountAmount.multiply(totalProportion).setScale(2, RoundingMode.DOWN);
|
|
|
+ waitDiscountAmount = waitDiscountAmount.subtract(amount);
|
|
|
+ currentTotalAmount = calenderGood.getTotalPrice().subtract(amount);
|
|
|
+ }
|
|
|
+ BigDecimal subCurrentTotalAmount = currentTotalAmount;
|
|
|
//待分配金额
|
|
|
for (Integer i = 0; i < calenderGood.getNum(); i++) {
|
|
|
List<ComplementGoodsDto> goodsDtoList = JSON.parseArray(calenderGood.getChildGoodsJson(), ComplementGoodsDto.class);
|
|
|
//获取总成本
|
|
|
BigDecimal totalCostPrice = goodsDtoList.stream().map(e->e.getOrganCostPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
//待分配金额
|
|
|
- BigDecimal totalAmount = calenderGood.getSinglePrice();
|
|
|
+ BigDecimal totalAmount;
|
|
|
+ if(i == calenderGood.getNum() - 1){
|
|
|
+ totalAmount = subCurrentTotalAmount;
|
|
|
+ }else {
|
|
|
+ BigDecimal divide = currentTotalAmount.divide(new BigDecimal(calenderGood.getNum()), 2, RoundingMode.DOWN);
|
|
|
+ totalAmount = divide;
|
|
|
+ subCurrentTotalAmount = subCurrentTotalAmount.subtract(divide);
|
|
|
+ }
|
|
|
BigDecimal waitAmount = totalAmount;
|
|
|
for (int j = 0; j < goodsDtoList.size(); j++) {
|
|
|
ComplementGoodsDto goodsDto = goodsDtoList.get(j);
|
|
@@ -1245,7 +1272,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
|
|
|
OrderCreate orderCreate = new OrderCreate();
|
|
|
orderCreate.setOrderNo(address.getOrderNo());
|
|
|
orderCreate.setOrchestraId(musicGroup.getId());
|
|
|
- orderCreate.setMemberId(musicGroup.getSchoolId().longValue());
|
|
|
+ orderCreate.setMemberId(musicGroup.getCooperationOrganId().longValue());
|
|
|
orderCreate.setTotalAmount(calender.getCurrentTotalAmount());
|
|
|
orderCreate.setOrderFormType("MEC");
|
|
|
orderCreate.setPlatformType("SCHOOL");
|