feat(robot): 添加机器人地图名称字段并支持任务类型查询

- 在 InspectionRobotMapper.xml 中添加 robotMapName 字段映射
- 修改数据库查询语句以包含 map_source_name 作为 robot_map_name
- 在 InspectionTaskInstanceMapper.xml 中添加任务类型查询条件
- 为 InspectionTaskInstanceQuery DTO 添加 taskType 属性
- 在 TeFlowiseController 中添加流程控制相关依赖注入
- 实现任务实例执行和终止功能,包括运行参数配置和流程控制
- 添加任务实例 ID 列表管理以支持任务启停操作
This commit is contained in:
lixiaolong 2026-06-15 16:46:04 +08:00
parent 33507dc475
commit fdd6019a77
4 changed files with 57 additions and 3 deletions

View File

@ -1,14 +1,22 @@
package com.cmvr.web.controller.test; package com.cmvr.web.controller.test;
import com.alibaba.fastjson2.JSONObject;
import com.cmvr.common.core.controller.BaseController; import com.cmvr.common.core.controller.BaseController;
import com.cmvr.common.core.domain.AjaxResult; import com.cmvr.common.core.domain.AjaxResult;
import com.cmvr.test.flow.control.FlowControlService;
import com.cmvr.test.flow.runtime.engine.FlowTaskRuntimeService;
import com.cmvr.test.flow.runtime.operator.edge.ti.TiTouchOperateService;
import com.cmvr.test.model.vo.FlowiseActionRequestVO; import com.cmvr.test.model.vo.FlowiseActionRequestVO;
import com.cmvr.test.model.vo.FlowiseChatRequestVO; import com.cmvr.test.model.vo.FlowiseChatRequestVO;
import com.cmvr.test.model.vo.FlowiseStartRequestVO; import com.cmvr.test.model.vo.FlowiseStartRequestVO;
import com.cmvr.test.model.vo.TeTaskExecuteNormalVO;
import com.cmvr.test.service.FlowActionExecutorService;
import com.cmvr.test.service.FlowiseActionService; import com.cmvr.test.service.FlowiseActionService;
import com.google.gson.JsonObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -16,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "测试--flowise服务") @Api(tags = "测试--flowise服务")
@RestController @RestController
@RequestMapping("/flowise") @RequestMapping("/flowise")
@ -23,11 +34,37 @@ import org.springframework.web.bind.annotation.RestController;
public class TeFlowiseController extends BaseController { public class TeFlowiseController extends BaseController {
private final FlowiseActionService flowiseActionService; private final FlowiseActionService flowiseActionService;
private final FlowTaskRuntimeService flowTaskRuntimeService;
private final FlowControlService flowControlService;
private final FlowActionExecutorService flowActionExecutorService;
private final TiTouchOperateService tiTouchOperateService;
private final List<String> taskInstIdList = new ArrayList<>();
@ApiOperation("调用flowise") @ApiOperation("调用flowise")
@PostMapping("/start") @PostMapping("/start")
public AjaxResult start(@RequestBody FlowiseStartRequestVO request) { public AjaxResult start(@RequestBody FlowiseStartRequestVO request) {
return AjaxResult.ok(flowiseActionService.start(request)); TeTaskExecuteNormalVO taskExecuteNormalVO = new TeTaskExecuteNormalVO();
JSONObject runParams = new JSONObject();
runParams.put("5bb26d52e1861c6936f3c3149eaf17e8", new JsonObject());
runParams.getJSONObject("5bb26d52e1861c6936f3c3149eaf17e8").put("test", request.getQuestion());
taskExecuteNormalVO.builder()
.taskId("b6ab5ffff783d9b25d0dc34f13be222d")
.terminalId("18749f257ff902643bc1ea6ab33f8b04")
.runParams(JSONObject.from(runParams));
if (!taskInstIdList.isEmpty()) {
try {
taskInstIdList.forEach(flowControlService::stop);
} catch (Exception e) {
// 忽略
}
taskInstIdList.clear();
}
String insId = flowTaskRuntimeService.executeTask(taskExecuteNormalVO);
taskInstIdList.add(insId);
return AjaxResult.success();
// return AjaxResult.ok(flowiseActionService.start(request));
} }
@ApiOperation("根据chatId查询执行结果") @ApiOperation("根据chatId查询执行结果")
@ -39,7 +76,16 @@ public class TeFlowiseController extends BaseController {
@ApiOperation("终止flowise") @ApiOperation("终止flowise")
@GetMapping("/abort") @GetMapping("/abort")
public AjaxResult abort() { public AjaxResult abort() {
return AjaxResult.ok(flowiseActionService.abort()); if (!taskInstIdList.isEmpty()) {
try {
taskInstIdList.forEach(flowControlService::stop);
} catch (Exception e) {
// 忽略
}
taskInstIdList.clear();
}
return AjaxResult.success();
// return AjaxResult.ok(flowiseActionService.abort());
} }
@ApiOperation("执行指令") @ApiOperation("执行指令")

View File

@ -25,4 +25,7 @@ public class InspectionTaskInstanceQuery {
@ApiModelProperty("多状态集合in查询用0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停") @ApiModelProperty("多状态集合in查询用0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停")
private List<Integer> statusList; private List<Integer> statusList;
@ApiModelProperty("任务类型")
private String taskType;
} }

View File

@ -39,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="port" column="port" /> <result property="port" column="port" />
<result property="currentMapId" column="current_map_id" /> <result property="currentMapId" column="current_map_id" />
<result property="currentMapName" column="current_map_name" /> <result property="currentMapName" column="current_map_name" />
<result property="robotMapName" column="robot_map_name" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="batteryLevel" column="battery_level" /> <result property="batteryLevel" column="battery_level" />
<result property="currentPosition" column="current_position" /> <result property="currentPosition" column="current_position" />
@ -150,7 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
r.ip_address, r.port, r.current_map_id, r.ip_address, r.port, r.current_map_id,
m.map_name as current_map_name, m.map_name as current_map_name,
r.status, r.battery_level, r.current_position, r.terminal_id, r.status, r.battery_level, r.current_position, r.terminal_id,
u1.nick_name as create_by_name, u2.nick_name as update_by_name u1.nick_name as create_by_name, u2.nick_name as update_by_name, m.map_source_name as robot_map_name
from inspection_robot r from inspection_robot r
left join inspection_map m on r.current_map_id = m.id left join inspection_map m on r.current_map_id = m.id
left join sys_user u1 on r.create_by = u1.user_name <!-- 创建人关联用户 --> left join sys_user u1 on r.create_by = u1.user_name <!-- 创建人关联用户 -->

View File

@ -157,6 +157,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="(statusList == null or statusList.size() == 0) and status != null"> <if test="(statusList == null or statusList.size() == 0) and status != null">
and ti.status = #{status} and ti.status = #{status}
</if> </if>
<!-- 任务类型 -->
<if test="taskType != null and taskType != ''">
and t.task_type = #{taskType}
</if>
</where> </where>
order by ti.create_time desc order by ti.create_time desc
</select> </select>