From c63e1307297a18b229ace9518b0e194fb898fb83 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 30 Sep 2025 11:27:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(video):=20=E6=B7=BB=E5=8A=A0=E5=B7=A1?= =?UTF-8?q?=E6=A3=80=E4=BB=BB=E5=8A=A1=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=8F=8A=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 InspectionTask 实体中新增 recordId 字段及其 getter/setter 方法 - 更新 InspectionTask 的 toString 方法以包含 recordId - 修改 InspectionTaskMapper.xml,增加 record_id 的映射和查询字段 - 新增巡检任务记录实体类 InspectionTaskRecord 及其相关属性与方法 - 创建巡检任务记录的控制器、服务层和数据访问层(Controller, Service, Mapper)- 实现巡检任务记录的增删改查接口,并支持导出 Excel 功能 - 配置 MyBatis XML 映射文件,完成数据库操作语句的编写 --- .../InspectionTaskRecordController.java | 72 ++++++++++ .../ruoyi/video/domain/InspectionTask.java | 13 ++ .../video/domain/InspectionTaskRecord.java | 128 ++++++++++++++++++ .../mapper/InspectionTaskRecordMapper.java | 42 ++++++ .../service/InspectionTaskRecordService.java | 29 ++++ .../impl/InspectionTaskRecordServiceImpl.java | 53 ++++++++ .../mapper/video/InspectionTaskMapper.xml | 15 +- .../video/InspectionTaskRecordMapper.xml | 100 ++++++++++++++ 8 files changed, 444 insertions(+), 8 deletions(-) create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/controller/InspectionTaskRecordController.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTaskRecord.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/mapper/InspectionTaskRecordMapper.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/InspectionTaskRecordService.java create mode 100644 ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskRecordServiceImpl.java create mode 100644 ruoyi-video/src/main/resources/mapper/video/InspectionTaskRecordMapper.xml diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/controller/InspectionTaskRecordController.java b/ruoyi-video/src/main/java/com/ruoyi/video/controller/InspectionTaskRecordController.java new file mode 100644 index 0000000..e293102 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/controller/InspectionTaskRecordController.java @@ -0,0 +1,72 @@ +package com.ruoyi.video.controller; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.video.domain.InspectionTaskRecord; +import com.ruoyi.video.service.InspectionTaskRecordService; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 巡检任务记录Controller + */ +@RestController +@RequestMapping("/video/inspectionRecord") +public class InspectionTaskRecordController extends BaseController { + + private final InspectionTaskRecordService recordService; + + public InspectionTaskRecordController(InspectionTaskRecordService recordService) { + this.recordService = recordService; + } + + /** 列表 */ + @GetMapping("/list") + public TableDataInfo list(InspectionTaskRecord record) { + startPage(); + List list = recordService.selectInspectionTaskRecordList(record); + return getDataTable(list); + } + + /** 导出 */ + @Log(title = "巡检任务记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InspectionTaskRecord record) { + List list = recordService.selectInspectionTaskRecordList(record); + ExcelUtil util = new ExcelUtil<>(InspectionTaskRecord.class); + util.exportExcel(response, list, "巡检任务记录数据"); + } + + /** 详情 */ + @GetMapping(value = "/{recordId}") + public AjaxResult getInfo(@PathVariable("recordId") Long recordId) { + return success(recordService.selectInspectionTaskRecordById(recordId)); + } + + /** 新增 */ + @Log(title = "巡检任务记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody InspectionTaskRecord record) { + return toAjax(recordService.insertInspectionTaskRecord(record)); + } + + /** 修改 */ + @Log(title = "巡检任务记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody InspectionTaskRecord record) { + return toAjax(recordService.updateInspectionTaskRecord(record)); + } + + /** 删除(批量) */ + @Log(title = "巡检任务记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{recordIds}") + public AjaxResult remove(@PathVariable Long[] recordIds) { + return toAjax(recordService.deleteInspectionTaskRecordByIds(recordIds)); + } +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTask.java b/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTask.java index 735e04d..4ccce35 100644 --- a/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTask.java +++ b/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTask.java @@ -18,6 +18,10 @@ public class InspectionTask extends BaseEntity { /** 巡检任务ID */ private Long taskId; + /** 最近记录ID */ + @Excel(name = "记录ID") + private Long recordId; + /** 任务名称 */ @Excel(name = "任务名称") private String taskName; @@ -78,6 +82,14 @@ public class InspectionTask extends BaseEntity { this.taskId = taskId; } + public Long getRecordId() { + return recordId; + } + + public void setRecordId(Long recordId) { + this.recordId = recordId; + } + public String getTaskName() { return taskName; } @@ -178,6 +190,7 @@ public class InspectionTask extends BaseEntity { public String toString() { return "InspectionTask{" + "taskId=" + taskId + + ", recordId=" + recordId + ", taskName='" + taskName + '\'' + ", deviceId=" + deviceId + ", deviceName='" + deviceName + '\'' + diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTaskRecord.java b/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTaskRecord.java new file mode 100644 index 0000000..683eb49 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/domain/InspectionTaskRecord.java @@ -0,0 +1,128 @@ +package com.ruoyi.video.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +import java.util.Date; + +/** + * 巡检任务记录对象 v_inspection_task_record + * + * @author generated + * @date 2025-09-30 + */ +public class InspectionTaskRecord extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 记录ID,主键 */ + private Long recordId; + + /** 执行时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "执行时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date executeTime; + + /** 执行时长(秒) */ + @Excel(name = "执行时长(秒)") + private Integer duration; + + /** 附件路径 */ + @Excel(name = "附件路径") + private String accessory; + + /** 巡检结果详情 */ + @Excel(name = "巡检结果") + private String result; + + /** 执行状态(0=成功,1=失败,2=部分成功) */ + @Excel(name = "执行状态", readConverterExp = "0=成功,1=失败,2=部分成功") + private Integer status; + + /** 删除标志(0=存在 2=删除) */ + private String delFlag; + + /** 备注 */ + @Excel(name = "备注") + private String remark; + + public Long getRecordId() { + return recordId; + } + + public void setRecordId(Long recordId) { + this.recordId = recordId; + } + + public Date getExecuteTime() { + return executeTime; + } + + public void setExecuteTime(Date executeTime) { + this.executeTime = executeTime; + } + + public Integer getDuration() { + return duration; + } + + public void setDuration(Integer duration) { + this.duration = duration; + } + + public String getAccessory() { + return accessory; + } + + public void setAccessory(String accessory) { + this.accessory = accessory; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + @Override + public String getRemark() { + return remark; + } + + @Override + public void setRemark(String remark) { + this.remark = remark; + } + + @Override + public String toString() { + return "InspectionTaskRecord{" + + "recordId=" + recordId + + ", executeTime=" + executeTime + + ", duration=" + duration + + ", accessory='" + accessory + '\'' + + ", result='" + result + '\'' + + ", status=" + status + + ", delFlag='" + delFlag + '\'' + + ", remark='" + remark + '\'' + + '}'; + } +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/mapper/InspectionTaskRecordMapper.java b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/InspectionTaskRecordMapper.java new file mode 100644 index 0000000..0f9b6d1 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/mapper/InspectionTaskRecordMapper.java @@ -0,0 +1,42 @@ +package com.ruoyi.video.mapper; + +import com.ruoyi.video.domain.InspectionTaskRecord; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 巡检任务记录Mapper接口 + */ +@Mapper +public interface InspectionTaskRecordMapper { + /** + * 查询巡检任务记录 + */ + InspectionTaskRecord selectInspectionTaskRecordByRecordId(Long recordId); + + /** + * 查询巡检任务记录列表 + */ + List selectInspectionTaskRecordList(InspectionTaskRecord record); + + /** + * 新增巡检任务记录 + */ + int insertInspectionTaskRecord(InspectionTaskRecord record); + + /** + * 修改巡检任务记录 + */ + int updateInspectionTaskRecord(InspectionTaskRecord record); + + /** + * 删除巡检任务记录 + */ + int deleteInspectionTaskRecordByRecordId(Long recordId); + + /** + * 批量删除巡检任务记录 + */ + int deleteInspectionTaskRecordByRecordIds(Long[] recordIds); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/InspectionTaskRecordService.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/InspectionTaskRecordService.java new file mode 100644 index 0000000..c8c3249 --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/InspectionTaskRecordService.java @@ -0,0 +1,29 @@ +package com.ruoyi.video.service; + +import com.ruoyi.video.domain.InspectionTaskRecord; + +import java.util.List; + +/** + * 巡检任务记录服务接口 + */ +public interface InspectionTaskRecordService { + + /** 查询列表 */ + List selectInspectionTaskRecordList(InspectionTaskRecord record); + + /** 按ID查询 */ + InspectionTaskRecord selectInspectionTaskRecordById(Long recordId); + + /** 新增 */ + int insertInspectionTaskRecord(InspectionTaskRecord record); + + /** 修改 */ + int updateInspectionTaskRecord(InspectionTaskRecord record); + + /** 批量删除 */ + int deleteInspectionTaskRecordByIds(Long[] recordIds); + + /** 删除单条 */ + int deleteInspectionTaskRecordById(Long recordId); +} diff --git a/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskRecordServiceImpl.java b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskRecordServiceImpl.java new file mode 100644 index 0000000..ec1a44b --- /dev/null +++ b/ruoyi-video/src/main/java/com/ruoyi/video/service/impl/InspectionTaskRecordServiceImpl.java @@ -0,0 +1,53 @@ +package com.ruoyi.video.service.impl; + +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.video.domain.InspectionTaskRecord; +import com.ruoyi.video.mapper.InspectionTaskRecordMapper; +import com.ruoyi.video.service.InspectionTaskRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class InspectionTaskRecordServiceImpl implements InspectionTaskRecordService { + + @Autowired + private InspectionTaskRecordMapper recordMapper; + + + @Override + public List selectInspectionTaskRecordList(InspectionTaskRecord record) { + return recordMapper.selectInspectionTaskRecordList(record); + } + + @Override + public InspectionTaskRecord selectInspectionTaskRecordById(Long recordId) { + return recordMapper.selectInspectionTaskRecordByRecordId(recordId); + } + + @Override + public int insertInspectionTaskRecord(InspectionTaskRecord record) { + if (record.getExecuteTime() == null) { + record.setExecuteTime(DateUtils.getNowDate()); + } + record.setCreateTime(DateUtils.getNowDate()); + return recordMapper.insertInspectionTaskRecord(record); + } + + @Override + public int updateInspectionTaskRecord(InspectionTaskRecord record) { + record.setUpdateTime(DateUtils.getNowDate()); + return recordMapper.updateInspectionTaskRecord(record); + } + + @Override + public int deleteInspectionTaskRecordByIds(Long[] recordIds) { + return recordMapper.deleteInspectionTaskRecordByRecordIds(recordIds); + } + + @Override + public int deleteInspectionTaskRecordById(Long recordId) { + return recordMapper.deleteInspectionTaskRecordByRecordId(recordId); + } +} diff --git a/ruoyi-video/src/main/resources/mapper/video/InspectionTaskMapper.xml b/ruoyi-video/src/main/resources/mapper/video/InspectionTaskMapper.xml index 71ae40a..e7e66eb 100644 --- a/ruoyi-video/src/main/resources/mapper/video/InspectionTaskMapper.xml +++ b/ruoyi-video/src/main/resources/mapper/video/InspectionTaskMapper.xml @@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -25,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select task_id, task_name, device_id, device_name, cron_expression, duration, + select task_id, record_id, task_name, device_id, device_name, cron_expression, duration, threshold, enable_detection, status, execute_count, alarm_count, last_execute_time, remark, create_by, create_time, update_by, update_time from v_inspection_task @@ -35,19 +36,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and task_name like concat('%', #{taskName}, '%') - and device_id = #{deviceId} + and device_id = #{deviceId} and device_name like concat('%', #{deviceName}, '%') and status = #{status} and enable_detection = #{enableDetection} order by create_time desc - - - + + + + and status = #{status} + and date(execute_time) = date(#{executeTime}) + and accessory like concat('%', #{accessory}, '%') + and del_flag = #{delFlag} + + order by create_time desc + + + + + + insert into v_inspection_task_record + + execute_time, + duration, + accessory, + result, + status, + create_by, + create_time, + update_by, + update_time, + del_flag, + remark, + + + #{executeTime}, + #{duration}, + #{accessory}, + #{result}, + #{status}, + #{createBy}, + now(), + #{updateBy}, + now(), + #{delFlag}, + #{remark}, + + + + + update v_inspection_task_record + + execute_time = #{executeTime}, + duration = #{duration}, + accessory = #{accessory}, + result = #{result}, + status = #{status}, + update_by = #{updateBy}, + update_time = now(), + del_flag = #{delFlag}, + remark = #{remark}, + + where record_id = #{recordId} + + + + delete from v_inspection_task_record where record_id = #{recordId} + + + + delete from v_inspection_task_record where record_id in + + #{id} + + +