Selaa lähdekoodia

模拟器交互汇总提交。

tom 5 kuukautta sitten
vanhempi
commit
c9ef4c707c

+ 29 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/config/AsyncCommThreadPoolConfig.java

@@ -0,0 +1,29 @@
+package com.ruoyi.sim.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 非核心业务的线程池。
+ */
+@Configuration
+@EnableAsync
+public class AsyncCommThreadPoolConfig {
+
+    @Bean(name = "tp-comm")
+    public ThreadPoolTaskExecutor executor() {
+        ThreadPoolTaskExecutor e = new ThreadPoolTaskExecutor();
+        e.setCorePoolSize(10);
+        e.setMaxPoolSize(100);
+        e.setQueueCapacity(50);
+        e.setKeepAliveSeconds(200);
+        e.setThreadNamePrefix("tp-comm-");
+        e.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        e.initialize();
+        return e;
+    }
+}

+ 29 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/config/AsyncLogThreadPoolConfig.java

@@ -0,0 +1,29 @@
+package com.ruoyi.sim.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 非核心业务的线程池。
+ */
+@Configuration
+@EnableAsync
+public class AsyncLogThreadPoolConfig {
+
+    @Bean(name = "tp-log")
+    public ThreadPoolTaskExecutor executor() {
+        ThreadPoolTaskExecutor e = new ThreadPoolTaskExecutor();
+        e.setCorePoolSize(10);
+        e.setMaxPoolSize(100);
+        e.setQueueCapacity(50);
+        e.setKeepAliveSeconds(200);
+        e.setThreadNamePrefix("tp-log-");
+        e.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        e.initialize();
+        return e;
+    }
+}

+ 0 - 29
ruoyi-sim/src/main/java/com/ruoyi/sim/config/SyncThreadPoolConfig.java

@@ -1,29 +0,0 @@
-package com.ruoyi.sim.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-
-import java.util.concurrent.ThreadPoolExecutor;
-
-/**
- * 非核心业务的线程池。
- */
-@Configuration
-@EnableAsync
-public class SyncThreadPoolConfig {
-
-    @Bean(name = "asyncLogTE")
-    public ThreadPoolTaskExecutor executor() {
-        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
-        taskExecutor.setCorePoolSize(10);
-        taskExecutor.setMaxPoolSize(100);
-        taskExecutor.setQueueCapacity(50);
-        taskExecutor.setKeepAliveSeconds(200);
-        taskExecutor.setThreadNamePrefix("asyncLogTE-");
-        taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        taskExecutor.initialize();
-        return taskExecutor;
-    }
-}

+ 4 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/RealExam.java

