package com.ruoyi.web.controller.task;
|
|
|
import com.ruoyi.system.model.TBill;
|
import com.ruoyi.system.model.TContract;
|
import com.ruoyi.system.model.TContractRentType;
|
import com.ruoyi.system.service.TBillService;
|
import com.ruoyi.system.service.TContractRentTypeService;
|
import com.ruoyi.system.service.TContractService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.ZoneId;
|
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.TemporalAdjusters;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Random;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author zhibing.pu
|
* @date 2023/7/11 8:39
|
*/
|
@Component
|
public class TaskUtil {
|
@Autowired
|
private TContractService contractService;
|
@Autowired
|
private TBillService billService;
|
// 用于更新违约金账单
|
@Scheduled(cron = "0 0 0 * * ?")
|
public void dayOfProportionBill() {
|
try {
|
// 查询所有未缴费账单
|
List<TBill> list = billService.lambdaQuery().eq(TBill::getPayFeesStatus, 1).list();
|
for (TBill tBill : list) {
|
if (tBill.getPayableFeesTime().isAfter(LocalDate.now())){
|
tBill.setPayFeesStatus("4");
|
}
|
TContract contract = contractService.getById(tBill.getContractId());
|
LocalDate payableFeesTime = tBill.getPayableFeesTime();
|
LocalDateTime now = LocalDateTime.now();
|
// 计算两个时间相差多少个小时
|
long hours = ChronoUnit.HOURS.between(payableFeesTime, now);
|
long l = hours / 24;
|
if (l>3){
|
// 违约金比例
|
BigDecimal proportion = contract.getProportion();
|
// 按每天 待缴费金额 * XX% 增加违约金费用
|
if (tBill.getOutstandingMoney().compareTo(new BigDecimal("0"))==0){
|
tBill.setPayFeesStatus("3");
|
billService.updateById(tBill);
|
continue;
|
}
|
BigDecimal money = tBill.getOutstandingMoney().multiply(proportion).setScale(2, BigDecimal.ROUND_DOWN);
|
tBill.setOverDays((int) l);
|
tBill.setPayableFeesPenalty((tBill.getPayableFeesPenalty()!=null?tBill.getPayableFeesPenalty():BigDecimal.ZERO).add(money));
|
}
|
billService.updateById(tBill);
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
public static void main(String[] args) {
|
|
// LocalDateTime now = LocalDateTime.now().minusMonths(1).withDayOfMonth(31);
|
// System.err.println(now);
|
// LocalDateTime now2 = now.plusMonths(1);
|
// System.err.println(now2);
|
//
|
// LocalDateTime now1 = LocalDateTime.now();
|
// long days = ChronoUnit.DAYS.between(now, now1);
|
// long days2 = ChronoUnit.DAYS.between(now.plusDays(1), now1);
|
//
|
// System.err.println(days);
|
// System.err.println(days2);
|
// LocalDateTime endTime = now.with(TemporalAdjusters.lastDayOfMonth()).withSecond(59).withHour(23).withMinute(59);
|
//
|
// System.err.println(endTime);
|
|
}
|
|
}
|