fix: 信用卡账单生成问题修复。

This commit is contained in:
tianyongbao
2025-12-24 11:05:05 +08:00
parent 202931087b
commit 0f11be82a6
2 changed files with 137 additions and 5 deletions

View File

@@ -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<AccountsDealRecordVo> 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<AccountsDealRecordVo> 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);
}
}

View File

@@ -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<AccountsDealRecordVo> 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);
}
}