Pu Zhibing
2025-03-28 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/quartz/jobs/OrderTimeOutJob.java
@@ -8,26 +8,25 @@
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
import com.stylefeng.guns.modular.system.dao.UserInfoMapper;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.User;
import com.stylefeng.guns.modular.system.model.UserInfo;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IUserService;
import com.stylefeng.guns.modular.system.util.PushUtil;
import com.stylefeng.guns.modular.system.util.TextToSpeechUtil;
import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil;
import com.stylefeng.guns.modular.system.util.quartz.model.QuartzEnum;
import com.stylefeng.guns.modular.system.util.quartz.model.QuartzJob;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
 * 订单司机超时提醒任务
@@ -36,7 +35,7 @@
 */
@Slf4j
@Component
public class OrderTimeOutJob extends QuartzJob {
public class OrderTimeOutJob implements Job {
   
   @Resource
   private PushUtil pushUtil;
@@ -49,47 +48,14 @@
   @Resource
   private UserInfoMapper userInfoMapper;
   
   @Override
   public QuartzJob buildQuartzJob() {
      return buildQuartzJob(QuartzEnum.JOB_NAME.getValue());
   }
   @Override
   public QuartzJob buildQuartzJob(String name) {
      return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue());
   }
   @Override
   public QuartzJob buildQuartzJob(String name, String group) {
      return buildQuartzJob(name, QuartzEnum.DEFAULT_GROUP.getValue(), null);
   }
   @Override
   public QuartzJob buildQuartzJob(String name, String group, JobDataMap jobDataMap) {
      QuartzJob job = new OrderTimeOutJob();
      if(ToolUtil.isNotEmpty(name)){
         job.setName(name);
      }else{
         job.setName(QuartzEnum.JOB_NAME.getValue());
      }
      if(ToolUtil.isNotEmpty(group)){
         job.setGroup(group);
      }else{
         job.setGroup(QuartzEnum.DEFAULT_GROUP.getValue());
      }
      if(null != jobDataMap){
         job.setJobDataMap(jobDataMap);
      }
      return job;
   }
   @Resource
   private QuartzUtil quartzUtil;
   
