From 8e4c122f9a633b97bc50681ca1c2b014f151928a Mon Sep 17 00:00:00 2001 From: lixiaolong <702156524@qq.com> Date: Tue, 2 Jun 2026 15:01:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(inspection):=20=E6=B7=BB=E5=8A=A0=E5=B7=A1?= =?UTF-8?q?=E6=A3=80=E6=A8=A1=E5=9D=97=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=A1=B9=E7=9B=AE=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加巡检告警、地图、机器人、任务、点位等实体类和服务接口 - 创建巡检模块数据库表结构,包含机器人、地图、任务等核心表 - 实现巡检告警控制器,提供增删改查和导出功能 - 配置巡检告警数据映射和查询视图 - 更新全局应用配置中的MinIO服务地址 - 在启动类中添加MyBatis扫描配置 - 重构设备配置实体类,移除冗余字段并优化注解配置 --- cmvr-iot-admin/pom.xml | 6 + .../java/com/cmvr/CmvrIotApplication.java | 2 + .../inspection/InspectionAlarmController.java | 114 ++++++++ .../inspection/InspectionMapController.java | 114 ++++++++ .../inspection/InspectionRobotController.java | 115 ++++++++ .../inspection/InspectionTaskController.java | 151 ++++++++++ .../InspectionTaskInstanceController.java | 162 ++++++++++ .../InspectionWaypointController.java | 114 ++++++++ .../web/controller/test/TeFlowController.java | 4 +- .../src/main/resources/application-test.yml | 2 +- .../cmvr/device/domain/DeDeviceProfile.java | 11 +- .../com/cmvr/device/domain/vo/ProfileVo.java | 7 +- cmvr-iot-inspection/pom.xml | 33 +++ .../inspection/domain/InspectionAlarm.java | 102 +++++++ .../cmvr/inspection/domain/InspectionMap.java | 64 ++++ .../inspection/domain/InspectionRobot.java | 84 ++++++ .../inspection/domain/InspectionTask.java | 50 ++++ .../domain/InspectionTaskInstance.java | 55 ++++ .../domain/InspectionTaskWaypoint.java | 26 ++ .../inspection/domain/InspectionWaypoint.java | 54 ++++ .../domain/vo/InspectionAlarmVo.java | 127 ++++++++ .../inspection/domain/vo/InspectionMapVo.java | 76 +++++ .../domain/vo/InspectionRobotVo.java | 96 ++++++ .../domain/vo/InspectionTaskInstanceVo.java | 93 ++++++ .../domain/vo/InspectionTaskVo.java | 56 ++++ .../domain/vo/InspectionWaypointVo.java | 75 +++++ .../cmvr/inspection/enums/TaskStatusEnum.java | 28 ++ .../mapper/InspectionAlarmMapper.java | 55 ++++ .../mapper/InspectionMapMapper.java | 54 ++++ .../mapper/InspectionRobotMapper.java | 55 ++++ .../mapper/InspectionTaskInstanceMapper.java | 63 ++++ .../mapper/InspectionTaskMapper.java | 55 ++++ .../mapper/InspectionTaskWaypointMapper.java | 53 ++++ .../mapper/InspectionWaypointMapper.java | 55 ++++ .../service/IInspectionAlarmService.java | 57 ++++ .../service/IInspectionMapService.java | 57 ++++ .../service/IInspectionRobotService.java | 57 ++++ .../IInspectionTaskInstanceService.java | 88 ++++++ .../service/IInspectionTaskService.java | 81 +++++ .../service/IInspectionWaypointService.java | 57 ++++ .../impl/InspectionAlarmServiceImpl.java | 96 ++++++ .../impl/InspectionMapServiceImpl.java | 95 ++++++ .../impl/InspectionRobotServiceImpl.java | 96 ++++++ .../InspectionTaskInstanceServiceImpl.java | 194 ++++++++++++ .../impl/InspectionTaskServiceImpl.java | 185 ++++++++++++ .../impl/InspectionWaypointServiceImpl.java | 119 ++++++++ .../inspection/InspectionAlarmMapper.xml | 197 +++++++++++++ .../mapper/inspection/InspectionMapMapper.xml | 133 +++++++++ .../inspection/InspectionRobotMapper.xml | 163 +++++++++++ .../InspectionTaskInstanceMapper.xml | 151 ++++++++++ .../inspection/InspectionTaskMapper.xml | 116 ++++++++ .../InspectionTaskWaypointMapper.xml | 54 ++++ .../inspection/InspectionWaypointMapper.xml | 131 +++++++++ .../test/model/domain/TeDetectionItem.java | 6 +- .../test/model/domain/TeTaskConfigInfo.java | 6 +- .../cmvr/test/model/vo/TeTaskOrchestraVO.java | 6 +- .../service/ITeTaskOrchestrationService.java | 17 +- .../impl/TeTaskConfigInfoServiceImpl.java | 8 + .../impl/TeTaskOrchestrationServiceImpl.java | 25 +- .../ti/model/domain/TiVehicleFunction.java | 5 +- pom.xml | 8 + sql/inspection_module.sql | 143 +++++++++ 智能巡检模块-创建说明.md | 276 ++++++++++++++++++ 63 files changed, 4804 insertions(+), 34 deletions(-) create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionAlarmController.java create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionMapController.java create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionRobotController.java create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskController.java create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskInstanceController.java create mode 100644 cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionWaypointController.java create mode 100644 cmvr-iot-inspection/pom.xml create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionAlarm.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionMap.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionRobot.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskWaypoint.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionWaypoint.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionAlarmVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionMapVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionRobotVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionWaypointVo.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/enums/TaskStatusEnum.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionAlarmMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionMapMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionRobotMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskInstanceMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskWaypointMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionWaypointMapper.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionAlarmService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionMapService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionRobotService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskInstanceService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionWaypointService.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionAlarmServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionMapServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionRobotServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionWaypointServiceImpl.java create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionAlarmMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionMapMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionRobotMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskWaypointMapper.xml create mode 100644 cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionWaypointMapper.xml create mode 100644 sql/inspection_module.sql create mode 100644 智能巡检模块-创建说明.md diff --git a/cmvr-iot-admin/pom.xml b/cmvr-iot-admin/pom.xml index 9b66bc1..17b0b2d 100644 --- a/cmvr-iot-admin/pom.xml +++ b/cmvr-iot-admin/pom.xml @@ -77,6 +77,12 @@ com.cmvr cmvr-iot-evaluation + + + + com.cmvr + cmvr-iot-inspection + dev diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java index 454973e..8cd2a20 100644 --- a/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java +++ b/cmvr-iot-admin/src/main/java/com/cmvr/CmvrIotApplication.java @@ -1,5 +1,6 @@ package com.cmvr; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -11,6 +12,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; * @author cmvr-iot */ @EnableScheduling +@MapperScan("com.cmvr.**.mapper") @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) public class CmvrIotApplication { diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionAlarmController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionAlarmController.java new file mode 100644 index 0000000..37ec331 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionAlarmController.java @@ -0,0 +1,114 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionAlarm; +import com.cmvr.inspection.domain.vo.InspectionAlarmVo; +import com.cmvr.inspection.service.IInspectionAlarmService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检告警Controller + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@RestController +@RequestMapping("/inspection/alarm") +@Api(tags = "智能巡检--告警管理") +public class InspectionAlarmController extends BaseController +{ + @Autowired + private IInspectionAlarmService inspectionAlarmService; + + /** + * 查询巡检告警列表 + */ + @ApiOperation("查询巡检告警列表") + @PreAuthorize("@ss.hasPermi('inspection:alarm:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionAlarm inspectionAlarm) + { + startPage(); + List list = inspectionAlarmService.selectInspectionAlarmList(inspectionAlarm); + return getDataTable(list); + } + + /** + * 导出巡检告警列表 + */ + @ApiOperation("导出巡检告警列表") + @PreAuthorize("@ss.hasPermi('inspection:alarm:export')") + @Log(title = "巡检告警", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionAlarm inspectionAlarm) + { + List list = inspectionAlarmService.selectInspectionAlarmList(inspectionAlarm); + ExcelUtil util = new ExcelUtil<>(InspectionAlarmVo.class); + util.exportExcel(response, list, "巡检告警数据"); + } + + /** + * 获取巡检告警详细信息 + */ + @ApiOperation("获取巡检告警详细信息") + @PreAuthorize("@ss.hasPermi('inspection:alarm:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionAlarmService.selectInspectionAlarmById(id)); + } + + /** + * 新增巡检告警 + */ + @ApiOperation("新增巡检告警") + @PreAuthorize("@ss.hasPermi('inspection:alarm:add')") + @Log(title = "巡检告警", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionAlarm inspectionAlarm) + { + return toAjax(inspectionAlarmService.insertInspectionAlarm(inspectionAlarm)); + } + + /** + * 修改巡检告警 + */ + @ApiOperation("修改巡检告警") + @PreAuthorize("@ss.hasPermi('inspection:alarm:edit')") + @Log(title = "巡检告警", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionAlarm inspectionAlarm) + { + return toAjax(inspectionAlarmService.updateInspectionAlarm(inspectionAlarm)); + } + + /** + * 删除巡检告警 + */ + @ApiOperation("删除巡检告警") + @PreAuthorize("@ss.hasPermi('inspection:alarm:remove')") + @Log(title = "巡检告警", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionAlarmService.deleteInspectionAlarmByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionMapController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionMapController.java new file mode 100644 index 0000000..8652a24 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionMapController.java @@ -0,0 +1,114 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionMap; +import com.cmvr.inspection.domain.vo.InspectionMapVo; +import com.cmvr.inspection.service.IInspectionMapService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检地图Controller + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@RestController +@RequestMapping("/inspection/map") +@Api(tags = "智能巡检--地图管理") +public class InspectionMapController extends BaseController +{ + @Autowired + private IInspectionMapService inspectionMapService; + + /** + * 查询巡检地图列表 + */ + @ApiOperation("查询巡检地图列表") + @PreAuthorize("@ss.hasPermi('inspection:map:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionMap inspectionMap) + { + startPage(); + List list = inspectionMapService.selectInspectionMapList(inspectionMap); + return getDataTable(list); + } + + /** + * 导出巡检地图列表 + */ + @ApiOperation("导出巡检地图列表") + @PreAuthorize("@ss.hasPermi('inspection:map:export')") + @Log(title = "巡检地图", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionMap inspectionMap) + { + List list = inspectionMapService.selectInspectionMapList(inspectionMap); + ExcelUtil util = new ExcelUtil<>(InspectionMapVo.class); + util.exportExcel(response, list, "巡检地图数据"); + } + + /** + * 获取巡检地图详细信息 + */ + @ApiOperation("获取巡检地图详细信息") + @PreAuthorize("@ss.hasPermi('inspection:map:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionMapService.selectInspectionMapById(id)); + } + + /** + * 新增巡检地图 + */ + @ApiOperation("新增巡检地图") + @PreAuthorize("@ss.hasPermi('inspection:map:add')") + @Log(title = "巡检地图", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionMap inspectionMap) + { + return toAjax(inspectionMapService.insertInspectionMap(inspectionMap)); + } + + /** + * 修改巡检地图 + */ + @ApiOperation("修改巡检地图") + @PreAuthorize("@ss.hasPermi('inspection:map:edit')") + @Log(title = "巡检地图", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionMap inspectionMap) + { + return toAjax(inspectionMapService.updateInspectionMap(inspectionMap)); + } + + /** + * 删除巡检地图 + */ + @ApiOperation("删除巡检地图") + @PreAuthorize("@ss.hasPermi('inspection:map:remove')") + @Log(title = "巡检地图", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionMapService.deleteInspectionMapByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionRobotController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionRobotController.java new file mode 100644 index 0000000..9f9717b --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionRobotController.java @@ -0,0 +1,115 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.cmvr.inspection.domain.vo.InspectionRobotVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionRobot; +import com.cmvr.inspection.service.IInspectionRobotService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检机器人Controller + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@RestController +@RequestMapping("/inspection/robot") +@Api(tags = "智能巡检--机器人管理") +public class InspectionRobotController extends BaseController +{ + @Autowired + private IInspectionRobotService inspectionRobotService; + + /** + * 查询巡检机器人列表 + */ + @ApiOperation("查询巡检机器人列表") + @PreAuthorize("@ss.hasPermi('inspection:robot:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionRobot inspectionRobot) + { + startPage(); + List list = inspectionRobotService.selectInspectionRobotList(inspectionRobot); + return getDataTable(list); + } + + /** + * 导出巡检机器人列表 + */ + @ApiOperation("导出巡检机器人列表") + @PreAuthorize("@ss.hasPermi('inspection:robot:export')") + @Log(title = "巡检机器人", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionRobot inspectionRobot) + { + List list = inspectionRobotService.selectInspectionRobotList(inspectionRobot); + ExcelUtil util = new ExcelUtil<>(InspectionRobotVo.class); + util.exportExcel(response, list, "巡检机器人数据"); + } + + /** + * 获取巡检机器人详细信息 + */ + @ApiOperation("获取巡检机器人详细信息") + @PreAuthorize("@ss.hasPermi('inspection:robot:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionRobotService.selectInspectionRobotById(id)); + } + + /** + * 新增巡检机器人 + */ + @ApiOperation("新增巡检机器人") + @PreAuthorize("@ss.hasPermi('inspection:robot:add')") + @Log(title = "巡检机器人", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionRobot inspectionRobot) + { + return toAjax(inspectionRobotService.insertInspectionRobot(inspectionRobot)); + } + + /** + * 修改巡检机器人 + */ + @ApiOperation("修改巡检机器人") + @PreAuthorize("@ss.hasPermi('inspection:robot:edit')") + @Log(title = "巡检机器人", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionRobot inspectionRobot) + { + return toAjax(inspectionRobotService.updateInspectionRobot(inspectionRobot)); + } + + /** + * 删除巡检机器人 + */ + @ApiOperation("删除巡检机器人") + @PreAuthorize("@ss.hasPermi('inspection:robot:remove')") + @Log(title = "巡检机器人", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionRobotService.deleteInspectionRobotByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskController.java new file mode 100644 index 0000000..d5ffb7a --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskController.java @@ -0,0 +1,151 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionTask; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionTaskVo; +import com.cmvr.inspection.service.IInspectionTaskService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检任务Controller + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@RestController +@RequestMapping("/inspection/task") +@Api(tags = "智能巡检--任务管理") +public class InspectionTaskController extends BaseController +{ + @Autowired + private IInspectionTaskService inspectionTaskService; + + /** + * 查询巡检任务列表 + */ + @ApiOperation("查询巡检任务列表") + @PreAuthorize("@ss.hasPermi('inspection:task:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionTask inspectionTask) + { + startPage(); + List list = inspectionTaskService.selectInspectionTaskList(inspectionTask); + return getDataTable(list); + } + + /** + * 导出巡检任务列表 + */ + @ApiOperation("导出巡检任务列表") + @PreAuthorize("@ss.hasPermi('inspection:task:export')") + @Log(title = "巡检任务", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionTask inspectionTask) + { + List list = inspectionTaskService.selectInspectionTaskList(inspectionTask); + ExcelUtil util = new ExcelUtil<>(InspectionTaskVo.class); + util.exportExcel(response, list, "巡检任务数据"); + } + + /** + * 获取巡检任务详细信息 + */ + @ApiOperation("获取巡检任务详细信息") + @PreAuthorize("@ss.hasPermi('inspection:task:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionTaskService.selectInspectionTaskById(id)); + } + + /** + * 新增巡检任务 + */ + @ApiOperation("新增巡检任务") + @PreAuthorize("@ss.hasPermi('inspection:task:add')") + @Log(title = "巡检任务", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionTask inspectionTask) + { + return toAjax(inspectionTaskService.insertInspectionTask(inspectionTask)); + } + + /** + * 修改巡检任务 + */ + @ApiOperation("修改巡检任务") + @PreAuthorize("@ss.hasPermi('inspection:task:edit')") + @Log(title = "巡检任务", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionTask inspectionTask) + { + return toAjax(inspectionTaskService.updateInspectionTask(inspectionTask)); + } + + /** + * 删除巡检任务 + */ + @ApiOperation("删除巡检任务") + @PreAuthorize("@ss.hasPermi('inspection:task:remove')") + @Log(title = "巡检任务", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionTaskService.deleteInspectionTaskByIds(ids)); + } + + /** + * 查询任务关联的点位列表 + */ + @ApiOperation("查询任务关联的点位列表") + @PreAuthorize("@ss.hasPermi('inspection:task:query')") + @GetMapping("/{taskId}/waypoints") + public AjaxResult getWaypoints(@PathVariable("taskId") String taskId) + { + List list = inspectionTaskService.selectWaypointsByTaskId(taskId); + return success(list); + } + + /** + * 绑定点位到任务 + */ + @ApiOperation("绑定点位到任务") + @PreAuthorize("@ss.hasPermi('inspection:task:edit')") + @Log(title = "巡检任务", businessType = BusinessType.UPDATE) + @PostMapping("/{taskId}/waypoints") + public AjaxResult bindWaypoints(@PathVariable("taskId") String taskId, @RequestBody String[] waypointIds) + { + return toAjax(inspectionTaskService.bindWaypoints(taskId, waypointIds)); + } + + /** + * 解绑任务的点位 + */ + @ApiOperation("解绑任务的点位") + @PreAuthorize("@ss.hasPermi('inspection:task:edit')") + @Log(title = "巡检任务", businessType = BusinessType.UPDATE) + @DeleteMapping("/{taskId}/waypoints") + public AjaxResult unbindWaypoints(@PathVariable("taskId") String taskId) + { + return toAjax(inspectionTaskService.unbindWaypoints(taskId)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskInstanceController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskInstanceController.java new file mode 100644 index 0000000..5b005e2 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionTaskInstanceController.java @@ -0,0 +1,162 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionTaskInstance; +import com.cmvr.inspection.domain.vo.InspectionTaskInstanceVo; +import com.cmvr.inspection.service.IInspectionTaskInstanceService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检任务执行实例Controller + * + * @author cmvr-iot + * @since 2026-06-01 + */ +@RestController +@RequestMapping("/inspection/taskInstance") +@Api(tags = "智能巡检--任务执行实例管理") +public class InspectionTaskInstanceController extends BaseController +{ + @Autowired + private IInspectionTaskInstanceService inspectionTaskInstanceService; + + /** + * 查询巡检任务执行实例列表 + */ + @ApiOperation("查询巡检任务执行实例列表") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionTaskInstance inspectionTaskInstance) + { + startPage(); + List list = inspectionTaskInstanceService.selectInspectionTaskInstanceList(inspectionTaskInstance); + return getDataTable(list); + } + + /** + * 导出巡检任务执行实例列表 + */ + @ApiOperation("导出巡检任务执行实例列表") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:export')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionTaskInstance inspectionTaskInstance) + { + List list = inspectionTaskInstanceService.selectInspectionTaskInstanceList(inspectionTaskInstance); + ExcelUtil util = new ExcelUtil<>(InspectionTaskInstanceVo.class); + util.exportExcel(response, list, "巡检任务执行实例数据"); + } + + /** + * 获取巡检任务执行实例详细信息 + */ + @ApiOperation("获取巡检任务执行实例详细信息") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionTaskInstanceService.selectInspectionTaskInstanceVoById(id)); + } + + /** + * 新增巡检任务执行实例 + */ + @ApiOperation("新增巡检任务执行实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:add')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionTaskInstance inspectionTaskInstance) + { + return toAjax(inspectionTaskInstanceService.insertInspectionTaskInstance(inspectionTaskInstance)); + } + + /** + * 修改巡检任务执行实例 + */ + @ApiOperation("修改巡检任务执行实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:edit')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionTaskInstance inspectionTaskInstance) + { + return toAjax(inspectionTaskInstanceService.updateInspectionTaskInstance(inspectionTaskInstance)); + } + + /** + * 删除巡检任务执行实例 + */ + @ApiOperation("删除巡检任务执行实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:remove')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionTaskInstanceService.deleteInspectionTaskInstanceByIds(ids)); + } + + /** + * 开始执行任务实例 + */ + @ApiOperation("开始执行任务实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:edit')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.UPDATE) + @PutMapping("/start/{id}") + public AjaxResult start(@PathVariable("id") String id) + { + return toAjax(inspectionTaskInstanceService.startInstance(id)); + } + + /** + * 暂停任务实例 + */ + @ApiOperation("暂停任务实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:edit')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.UPDATE) + @PutMapping("/pause/{id}") + public AjaxResult pause(@PathVariable("id") String id) + { + return toAjax(inspectionTaskInstanceService.pauseInstance(id)); + } + + /** + * 终止任务实例 + */ + @ApiOperation("终止任务实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:edit')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.UPDATE) + @PutMapping("/stop/{id}") + public AjaxResult stop(@PathVariable("id") String id) + { + return toAjax(inspectionTaskInstanceService.stopInstance(id)); + } + + /** + * 恢复任务实例 + */ + @ApiOperation("恢复任务实例") + @PreAuthorize("@ss.hasPermi('inspection:taskInstance:edit')") + @Log(title = "巡检任务执行实例", businessType = BusinessType.UPDATE) + @PutMapping("/resume/{id}") + public AjaxResult resume(@PathVariable("id") String id) + { + return toAjax(inspectionTaskInstanceService.resumeInstance(id)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionWaypointController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionWaypointController.java new file mode 100644 index 0000000..d2e23f8 --- /dev/null +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/InspectionWaypointController.java @@ -0,0 +1,114 @@ +package com.cmvr.web.controller.inspection; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.cmvr.common.annotation.Log; +import com.cmvr.common.core.controller.BaseController; +import com.cmvr.common.core.domain.AjaxResult; +import com.cmvr.common.enums.BusinessType; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionWaypointVo; +import com.cmvr.inspection.service.IInspectionWaypointService; +import com.cmvr.common.utils.poi.ExcelUtil; +import com.cmvr.common.core.page.TableDataInfo; + +/** + * 巡检点位Controller + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@RestController +@RequestMapping("/inspection/waypoint") +@Api(tags = "智能巡检--点位管理") +public class InspectionWaypointController extends BaseController +{ + @Autowired + private IInspectionWaypointService inspectionWaypointService; + + /** + * 查询巡检点位列表 + */ + @ApiOperation("查询巡检点位列表") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:list')") + @GetMapping("/list") + public TableDataInfo list(InspectionWaypoint inspectionWaypoint) + { + startPage(); + List list = inspectionWaypointService.selectInspectionWaypointList(inspectionWaypoint); + return getDataTable(list); + } + + /** + * 导出巡检点位列表 + */ + @ApiOperation("导出巡检点位列表") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:export')") + @Log(title = "巡检点位", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionWaypoint inspectionWaypoint) + { + List list = inspectionWaypointService.selectInspectionWaypointList(inspectionWaypoint); + ExcelUtil util = new ExcelUtil<>(InspectionWaypointVo.class); + util.exportExcel(response, list, "巡检点位数据"); + } + + /** + * 获取巡检点位详细信息 + */ + @ApiOperation("获取巡检点位详细信息") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return success(inspectionWaypointService.selectInspectionWaypointById(id)); + } + + /** + * 新增巡检点位 + */ + @ApiOperation("新增巡检点位") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:add')") + @Log(title = "巡检点位", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionWaypoint inspectionWaypoint) + { + return toAjax(inspectionWaypointService.insertInspectionWaypoint(inspectionWaypoint)); + } + + /** + * 修改巡检点位 + */ + @ApiOperation("修改巡检点位") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:edit')") + @Log(title = "巡检点位", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionWaypoint inspectionWaypoint) + { + return toAjax(inspectionWaypointService.updateInspectionWaypoint(inspectionWaypoint)); + } + + /** + * 删除巡检点位 + */ + @ApiOperation("删除巡检点位") + @PreAuthorize("@ss.hasPermi('inspection:waypoint:remove')") + @Log(title = "巡检点位", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable String[] ids) + { + return toAjax(inspectionWaypointService.deleteInspectionWaypointByIds(ids)); + } +} diff --git a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java index 07fb58a..10ad716 100644 --- a/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java +++ b/cmvr-iot-admin/src/main/java/com/cmvr/web/controller/test/TeFlowController.java @@ -51,11 +51,11 @@ public class TeFlowController extends BaseController { } - @ApiOperation("任务执行入口") + @ApiOperation("演示任务执行入口") @PostMapping("/demo") @Anonymous public AjaxResult demo(@Valid @RequestBody TeTaskExecuteNormalVO taskExecuteNormalVO) { - if (taskInstIdList.size() > 0) { + if (!taskInstIdList.isEmpty()) { try { taskInstIdList.forEach(flowControlService::stop); } catch (Exception e) { diff --git a/cmvr-iot-admin/src/main/resources/application-test.yml b/cmvr-iot-admin/src/main/resources/application-test.yml index 4bd92cd..0ddd66d 100644 --- a/cmvr-iot-admin/src/main/resources/application-test.yml +++ b/cmvr-iot-admin/src/main/resources/application-test.yml @@ -92,7 +92,7 @@ spring: # Minio配置 minio: - url: http://192.168.10:9000 + url: http://192.168.28.10:9000 accessKey: AKICMVR secretKey: wJalrXUtnFEMI bucketName: cmvr-iot diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java index 704e06e..ee61329 100644 --- a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/DeDeviceProfile.java @@ -6,9 +6,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.cmvr.common.annotation.Excel; import com.cmvr.common.core.domain.BaseEntity; @@ -16,12 +15,13 @@ import com.cmvr.common.core.domain.BaseEntity; * 设备配置信息对象 de_device_profile * * @author cmvr-iot - * @date 2025-05-09 + * @since 2025-05-09 */ @Data @AllArgsConstructor @NoArgsConstructor @ApiModel("设备配置类") +@EqualsAndHashCode(callSuper = false) public class DeDeviceProfile extends BaseEntity { private static final long serialVersionUID = 1L; @@ -31,11 +31,6 @@ public class DeDeviceProfile extends BaseEntity @TableId(value = "id",type = IdType.ASSIGN_UUID) private String id; - /** 备注 */ - @Excel(name = "备注") - @ApiModelProperty("备注") - private String remark; - /** 设备id */ @Excel(name = "设备id") @ApiModelProperty("设备id") diff --git a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java index 47b0315..c8961c9 100644 --- a/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java +++ b/cmvr-iot-device/src/main/java/com/cmvr/device/domain/vo/ProfileVo.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import java.util.List; @@ -15,6 +16,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @ApiModel("参数视图类") +@EqualsAndHashCode(callSuper = false) public class ProfileVo extends BaseEntity { @@ -23,11 +25,6 @@ public class ProfileVo extends BaseEntity { @ApiModelProperty("设备类型") private String deviceModel; - /** 备注 */ - @Excel(name = "备注") - @ApiModelProperty("备注") - private String remark; - /** 设备id */ @Excel(name = "设备id") @ApiModelProperty("设备id") diff --git a/cmvr-iot-inspection/pom.xml b/cmvr-iot-inspection/pom.xml new file mode 100644 index 0000000..3f8d31a --- /dev/null +++ b/cmvr-iot-inspection/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + com.cmvr + cmvr-iot + 3.8.9 + + + cmvr-iot-inspection + + + 智能巡检模块 + + + + + + + com.cmvr + cmvr-iot-common + + + + + com.cmvr + cmvr-iot-test + + + + diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionAlarm.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionAlarm.java new file mode 100644 index 0000000..6674bcc --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionAlarm.java @@ -0,0 +1,102 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 巡检告警对象 inspection_alarm + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检告警") +public class InspectionAlarm extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @Excel(name = "告警编码") + @ApiModelProperty("告警编码") + private String alarmCode; + + @Excel(name = "任务执行实例ID") + @ApiModelProperty("任务执行实例ID") + private String taskInstanceId; + + @Excel(name = "任务ID") + @ApiModelProperty("任务ID") + private String taskId; + + @Excel(name = "任务名称") + @ApiModelProperty("任务名称") + private String taskName; + + @Excel(name = "机器人ID") + @ApiModelProperty("机器人ID") + private String robotId; + + @Excel(name = "机器人名称") + @ApiModelProperty("机器人名称") + private String robotName; + + @Excel(name = "告警级别") + @ApiModelProperty("告警级别(1提示 2警告 3严重)") + private String alarmLevel; + + @Excel(name = "告警类型") + @ApiModelProperty("告警类型(1设备异常 2环境异常 3任务异常 4通信异常)") + private String alarmType; + + @Excel(name = "告警标题") + @ApiModelProperty("告警标题") + private String alarmTitle; + + @Excel(name = "告警内容") + @ApiModelProperty("告警内容") + private String alarmContent; + + @Excel(name = "告警位置") + @ApiModelProperty("告警位置") + private String alarmLocation; + + @Excel(name = "告警时间") + @ApiModelProperty("告警时间") + private Date alarmTime; + + @Excel(name = "处理状态") + @ApiModelProperty("处理状态(0未处理 1处理中 2已处理 3已忽略)") + private String handleStatus; + + @Excel(name = "处理人") + @ApiModelProperty("处理人") + private String handler; + + @Excel(name = "处理时间") + @ApiModelProperty("处理时间") + private Date handleTime; + + @Excel(name = "处理说明") + @ApiModelProperty("处理说明") + private String handleRemark; + + @ApiModelProperty("图片证据") + private String evidenceImage; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionMap.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionMap.java new file mode 100644 index 0000000..0f869e5 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionMap.java @@ -0,0 +1,64 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 巡检地图对象 inspection_map + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检地图") +public class InspectionMap extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + /** 地图名称 */ + @Excel(name = "地图名称") + @ApiModelProperty("地图名称") + private String mapName; + + /** 地图来源的机器人id */ + @Excel(name = "地图来源的机器人id") + @ApiModelProperty("地图来源的机器人id") + private String mapSourceRobotId; + + /** 地图来源的地图名称 */ + @Excel(name = "地图来源的地图名称") + @ApiModelProperty("地图来源的地图名称") + private String mapSourceName; + + /** 地图文件路径 */ + @Excel(name = "地图文件路径") + @ApiModelProperty("地图文件路径") + private String mapFilePath; + + /** 状态 */ + @Excel(name = "状态") + @ApiModelProperty("状态(0正常 1停用)") + private String status; + + /** 地图描述 */ + @Excel(name = "地图描述") + @ApiModelProperty("地图描述") + private String mapDesc; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionRobot.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionRobot.java new file mode 100644 index 0000000..db3ad1f --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionRobot.java @@ -0,0 +1,84 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 巡检机器人对象 inspection_robot + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检机器人") +public class InspectionRobot extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + /** 机器人编码 */ + @Excel(name = "机器人编码") + @ApiModelProperty("机器人编码") + private String robotCode; + + /** 机器人名称 */ + @Excel(name = "机器人名称") + @ApiModelProperty("机器人名称") + private String robotName; + + /** 机器人型号 */ + @Excel(name = "机器人型号") + @ApiModelProperty("机器人型号") + private String robotModel; + + /** 机器人类型 */ + @Excel(name = "机器人类型") + @ApiModelProperty("机器人类型") + private String robotType; + + /** IP地址 */ + @Excel(name = "IP地址") + @ApiModelProperty("IP地址") + private String ipAddress; + + /** 端口号 */ + @Excel(name = "端口号") + @ApiModelProperty("端口号") + private Integer port; + + /** 当前地图 */ + @Excel(name = "当前地图") + @ApiModelProperty("当前地图") + private String currentMapId; + + /** 当前状态 */ + @Excel(name = "当前状态") + @ApiModelProperty("当前状态(0在线 1离线 2充电中 3巡检中)") + private String status; + + /** 电量百分比 */ + @Excel(name = "电量百分比") + @ApiModelProperty("电量百分比") + private Integer batteryLevel; + + /** 当前位置 */ + @Excel(name = "当前位置") + @ApiModelProperty("当前位置") + private String currentPosition; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java new file mode 100644 index 0000000..0ffe1ee --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTask.java @@ -0,0 +1,50 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 巡检任务对象 inspection_task + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检任务") +public class InspectionTask extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @Excel(name = "任务编码") + @ApiModelProperty("任务编码") + private String taskCode; + + @Excel(name = "任务名称") + @ApiModelProperty("任务名称") + private String taskName; + + @Excel(name = "任务类型") + @ApiModelProperty("任务类型(1巡检任务 2讲解任务)") + private String taskType; + + /** 任务id */ + @Excel(name = "任务id") + @ApiModelProperty("任务id") + private String teTaskConfigId; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java new file mode 100644 index 0000000..1d57d01 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskInstance.java @@ -0,0 +1,55 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 巡检任务执行实例对象 inspection_task_instance + * + * @author cmvr-iot + * @since 2026-06-01 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检任务执行实例") +public class InspectionTaskInstance extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @Excel(name = "任务ID") + @ApiModelProperty("任务ID") + private String taskId; + + @Excel(name = "机器人ID") + @ApiModelProperty("机器人ID") + private String robotId; + + @Excel(name = "执行状态") + @ApiModelProperty("执行状态(0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停)") + private Integer status; + + @Excel(name = "开始时间") + @ApiModelProperty("开始时间") + private Date startTime; + + @Excel(name = "结束时间") + @ApiModelProperty("结束时间") + private Date endTime; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskWaypoint.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskWaypoint.java new file mode 100644 index 0000000..ae0c96f --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionTaskWaypoint.java @@ -0,0 +1,26 @@ +package com.cmvr.inspection.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 巡检任务与点位关联对象 inspection_task_waypoint + * + * @author cmvr-iot + * @since 2026-06-01 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InspectionTaskWaypoint +{ + /** 任务ID */ + private String taskId; + + /** 点位ID */ + private String waypointId; + + /** 排序号 */ + private Integer sortOrder; +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionWaypoint.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionWaypoint.java new file mode 100644 index 0000000..de29332 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/InspectionWaypoint.java @@ -0,0 +1,54 @@ +package com.cmvr.inspection.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; + +/** + * 巡检点位对象 inspection_waypoint + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检点位") +public class InspectionWaypoint extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + @Excel(name = "点位名称") + @ApiModelProperty("点位名称") + private String waypointName; + + @Excel(name = "是否启用") + @ApiModelProperty("是否启用(0启用 1禁用)") + private String enabled; + + @Excel(name = "排序号") + @ApiModelProperty("排序号") + private Integer sortOrder; + + /** 检测项配置id */ + @Excel(name = "检测项配置id") + @ApiModelProperty("检测项配置id") + private String detectItemId; + + @Excel(name = "地图id") + @ApiModelProperty("地图id") + private String mapId; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionAlarmVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionAlarmVo.java new file mode 100644 index 0000000..d7debd3 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionAlarmVo.java @@ -0,0 +1,127 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 巡检告警视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检告警视图对象") +public class InspectionAlarmVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 告警编码 */ + @Excel(name = "告警编码") + @ApiModelProperty("告警编码") + private String alarmCode; + + /** 任务执行实例ID */ + @Excel(name = "任务执行实例ID") + @ApiModelProperty("任务执行实例ID") + private String taskInstanceId; + + /** 任务ID */ + @Excel(name = "任务ID") + @ApiModelProperty("任务ID") + private String taskId; + + /** 任务名称(关联字段) */ + @Excel(name = "任务名称") + @ApiModelProperty("任务名称") + private String taskName; + + /** 机器人ID */ + @Excel(name = "机器人ID") + @ApiModelProperty("机器人ID") + private String robotId; + + /** 机器人名称(关联字段) */ + @Excel(name = "机器人名称") + @ApiModelProperty("机器人名称") + private String robotName; + + /** 告警级别 */ + @Excel(name = "告警级别") + @ApiModelProperty("告警级别(1提示 2警告 3严重)") + private String alarmLevel; + + /** 告警类型 */ + @Excel(name = "告警类型") + @ApiModelProperty("告警类型(1设备异常 2环境异常 3任务异常 4通信异常)") + private String alarmType; + + /** 告警标题 */ + @Excel(name = "告警标题") + @ApiModelProperty("告警标题") + private String alarmTitle; + + /** 告警内容 */ + @Excel(name = "告警内容") + @ApiModelProperty("告警内容") + private String alarmContent; + + /** 告警位置 */ + @Excel(name = "告警位置") + @ApiModelProperty("告警位置") + private String alarmLocation; + + /** 告警时间 */ + @Excel(name = "告警时间", dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("告警时间") + private Date alarmTime; + + /** 处理状态 */ + @Excel(name = "处理状态") + @ApiModelProperty("处理状态(0未处理 1处理中 2已处理 3已忽略)") + private String handleStatus; + + /** 处理人 */ + @Excel(name = "处理人") + @ApiModelProperty("处理人") + private String handler; + + /** 处理时间 */ + @Excel(name = "处理时间", dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("处理时间") + private Date handleTime; + + /** 处理说明 */ + @Excel(name = "处理说明") + @ApiModelProperty("处理说明") + private String handleRemark; + + /** 图片证据 */ + @Excel(name = "图片证据") + @ApiModelProperty("图片证据") + private String evidenceImage; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionMapVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionMapVo.java new file mode 100644 index 0000000..f502e20 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionMapVo.java @@ -0,0 +1,76 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 巡检地图视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检地图视图对象") +public class InspectionMapVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 地图名称 */ + @Excel(name = "地图名称") + @ApiModelProperty("地图名称") + private String mapName; + + /** 地图来源的机器人id */ + @Excel(name = "地图来源的机器人id") + @ApiModelProperty("地图来源的机器人id") + private String mapSourceRobotId; + + /** 地图来源的机器人名称(关联字段) */ + @Excel(name = "地图来源的机器人名称") + @ApiModelProperty("地图来源的机器人名称") + private String mapSourceRobotName; + + /** 地图来源的地图名称 */ + @Excel(name = "地图来源的地图名称") + @ApiModelProperty("地图来源的地图名称") + private String mapSourceName; + + /** 地图文件路径 */ + @Excel(name = "地图文件路径") + @ApiModelProperty("地图文件路径") + private String mapFilePath; + + /** 状态 */ + @Excel(name = "状态") + @ApiModelProperty("状态(0正常 1停用)") + private String status; + + /** 地图描述 */ + @Excel(name = "地图描述") + @ApiModelProperty("地图描述") + private String mapDesc; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionRobotVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionRobotVo.java new file mode 100644 index 0000000..d60c2f0 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionRobotVo.java @@ -0,0 +1,96 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 巡检机器人视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检机器人视图对象") +public class InspectionRobotVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 机器人编码 */ + @Excel(name = "机器人编码") + @ApiModelProperty("机器人编码") + private String robotCode; + + /** 机器人名称 */ + @Excel(name = "机器人名称") + @ApiModelProperty("机器人名称") + private String robotName; + + /** 机器人型号 */ + @Excel(name = "机器人型号") + @ApiModelProperty("机器人型号") + private String robotModel; + + /** 机器人类型 */ + @Excel(name = "机器人类型") + @ApiModelProperty("机器人类型") + private String robotType; + + /** IP地址 */ + @Excel(name = "IP地址") + @ApiModelProperty("IP地址") + private String ipAddress; + + /** 端口号 */ + @Excel(name = "端口号") + @ApiModelProperty("端口号") + private Integer port; + + /** 当前地图ID */ + @Excel(name = "当前地图ID") + @ApiModelProperty("当前地图ID") + private String currentMapId; + + /** 当前地图名称(关联字段) */ + @Excel(name = "当前地图名称") + @ApiModelProperty("当前地图名称") + private String currentMapName; + + /** 当前状态 */ + @Excel(name = "当前状态") + @ApiModelProperty("当前状态(0在线 1离线 2充电中 3巡检中)") + private String status; + + /** 电量百分比 */ + @Excel(name = "电量百分比") + @ApiModelProperty("电量百分比") + private Integer batteryLevel; + + /** 当前位置 */ + @Excel(name = "当前位置") + @ApiModelProperty("当前位置") + private String currentPosition; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java new file mode 100644 index 0000000..c5ea52f --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskInstanceVo.java @@ -0,0 +1,93 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 巡检任务执行实例视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-06-01 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检任务执行实例视图对象") +public class InspectionTaskInstanceVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 任务ID */ + @Excel(name = "任务ID") + @ApiModelProperty("任务ID") + private String taskId; + + /** 任务名称(关联字段) */ + @Excel(name = "任务名称") + @ApiModelProperty("任务名称") + private String taskName; + + /** 任务编码(关联字段) */ + @Excel(name = "任务编码") + @ApiModelProperty("任务编码") + private String taskCode; + + /** 机器人ID */ + @Excel(name = "机器人ID") + @ApiModelProperty("机器人ID") + private String robotId; + + /** 机器人名称(关联字段) */ + @Excel(name = "机器人名称") + @ApiModelProperty("机器人名称") + private String robotName; + + /** 地图ID */ + @Excel(name = "地图ID") + @ApiModelProperty("地图ID") + private String mapId; + + /** 地图名称(关联字段) */ + @Excel(name = "地图名称") + @ApiModelProperty("地图名称") + private String mapName; + + /** 执行状态 */ + @Excel(name = "执行状态") + @ApiModelProperty("执行状态(0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停)") + private String status; + + /** 开始时间 */ + @Excel(name = "开始时间", dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("开始时间") + private Date startTime; + + /** 结束时间 */ + @Excel(name = "结束时间", dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("结束时间") + private Date endTime; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java new file mode 100644 index 0000000..b6b064e --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionTaskVo.java @@ -0,0 +1,56 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 巡检任务视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检任务视图对象") +public class InspectionTaskVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 任务编码 */ + @Excel(name = "任务编码") + @ApiModelProperty("任务编码") + private String taskCode; + + /** 任务名称 */ + @Excel(name = "任务名称") + @ApiModelProperty("任务名称") + private String taskName; + + /** 任务类型 */ + @Excel(name = "任务类型") + @ApiModelProperty("任务类型(1巡检任务 2讲解任务)") + private String taskType; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionWaypointVo.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionWaypointVo.java new file mode 100644 index 0000000..ec9dfd4 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/domain/vo/InspectionWaypointVo.java @@ -0,0 +1,75 @@ +package com.cmvr.inspection.domain.vo; + +import com.cmvr.common.annotation.Excel; +import com.cmvr.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 巡检点位视图对象(包含关联信息) + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel("巡检点位视图对象") +public class InspectionWaypointVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + @ApiModelProperty("id") + private String id; + + /** 点位名称 */ + @Excel(name = "点位名称") + @ApiModelProperty("点位名称") + private String waypointName; + + /** 是否启用 */ + @Excel(name = "是否启用") + @ApiModelProperty("是否启用(0启用 1禁用)") + private String enabled; + + /** 排序号 */ + @Excel(name = "排序号") + @ApiModelProperty("排序号") + private Integer sortOrder; + + /** 检测项配置id */ + @Excel(name = "检测项配置id") + @ApiModelProperty("检测项配置id") + private String detectItemId; + + /** 配置状态 */ + @Excel(name = "配置状态") + @ApiModelProperty("配置状态") + private String configStatus; + + /** 地图id */ + @Excel(name = "地图id") + @ApiModelProperty("地图id") + private String mapId; + + /** 地图名称 */ + @Excel(name = "地图名称") + @ApiModelProperty("地图名称") + private String mapName; + + /** 创建人昵称 */ + @Excel(name = "创建人昵称") + @ApiModelProperty("创建人昵称") + private String createByName; + + /** 修改人昵称 */ + @Excel(name = "修改人昵称") + @ApiModelProperty("修改人昵称") + private String updateByName; +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/enums/TaskStatusEnum.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/enums/TaskStatusEnum.java new file mode 100644 index 0000000..0043f10 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/enums/TaskStatusEnum.java @@ -0,0 +1,28 @@ +package com.cmvr.inspection.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum TaskStatusEnum { + // 未执行 + NOT_STARTED(5, "未执行"), + SUCCESS(0, "已完成"), + RUNNING(1, "执行中"), + FAILED(2, "失败"), + PAUSED(3, "已暂停"), + STOPPED(4, "已终止"); + + private final int code; + private final String desc; + + public static TaskStatusEnum fromCode(int code) { + for (TaskStatusEnum status : values()) { + if (status.code == code) { + return status; + } + } + return null; + } +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionAlarmMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionAlarmMapper.java new file mode 100644 index 0000000..7fa6ff7 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionAlarmMapper.java @@ -0,0 +1,55 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionAlarm; +import com.cmvr.inspection.domain.vo.InspectionAlarmVo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检告警Mapper接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface InspectionAlarmMapper extends MPJBaseMapper +{ + /** + * 查询巡检告警 + * + * @param id 巡检告警主键 + * @return 巡检告警 + */ + InspectionAlarm selectInspectionAlarmById(String id); + + /** + * 新增巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + int insertInspectionAlarm(InspectionAlarm inspectionAlarm); + + /** + * 修改巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + int updateInspectionAlarm(InspectionAlarm inspectionAlarm); + + /** + * 批量删除巡检告警 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionAlarmByIds(String[] ids); + + /** + * 查询巡检告警视图列表(包含关联信息) + * + * @param inspectionAlarm 巡检告警 + * @return 巡检告警视图集合 + */ + List selectInspectionAlarmVoList(InspectionAlarm inspectionAlarm); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionMapMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionMapMapper.java new file mode 100644 index 0000000..929da85 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionMapMapper.java @@ -0,0 +1,54 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionMap; +import com.cmvr.inspection.domain.vo.InspectionMapVo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检地图Mapper接口 + * + * @author cmvr-iot + */ +public interface InspectionMapMapper extends MPJBaseMapper +{ + /** + * 查询巡检地图 + * + * @param id 巡检地图主键 + * @return 巡检地图 + */ + InspectionMap selectInspectionMapById(String id); + + /** + * 新增巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + int insertInspectionMap(InspectionMap inspectionMap); + + /** + * 修改巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + int updateInspectionMap(InspectionMap inspectionMap); + + /** + * 批量删除巡检地图 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionMapByIds(String[] ids); + + /** + * 查询巡检地图视图列表(包含关联信息) + * + * @param inspectionMap 巡检地图 + * @return 巡检地图视图集合 + */ + List selectInspectionMapVoList(InspectionMap inspectionMap); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionRobotMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionRobotMapper.java new file mode 100644 index 0000000..07e9953 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionRobotMapper.java @@ -0,0 +1,55 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionRobot; +import com.cmvr.inspection.domain.vo.InspectionRobotVo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检机器人Mapper接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface InspectionRobotMapper extends MPJBaseMapper +{ + /** + * 查询巡检机器人 + * + * @param id 巡检机器人主键 + * @return 巡检机器人 + */ + InspectionRobot selectInspectionRobotById(String id); + + /** + * 新增巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + int insertInspectionRobot(InspectionRobot inspectionRobot); + + /** + * 修改巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + int updateInspectionRobot(InspectionRobot inspectionRobot); + + /** + * 批量删除巡检机器人 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionRobotByIds(String[] ids); + + /** + * 查询巡检机器人视图列表(包含关联信息) + * + * @param inspectionRobot 巡检机器人 + * @return 巡检机器人视图集合 + */ + List selectInspectionRobotVoList(InspectionRobot inspectionRobot); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskInstanceMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskInstanceMapper.java new file mode 100644 index 0000000..851bb0f --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskInstanceMapper.java @@ -0,0 +1,63 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionTaskInstance; +import com.cmvr.inspection.domain.vo.InspectionTaskInstanceVo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检任务执行实例Mapper接口 + * + * @author cmvr-iot + * @since 2026-06-01 + */ +public interface InspectionTaskInstanceMapper extends MPJBaseMapper +{ + /** + * 查询巡检任务执行实例 + * + * @param id 巡检任务执行实例主键 + * @return 巡检任务执行实例 + */ + InspectionTaskInstance selectInspectionTaskInstanceById(String id); + + /** + * 查询巡检任务执行实例视图详情(包含关联信息) + * + * @param id 巡检任务执行实例主键 + * @return 巡检任务执行实例视图 + */ + InspectionTaskInstanceVo selectInspectionTaskInstanceVoById(String id); + + /** + * 新增巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + int insertInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance); + + /** + * 修改巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + int updateInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance); + + /** + * 批量删除巡检任务执行实例 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionTaskInstanceByIds(String[] ids); + + /** + * 查询巡检任务执行实例视图列表(包含关联信息) + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 巡检任务执行实例视图集合 + */ + List selectInspectionTaskInstanceVoList(InspectionTaskInstance inspectionTaskInstance); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskMapper.java new file mode 100644 index 0000000..d41df20 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskMapper.java @@ -0,0 +1,55 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cmvr.inspection.domain.InspectionTask; +import com.cmvr.inspection.domain.vo.InspectionTaskVo; + +/** + * 巡检任务Mapper接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface InspectionTaskMapper extends BaseMapper { + /** + * 查询巡检任务 + * + * @param id 巡检任务主键 + * @return 巡检任务 + */ + InspectionTask selectInspectionTaskById(String id); + + /** + * 新增巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + int insertInspectionTask(InspectionTask inspectionTask); + + /** + * 修改巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + int updateInspectionTask(InspectionTask inspectionTask); + + /** + * 批量删除巡检任务 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionTaskByIds(String[] ids); + + /** + * 查询巡检任务视图列表(包含关联信息) + * + * @param inspectionTask 巡检任务 + * @return 巡检任务视图集合 + */ + List selectInspectionTaskVoList(InspectionTask inspectionTask); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskWaypointMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskWaypointMapper.java new file mode 100644 index 0000000..bdb97ac --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionTaskWaypointMapper.java @@ -0,0 +1,53 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionTaskWaypoint; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检任务与点位关联Mapper接口 + * + * @author cmvr-iot + * @since 2026-06-01 + */ +public interface InspectionTaskWaypointMapper extends MPJBaseMapper +{ + /** + * 查询任务关联的点位列表 + * + * @param taskId 任务ID + * @return 点位集合 + */ + List selectWaypointsByTaskId(String taskId); + + /** + * 批量新增任务与点位的关联关系 + * + * @param list 关联关系列表 + * @return 结果 + */ + int batchInsertTaskWaypoint(List list); + + /** + * 根据任务ID删除关联关系 + * + * @param taskId 任务ID + * @return 结果 + */ + int deleteTaskWaypointByTaskId(String taskId); + + /** + * 根据任务ID批量删除关联关系 + * + * @param taskIds 任务ID数组 + */ + void deleteTaskWaypointByTaskIds(String[] taskIds); + + /** + * 根据点位ID批量删除关联关系 + * + * @param waypointIds 点位ID数组 + */ + void deleteTaskWaypointByWaypointIds(String[] waypointIds); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionWaypointMapper.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionWaypointMapper.java new file mode 100644 index 0000000..52b0c66 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/InspectionWaypointMapper.java @@ -0,0 +1,55 @@ +package com.cmvr.inspection.mapper; + +import java.util.List; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionWaypointVo; +import com.github.yulichang.base.MPJBaseMapper; + +/** + * 巡检点位Mapper接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface InspectionWaypointMapper extends MPJBaseMapper +{ + /** + * 查询巡检点位 + * + * @param id 巡检点位主键 + * @return 巡检点位 + */ + InspectionWaypoint selectInspectionWaypointById(String id); + + /** + * 新增巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + int insertInspectionWaypoint(InspectionWaypoint inspectionWaypoint); + + /** + * 修改巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + int updateInspectionWaypoint(InspectionWaypoint inspectionWaypoint); + + /** + * 批量删除巡检点位 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteInspectionWaypointByIds(String[] ids); + + /** + * 查询巡检点位视图列表(包含关联信息) + * + * @param inspectionWaypoint 巡检点位 + * @return 巡检点位视图集合 + */ + List selectInspectionWaypointVoList(InspectionWaypoint inspectionWaypoint); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionAlarmService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionAlarmService.java new file mode 100644 index 0000000..decd5fd --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionAlarmService.java @@ -0,0 +1,57 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionAlarm; +import com.cmvr.inspection.domain.vo.InspectionAlarmVo; + +/** + * 巡检告警Service接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface IInspectionAlarmService extends IService +{ + /** + * 查询巡检告警 + * + * @param id 巡检告警主键 + * @return 巡检告警 + */ + InspectionAlarm selectInspectionAlarmById(String id); + + /** + * 查询巡检告警列表 + * + * @param inspectionAlarm 巡检告警 + * @return 巡检告警集合 + */ + List selectInspectionAlarmList(InspectionAlarm inspectionAlarm); + + /** + * 新增巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + int insertInspectionAlarm(InspectionAlarm inspectionAlarm); + + /** + * 修改巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + int updateInspectionAlarm(InspectionAlarm inspectionAlarm); + + /** + * 批量删除巡检告警 + * + * @param ids 需要删除的巡检告警主键集合 + * @return 结果 + */ + int deleteInspectionAlarmByIds(String[] ids); + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionMapService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionMapService.java new file mode 100644 index 0000000..9105ab1 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionMapService.java @@ -0,0 +1,57 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionMap; +import com.cmvr.inspection.domain.vo.InspectionMapVo; + +/** + * 巡检地图Service接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface IInspectionMapService extends IService +{ + /** + * 查询巡检地图 + * + * @param id 巡检地图主键 + * @return 巡检地图 + */ + InspectionMap selectInspectionMapById(String id); + + /** + * 查询巡检地图列表 + * + * @param inspectionMap 巡检地图 + * @return 巡检地图集合 + */ + List selectInspectionMapList(InspectionMap inspectionMap); + + /** + * 新增巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + int insertInspectionMap(InspectionMap inspectionMap); + + /** + * 修改巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + int updateInspectionMap(InspectionMap inspectionMap); + + /** + * 批量删除巡检地图 + * + * @param ids 需要删除的巡检地图主键集合 + * @return 结果 + */ + int deleteInspectionMapByIds(String[] ids); + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionRobotService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionRobotService.java new file mode 100644 index 0000000..2efa704 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionRobotService.java @@ -0,0 +1,57 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionRobot; +import com.cmvr.inspection.domain.vo.InspectionRobotVo; + +/** + * 巡检机器人Service接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface IInspectionRobotService extends IService +{ + /** + * 查询巡检机器人 + * + * @param id 巡检机器人主键 + * @return 巡检机器人 + */ + InspectionRobot selectInspectionRobotById(String id); + + /** + * 查询巡检机器人列表 + * + * @param inspectionRobot 巡检机器人 + * @return 巡检机器人集合 + */ + List selectInspectionRobotList(InspectionRobot inspectionRobot); + + /** + * 新增巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + int insertInspectionRobot(InspectionRobot inspectionRobot); + + /** + * 修改巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + int updateInspectionRobot(InspectionRobot inspectionRobot); + + /** + * 批量删除巡检机器人 + * + * @param ids 需要删除的巡检机器人主键集合 + * @return 结果 + */ + int deleteInspectionRobotByIds(String[] ids); + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskInstanceService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskInstanceService.java new file mode 100644 index 0000000..431b36d --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskInstanceService.java @@ -0,0 +1,88 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionTaskInstance; +import com.cmvr.inspection.domain.vo.InspectionTaskInstanceVo; +/** + * 巡检任务执行实例Service接口 + * + * @author cmvr-iot + * @since 2026-06-01 + */ +public interface IInspectionTaskInstanceService extends IService +{ + + /** + * 查询巡检任务执行实例视图详情(包含关联信息) + * + * @param id 巡检任务执行实例主键 + * @return 巡检任务执行实例视图 + */ + InspectionTaskInstanceVo selectInspectionTaskInstanceVoById(String id); + + /** + * 查询巡检任务执行实例列表 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 巡检任务执行实例集合 + */ + List selectInspectionTaskInstanceList(InspectionTaskInstance inspectionTaskInstance); + + /** + * 新增巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + int insertInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance); + + /** + * 修改巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + int updateInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance); + + /** + * 批量删除巡检任务执行实例 + * + * @param ids 需要删除的巡检任务执行实例主键集合 + * @return 结果 + */ + int deleteInspectionTaskInstanceByIds(String[] ids); + + /** + * 开始执行任务实例 + * + * @param id 任务实例主键 + * @return 结果 + */ + int startInstance(String id); + + /** + * 暂停任务实例 + * + * @param id 任务实例主键 + * @return 结果 + */ + int pauseInstance(String id); + + /** + * 终止任务实例 + * + * @param id 任务实例主键 + * @return 结果 + */ + int stopInstance(String id); + + /** + * 恢复任务实例(从暂停恢复为执行中) + * + * @param id 任务实例主键 + * @return 结果 + */ + int resumeInstance(String id); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskService.java new file mode 100644 index 0000000..5f817d3 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionTaskService.java @@ -0,0 +1,81 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionTask; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionTaskVo; +/** + * 巡检任务Service接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface IInspectionTaskService extends IService +{ + /** + * 查询巡检任务 + * + * @param id 巡检任务主键 + * @return 巡检任务 + */ + InspectionTask selectInspectionTaskById(String id); + + /** + * 查询巡检任务列表 + * + * @param inspectionTask 巡检任务 + * @return 巡检任务集合 + */ + List selectInspectionTaskList(InspectionTask inspectionTask); + + /** + * 新增巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + int insertInspectionTask(InspectionTask inspectionTask); + + /** + * 修改巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + int updateInspectionTask(InspectionTask inspectionTask); + + /** + * 批量删除巡检任务 + * + * @param ids 需要删除的巡检任务主键集合 + * @return 结果 + */ + int deleteInspectionTaskByIds(String[] ids); + + /** + * 查询任务关联的点位列表 + * + * @param taskId 任务ID + * @return 点位集合 + */ + List selectWaypointsByTaskId(String taskId); + + /** + * 绑定点位到任务 + * + * @param taskId 任务ID + * @param waypointIds 点位ID数组 + * @return 结果 + */ + int bindWaypoints(String taskId, String[] waypointIds); + + /** + * 解绑任务的点位 + * + * @param taskId 任务ID + * @return 结果 + */ + int unbindWaypoints(String taskId); +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionWaypointService.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionWaypointService.java new file mode 100644 index 0000000..b193792 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/IInspectionWaypointService.java @@ -0,0 +1,57 @@ +package com.cmvr.inspection.service; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionWaypointVo; + +/** + * 巡检点位Service接口 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +public interface IInspectionWaypointService extends IService +{ + /** + * 查询巡检点位 + * + * @param id 巡检点位主键 + * @return 巡检点位 + */ + InspectionWaypoint selectInspectionWaypointById(String id); + + /** + * 查询巡检点位列表 + * + * @param inspectionWaypoint 巡检点位 + * @return 巡检点位集合 + */ + List selectInspectionWaypointList(InspectionWaypoint inspectionWaypoint); + + /** + * 新增巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + int insertInspectionWaypoint(InspectionWaypoint inspectionWaypoint); + + /** + * 修改巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + int updateInspectionWaypoint(InspectionWaypoint inspectionWaypoint); + + /** + * 批量删除巡检点位 + * + * @param ids 需要删除的巡检点位主键集合 + * @return 结果 + */ + int deleteInspectionWaypointByIds(String[] ids); + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionAlarmServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionAlarmServiceImpl.java new file mode 100644 index 0000000..4b7ddc9 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionAlarmServiceImpl.java @@ -0,0 +1,96 @@ +package com.cmvr.inspection.service.impl; + +import java.util.List; +import java.util.UUID; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.domain.vo.InspectionAlarmVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.inspection.mapper.InspectionAlarmMapper; +import com.cmvr.inspection.domain.InspectionAlarm; +import com.cmvr.inspection.service.IInspectionAlarmService; + +/** + * 巡检告警Service业务层处理 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Service +public class InspectionAlarmServiceImpl extends ServiceImpl implements IInspectionAlarmService +{ + @Autowired + private InspectionAlarmMapper inspectionAlarmMapper; + + /** + * 查询巡检告警 + * + * @param id 巡检告警主键 + * @return 巡检告警 + */ + @Override + public InspectionAlarm selectInspectionAlarmById(String id) + { + return inspectionAlarmMapper.selectInspectionAlarmById(id); + } + + /** + * 查询巡检告警列表 + * + * @param inspectionAlarm 巡检告警 + * @return 巡检告警 + */ + @Override + public List selectInspectionAlarmList(InspectionAlarm inspectionAlarm) + { + return inspectionAlarmMapper.selectInspectionAlarmVoList(inspectionAlarm); + } + + /** + * 新增巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + @Override + public int insertInspectionAlarm(InspectionAlarm inspectionAlarm) + { + // 生成UUID作为主键 + if (inspectionAlarm.getId() == null || inspectionAlarm.getId().isEmpty()) { + inspectionAlarm.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionAlarm.setCreateTime(DateUtils.getNowDate()); + inspectionAlarm.setCreateBy(SecurityUtils.getUsername()); + return inspectionAlarmMapper.insertInspectionAlarm(inspectionAlarm); + } + + /** + * 修改巡检告警 + * + * @param inspectionAlarm 巡检告警 + * @return 结果 + */ + @Override + public int updateInspectionAlarm(InspectionAlarm inspectionAlarm) + { + inspectionAlarm.setUpdateTime(DateUtils.getNowDate()); + inspectionAlarm.setUpdateBy(SecurityUtils.getUsername()); + return inspectionAlarmMapper.updateInspectionAlarm(inspectionAlarm); + } + + /** + * 批量删除巡检告警 + * + * @param ids 需要删除的巡检告警主键 + * @return 结果 + */ + @Override + public int deleteInspectionAlarmByIds(String[] ids) + { + return inspectionAlarmMapper.deleteInspectionAlarmByIds(ids); + } + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionMapServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionMapServiceImpl.java new file mode 100644 index 0000000..d70047d --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionMapServiceImpl.java @@ -0,0 +1,95 @@ +package com.cmvr.inspection.service.impl; + +import java.util.List; +import java.util.UUID; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.domain.vo.InspectionMapVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.inspection.mapper.InspectionMapMapper; +import com.cmvr.inspection.domain.InspectionMap; +import com.cmvr.inspection.service.IInspectionMapService; + +/** + * 巡检地图Service业务层处理 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Service +public class InspectionMapServiceImpl extends ServiceImpl implements IInspectionMapService +{ + @Autowired + private InspectionMapMapper inspectionMapMapper; + + /** + * 查询巡检地图 + * + * @param id 巡检地图主键 + * @return 巡检地图 + */ + @Override + public InspectionMap selectInspectionMapById(String id) + { + return inspectionMapMapper.selectInspectionMapById(id); + } + + /** + * 查询巡检地图列表 + * + * @param inspectionMap 巡检地图 + * @return 巡检地图 + */ + @Override + public List selectInspectionMapList(InspectionMap inspectionMap) + { + return inspectionMapMapper.selectInspectionMapVoList(inspectionMap); + } + + /** + * 新增巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + @Override + public int insertInspectionMap(InspectionMap inspectionMap) + { + // 生成UUID作为主键 + if (inspectionMap.getId() == null || inspectionMap.getId().isEmpty()) { + inspectionMap.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionMap.setCreateTime(DateUtils.getNowDate()); + inspectionMap.setCreateBy(SecurityUtils.getUsername()); + return inspectionMapMapper.insertInspectionMap(inspectionMap); + } + + /** + * 修改巡检地图 + * + * @param inspectionMap 巡检地图 + * @return 结果 + */ + @Override + public int updateInspectionMap(InspectionMap inspectionMap) + { + inspectionMap.setUpdateTime(DateUtils.getNowDate()); + inspectionMap.setUpdateBy(SecurityUtils.getUsername()); + return inspectionMapMapper.updateInspectionMap(inspectionMap); + } + + /** + * 批量删除巡检地图 + * + * @param ids 需要删除的巡检地图主键 + * @return 结果 + */ + @Override + public int deleteInspectionMapByIds(String[] ids) + { + return inspectionMapMapper.deleteInspectionMapByIds(ids); + } +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionRobotServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionRobotServiceImpl.java new file mode 100644 index 0000000..3df9343 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionRobotServiceImpl.java @@ -0,0 +1,96 @@ +package com.cmvr.inspection.service.impl; + +import java.util.List; +import java.util.UUID; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.domain.vo.InspectionRobotVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.inspection.mapper.InspectionRobotMapper; +import com.cmvr.inspection.domain.InspectionRobot; +import com.cmvr.inspection.service.IInspectionRobotService; + +/** + * 巡检机器人Service业务层处理 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Service +public class InspectionRobotServiceImpl extends ServiceImpl implements IInspectionRobotService +{ + @Autowired + private InspectionRobotMapper inspectionRobotMapper; + + /** + * 查询巡检机器人 + * + * @param id 巡检机器人主键 + * @return 巡检机器人 + */ + @Override + public InspectionRobot selectInspectionRobotById(String id) + { + return inspectionRobotMapper.selectInspectionRobotById(id); + } + + /** + * 查询巡检机器人列表 + * + * @param inspectionRobot 巡检机器人 + * @return 巡检机器人 + */ + @Override + public List selectInspectionRobotList(InspectionRobot inspectionRobot) + { + return inspectionRobotMapper.selectInspectionRobotVoList(inspectionRobot); + } + + /** + * 新增巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + @Override + public int insertInspectionRobot(InspectionRobot inspectionRobot) + { + // 生成UUID作为主键 + if (inspectionRobot.getId() == null || inspectionRobot.getId().isEmpty()) { + inspectionRobot.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionRobot.setCreateTime(DateUtils.getNowDate()); + inspectionRobot.setCreateBy(SecurityUtils.getUsername()); + return inspectionRobotMapper.insertInspectionRobot(inspectionRobot); + } + + /** + * 修改巡检机器人 + * + * @param inspectionRobot 巡检机器人 + * @return 结果 + */ + @Override + public int updateInspectionRobot(InspectionRobot inspectionRobot) + { + inspectionRobot.setUpdateTime(DateUtils.getNowDate()); + inspectionRobot.setUpdateBy(SecurityUtils.getUsername()); + return inspectionRobotMapper.updateInspectionRobot(inspectionRobot); + } + + /** + * 批量删除巡检机器人 + * + * @param ids 需要删除的巡检机器人主键 + * @return 结果 + */ + @Override + public int deleteInspectionRobotByIds(String[] ids) + { + return inspectionRobotMapper.deleteInspectionRobotByIds(ids); + } + +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java new file mode 100644 index 0000000..7b0ca7c --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskInstanceServiceImpl.java @@ -0,0 +1,194 @@ +package com.cmvr.inspection.service.impl; + +import java.util.List; +import java.util.UUID; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.common.exception.ServiceException; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.domain.vo.InspectionTaskInstanceVo; +import com.cmvr.inspection.enums.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.inspection.mapper.InspectionTaskInstanceMapper; +import com.cmvr.inspection.domain.InspectionTaskInstance; +import com.cmvr.inspection.service.IInspectionTaskInstanceService; + +/** + * 巡检任务执行实例Service业务层处理 + * + * @author cmvr-iot + * @since 2026-06-01 + */ +@Service +public class InspectionTaskInstanceServiceImpl extends ServiceImpl implements IInspectionTaskInstanceService +{ + @Autowired + private InspectionTaskInstanceMapper inspectionTaskInstanceMapper; + + /** + * 查询巡检任务执行实例视图详情(包含关联信息) + * + * @param id 巡检任务执行实例主键 + * @return 巡检任务执行实例视图 + */ + @Override + public InspectionTaskInstanceVo selectInspectionTaskInstanceVoById(String id) + { + return inspectionTaskInstanceMapper.selectInspectionTaskInstanceVoById(id); + } + + /** + * 查询巡检任务执行实例列表 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 巡检任务执行实例 + */ + @Override + public List selectInspectionTaskInstanceList(InspectionTaskInstance inspectionTaskInstance) + { + return inspectionTaskInstanceMapper.selectInspectionTaskInstanceVoList(inspectionTaskInstance); + } + + /** + * 新增巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + @Override + public int insertInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance) + { + // 生成UUID作为主键 + if (inspectionTaskInstance.getId() == null || inspectionTaskInstance.getId().isEmpty()) { + inspectionTaskInstance.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionTaskInstance.setCreateTime(DateUtils.getNowDate()); + inspectionTaskInstance.setCreateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.insertInspectionTaskInstance(inspectionTaskInstance); + } + + /** + * 修改巡检任务执行实例 + * + * @param inspectionTaskInstance 巡检任务执行实例 + * @return 结果 + */ + @Override + public int updateInspectionTaskInstance(InspectionTaskInstance inspectionTaskInstance) + { + // 校验状态,只有未执行可以修改 + if (TaskStatusEnum.NOT_STARTED.getCode() != inspectionTaskInstance.getStatus()) { + throw new ServiceException("只有未执行状态的任务实例才能修改"); + } + inspectionTaskInstance.setUpdateTime(DateUtils.getNowDate()); + inspectionTaskInstance.setUpdateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.updateInspectionTaskInstance(inspectionTaskInstance); + } + + /** + * 批量删除巡检任务执行实例 + * + * @param ids 需要删除的巡检任务执行实例主键 + * @return 结果 + */ + @Override + public int deleteInspectionTaskInstanceByIds(String[] ids) + { + // 校验状态,只有未执行可以删除 + for (String id : ids) { + InspectionTaskInstance instance = inspectionTaskInstanceMapper.selectInspectionTaskInstanceById(id); + if (TaskStatusEnum.NOT_STARTED.getCode() != instance.getStatus()) { + throw new ServiceException("只有未执行状态的任务实例才能删除"); + } + } + return inspectionTaskInstanceMapper.deleteInspectionTaskInstanceByIds(ids); + } + + /** + * 开始执行任务实例 + */ + @Override + public int startInstance(String id) + { + InspectionTaskInstance instance = inspectionTaskInstanceMapper.selectInspectionTaskInstanceById(id); + if (instance == null) { + throw new ServiceException("任务实例不存在"); + } + if (TaskStatusEnum.NOT_STARTED.getCode() != instance.getStatus()) { + throw new ServiceException("只有待执行状态的任务实例才能开始执行"); + } + InspectionTaskInstance update = new InspectionTaskInstance(); + update.setId(id); + update.setStatus(TaskStatusEnum.RUNNING.getCode()); + update.setStartTime(DateUtils.getNowDate()); + update.setUpdateTime(DateUtils.getNowDate()); + update.setUpdateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.updateInspectionTaskInstance(update); + } + + /** + * 暂停任务实例 + */ + @Override + public int pauseInstance(String id) + { + InspectionTaskInstance instance = inspectionTaskInstanceMapper.selectInspectionTaskInstanceById(id); + if (instance == null) { + throw new ServiceException("任务实例不存在"); + } + if (TaskStatusEnum.RUNNING.getCode() != instance.getStatus()) { + throw new ServiceException("只有执行中状态的任务实例才能暂停"); + } + InspectionTaskInstance update = new InspectionTaskInstance(); + update.setId(id); + update.setStatus(TaskStatusEnum.PAUSED.getCode()); + update.setUpdateTime(DateUtils.getNowDate()); + update.setUpdateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.updateInspectionTaskInstance(update); + } + + /** + * 终止任务实例 + */ + @Override + public int stopInstance(String id) + { + InspectionTaskInstance instance = inspectionTaskInstanceMapper.selectInspectionTaskInstanceById(id); + if (instance == null) { + throw new ServiceException("任务实例不存在"); + } + if (TaskStatusEnum.NOT_STARTED.getCode() != instance.getStatus() && TaskStatusEnum.RUNNING.getCode() != instance.getStatus()) { + throw new ServiceException("已完成或已取消的任务实例不能终止"); + } + InspectionTaskInstance update = new InspectionTaskInstance(); + update.setId(id); + update.setStatus(TaskStatusEnum.STOPPED.getCode()); + update.setEndTime(DateUtils.getNowDate()); + update.setUpdateTime(DateUtils.getNowDate()); + update.setUpdateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.updateInspectionTaskInstance(update); + } + + /** + * 恢复任务实例(从暂停恢复为执行中) + */ + @Override + public int resumeInstance(String id) + { + InspectionTaskInstance instance = inspectionTaskInstanceMapper.selectInspectionTaskInstanceById(id); + if (instance == null) { + throw new ServiceException("任务实例不存在"); + } + if (TaskStatusEnum.PAUSED.getCode() != instance.getStatus()) { + throw new ServiceException("只有已暂停状态的任务实例才能恢复"); + } + InspectionTaskInstance update = new InspectionTaskInstance(); + update.setId(id); + update.setStatus(TaskStatusEnum.RUNNING.getCode()); + update.setUpdateTime(DateUtils.getNowDate()); + update.setUpdateBy(SecurityUtils.getUsername()); + return inspectionTaskInstanceMapper.updateInspectionTaskInstance(update); + } +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskServiceImpl.java new file mode 100644 index 0000000..69a44b2 --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionTaskServiceImpl.java @@ -0,0 +1,185 @@ +package com.cmvr.inspection.service.impl; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.ArrayList; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.inspection.domain.InspectionTaskWaypoint; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.domain.vo.InspectionTaskVo; +import com.cmvr.inspection.mapper.InspectionTaskWaypointMapper; +import com.cmvr.test.model.domain.TeTaskConfigInfo; +import com.cmvr.test.model.vo.TeTaskOrchestraVO; +import com.cmvr.test.service.ITeTaskConfigInfoService; +import com.cmvr.test.service.ITeTaskOrchestrationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.mapper.InspectionTaskMapper; +import com.cmvr.inspection.domain.InspectionTask; +import com.cmvr.inspection.service.IInspectionTaskService; + +/** + * 巡检任务Service业务层处理 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Service +public class InspectionTaskServiceImpl extends ServiceImpl implements IInspectionTaskService +{ + @Autowired + private InspectionTaskMapper inspectionTaskMapper; + + @Autowired + private InspectionTaskWaypointMapper inspectionTaskWaypointMapper; + + @Autowired + private ITeTaskOrchestrationService teTaskOrchestrationService; + + @Autowired + private ITeTaskConfigInfoService teTaskConfigInfoService; + + /** + * 查询巡检任务 + * + * @param id 巡检任务主键 + * @return 巡检任务 + */ + @Override + public InspectionTask selectInspectionTaskById(String id) + { + return inspectionTaskMapper.selectInspectionTaskById(id); + } + + /** + * 查询巡检任务列表 + * + * @param inspectionTask 巡检任务 + * @return 巡检任务 + */ + @Override + public List selectInspectionTaskList(InspectionTask inspectionTask) + { + return inspectionTaskMapper.selectInspectionTaskVoList(inspectionTask); + } + + /** + * 新增巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + @Override + public int insertInspectionTask(InspectionTask inspectionTask) + { + // 生成UUID作为主键 + if (inspectionTask.getId() == null || inspectionTask.getId().isEmpty()) { + inspectionTask.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionTask.setCreateTime(DateUtils.getNowDate()); + inspectionTask.setCreateBy(SecurityUtils.getUsername()); + // 同步新增任务 + TeTaskConfigInfo teTaskConfigInfo = TeTaskConfigInfo.builder().taskName(inspectionTask.getTaskName()).build(); + teTaskConfigInfoService.insertTeTaskConfigInfo(teTaskConfigInfo); + inspectionTask.setTeTaskConfigId(teTaskConfigInfo.getId()); + return inspectionTaskMapper.insertInspectionTask(inspectionTask); + } + + /** + * 修改巡检任务 + * + * @param inspectionTask 巡检任务 + * @return 结果 + */ + @Override + public int updateInspectionTask(InspectionTask inspectionTask) + { + inspectionTask.setUpdateTime(DateUtils.getNowDate()); + inspectionTask.setUpdateBy(SecurityUtils.getUsername()); + TeTaskConfigInfo teTaskConfigInfo = teTaskConfigInfoService.selectTeTaskConfigInfoById(inspectionTask.getTeTaskConfigId()); + teTaskConfigInfo.setTaskName(inspectionTask.getTaskName()); + teTaskConfigInfoService.updateTeTaskConfigInfo(teTaskConfigInfo); + return inspectionTaskMapper.updateInspectionTask(inspectionTask); + } + + /** + * 批量删除巡检任务 + * + * @param ids 需要删除的巡检任务主键 + * @return 结果 + */ + @Override + public int deleteInspectionTaskByIds(String[] ids) + { + // 先删除关联表数据 + inspectionTaskWaypointMapper.deleteTaskWaypointByTaskIds(ids); + // 批量查询巡检任务 + List inspectionTasks = this.baseMapper.selectBatchIds(Arrays.asList(ids)); + // 批量删除任务 + teTaskConfigInfoService.deleteTeTaskConfigInfoByIds(inspectionTasks.stream().map(InspectionTask::getTeTaskConfigId).toArray(String[]::new)); + return inspectionTaskMapper.deleteInspectionTaskByIds(ids); + } + + /** + * 查询任务关联的点位列表 + * + * @param taskId 任务ID + * @return 点位集合 + */ + @Override + public List selectWaypointsByTaskId(String taskId) + { + return inspectionTaskWaypointMapper.selectWaypointsByTaskId(taskId); + } + + /** + * 绑定点位到任务 + * + * @param taskId 任务ID + * @param waypointIds 点位ID数组 + * @return 结果 + */ + @Override + public int bindWaypoints(String taskId, String[] waypointIds) + { + // 先删除旧的关联关系 + inspectionTaskWaypointMapper.deleteTaskWaypointByTaskId(taskId); + if (waypointIds == null || waypointIds.length == 0) { + return 0; + } + // 批量插入新的关联关系 + List list = new ArrayList<>(); + for (int i = 0; i < waypointIds.length; i++) { + InspectionTaskWaypoint tw = new InspectionTaskWaypoint(); + tw.setTaskId(taskId); + tw.setWaypointId(waypointIds[i]); + tw.setSortOrder(i + 1); + list.add(tw); + } + // 查询巡检任务 + InspectionTask inspectionTask = inspectionTaskMapper.selectInspectionTaskById(taskId); + // 查询点位 + List waypoints = inspectionTaskWaypointMapper.selectWaypointsByTaskId(taskId); + // 同步任务编排 + TeTaskOrchestraVO teTaskOrchestraVO = TeTaskOrchestraVO.builder().taskId(inspectionTask.getTeTaskConfigId()).itemIds(waypoints.stream().map(InspectionWaypoint::getDetectItemId).collect(Collectors.toList())).build(); + teTaskOrchestrationService.insertTeTaskOrchestration(teTaskOrchestraVO); + return inspectionTaskWaypointMapper.batchInsertTaskWaypoint(list); + } + + /** + * 解绑任务的点位 + * + * @param taskId 任务ID + * @return 结果 + */ + @Override + public int unbindWaypoints(String taskId) + { + return inspectionTaskWaypointMapper.deleteTaskWaypointByTaskId(taskId); + } +} diff --git a/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionWaypointServiceImpl.java b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionWaypointServiceImpl.java new file mode 100644 index 0000000..7782cff --- /dev/null +++ b/cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/InspectionWaypointServiceImpl.java @@ -0,0 +1,119 @@ +package com.cmvr.inspection.service.impl; + +import java.util.List; +import java.util.UUID; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cmvr.inspection.domain.vo.InspectionWaypointVo; +import com.cmvr.inspection.mapper.InspectionTaskWaypointMapper; +import com.cmvr.test.model.domain.TeDetectionItem; +import com.cmvr.test.service.ITeDetectionItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.cmvr.common.utils.DateUtils; +import com.cmvr.common.utils.SecurityUtils; +import com.cmvr.inspection.mapper.InspectionWaypointMapper; +import com.cmvr.inspection.domain.InspectionWaypoint; +import com.cmvr.inspection.service.IInspectionWaypointService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 巡检点位Service业务层处理 + * + * @author cmvr-iot + * @since 2026-05-29 + */ +@Service +@Transactional +public class InspectionWaypointServiceImpl extends ServiceImpl implements IInspectionWaypointService +{ + @Autowired + private InspectionWaypointMapper inspectionWaypointMapper; + + /** 任务点位关联 mapper */ + @Autowired + private InspectionTaskWaypointMapper inspectionTaskWaypointMapper; + + /** 检测项配置service */ + @Autowired + private ITeDetectionItemService teDetectionItemService; + + /** + * 查询巡检点位 + * + * @param id 巡检点位主键 + * @return 巡检点位 + */ + @Override + public InspectionWaypoint selectInspectionWaypointById(String id) + { + return inspectionWaypointMapper.selectInspectionWaypointById(id); + } + + /** + * 查询巡检点位列表 + * + * @param inspectionWaypoint 巡检点位 + * @return 巡检点位 + */ + @Override + public List selectInspectionWaypointList(InspectionWaypoint inspectionWaypoint) + { + return inspectionWaypointMapper.selectInspectionWaypointVoList(inspectionWaypoint); + } + + /** + * 新增巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + @Override + public int insertInspectionWaypoint(InspectionWaypoint inspectionWaypoint) + { + // 生成UUID作为主键 + if (inspectionWaypoint.getId() == null || inspectionWaypoint.getId().isEmpty()) { + inspectionWaypoint.setId(UUID.randomUUID().toString().replace("-", "")); + } + inspectionWaypoint.setCreateTime(DateUtils.getNowDate()); + inspectionWaypoint.setCreateBy(SecurityUtils.getUsername()); + TeDetectionItem teDetectionItem = TeDetectionItem.builder().detectName(inspectionWaypoint.getWaypointName()).groupId(7L).build(); + teDetectionItemService.insertTeDetectionItem(teDetectionItem); + inspectionWaypoint.setDetectItemId(teDetectionItem.getId()); + return inspectionWaypointMapper.insertInspectionWaypoint(inspectionWaypoint); + } + + /** + * 修改巡检点位 + * + * @param inspectionWaypoint 巡检点位 + * @return 结果 + */ + @Override + public int updateInspectionWaypoint(InspectionWaypoint inspectionWaypoint) + { + inspectionWaypoint.setUpdateTime(DateUtils.getNowDate()); + inspectionWaypoint.setUpdateBy(SecurityUtils.getUsername()); + return inspectionWaypointMapper.updateInspectionWaypoint(inspectionWaypoint); + } + + /** + * 批量删除巡检点位 + * + * @param ids 需要删除的巡检点位主键 + * @return 结果 + */ + @Override + public int deleteInspectionWaypointByIds(String[] ids) + { + // 先删除关联表数据 + inspectionTaskWaypointMapper.deleteTaskWaypointByWaypointIds(ids); + for(String id : ids) { + // 查询数据后删除绑定的检测项 + InspectionWaypoint inspectionWaypoint = inspectionWaypointMapper.selectInspectionWaypointById(id); + teDetectionItemService.deleteTeDetectionItemById(inspectionWaypoint.getDetectItemId()); + } + return inspectionWaypointMapper.deleteInspectionWaypointByIds(ids); + } + +} diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionAlarmMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionAlarmMapper.xml new file mode 100644 index 0000000..02922f9 --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionAlarmMapper.xml @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, alarm_code, task_instance_id, task_id, task_name, robot_id, robot_name, alarm_level, alarm_type, alarm_title, alarm_content, alarm_location, alarm_time, handle_status, handler, handle_time, handle_remark, evidence_image from inspection_alarm + + + + + + + + insert into inspection_alarm + + id, + create_by, + create_time, + update_by, + update_time, + remark, + alarm_code, + task_instance_id, + task_id, + task_name, + robot_id, + robot_name, + alarm_level, + alarm_type, + alarm_title, + alarm_content, + alarm_location, + alarm_time, + handle_status, + handler, + handle_time, + handle_remark, + evidence_image, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{alarmCode}, + #{taskInstanceId}, + #{taskId}, + #{taskName}, + #{robotId}, + #{robotName}, + #{alarmLevel}, + #{alarmType}, + #{alarmTitle}, + #{alarmContent}, + #{alarmLocation}, + #{alarmTime}, + #{handleStatus}, + #{handler}, + #{handleTime}, + #{handleRemark}, + #{evidenceImage}, + + + + + update inspection_alarm + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + alarm_code = #{alarmCode}, + task_instance_id = #{taskInstanceId}, + task_id = #{taskId}, + task_name = #{taskName}, + robot_id = #{robotId}, + robot_name = #{robotName}, + alarm_level = #{alarmLevel}, + alarm_type = #{alarmType}, + alarm_title = #{alarmTitle}, + alarm_content = #{alarmContent}, + alarm_location = #{alarmLocation}, + alarm_time = #{alarmTime}, + handle_status = #{handleStatus}, + handler = #{handler}, + handle_time = #{handleTime}, + handle_remark = #{handleRemark}, + evidence_image = #{evidenceImage}, + + where id = #{id} + + + + delete from inspection_alarm where id = #{id} + + + + delete from inspection_alarm where id in + + #{id} + + + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionMapMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionMapMapper.xml new file mode 100644 index 0000000..464afa5 --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionMapMapper.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, map_name, map_source_robot_id, map_source_name, map_file_path, status, map_desc from inspection_map + + + + + + + + insert into inspection_map + + id, + create_by, + create_time, + update_by, + update_time, + remark, + map_name, + map_source_robot_id, + map_source_name, + map_file_path, + status, + map_desc, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{mapName}, + #{mapSourceRobotId}, + #{mapSourceName}, + #{mapFilePath}, + #{status}, + #{mapDesc}, + + + + + update inspection_map + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + map_name = #{mapName}, + map_source_robot_id = #{mapSourceRobotId}, + map_source_name = #{mapSourceName}, + map_file_path = #{mapFilePath}, + status = #{status}, + map_desc = #{mapDesc}, + + where id = #{id} + + + + delete from inspection_map where id = #{id} + + + + delete from inspection_map where id in + + #{id} + + + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionRobotMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionRobotMapper.xml new file mode 100644 index 0000000..fc64fd0 --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionRobotMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, robot_code, robot_name, robot_model, robot_type, ip_address, port, current_map_id, status, battery_level, current_position from inspection_robot + + + + + + + + insert into inspection_robot + + id, + create_by, + create_time, + update_by, + update_time, + remark, + robot_code, + robot_name, + robot_model, + robot_type, + ip_address, + port, + current_map_id, + status, + battery_level, + current_position, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{robotCode}, + #{robotName}, + #{robotModel}, + #{robotType}, + #{ipAddress}, + #{port}, + #{currentMapId}, + #{status}, + #{batteryLevel}, + #{currentPosition}, + + + + + update inspection_robot + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + robot_code = #{robotCode}, + robot_name = #{robotName}, + robot_model = #{robotModel}, + robot_type = #{robotType}, + ip_address = #{ipAddress}, + port = #{port}, + current_map_id = #{currentMapId}, + status = #{status}, + battery_level = #{batteryLevel}, + current_position = #{currentPosition}, + + where id = #{id} + + + + delete from inspection_robot where id = #{id} + + + + delete from inspection_robot where id in + + #{id} + + + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml new file mode 100644 index 0000000..2c4fb17 --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskInstanceMapper.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, task_id, robot_id, status, start_time, end_time from inspection_task_instance + + + + + + + + insert into inspection_task_instance + + id, + create_by, + create_time, + update_by, + update_time, + remark, + task_id, + robot_id, + status, + start_time, + end_time, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{taskId}, + #{robotId}, + #{status}, + #{startTime}, + #{endTime}, + + + + + update inspection_task_instance + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + task_id = #{taskId}, + robot_id = #{robotId}, + status = #{status}, + start_time = #{startTime}, + end_time = #{endTime}, + + where id = #{id} + + + + delete from inspection_task_instance where id = #{id} + + + + delete from inspection_task_instance where id in + + #{id} + + + + + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskMapper.xml new file mode 100644 index 0000000..c07dbdc --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskMapper.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, task_code, task_name, task_type from inspection_task + + + + + + + + insert into inspection_task + + id, + create_by, + create_time, + update_by, + update_time, + remark, + task_code, + task_name, + task_type, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{taskCode}, + #{taskName}, + #{taskType}, + + + + + update inspection_task + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + task_code = #{taskCode}, + task_name = #{taskName}, + task_type = #{taskType}, + + where id = #{id} + + + + delete from inspection_task where id = #{id} + + + + delete from inspection_task where id in + + #{id} + + + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskWaypointMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskWaypointMapper.xml new file mode 100644 index 0000000..5c2c809 --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionTaskWaypointMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + insert into inspection_task_waypoint (task_id, waypoint_id, sort_order) values + + (#{item.taskId}, #{item.waypointId}, #{item.sortOrder}) + + + + + delete from inspection_task_waypoint where task_id = #{taskId} + + + + delete from inspection_task_waypoint where waypoint_id = #{waypointId} + + + + delete from inspection_task_waypoint where task_id in + + #{taskId} + + + + + delete from inspection_task_waypoint where waypoint_id in + + #{waypointId} + + + diff --git a/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionWaypointMapper.xml b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionWaypointMapper.xml new file mode 100644 index 0000000..f518bcf --- /dev/null +++ b/cmvr-iot-inspection/src/main/resources/mapper/inspection/InspectionWaypointMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_time, update_by, update_time, remark, waypoint_name, enabled, sort_order, detect_item_id, map_id from inspection_waypoint + + + + + + + + insert into inspection_waypoint + + id, + create_by, + create_time, + update_by, + update_time, + remark, + waypoint_name, + enabled, + sort_order, + detect_item_id, + map_id, + + + #{id}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{waypointName}, + #{enabled}, + #{sortOrder}, + #{detectItemId}, + #{mapId}, + + + + + update inspection_waypoint + + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + waypoint_name = #{waypointName}, + enabled = #{enabled}, + sort_order = #{sortOrder}, + detect_item_id = #{detectItemId}, + map_id = #{mapId}, + + where id = #{id} + + + + delete from inspection_waypoint where id = #{id} + + + + delete from inspection_waypoint where id in + + #{id} + + + + + diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java index df50c0c..35fa744 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeDetectionItem.java @@ -9,10 +9,14 @@ import com.cmvr.common.core.domain.BaseEntity; import com.cmvr.test.enums.LoopNodeTypeEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import lombok.*; @Data @ApiModel("检测项配置") +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = false) public class TeDetectionItem extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java index ab655de..3612317 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/domain/TeTaskConfigInfo.java @@ -7,12 +7,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.cmvr.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; @EqualsAndHashCode(callSuper = true) @Data @ApiModel("任务配置信息") +@Builder +@AllArgsConstructor +@NoArgsConstructor public class TeTaskConfigInfo extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java index f6807ad..a36223b 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/model/vo/TeTaskOrchestraVO.java @@ -2,13 +2,17 @@ package com.cmvr.test.model.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import lombok.*; import javax.validation.constraints.NotEmpty; import java.util.List; @Data @ApiModel("任务编排VO") +@Builder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode public class TeTaskOrchestraVO { @ApiModelProperty("id") @NotEmpty(message = "任务ID不能为空") diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java index 3e837e0..203b4f0 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/ITeTaskOrchestrationService.java @@ -21,7 +21,7 @@ public interface ITeTaskOrchestrationService extends IService queryByTaskId(String taskId); + List queryByTaskId(String taskId); /** * 新增任务编排 @@ -29,22 +29,29 @@ public interface ITeTaskOrchestrationService extends IService queryTaskDetail(String taskId); + List queryTaskDetail(String taskId); /** * 构建试运行任务 */ - public String buildTrialTask(String itemId); + String buildTrialTask(String itemId); } diff --git a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java index 9bae37f..36ba4b0 100644 --- a/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java +++ b/cmvr-iot-test/src/main/java/com/cmvr/test/service/impl/TeTaskConfigInfoServiceImpl.java @@ -10,7 +10,9 @@ import com.cmvr.test.mapper.TeTaskConfigInfoMapper; import com.cmvr.test.model.domain.TeTaskConfigInfo; import com.cmvr.test.model.vo.TeTaskConfigInfoVO; import com.cmvr.test.service.ITeTaskConfigInfoService; +import com.cmvr.test.service.ITeTaskOrchestrationService; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.Arrays; @@ -22,8 +24,10 @@ import java.util.List; * @author cmvr-iot */ @Service +@RequiredArgsConstructor public class TeTaskConfigInfoServiceImpl extends ServiceImpl implements ITeTaskConfigInfoService { + private final ITeTaskOrchestrationService taskOrchestrationService; /** * 查询任务流程编排 * @@ -91,6 +95,8 @@ public class TeTaskConfigInfoServiceImpl extends ServiceImpl implements ITeTaskOrchestrationService { - - private final ITeTaskConfigInfoService taskConfigInfoService; + @Autowired + @Lazy + private ITeTaskConfigInfoService taskConfigInfoService; @Override public List queryByTaskId(String taskId) { @@ -80,10 +82,21 @@ public class TeTaskOrchestrationServiceImpl extends ServiceImpl wrapper = Wrappers.lambdaQuery(); wrapper.eq(TeTaskOrchestration::getTaskId, id); - return this.baseMapper.delete(wrapper); + this.baseMapper.delete(wrapper); + } + + /** + * 根据任务IDs删除编排信息 + */ + @Override + public void deleteByTaskIds(String[] idArr) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + //数组转List,精准匹配Collection入参的in方法 + wrapper.in(TeTaskOrchestration::getTaskId, Arrays.asList(idArr)); + this.baseMapper.delete(wrapper); } /** diff --git a/cmvr-iot-ti/src/main/java/com/cmvr/ti/model/domain/TiVehicleFunction.java b/cmvr-iot-ti/src/main/java/com/cmvr/ti/model/domain/TiVehicleFunction.java index 46bb501..ba9a136 100644 --- a/cmvr-iot-ti/src/main/java/com/cmvr/ti/model/domain/TiVehicleFunction.java +++ b/cmvr-iot-ti/src/main/java/com/cmvr/ti/model/domain/TiVehicleFunction.java @@ -6,7 +6,9 @@ import com.cmvr.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; +@EqualsAndHashCode(callSuper = true) @Data @ApiModel("触控交互--车机功能") public class TiVehicleFunction extends BaseEntity { @@ -25,7 +27,4 @@ public class TiVehicleFunction extends BaseEntity { @ApiModelProperty("图标URL") private String iconUrl; - - @ApiModelProperty("备注") - private String remark; } diff --git a/pom.xml b/pom.xml index dc11d30..2887975 100644 --- a/pom.xml +++ b/pom.xml @@ -302,6 +302,13 @@ ${cmvr-iot.version} + + + com.cmvr + cmvr-iot-inspection + ${cmvr-iot.version} + + cn.hutool @@ -338,6 +345,7 @@ cmvr-iot-vi cmvr-iot-ti cmvr-iot-evaluation + cmvr-iot-inspection pom diff --git a/sql/inspection_module.sql b/sql/inspection_module.sql new file mode 100644 index 0000000..a1aa9b0 --- /dev/null +++ b/sql/inspection_module.sql @@ -0,0 +1,143 @@ +-- ---------------------------- +-- 智能巡检模块数据库表结构 +-- ---------------------------- + +-- 1. 巡检机器人表 +DROP TABLE IF EXISTS `inspection_robot`; +CREATE TABLE `inspection_robot` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `robot_code` varchar(64) DEFAULT NULL COMMENT '机器人编码', + `robot_name` varchar(100) NOT NULL COMMENT '机器人名称', + `robot_model` varchar(100) DEFAULT NULL COMMENT '机器人型号', + `robot_type` varchar(50) DEFAULT NULL COMMENT '机器人类型', + `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址', + `port` int(11) DEFAULT NULL COMMENT '端口号', + `current_map_id` varchar(64) DEFAULT NULL COMMENT '当前地图ID', + `status` char(1) DEFAULT '0' COMMENT '状态(0在线 1离线 2充电中 3巡检中)', + `battery_level` int(3) DEFAULT NULL COMMENT '电量百分比', + `current_position` varchar(200) DEFAULT NULL COMMENT '当前位置', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_robot_code` (`robot_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检机器人表'; + +-- 2. 巡检地图表 +DROP TABLE IF EXISTS `inspection_map`; +CREATE TABLE `inspection_map` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `map_name` varchar(100) NOT NULL COMMENT '地图名称', + `map_source_robot_id` varchar(64) DEFAULT NULL COMMENT '地图来源的机器人id', + `map_source_name` varchar(100) DEFAULT NULL COMMENT '地图来源的地图名称', + `map_file_path` varchar(500) DEFAULT NULL COMMENT '地图文件路径', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `map_desc` varchar(500) DEFAULT NULL COMMENT '地图描述', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检地图表'; + +-- 3. 巡检任务表(不再包含机器人信息) +DROP TABLE IF EXISTS `inspection_task`; +CREATE TABLE `inspection_task` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `task_code` varchar(64) DEFAULT NULL COMMENT '任务编码', + `task_name` varchar(100) NOT NULL COMMENT '任务名称', + `task_type` char(1) DEFAULT '1' COMMENT '任务类型(1巡检任务 2讲解任务)', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_code` (`task_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务表'; + +-- 4. 巡检点位表(不再包含任务ID,通过关联表关联) +DROP TABLE IF EXISTS `inspection_waypoint`; +CREATE TABLE `inspection_waypoint` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `waypoint_name` varchar(100) NOT NULL COMMENT '点位名称', + `enabled` char(1) DEFAULT '0' COMMENT '是否启用(0启用 1禁用)', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', + `detect_item_id` varchar(64) DEFAULT NULL COMMENT '检测项ID', + `map_id` varchar(64) DEFAULT NULL COMMENT '地图ID', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检点位表'; + +-- 4.1 任务与点位关联表(多对多) +DROP TABLE IF EXISTS `inspection_task_waypoint`; +CREATE TABLE `inspection_task_waypoint` ( + `task_id` varchar(64) NOT NULL COMMENT '任务ID', + `waypoint_id` varchar(64) NOT NULL COMMENT '点位ID', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', + PRIMARY KEY (`task_id`, `waypoint_id`), + KEY `idx_task_id` (`task_id`), + KEY `idx_waypoint_id` (`waypoint_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务与点位关联表'; + +-- 4.2 巡检任务执行实例表 +DROP TABLE IF EXISTS `inspection_task_instance`; +CREATE TABLE `inspection_task_instance` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `task_id` varchar(64) NOT NULL COMMENT '任务ID', + `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', + `status` char(1) DEFAULT '0' COMMENT '执行状态(0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停)', + `start_time` datetime DEFAULT NULL COMMENT '开始时间', + `end_time` datetime DEFAULT NULL COMMENT '结束时间', + PRIMARY KEY (`id`), + KEY `idx_task_id` (`task_id`), + KEY `idx_robot_id` (`robot_id`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务执行实例表'; + +-- 5. 巡检告警表(增加任务执行实例ID) +DROP TABLE IF EXISTS `inspection_alarm`; +CREATE TABLE `inspection_alarm` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `create_by` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_by` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `alarm_code` varchar(64) DEFAULT NULL COMMENT '告警编码', + `task_instance_id` varchar(64) DEFAULT NULL COMMENT '任务执行实例ID', + `task_id` varchar(64) DEFAULT NULL COMMENT '任务ID', + `task_name` varchar(100) DEFAULT NULL COMMENT '任务名称', + `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', + `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称', + `alarm_level` char(1) DEFAULT '2' COMMENT '告警级别(1提示 2警告 3严重)', + `alarm_type` char(1) DEFAULT NULL COMMENT '告警类型(1设备异常 2环境异常 3任务异常 4通信异常)', + `alarm_title` varchar(200) DEFAULT NULL COMMENT '告警标题', + `alarm_content` text COMMENT '告警内容', + `alarm_location` varchar(200) DEFAULT NULL COMMENT '告警位置', + `alarm_time` datetime DEFAULT NULL COMMENT '告警时间', + `handle_status` char(1) DEFAULT '0' COMMENT '处理状态(0未处理 1处理中 2已处理 3已忽略)', + `handler` varchar(64) DEFAULT NULL COMMENT '处理人', + `handle_time` datetime DEFAULT NULL COMMENT '处理时间', + `handle_remark` varchar(500) DEFAULT NULL COMMENT '处理说明', + `evidence_image` varchar(500) DEFAULT NULL COMMENT '图片证据', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_alarm_code` (`alarm_code`), + KEY `idx_task_instance_id` (`task_instance_id`), + KEY `idx_task_id` (`task_id`), + KEY `idx_robot_id` (`robot_id`), + KEY `idx_alarm_time` (`alarm_time`), + KEY `idx_handle_status` (`handle_status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检告警表'; diff --git a/智能巡检模块-创建说明.md b/智能巡检模块-创建说明.md new file mode 100644 index 0000000..b9a7e49 --- /dev/null +++ b/智能巡检模块-创建说明.md @@ -0,0 +1,276 @@ +# 智能巡检模块 - 已创建文件清单 + +## ✅ 已完成创建的文件 + +### 1. 模块配置 +- ✅ `cmvr-iot-inspection/pom.xml` - 模块Maven配置 +- ✅ `pom.xml` - 父POM已添加模块依赖 +- ✅ `cmvr-iot-admin/pom.xml` - Admin模块已添加inspection依赖 + +### 2. 实体类(Domain)- 5个 +- ✅ `InspectionRobot.java` - 巡检机器人实体 +- ✅ `InspectionMap.java` - 巡检地图实体 +- ✅ `InspectionTask.java` - 巡检任务实体 +- ✅ `InspectionWaypoint.java` - 巡检点位实体 +- ✅ `InspectionAlarm.java` - 巡检告警实体 + +--- + +## 📋 还需要创建的文件(参照 cmvr-iot-device 模块模式) + +### 3. Mapper 接口(5个) +位置:`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/` + +需要创建: +- `InspectionRobotMapper.java` +- `InspectionMapMapper.java` +- `InspectionTaskMapper.java` +- `InspectionWaypointMapper.java` +- `InspectionAlarmMapper.java` + +参考模板:`DeDeviceRegistrationMapper.java` + +### 4. Mapper XML(5个) +位置:`cmvr-iot-inspection/src/main/resources/mapper/inspection/` + +需要创建: +- `InspectionRobotMapper.xml` +- `InspectionMapMapper.xml` +- `InspectionTaskMapper.xml` +- `InspectionWaypointMapper.xml` +- `InspectionAlarmMapper.xml` + +参考模板:`DeDeviceRegistrationMapper.xml` + +### 5. Service 接口(5个) +位置:`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/` + +需要创建: +- `IInspectionRobotService.java` +- `IInspectionMapService.java` +- `IInspectionTaskService.java` +- `IInspectionWaypointService.java` +- `IInspectionAlarmService.java` + +参考模板:`IDeDeviceRegistrationService.java` + +### 6. Service 实现类(5个) +位置:`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/` + +需要创建: +- `InspectionRobotServiceImpl.java` +- `InspectionMapServiceImpl.java` +- `InspectionTaskServiceImpl.java` +- `InspectionWaypointServiceImpl.java` +- `InspectionAlarmServiceImpl.java` + +参考模板:`DeDeviceRegistrationServiceImpl.java` + +### 7. Controller(5个) +位置:`cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/` + +需要创建: +- `InspectionRobotController.java` +- `InspectionMapController.java` +- `InspectionTaskController.java` +- `InspectionWaypointController.java` +- `InspectionAlarmController.java` + +参考模板:`DeDeviceRegistrationController.java` + +### 8. 数据库脚本 +位置:项目根目录或 `sql/` 目录 + +需要创建: +- `inspection_module.sql` - 包含5张表的建表语句 + +--- + +## 🗄️ 数据库表结构 + +### 1. inspection_robot (巡检机器人表) +```sql +CREATE TABLE `inspection_robot` ( + `id` varchar(64) NOT NULL, + `robot_code` varchar(64) NOT NULL COMMENT '机器人编码', + `robot_name` varchar(100) NOT NULL COMMENT '机器人名称', + `robot_model` varchar(100) DEFAULT NULL COMMENT '机器人型号', + `robot_type` varchar(50) DEFAULT NULL COMMENT '机器人类型', + `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址', + `port` int(11) DEFAULT NULL COMMENT '端口号', + `map_id` varchar(64) DEFAULT NULL COMMENT '关联地图ID', + `status` char(1) DEFAULT '0' COMMENT '状态(0在线 1离线 2充电中 3巡检中)', + `battery_level` int(3) DEFAULT NULL COMMENT '电量百分比', + `current_position` varchar(200) DEFAULT NULL COMMENT '当前位置', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT '', + `create_time` datetime DEFAULT NULL, + `update_by` varchar(64) DEFAULT '', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_robot_code` (`robot_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +``` + +### 2. inspection_map (巡检地图表) +```sql +CREATE TABLE `inspection_map` ( + `id` varchar(64) NOT NULL, + `map_code` varchar(64) NOT NULL COMMENT '地图编码', + `map_name` varchar(100) NOT NULL COMMENT '地图名称', + `map_type` char(1) DEFAULT '1' COMMENT '地图类型(1室内 2室外)', + `map_file_path` varchar(500) DEFAULT NULL COMMENT '地图文件路径', + `map_image_path` varchar(500) DEFAULT NULL COMMENT '地图图片路径', + `resolution` decimal(10,4) DEFAULT NULL COMMENT '分辨率(米/像素)', + `width` int(11) DEFAULT NULL COMMENT '地图宽度(像素)', + `height` int(11) DEFAULT NULL COMMENT '地图高度(像素)', + `origin_x` decimal(10,2) DEFAULT NULL COMMENT '原点X坐标', + `origin_y` decimal(10,2) DEFAULT NULL COMMENT '原点Y坐标', + `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT '', + `create_time` datetime DEFAULT NULL, + `update_by` varchar(64) DEFAULT '', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_map_code` (`map_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +``` + +### 3. inspection_task (巡检任务表) +```sql +CREATE TABLE `inspection_task` ( + `id` varchar(64) NOT NULL, + `task_code` varchar(64) NOT NULL COMMENT '任务编码', + `task_name` varchar(100) NOT NULL COMMENT '任务名称', + `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', + `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称', + `map_id` varchar(64) DEFAULT NULL COMMENT '地图ID', + `map_name` varchar(100) DEFAULT NULL COMMENT '地图名称', + `task_type` char(1) DEFAULT '1' COMMENT '任务类型(1立即执行 2定时执行 3周期执行)', + `priority` char(1) DEFAULT '2' COMMENT '优先级(1低 2中 3高)', + `waypoints` text COMMENT '巡检点位列表(JSON格式)', + `scheduled_start_time` datetime DEFAULT NULL COMMENT '计划开始时间', + `scheduled_end_time` datetime DEFAULT NULL COMMENT '计划结束时间', + `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间', + `actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间', + `status` char(1) DEFAULT '0' COMMENT '任务状态(0待执行 1执行中 2已完成 3已取消 4失败)', + `progress` int(3) DEFAULT '0' COMMENT '进度百分比', + `cron_expression` varchar(100) DEFAULT NULL COMMENT 'Cron表达式', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT '', + `create_time` datetime DEFAULT NULL, + `update_by` varchar(64) DEFAULT '', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_task_code` (`task_code`), + KEY `idx_robot_id` (`robot_id`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +``` + +### 4. inspection_waypoint (巡检点位表) +```sql +CREATE TABLE `inspection_waypoint` ( + `id` varchar(64) NOT NULL, + `waypoint_code` varchar(64) NOT NULL COMMENT '点位编码', + `waypoint_name` varchar(100) NOT NULL COMMENT '点位名称', + `map_id` varchar(64) NOT NULL COMMENT '所属地图ID', + `map_name` varchar(100) DEFAULT NULL COMMENT '所属地图名称', + `x_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'X坐标', + `y_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'Y坐标', + `z_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'Z坐标', + `orientation` decimal(5,2) DEFAULT NULL COMMENT '朝向角度', + `waypoint_type` char(1) DEFAULT '1' COMMENT '点位类型(1普通点位 2充电点 3必经点)', + `dwell_time` int(11) DEFAULT '0' COMMENT '停留时长(秒)', + `enabled` char(1) DEFAULT '0' COMMENT '是否启用(0启用 1禁用)', + `sort_order` int(11) DEFAULT '0' COMMENT '排序号', + `remark` varchar(500) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT '', + `create_time` datetime DEFAULT NULL, + `update_by` varchar(64) DEFAULT '', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_waypoint_code` (`waypoint_code`), + KEY `idx_map_id` (`map_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +``` + +### 5. inspection_alarm (巡检告警表) +```sql +CREATE TABLE `inspection_alarm` ( + `id` varchar(64) NOT NULL, + `alarm_code` varchar(64) NOT NULL COMMENT '告警编码', + `task_id` varchar(64) DEFAULT NULL COMMENT '任务ID', + `task_name` varchar(100) DEFAULT NULL COMMENT '任务名称', + `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', + `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称', + `alarm_level` char(1) DEFAULT '2' COMMENT '告警级别(1提示 2警告 3严重)', + `alarm_type` char(1) DEFAULT NULL COMMENT '告警类型(1设备异常 2环境异常 3任务异常 4通信异常)', + `alarm_title` varchar(200) DEFAULT NULL COMMENT '告警标题', + `alarm_content` text COMMENT '告警内容', + `alarm_location` varchar(200) DEFAULT NULL COMMENT '告警位置', + `alarm_time` datetime DEFAULT NULL COMMENT '告警时间', + `handle_status` char(1) DEFAULT '0' COMMENT '处理状态(0未处理 1处理中 2已处理 3已忽略)', + `handler` varchar(64) DEFAULT NULL COMMENT '处理人', + `handle_time` datetime DEFAULT NULL COMMENT '处理时间', + `handle_remark` varchar(500) DEFAULT NULL COMMENT '处理说明', + `evidence_image` varchar(500) DEFAULT NULL COMMENT '图片证据', + `create_by` varchar(64) DEFAULT '', + `create_time` datetime DEFAULT NULL, + `update_by` varchar(64) DEFAULT '', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_alarm_code` (`alarm_code`), + KEY `idx_task_id` (`task_id`), + KEY `idx_robot_id` (`robot_id`), + KEY `idx_alarm_time` (`alarm_time`), + KEY `idx_handle_status` (`handle_status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +``` + +--- + +## 🚀 后续步骤 + +1. **创建 Mapper 层**:参照 `DeDeviceRegistrationMapper` 创建5个Mapper接口和XML +2. **创建 Service 层**:参照 `IDeDeviceRegistrationService` 和实现类创建5个Service +3. **创建 Controller 层**:参照 `DeDeviceRegistrationController` 创建5个Controller +4. **执行数据库脚本**:在MySQL中执行上述5张表的建表SQL +5. **配置菜单权限**:在系统管理中添加智能巡检相关菜单 +6. **开发前端页面**:创建对应的Vue页面 + +--- + +## 📁 完整目录结构 + +``` +cmvr-iot-inspection/ +├── pom.xml +└── src/main/ + ├── java/com/cmvr/inspection/ + │ ├── domain/ + │ │ ├── InspectionRobot.java ✅ + │ │ ├── InspectionMap.java ✅ + │ │ ├── InspectionTask.java ✅ + │ │ ├── InspectionWaypoint.java ✅ + │ │ └── InspectionAlarm.java ✅ + │ ├── mapper/ (待创建) + │ ├── service/ (待创建) + │ │ └── impl/ (待创建) + └── resources/ + └── mapper/inspection/ (待创建) + +cmvr-iot-admin/src/main/java/com/cmvr/web/controller/ +└── inspection/ (待创建) +``` + +--- + +## 💡 关键注意事项 + +1. **不使用 @TableName 注解**:项目通过 MyBatis XML 映射表名 +2. **继承 BaseEntity**:包含 create_by, create_time, update_by, update_time 等公共字段 +3. **使用 UUID 主键**:`@TableId(value = "id", type = IdType.ASSIGN_UUID)` +4. **遵循命名规范**:表名使用下划线,类名使用驼峰 +5. **权限标识**:如 `inspection:robot:list`、`inspection:robot:add` 等