Я создал сервер RESTful с базой данных с Spring/hibernate/mySQL.
У меня есть таблица банковского сберегательного счета, в которой есть 3 столбца баланса баланса.
например:
account_id | a_savings | b_savings | c_savings
1 | 100 | 200 | 300
я хочу, чтобы каждый день (или месяц) каждый сберегательный счет добавлял 0,01% (или другую сумму) к его значению автоматически в соответствии с сервером/текущим временем.
как мне это сделать?
Решил задачу планирования:
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Autowired
private SavingsAccountDao savingsAccountDao;
/* each day at 8 am */
@Scheduled(cron = "0 0 8 * * *")
public void increaseSavingsAccount() {
log.info("Savings Accounts Updated", dateFormat.format(new Date()));
/* get all savings accounts and increase balance according to the interest */
List<SavingsAccount> savingsAccountList = savingsAccountDao.findAll();
savingsAccountList.forEach((sa) -> {
/* 39% interest in 12 months */
sa.setASavingsBalance(sa.getASavingsBalance().multiply(new BigDecimal(1.0009)));
});
}
}
Напишите метод, который приостанавливается на некоторое время, чем вызов метода, который
value = value+(value*0.01)
затем используйте SQL для обновления значения. Для паузы в java используйте TimeUnit.MINUTES.sleep(2);
of java.util.concurrent.TimeUnit
здесь 2
означает 2 Minutes
. Вы также можете использовать DAYS/HOURS TimeUnit.DAYS.sleep(1);