浏览代码

1.2 修复了一个由于记录TaskRecord出错导致的定时任务失败的问题

lifuquan 3 年之前
父节点
当前提交
8faedb3c5d

+ 1 - 1
other/http/http测试.http

@@ -1,5 +1,5 @@
 ###
-POST http://10.170.42.91:12088/terminal/volte?phoneNumber=13231899751
+POST http://10.170.42.91:12088/terminal/info?phoneNumber=13231899751
 Content-Type: application/x-www-form-urlencoded
 
 ###

+ 1 - 1
pom.xml

@@ -6,7 +6,7 @@
 
     <groupId>top.lifuquan</groupId>
     <artifactId>terminal</artifactId>
-    <version>1.1</version>
+    <version>1.2</version>
 
     <packaging>jar</packaging>
 

+ 2 - 0
src/main/java/top/lifuquan/pojo/TaskRecord.java

@@ -1,5 +1,6 @@
 package top.lifuquan.pojo;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -11,6 +12,7 @@ import java.util.Date;
 @Data
 @TableName("terminal_info.task_record")
 public class TaskRecord {
+    @TableId
     private Long id;
     private String taskType;
     private String taskDate;

+ 19 - 8
src/main/java/top/lifuquan/service/CronService.java

@@ -40,8 +40,12 @@ public class CronService {
         taskRecord.setTaskDate(dateStr);
         TaskRecord record = recordService.getOne(new QueryWrapper<>(taskRecord));
         if (record != null) {
+            // 在已存在的记录上继续进行
+            taskRecord = record;
             log.debug("已存在任务记录" + record.toString());
-            return;
+            if(record.getTaskStatus().equals("任务完成")) {
+                return;
+            }
         }
         // 开始执行任务
         String dateString2 = dateFormat.format(date.getTime() + 1000 * 3600 * 24);
@@ -52,7 +56,8 @@ public class CronService {
         if (!b) {
             log.info("文件{}scp失败", fileName);
             taskRecord.setTaskStatus("scp失败");
-            recordService.save(taskRecord);
+            taskRecord.setLastUpdateTime(new Date());
+            recordService.saveOrUpdate(taskRecord);
             return;
         }
         taskRecord.setTaskStatus("scp完成");
@@ -64,14 +69,15 @@ public class CronService {
         if (!b) {
             log.info("文件{}去重失败", localFilePath);
             taskRecord.setTaskStatus("去重失败");
-            recordService.save(taskRecord);
+            taskRecord.setLastUpdateTime(new Date());
+            recordService.saveOrUpdate(taskRecord);
             return;
         }
         taskRecord.setTaskStatus("去重完成");
         // 3. gpload
         taskRecord = ProcessUtil.gpLoad(dateStr, taskRecord);
         taskRecord.setLastUpdateTime(new Date());
-        recordService.save(taskRecord);
+        recordService.saveOrUpdate(taskRecord);
     }
 
     public void runVolteTask(Date date) {
@@ -83,8 +89,11 @@ public class CronService {
         taskRecord.setTaskDate(dateStr);
         TaskRecord record = recordService.getOne(new QueryWrapper<>(taskRecord));
         if (record != null) {
+            taskRecord = record;
             log.debug("已存在任务记录" + record.toString());
-            return;
+            if(record.getTaskStatus().equals("任务完成")) {
+                return;
+            }
         }
         // 开始执行任务
         String fileName = "752951054268059649_intf_list_volte_users_day_" + dateStr + "_0_127.dat";
@@ -94,7 +103,8 @@ public class CronService {
         if (!b) {
             log.info("文件{}scp失败", fileName);
             taskRecord.setTaskStatus("scp失败");
-            recordService.save(taskRecord);
+            taskRecord.setLastUpdateTime(new Date());
+            recordService.saveOrUpdate(taskRecord);
             return;
         }
         taskRecord.setTaskStatus("scp完成");
@@ -106,13 +116,14 @@ public class CronService {
         if (!b) {
             log.info("文件{}去重失败", localFilePath);
             taskRecord.setTaskStatus("去重失败");
-            recordService.save(taskRecord);
+            taskRecord.setLastUpdateTime(new Date());
+            recordService.saveOrUpdate(taskRecord);
             return;
         }
         taskRecord.setTaskStatus("去重完成");
         // 3. gpload
         taskRecord = ProcessUtil.gpLoad(dateStr, taskRecord);
         taskRecord.setLastUpdateTime(new Date());
-        recordService.save(taskRecord);
+        recordService.saveOrUpdate(taskRecord);
     }
 }

+ 1 - 1
src/main/java/top/lifuquan/util/ProcessUtil.java

@@ -106,7 +106,7 @@ public class ProcessUtil {
                 }
             }
             // 文件未下载成功,删除文件
-            log.debug("文件未下载完成,可能的原因是下载超时,将删除未完全下载的文件 " + localFilePath);
+            log.debug("文件未下载完成,可能的原因是在源端不存在文件或下载超时,将删除未完全下载的文件 " + localFilePath);
             rmFile(localFilePath);
         } catch (IOException e) {
             // 遇到异常也可能会遗留未完全下载的文件

+ 1 - 1
src/main/resources/application.properties

@@ -13,6 +13,6 @@ logging.file=log/terminalApplication.log
 
 # ¶¨Ê±µ÷¶È
 scheduled.pool.size=2
-scheduled.cron=0 45 * * * ?
+scheduled.cron=0 15 * * * ?
 # ÑÓ³ÙÌìÊý
 scheduled.delay=1

+ 17 - 2
src/test/java/top/lifuquan/service/TerminalInfoVoServiceTest.java

@@ -1,13 +1,20 @@
 package top.lifuquan.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 import top.lifuquan.pojo.CustomerServiceTerminalInfo;
+import top.lifuquan.pojo.TaskRecord;
 
 import javax.annotation.Resource;
 
+import java.sql.Wrapper;
+import java.util.Date;
+import java.util.List;
+
 import static org.junit.Assert.*;
 
 @RunWith(SpringRunner.class)
@@ -17,9 +24,17 @@ public class TerminalInfoVoServiceTest {
     @Resource
     private TerminalInfoService service;
 
+    @Resource
+    private TaskRecordService recordService;
+
     @Test
     public void getCustomerServiceTerminalInfoByPhoneNumber() {
-        CustomerServiceTerminalInfo info = service.getCustomerServiceTerminalInfoByPhoneNumber("13231899751");
-        System.out.println(info);
+        TaskRecord record = new TaskRecord();
+        record.setTaskDate("20220307");
+        record.setTaskType("5g");
+        TaskRecord one = recordService.getOne(Wrappers.query(record));
+        System.out.println(one);
+        one.setLastUpdateTime(new Date());
+        recordService.saveOrUpdate(one);
     }
 }