package com.ruoyi.web.controller.task; import cn.hutool.core.util.StrUtil; import com.ruoyi.bussiness.enums.MessageTypeEnum; import com.ruoyi.bussiness.service.PlacementBatchHouseholdService; import com.ruoyi.bussiness.utils.PaymentCycleHelper; import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.service.ISysNoticeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.Date; @Component public class MessageTask { @Autowired private ISysNoticeService sysNoticeService; @Autowired private PlacementBatchHouseholdService placementBatchHouseholdService; // 每年 12月、3月、6月、9月 的 15号早上9点提醒(季度前一个月15号) @Scheduled(cron = "0 0 9 15 12,3,6,9 ?") public void remindQuarterlyPaymentMid() { String month = PaymentCycleHelper.getFirstPaymentCycle(new Date()); BigDecimal money = placementBatchHouseholdService.getPayMoneyByQuarter(month); SysNotice sysNotice = new SysNotice(); String title = StrUtil.format(MessageTypeEnum.PLACEMENT_MONTH_PAY.getMessage(), money); sysNotice.setNoticeTitle(title); sysNotice.setStatus("0"); sysNotice.setNoticeType("1"); sysNotice.setCountNum(money); sysNotice.setCreateTime(new Date()); sysNotice.setUpdateTime(new Date()); sysNoticeService.save(sysNotice); } // 每年 3月、6月、9月、12月 的最后一天早上9点提醒(季度前一个月最后一天) //月底提醒:(3月/12月) @Scheduled(cron = "0 0 9 31 3,12 ?") public void remindQuarterlyPaymentEnd_Mar_Dec() { String month = PaymentCycleHelper.getFirstPaymentCycle(new Date()); BigDecimal money = placementBatchHouseholdService.getPayMoneyByQuarter(month); SysNotice sysNotice = new SysNotice(); String title = StrUtil.format(MessageTypeEnum.PLACEMENT_MONTH_PAY.getMessage(), money); sysNotice.setNoticeTitle(title); sysNotice.setStatus("0"); sysNotice.setNoticeType("1"); sysNotice.setCountNum(money); sysNotice.setCreateTime(new Date()); sysNotice.setUpdateTime(new Date()); sysNoticeService.save(sysNotice); } /** * 每年 3月、6月、9月、12月 的最后一天早上9点提醒(季度前一个月最后一天) * 月底提醒:(6月/9月) */ @Scheduled(cron = "0 0 9 30 6,9 ?") public void remindQuarterlyPaymentEnd_Jun_Sep() { String month = PaymentCycleHelper.getFirstPaymentCycle(new Date()); BigDecimal money = placementBatchHouseholdService.getPayMoneyByQuarter(month); SysNotice sysNotice = new SysNotice(); String title = StrUtil.format(MessageTypeEnum.PLACEMENT_MONTH_PAY.getMessage(), money); sysNotice.setNoticeTitle(title); sysNotice.setStatus("0"); sysNotice.setNoticeType("1"); sysNotice.setCountNum(money); sysNotice.setCreateTime(new Date()); sysNotice.setUpdateTime(new Date()); sysNoticeService.save(sysNotice); } }