@@ -50,6 +50,7 @@ public class RealExam extends BaseEntity {
      * 考试状态
      * 0:未登录
      * 1:已登录
+     * 2:故障下发中
      * 2:模拟器检查并下发ok
      * 3:答题中
      * 4:已交卷
@@ -224,9 +225,11 @@ public class RealExam extends BaseEntity {
 
     public static final String STATE_NOT_LOGGED_IN = "0";
     public static final String STATE_LOGGED_IN = "1";
-    public static final String STATE_SIM_CHECK_OK = "2";
+    public static final String STATE_SIM_WRITING = "2????";// todo:??
+    public static final String STATE_SIM_PREPARE_OK = "2";
     public static final String STATE_ANSWERING = "3";
     public static final String STATE_SUBMITTED = "4";
+    public static final String STATE_CALCULATING_SCORE = "4????";// todo:??
     public static final String STATE_GOT_REPORT = "5";
     public static final String STATE_ABSENCE_BY_TEACHER = "80";
     public static final String STATE_LOGIN_NOT_STARTED_ANSWERING_QUESTIONS = "81";

+ 4 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/RealExamFault.java

@@ -206,4 +206,8 @@ public class RealExamFault extends BaseEntity {
     public static final String REF_STATE_WRITTEN = "2";
     public static final String REF_STATE_LOOP_READ = "3";
     public static final String REF_STATE_FINISH = "4";
+
+    public static final String FLAG_YES = "1";
+    public static final String FLAG_NO = "0";
+    public static final String FLAG_UNKNOWN = "7";
 }

+ 18 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/CurrentComp.java

@@ -0,0 +1,18 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.RealExamCompRequest;
+import com.ruoyi.sim.domain.Seat;
+import com.ruoyi.sim.domain.Student;
+
+import java.util.List;
+
+public class CurrentComp {
+
+    private Seat seat;
+
+    private List<RealExamCompRequest> requestList;
+
+    private Student student;
+
+
+}

+ 33 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/CurrentRealExam.java

@@ -0,0 +1,33 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.*;
+
+import java.util.List;
+
+public class CurrentRealExam {
+
+    /**
+     * 座
+     */
+    private Seat seat;
+
+    /**
+     * 模拟器
+     */
+    private Sim sim;
+
+    /**
+     * 学生
+     */
+    private Student student;
+
+    /**
+     * 考试
+     */
+    private RealExam realExam;
+
+    /**
+     * 出题题目
+     */
+    private List<Fault> faultList;
+}

+ 16 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/CurrentRealExamCollection.java

@@ -0,0 +1,16 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.*;
+
+import java.util.List;
+
+/**
+ * 聚合返回值。
+ */
+public class CurrentRealExamCollection {
+
+    private RealExamCollection realExamCollection;
+
+    private List<CurrentRealExam> ceList;
+
+}

+ 87 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/StudentRealExamPreVo.java

@@ -0,0 +1,87 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.*;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * [学生]准备考试页面Vo。
+ */
+public class StudentRealExamPreVo {
+
+    private RealExam realExam;
+
+    private RealExamCollection realExamCollection;
+
+    private Sim sim;
+
+    private Student student;
+
+    private Seat seat;
+    /**
+     * 是否可以下一步进入考试。
+     */
+    private boolean next = false;
+
+    public StudentRealExamPreVo() {
+    }
+
+    public RealExam getRealExam() {
+        return realExam;
+    }
+
+    public void setRealExam(RealExam realExam) {
+        this.realExam = realExam;
+    }
+
+    public RealExamCollection getRealExamCollection() {
+        return realExamCollection;
+    }
+
+    public void setRealExamCollection(RealExamCollection realExamCollection) {
+        this.realExamCollection = realExamCollection;
+    }
+
+    public Sim getSim() {
+        return sim;
+    }
+
+    public void setSim(Sim sim) {
+        this.sim = sim;
+    }
+
+    public Student getStudent() {
+        return student;
+    }
+
+    public void setStudent(Student student) {
+        this.student = student;
+    }
+
+    public Seat getSeat() {
+        return seat;
+    }
+
+    public void setSeat(Seat seat) {
+        this.seat = seat;
+    }
+
+    public boolean isNext() {
+        return next;
+    }
+
+    public void setNext(boolean next) {
+        this.next = next;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("realExam", realExam)
+                .append("realExamCollection", realExamCollection)
+                .append("sim", sim)
+                .append("student", student)
+                .append("seat", seat)
+                .append("next", next)
+                .toString();
+    }
+}

+ 12 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/domain/vo/StudentRealExamVo.java

@@ -0,0 +1,12 @@
+package com.ruoyi.sim.domain.vo;
+
+import com.ruoyi.sim.domain.RealExam;
+import com.ruoyi.sim.domain.RealExamCollection;
+
+public class StudentRealExamVo {
+
+    private RealExam exam;
+
+    private RealExamCollection examCollection;
+
+}

+ 17 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommReceiveService.java

@@ -52,6 +52,14 @@ public class CommReceiveService {
         }
     }
 
+    /**
+     * 设置出题值。
+     *
+     * @param sm
+     * @param s
+     * @param reF
+     * @param f
+     */
     public void setFaultQuestionValue(SimMsg sm, Sim s, RealExamFault reF, Fault f) {
         // check
 
@@ -63,6 +71,14 @@ public class CommReceiveService {
         realExamFaultService.updateRealExamFault(reF);
     }
 
+    /**
+     * 设置答题值。
+     *
+     * @param sm
+     * @param s
+     * @param reF
+     * @param f
+     */
     public void setFaultAnswerValue(SimMsg sm, Sim s, RealExamFault reF, Fault f) {
         // check
         if (reF == null) {
@@ -79,6 +95,7 @@ public class CommReceiveService {
 
     /**
      * 截取
+     *
      * @param receiveMsg
      * @return
      */

+ 41 - 9
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
@@ -121,22 +122,34 @@ public class CommSendService {
     }
 
     public void readAll() {
-        List<RealExam> listRE = realExamService.listAllStatusAnswering();
+        List<RealExam> listRE = realExamService.listAllStatus(RealExam.STATE_ANSWERING);
         listRE.forEach(e -> {
             if (e == null) {
                 return;
             }
-            List<RealExamFault> listREF = realExamFaultService.listAllStatusLoopRead(e.getExamId());
+            List<RealExamFault> listREF = realExamFaultService.listAllType2YesLoopReadState(e.getExamId());
             listREF.forEach(ref -> {
                 Sim s = simService.selectSimBySimId(e.getSimId());
                 Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
-                readOneFaultResistance(s, ref, f);
+                if (f != null &&
+                        f.getFaultType().equals(Fault.TYPE_3) &&
+                        f.getFaultState().equals(Fault.STATE_ENABLE)
+                )
+                    readOneFaultResistance(s, ref, f);
             });
         });
     }
 
+    /**
+     * Async version.
+     */
+    @Async("tp-comm")
+    public void readAllAsync() {
+        readAll();
+    }
+
     public void readOneExamAtLast(RealExam re) {
-        List<RealExamFault> listREF = realExamFaultService.listAllStatusLoopRead(re.getExamId());
+        List<RealExamFault> listREF = realExamFaultService.listAllType2YesLoopReadState(re.getExamId());
         listREF.forEach(ref -> {
             Sim s = simService.selectSimBySimId(re.getSimId());
             Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
@@ -162,6 +175,11 @@ public class CommSendService {
         });
     }
 
+    @Async()
+    public void checkAllSimStateAsync() {
+
+    }
+
     public void checkOneSimState(Sim s) {
         l.info(s.toString());
         // check todo:
@@ -182,7 +200,7 @@ public class CommSendService {
     }
 
     /**
-     * prepare one exam.
+     * 清除一个考试的,对应的某型号一台模拟器的,所有设备故障。
      *
      * @param re
      */
@@ -192,9 +210,13 @@ public class CommSendService {
 
         }
         //
-        List<RealExamFault> list = realExamFaultService.listAllStateInitByExamId(re.getExamId());
+        List<RealExamFault> list = realExamFaultService.listAllType2InitStateByExamId(re.getExamId());
         list.forEach(ref -> {
             Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
+            if (faultService.isDisable(f.getFaultId())) {
+                l.warn("故障{}-Disable", ref.getFaultId());
+                return;
+            }
             l.info("f.toString() = " + f.toString());
             Sim s = simService.selectSimBySimId(re.getSimId());
             l.info("s.toString() = " + s.toString());
@@ -206,6 +228,16 @@ public class CommSendService {
         });
     }
 
+    /**
+     * Async version.
+     *
+     * @param re
+     */
+    @Async("tp-comm")
+    public void clearListFaultByRealExamAsync(RealExam re) {
+        clearListFaultByRealExam(re);
+    }
+
     public void clearAll() {
         // todo:
         simService.listAllEnable().forEach(s -> {
@@ -246,7 +278,7 @@ public class CommSendService {
     }
 
 
-    public void writeOneFault(Sim s, RealExamFault reF, Fault f) {
+    public void writeOneFault(Sim s, RealExamFault ref, Fault f) {
         try {
             // 下发故障
             SimMsg sm1 = new SimMsg();
@@ -262,10 +294,10 @@ public class CommSendService {
             sm2.setSendMsg(sendMsg2);
             String receiveMsg2 = send(sendMsg2, s);
             sm2.setReceiveMsg(receiveMsg2);
-            simReceiveService.setFaultQuestionValue(sm2, s, reF, f);
+            simReceiveService.setFaultQuestionValue(sm2, s, ref, f);
             // 修改关联状态。
             {
-                RealExamFault f1 = realExamFaultService.selectRealExamFaultByRefId(reF.getRefId());
+                RealExamFault f1 = realExamFaultService.selectRealExamFaultByRefId(ref.getRefId());
                 f1.setRefState(RealExamFault.REF_STATE_LOOP_READ);
                 realExamFaultService.updateRealExamFault(f1);
             }

+ 14 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FaultService.java

@@ -94,6 +94,20 @@ public class FaultService {
     @Autowired
     private SimService simService;
 
+    public boolean isEnable(String faultId) {
+        Fault q = new Fault();
+        q.setFaultId(faultId);
+        Fault f = selectFaultByFaultId(faultId);
+        if (f == null) {
+            return false;
+        }
+        return (Fault.STATE_ENABLE.equals(f.getFaultState()));
+    }
+
+    public boolean isDisable(String faultId) {
+        return !isEnable(faultId);
+    }
+
     public List<Fault> listAllType3EnableBySimType(String simType) {
         Fault q = new Fault();
         q.setSimType(simType);

+ 54 - 4
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamFaultService.java

@@ -86,13 +86,14 @@ public class RealExamFaultService {
     // -------------------------------- tom add  --------------------------------
 
     private static final Logger l = LoggerFactory.getLogger(RealExamFaultService.class);
+
     /**
-     * 初始化的关联列表
+     * 初始化状态 关联列表
      *
      * @param examId
      * @return
      */
-    public List<RealExamFault> listAllStateInitByExamId(Long examId) {
+    public List<RealExamFault> listAllType2InitStateByExamId(Long examId) {
         RealExamFault q = new RealExamFault();
         q.setExamId(examId);
         q.setRefType(RealExamFault.REF_TYPE_2);
@@ -100,15 +101,33 @@ public class RealExamFaultService {
         return realExamFaultMapper.selectRealExamFaultList(q);
     }
 
-    public List<RealExamFault> listAllStatusLoopRead(Long examId) {
+    public List<RealExamFault> listAllType2YesLoopReadState(Long examId) {
         RealExamFault q = new RealExamFault();
         q.setExamId(examId);
         q.setRefType(RealExamFault.REF_TYPE_2);
         q.setRefState(RealExamFault.REF_STATE_LOOP_READ);
-        l.info(q.toString());
+        q.setFlag(RealExamFault.FLAG_YES);
+        return realExamFaultMapper.selectRealExamFaultList(q);
+    }
+
+    public List<RealExamFault> listAllType2Yes(Long examId) {
+        RealExamFault q = new RealExamFault();
+        q.setExamId(examId);
+        q.setRefType(RealExamFault.REF_TYPE_2);
+        q.setFlag(RealExamFault.FLAG_YES);
         return realExamFaultMapper.selectRealExamFaultList(q);
     }
 
+    public boolean isAllType2YesStateEqualWritten(long examId) {
+        List<RealExamFault> list = listAllType2Yes(examId);
+        for (RealExamFault ref : list) {
+            if (ref.getRefState() != RealExamFault.REF_STATE_WRITTEN) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     public boolean isState(Long refId, String state) {
         RealExamFault f = selectRealExamFaultByRefId(refId);
         if (f == null) {
@@ -116,4 +135,35 @@ public class RealExamFaultService {
         }
         return state.equals(f.getRefState());
     }
+
+    /**
+     * 计算减分。
+     *
+     * @param refId
+     */
+    public void calculateMinus(Long refId) {
+        RealExamFault f = selectRealExamFaultByRefId(refId);
+        if (f == null) {
+            throw new RuntimeException("calculateMinus");
+        }
+        if (!RealExamFault.FLAG_YES.equals(f.getFlag())) {
+            throw new RuntimeException("calculateMinus");
+        }
+        int minus = 0;
+        if (RealExamFault.REF_TYPE_1.equals(f.getRefType())) {
+            // todo:选择题的算减分
+        } else if (RealExamFault.REF_TYPE_2.equals(f.getRefType())) {
+            // 模拟器故障的算减分
+            if (!f.getChoiceQuestionValue().equals(f.getChoiceAnswerValue())) {
+                // 扣0分
+                minus = 0;
+            } else {
+                // 扣25分 故障未排除
+                minus = 25;
+            }
+        }
+        f.setMinus(minus);
+        // 更新减分数据。
+        updateRealExamFault(f);
+    }
 }

+ 101 - 5
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -1,13 +1,14 @@
 package com.ruoyi.sim.service.impl;
 
 import java.util.List;
+import java.util.Objects;
 
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.sim.domain.RealExamFault;
+import com.ruoyi.sim.domain.*;
+import com.ruoyi.sim.domain.vo.StudentRealExamPreVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.sim.mapper.RealExamMapper;
-import com.ruoyi.sim.domain.RealExam;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -85,11 +86,21 @@ public class RealExamService {
 
     // -------------------------------- tom add  --------------------------------
     @Autowired
+    private StudentService studentService;
+    @Autowired
+    private SimService simService;
+    @Autowired
+    private SeatService seatService;
+    @Autowired
+    private RealExamCollectionService realExamCollectionService;
+    @Autowired
     private RealExamFaultService realExamFaultService;
+    @Autowired
+    private CommSendService commSendService;
 
-    public List<RealExam> listAllStatusAnswering() {
+    public List<RealExam> listAllStatus(String examStatus) {
         RealExam q = new RealExam();
-        q.setExamStatus(RealExam.STATE_ANSWERING);
+        q.setExamStatus(examStatus);
         return selectRealExamList(q);
     }
 
@@ -98,7 +109,7 @@ public class RealExamService {
         RealExam q = selectRealExamByExamId(re.getExamId());
         if (state.equals(RealExam.STATE_SUBMITTED)) {
             // 关联故障list同步锁死。
-            realExamFaultService.listAllStatusLoopRead(q.getExamId())
+            realExamFaultService.listAllType2YesLoopReadState(q.getExamId())
                     .forEach(ref -> {
                         ref.setRefState(RealExamFault.REF_STATE_FINISH);
                         realExamFaultService.updateRealExamFault(ref);
@@ -107,4 +118,89 @@ public class RealExamService {
         q.setExamStatus(state);
         return updateRealExam(q);
     }
+
+    /**
+     * 计算减分(不包括超时)。汇总到deduction_total_score字段。
+     *
+     * @param realExamId
+     */
+    public void calculate(Long realExamId) {
+        int minus = 0;
+        RealExam re = realExamMapper.selectRealExamByExamId(realExamId);
+
+        // 排除故障部分
+
+
+        // 维修报告选择部分
+
+        // 超时部分
+        int timeoutMinute = 0;
+    }
+
+    /**
+     * [轮询]学生准备考试界面。
+     *
+     * @param realExamId
+     * @return
+     */
+    public StudentRealExamPreVo studentPrepareExam(Long realExamId) {
+        // check
+        if (realExamId == null || realExamId == 0) {
+            // todo:
+        }
+        //
+        RealExam re = selectRealExamByExamId(realExamId);
+        if (re == null) {
+            // todo:
+        }
+        // todo: 日期,不可进入考试。
+        //
+        Objects.requireNonNull(re);
+        RealExamCollection collection =
+                realExamCollectionService.selectRealExamCollectionByExamCollectionId(re.getExamCollectionId());
+        // check collection
+        Sim sim = simService.selectSimBySimId(re.getSimId());
+        // check sim
+        Student student = studentService.selectStudentByUserId(re.getUserId());
+        // check student
+        Seat seat = seatService.selectSeatBySeatId(re.getSeatId());
+        // check seat
+        StudentRealExamPreVo v = new StudentRealExamPreVo();
+        v.setRealExam(re);
+        v.setRealExamCollection(collection);
+        v.setSim(sim);
+        v.setStudent(student);
+        v.setSeat(seat);
+        boolean next = studentPrepareExamCheck(v);
+        v.setNext(next);
+        if (!next) {
+            // 执行模拟器通信,让模拟器准备好。
+            // async execute.
+            commSendService.clearListFaultByRealExamAsync(re);
+        }
+        return v;
+    }
+
+    public boolean studentPrepareExamCheck(StudentRealExamPreVo v) {
+        if (v == null ||
+                v.getRealExam() == null ||
+                v.getRealExamCollection() == null ||
+                v.getSim() == null ||
+                v.getStudent() == null ||
+                v.getSeat() == null) {
+            return false;
+        }
+        // todo:在考试日期内。
+        // check 一个模拟器的所有选中故障点位都下发成功,准备是否可以
+        //
+        // todo:??
+        // 学生答题中可以再次进入。
+        if (v.getRealExam().getExamStatus() == RealExam.STATE_SIM_PREPARE_OK ||
+                v.getRealExam().getExamStatus() == RealExam.STATE_ANSWERING ||
+                v.getSim().getSimState() == Sim.STATE_ONLINE
+        ) {
+            return true;
+        }
+        return false;
+    }
 }

+ 2 - 2
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/SimService.java

@@ -172,7 +172,7 @@ public class SimService {
         return count;
     }
 
-    @Async("asyncLogTE")
+    @Async("tp-log")
     public void updateLastSentTime(Sim s) {
         if (s == null) {
             return;
@@ -181,7 +181,7 @@ public class SimService {
         updateSim(s);
     }
 
-    @Async("asyncLogTE")
+    @Async("tp-log")
     public void updateLastReceivedTime(Sim s) {
         if (s == null) {
             return;