fix: 信用卡账单生成逻辑修改。

This commit is contained in:
tianyongbao
2026-03-01 09:52:50 +08:00
parent f2cb3e76ab
commit e0ef67ed45

View File

@@ -294,45 +294,8 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
creditCardBillDto.setBillDate(billDateStr);
creditCardBillDto.setBillState("0");
List<CreditCardBillVo> creditCardBillList=creditCardBillMapper.selectCreditCardBillList(creditCardBillDto);
if(creditCardBillList.size()>0){
CreditCardBillVo creditCardBillVo=creditCardBillList.get(0);
CreditCardBill creditCardBill=new CreditCardBill();
creditCardBill.setUpdateBy(SecurityUtils.getUsername());
creditCardBill.setUpdateTime(DateUtils.getNowDate());
creditCardBill.setId(creditCardBillVo.getId());
creditCardBill.setBillAmount(billAmount);
//如果账单日与当前日期相同,将账单修改为已出账
LocalTime currentTime = LocalTime.now();
LocalTime eveningThreshold = LocalTime.of(23, 0);
if(billDateStr.equals(formatter.format(new Date()))&&currentTime.isAfter(eveningThreshold)){
creditCardBill.setBillState("1");
}
//更新未出账单
creditCardBillMapper.updateCreditCardBill(creditCardBill);
}else {
//如果账单日大于当前日期,未出账,进行插入操作
int flag=billDateStr.compareTo(formatter.format(new Date()));
if(flag>=0){
CreditCardBill creditCardBill=new CreditCardBill();
try {
creditCardBill.setBillDate(formatter.parse(billDateStr));
} catch (ParseException e) {
throw new RuntimeException(e);
}
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);
creditCardBill.setCreateBy(bankCard.getCreateBy());
creditCardBill.setCreateTime(DateUtils.getNowDate());
creditCardBill.setId(IdWorker.getId());
creditCardBill.setCreditCardId(bankCard.getId());
creditCardBill.setBillAmount(billAmount);
creditCardBill.setBillState("0");
//插入未出账单
creditCardBillMapper.insertCreditCardBill(creditCardBill);
}
}
//如账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期
//如账单日消费计入下期(isNextBillDate=1)且今天是账单日,直接进入下期账单生成逻辑
if(isNextBillDate.equals("1") && dayOfMonth == bankCard.getBillDate()){
//先将当期账单状态更新为已出账
if(creditCardBillList.size()>0){
@@ -341,6 +304,7 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
updateCurrentBill.setUpdateBy(SecurityUtils.getUsername());
updateCurrentBill.setUpdateTime(DateUtils.getNowDate());
updateCurrentBill.setId(currentCreditCardBillVo.getId());
updateCurrentBill.setBillAmount(billAmount);//更新本期账单金额
updateCurrentBill.setBillState("1");//设置为已出账
creditCardBillMapper.updateCreditCardBill(updateCurrentBill);
}
@@ -429,6 +393,45 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
updateNextCreditCardBill.setBillAmount(nextBillAmount);
creditCardBillMapper.updateCreditCardBill(updateNextCreditCardBill);
}
}else{
//非账单日当天或账单日消费计入本期:正常更新或创建账单
if(creditCardBillList.size()>0){
CreditCardBillVo creditCardBillVo=creditCardBillList.get(0);
CreditCardBill creditCardBill=new CreditCardBill();
creditCardBill.setUpdateBy(SecurityUtils.getUsername());
creditCardBill.setUpdateTime(DateUtils.getNowDate());
creditCardBill.setId(creditCardBillVo.getId());
creditCardBill.setBillAmount(billAmount);
//如枟账单日与当前日期相同,将账单修改为已出账
LocalTime currentTime = LocalTime.now();
LocalTime eveningThreshold = LocalTime.of(23, 0);
if(billDateStr.equals(formatter.format(new Date()))&&currentTime.isAfter(eveningThreshold)){
creditCardBill.setBillState("1");
}
//更新未出账单
creditCardBillMapper.updateCreditCardBill(creditCardBill);
}else {
//如果账单日大于当前日期,未出账,进行插入操作
int flag=billDateStr.compareTo(formatter.format(new Date()));
if(flag>=0){
CreditCardBill creditCardBill=new CreditCardBill();
try {
creditCardBill.setBillDate(formatter.parse(billDateStr));
} catch (ParseException e) {
throw new RuntimeException(e);
}
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);
creditCardBill.setCreateBy(bankCard.getCreateBy());
creditCardBill.setCreateTime(DateUtils.getNowDate());
creditCardBill.setId(IdWorker.getId());
creditCardBill.setCreditCardId(bankCard.getId());
creditCardBill.setBillAmount(billAmount);
creditCardBill.setBillState("0");
//插入未出账单
creditCardBillMapper.insertCreditCardBill(creditCardBill);
}
}
}
}
@@ -525,45 +528,8 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
creditCardBillDto.setBillDate(billDateStr);
creditCardBillDto.setBillState("0");
List<CreditCardBillVo> creditCardBillList=creditCardBillMapper.selectCreditCardBillList(creditCardBillDto);
if(creditCardBillList.size()>0){
CreditCardBillVo creditCardBillVo=creditCardBillList.get(0);
CreditCardBill creditCardBill=new CreditCardBill();
creditCardBill.setUpdateBy(SecurityUtils.getUsername());
creditCardBill.setUpdateTime(DateUtils.getNowDate());
creditCardBill.setId(creditCardBillVo.getId());
creditCardBill.setBillAmount(billAmount);
//如果账单日与当前日期相同,将账单修改为已出账
LocalTime currentTime = LocalTime.now();
LocalTime eveningThreshold = LocalTime.of(23, 0);
if(billDateStr.equals(formatter.format(new Date()))&&currentTime.isAfter(eveningThreshold)){
creditCardBill.setBillState("1");
}
//更新未出账单
creditCardBillMapper.updateCreditCardBill(creditCardBill);
}else {
//如果账单日大于当前日期,未出账,进行插入操作
int flag=billDateStr.compareTo(formatter.format(new Date()));
if(flag>=0){
CreditCardBill creditCardBill=new CreditCardBill();
try {
creditCardBill.setBillDate(formatter.parse(billDateStr));
} catch (ParseException e) {
throw new RuntimeException(e);
}
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);
creditCardBill.setCreateBy(bankCard.getCreateBy());
creditCardBill.setCreateTime(DateUtils.getNowDate());
creditCardBill.setId(IdWorker.getId());
creditCardBill.setCreditCardId(bankCard.getId());
creditCardBill.setBillAmount(billAmount);
creditCardBill.setBillState("0");
//插入未出账单
creditCardBillMapper.insertCreditCardBill(creditCardBill);
}
}
//如账单日消费计入下期(isNextBillDate=1)且今天是账单日,需要生成下一个账单周期
//如账单日消费计入下期(isNextBillDate=1)且今天是账单日,直接进入下期账单生成逻辑
if(isNextBillDate.equals("1") && dayOfMonth == bankCard.getBillDate()){
//先将当期账单状态更新为已出账
if(creditCardBillList.size()>0){
@@ -572,6 +538,7 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
updateCurrentBill.setUpdateBy(SecurityUtils.getUsername());
updateCurrentBill.setUpdateTime(DateUtils.getNowDate());
updateCurrentBill.setId(currentCreditCardBillVo.getId());
updateCurrentBill.setBillAmount(billAmount);//更新本期账单金额
updateCurrentBill.setBillState("1");//设置为已出账
creditCardBillMapper.updateCreditCardBill(updateCurrentBill);
}
@@ -660,6 +627,45 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
updateNextCreditCardBill.setBillAmount(nextBillAmount);
creditCardBillMapper.updateCreditCardBill(updateNextCreditCardBill);
}
}else{
//非账单日当天或账单日消费计入本期:正常更新或创建账单
if(creditCardBillList.size()>0){
CreditCardBillVo creditCardBillVo=creditCardBillList.get(0);
CreditCardBill creditCardBill=new CreditCardBill();
creditCardBill.setUpdateBy(SecurityUtils.getUsername());
creditCardBill.setUpdateTime(DateUtils.getNowDate());
creditCardBill.setId(creditCardBillVo.getId());
creditCardBill.setBillAmount(billAmount);
//如枟账单日与当前日期相同,将账单修改为已出账
LocalTime currentTime = LocalTime.now();
LocalTime eveningThreshold = LocalTime.of(23, 0);
if(billDateStr.equals(formatter.format(new Date()))&&currentTime.isAfter(eveningThreshold)){
creditCardBill.setBillState("1");
}
//更新未出账单
creditCardBillMapper.updateCreditCardBill(creditCardBill);
}else {
//如枟账单日大于当前日期,未出账,进行插入操作
int flag=billDateStr.compareTo(formatter.format(new Date()));
if(flag>=0){
CreditCardBill creditCardBill=new CreditCardBill();
try {
creditCardBill.setBillDate(formatter.parse(billDateStr));
} catch (ParseException e) {
throw new RuntimeException(e);
}
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);
creditCardBill.setCreateBy(bankCard.getCreateBy());
creditCardBill.setCreateTime(DateUtils.getNowDate());
creditCardBill.setId(IdWorker.getId());
creditCardBill.setCreditCardId(bankCard.getId());
creditCardBill.setBillAmount(billAmount);
creditCardBill.setBillState("0");
//插入未出账单
creditCardBillMapper.insertCreditCardBill(creditCardBill);
}
}
}
}