   /**
    * 执行的业务逻辑
    * @param jobExecutionContext 定时任务上下文对象
    */
   @Override
   public void run(JobExecutionContext jobExecutionContext) {
      JobDetail jobDetail = jobExecutionContext.getJobDetail();
      JobDataMap jobDataMap = jobDetail.getJobDataMap();
@@ -106,10 +72,10 @@
      Integer language = driver.getLanguage();
      if(1 == timeOutType){
         if(orderType == 1){
            describe = language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer";
            describe = language == 1 ? "您已超时" + driverTimeout + "分钟,\n用户可免费取消订单" : language == 2 ? "You are overdue for " + driverTimeout + " minutes,\nThe subscriber could cancel the order for free" : "Vous êtes en retard de " + driverTimeout + " minutes,\nL'abonné peut annuler la commande gratuitement";
         }
         if(orderType == 4){
            describe = language == 1 ? "您已超时" + driverTimeout + "分钟,用户可免费取消订单" : language == 2 ? "Reminder You are overdue for " + driverTimeout + " minutes The subscriber could cancel the order for free Confirm" : "Rappel Vous êtes en retard de " + driverTimeout + " minutes L’abonné peut annuler la commande gratuitement Confirmer";
            describe = language == 1 ? "您已超时" + driverTimeout + "分钟,\n用户可免费取消订单" : language == 2 ? "You are overdue for " + driverTimeout + " minutes,\nThe subscriber could cancel the order for free" : "Vous êtes en retard de " + driverTimeout + " minutes,\nL'abonné peut annuler la commande gratuitement";
         }
      }
      if(2 == timeOutType){
@@ -149,7 +115,7 @@
         List<Integer> list = Arrays.asList(4, 5, 6, 7, 8, 9, 10, 11, 12);
         if(1 == timeOutType && list.contains(orderPrivateCar.getState())){
            JobKey key = jobExecutionContext.getJobDetail().getKey();
            boolean b = QuartzUtil.deleteQuartzTask(key);
            boolean b = quartzUtil.deleteQuartzTask(key);
            if(!b){
               log.error("定时任务关闭失败:" + key.toString());
            }
@@ -157,7 +123,7 @@
         }
         if(2 == timeOutType && (System.currentTimeMillis() >= timeOut || list.contains(orderPrivateCar.getState()))){
            JobKey key = jobExecutionContext.getJobDetail().getKey();
            boolean b = QuartzUtil.deleteQuartzTask(key);
            boolean b = quartzUtil.deleteQuartzTask(key);
            if(!b){
               log.error("定时任务关闭失败:" + key.toString());
            }
@@ -167,7 +133,7 @@
         //结束超时循环提醒定时
         if(3 == timeOutType && list.contains(orderPrivateCar.getState())){
            JobKey key = jobExecutionContext.getJobDetail().getKey();
            boolean b = QuartzUtil.deleteQuartzTask(key);
            boolean b = quartzUtil.deleteQuartzTask(key);
            if(!b){
               log.error("定时任务关闭失败:" + key.toString());
            }
@@ -181,7 +147,7 @@
         List<Integer> list = Arrays.asList(4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
         if(1 == timeOutType && list.contains(orderLogistics.getState())){
            JobKey key = jobExecutionContext.getJobDetail().getKey();
            boolean b = QuartzUtil.deleteQuartzTask(key);
            boolean b = quartzUtil.deleteQuartzTask(key);
            if(!b){
               log.error("定时任务关闭失败:" + key.toString());
            }
@@ -190,7 +156,7 @@
         //结束超时循环提醒定时
         if(3 == timeOutType && list.contains(orderLogistics.getState())){
            JobKey key = jobExecutionContext.getJobDetail().getKey();
            boolean b = QuartzUtil.deleteQuartzTask(key);
            boolean b = quartzUtil.deleteQuartzTask(key);
            if(!b){
               log.error("定时任务关闭失败:" + key.toString());
            }
@@ -210,14 +176,21 @@
      new Timer().schedule(new TimerTask() {
         @Override
         public void run() {
            Process process = null;
            try {
               process = Runtime.getRuntime().exec("rm -rf /usr/local/nginx/html/files/audio/" + fileName);
            } catch (IOException e) {
               throw new RuntimeException(e);
            }
            if (process != null) {
               process.destroy();
               // 使用Runtime执行命令
               Process process = Runtime.getRuntime().exec("sudo rm -rf /home/igotechgh/nginx/html/files/audio/" + fileName);
               // 读取命令的输出
               BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
               String line;
               while ((line = reader.readLine()) != null) {
                  System.out.println(line);
               }
               // 等待命令执行完成
               process.waitFor();
               // 关闭流
               reader.close();
            } catch (IOException | InterruptedException e) {
               e.printStackTrace();
            }
         }
      }, 30000);
@@ -227,44 +200,12 @@
   }
   
   
   /**
    * 初始化任务对象
    * @return
    */
   public static QuartzJob init(){
      return new OrderTimeOutJob().buildQuartzJob();
   }
   /**
    * 初始化任务对象
    * @param name
    * @return
    */
   public static QuartzJob init(String name){
      return new OrderTimeOutJob().buildQuartzJob(name);
   @Override
   public void execute(JobExecutionContext jobExecutionContext){
      run(jobExecutionContext);
   }
   
   
   
   /**
    * 初始化任务对象
    * @param name
    * @param group
    * @return
    */
   public static QuartzJob init(String name, String group){
      return new OrderTimeOutJob().buildQuartzJob(name, group);
   }
   
   /**
    * 初始化任务对象
    * @param name
    * @param group
    * @return
    */
   public static QuartzJob init(String name, String group, JobDataMap jobDataMap){
      return new OrderTimeOutJob().buildQuartzJob(name, group, jobDataMap);
   }
}