|
@@ -139,48 +139,53 @@ public class MusicGroupCalenderRefundPeriodServiceImpl extends BaseServiceImpl<I
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean calcRefundAmount(Long calenderId,String orderNo, BigDecimal amount) {
|
|
|
- //获取回款周期
|
|
|
- List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
|
|
|
- Date date = new Date();
|
|
|
- BigDecimal subAmount = amount;
|
|
|
- for (int i = 0; i < refundPeriods.size(); i++) {
|
|
|
- MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
|
|
|
- if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
|
|
|
- refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
- if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
|
|
|
- refundPeriod.setOrderNos(orderNo);
|
|
|
- }else {
|
|
|
- refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
|
|
|
+ if(calenderId != null){
|
|
|
+ //获取回款周期
|
|
|
+ List<MusicGroupCalenderRefundPeriod> refundPeriods = musicGroupCalenderRefundPeriodDao.findByCalenderId(calenderId);
|
|
|
+ if(CollectionUtils.isNotEmpty(refundPeriods)){
|
|
|
+ Date date = new Date();
|
|
|
+ BigDecimal subAmount = amount;
|
|
|
+ for (int i = 0; i < refundPeriods.size(); i++) {
|
|
|
+ MusicGroupCalenderRefundPeriod refundPeriod = refundPeriods.get(i);
|
|
|
+ if(i == refundPeriods.size() - 1 && refundPeriod.getRefundFlag()){
|
|
|
+ refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
+ if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
|
|
|
+ refundPeriod.setOrderNos(orderNo);
|
|
|
+ }else {
|
|
|
+ refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
|
|
|
+ }
|
|
|
+ refundPeriod.setUpdateTime(date);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if(refundPeriod.getRefundFlag()){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
|
|
|
+ if(i == refundPeriods.size() - 1){
|
|
|
+ refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
+ subAmount = BigDecimal.ZERO;
|
|
|
+ }else {
|
|
|
+ refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
|
|
|
+ subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
|
|
|
+ }
|
|
|
+ refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
|
|
|
+ refundPeriod.setRefundFlag(true);
|
|
|
+ }else {
|
|
|
+ refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
+ refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
|
|
|
+ subAmount = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
|
|
|
+ refundPeriod.setOrderNos(orderNo);
|
|
|
+ }else {
|
|
|
+ refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
|
|
|
+ }
|
|
|
+ refundPeriod.setUpdateTime(date);
|
|
|
}
|
|
|
- refundPeriod.setUpdateTime(date);
|
|
|
- break;
|
|
|
- }
|
|
|
- if(refundPeriod.getRefundFlag()){
|
|
|
- continue;
|
|
|
- }
|
|
|
- if(subAmount.compareTo(refundPeriod.getSubRefundAmount()) >= 0){
|
|
|
- if(i == refundPeriods.size() - 1){
|
|
|
- refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
- subAmount = BigDecimal.ZERO;
|
|
|
- }else {
|
|
|
- refundPeriod.setIncome(refundPeriod.getIncome().add(refundPeriod.getSubRefundAmount()));
|
|
|
- subAmount = subAmount.subtract(refundPeriod.getSubRefundAmount());
|
|
|
- }
|
|
|
- refundPeriod.setSubRefundAmount(BigDecimal.ZERO);
|
|
|
- refundPeriod.setRefundFlag(true);
|
|
|
- }else {
|
|
|
- refundPeriod.setIncome(refundPeriod.getIncome().add(subAmount));
|
|
|
- refundPeriod.setSubRefundAmount(refundPeriod.getSubRefundAmount().subtract(subAmount));
|
|
|
- subAmount = BigDecimal.ZERO;
|
|
|
- }
|
|
|
- if(StringUtils.isEmpty(refundPeriod.getOrderNos())){
|
|
|
- refundPeriod.setOrderNos(orderNo);
|
|
|
- }else {
|
|
|
- refundPeriod.setOrderNos(refundPeriod.getOrderNos() + "," + orderNo);
|
|
|
+ musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
|
|
|
+ return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
|
|
|
}
|
|
|
- refundPeriod.setUpdateTime(date);
|
|
|
}
|
|
|
- musicGroupCalenderRefundPeriodDao.batchUpdate(refundPeriods);
|
|
|
- return refundPeriods.get(refundPeriods.size()-1).getRefundFlag();
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|