fix:定时任务相关功能完善,自测问题修复。

This commit is contained in:
tianyongbao
2024-04-28 16:53:43 +08:00
parent eae2dc899b
commit 5a8f726968
18 changed files with 485 additions and 13 deletions

View File

@@ -52,6 +52,9 @@ public class CreditCardBill extends BaseEntity
/** 删除标志0代表存在 1代表删除 */
private String delFlag;
/** 删除标志0代表存在 1代表删除 */
private String billState;
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -66,6 +69,7 @@ public class CreditCardBill extends BaseEntity
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.append("billState", getBillState())
.toString();
}
}

View File

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 账户交易记录Dto对象 accounts_deal_record
*
@@ -27,7 +29,7 @@ public class AccountsDealRecordDto implements Serializable
/** 账户 */
@ApiModelProperty(value="账户")
private String accountId;
private Long accountId;
/** 交易类型 */
@ApiModelProperty(value="交易类型")
@@ -37,12 +39,21 @@ public class AccountsDealRecordDto implements Serializable
@ApiModelProperty(value="交易类别")
private String dealCategory;
/** 交易类别 */
/** 开始日期 */
@ApiModelProperty(value="开始日期")
private String startTime;
/** 交易类别 */
/** 结束日期 */
@ApiModelProperty(value="结束日期")
private String endTime;
/** 开始时间*/
@ApiModelProperty(value="开始时间")
private Date startDateTime;
/** 结束时间*/
@ApiModelProperty(value="结束时间")
private Date endDateTime;
}

View File

@@ -25,13 +25,24 @@ public class CreditCardBillDto implements Serializable
@ApiModelProperty(value="信用卡id")
private Long creditCardId;
/** 开始月份 */
@ApiModelProperty(value="开始月份")
private String startMonth;
/** 结束月份 */
@ApiModelProperty(value="结束月份")
private String endMonth;
/** 开始月份 */
@ApiModelProperty(value="开始月份")
private String startMonth;
/** 账单状态 */
@ApiModelProperty(value="账单状态")
private String billState;
/** 账单日 */
@ApiModelProperty(value="账单日")
private String billDate;
}

View File

