liding
2026-06-29 e492288919d92b8667c5781675c7581b37208405
feat: 添加线路巡检和安全设施巡检模块

- 新增线路巡检功能 (LineInspection)
- 新增安全设施台账管理 (SafetyFacility)
- 新增隐患上报和整改验收功能 (HazardReport)
- 包含完整的实体类、DTO、Mapper、Service、Controller
- 添加数据库建表SQL脚本
已添加19个文件
1148 ■■■■■ 文件已修改
sql/device_inspection.sql 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/HazardReportController.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/LineInspectionController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/controller/SafetyFacilityController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/dto/HazardReportDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/dto/LineInspectionDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/dto/SafetyFacilityDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/mapper/HazardReportMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/mapper/LineInspectionMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/mapper/SafetyFacilityMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/pojo/HazardReport.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/pojo/LineInspection.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/pojo/SafetyFacility.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/IHazardReportService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/ILineInspectionService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/ISafetyFacilityService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/HazardReportServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/LineInspectionServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/device/service/impl/SafetyFacilityServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/device_inspection.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
-- çº¿è·¯å·¡æ£€å’Œå®‰å…¨è®¾æ–½å·¡æ£€æ¨¡å—SQL
-- 1. çº¿è·¯å·¡æ£€è®°å½•表
CREATE TABLE IF NOT EXISTS `line_inspection` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `task_name` VARCHAR(100) NOT NULL COMMENT '巡检任务名称',
    `inspection_type` VARCHAR(50) DEFAULT '线路巡检' COMMENT '巡检类型',
    `route_name` VARCHAR(100) COMMENT '线路名称',
    `device_id` BIGINT COMMENT '关联设备ID',
    `inspector_id` VARCHAR(50) COMMENT '巡检人ID',
    `inspector` VARCHAR(50) COMMENT '巡检人姓名',
    `inspection_time` DATETIME COMMENT '巡检时间',
    `inspection_result` VARCHAR(20) COMMENT '巡检结果:正常/异常',
    `hazard_description` TEXT COMMENT '隐患描述',
    `status` VARCHAR(20) DEFAULT '待巡检' COMMENT '状态:待巡检/进行中/已完成',
    `remarks` VARCHAR(500) COMMENT '备注',
    `deleted` INT DEFAULT 0 COMMENT '软删除标志:0=未删除,1=已删除',
    `create_user` INT COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_user` INT COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `tenant_id` BIGINT COMMENT '租户ID',
    `dept_id` BIGINT COMMENT '部门ID',
    PRIMARY KEY (`id`),
    KEY `idx_device_id` (`device_id`),
    KEY `idx_inspector_id` (`inspector_id`),
    KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='线路巡检记录表';
-- 2. å®‰å…¨è®¾æ–½å°è´¦è¡¨
CREATE TABLE IF NOT EXISTS `safety_facility` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `facility_name` VARCHAR(100) NOT NULL COMMENT '设施名称',
    `facility_type` VARCHAR(50) COMMENT '设施类型:消防器材/安全设备等',
    `location` VARCHAR(200) COMMENT '所在位置',
    `device_id` BIGINT COMMENT '关联设备ID',
    `status` VARCHAR(20) DEFAULT '正常' COMMENT '设施状态:正常/异常/停用',
    `last_inspection_time` DATETIME COMMENT '上次巡检时间',
    `next_inspection_time` DATETIME COMMENT '下次巡检时间',
    `responsibility_dept` VARCHAR(100) COMMENT '责任部门',
    `responsibility_person` VARCHAR(50) COMMENT '责任人',
    `remarks` VARCHAR(500) COMMENT '备注',
    `deleted` INT DEFAULT 0 COMMENT '软删除标志:0=未删除,1=已删除',
    `create_user` INT COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_user` INT COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `tenant_id` BIGINT COMMENT '租户ID',
    `dept_id` BIGINT COMMENT '部门ID',
    PRIMARY KEY (`id`),
    KEY `idx_facility_type` (`facility_type`),
    KEY `idx_status` (`status`),
    KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='安全设施台账表';
