|
|
@@ -45,6 +45,8 @@ public class BusOrderFeeServiceImpl extends ServiceImpl<BusOrderFeeMapper, BusOr
|
|
|
IBusMemberBalanceLogService memberBalanceLogService;
|
|
|
@Resource
|
|
|
IBusOrderFeeGoodsService orderFeeGoodsService;
|
|
|
+ @Resource
|
|
|
+ IBusMarketAgreementUnitService marketAgreementUnitService;
|
|
|
|
|
|
@Override
|
|
|
public Boolean strikeBalance(List<BusOrderFee> busOrderFeeList) {
|
|
|
@@ -78,8 +80,8 @@ public class BusOrderFeeServiceImpl extends ServiceImpl<BusOrderFeeMapper, BusOr
|
|
|
@Override
|
|
|
public Boolean refundBatch(List<BusOrderFee> busOrderFeeList) {
|
|
|
List<BusRoomPayType> payTypeList = payTypeService.list();
|
|
|
- Optional<BusRoomPayType> roomPayType = payTypeList.stream().filter(e -> "会员卡".equals(e.getName())).findFirst();
|
|
|
- roomPayType.ifPresent(e -> {
|
|
|
+ Optional<BusRoomPayType> cardPayType = payTypeList.stream().filter(e -> "会员卡".equals(e.getName())).findFirst();
|
|
|
+ cardPayType.ifPresent(e -> {
|
|
|
// 会员支付的订单
|
|
|
List<BusOrderFee> busOrderFees = busOrderFeeList.stream().filter(fee -> e.getId()
|
|
|
.equals(fee.getPayType())).collect(Collectors.toList());
|
|
|
@@ -105,8 +107,34 @@ public class BusOrderFeeServiceImpl extends ServiceImpl<BusOrderFeeMapper, BusOr
|
|
|
memberCardService.updateBatchById(memberCardList);
|
|
|
}
|
|
|
});
|
|
|
+ Optional<BusRoomPayType> agreementPayType = payTypeList.stream().filter(e -> "单位挂账".equals(e.getName())).findFirst();
|
|
|
+ agreementPayType.ifPresent(e -> {
|
|
|
+ List<BusOrderFee> busOrderFees = busOrderFeeList.stream().filter(fee -> e.getId()
|
|
|
+ .equals(fee.getPayType())).collect(Collectors.toList());
|
|
|
+ if (CollUtil.isNotEmpty(busOrderFees)){
|
|
|
+ List<String> agreementUnitIds = busOrderFees.stream().map(BusOrderFee::getAgreementUnitId).distinct().collect(Collectors.toList());
|
|
|
+ List<BusMarketAgreementUnit> marketAgreementUnitList = marketAgreementUnitService.listByIds(agreementUnitIds);
|
|
|
+ if (CollUtil.isEmpty(agreementUnitIds) || agreementUnitIds.size() != marketAgreementUnitList.size()){
|
|
|
+ throw new JeecgBootException("协议单位匹配异常");
|
|
|
+ }
|
|
|
+ busOrderFees.forEach(fee ->{
|
|
|
+ marketAgreementUnitList.stream().filter(agreement -> agreement.getId().equals(fee.getAgreementUnitId())).findFirst().ifPresent(agreement ->{
|
|
|
+ // 计算已用额度与当前退款的差价
|
|
|
+ BigDecimal differMoney = agreement.getAmountUsed().subtract(fee.getMoney());
|
|
|
+ if (differMoney.compareTo(new BigDecimal(0)) < 0 ){
|
|
|
+ agreement.setAmountUsed(new BigDecimal(0));
|
|
|
+ agreement.setBalance(agreement.getBalance().subtract(differMoney));
|
|
|
+ } else {
|
|
|
+ agreement.setAmountUsed(differMoney);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ marketAgreementUnitService.updateBatchById(marketAgreementUnitList);
|
|
|
+ }
|
|
|
+ });
|
|
|
busOrderFeeList.forEach(e -> {
|
|
|
e.setId(null);
|
|
|
+ // 将扣款变成负数金额
|
|
|
e.setMoney(e.getMoney().multiply(BigDecimal.valueOf(-1)));
|
|
|
});
|
|
|
return saveBatch(busOrderFeeList);
|
|
|
@@ -165,10 +193,34 @@ public class BusOrderFeeServiceImpl extends ServiceImpl<BusOrderFeeMapper, BusOr
|
|
|
});
|
|
|
payTypeList.stream().filter(e -> "单位挂账".equals(e.getName())).findFirst().ifPresent(type -> {
|
|
|
//找出单位挂账支付的账单,将单位挂账支付的账单中的单位挂账id去重
|
|
|
- List<BusOrderFee> agreementUnitPayFee = busOrderFeeList.stream().filter(fee -> type.getId().equals(fee.getPayType())).collect(Collectors.toList());
|
|
|
- List<String> agreementUnitIds = agreementUnitPayFee.stream().map(BusOrderFee::getAgreementUnitId).filter(StrUtil::isNotEmpty).distinct().collect(Collectors.toList());
|
|
|
+ List<BusOrderFee> agreementUnitPayFee = busOrderFeeList.stream()
|
|
|
+ .filter(fee -> type.getId().equals(fee.getPayType())).collect(Collectors.toList());
|
|
|
+ List<String> agreementUnitIds = agreementUnitPayFee.stream().map(BusOrderFee::getAgreementUnitId)
|
|
|
+ .filter(StrUtil::isNotEmpty).distinct().collect(Collectors.toList());
|
|
|
if (CollUtil.isNotEmpty(agreementUnitIds)){
|
|
|
-
|
|
|
+ List<BusMarketAgreementUnit> marketAgreementUnitList = marketAgreementUnitService.listByIds(agreementUnitIds);
|
|
|
+ if (agreementUnitIds.size() != marketAgreementUnitList.size()){
|
|
|
+ throw new JeecgBootException("单位挂账匹配异常");
|
|
|
+ }
|
|
|
+ agreementUnitPayFee.forEach(fee -> {
|
|
|
+ // 找出账单匹配的合同单位
|
|
|
+ BusMarketAgreementUnit marketAgreementUnit = marketAgreementUnitList.stream().filter(agreement ->
|
|
|
+ agreement.getId().equals(fee.getAgreementUnitId())).findFirst().get();
|
|
|
+ // 计算余额与账单金额差价,如果差价小于0,将余额置0,将差价加到已用额度。差价大于等于0,直接扣余额
|
|
|
+ BigDecimal differMoney = marketAgreementUnit.getBalance().subtract(fee.getMoney());
|
|
|
+ if (differMoney.compareTo(new BigDecimal(0)) < 0){
|
|
|
+ marketAgreementUnit.setBalance(new BigDecimal(0));
|
|
|
+ marketAgreementUnit.setAmountUsed(marketAgreementUnit.getAmountUsed().subtract(differMoney));
|
|
|
+ } else {
|
|
|
+ marketAgreementUnit.setBalance(differMoney);
|
|
|
+ }
|
|
|
+ // 已用额度大于记账额度,抛出异常
|
|
|
+ if (marketAgreementUnit.getBookkeeping() != null
|
|
|
+ && (marketAgreementUnit.getAmountUsed().compareTo(marketAgreementUnit.getBookkeeping()) > 0)){
|
|
|
+ throw new JeecgBootException(marketAgreementUnit.getCustomerName() + "超过记账额度");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ marketAgreementUnitService.updateBatchById(marketAgreementUnitList);
|
|
|
}
|
|
|
|
|
|
});
|