@@ -6,7 +6,9 @@ import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.invest.domain.CreditCardBill;
import com.ruoyi.invest.domain.dto.CreditCardBillDto;
import com.ruoyi.invest.domain.vo.BankCardLendVo;
import com.ruoyi.invest.domain.vo.CreditCardBillVo;
import com.ruoyi.invest.mapper.BankCardLendMapper;
import com.ruoyi.invest.mapper.CreditCardBillMapper;
import com.ruoyi.invest.service.ICreditCardBillService;
import org.springframework.stereotype.Service;
@@ -28,6 +30,8 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
{
@Resource
private CreditCardBillMapper creditCardBillMapper;
@Resource
private BankCardLendMapper bankCardLendMapper;
/**
* 查询信用卡账单
@@ -74,17 +78,25 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
creditCardBill.setId(IdWorker.getId());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月账单");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
BankCardLendVo bankCard=bankCardLendMapper.selectBankCardLendById(creditCardBill.getCreditCardId());
//0表示当期1表示下期
String isNextBillDate = bankCard.getIsNextBillDate();
if(creditCardBill.getBillDate()!=null){
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
Calendar calendarStart = Calendar.getInstance();
calendarStart.setTime(creditCardBill.getBillDate());
calendarStart.add(Calendar.MONTH, -1);
if(isNextBillDate.equals("0")){
calendarStart.add(Calendar.DATE, 1);
}
Date lastMonth = calendarStart.getTime();
String periodStart = formatter.format(lastMonth);
Calendar calendarEnd = Calendar.getInstance();
calendarEnd.setTime(creditCardBill.getBillDate());
calendarEnd.add(Calendar.DATE, -1);
if(isNextBillDate.equals("1")){
calendarEnd.add(Calendar.DATE, -1);
}
Date lastDay = calendarEnd.getTime();
String periodEnd= formatter.format(lastDay);
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);
@@ -107,17 +119,25 @@ public class CreditCardBillServiceImpl implements ICreditCardBillService
creditCardBill.setUpdateTime(DateUtils.getNowDate());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月账单");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
BankCardLendVo bankCard=bankCardLendMapper.selectBankCardLendById(creditCardBill.getCreditCardId());
//0表示当期1表示下期
String isNextBillDate = bankCard.getIsNextBillDate();
if(creditCardBill.getBillDate()!=null){
creditCardBill.setName(simpleDateFormat.format(creditCardBill.getBillDate()));
Calendar calendarStart = Calendar.getInstance();
calendarStart.setTime(creditCardBill.getBillDate());
calendarStart.add(Calendar.MONTH, -1);
if(isNextBillDate.equals("0")){
calendarStart.add(Calendar.DATE, 1);
}
Date lastMonth = calendarStart.getTime();
String periodStart = formatter.format(lastMonth);
Calendar calendarEnd = Calendar.getInstance();
calendarEnd.setTime(creditCardBill.getBillDate());
calendarEnd.add(Calendar.DATE, -1);
if(isNextBillDate.equals("1")){
calendarEnd.add(Calendar.DATE, -1);
}
Date lastDay = calendarEnd.getTime();
String periodEnd= formatter.format(lastDay);
creditCardBill.setBillDatePeriod(periodStart+"~"+periodEnd);

View File

@@ -113,6 +113,28 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
//返回数据
HashMap<String, Object> map = new HashMap<>();
DecimalFormat decimalFormat = new DecimalFormat("#.##");
AccountsDto dto=new AccountsDto();
dto.setState("1");
//储蓄卡
dto.setType("1");
List<AccountsVo> accountsList=accountsMapper.selectAccountsList(dto);
double debetBalance =0;
if(accountsList.size()>0){
debetBalance=accountsList.stream().mapToDouble(AccountsVo::getAvailableLimit).sum();
}
map.put("debetBalance",decimalFormat.format(debetBalance));
dto.setState("1");
//信用卡
dto.setType("2");
accountsList=accountsMapper.selectAccountsList(dto);
double creditBalance =0;
if(accountsList.size()>0){
creditBalance=accountsList.stream().mapToDouble(AccountsVo::getBalance).sum()*(-1);
}
map.put("creditBalance",decimalFormat.format(creditBalance));
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat formatterMonth = new SimpleDateFormat("yyyy-MM");
//未结清网贷数据
@@ -148,7 +170,10 @@ public class StatisticAnalysisImpl implements IStatisticAnalysisService {
}
map.put("peopleLendHistory",decimalFormat.format(peopleLendHistory));
map.put("totalDebt",decimalFormat.format(unClearedOnlineDebt+creditInstallmentHistory+peopleLendHistory));
//总负债
map.put("totalDebt",decimalFormat.format(unClearedOnlineDebt+creditBalance+peopleLendHistory));
//净资产
map.put("netAsset",decimalFormat.format(debetBalance-unClearedOnlineDebt-creditBalance-peopleLendHistory));
//未结清账户数
installmentHistoryDto.setState("0");

View File

@@ -0,0 +1,47 @@
package com.ruoyi.job.controller;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.job.service.IInvestJobService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 信息Controller
*
* @author tianyongbao
* @date 2023-12-11
*/
@Api(tags=" 生成数据信息")
@RestController
@RequestMapping("/job")
public class InvestJob
{
@Resource
private IInvestJobService investJobService;
@PostMapping("/generateUnpaidCreditBill")
public AjaxResult generateUnpaidCreditBill()
{
System.out.println("================================开始生成未出账单数据("+ DateUtils.getTime() +")=================================");
investJobService.generateUnpaidCreditBill();
System.out.println("================================结束生成未出账单据("+ DateUtils.getTime() +")=================================");
return AjaxResult.success();
}
@PostMapping("/updateUnpaidInstallmentData")
public AjaxResult updateUnpaidInstallmentData()
{
System.out.println("================================开始更新未出信用卡分期账单入账数据("+ DateUtils.getTime() +")=================================");
investJobService.updateUnpaidInstallmentData();
System.out.println("================================结束更新未出信用卡分期账单入账拟数据("+ DateUtils.getTime() +")=================================");
return AjaxResult.success();
}
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.job.service;
/**
* 生成模拟数据
*
* @author tianyongbao
* @date 2023-12-11
*/
public interface IInvestJobService
{
/**
* 生成模拟数据
*
* @author tianyongbao
* @date 2023-12-11
*/
public void generateUnpaidCreditBill();
/**
* 生成能耗模拟数据
*
* @author tianyongbao
* @date 2023-12-12
*/
public void updateUnpaidInstallmentData();
}

View File

@@ -0,0 +1,166 @@
package com.ruoyi.job.service.impl;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.IdWorker;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.invest.domain.CreditCardBill;
import com.ruoyi.invest.domain.dto.AccountsDealRecordDto;
import com.ruoyi.invest.domain.dto.BankCardLendDto;
import com.ruoyi.invest.domain.dto.CreditCardBillDto;
import com.ruoyi.invest.domain.vo.AccountsDealRecordVo;
import com.ruoyi.invest.domain.vo.BankCardLendVo;
import com.ruoyi.invest.domain.vo.CreditCardBillVo;
import com.ruoyi.invest.mapper.AccountsDealRecordMapper;
import com.ruoyi.invest.mapper.AccountsMapper;
import com.ruoyi.invest.mapper.BankCardLendMapper;
import com.ruoyi.invest.mapper.CreditCardBillMapper;
import com.ruoyi.job.service.IInvestJobService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 生成数据
*
* @author tianyongbao
* @date 2023-12-11
*/
@Service
public class InvestJobImpl implements IInvestJobService
{
@Resource
private BankCardLendMapper bankCardLendMapper;
@Resource
private AccountsMapper accountsMapper;
@Resource
private AccountsDealRecordMapper accountsDealRecordMapper;
@Resource
private CreditCardBillMapper creditCardBillMapper;
/**
* 生成数据
*
* @author tianyongbao
* @date 2023-12-11
*/
@Override
public void generateUnpaidCreditBill() {
//未出账单生成定时任务每3个小时同步计算一次作为未出账单根据信用卡基础信息包括账单日及账单日消费信息遍历信用卡记录信息表和交易记录表即可
BankCardLendDto bankCardLendDto=new BankCardLendDto();
bankCardLendDto.setType("2");
List<BankCardLendVo> bankCardVoList=bankCardLendMapper.selectBankCardLendList(bankCardLendDto);
// 获取当前日期
Date currentDate = new Date();
// 创建SimpleDateFormat实例指定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
// 格式化日期为字符串
String formattedDate = sdf.format(currentDate);
// 从格式化后的字符串中提取年份和月份
String year = formattedDate.substring(0, 4);
String month = formattedDate.substring(5);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月账单");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date billDate= new Date();
//遍历数据,获取信用卡账单日及数据
for (BankCardLendVo bankCard : bankCardVoList) {
//0表示当期1表示下期
String isNextBillDate = bankCard.getIsNextBillDate();
String billDateStr=year+"-"+month+"-"+String.format("%02d", bankCard.getBillDate());
try {
billDate=formatter.parse(billDateStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Calendar calendarStart = Calendar.getInstance();
calendarStart.setTime(billDate);
calendarStart.add(Calendar.MONTH, -1);
if(isNextBillDate.equals("0")){
calendarStart.add(Calendar.DATE, 1);
}
Date startDate = calendarStart.getTime();
String periodStart = formatter.format(startDate);
Calendar calendarEnd = Calendar.getInstance();
calendarEnd.setTime(billDate);
if(isNextBillDate.equals("1")){
calendarEnd.add(Calendar.DATE, -1);
}
Date endDate = calendarEnd.getTime();
String periodEnd= formatter.format(endDate);
double billAmount=0;
AccountsDealRecordDto accountsDealRecordDto=new AccountsDealRecordDto();
accountsDealRecordDto.setAccountId(bankCard.getId());
accountsDealRecordDto.setStartDateTime(startDate);
accountsDealRecordDto.setEndDateTime(endDate);
//获取所有交易记录
List<AccountsDealRecordVo> accountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(accountsDealRecordDto);
//支出转为负数
for (AccountsDealRecordVo vo:accountsDealRecordVoList
) {
if(vo.getDealType().equals("2")){
vo.setAmount(vo.getAmount()*(-1));
}
}
if(accountsDealRecordVoList.size()>0){
billAmount=accountsDealRecordVoList.stream().mapToDouble(AccountsDealRecordVo::getAmount).sum();
}
CreditCardBillDto creditCardBillDto=new CreditCardBillDto();
creditCardBillDto.setCreditCardId(bankCard.getId());
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);
//更新未出账单
creditCardBillMapper.updateCreditCardBill(creditCardBill);
}else {
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(SecurityUtils.getUsername());
creditCardBill.setCreateTime(DateUtils.getNowDate());
creditCardBill.setId(IdWorker.getId());
creditCardBill.setCreditCardId(bankCard.getId());
creditCardBill.setBillAmount(billAmount);
creditCardBill.setBillState("0");
//插入未出账单
creditCardBillMapper.insertCreditCardBill(creditCardBill);
}
}
}
@Override
public void updateUnpaidInstallmentData(){
//信用卡分期入账信息自动入账,同时更新信用卡额度相关信息
// 获取当前日期
Date currentDate = new Date();
// 创建SimpleDateFormat实例指定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化日期为字符串
String formattedDate = sdf.format(currentDate);
}
}