import request from "@/utils/request"; import type { ApiResult, PageParam, PageResult } from "@/types/api"; /** * 升降柱状态,对应后端 com.haizhiyustc.ros.dto.RosLiftDTO */ export interface RosLift { /** 升降柱接口是否调用成功 */ liftSuccess?: boolean; /** 升降柱接口返回码 */ liftCode?: number; /** 升降柱接口返回消息 */ liftMessage?: string; /** 升降柱设备状态码 */ liftDeviceStatusCode?: string; /** 升降柱设备状态描述 */ liftDeviceStatusDescription?: string; /** 升降柱错误码 */ liftErrorCode?: string; /** 升降柱错误描述 */ liftErrorDescription?: string; /** 升降柱高度 */ liftHeight?: number; [key: string]: unknown; } /** * ROS 小车,对应后端 com.haizhiyustc.ros.entity.RosCar * status: 0空闲 1巡检 2离线 3充电中 */ export interface RosCar { /** 主键id */ id?: string; /** 设备唯一标识 */ deviceKey?: string; /** 设备编号 */ deviceNo?: string; /** 小车信号 */ signal?: string; /** 小车名称 */ name?: string; /** 电量百分比 */ batteryLevel?: number; /** 电压 */ voltage?: number; /** 当前状态:0空闲 1巡检 2离线 3充电中 */ status?: number; /** 所属项目名称 */ projectName?: string; /** 当前 X 坐标 */ poseX?: number; /** 当前 Y 坐标 */ poseY?: number; /** 当前朝向 */ poseYaw?: number; /** 相机 WebRTC 地址 */ cameraWebrtcUrl?: string; /** 相机编号 */ cameraNo?: string; /** 红外相机 WebRTC 地址 */ cameraWebrtcUrl2?: string; /** 红外相机编号 */ cameraNo2?: string; /** 云台预制点 */ panTiltPreset?: number; /** 地图 PGM 文件 URL 地址 */ mapPgmUrl?: string; /** 地图 YAML 文件 URL 地址 */ mapYamlUrl?: string; /** 升降柱高度 */ liftHeight?: number; /** 升降柱状态 */ lift?: RosLift; /** 创建时间 */ createTime?: string; /** 更新时间 */ updateTime?: string; [key: string]: unknown; } /** * 巡检记录,对应后端 com.haizhiyustc.ros.entity.RosInspectionRecord * status: 0执行中 1执行完成 2执行失败 3已停止 */ export interface RosInspectionRecord { /** 主键id */ id?: string; /** 所属巡检任务id */ taskId?: string; /** 巡检设备id */ carId?: string; /** 巡检说明快照 */ remark?: string; /** 全局限速快照 */ maxVelocity?: number; /** 插值密度快照(米/点) */ interpolationDensity?: number; /** 巡检地图名快照 */ mapName?: string; /** 巡检轮数快照 */ roundCount?: number; /** 当前执行轮次,从1开始 */ currentRoundIndex?: number; /** 开始时间 */ startTime?: string; /** 结束时间 */ endTime?: string; /** 执行状态:0执行中 1执行完成 2执行失败 3已停止 */ status?: number; /** 失败原因 */ failReason?: string; /** 当前执行节点id */ currentNodeId?: string; /** 当前执行的动作id */ currentActionId?: string; /** 开始执行时的小车电量 */ startBatteryLevel?: number; /** 执行结束后小车电量 */ endBatteryLevel?: number; /** 开始执行时的小车位姿x */ startPoseX?: number; /** 开始执行时的小车位姿y */ startPoseY?: number; /** 执行结束时的小车位姿x */ endPoseX?: number; /** 执行结束时的小车位姿y */ endPoseY?: number; /** 总动作数 */ totalActionCount?: number; /** 当前节点序号 */ currentNodeIndex?: number; /** 创建时间 */ createTime?: string; /** 更新时间 */ updateTime?: string; [key: string]: unknown; } /** * 巡检任务节点模板,对应后端 com.haizhiyustc.ros.dto.RosInspectionTaskNodeDTO * type: via_point 途经点 / action_point 任务点 */ export interface RosInspectionTaskNodeDTO { /** 节点类型:via_point 途经点 / action_point 任务点 */ type?: string; /** 位姿x */ poseX?: number; /** 位姿y */ poseY?: number; /** 节点顺序 */ nodeIndex?: number; [key: string]: unknown; } /** * 巡检任务轮次模板,对应后端 com.haizhiyustc.ros.dto.RosInspectionTaskRoundDTO * direction: forward 正走 / backward 倒走 */ export interface RosInspectionTaskRoundDTO { /** 轮次,从1开始 */ roundIndex?: number; /** 本轮行走方向:forward 正走 / backward 倒走 */ direction?: string; [key: string]: unknown; } /** * 巡检任务动作模板,对应后端 RosInspectionTaskDetailDTO.RosInspectionActionDTO * command: 0升降柱 1云台旋转 2抓拍识别 */ export interface RosInspectionActionDTO { /** 节点顺序 */ nodeIndex?: number; /** 轮次 */ roundIndex?: number; /** 动作类型:0升降柱 1云台旋转 2抓拍识别 */ command?: number; /** 动作参数 */ params?: Record; [key: string]: unknown; } /** * 巡检任务模板详情,对应后端 com.haizhiyustc.ros.dto.RosInspectionTaskDetailDTO */ export interface RosInspectionTaskDetailDTO { /** 主键id */ id?: string; /** 巡检设备id */ carId?: string; /** 巡检说明 */ remark?: string; /** 巡检状态:0待执行 1执行中 2已停止 */ status?: number; /** 全局限速 */ maxVelocity?: number; /** ROS2端生成平滑曲线时的插值密度(米/点) */ interpolationDensity?: number; /** 巡检地图名 */ mapName?: string; /** 巡检轮数 */ roundCount?: number; /** 巡检节点模板列表 */ nodes?: RosInspectionTaskNodeDTO[]; /** 巡检轮次模板列表 */ rounds?: RosInspectionTaskRoundDTO[]; /** 巡检动作模板列表 */ actions?: RosInspectionActionDTO[]; [key: string]: unknown; } /** * 巡检任务下发结果,对应后端 com.haizhiyustc.ros.dto.RosDispatchResultDTO */ export interface RosDispatchResultDTO { /** 巡检记录id */ recordId?: string; /** 小车是否接受本次下发 */ accepted?: boolean; /** 下发结果说明 */ message?: string; [key: string]: unknown; } /** * 小车分页查询条件,对应后端 com.haizhiyustc.ros.entity.RosCar 的字段过滤 */ export type RosCarQuery = Partial & { /** 关键字 */ keyword?: string; }; // 小车分页列表 export function getRosCarList(data: PageParam) { return request>>({ url: "/admin/rosCar/list", data, }); } // 保存巡检任务模板 export function saveRosInspectionTask(data: unknown) { return request>({ url: "/admin/rosInspectionTask/save", data, }); } // 巡检任务模板详情 export function getRosInspectionTaskDetail(cardId: string) { return request>({ url: "/admin/rosInspectionTask/detail", params: { cardId }, }); } // 查询小车当前巡检状态 export function getCurrentRosInspection(carId: string) { return request>({ url: "/admin/rosCar/currentInspection", params: { carId }, }); } // 下发巡检任务 export function dispatchRosInspectionTask(taskId: string) { return request>({ url: "/admin/rosInspectionTask/dispatch", params: { taskId }, }); } // 停止已下发的巡检任务 export function stopDispatchRosInspectionTask(taskId: string) { return request>({ url: "/admin/rosInspectionTask/stopDispatch", params: { taskId }, }); } // 上传文件并返回后端保存后的访问地址 export function uploadFile(file: File) { const data = new FormData(); data.append("file", file); return request>({ url: "/admin/file/upload", data, }); } // 更新小车地图文件地址 export function updateRosCarMapUrls(data: { id: string; mapPgmUrl?: string; mapYamlUrl?: string; }) { return request>({ url: "/admin/rosCar/updateMapUrls", data, }); }