diff --git a/intc-modules/intc-invest/src/main/java/com/intc/invest/service/impl/CreditCardBillServiceImpl.java b/intc-modules/intc-invest/src/main/java/com/intc/invest/service/impl/CreditCardBillServiceImpl.java index 8895b03..9f1684f 100644 --- a/intc-modules/intc-invest/src/main/java/com/intc/invest/service/impl/CreditCardBillServiceImpl.java +++ b/intc-modules/intc-invest/src/main/java/com/intc/invest/service/impl/CreditCardBillServiceImpl.java @@ -332,8 +332,19 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService } } - //如果账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期 + //如枟账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期 if(isNextBillDate.equals("1") && dayOfMonth == bankCard.getBillDate()){ + //先将当期账单状态更新为已出账 + if(creditCardBillList.size()>0){ + CreditCardBillVo currentCreditCardBillVo=creditCardBillList.get(0); + CreditCardBill updateCurrentBill=new CreditCardBill(); + updateCurrentBill.setUpdateBy(SecurityUtils.getUsername()); + updateCurrentBill.setUpdateTime(DateUtils.getNowDate()); + updateCurrentBill.setId(currentCreditCardBillVo.getId()); + updateCurrentBill.setBillState("1");//设置为已出账 + creditCardBillMapper.updateCreditCardBill(updateCurrentBill); + } + //计算下一个账单日期 String nextBillDateStr; if(month==12){ @@ -364,6 +375,30 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService Date nextEndDate = nextCalendarEnd.getTime(); String nextPeriodEnd= formatter.format(nextEndDate); + //计算下一个账单周期的账单金额 + double nextBillAmount=0; + AccountsDealRecordDto nextAccountsDealRecordDto=new AccountsDealRecordDto(); + nextAccountsDealRecordDto.setAccountId(bankCard.getId()); + try { + nextAccountsDealRecordDto.setStartDateTime(formatterTime.parse(nextPeriodStart+" 00:00:00")); + nextAccountsDealRecordDto.setEndDateTime(formatterTime.parse(nextPeriodEnd+" 23:59:59")); + } catch (ParseException e) { + throw new RuntimeException(e); + } + nextAccountsDealRecordDto.setCreditBill("6"); + + //获取下一个账单周期的所有交易记录 + List nextAccountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(nextAccountsDealRecordDto); + //收入转为负数 + for (AccountsDealRecordVo vo:nextAccountsDealRecordVoList) { + if(vo.getDealType().equals("1")){ + vo.setAmount(vo.getAmount()*(-1)); + } + } + if(nextAccountsDealRecordVoList.size()>0){ + nextBillAmount=nextAccountsDealRecordVoList.stream().mapToDouble(AccountsDealRecordVo::getAmount).sum(); + } + //检查下一个账单周期是否已存在 CreditCardBillDto nextCreditCardBillDto=new CreditCardBillDto(); nextCreditCardBillDto.setCreditCardId(bankCard.getId()); @@ -381,9 +416,18 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService nextCreditCardBill.setCreateTime(DateUtils.getNowDate()); nextCreditCardBill.setId(IdWorker.getId()); nextCreditCardBill.setCreditCardId(bankCard.getId()); - nextCreditCardBill.setBillAmount(0.0); + nextCreditCardBill.setBillAmount(nextBillAmount); nextCreditCardBill.setBillState("0"); creditCardBillMapper.insertCreditCardBill(nextCreditCardBill); + }else{ + //如果下期账单已存在,更新账单金额 + CreditCardBillVo existNextCreditCardBillVo=nextCreditCardBillList.get(0); + CreditCardBill updateNextCreditCardBill=new CreditCardBill(); + updateNextCreditCardBill.setUpdateBy(SecurityUtils.getUsername()); + updateNextCreditCardBill.setUpdateTime(DateUtils.getNowDate()); + updateNextCreditCardBill.setId(existNextCreditCardBillVo.getId()); + updateNextCreditCardBill.setBillAmount(nextBillAmount); + creditCardBillMapper.updateCreditCardBill(updateNextCreditCardBill); } } @@ -521,6 +565,17 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService //如果账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期 if(isNextBillDate.equals("1") && dayOfMonth == bankCard.getBillDate()){ + //先将当期账单状态更新为已出账 + if(creditCardBillList.size()>0){ + CreditCardBillVo currentCreditCardBillVo=creditCardBillList.get(0); + CreditCardBill updateCurrentBill=new CreditCardBill(); + updateCurrentBill.setUpdateBy(SecurityUtils.getUsername()); + updateCurrentBill.setUpdateTime(DateUtils.getNowDate()); + updateCurrentBill.setId(currentCreditCardBillVo.getId()); + updateCurrentBill.setBillState("1");//设置为已出账 + creditCardBillMapper.updateCreditCardBill(updateCurrentBill); + } + //计算下一个账单日期 String nextBillDateStr; if(month==12){ @@ -551,6 +606,30 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService Date nextEndDate = nextCalendarEnd.getTime(); String nextPeriodEnd= formatter.format(nextEndDate); + //计算下一个账单周期的账单金额 + double nextBillAmount=0; + AccountsDealRecordDto nextAccountsDealRecordDto=new AccountsDealRecordDto(); + nextAccountsDealRecordDto.setAccountId(bankCard.getId()); + try { + nextAccountsDealRecordDto.setStartDateTime(formatterTime.parse(nextPeriodStart+" 00:00:00")); + nextAccountsDealRecordDto.setEndDateTime(formatterTime.parse(nextPeriodEnd+" 23:59:59")); + } catch (ParseException e) { + throw new RuntimeException(e); + } + nextAccountsDealRecordDto.setCreditBill("6"); + + //获取下一个账单周期的所有交易记录 + List nextAccountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(nextAccountsDealRecordDto); + //收入转为负数 + for (AccountsDealRecordVo vo:nextAccountsDealRecordVoList) { + if(vo.getDealType().equals("1")){ + vo.setAmount(vo.getAmount()*(-1)); + } + } + if(nextAccountsDealRecordVoList.size()>0){ + nextBillAmount=nextAccountsDealRecordVoList.stream().mapToDouble(AccountsDealRecordVo::getAmount).sum(); + } + //检查下一个账单周期是否已存在 CreditCardBillDto nextCreditCardBillDto=new CreditCardBillDto(); nextCreditCardBillDto.setCreditCardId(bankCard.getId()); @@ -568,9 +647,18 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService nextCreditCardBill.setCreateTime(DateUtils.getNowDate()); nextCreditCardBill.setId(IdWorker.getId()); nextCreditCardBill.setCreditCardId(bankCard.getId()); - nextCreditCardBill.setBillAmount(0.0); + nextCreditCardBill.setBillAmount(nextBillAmount); nextCreditCardBill.setBillState("0"); creditCardBillMapper.insertCreditCardBill(nextCreditCardBill); + }else{ + //如枟下期账单已存在,更新账单金额 + CreditCardBillVo existNextCreditCardBillVo=nextCreditCardBillList.get(0); + CreditCardBill updateNextCreditCardBill=new CreditCardBill(); + updateNextCreditCardBill.setUpdateBy(SecurityUtils.getUsername()); + updateNextCreditCardBill.setUpdateTime(DateUtils.getNowDate()); + updateNextCreditCardBill.setId(existNextCreditCardBillVo.getId()); + updateNextCreditCardBill.setBillAmount(nextBillAmount); + creditCardBillMapper.updateCreditCardBill(updateNextCreditCardBill); } } diff --git a/intc-modules/intc-invest/src/main/java/com/intc/job/service/impl/InvestJobImpl.java b/intc-modules/intc-invest/src/main/java/com/intc/job/service/impl/InvestJobImpl.java index ec82369..4cfeab1 100644 --- a/intc-modules/intc-invest/src/main/java/com/intc/job/service/impl/InvestJobImpl.java +++ b/intc-modules/intc-invest/src/main/java/com/intc/job/service/impl/InvestJobImpl.java @@ -186,8 +186,19 @@ public class InvestJobImpl implements IInvestJobService } } - //如枟账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期 + //如果账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期 if(isNextBillDate.equals("1") && dayOfMonth == bankCard.getBillDate()){ + //先将当期账单状态更新为已出账 + if(creditCardBillList.size()>0){ + CreditCardBillVo currentCreditCardBillVo=creditCardBillList.get(0); + CreditCardBill updateCurrentBill=new CreditCardBill(); + updateCurrentBill.setUpdateBy(SecurityUtils.getUsername()); + updateCurrentBill.setUpdateTime(DateUtils.getNowDate()); + updateCurrentBill.setId(currentCreditCardBillVo.getId()); + updateCurrentBill.setBillState("1");//设置为已出账 + creditCardBillMapper.updateCreditCardBill(updateCurrentBill); + } + //计算下一个账单日期 String nextBillDateStr; if(month==12){ @@ -218,6 +229,30 @@ public class InvestJobImpl implements IInvestJobService Date nextEndDate = nextCalendarEnd.getTime(); String nextPeriodEnd= formatter.format(nextEndDate); + //计算下一个账单周期的账单金额 + double nextBillAmount=0; + AccountsDealRecordDto nextAccountsDealRecordDto=new AccountsDealRecordDto(); + nextAccountsDealRecordDto.setAccountId(bankCard.getId()); + try { + nextAccountsDealRecordDto.setStartDateTime(formatterTime.parse(nextPeriodStart+" 00:00:00")); + nextAccountsDealRecordDto.setEndDateTime(formatterTime.parse(nextPeriodEnd+" 23:59:59")); + } catch (ParseException e) { + throw new RuntimeException(e); + } + nextAccountsDealRecordDto.setCreditBill("6"); + + //获取下一个账单周期的所有交易记录 + List nextAccountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(nextAccountsDealRecordDto); + //收入转为负数 + for (AccountsDealRecordVo vo:nextAccountsDealRecordVoList) { + if(vo.getDealType().equals("1")){ + vo.setAmount(vo.getAmount()*(-1)); + } + } + if(nextAccountsDealRecordVoList.size()>0){ + nextBillAmount=nextAccountsDealRecordVoList.stream().mapToDouble(AccountsDealRecordVo::getAmount).sum(); + } + //检查下一个账单周期是否已存在 CreditCardBillDto nextCreditCardBillDto=new CreditCardBillDto(); nextCreditCardBillDto.setCreditCardId(bankCard.getId()); @@ -235,9 +270,18 @@ public class InvestJobImpl implements IInvestJobService nextCreditCardBill.setCreateTime(DateUtils.getNowDate()); nextCreditCardBill.setId(IdWorker.getId()); nextCreditCardBill.setCreditCardId(bankCard.getId()); - nextCreditCardBill.setBillAmount(0.0); + nextCreditCardBill.setBillAmount(nextBillAmount); nextCreditCardBill.setBillState("0"); creditCardBillMapper.insertCreditCardBill(nextCreditCardBill); + }else{ + //如果下期账单已存在,更新账单金额 + CreditCardBillVo existNextCreditCardBillVo=nextCreditCardBillList.get(0); + CreditCardBill updateNextCreditCardBill=new CreditCardBill(); + updateNextCreditCardBill.setUpdateBy(SecurityUtils.getUsername()); + updateNextCreditCardBill.setUpdateTime(DateUtils.getNowDate()); + updateNextCreditCardBill.setId(existNextCreditCardBillVo.getId()); + updateNextCreditCardBill.setBillAmount(nextBillAmount); + creditCardBillMapper.updateCreditCardBill(updateNextCreditCardBill); } }