fix: 修改health包名。
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
package com.intc.job.controller;
|
||||
|
||||
import com.intc.common.core.utils.DateUtils;
|
||||
import com.intc.common.core.web.domain.AjaxResult;
|
||||
import com.intc.invest.service.IMTService;
|
||||
import com.intc.invest.service.IUserService;
|
||||
import com.intc.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;
|
||||
@Resource
|
||||
private IMTService imtService;
|
||||
@Resource
|
||||
private IUserService iUserService;
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/generateFutureStocksBill")
|
||||
public AjaxResult generateFutureStocksBill()
|
||||
{
|
||||
System.out.println("================================开始生成投资账单数据("+ DateUtils.getTime() +")=================================");
|
||||
investJobService.generateFutureStocksBill();
|
||||
System.out.println("================================结束生成投资账单据("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 1:10 批量修改用户随机预约的时间
|
||||
*/
|
||||
@PostMapping("/updateUserMinuteBatch")
|
||||
public AjaxResult updateUserMinuteBatch()
|
||||
{
|
||||
System.out.println("================================开始批量修改用户预约时间("+ DateUtils.getTime() +")=================================");
|
||||
iUserService.updateUserMinuteBatch();
|
||||
System.out.println("================================结束批量修改用户预约时间("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 11点期间,每分钟执行一次批量获得旅行奖励
|
||||
*/
|
||||
@PostMapping("/getTravelRewardBatch")
|
||||
public AjaxResult getTravelRewardBatch()
|
||||
{
|
||||
System.out.println("================================开始批量获得旅行奖励("+ DateUtils.getTime() +")=================================");
|
||||
imtService.getTravelRewardBatch();
|
||||
System.out.println("================================结束批量获得旅行奖励("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 9点期间,每分钟执行一次
|
||||
*/
|
||||
@PostMapping("/reservationBatchTask")
|
||||
public AjaxResult reservationBatchTask()
|
||||
{
|
||||
System.out.println("================================开始批量预约茅台("+ DateUtils.getTime() +")=================================");
|
||||
imtService.reservationBatch();
|
||||
System.out.println("================================结束批量预约茅台("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新茅台版本,门店列表,预约商品列表
|
||||
*/
|
||||
@PostMapping("/refreshAll")
|
||||
public AjaxResult refreshAll()
|
||||
{
|
||||
System.out.println("================================开始批量更新茅台版本、门店列表、预约商品列表("+ DateUtils.getTime() +")=================================");
|
||||
imtService.refreshAll();
|
||||
System.out.println("================================结束批量更新茅台版本、门店列表、预约商品列表("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 18.05分获取申购结果
|
||||
*/
|
||||
@PostMapping("/appointmentResults")
|
||||
public AjaxResult appointmentResults()
|
||||
{
|
||||
System.out.println("================================开始批量获取申购结果("+ DateUtils.getTime() +")=================================");
|
||||
imtService.appointmentResults();
|
||||
System.out.println("================================结束批量获取申购结果("+ DateUtils.getTime() +")=================================");
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.intc.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();
|
||||
|
||||
/**
|
||||
* 更新投资账户未出账单
|
||||
*
|
||||
* @author tianyongbao
|
||||
* @date 2023-12-11
|
||||
*/
|
||||
public void generateFutureStocksBill();
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,422 @@
|
||||
package com.intc.job.service.impl;
|
||||
|
||||
import com.intc.common.core.utils.DateUtils;
|
||||
import com.intc.common.core.utils.IdWorker;
|
||||
import com.intc.common.core.utils.StringUtils;
|
||||
import com.intc.common.security.utils.SecurityUtils;
|
||||
import com.intc.invest.domain.*;
|
||||
import com.intc.invest.domain.dto.*;
|
||||
import com.intc.invest.domain.vo.*;
|
||||
import com.intc.invest.mapper.*;
|
||||
import com.intc.job.service.IInvestJobService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 生成数据
|
||||
*
|
||||
* @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;
|
||||
|
||||
@Resource
|
||||
private InstallmentHistoryDetailMapper installmentHistoryDetailMapper;
|
||||
@Resource
|
||||
private InstallmentHistoryMapper installmentHistoryMapper;
|
||||
|
||||
@Resource
|
||||
private FutureStocksBillMapper futureStocksBillMapper;
|
||||
|
||||
@Resource
|
||||
private FutureStocksMapper futureStocksMapper;
|
||||
|
||||
/**
|
||||
* 生成数据
|
||||
*
|
||||
* @author tianyongbao
|
||||
* @date 2023-12-11
|
||||
*/
|
||||
@Override
|
||||
public void generateUnpaidCreditBill() {
|
||||
//未出账单生成,定时任务,每3个小时同步计算一次,作为未出账单,根据信用卡基础信息,包括账单日及账单日消费信息,遍历信用卡记录信息表和交易记录表即可
|
||||
BankCardLendDto bankCardLendDto=new BankCardLendDto();
|
||||
bankCardLendDto.setType("2");
|
||||
List<BankCardLendVo> bankCardVoList=bankCardLendMapper.selectBankCardLendList(bankCardLendDto);
|
||||
// 获取当前日期
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
int month = currentDate.getMonthValue();
|
||||
int year = currentDate.getYear();
|
||||
int dayOfMonth = currentDate.getDayOfMonth();
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月账单");
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
SimpleDateFormat formatterTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Date billDate= new Date();
|
||||
//遍历数据,获取信用卡账单日及数据
|
||||
for (BankCardLendVo bankCard : bankCardVoList) {
|
||||
//如果信用卡额度为0,不需要生成账单信息
|
||||
if(bankCard.getCreditLimit()==0){
|
||||
continue;
|
||||
}
|
||||
//0表示当期,1表示下期
|
||||
String isNextBillDate = bankCard.getIsNextBillDate();
|
||||
String billDateStr=year+"-"+String.format("%02d", month)+"-"+String.format("%02d", bankCard.getBillDate());
|
||||
//如果当前日期大于账单日,进入下个账单周期
|
||||
if(dayOfMonth>bankCard.getBillDate()){
|
||||
if(month==12){
|
||||
billDateStr=(year+1)+"-"+String.format("%02d", month-11)+"-"+String.format("%02d", bankCard.getBillDate());
|
||||
}
|
||||
else{
|
||||
billDateStr=(year)+"-"+String.format("%02d", month+1)+"-"+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());
|
||||
try {
|
||||
accountsDealRecordDto.setStartDateTime(formatterTime.parse(periodStart+" 00:00:00"));
|
||||
accountsDealRecordDto.setEndDateTime(formatterTime.parse(periodEnd+" 23:59:59"));
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
accountsDealRecordDto.setCreditBill("6");
|
||||
|
||||
//获取所有交易记录
|
||||
List<AccountsDealRecordVo> accountsDealRecordVoList=accountsDealRecordMapper.selectAccountsDealRecordList(accountsDealRecordDto);
|
||||
//收入转为负数
|
||||
for (AccountsDealRecordVo vo:accountsDealRecordVoList
|
||||
) {
|
||||
if(vo.getDealType().equals("1")){
|
||||
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);
|
||||
//如果账单日与当前日期相同,将账单修改为已出账
|
||||
LocalTime currentTime = LocalTime.now();
|
||||
LocalTime eveningThreshold = LocalTime.of(23, 0);
|
||||
if(billDateStr.equals(formatter.format(new Date()))&¤tTime.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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateUnpaidInstallmentData(){
|
||||
//信用卡分期入账信息自动入账,同时更新信用卡额度相关信息
|
||||
// 获取当前日期
|
||||
Date currentDate = new Date();
|
||||
// 创建SimpleDateFormat实例,指定日期格式
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
// 格式化日期为字符串
|
||||
String formattedDate = sdf.format(currentDate);
|
||||
InstallmentHistoryDetailDto installmentHistoryDetailDto=new InstallmentHistoryDetailDto();
|
||||
installmentHistoryDetailDto.setRepaymentEqualDate(formattedDate);
|
||||
installmentHistoryDetailDto.setState("0");
|
||||
installmentHistoryDetailDto.setType("2");
|
||||
List<InstallmentHistoryDetailVo> historyDetailList=installmentHistoryDetailMapper.selectInstallmentHistoryDetailList(installmentHistoryDetailDto);
|
||||
//修改名称加卡号
|
||||
for (InstallmentHistoryDetailVo installmentHistoryDetail : historyDetailList) {
|
||||
installmentHistoryDetail.setPostingState("1");
|
||||
InstallmentHistoryDetail detail=new InstallmentHistoryDetail();
|
||||
detail.setUpdateBy(SecurityUtils.getUsername());
|
||||
detail.setUpdateTime(DateUtils.getNowDate());
|
||||
detail.setId(installmentHistoryDetail.getId());
|
||||
detail.setPostingState(installmentHistoryDetail.getPostingState());
|
||||
installmentHistoryDetailMapper.updateInstallmentHistoryDetail(detail);
|
||||
//已入账
|
||||
Calendar cal1 = Calendar.getInstance();
|
||||
cal1.setTime(installmentHistoryDetail.getRepaymentDate());
|
||||
Calendar cal2 = Calendar.getInstance();
|
||||
cal2.setTime(new Date());
|
||||
long diffInMillis = cal2.getTimeInMillis() - cal1.getTimeInMillis();
|
||||
int daysDiff = Long.valueOf(TimeUnit.MILLISECONDS.toDays(diffInMillis)).intValue();
|
||||
//入账日期小于一个月的
|
||||
if("1".equals(installmentHistoryDetail.getPostingState())&&daysDiff<31){
|
||||
//更新主表已还期数
|
||||
InstallmentHistoryVo historyVo=installmentHistoryMapper.selectInstallmentHistoryById(installmentHistoryDetail.getInstallmentHistoryId());
|
||||
InstallmentHistory his=new InstallmentHistory();
|
||||
his.setRepaidPeriod(historyVo.getRepaidPeriod()+1);
|
||||
his.setId(historyVo.getId());
|
||||
his.setUpdateTime(new Date());
|
||||
installmentHistoryMapper.updateInstallmentHistory(his);
|
||||
//信用卡账户余额计算
|
||||
AccountsVo creditAccount=accountsMapper.selectAccountsById(installmentHistoryDetail.getBankCardLendId());
|
||||
//工行提前将利息额度占用,余额不再重新计算。
|
||||
if(!creditAccount.getName().contains("工商银行")){
|
||||
creditAccount.setBalance(creditAccount.getBalance()-installmentHistoryDetail.getInterest());
|
||||
creditAccount.setAvailableLimit(creditAccount.getBalance()+creditAccount.getCreditLimit());
|
||||
}
|
||||
creditAccount.setUpdateTime(installmentHistoryDetail.getUpdateTime());
|
||||
accountsMapper.updateAccounts(creditAccount);
|
||||
//信用卡消费记录明细
|
||||
AccountsDealRecord creditDeal=new AccountsDealRecord();
|
||||
creditDeal.setTransferRecordId(installmentHistoryDetail.getId());
|
||||
creditDeal.setAccountId(creditAccount.getAccountId());
|
||||
creditDeal.setId(IdWorker.getId());
|
||||
//支出金额
|
||||
creditDeal.setAmount(installmentHistoryDetail.getInterest());
|
||||
//实时余额
|
||||
creditDeal.setCurrentBalance(creditAccount.getBalance()-installmentHistoryDetail.getPrincipal());
|
||||
//1储蓄卡,2 信用卡,3 网贷,4 人情,5 投资账户
|
||||
creditDeal.setType("2");
|
||||
//1 收入,2 支出,3 转账,4 借贷
|
||||
creditDeal.setDealType("2");
|
||||
//分期利息支出
|
||||
creditDeal.setDealCategory("14");
|
||||
creditDeal.setChildCategory("14");
|
||||
creditDeal.setName(creditAccount.getName()+"("+ StringUtils.getLastNumberChars(4,creditAccount.getCode()+")"));
|
||||
creditDeal.setRemark("分期利息");
|
||||
creditDeal.setCreateBy(creditAccount.getCreateBy());
|
||||
creditDeal.setCreateTime(new Date());
|
||||
// accountsDealRecordMapper.insertAccountsDealRecord(creditDeal);
|
||||
insertAccountsDealRecord(creditDeal);
|
||||
//信用卡消费记录明细,应还本金
|
||||
AccountsDealRecord creditDealPrinciple=new AccountsDealRecord();
|
||||
creditDealPrinciple.setTransferRecordId(installmentHistoryDetail.getId());
|
||||
creditDealPrinciple.setAccountId(creditAccount.getAccountId());
|
||||
creditDealPrinciple.setId(IdWorker.getId());
|
||||
//支出金额
|
||||
creditDealPrinciple.setAmount(installmentHistoryDetail.getPrincipal());
|
||||
//实时余额
|
||||
creditDealPrinciple.setCurrentBalance(creditAccount.getBalance());
|
||||
//1储蓄卡,2 信用卡,3 网贷,4 人情,5 投资账户
|
||||
creditDealPrinciple.setType("2");
|
||||
//1 收入,2 支出,3 转账,4 借贷
|
||||
creditDealPrinciple.setDealType("2");
|
||||
//分期利息支出
|
||||
creditDealPrinciple.setDealCategory("10");
|
||||
creditDealPrinciple.setName(creditAccount.getName()+"("+ StringUtils.getLastNumberChars(4,creditAccount.getCode()+")"));
|
||||
creditDealPrinciple.setRemark("应还本金");
|
||||
creditDealPrinciple.setChildCategory("10");
|
||||
creditDealPrinciple.setCreateBy(creditAccount.getCreateBy());
|
||||
creditDealPrinciple.setCreateTime(new Date());
|
||||
// accountsDealRecordMapper.insertAccountsDealRecord(creditDealPrinciple);
|
||||
insertAccountsDealRecord(creditDealPrinciple);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public int insertAccountsDealRecord(AccountsDealRecord accountsDealRecord)
|
||||
{
|
||||
accountsDealRecord.setId(IdWorker.getId());
|
||||
//获取最新一条记录的数据,计算余额
|
||||
Map<String, Object> lastMap = new HashMap<>();
|
||||
lastMap.put("startDateTime", accountsDealRecord.getCreateTime());
|
||||
lastMap.put("accountId", accountsDealRecord.getAccountId());
|
||||
AccountsDealRecord lastOneAccountsDealRecord=accountsDealRecordMapper.getLastOneAccountsDealRecordByMap(lastMap);
|
||||
if(lastOneAccountsDealRecord==null){
|
||||
lastOneAccountsDealRecord=new AccountsDealRecord();
|
||||
lastOneAccountsDealRecord.setCurrentBalance(0d);
|
||||
}
|
||||
//收入
|
||||
if(accountsDealRecord.getDealType().equals("1")){
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("startDateTime", accountsDealRecord.getCreateTime());
|
||||
map.put("accountId", accountsDealRecord.getAccountId());
|
||||
map.put("currentBalance", accountsDealRecord.getAmount());
|
||||
accountsDealRecordMapper.batchPlusCurrentBalance(map);
|
||||
}
|
||||
//支出
|
||||
if(accountsDealRecord.getDealType().equals("2")){
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("startDateTime", accountsDealRecord.getCreateTime());
|
||||
map.put("accountId", accountsDealRecord.getAccountId());
|
||||
map.put("currentBalance", accountsDealRecord.getAmount());
|
||||
accountsDealRecordMapper.batchMinusCurrentBalance(map);
|
||||
}
|
||||
|
||||
return accountsDealRecordMapper.insertAccountsDealRecord(accountsDealRecord);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成数据
|
||||
*
|
||||
* @author tianyongbao
|
||||
* @date 2023-12-11
|
||||
*/
|
||||
@Override
|
||||
public void generateFutureStocksBill() {
|
||||
//未出账单生成,定时任务,每1个小时同步计算一次,作为未出账单,根据投资账户基础信息,遍历投资账户记录信息表和交易记录表即可
|
||||
FutureStocksDto futureStocksDto=new FutureStocksDto();
|
||||
// futureStocksDto.setStatus("1");
|
||||
List<FutureStocksVo> list =futureStocksMapper.selectFutureStocksList(futureStocksDto);
|
||||
// 获取当前日期
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
int month = currentDate.getMonthValue();
|
||||
int year = currentDate.getYear();
|
||||
int dayOfMonth = currentDate.getDayOfMonth();
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月账单");
|
||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||
SimpleDateFormat formatterTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
SimpleDateFormat yearFormatter = new SimpleDateFormat("yyyy");
|
||||
SimpleDateFormat monthFormatter = new SimpleDateFormat("yyyy-MM");
|
||||
Date billDate= new Date();
|
||||
//遍历数据,获取信用卡账单日及数据
|
||||
for (FutureStocksVo futureStocksVo : list) {
|
||||
//如果不是正常使用的账户,不需要生成账单信息
|
||||
if(!futureStocksVo.getStatus().equals("1")){
|
||||
continue;
|
||||
}
|
||||
|
||||
Calendar calendarStart = Calendar.getInstance();
|
||||
calendarStart.setTime(billDate);
|
||||
calendarStart.set(Calendar.DAY_OF_MONTH, 1); // 设置为当月的第一天
|
||||
|
||||
Date startDate = calendarStart.getTime();
|
||||
String periodStart = formatter.format(startDate);
|
||||
|
||||
Calendar calendarEnd = Calendar.getInstance();
|
||||
calendarEnd.setTime(billDate);
|
||||
int lastDay = calendarEnd.getActualMaximum(Calendar.DAY_OF_MONTH); // 当月的最后一天
|
||||
calendarEnd.set(Calendar.DAY_OF_MONTH, lastDay);
|
||||
Date endDate = calendarEnd.getTime();
|
||||
String periodEnd= formatter.format(endDate);
|
||||
|
||||
double billAmount=0;
|
||||
AccountsDealRecordDto accountsDealRecordDto=new AccountsDealRecordDto();
|
||||
accountsDealRecordDto.setAccountId(futureStocksVo.getId());
|
||||
try {
|
||||
accountsDealRecordDto.setStartDateTime(formatterTime.parse(periodStart+" 00:00:00"));
|
||||
accountsDealRecordDto.setEndDateTime(formatterTime.parse(periodEnd+" 23:59:59"));
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
accountsDealRecordDto.setDealCategory("2");
|
||||
|
||||
//获取所有交易记录
|
||||
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();
|
||||
FutureStocksBillDto futureStocksBillDto=new FutureStocksBillDto();
|
||||
futureStocksBillDto.setFutureStocksId(futureStocksVo.getId());
|
||||
String billMonth=year+"-"+String.format("%02d", month);
|
||||
futureStocksBillDto.setBillMonth(billMonth);
|
||||
List<FutureStocksBillVo> futureStocksBillVoList=futureStocksBillMapper.selectFutureStocksBillList(futureStocksBillDto);
|
||||
if(futureStocksBillVoList.size()>0){
|
||||
FutureStocksBillVo futureStocksBillVo=futureStocksBillVoList.get(0);
|
||||
FutureStocksBill futureStocksBill=new FutureStocksBill();
|
||||
futureStocksBill.setUpdateBy(SecurityUtils.getUsername());
|
||||
futureStocksBill.setUpdateTime(DateUtils.getNowDate());
|
||||
futureStocksBill.setId(futureStocksBillVo.getId());
|
||||
futureStocksBill.setBillAmount(billAmount);
|
||||
//更新账单
|
||||
futureStocksBillMapper.updateFutureStocksBill(futureStocksBill);
|
||||
}else {
|
||||
//进行插入操作
|
||||
FutureStocksBill futureStocksBill=new FutureStocksBill();
|
||||
futureStocksBill.setBillDate(endDate);
|
||||
futureStocksBill.setName(simpleDateFormat.format(endDate));
|
||||
futureStocksBill.setBillDatePeriod(periodStart+"~"+periodEnd);
|
||||
futureStocksBill.setCreateBy(futureStocksVo.getCreateBy());
|
||||
futureStocksBill.setCreateTime(DateUtils.getNowDate());
|
||||
futureStocksBill.setId(IdWorker.getId());
|
||||
futureStocksBill.setFutureStocksId(futureStocksVo.getId());
|
||||
futureStocksBill.setBillAmount(billAmount);
|
||||
futureStocksBill.setType(futureStocksVo.getType());
|
||||
futureStocksBill.setBillDatePeriod(periodStart+"~"+periodEnd);
|
||||
futureStocksBill.setBillYear(yearFormatter.format(futureStocksBill.getBillDate()));
|
||||
futureStocksBill.setBillMonth(monthFormatter.format(futureStocksBill.getBillDate()));
|
||||
//插入未出账单
|
||||
futureStocksBillMapper.insertFutureStocksBill(futureStocksBill);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user