-- 3. é𐿂£ä¸ŠæŠ¥è®°å½•表
CREATE TABLE IF NOT EXISTS `hazard_report` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `report_type` VARCHAR(50) COMMENT '上报类型:线路巡检/安全设施巡检',
    `facility_id` BIGINT COMMENT '关联设施ID',
    `hazard_description` TEXT NOT NULL COMMENT '隐患描述',
    `severity` VARCHAR(20) COMMENT '严重程度:轻微/一般/严重',
    `reporter_id` VARCHAR(50) COMMENT '上报人ID',
    `reporter` VARCHAR(50) COMMENT '上报人姓名',
    `report_time` DATETIME COMMENT '上报时间',
    `rectification_status` VARCHAR(20) DEFAULT '待整改' COMMENT '整改状态:待整改/整改中/已完成',
    `rectification_person_id` VARCHAR(50) COMMENT '整改责任人ID',
    `rectification_person` VARCHAR(50) COMMENT '整改责任人姓名',
    `rectification_time` DATETIME COMMENT '整改完成时间',
    `rectification_description` TEXT COMMENT '整改描述',
    `acceptance_person_id` VARCHAR(50) COMMENT '验收人ID',
    `acceptance_person` VARCHAR(50) COMMENT '验收人姓名',
    `acceptance_time` DATETIME COMMENT '验收时间',
    `acceptance_result` VARCHAR(20) COMMENT '验收结果',
    `remarks` VARCHAR(500) COMMENT '备注',
    `deleted` INT DEFAULT 0 COMMENT '软删除标志:0=未删除,1=已删除',
    `create_user` INT COMMENT '创建人',
    `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_user` INT COMMENT '更新人',
    `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `tenant_id` BIGINT COMMENT '租户ID',
    `dept_id` BIGINT COMMENT '部门ID',
    PRIMARY KEY (`id`),
    KEY `idx_facility_id` (`facility_id`),
    KEY `idx_report_type` (`report_type`),
    KEY `idx_rectification_status` (`rectification_status`),
    KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='隐患上报记录表';
src/main/java/com/ruoyi/device/controller/HazardReportController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.HazardReportDto;
import com.ruoyi.device.pojo.HazardReport;
import com.ruoyi.device.service.IHazardReportService;
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
/**
 * é𐿂£ä¸ŠæŠ¥Controller
 * æä¾›é𐿂£ä¸ŠæŠ¥ã€æ•´æ”¹ã€éªŒæ”¶ç­‰åŠŸèƒ½
 */
@Tag(name = "隐患上报")
@RestController
@RequestMapping("/device/hazardReport")
@RequiredArgsConstructor
public class HazardReportController {
    private final IHazardReportService hazardReportService;
    /**
     * æŸ¥è¯¢é𐿂£ä¸ŠæŠ¥åˆ—表
     */
    @Operation(summary = "查询隐患上报列表")
    @GetMapping("/list")
    public AjaxResult list(Page<HazardReport> page, HazardReportDto dto) {
        return AjaxResult.success(hazardReportService.queryPage(page, dto));
    }
    /**
     * æ–°å¢žé𐿂£ä¸ŠæŠ¥
     */
    @Operation(summary = "新增隐患上报")
    @PostMapping("/add")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult add(@RequestBody HazardReportDto dto) {
        int result = hazardReportService.add(dto);
        if (result > 0) {
            return AjaxResult.success("上报成功");
        }
        return AjaxResult.error("上报失败");
    }
    /**
     * è®°å½•整改结果
     */
    @Operation(summary = "记录整改结果")
    @PostMapping("/rectify")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult rectify(@RequestBody HazardReportDto dto) {
        int result = hazardReportService.rectify(dto);
        if (result > 0) {
            return AjaxResult.success("整改记录成功");
        }
        return AjaxResult.error("整改记录失败");
    }
    /**
     * è®°å½•验收结果
     */
    @Operation(summary = "记录验收结果")
    @PostMapping("/accept")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult accept(@RequestBody HazardReportDto dto) {
        int result = hazardReportService.accept(dto);
        if (result > 0) {
            return AjaxResult.success("验收记录成功");
        }
        return AjaxResult.error("验收记录失败");
    }
    /**
     * åˆ é™¤é𐿂£ä¸ŠæŠ¥è®°å½•
     */
    @Operation(summary = "删除隐患上报记录")
    @DeleteMapping("/delete")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult delete(@RequestBody Long[] ids) {
        for (Long id : ids) {
            hazardReportService.removeById(id);
        }
        return AjaxResult.success("删除成功");
    }
    /**
     * å¯¼å‡ºé𐿂£ä¸ŠæŠ¥è®°å½•
     */
    @Operation(summary = "导出隐患上报记录")
    @PostMapping("/export")
    public void export(HttpServletResponse response, HazardReportDto dto) {
        hazardReportService.export(response, dto);
    }
}
src/main/java/com/ruoyi/device/controller/LineInspectionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.LineInspectionDto;
import com.ruoyi.device.pojo.LineInspection;
import com.ruoyi.device.service.ILineInspectionService;
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
/**
 * çº¿è·¯å·¡æ£€Controller
 * æä¾›çº¿è·¯å·¡æ£€è®°å½•的增删改查和导出功能
 */
@Tag(name = "线路巡检")
@RestController
@RequestMapping("/device/lineInspection")
@RequiredArgsConstructor
public class LineInspectionController {
    private final ILineInspectionService lineInspectionService;
    /**
     * æŸ¥è¯¢çº¿è·¯å·¡æ£€åˆ—表
     */
    @Operation(summary = "查询线路巡检列表")
    @GetMapping("/list")
    public AjaxResult list(Page<LineInspection> page, LineInspectionDto dto) {
        return AjaxResult.success(lineInspectionService.queryPage(page, dto));
    }
    /**
     * æ–°å¢žæˆ–修改线路巡检记录
     */
    @Operation(summary = "新增或修改线路巡检记录")
    @PostMapping("/addOrEdit")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult addOrEdit(@RequestBody LineInspectionDto dto) {
        int result = lineInspectionService.addOrEdit(dto);
        if (result > 0) {
            return AjaxResult.success("操作成功");
        }
        return AjaxResult.error("操作失败");
    }
    /**
     * åˆ é™¤çº¿è·¯å·¡æ£€è®°å½•
     */
    @Operation(summary = "删除线路巡检记录")
    @DeleteMapping("/delete")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult delete(@RequestBody Long[] ids) {
        for (Long id : ids) {
            lineInspectionService.removeById(id);
        }
        return AjaxResult.success("删除成功");
    }
    /**
     * å¯¼å‡ºçº¿è·¯å·¡æ£€è®°å½•
     */
    @Operation(summary = "导出线路巡检记录")
    @PostMapping("/export")
    public void export(HttpServletResponse response, LineInspectionDto dto) {
        lineInspectionService.export(response, dto);
    }
}
src/main/java/com/ruoyi/device/controller/SafetyFacilityController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.SafetyFacilityDto;
import com.ruoyi.device.pojo.SafetyFacility;
import com.ruoyi.device.service.ISafetyFacilityService;
import com.ruoyi.framework.web.domain.AjaxResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletResponse;
/**
 * å®‰å…¨è®¾æ–½Controller
 * æä¾›å®‰å…¨è®¾æ–½å°è´¦çš„增删改查和导出功能
 */
@Tag(name = "安全设施巡检")
@RestController
@RequestMapping("/device/safetyFacility")
@RequiredArgsConstructor
public class SafetyFacilityController {
    private final ISafetyFacilityService safetyFacilityService;
    /**
     * æŸ¥è¯¢å®‰å…¨è®¾æ–½åˆ—表
     */
    @Operation(summary = "查询安全设施列表")
    @GetMapping("/list")
    public AjaxResult list(Page<SafetyFacility> page, SafetyFacilityDto dto) {
        return AjaxResult.success(safetyFacilityService.queryPage(page, dto));
    }
    /**
     * æ–°å¢žæˆ–修改安全设施
     */
    @Operation(summary = "新增或修改安全设施")
    @PostMapping("/addOrEdit")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult addOrEdit(@RequestBody SafetyFacilityDto dto) {
        int result = safetyFacilityService.addOrEdit(dto);
        if (result > 0) {
            return AjaxResult.success("操作成功");
        }
        return AjaxResult.error("操作失败");
    }
    /**
     * åˆ é™¤å®‰å…¨è®¾æ–½
     */
    @Operation(summary = "删除安全设施")
    @DeleteMapping("/delete")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult delete(@RequestBody Long[] ids) {
        for (Long id : ids) {
            safetyFacilityService.removeById(id);
        }
        return AjaxResult.success("删除成功");
    }
    /**
     * å¯¼å‡ºå®‰å…¨è®¾æ–½è®°å½•
     */
    @Operation(summary = "导出安全设施记录")
    @PostMapping("/export")
    public void export(HttpServletResponse response, SafetyFacilityDto dto) {
        safetyFacilityService.export(response, dto);
    }
}
src/main/java/com/ruoyi/device/dto/HazardReportDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.HazardReport;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
 * é𐿂£ä¸ŠæŠ¥DTO
 * æ‰©å±•实体类,用于查询条件和返回数据
 */
@Data
public class HazardReportDto extends HazardReport {
    @Schema(description = "设施名称")
    private String facilityName;
    @Schema(description = "设施类型")
    private String facilityType;
}
src/main/java/com/ruoyi/device/dto/LineInspectionDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.LineInspection;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
 * çº¿è·¯å·¡æ£€DTO
 * æ‰©å±•实体类,用于查询条件和返回数据
 */
@Data
public class LineInspectionDto extends LineInspection {
    @Schema(description = "设备名称")
    private String deviceName;
    @Schema(description = "设备型号")
    private String deviceModel;
}
src/main/java/com/ruoyi/device/dto/SafetyFacilityDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.device.dto;
import com.ruoyi.device.pojo.SafetyFacility;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
 * å®‰å…¨è®¾æ–½DTO
 * æ‰©å±•实体类,用于查询条件和返回数据
 */
@Data
public class SafetyFacilityDto extends SafetyFacility {
    @Schema(description = "设备名称")
    private String deviceName;
    @Schema(description = "设备型号")
    private String deviceModel;
}
src/main/java/com/ruoyi/device/mapper/HazardReportMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.HazardReportDto;
import com.ruoyi.device.pojo.HazardReport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * é𐿂£ä¸ŠæŠ¥Mapper接口
 */
@Mapper
public interface HazardReportMapper extends BaseMapper<HazardReport> {
    /**
     * æŸ¥è¯¢é𐿂£ä¸ŠæŠ¥åˆ—表(关联设施信息)
     */
    @Select("<script>" +
            "SELECT hr.*, sf.facility_name, sf.facility_type " +
            "FROM hazard_report hr " +
            "LEFT JOIN safety_facility sf ON hr.facility_id = sf.id " +
            "WHERE hr.deleted = 0 " +
            "<if test='dto.reportType != null and dto.reportType != \"\"'> " +
            "AND hr.report_type = #{dto.reportType} " +
            "</if>" +
            "<if test='dto.severity != null and dto.severity != \"\"'> " +
            "AND hr.severity = #{dto.severity} " +
            "</if>" +
            "<if test='dto.rectificationStatus != null and dto.rectificationStatus != \"\"'> " +
            "AND hr.rectification_status = #{dto.rectificationStatus} " +
            "</if>" +
            "<if test='dto.reporter != null and dto.reporter != \"\"'> " +
            "AND hr.reporter LIKE CONCAT('%', #{dto.reporter}, '%') " +
            "</if>" +
            "ORDER BY hr.create_time DESC" +
            "</script>")
    List<HazardReportDto> selectHazardReportList(@Param("dto") HazardReportDto dto);
}
src/main/java/com/ruoyi/device/mapper/LineInspectionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.LineInspectionDto;
import com.ruoyi.device.pojo.LineInspection;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * çº¿è·¯å·¡æ£€Mapper接口
 */
@Mapper
public interface LineInspectionMapper extends BaseMapper<LineInspection> {
    /**
     * æŸ¥è¯¢çº¿è·¯å·¡æ£€åˆ—表(关联设备信息)
     */
    @Select("<script>" +
            "SELECT li.*, dl.device_name, dl.device_model " +
            "FROM line_inspection li " +
            "LEFT JOIN device_ledger dl ON li.device_id = dl.id " +
            "WHERE li.deleted = 0 " +
            "<if test='dto.taskName != null and dto.taskName != \"\"'> " +
            "AND li.task_name LIKE CONCAT('%', #{dto.taskName}, '%') " +
            "</if>" +
            "<if test='dto.routeName != null and dto.routeName != \"\"'> " +
            "AND li.route_name LIKE CONCAT('%', #{dto.routeName}, '%') " +
            "</if>" +
            "<if test='dto.inspector != null and dto.inspector != \"\"'> " +
            "AND li.inspector LIKE CONCAT('%', #{dto.inspector}, '%') " +
            "</if>" +
            "<if test='dto.status != null and dto.status != \"\"'> " +
            "AND li.status = #{dto.status} " +
            "</if>" +
            "ORDER BY li.create_time DESC" +
            "</script>")
    List<LineInspectionDto> selectLineInspectionList(@Param("dto") LineInspectionDto dto);
}
src/main/java/com/ruoyi/device/mapper/SafetyFacilityMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.dto.SafetyFacilityDto;
import com.ruoyi.device.pojo.SafetyFacility;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
 * å®‰å…¨è®¾æ–½Mapper接口
 */
@Mapper
public interface SafetyFacilityMapper extends BaseMapper<SafetyFacility> {
    /**
     * æŸ¥è¯¢å®‰å…¨è®¾æ–½åˆ—表(关联设备信息)
     */
    @Select("<script>" +
            "SELECT sf.*, dl.device_name, dl.device_model " +
            "FROM safety_facility sf " +
            "LEFT JOIN device_ledger dl ON sf.device_id = dl.id " +
            "WHERE sf.deleted = 0 " +
            "<if test='dto.facilityName != null and dto.facilityName != \"\"'> " +
            "AND sf.facility_name LIKE CONCAT('%', #{dto.facilityName}, '%') " +
            "</if>" +
            "<if test='dto.facilityType != null and dto.facilityType != \"\"'> " +
            "AND sf.facility_type = #{dto.facilityType} " +
            "</if>" +
            "<if test='dto.status != null and dto.status != \"\"'> " +
            "AND sf.status = #{dto.status} " +
            "</if>" +
            "<if test='dto.location != null and dto.location != \"\"'> " +
            "AND sf.location LIKE CONCAT('%', #{dto.location}, '%') " +
            "</if>" +
            "ORDER BY sf.create_time DESC" +
            "</script>")
    List<SafetyFacilityDto> selectSafetyFacilityList(@Param("dto") SafetyFacilityDto dto);
}
src/main/java/com/ruoyi/device/pojo/HazardReport.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,126 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
 * é𐿂£ä¸ŠæŠ¥è®°å½•实体类
 * ç”¨äºŽè®°å½•巡检过程中发现的隐患,跟踪整改状态
 */
@Data
@Schema
@TableName("hazard_report")
public class HazardReport {
    @TableId(type = IdType.AUTO)
    @Schema(description = "主键ID")
    private Long id;
    @Schema(description = "上报类型:线路巡检/安全设施巡检")
    @Excel(name = "上报类型")
    private String reportType;
    @Schema(description = "关联设施ID")
    private Long facilityId;
    @Schema(description = "隐患描述")
    @Excel(name = "隐患描述")
    private String hazardDescription;
    @Schema(description = "严重程度:轻微/一般/严重")
    @Excel(name = "严重程度")
    private String severity;
    @Schema(description = "上报人ID")
    private String reporterId;
    @Schema(description = "上报人姓名")
    @Excel(name = "上报人")
    private String reporter;
    @Schema(description = "上报时间")
    @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime reportTime;
    @Schema(description = "整改状态:待整改/整改中/已完成")
    @Excel(name = "整改状态")
    private String rectificationStatus;
    @Schema(description = "整改责任人ID")
    private String rectificationPersonId;
    @Schema(description = "整改责任人姓名")
    @Excel(name = "整改责任人")
    private String rectificationPerson;
    @Schema(description = "整改完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime rectificationTime;
    @Schema(description = "整改描述")
    @Excel(name = "整改描述")
    private String rectificationDescription;
    @Schema(description = "验收人ID")
    private String acceptancePersonId;
    @Schema(description = "验收人姓名")
    @Excel(name = "验收人")
    private String acceptancePerson;
    @Schema(description = "验收时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime acceptanceTime;
    @Schema(description = "验收结果")
    @Excel(name = "验收结果")
    private String acceptanceResult;
    @Schema(description = "备注")
    @Excel(name = "备注")
    private String remarks;
    @Schema(description = "软删除标志:0=未删除,1=已删除")
    private Integer deleted;
    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @Schema(description = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @Schema(description = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @TableField(fill = FieldFill.INSERT)
    private Long deptId;
}
src/main/java/com/ruoyi/device/pojo/LineInspection.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
 * çº¿è·¯å·¡æ£€è®°å½•实体类
 * ç”¨äºŽè®°å½•线路巡检任务的执行情况,包括巡检结果、隐患上报等
 */
@Data
@Schema
@TableName("line_inspection")
public class LineInspection {
    @TableId(type = IdType.AUTO)
    @Schema(description = "主键ID")
    private Long id;
    @Schema(description = "巡检任务名称")
    @Excel(name = "巡检任务名称")
    private String taskName;
    @Schema(description = "巡检类型:线路巡检")
    private String inspectionType;
    @Schema(description = "线路名称")
    @Excel(name = "线路名称")
    private String routeName;
    @Schema(description = "关联设备ID")
    private Long deviceId;
    @Schema(description = "巡检人ID")
    private String inspectorId;
    @Schema(description = "巡检人姓名")
    @Excel(name = "巡检人")
    private String inspector;
    @Schema(description = "巡检时间")
    @Excel(name = "巡检时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime inspectionTime;
    @Schema(description = "巡检结果:正常/异常")
    @Excel(name = "巡检结果")
    private String inspectionResult;
    @Schema(description = "隐患描述")
    @Excel(name = "隐患描述")
    private String hazardDescription;
    @Schema(description = "状态:待巡检/进行中/已完成")
    @Excel(name = "状态")
    private String status;
    @Schema(description = "备注")
    @Excel(name = "备注")
    private String remarks;
    @Schema(description = "软删除标志:0=未删除,1=已删除")
    private Integer deleted;
    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @Schema(description = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @Schema(description = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @TableField(fill = FieldFill.INSERT)
    private Long deptId;
}
src/main/java/com/ruoyi/device/pojo/SafetyFacility.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
package com.ruoyi.device.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
 * å®‰å…¨è®¾æ–½å°è´¦å®žä½“ç±»
 * ç”¨äºŽç®¡ç†å®‰å…¨è®¾æ–½çš„基本信息,包括消防器材、安全设备等
 */
@Data
@Schema
@TableName("safety_facility")
public class SafetyFacility {
    @TableId(type = IdType.AUTO)
    @Schema(description = "主键ID")
    private Long id;
    @Schema(description = "设施名称")
    @Excel(name = "设施名称")
    private String facilityName;
    @Schema(description = "设施类型:消防器材/安全设备等")
    @Excel(name = "设施类型")
    private String facilityType;
    @Schema(description = "所在位置")
    @Excel(name = "所在位置")
    private String location;
    @Schema(description = "关联设备ID")
    private Long deviceId;
    @Schema(description = "设施状态:正常/异常/停用")
    @Excel(name = "设施状态")
    private String status;
    @Schema(description = "上次巡检时间")
    @Excel(name = "上次巡检时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastInspectionTime;
    @Schema(description = "下次巡检时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime nextInspectionTime;
    @Schema(description = "责任部门")
    @Excel(name = "责任部门")
    private String responsibilityDept;
    @Schema(description = "责任人")
    @Excel(name = "责任人")
    private String responsibilityPerson;
    @Schema(description = "备注")
    @Excel(name = "备注")
    private String remarks;
    @Schema(description = "软删除标志:0=未删除,1=已删除")
    private Integer deleted;
    @Schema(description = "创建人")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @Schema(description = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @Schema(description = "更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @Schema(description = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @Schema(description = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @TableField(fill = FieldFill.INSERT)
    private Long deptId;
}
src/main/java/com/ruoyi/device/service/IHazardReportService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.HazardReportDto;
import com.ruoyi.device.pojo.HazardReport;
import jakarta.servlet.http.HttpServletResponse;
/**
 * é𐿂£ä¸ŠæŠ¥Service接口
 */
public interface IHazardReportService extends IService<HazardReport> {
    /**
     * åˆ†é¡µæŸ¥è¯¢é𐿂£ä¸ŠæŠ¥åˆ—表
     */
    IPage<HazardReportDto> queryPage(Page<HazardReport> page, HazardReportDto dto);
    /**
     * æ–°å¢žé𐿂£ä¸ŠæŠ¥
     */
    int add(HazardReportDto dto);
    /**
     * è®°å½•整改结果
     */
    int rectify(HazardReportDto dto);
    /**
     * è®°å½•验收结果
     */
    int accept(HazardReportDto dto);
    /**
     * å¯¼å‡ºé𐿂£ä¸ŠæŠ¥è®°å½•
     */
    void export(HttpServletResponse response, HazardReportDto dto);
}
src/main/java/com/ruoyi/device/service/ILineInspectionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.LineInspectionDto;
import com.ruoyi.device.pojo.LineInspection;
import jakarta.servlet.http.HttpServletResponse;
/**
 * çº¿è·¯å·¡æ£€Service接口
 */
public interface ILineInspectionService extends IService<LineInspection> {
    /**
     * åˆ†é¡µæŸ¥è¯¢çº¿è·¯å·¡æ£€åˆ—表
     */
    IPage<LineInspectionDto> queryPage(Page<LineInspection> page, LineInspectionDto dto);
    /**
     * æ–°å¢žæˆ–修改线路巡检记录
     */
    int addOrEdit(LineInspectionDto dto);
    /**
     * å¯¼å‡ºçº¿è·¯å·¡æ£€è®°å½•
     */
    void export(HttpServletResponse response, LineInspectionDto dto);
}
src/main/java/com/ruoyi/device/service/ISafetyFacilityService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.dto.SafetyFacilityDto;
import com.ruoyi.device.pojo.SafetyFacility;
import jakarta.servlet.http.HttpServletResponse;
/**
 * å®‰å…¨è®¾æ–½Service接口
 */
public interface ISafetyFacilityService extends IService<SafetyFacility> {
    /**
     * åˆ†é¡µæŸ¥è¯¢å®‰å…¨è®¾æ–½åˆ—表
     */
    IPage<SafetyFacilityDto> queryPage(Page<SafetyFacility> page, SafetyFacilityDto dto);
    /**
     * æ–°å¢žæˆ–修改安全设施
     */
    int addOrEdit(SafetyFacilityDto dto);
    /**
     * å¯¼å‡ºå®‰å…¨è®¾æ–½è®°å½•
     */
    void export(HttpServletResponse response, SafetyFacilityDto dto);
}
src/main/java/com/ruoyi/device/service/impl/HazardReportServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.HazardReportDto;
import com.ruoyi.device.mapper.HazardReportMapper;
import com.ruoyi.device.pojo.HazardReport;
import com.ruoyi.device.service.IHazardReportService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import jakarta.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;
/**
 * é𐿂£ä¸ŠæŠ¥Service实现类
 */
@Service
@RequiredArgsConstructor
public class HazardReportServiceImpl extends ServiceImpl<HazardReportMapper, HazardReport> implements IHazardReportService {
    private final HazardReportMapper hazardReportMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢é𐿂£ä¸ŠæŠ¥åˆ—表
     */
    @Override
    public IPage<HazardReportDto> queryPage(Page<HazardReport> page, HazardReportDto dto) {
        List<HazardReportDto> list = hazardReportMapper.selectHazardReportList(dto);
        Page<HazardReportDto> resultPage = new Page<>(page.getCurrent(), page.getSize(), list.size());
        resultPage.setRecords(list);
        return resultPage;
    }
    /**
     * æ–°å¢žé𐿂£ä¸ŠæŠ¥
     */
    @Override
    public int add(HazardReportDto dto) {
        // è®¾ç½®åˆå§‹çŠ¶æ€ä¸ºå¾…æ•´æ”¹
        dto.setRectificationStatus("待整改");
        dto.setReportTime(LocalDateTime.now());
        return hazardReportMapper.insert(dto) ? 1 : 0;
    }
    /**
     * è®°å½•整改结果
     */
    @Override
    public int rectify(HazardReportDto dto) {
        // æŸ¥è¯¢åŽŸè®°å½•
        HazardReport existing = hazardReportMapper.selectById(dto.getId());
        if (existing == null) {
            return 0;
        }
        // æ›´æ–°æ•´æ”¹ä¿¡æ¯
        existing.setRectificationStatus("已完成");
        existing.setRectificationPerson(dto.getRectificationPerson());
        existing.setRectificationTime(LocalDateTime.now());
        existing.setRectificationDescription(dto.getRectificationDescription());
        return hazardReportMapper.updateById(existing) ? 1 : 0;
    }
    /**
     * è®°å½•验收结果
     */
    @Override
    public int accept(HazardReportDto dto) {
        // æŸ¥è¯¢åŽŸè®°å½•
        HazardReport existing = hazardReportMapper.selectById(dto.getId());
        if (existing == null) {
            return 0;
        }
        // æ›´æ–°éªŒæ”¶ä¿¡æ¯
        existing.setAcceptancePerson(dto.getAcceptancePerson());
        existing.setAcceptanceTime(LocalDateTime.now());
        existing.setAcceptanceResult(dto.getAcceptanceResult());
        return hazardReportMapper.updateById(existing) ? 1 : 0;
    }
    /**
     * å¯¼å‡ºé𐿂£ä¸ŠæŠ¥è®°å½•
     */
    @Override
    public void export(HttpServletResponse response, HazardReportDto dto) {
        List<HazardReportDto> list = hazardReportMapper.selectHazardReportList(dto);
        ExcelUtil<HazardReportDto> util = new ExcelUtil<>(HazardReportDto.class);
        util.exportExcel(response, list, "隐患上报记录");
    }
}
src/main/java/com/ruoyi/device/service/impl/LineInspectionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.LineInspectionDto;
import com.ruoyi.device.mapper.LineInspectionMapper;
import com.ruoyi.device.pojo.LineInspection;
import com.ruoyi.device.service.ILineInspectionService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * çº¿è·¯å·¡æ£€Service实现类
 */
@Service
@RequiredArgsConstructor
public class LineInspectionServiceImpl extends ServiceImpl<LineInspectionMapper, LineInspection> implements ILineInspectionService {
    private final LineInspectionMapper lineInspectionMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢çº¿è·¯å·¡æ£€åˆ—表
     */
    @Override
    public IPage<LineInspectionDto> queryPage(Page<LineInspection> page, LineInspectionDto dto) {
        List<LineInspectionDto> list = lineInspectionMapper.selectLineInspectionList(dto);
        Page<LineInspectionDto> resultPage = new Page<>(page.getCurrent(), page.getSize(), list.size());
        resultPage.setRecords(list);
        return resultPage;
    }
    /**
     * æ–°å¢žæˆ–修改线路巡检记录
     */
    @Override
    public int addOrEdit(LineInspectionDto dto) {
        // å¦‚果是新增,设置初始状态
        if (dto.getId() == null) {
            dto.setStatus("待巡检");
        }
        return lineInspectionMapper.insertOrUpdate(dto) ? 1 : 0;
    }
    /**
     * å¯¼å‡ºçº¿è·¯å·¡æ£€è®°å½•
     */
    @Override
    public void export(HttpServletResponse response, LineInspectionDto dto) {
        List<LineInspectionDto> list = lineInspectionMapper.selectLineInspectionList(dto);
        ExcelUtil<LineInspectionDto> util = new ExcelUtil<>(LineInspectionDto.class);
        util.exportExcel(response, list, "线路巡检记录");
    }
}
src/main/java/com/ruoyi/device/service/impl/SafetyFacilityServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.SafetyFacilityDto;
import com.ruoyi.device.mapper.SafetyFacilityMapper;
import com.ruoyi.device.pojo.SafetyFacility;
import com.ruoyi.device.service.ISafetyFacilityService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * å®‰å…¨è®¾æ–½Service实现类
 */
@Service
@RequiredArgsConstructor
public class SafetyFacilityServiceImpl extends ServiceImpl<SafetyFacilityMapper, SafetyFacility> implements ISafetyFacilityService {
    private final SafetyFacilityMapper safetyFacilityMapper;
    /**
     * åˆ†é¡µæŸ¥è¯¢å®‰å…¨è®¾æ–½åˆ—表
     */
    @Override
    public IPage<SafetyFacilityDto> queryPage(Page<SafetyFacility> page, SafetyFacilityDto dto) {
        List<SafetyFacilityDto> list = safetyFacilityMapper.selectSafetyFacilityList(dto);
        Page<SafetyFacilityDto> resultPage = new Page<>(page.getCurrent(), page.getSize(), list.size());
        resultPage.setRecords(list);
        return resultPage;
    }
    /**
     * æ–°å¢žæˆ–修改安全设施
     */
    @Override
    public int addOrEdit(SafetyFacilityDto dto) {
        // å¦‚果是新增,设置初始状态
        if (dto.getId() == null) {
            dto.setStatus("正常");
        }
        return safetyFacilityMapper.insertOrUpdate(dto) ? 1 : 0;
    }
    /**
     * å¯¼å‡ºå®‰å…¨è®¾æ–½è®°å½•
     */
    @Override
    public void export(HttpServletResponse response, SafetyFacilityDto dto) {
        List<SafetyFacilityDto> list = safetyFacilityMapper.selectSafetyFacilityList(dto);
        ExcelUtil<SafetyFacilityDto> util = new ExcelUtil<>(SafetyFacilityDto.class);
        util.exportExcel(response, list, "安全设施台账");
    }
}