From 7a464b65fb4075283f5b88ef7627bc1046ab6850 Mon Sep 17 00:00:00 2001 From: liejiu946 Date: Fri, 17 Oct 2025 10:57:39 +0800 Subject: [PATCH] =?UTF-8?q?opt:1.=E4=B8=8B=E5=8F=91=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E6=A0=A1=E9=AA=8C=E3=80=822.=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=9B=9E=E9=80=80=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E3=80=823.=E6=B7=BB=E5=8A=A0AC=E9=97=AD=E7=8E=AF=E5=BB=BA?= =?UTF-8?q?=E5=9B=BE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apt/station/service/StationService.java | 15 +++++++ .../service/impl/StationServiceImpl.java | 42 ++++++++++++++++++- .../service/rest/StationController.java | 10 +++++ .../service/impl/TaskManageServiceImpl.java | 25 +++++++++-- .../apt/teaching/rest/TeachingController.java | 5 +++ .../apt/teaching/service/TeachingService.java | 5 +++ .../service/impl/TeachingServiceImpl.java | 32 +++++++++++++- .../org/nl/apt15e/apt/vehicle/ProcessZip.java | 2 +- .../apt15e/apt/vehicle/dao/VehicleInfo.java | 30 +++++++++++++ .../service/impl/VehicleInfoServiceImpl.java | 12 +++++- .../thread/ProtobufWebSocketHandler.java | 11 +++++ .../resources/language/error/error.properties | 1 + .../language/error/error_en_US.properties | 1 + .../language/error/error_zh_CN.properties | 1 + .../resources/language/task/task.properties | 3 +- .../language/task/task_en_US.properties | 3 +- .../language/task/task_zh_CN.properties | 3 +- 17 files changed, 190 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/nl/apt15e/apt/station/service/StationService.java b/src/main/java/org/nl/apt15e/apt/station/service/StationService.java index c977a94..43a4376 100644 --- a/src/main/java/org/nl/apt15e/apt/station/service/StationService.java +++ b/src/main/java/org/nl/apt15e/apt/station/service/StationService.java @@ -2,9 +2,11 @@ package org.nl.apt15e.apt.station.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.apt15e.apt.dto.WebResponse; import org.nl.apt15e.apt.station.dao.Station; import java.util.List; +import java.util.Map; /** * @author dsh @@ -17,4 +19,17 @@ public interface StationService extends IService { List queryMapAllStation(); Station queryStationById(Integer id); + + /** + * 获取返回点 + * @return + */ + Station getReturnStation(); + + /** + * 更新休息点 + * @param station_id + * @return + */ + WebResponse updateReturnStation(Integer station_id); } diff --git a/src/main/java/org/nl/apt15e/apt/station/service/impl/StationServiceImpl.java b/src/main/java/org/nl/apt15e/apt/station/service/impl/StationServiceImpl.java index 62aa659..2b5f5cc 100644 --- a/src/main/java/org/nl/apt15e/apt/station/service/impl/StationServiceImpl.java +++ b/src/main/java/org/nl/apt15e/apt/station/service/impl/StationServiceImpl.java @@ -1,14 +1,20 @@ package org.nl.apt15e.apt.station.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.apt15e.apt.dto.WebResponse; import org.nl.apt15e.apt.station.StationTypeEnum; import org.nl.apt15e.apt.station.dao.Station; import org.nl.apt15e.apt.station.service.StationService; import org.nl.apt15e.apt.station.service.mapper.StationMapper; +import org.nl.apt15e.common.BadRequestException; +import org.nl.apt15e.config.language.LangProcess; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Collections; @@ -28,7 +34,7 @@ public class StationServiceImpl extends ServiceImpl impl @Override public List queryAllStation() { return stationMapper.selectList(new LambdaQueryWrapper<>(Station.class) - .eq(Station::getStation_type, StationTypeEnum.STATION.getCode())); + .ne(Station::getStation_type, StationTypeEnum.SYSTEM.getCode())); } @Override @@ -40,4 +46,38 @@ public class StationServiceImpl extends ServiceImpl impl public Station queryStationById(Integer id) { return stationMapper.selectOne(new LambdaQueryWrapper().eq(Station::getStation_id, id)); } + + @Override + public Station getReturnStation() { + return stationMapper.selectOne(new LambdaQueryWrapper().eq(Station::getStation_type, StationTypeEnum.BREAKS.getCode())); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public WebResponse updateReturnStation(Integer station_id) { + if (ObjectUtil.isEmpty(station_id)) { + throw new BadRequestException(LangProcess.msg("param_is_null")); + } + Station station = this.getReturnStation(); + boolean verify = false; + //当前存在返回点就先更新状态为工作点 + if (ObjectUtil.isNotEmpty(station)){ + station.setStation_type(StationTypeEnum.STATION.getCode()); + station.setAction_type(StationTypeEnum.CUSTOMIZE.getCode()); + verify = stationMapper.updateById(station)>0; + } + // 判断用户是否选择返回点 + if (station_id != -1){ + // 更新休息点 + verify = stationMapper.update(new Station(),new LambdaUpdateWrapper<>(Station.class) + .set(Station::getStation_type,StationTypeEnum.BREAKS.getCode()) + .set(Station::getAction_type,StationTypeEnum.RETURN.getCode()) + .eq(Station::getStation_id,station_id) + ) > 0; + } + if (!verify){ + throw new BadRequestException(LangProcess.msg("failed")); + } + return WebResponse.requestOk(); + } } diff --git a/src/main/java/org/nl/apt15e/apt/station/service/rest/StationController.java b/src/main/java/org/nl/apt15e/apt/station/service/rest/StationController.java index 123e8bf..0b0b04c 100644 --- a/src/main/java/org/nl/apt15e/apt/station/service/rest/StationController.java +++ b/src/main/java/org/nl/apt15e/apt/station/service/rest/StationController.java @@ -34,4 +34,14 @@ public class StationController { private ResponseEntity queryStationById(@RequestParam("station_id") Integer station_id) { return new ResponseEntity<>(stationService.queryStationById(station_id), HttpStatus.OK); } + + @GetMapping("/getReturnStation") + private ResponseEntity getReturnStation() { + return new ResponseEntity<>(stationService.getReturnStation(), HttpStatus.OK); + } + + @PostMapping("/updateReturnStation") + private ResponseEntity updateReturnStation(@RequestParam("station_id") Integer station_id){ + return new ResponseEntity<>(stationService.updateReturnStation(station_id), HttpStatus.OK); + } } diff --git a/src/main/java/org/nl/apt15e/apt/taskOperate/service/impl/TaskManageServiceImpl.java b/src/main/java/org/nl/apt15e/apt/taskOperate/service/impl/TaskManageServiceImpl.java index 41ada41..b7c4b4c 100644 --- a/src/main/java/org/nl/apt15e/apt/taskOperate/service/impl/TaskManageServiceImpl.java +++ b/src/main/java/org/nl/apt15e/apt/taskOperate/service/impl/TaskManageServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.apt15e.apt.dto.WebResponse; +import org.nl.apt15e.apt.station.StationTypeEnum; import org.nl.apt15e.apt.station.dao.Station; import org.nl.apt15e.apt.station.service.StationService; import org.nl.apt15e.apt.task.enums.TaskStatus; @@ -16,6 +17,7 @@ import org.nl.apt15e.apt.task.service.dao.Task; import org.nl.apt15e.apt.taskOperate.service.TaskManageService; import org.nl.apt15e.apt.taskchain.service.ITaskchainService; import org.nl.apt15e.apt.taskchain.service.dao.Taskchain; +import org.nl.apt15e.apt.vehicle.service.impl.VehicleInfoServiceImpl; import org.nl.apt15e.common.BadRequestException; import org.nl.apt15e.config.language.LangProcess; import org.nl.apt15e.util.HTTPUtil; @@ -25,10 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -90,6 +89,24 @@ public class TaskManageServiceImpl implements TaskManageService { staList.add(breakPoint); } + // 当前叉腿载货状态(Ascend或者Descend) +// 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(); + + for (int i = 0; i < staList.size(); i++) { + String proposedAction = staList.get(i).getAction_type(); + + // 检查动作是否与当前动作相同 + if (currentType.equals(proposedAction)) { + throw new BadRequestException(LangProcess.msg("task_cannot_be_enforced")); + } + + // 只有升叉和降叉会改变当前状态 + if (StationTypeEnum.ASCEND.getCode().equals(proposedAction) || StationTypeEnum.DESCEND.getCode().equals(proposedAction)) { + currentType = proposedAction; + } + } + // 任务id String task_id = ""; // 组织任务下发 diff --git a/src/main/java/org/nl/apt15e/apt/teaching/rest/TeachingController.java b/src/main/java/org/nl/apt15e/apt/teaching/rest/TeachingController.java index c7d44a4..8cde572 100644 --- a/src/main/java/org/nl/apt15e/apt/teaching/rest/TeachingController.java +++ b/src/main/java/org/nl/apt15e/apt/teaching/rest/TeachingController.java @@ -102,4 +102,9 @@ public class TeachingController { private ResponseEntity getMappingStatus() { return new ResponseEntity<>(teachingService.getMappingStatus(), HttpStatus.OK); } + + @PostMapping("/sendAutoBack") + private ResponseEntity sendAutoBack() { + return new ResponseEntity<>(teachingService.sendAutoBack(), HttpStatus.OK); + } } diff --git a/src/main/java/org/nl/apt15e/apt/teaching/service/TeachingService.java b/src/main/java/org/nl/apt15e/apt/teaching/service/TeachingService.java index 76be873..1000f03 100644 --- a/src/main/java/org/nl/apt15e/apt/teaching/service/TeachingService.java +++ b/src/main/java/org/nl/apt15e/apt/teaching/service/TeachingService.java @@ -97,4 +97,9 @@ public interface TeachingService { * 获取后台地图列表 */ Map getMappingStatus(); + + /** + * 打点后 自动回到上一个点 + */ + Map sendAutoBack(); } diff --git a/src/main/java/org/nl/apt15e/apt/teaching/service/impl/TeachingServiceImpl.java b/src/main/java/org/nl/apt15e/apt/teaching/service/impl/TeachingServiceImpl.java index c35bdf2..fc7178a 100644 --- a/src/main/java/org/nl/apt15e/apt/teaching/service/impl/TeachingServiceImpl.java +++ b/src/main/java/org/nl/apt15e/apt/teaching/service/impl/TeachingServiceImpl.java @@ -416,7 +416,7 @@ public class TeachingServiceImpl implements TeachingService { } log.info("接收到本体重启信号,发送重定位指令"); Station station = stationService.getOne(new LambdaQueryWrapper<>(Station.class) - .eq(Station::getStation_code,"C") + .eq(Station::getStation_code,"A") ); this.relocate(station.getX(),station.getY(),station.getAngle()); response.put("code", 200); @@ -458,4 +458,34 @@ public class TeachingServiceImpl implements TeachingService { public Map getMappingStatus() { return teachingMappingStatus; } + + @Override + public Map sendAutoBack() { + JSONObject params = new JSONObject(); + String attach = "{"+ + "'sub_command':0,"+ + "'param':''"+ + "}"; + params.put("cmd", 2212); + params.put("attach", JSON.parseObject(attach)); + HttpResponse response = null; + try { + response = HTTPUtil.post(URLConstant.VEHICLE_IP_PORT,"/tool/rob/sendCMD", params); + } catch (Exception e) { + log.info("访问车体自动返回上一个点接口报错:{}",e.getMessage()); + throw new BadRequestException(LangProcess.msg("error_auto_back")); + } + // 检查响应状态码 + if (response.isOk() && response.body() != null) { + // 获取响应体内容 + JSONObject body = JSON.parseObject(response.body()); + log.info("自动返回上一个点:{}",body); + if ("200".equals(body.getString("code"))){ + body.put("message",LangProcess.msg("successful")); + return body; + } + } + log.info("自动返回上一个点失败"); + throw new BadRequestException(LangProcess.msg("error_auto_back")); + } } diff --git a/src/main/java/org/nl/apt15e/apt/vehicle/ProcessZip.java b/src/main/java/org/nl/apt15e/apt/vehicle/ProcessZip.java index 0a4a8a8..bc58b40 100644 --- a/src/main/java/org/nl/apt15e/apt/vehicle/ProcessZip.java +++ b/src/main/java/org/nl/apt15e/apt/vehicle/ProcessZip.java @@ -384,7 +384,7 @@ public class ProcessZip { private void savePngImage(BufferedImage image, String fileName) { try { - // 确保输出目录存在 + // 确保-输出目录存在 File outputDir = new File(properties.getPath().getPath()); if (!outputDir.exists()) { outputDir.mkdirs(); diff --git a/src/main/java/org/nl/apt15e/apt/vehicle/dao/VehicleInfo.java b/src/main/java/org/nl/apt15e/apt/vehicle/dao/VehicleInfo.java index 71fd2b1..3f7184d 100644 --- a/src/main/java/org/nl/apt15e/apt/vehicle/dao/VehicleInfo.java +++ b/src/main/java/org/nl/apt15e/apt/vehicle/dao/VehicleInfo.java @@ -114,4 +114,34 @@ public class VehicleInfo implements Serializable { */ private Integer anomalyLevel; + /** + * 打点后是否可以自动沿着路线开出来(0计算中 1失败 2成功) + */ + private String auto_back_enable; + + /** + * 起点终点是否重叠,结束建图 + */ + private String auto_loop_enable; + + /** + * 自动回退状态(0未处理 1成功 2失败) + */ + private String auto_back_finish; + + /** + * RCS调度连接状态 + */ + private boolean rcsConnected; + + /** + * 本体连接状态 + */ + private boolean vehicleConnected; + + /** + * 车辆载货状态 0未载货 1载货 + */ + private Integer vehiclePayloads; + } diff --git a/src/main/java/org/nl/apt15e/apt/vehicle/service/impl/VehicleInfoServiceImpl.java b/src/main/java/org/nl/apt15e/apt/vehicle/service/impl/VehicleInfoServiceImpl.java index af089ad..c61bf44 100644 --- a/src/main/java/org/nl/apt15e/apt/vehicle/service/impl/VehicleInfoServiceImpl.java +++ b/src/main/java/org/nl/apt15e/apt/vehicle/service/impl/VehicleInfoServiceImpl.java @@ -29,6 +29,7 @@ import org.nl.apt15e.apt.websocket.WebSocketVehicleServer; import org.nl.apt15e.common.BadRequestException; import org.nl.apt15e.config.language.LangProcess; import org.nl.apt15e.config.language.RcsLang; +import org.nl.apt15e.config.thread.ProtobufWebSocketHandler; import org.nl.apt15e.system.enums.ParamCodeConstant; import org.nl.apt15e.system.service.ParamService; import org.nl.apt15e.util.HTTPUtil; @@ -157,6 +158,7 @@ public class VehicleInfoServiceImpl implements VehicleInfoService { @Async("asynchronousTasks") public void queryVehicleInfo() { HttpResponse response = null; + vehicleInfo.setRcsConnected(false); try { response = HTTPUtil.get(URLConstant.RCS_IP_PORT,"/amr/onlineAmr",null,""); // 检查响应状态码 @@ -166,7 +168,10 @@ public class VehicleInfoServiceImpl implements VehicleInfoService { JSONArray jsonArray = JSONObject.parseObject(body).getJSONArray("data"); if (jsonArray.isEmpty()) { log.info("车辆数据为空"); + return; } + //调度连接状态 + vehicleInfo.setRcsConnected(true); for (int i = 0; i < jsonArray.size(); i++) { JSONObject data = jsonArray.getJSONObject(i); vehicleInfo.setId(data.getString("id")); @@ -210,6 +215,7 @@ public class VehicleInfoServiceImpl implements VehicleInfoService { public VehicleInfo queryVehicleInfoI18n(String lang,VehicleInfo vehicleInfo) { HttpResponse response = null; + vehicleInfo.setRcsConnected(false); try { response = HTTPUtil.get(URLConstant.RCS_IP_PORT,"/amr/onlineAmr",null,RcsLang.getRcsLanguage(lang)); // 检查响应状态码 @@ -219,7 +225,9 @@ public class VehicleInfoServiceImpl implements VehicleInfoService { JSONArray jsonArray = JSONObject.parseObject(body).getJSONArray("data"); if (jsonArray.isEmpty()) { log.info("车辆数据为空"); + return vehicleInfo; } + vehicleInfo.setRcsConnected(true); for (int i = 0; i < jsonArray.size(); i++) { JSONObject data = jsonArray.getJSONObject(i); vehicleInfo.setId(data.getString("id")); @@ -271,7 +279,9 @@ public class VehicleInfoServiceImpl implements VehicleInfoService { webSocketSet.forEach(c -> { Map vehicleInfoMap = new HashMap<>(); VehicleInfo webVehicleInfo = vehicleInfo; - webVehicleInfo = this.queryVehicleInfoI18n(c.getLang(),webVehicleInfo); + if (!"zh".equals(c.getLang())){ + webVehicleInfo = this.queryVehicleInfoI18n(c.getLang(),webVehicleInfo); + } vehicleInfoMap.put("data", webVehicleInfo); c.sendDataToClient(vehicleInfoMap); }); diff --git a/src/main/java/org/nl/apt15e/config/thread/ProtobufWebSocketHandler.java b/src/main/java/org/nl/apt15e/config/thread/ProtobufWebSocketHandler.java index c3af591..b6804f9 100644 --- a/src/main/java/org/nl/apt15e/config/thread/ProtobufWebSocketHandler.java +++ b/src/main/java/org/nl/apt15e/config/thread/ProtobufWebSocketHandler.java @@ -54,6 +54,14 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler { String mapping_return = data_pool.getString("mapping_return"); String mapping_percent = data_pool.getString("mapping_percent"); + //打点后是否可以自动沿着路线开出来(0计算中 1失败 2成功) + VehicleInfoServiceImpl.vehicleInfo.setAuto_back_enable(data_pool.getString("auto_back_enable")); + //起点终点是否重叠,结束建图 + VehicleInfoServiceImpl.vehicleInfo.setAuto_loop_enable(data_pool.getString("auto_loop_enable")); + // 自动回退状态标识 0 不处理 1 自动回退成功 2 自动回退失败 + VehicleInfoServiceImpl.vehicleInfo.setAuto_back_finish(data_pool.getString("auto_back_finish")); + // 车辆载货状态 0未载货 1载货 + VehicleInfoServiceImpl.vehicleInfo.setVehiclePayloads(robotBase.getPayloads()); String ready = data_pool.getString("ready"); TeachingServiceImpl.teachingMappingStatus.put("mapping_return", mapping_return); TeachingServiceImpl.teachingMappingStatus.put("mapping_percent", mapping_percent); @@ -121,6 +129,7 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler { public void afterConnectionEstablished(WebSocketSession session) { log.info("Connected to WebSocket server: {}", session.getUri()); isConnected = true; + VehicleInfoServiceImpl.vehicleInfo.setVehicleConnected(true); currentSession = session; } @@ -128,6 +137,7 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler { public void afterConnectionClosed(WebSocketSession session, CloseStatus status) { log.info("Connection closed: {}", status); isConnected = false; + VehicleInfoServiceImpl.vehicleInfo.setVehicleConnected(false); currentSession = null; } @@ -135,6 +145,7 @@ public class ProtobufWebSocketHandler extends BinaryWebSocketHandler { public void handleTransportError(WebSocketSession session, Throwable exception) { log.info("传输错误: {}", exception.getMessage()); isConnected = false; + VehicleInfoServiceImpl.vehicleInfo.setVehicleConnected(false); currentSession = null; } diff --git a/src/main/resources/language/error/error.properties b/src/main/resources/language/error/error.properties index 528ebdf..ac7746d 100644 --- a/src/main/resources/language/error/error.properties +++ b/src/main/resources/language/error/error.properties @@ -23,6 +23,7 @@ error_synchronized_map = 同步地图失败 error_relocate = 重定位指令下发失败 error_restart = 车体程序重启失败 error_abandon_mapping = 放弃建图失败 +error_auto_back = 自动返回上一个点失败 error_restart_system = 重启系统失败 error_initializing_system = 初始化底层系统失败 error_set_forkLegs= 操作叉腿避障失败 \ No newline at end of file diff --git a/src/main/resources/language/error/error_en_US.properties b/src/main/resources/language/error/error_en_US.properties index daf4eec..96d4e2e 100644 --- a/src/main/resources/language/error/error_en_US.properties +++ b/src/main/resources/language/error/error_en_US.properties @@ -22,6 +22,7 @@ error_synchronized_map = Syncing maps failed error_relocate = The relocation instruction failed to be issued error_restart = The body program restarts failed error_abandon_mapping = Abandoned mapping failed +error_auto_back = Automatically returning to the previous point failed error_restart_system = Rebooting the system failed error_initializing_system = Initializing the underlying system failed error_set_forkLegs= The operation of the fork leg to avoid obstacles failed \ No newline at end of file diff --git a/src/main/resources/language/error/error_zh_CN.properties b/src/main/resources/language/error/error_zh_CN.properties index ff17451..438c3c3 100644 --- a/src/main/resources/language/error/error_zh_CN.properties +++ b/src/main/resources/language/error/error_zh_CN.properties @@ -22,6 +22,7 @@ error_synchronized_map = 同步地图失败 error_relocate = 重定位指令下发失败 error_restart = 车体程序重启失败 error_abandon_mapping = 放弃建图失败 +error_auto_back = 自动返回上一个点失败 error_restart_system = 重启系统失败 error_initializing_system = 初始化底层系统失败 error_set_forkLegs= 操作叉腿避障失败 \ No newline at end of file diff --git a/src/main/resources/language/task/task.properties b/src/main/resources/language/task/task.properties index a726baa..2b35d59 100644 --- a/src/main/resources/language/task/task.properties +++ b/src/main/resources/language/task/task.properties @@ -1,4 +1,5 @@ task_Id_isNull=任务不存在!【{0}】 task_Is_exist=当前有正在执行中的任务! task_Is_not_exist=当前没有任务在执行中! -not_return_point = 没有返回点! \ No newline at end of file +not_return_point = 没有返回点! +task_cannot_be_enforced = 任务链操作类型无法执行,请重新选择 \ No newline at end of file diff --git a/src/main/resources/language/task/task_en_US.properties b/src/main/resources/language/task/task_en_US.properties index 701769c..81dc72b 100644 --- a/src/main/resources/language/task/task_en_US.properties +++ b/src/main/resources/language/task/task_en_US.properties @@ -1,4 +1,5 @@ task_Id_isNull=The task with the task code of {0} was not found task_Is_exist=There are tasks in progress! task_Is_not_exist=No tasks are currently in progress! -not_return_point = There is no return point! \ No newline at end of file +not_return_point = There is no return point! +task_cannot_be_enforced = The task chain operation type cannot be executed, please select it again \ No newline at end of file diff --git a/src/main/resources/language/task/task_zh_CN.properties b/src/main/resources/language/task/task_zh_CN.properties index 86c0ed2..0c367b8 100644 --- a/src/main/resources/language/task/task_zh_CN.properties +++ b/src/main/resources/language/task/task_zh_CN.properties @@ -1,4 +1,5 @@ task_Id_isNull=未找到任务编码为{0}的任务 task_Is_exist=当前有正在执行中的任务! task_Is_not_exist=当前没有任务在执行中! -not_return_point = 没有返回点! \ No newline at end of file +not_return_point = 没有返回点! +task_cannot_be_enforced = 任务链操作类型无法执行,请重新选择 \ No newline at end of file