package com.zorasoft.workstack.web.infrastructures.schedulings; import com.zorasoft.workstack.web.domains.services.consumptionBillDetailsService.ConsumptionBillDetailsService; import com.zorasoft.workstack.web.domains.services.consumptionBillService.ConsumptionBillService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Calendar; /** * @ClassName BillingStatisticsJob * @Description 根据计费日志统计每月的账单 * @Author TangYinJian * @Date 2019-05-30 12:13:14 * @Version 1.0 **/ @Component @EnableScheduling public class BillingStatisticsJob { private final static Logger logger = LoggerFactory.getLogger(BillingStatisticsJob.class); @Autowired private ConsumptionBillDetailsService consumptionBillDetailsService; @Autowired private ConsumptionBillService consumptionBillService; /**每月1-3日凌晨2点执行一次*/ /**每月循环多次执行,避免因外部原因导致某次统计失败*/ /*@Scheduled(cron = "0 0 2 1-3 * ?")*/ //@Scheduled(cron = "0/3 * * * * ?") public void billingStatistics(){ //获取统计的年月 /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); String year = String.valueOf(calendar.get(Calendar.YEAR)); String month = String.valueOf(calendar.get(Calendar.MONTH)); month = month.length() == 1?"0"+month:month; String billingMonth = year + "-" + month; //判断上月是否已统计过 boolean isStatistics = consumptionBillService.isStatistics(billingMonth); //如果未统计则统计账单 if(!isStatistics){ try { consumptionBillDetailsService.billingStatistics2(); logger.info(sdf.format(calendar.getTime())+":************** 账单统计成功 *******************"); } catch (Exception e) { logger.error(sdf.format(calendar.getTime())+":************** 账单统计失败! *******************"); logger.error(e.getMessage(), e); } }*/ } }