VehicleDataSyncController.java
4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.bsth.controller.schedule.datasync;
import com.bsth.controller.schedule.BController;
import com.bsth.controller.schedule.datasync.common.ApiResult;
import com.bsth.controller.schedule.datasync.request.VehicleDataSyncTaskRequest;
import com.bsth.entity.schedule.datasync.VehicleDataSyncTask;
import com.bsth.entity.schedule.datasync.VehicleDataSyncTaskTypeEnum;
import com.bsth.service.schedule.datasync.VehicleDataSyncTaskService;
import com.bsth.service.schedule.utils.MyHttpUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.Date;
@RestController
@RequestMapping("dataSync/vehicle")
public class VehicleDataSyncController extends BController<VehicleDataSyncTask, Long> {
@Autowired
private VehicleDataSyncTaskService vehicleDataSyncService;
//------------------ 外部系统调用的api(如下)-----------------------//
/**
* 添加任务(此接口用于外部系统调用)。
* @return
*/
@GetMapping(value = "/api/addTask")
public ApiResult addTask() {
try {
// 远程触发,使用当前服务器时间作为参数
Date currentDate = new Date();
VehicleDataSyncTask task = VehicleDataSyncTask.builder()
.type(VehicleDataSyncTaskTypeEnum.REMOTE_TRIGGER) // 类型
.paramFrom(currentDate)
.paramTo(currentDate)
.build();
this.vehicleDataSyncService.addToDataSyncTaskQueue(task);
return ApiResult.success(
"200",
"添加同步任务成功",
"添加同步任务成功");
} catch (Exception exp) {
return ApiResult.failure(
"500",
"添加同步任务失败,内部错误:" + exp.getMessage());
}
}
//------------------ 外部系统调用的api(如上)-----------------------//
/**
* 手动添加同步任务。
* @param vehicleDataSyncTaskRequest
* @return
*/
@PostMapping(value = "/addTask")
public ApiResult addTask(@RequestBody VehicleDataSyncTaskRequest vehicleDataSyncTaskRequest) {
try {
VehicleDataSyncTask task = VehicleDataSyncTask.builder()
.type(VehicleDataSyncTaskTypeEnum.ACTIVE_TRIGGER) // 类型
.paramClzbh(vehicleDataSyncTaskRequest.getParamClzbh())
.paramFrom(vehicleDataSyncTaskRequest.getParamFrom())
.paramTo(vehicleDataSyncTaskRequest.getParamTo())
.build();
this.vehicleDataSyncService.addToDataSyncTaskQueue(task);
return ApiResult.success(
"200",
"添加同步任务成功",
"添加同步任务成功");
} catch (Exception exp) {
return ApiResult.failure(
"500",
"添加同步任务失败,内部错误:" + exp.getMessage());
}
}
/**
* 获取日志相关文件。
* @param response
* @param id 日志Id
*/
@GetMapping(value = "/logfile/{id}/{type}")
public void exportTaskLogFile(
HttpServletResponse response,
@PathVariable("id") long id,
@PathVariable("type") Integer type) {
File file;
if (type == 1) {
file = this.vehicleDataSyncService.getTaskLogFile(id);
} else if (type == 2) {
file = this.vehicleDataSyncService.getTaskValidateErrorFile(id);
} else if (type == 3) {
file = this.vehicleDataSyncService.getTaskPrepareFile(id);
} else if (type == 4) {
file = this.vehicleDataSyncService.getTaskAddErrorFile(id);
} else if (type == 5) {
file = this.vehicleDataSyncService.getTaskUpdateErrorFile(id);
} else if (type == 6) {
file = this.vehicleDataSyncService.getTaskDeviceAddErrorFile(id);
} else {
throw new RuntimeException("未知类型[" + type + "]的日志文件!");
}
if (file == null || !file.exists()) {
throw new RuntimeException("日志文件不存在!");
}
try {
MyHttpUtils.responseStreamFile(response, file);
} catch (Exception exp) {
exp.printStackTrace();
throw new RuntimeException("获取同步日志文件错误:" + exp.getMessage());
}
}
}