opt:1.取消任务逻辑修改。2.新增拖动点云重定位功能。
This commit is contained in:
@@ -1,14 +1,17 @@
|
|||||||
package org.nl.apt15e.apt.anomalyInfo.controller;
|
package org.nl.apt15e.apt.anomalyInfo.controller;
|
||||||
|
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
|
import lombok.Value;
|
||||||
import org.nl.apt15e.apt.anomalyInfo.dao.ErrorHandling;
|
import org.nl.apt15e.apt.anomalyInfo.dao.ErrorHandling;
|
||||||
import org.nl.apt15e.apt.anomalyInfo.dao.ErrorInfo;
|
import org.nl.apt15e.apt.anomalyInfo.dao.ErrorInfo;
|
||||||
import org.nl.apt15e.apt.anomalyInfo.service.AnomalyInfoService;
|
import org.nl.apt15e.apt.anomalyInfo.service.AnomalyInfoService;
|
||||||
import org.nl.apt15e.apt.anomalyInfo.service.ErrorHandlingService;
|
import org.nl.apt15e.apt.anomalyInfo.service.ErrorHandlingService;
|
||||||
import org.nl.apt15e.apt.anomalyInfo.service.ErrorInfoService;
|
import org.nl.apt15e.apt.anomalyInfo.service.ErrorInfoService;
|
||||||
|
import org.nl.apt15e.apt.vehicle.ProcessZip;
|
||||||
import org.nl.apt15e.common.BadRequestException;
|
import org.nl.apt15e.common.BadRequestException;
|
||||||
import org.nl.apt15e.common.excel.ErrorHandlingListener;
|
import org.nl.apt15e.common.excel.ErrorHandlingListener;
|
||||||
import org.nl.apt15e.common.excel.ErrorInfoListener;
|
import org.nl.apt15e.common.excel.ErrorInfoListener;
|
||||||
|
import org.nl.apt15e.config.file.FileProperties;
|
||||||
import org.nl.apt15e.config.language.LangProcess;
|
import org.nl.apt15e.config.language.LangProcess;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,6 +43,12 @@ public class AnomalyInfoController {
|
|||||||
@Resource
|
@Resource
|
||||||
private ErrorHandlingService errorHandlingService;
|
private ErrorHandlingService errorHandlingService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private FileProperties properties;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessZip processZip;
|
||||||
|
|
||||||
@PostMapping("/queryErrorDataByCode")
|
@PostMapping("/queryErrorDataByCode")
|
||||||
public ResponseEntity<Object> queryErrorDataByCode(@RequestParam("code") String code) {
|
public ResponseEntity<Object> queryErrorDataByCode(@RequestParam("code") String code) {
|
||||||
return new ResponseEntity<>(anomalyInfoService.queryErrorDataByCode(code), HttpStatus.OK);
|
return new ResponseEntity<>(anomalyInfoService.queryErrorDataByCode(code), HttpStatus.OK);
|
||||||
@@ -80,4 +90,34 @@ public class AnomalyInfoController {
|
|||||||
return new ResponseEntity<>(LangProcess.msg("successful"),HttpStatus.OK);
|
return new ResponseEntity<>(LangProcess.msg("successful"),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/importErrorImage")
|
||||||
|
public ResponseEntity<Object> importErrorImage(@RequestParam("file") MultipartFile file) throws IOException {
|
||||||
|
if (file.isEmpty()) {
|
||||||
|
throw new BadRequestException("文件不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
String originalFilename = file.getOriginalFilename();
|
||||||
|
if (originalFilename == null ||
|
||||||
|
(!originalFilename.toLowerCase().endsWith(".zip"))) {
|
||||||
|
throw new BadRequestException("目前只支持ZIP格式");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 创建上传目录
|
||||||
|
File uploadDir = new File(properties.getPath().getPath());
|
||||||
|
if (!uploadDir.exists()) {
|
||||||
|
uploadDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理压缩文件
|
||||||
|
processZip.processCompressedFile(file);
|
||||||
|
|
||||||
|
|
||||||
|
return new ResponseEntity<>("上传成功!",HttpStatus.OK);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BadRequestException("处理文件失败:{}"+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public class TaskManageServiceImpl implements TaskManageService {
|
|||||||
|
|
||||||
// 当前叉腿载货状态(Ascend或者Descend)
|
// 当前叉腿载货状态(Ascend或者Descend)
|
||||||
// String currentType = VehicleInfoServiceImpl.vehicleInfo.getVehiclePayloads() == 1? StationTypeEnum.ASCEND.getCode():StationTypeEnum.DESCEND.getCode();
|
// String currentType = VehicleInfoServiceImpl.vehicleInfo.getVehiclePayloads() == 1? StationTypeEnum.ASCEND.getCode():StationTypeEnum.DESCEND.getCode();
|
||||||
String currentType = Objects.equals(VehicleInfoServiceImpl.vehicleInfo.getVehiclePayloads(), 1)? StationTypeEnum.ASCEND.getCode():StationTypeEnum.DESCEND.getCode();
|
String currentType = Objects.equals(VehicleInfoServiceImpl.vehicleInfo.getVehiclePayloads(), "1")? StationTypeEnum.ASCEND.getCode():StationTypeEnum.DESCEND.getCode();
|
||||||
|
|
||||||
for (int i = 0; i < staList.size(); i++) {
|
for (int i = 0; i < staList.size(); i++) {
|
||||||
String proposedAction = staList.get(i).getAction_type();
|
String proposedAction = staList.get(i).getAction_type();
|
||||||
@@ -170,18 +170,23 @@ public class TaskManageServiceImpl implements TaskManageService {
|
|||||||
new QueryWrapper<Task>().lambda()
|
new QueryWrapper<Task>().lambda()
|
||||||
.lt(Task::getTask_status, TaskStatus.FINISHED.getCode())
|
.lt(Task::getTask_status, TaskStatus.FINISHED.getCode())
|
||||||
);
|
);
|
||||||
if (ObjectUtil.isEmpty(task)) {
|
// if (ObjectUtil.isEmpty(task)) {
|
||||||
throw new BadRequestException(LangProcess.msg("task_Is_not_exist"));
|
// throw new BadRequestException(LangProcess.msg("task_Is_not_exist"));
|
||||||
}
|
// }
|
||||||
try {
|
try {
|
||||||
HttpResponse response = HTTPUtil.post(URLConstant.RCS_IP_PORT, URLConstant.CANCEL_TASK_URL + task.getTask_id(), null);
|
JSONObject param = new JSONObject();
|
||||||
|
param.put("amrId", VehicleInfoServiceImpl.vehicleInfo.getId());
|
||||||
|
//取消调度任务
|
||||||
|
HttpResponse response = HTTPUtil.post(URLConstant.RCS_IP_PORT, URLConstant.VEHICLE_ID_CANCEL_TASK_URL, param);
|
||||||
JSONObject result = JSONObject.parseObject(response.body());
|
JSONObject result = JSONObject.parseObject(response.body());
|
||||||
if (result.getBoolean("state").equals(false)) {
|
if (result.getBoolean("state").equals(false)) {
|
||||||
throw new BadRequestException(LangProcess.msg("error_request_rcs") + result.getString("errMsg"));
|
throw new BadRequestException(LangProcess.msg("error_request_rcs") + result.getString("errMsg"));
|
||||||
}
|
}
|
||||||
// 取消任务
|
// 取消当前任务
|
||||||
task.setTask_status(TaskStatus.CANCELED.getCode());
|
if (ObjectUtil.isNotEmpty(task)) {
|
||||||
iTaskService.updateById(task);
|
task.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
|
iTaskService.updateById(task);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException(LangProcess.msg("error_request_rcs") + e.getMessage());
|
throw new BadRequestException(LangProcess.msg("error_request_rcs") + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public class TeachingController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/sendAutoBack")
|
@PostMapping("/sendAutoBack")
|
||||||
private ResponseEntity<Object> sendAutoBack() {
|
private ResponseEntity<Object> sendAutoBack(@RequestParam("isBack") Integer isBack) {
|
||||||
return new ResponseEntity<>(teachingService.sendAutoBack(), HttpStatus.OK);
|
return new ResponseEntity<>(teachingService.sendAutoBack(isBack), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,5 +101,5 @@ public interface TeachingService {
|
|||||||
/**
|
/**
|
||||||
* 打点后 自动回到上一个点
|
* 打点后 自动回到上一个点
|
||||||
*/
|
*/
|
||||||
Map<String,Object> sendAutoBack();
|
Map<String,Object> sendAutoBack(Integer isBack);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -460,10 +460,13 @@ public class TeachingServiceImpl implements TeachingService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> sendAutoBack() {
|
public Map<String, Object> sendAutoBack(Integer isBack) {
|
||||||
|
if (ObjectUtil.isEmpty(isBack)){
|
||||||
|
throw new BadRequestException(LangProcess.msg("param_is_null"));
|
||||||
|
}
|
||||||
JSONObject params = new JSONObject();
|
JSONObject params = new JSONObject();
|
||||||
String attach = "{"+
|
String attach = "{"+
|
||||||
"'sub_command':0,"+
|
"'sub_command':"+isBack+","+
|
||||||
"'param':''"+
|
"'param':''"+
|
||||||
"}";
|
"}";
|
||||||
params.put("cmd", 2212);
|
params.put("cmd", 2212);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.nl.apt15e.config.language.LangProcess;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.yaml.snakeyaml.Yaml;
|
import org.yaml.snakeyaml.Yaml;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -32,6 +33,9 @@ import java.awt.image.DataBufferByte;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -398,4 +402,106 @@ public class ProcessZip {
|
|||||||
log.info("保存PNG失败: {}",e.getMessage());
|
log.info("保存PNG失败: {}",e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理上传的异常文件
|
||||||
|
* @param file
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
public void processCompressedFile(MultipartFile file) throws IOException {
|
||||||
|
List<String> skippedFiles = new ArrayList<>();
|
||||||
|
|
||||||
|
String filename = file.getOriginalFilename();
|
||||||
|
String extension = filename.substring(filename.lastIndexOf("."));
|
||||||
|
|
||||||
|
try (InputStream inputStream = file.getInputStream()) {
|
||||||
|
if (extension.toLowerCase().equals(".zip")) {
|
||||||
|
extractZipFile(inputStream, skippedFiles);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("不支持的压缩格式: " + extension);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解压上传异常图片压缩文件
|
||||||
|
* @param inputStream
|
||||||
|
* @param skippedFiles
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
private void extractZipFile(InputStream inputStream, List<String> skippedFiles)
|
||||||
|
throws IOException {
|
||||||
|
int processedCount = 0;
|
||||||
|
int skippedCount = 0;
|
||||||
|
|
||||||
|
try (ZipInputStream zipInputStream = new ZipInputStream(inputStream)) {
|
||||||
|
ZipEntry entry;
|
||||||
|
while ((entry = zipInputStream.getNextEntry()) != null) {
|
||||||
|
if (!entry.isDirectory() && isImageFile(entry.getName())) {
|
||||||
|
String filename = new File(entry.getName()).getName();
|
||||||
|
|
||||||
|
if (isFileExists(filename)) {
|
||||||
|
skippedFiles.add(filename);
|
||||||
|
skippedCount++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (saveImageFile(zipInputStream, filename)) {
|
||||||
|
processedCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zipInputStream.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("处理文件数:{},跳过文件数:{},跳过文件名称集合:{}",processedCount,skippedCount,skippedFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否是图片文件
|
||||||
|
* @param filename
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isImageFile(String filename) {
|
||||||
|
String lowerCaseFilename = filename.toLowerCase();
|
||||||
|
return lowerCaseFilename.endsWith(".jpg") ||
|
||||||
|
lowerCaseFilename.endsWith(".jpeg") ||
|
||||||
|
lowerCaseFilename.endsWith(".png") ||
|
||||||
|
lowerCaseFilename.endsWith(".gif") ||
|
||||||
|
lowerCaseFilename.endsWith(".bmp") ||
|
||||||
|
lowerCaseFilename.endsWith(".webp");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看文件名是否有重名
|
||||||
|
* @param filename
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean isFileExists(String filename) {
|
||||||
|
File targetFile = new File(properties.getPath().getPath() + filename);
|
||||||
|
return targetFile.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存图片文件到目录
|
||||||
|
* @param inputStream
|
||||||
|
* @param filename
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean saveImageFile(InputStream inputStream, String filename) {
|
||||||
|
try {
|
||||||
|
File outputFile = new File(properties.getPath().getPath() + filename);
|
||||||
|
|
||||||
|
// 确保目录存在
|
||||||
|
File parentDir = outputFile.getParentFile();
|
||||||
|
if (!parentDir.exists()) {
|
||||||
|
parentDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
Files.copy(inputStream, outputFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
return true;
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("保存文件失败: " + filename, e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,6 +142,6 @@ public class VehicleInfo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 车辆载货状态 0未载货 1载货
|
* 车辆载货状态 0未载货 1载货
|
||||||
*/
|
*/
|
||||||
private Integer vehiclePayloads;
|
private String vehiclePayloads;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,9 @@ public class VehicleInfoServiceImpl implements VehicleInfoService {
|
|||||||
|
|
||||||
public static VehicleInfo vehicleInfo = new VehicleInfo();
|
public static VehicleInfo vehicleInfo = new VehicleInfo();
|
||||||
|
|
||||||
public static Set<PointCloudDataDto> pointCloudData = new HashSet<>();
|
public static Set<PointCloudDataDto> currentPointCloudData = new HashSet<>();
|
||||||
|
|
||||||
|
public static Set<PointCloudDataDto> globalPointCloudData = new HashSet<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VehicleInfo getVehicleInfo() {
|
public VehicleInfo getVehicleInfo() {
|
||||||
@@ -295,7 +297,8 @@ public class VehicleInfoServiceImpl implements VehicleInfoService {
|
|||||||
if (webSocketSet.size() > 0) {
|
if (webSocketSet.size() > 0) {
|
||||||
webSocketSet.forEach(c -> {
|
webSocketSet.forEach(c -> {
|
||||||
Map<String, Object> vehicleInfoMap = new HashMap<>();
|
Map<String, Object> vehicleInfoMap = new HashMap<>();
|
||||||
vehicleInfoMap.put("data", pointCloudData);
|
vehicleInfoMap.put("globalData", globalPointCloudData);
|
||||||
|
vehicleInfoMap.put("currentData", currentPointCloudData);
|
||||||
c.sendDataToClient(vehicleInfoMap);
|
c.sendDataToClient(vehicleInfoMap);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler {
|
|||||||
// 自动回退状态标识 0 不处理 1 自动回退成功 2 自动回退失败
|
// 自动回退状态标识 0 不处理 1 自动回退成功 2 自动回退失败
|
||||||
VehicleInfoServiceImpl.vehicleInfo.setAuto_back_finish(data_pool.getString("auto_back_finish"));
|
VehicleInfoServiceImpl.vehicleInfo.setAuto_back_finish(data_pool.getString("auto_back_finish"));
|
||||||
// 车辆载货状态 0未载货 1载货
|
// 车辆载货状态 0未载货 1载货
|
||||||
VehicleInfoServiceImpl.vehicleInfo.setVehiclePayloads(robotBase.getPayloads());
|
VehicleInfoServiceImpl.vehicleInfo.setVehiclePayloads(data_pool.getString("carry_status"));
|
||||||
String ready = data_pool.getString("ready");
|
String ready = data_pool.getString("ready");
|
||||||
TeachingServiceImpl.teachingMappingStatus.put("mapping_return", mapping_return);
|
TeachingServiceImpl.teachingMappingStatus.put("mapping_return", mapping_return);
|
||||||
TeachingServiceImpl.teachingMappingStatus.put("mapping_percent", mapping_percent);
|
TeachingServiceImpl.teachingMappingStatus.put("mapping_percent", mapping_percent);
|
||||||
@@ -98,7 +98,8 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler {
|
|||||||
Robottype.LaserData laser = datagram.getLaserScan();
|
Robottype.LaserData laser = datagram.getLaserScan();
|
||||||
// 9顶部激光
|
// 9顶部激光
|
||||||
if (laser.getLocation() == 9){
|
if (laser.getLocation() == 9){
|
||||||
Set<PointCloudDataDto> data = new HashSet<>();
|
Set<PointCloudDataDto> globalData = new HashSet<>();
|
||||||
|
Set<PointCloudDataDto> currentData = new HashSet<>();
|
||||||
for (Robottype.Point point: laser.getScanList()){
|
for (Robottype.Point point: laser.getScanList()){
|
||||||
double cosYaw = cos(VehicleInfoServiceImpl.vehicleInfo.getTheta());
|
double cosYaw = cos(VehicleInfoServiceImpl.vehicleInfo.getTheta());
|
||||||
double sinYaw = sin(VehicleInfoServiceImpl.vehicleInfo.getTheta());
|
double sinYaw = sin(VehicleInfoServiceImpl.vehicleInfo.getTheta());
|
||||||
@@ -110,12 +111,26 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler {
|
|||||||
DecimalFormat y_globalDF = new DecimalFormat("#.#");
|
DecimalFormat y_globalDF = new DecimalFormat("#.#");
|
||||||
String y_result = y_globalDF.format(y_global);
|
String y_result = y_globalDF.format(y_global);
|
||||||
double y_globalNum = Double.parseDouble(y_result);
|
double y_globalNum = Double.parseDouble(y_result);
|
||||||
PointCloudDataDto pointCloudDataDto = new PointCloudDataDto();
|
PointCloudDataDto globalPointCloudDataDto = new PointCloudDataDto();
|
||||||
pointCloudDataDto.setX(x_globalNum);
|
globalPointCloudDataDto.setX(x_globalNum);
|
||||||
pointCloudDataDto.setY(y_globalNum);
|
globalPointCloudDataDto.setY(y_globalNum);
|
||||||
data.add(pointCloudDataDto);
|
globalData.add(globalPointCloudDataDto);
|
||||||
|
|
||||||
|
double x_current = point.getX();
|
||||||
|
DecimalFormat x_currentDF = new DecimalFormat("#.#");
|
||||||
|
String x_CurrentResult = x_currentDF.format(x_current);
|
||||||
|
double x_currentNum = Double.parseDouble(x_CurrentResult);
|
||||||
|
double y_current = point.getY();
|
||||||
|
DecimalFormat y_currentDF = new DecimalFormat("#.#");
|
||||||
|
String y_CurrentResult = y_currentDF.format(y_current);
|
||||||
|
double y_currentNum = Double.parseDouble(y_CurrentResult);
|
||||||
|
PointCloudDataDto currentPointCloudDataDto = new PointCloudDataDto();
|
||||||
|
currentPointCloudDataDto.setX(x_currentNum);
|
||||||
|
currentPointCloudDataDto.setY(y_currentNum);
|
||||||
|
currentData.add(currentPointCloudDataDto);
|
||||||
}
|
}
|
||||||
VehicleInfoServiceImpl.pointCloudData = data;
|
VehicleInfoServiceImpl.globalPointCloudData = globalData;
|
||||||
|
VehicleInfoServiceImpl.currentPointCloudData = currentData;
|
||||||
}
|
}
|
||||||
// System.out.println("Received laser_scan: " + list);
|
// System.out.println("Received laser_scan: " + list);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -26,8 +26,13 @@ public class URLConstant {
|
|||||||
public final static String SEND_TASK_URL = "/task/add";
|
public final static String SEND_TASK_URL = "/task/add";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 取消任务URL
|
* 根据任务ID取消任务URL + 任务ID
|
||||||
*/
|
*/
|
||||||
public final static String CANCEL_TASK_URL = "/task/cancel/";
|
public final static String CANCEL_TASK_URL = "/task/cancel/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据车号ID取消任务URL
|
||||||
|
*/
|
||||||
|
public final static String VEHICLE_ID_CANCEL_TASK_URL = "/task/batchCancel";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user