| | |
| | | import com.ruoyi.chargingPile.api.feignClient.SiteClient; |
| | | import com.ruoyi.chargingPile.api.model.Site; |
| | | import com.ruoyi.order.api.model.TChargingBill; |
| | | import com.ruoyi.order.api.model.TChargingOrder; |
| | | import com.ruoyi.order.service.TChargingBillService; |
| | | import com.ruoyi.order.service.TChargingOrderService; |
| | | import org.apache.logging.log4j.core.util.UuidUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | |
| | | private TChargingBillService chargingBillService; |
| | | @Resource |
| | | private SiteClient siteClient; |
| | | @Resource |
| | | private TChargingOrderService chargingOrderService; |
| | | |
| | | public static void main(String[] args) { |
| | | LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1). |
| | |
| | | // @Scheduled(cron = "0 0 0 2 * ?") |
| | | // 每天凌晨12点执行的定时任务 |
| | | |
| | | @Scheduled(cron = "0 0 12 2 * ?") |
| | | // 每30秒执行一次的定时任务 |
| | | @Scheduled(cron = "0/30 * * * * ?") |
| | | |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | //@Scheduled(fixedRate = 60000) |
| | | public void taskMonth() { |
| | | try { |
| | | // 获取上个月的开始和结束日期 |
| | |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill.setCode("JSD"+string+randomDigits ); |
| | | tChargingBill.setType(1); |
| | | tChargingBill.setSiteId(0); |
| | | tChargingBill.setBillTime(LocalDateTime.now()); |
| | | tChargingBill.setStatus(1); |
| | | tChargingBill.setOrderState(2); |
| | | tChargingBill.setBillType(1); |
| | | System.err.println("定时任务生成充电算帐单:全站"); |
| | | chargingBillService.save(tChargingBill); |
| | | // 每月二号给每个站点生成上月账单 |
| | | // 生成一次全站订单 |
| | | TChargingBill tChargingBill1 = new TChargingBill(); |
| | | // 订单生成规则JSD+20231201(账单所属月份)+1131304205(随机10位数)+001(当月账单序号,每月重置) |
| | | Random random1 = new Random(); |
| | | String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 |
| | | .mapToObj(String::valueOf) |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill1.setCode("JSD"+string+randomDigits1 ); |
| | | tChargingBill1.setType(1); |
| | | tChargingBill1.setSiteId(0); |
| | | tChargingBill1.setBillTime(LocalDateTime.now()); |
| | | tChargingBill1.setStatus(1); |
| | | tChargingBill1.setOrderState(2); |
| | | tChargingBill1.setBillType(2); |
| | | System.err.println("定时任务生成账户结算帐单:全站"); |
| | | chargingBillService.save(tChargingBill1); |
| | | System.err.println("定时任务生成各个站点结算帐单"); |
| | | List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList()); |
| | | // 充电算帐单 |
| | | List<TChargingBill> tChargingBills = new ArrayList<>(); |
| | | for (int i = 1; i <= collect.size(); i++) { |
| | | TChargingBill tChargingBill1 = new TChargingBill(); |
| | | Random random1 = new Random(); |
| | | String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 |
| | | // 账户结算账单 |
| | | List<TChargingBill> tChargingBills1 = new ArrayList<>(); |
| | | for (int i = 0; i < collect.size(); i++) { |
| | | TChargingBill tChargingBill2 = new TChargingBill(); |
| | | Random random2 = new Random(); |
| | | String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 |
| | | .mapToObj(String::valueOf) |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill1.setCode("JSD"+string+randomDigits1+i ); |
| | | tChargingBill1.setType(2); |
| | | tChargingBill1.setSiteId(collect.get(i)); |
| | | tChargingBill1.setBillTime(LocalDateTime.now()); |
| | | tChargingBill1.setStatus(1); |
| | | tChargingBill1.setOrderState(2); |
| | | tChargingBills.add(tChargingBill1); |
| | | tChargingBill2.setCode("JSD"+string+randomDigits2+(i+1) ); |
| | | tChargingBill2.setType(2); |
| | | List<TChargingOrder> list = chargingOrderService.lambdaQuery() |
| | | .eq(TChargingOrder::getSiteId, collect.get(i)).list(); |
| | | if (list.isEmpty()){ |
| | | continue; |
| | | } |
| | | tChargingBill2.setSiteId(collect.get(i)); |
| | | tChargingBill2.setBillTime(LocalDateTime.now()); |
| | | tChargingBill2.setBillType(1); |
| | | tChargingBill2.setStatus(1); |
| | | tChargingBill2.setOrderState(2); |
| | | tChargingBills.add(tChargingBill2); |
| | | TChargingBill tChargingBill3 = new TChargingBill(); |
| | | Random random3 = new Random(); |
| | | String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 |
| | | .mapToObj(String::valueOf) |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill3.setCode("JSD"+string+randomDigits3+(i+1) ); |
| | | tChargingBill3.setType(2); |
| | | tChargingBill3.setSiteId(collect.get(i)); |
| | | tChargingBill3.setBillTime(LocalDateTime.now()); |
| | | tChargingBill3.setBillType(2); |
| | | tChargingBill3.setStatus(1); |
| | | tChargingBill3.setOrderState(2); |
| | | tChargingBills1.add(tChargingBill3); |
| | | } |
| | | System.err.println("列表"+tChargingBills); |
| | | if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills); |
| | | if (!tChargingBills1.isEmpty())chargingBillService.saveBatch(tChargingBills1); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | // 每个月最后一天23点执行的定时任务 |
| | | @Scheduled(cron = "0 0 23 L * ?") |
| | | |
| | | // 每天晚上23:59:59执行的定时任务 |
| | | @Scheduled(cron = "0 0 23 * * ?") |
| | | public void taskLastDay() { |
| | | try { |
| | | // 获取上个月的开始和结束日期 |
| | |
| | | LocalDateTime endDateTime = lastDayOfLastMonth.atTime(23, 59, 59); // 设定到最后一秒 |
| | | // 构建查询条件 |
| | | LambdaQueryWrapper<TChargingBill> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.ge(TChargingBill::getBillTime, |
| | | Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant())) |
| | | .le(TChargingBill::getBillTime, |
| | | Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录 |
| | | // queryWrapper.ge(TChargingBill::getBillTime, |
| | | // Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant())) |
| | | // .le(TChargingBill::getBillTime, |
| | | // Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant())); // 使用 le 包括最后一天的记录 |
| | | List<TChargingBill> list = chargingBillService.list(queryWrapper); |
| | | for (TChargingBill tChargingBill : list) { |
| | | tChargingBill.setStatus(2); |