Browse Source

cpms优化
巡检管理

jiangbiao 1 year ago
parent
commit
d6b72fe34e
41 changed files with 6142 additions and 20 deletions
  1. 95 0
      cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyEyeWasherController.java
  2. 120 0
      cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFilesController.java
  3. 90 0
      cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFireExtinguisherController.java
  4. 97 0
      cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFiredoorController.java
  5. 200 0
      cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyRecordController.java
  6. 275 0
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyEyeWasher.java
  7. 167 0
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiles.java
  8. 302 0
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFireExtinguisher.java
  9. 260 0
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiredoor.java
  10. 311 0
      cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyRecord.java
  11. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyEyeWasherMapper.java
  12. 62 0
      cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFilesMapper.java
  13. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFireExtinguisherMapper.java
  14. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFiredoorMapper.java
  15. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyRecordMapper.java
  16. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyEyeWasherService.java
  17. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFilesService.java
  18. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFireExtinguisherService.java
  19. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFiredoorService.java
  20. 63 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyRecordService.java
  21. 94 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyEyeWasherServiceImpl.java
  22. 94 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFilesServiceImpl.java
  23. 94 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFireExtinguisherServiceImpl.java
  24. 94 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFiredoorServiceImpl.java
  25. 94 0
      cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyRecordServiceImpl.java
  26. 130 0
      cpms-admin/src/main/resources/mapper/safety/TSafetyEyeWasherMapper.xml
  27. 96 0
      cpms-admin/src/main/resources/mapper/safety/TSafetyFilesMapper.xml
  28. 146 0
      cpms-admin/src/main/resources/mapper/safety/TSafetyFireExtinguisherMapper.xml
  29. 131 0
      cpms-admin/src/main/resources/mapper/safety/TSafetyFiredoorMapper.xml
  30. 156 0
      cpms-admin/src/main/resources/mapper/safety/TSafetyRecordMapper.xml
  31. 53 0
      cpms-ui/src/api/safety/extinguisher.js
  32. 53 0
      cpms-ui/src/api/safety/files.js
  33. 53 0
      cpms-ui/src/api/safety/firedoor.js
  34. 53 0
      cpms-ui/src/api/safety/record.js
  35. 53 0
      cpms-ui/src/api/safety/washer.js
  36. 18 18
      cpms-ui/src/views/file/file/uploadFile.vue
  37. 2 2
      cpms-ui/src/views/plant/content/index.vue
  38. 669 0
      cpms-ui/src/views/safety/extinguisher/index.vue
  39. 649 0
      cpms-ui/src/views/safety/firedoor/index.vue
  40. 203 0
      cpms-ui/src/views/safety/record/index.vue
  41. 661 0
      cpms-ui/src/views/safety/washer/index.vue

+ 95 - 0
cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyEyeWasherController.java

@@ -0,0 +1,95 @@
+package com.cpms.project.safety.controller;
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.safety.domain.TSafetyEyeWasher;
+import com.cpms.project.safety.service.ITSafetyEyeWasherService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 洗眼器Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/safety/washer")
+public class TSafetyEyeWasherController extends BaseController {
+    @Autowired
+    private ITSafetyEyeWasherService tSafetyEyeWasherService;
+
+    /**
+     * 查询洗眼器列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSafetyEyeWasher tSafetyEyeWasher) {
+        startPage();
+        List<TSafetyEyeWasher> list = tSafetyEyeWasherService.selectTSafetyEyeWasherList(tSafetyEyeWasher);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出洗眼器列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:export')")
+    @Log(title = "洗眼器", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSafetyEyeWasher tSafetyEyeWasher) {
+        List<TSafetyEyeWasher> list = tSafetyEyeWasherService.selectTSafetyEyeWasherList(tSafetyEyeWasher);
+        ExcelUtil<TSafetyEyeWasher> util = new ExcelUtil<TSafetyEyeWasher>(TSafetyEyeWasher.class);
+        return util.exportExcel(list, "eyeWasher");
+    }
+
+    /**
+     * 获取洗眼器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSafetyEyeWasherService.selectTSafetyEyeWasherById(id));
+    }
+
+    /**
+     * 新增洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:add')")
+    @Log(title = "洗眼器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSafetyEyeWasher tSafetyEyeWasher) {
+        tSafetyEyeWasher.setCreatedate(new Date());
+        tSafetyEyeWasher.setCreaterCode(getUserId().toString());
+        return toAjax(tSafetyEyeWasherService.insertTSafetyEyeWasher(tSafetyEyeWasher));
+    }
+
+    /**
+     * 修改洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:edit')")
+    @Log(title = "洗眼器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSafetyEyeWasher tSafetyEyeWasher) {
+        tSafetyEyeWasher.setUpdatedate(new Date());
+        tSafetyEyeWasher.setUpdaterCode(getUserId().toString());
+        return toAjax(tSafetyEyeWasherService.updateTSafetyEyeWasher(tSafetyEyeWasher));
+    }
+
+    /**
+     * 删除洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:washer:remove')")
+    @Log(title = "洗眼器", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSafetyEyeWasherService.deleteTSafetyEyeWasherByIds(ids));
+    }
+}

+ 120 - 0
cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFilesController.java

@@ -0,0 +1,120 @@
+package com.cpms.project.safety.controller;
+
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.config.RuoYiConfig;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.file.FileUploadUtils;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.safety.domain.TSafetyFiles;
+import com.cpms.project.safety.service.ITSafetyFilesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 安全设备设施检查附件Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/safety/files")
+public class TSafetyFilesController extends BaseController
+{
+    @Autowired
+    private ITSafetyFilesService tSafetyFilesService;
+
+    /**
+     * 查询安全设备设施检查附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSafetyFiles tSafetyFiles)
+    {
+        startPage();
+        List<TSafetyFiles> list = tSafetyFilesService.selectTSafetyFilesList(tSafetyFiles);
+        return getDataTable(list);
+    }
+    /**
+     * 导出安全设备设施检查附件列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:export')")
+    @Log(title = "安全设备设施检查附件", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, TSafetyFiles tSafetyFiles)
+    {
+        List<TSafetyFiles> list = tSafetyFilesService.selectTSafetyFilesList(tSafetyFiles);
+        ExcelUtil<TSafetyFiles> util = new ExcelUtil<TSafetyFiles>(TSafetyFiles.class);
+        util.exportExcel(list, "安全设备设施检查附件数据");
+    }
+
+    /**
+     * 获取安全设备设施检查附件详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSafetyFilesService.selectTSafetyFilesById(id));
+    }
+
+    /**
+     * 新增安全设备设施检查附件
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:add')")
+    @Log(title = "安全设备设施检查附件", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSafetyFiles tSafetyFiles)
+    {
+        return toAjax(tSafetyFilesService.insertTSafetyFiles(tSafetyFiles));
+    }
+
+    /**
+     * 修改安全设备设施检查附件
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:edit')")
+    @Log(title = "安全设备设施检查附件", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSafetyFiles tSafetyFiles)
+    {
+        return toAjax(tSafetyFilesService.updateTSafetyFiles(tSafetyFiles));
+    }
+
+    /**
+     * 删除安全设备设施检查附件
+     */
+    @PreAuthorize("@ss.hasPermi('safety:files:remove')")
+    @Log(title = "安全设备设施检查附件", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSafetyFilesService.deleteTSafetyFilesByIds(ids));
+    }
+
+
+    @Log(title = "文件上传", businessType = BusinessType.UPDATE)
+    @PostMapping("/uploadFile")
+    public AjaxResult uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
+        if (!file.isEmpty()) {
+            String avatar = FileUploadUtils.upload(RuoYiConfig.getFilePath("/safetyFile"), file);
+            TSafetyFiles tSafetyFiles = new TSafetyFiles();
+            tSafetyFiles.setFileName(file.getName());
+            tSafetyFiles.setFileUrl(avatar);
+            tSafetyFiles.setCreatedate(new Date());
+            tSafetyFiles.setCreaterCode(getUserId().toString());
+            tSafetyFilesService.insertTSafetyFiles(tSafetyFiles);
+            return AjaxResult.success(tSafetyFiles.getId());
+        }
+        return AjaxResult.error("上传异常,请联系管理员");
+    }
+}

+ 90 - 0
cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFireExtinguisherController.java

@@ -0,0 +1,90 @@
+package com.cpms.project.safety.controller;
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.safety.domain.TSafetyFireExtinguisher;
+import com.cpms.project.safety.service.ITSafetyFireExtinguisherService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 灭火器Controller
+ *
+ * @author ruoyi
+ * @date 2023-06-01
+ */
+@RestController
+@RequestMapping("/safety/extinguisher")
+public class TSafetyFireExtinguisherController extends BaseController {
+    @Autowired
+    private ITSafetyFireExtinguisherService tSafetyFireExtinguisherService;
+
+    /**
+     * 查询灭火器列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSafetyFireExtinguisher tSafetyFireExtinguisher) {
+        startPage();
+        List<TSafetyFireExtinguisher> list = tSafetyFireExtinguisherService.selectTSafetyFireExtinguisherList(tSafetyFireExtinguisher);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出灭火器列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:export')")
+    @Log(title = "灭火器", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSafetyFireExtinguisher tSafetyFireExtinguisher) {
+        List<TSafetyFireExtinguisher> list = tSafetyFireExtinguisherService.selectTSafetyFireExtinguisherList(tSafetyFireExtinguisher);
+        ExcelUtil<TSafetyFireExtinguisher> util = new ExcelUtil<TSafetyFireExtinguisher>(TSafetyFireExtinguisher.class);
+        return util.exportExcel(list, "灭火器数据");
+    }
+
+    /**
+     * 获取灭火器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSafetyFireExtinguisherService.selectTSafetyFireExtinguisherById(id));
+    }
+
+    /**
+     * 新增灭火器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:add')")
+    @Log(title = "灭火器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSafetyFireExtinguisher tSafetyFireExtinguisher) {
+        return toAjax(tSafetyFireExtinguisherService.insertTSafetyFireExtinguisher(tSafetyFireExtinguisher));
+    }
+
+    /**
+     * 修改灭火器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:edit')")
+    @Log(title = "灭火器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSafetyFireExtinguisher tSafetyFireExtinguisher) {
+        return toAjax(tSafetyFireExtinguisherService.updateTSafetyFireExtinguisher(tSafetyFireExtinguisher));
+    }
+
+    /**
+     * 删除灭火器
+     */
+    @PreAuthorize("@ss.hasPermi('safety:extinguisher:remove')")
+    @Log(title = "灭火器", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSafetyFireExtinguisherService.deleteTSafetyFireExtinguisherByIds(ids));
+    }
+}

+ 97 - 0
cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyFiredoorController.java

@@ -0,0 +1,97 @@
+package com.cpms.project.safety.controller;
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.safety.domain.TSafetyFiredoor;
+import com.cpms.project.safety.service.ITSafetyFiredoorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 防火门Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-31
+ */
+@RestController
+@RequestMapping("/safety/firedoor")
+public class TSafetyFiredoorController extends BaseController
+{
+    @Autowired
+    private ITSafetyFiredoorService tSafetyFiredoorService;
+
+    /**
+     * 查询防火门列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSafetyFiredoor tSafetyFiredoor)
+    {
+        startPage();
+        List<TSafetyFiredoor> list = tSafetyFiredoorService.selectTSafetyFiredoorList(tSafetyFiredoor);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出防火门列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:export')")
+    @Log(title = "防火门", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSafetyFiredoor tSafetyFiredoor)
+    {
+        List<TSafetyFiredoor> list = tSafetyFiredoorService.selectTSafetyFiredoorList(tSafetyFiredoor);
+        ExcelUtil<TSafetyFiredoor> util = new ExcelUtil<TSafetyFiredoor>(TSafetyFiredoor.class);
+        return util.exportExcel( list, "防火门数据");
+    }
+
+    /**
+     * 获取防火门详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tSafetyFiredoorService.selectTSafetyFiredoorById(id));
+    }
+
+    /**
+     * 新增防火门
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:add')")
+    @Log(title = "防火门", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSafetyFiredoor tSafetyFiredoor)
+    {
+        return toAjax(tSafetyFiredoorService.insertTSafetyFiredoor(tSafetyFiredoor));
+    }
+
+    /**
+     * 修改防火门
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:edit')")
+    @Log(title = "防火门", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSafetyFiredoor tSafetyFiredoor)
+    {
+        return toAjax(tSafetyFiredoorService.updateTSafetyFiredoor(tSafetyFiredoor));
+    }
+
+    /**
+     * 删除防火门
+     */
+    @PreAuthorize("@ss.hasPermi('safety:firedoor:remove')")
+    @Log(title = "防火门", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tSafetyFiredoorService.deleteTSafetyFiredoorByIds(ids));
+    }
+}

+ 200 - 0
cpms-admin/src/main/java/com/cpms/project/safety/controller/TSafetyRecordController.java

@@ -0,0 +1,200 @@
+package com.cpms.project.safety.controller;
+
+import com.cpms.common.annotation.Log;
+import com.cpms.common.core.controller.BaseController;
+import com.cpms.common.core.domain.AjaxResult;
+import com.cpms.common.core.page.TableDataInfo;
+import com.cpms.common.enums.BusinessType;
+import com.cpms.common.utils.poi.ExcelUtil;
+import com.cpms.project.safety.domain.TSafetyEyeWasher;
+import com.cpms.project.safety.domain.TSafetyFireExtinguisher;
+import com.cpms.project.safety.domain.TSafetyFiredoor;
+import com.cpms.project.safety.domain.TSafetyRecord;
+import com.cpms.project.safety.service.ITSafetyEyeWasherService;
+import com.cpms.project.safety.service.ITSafetyFireExtinguisherService;
+import com.cpms.project.safety.service.ITSafetyFiredoorService;
+import com.cpms.project.safety.service.ITSafetyRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 洗眼器检查记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@RestController
+@RequestMapping("/safety/record")
+public class TSafetyRecordController extends BaseController {
+    @Autowired
+    private ITSafetyRecordService tSafetyRecordService;
+
+    @Autowired
+    private ITSafetyEyeWasherService tSafetyEyeWasherService;
+
+    @Autowired
+    private ITSafetyFiredoorService tSafetyFiredoorService;
+
+    @Autowired
+    private ITSafetyFireExtinguisherService tSafetyFireExtinguisherService;
+
+    /**
+     * 查询洗眼器检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TSafetyRecord tSafetyRecord) {
+        startPage();
+        List<TSafetyRecord> list = tSafetyRecordService.selectTSafetyRecordList(tSafetyRecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出洗眼器检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:export')")
+    @Log(title = "洗眼器检查记录", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(TSafetyRecord tSafetyRecord) {
+        List<TSafetyRecord> list = tSafetyRecordService.selectTSafetyRecordList(tSafetyRecord);
+        ExcelUtil<TSafetyRecord> util = new ExcelUtil<TSafetyRecord>(TSafetyRecord.class);
+        return util.exportExcel(list, "洗眼器检查记录数据");
+    }
+
+    /**
+     * 获取洗眼器检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tSafetyRecordService.selectTSafetyRecordById(id));
+    }
+
+    /**
+     * 新增洗眼器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:add')")
+    @Log(title = "洗眼器检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TSafetyRecord tSafetyRecord) {
+        //新增记录表
+        tSafetyRecord.setCreatedate(new Date());
+        tSafetyRecord.setCreaterCode(getUserId().toString());
+        tSafetyRecordService.insertTSafetyRecord(tSafetyRecord);
+        if ("1".equals(tSafetyRecord.getDevType())) {
+            //修改洗眼器表数据为当前最新的检测记录
+            TSafetyEyeWasher tSafetyEyeWasher = new TSafetyEyeWasher();
+            tSafetyEyeWasher.setStatus(tSafetyRecord.getStatus());
+            tSafetyEyeWasher.setFaultDesc(tSafetyRecord.getFaultDesc());
+            tSafetyEyeWasher.setFaultSloveSign(tSafetyRecord.getFaultSloveSign());
+            tSafetyEyeWasher.setInspector(tSafetyRecord.getInspector());
+            tSafetyEyeWasher.setInspectdate(tSafetyRecord.getInspectdate());
+            tSafetyEyeWasher.setInspectstatus(tSafetyRecord.getInspectstatus());
+            tSafetyEyeWasher.setUpdaterCode(getUserId().toString());
+            tSafetyEyeWasher.setUpdatedate(new Date());
+            tSafetyEyeWasher.setFileIds(tSafetyRecord.getFileIds());
+            tSafetyEyeWasher.setId(tSafetyRecord.getDevId());
+            tSafetyEyeWasherService.updateTSafetyEyeWasher(tSafetyEyeWasher);
+        }else if("2".equals(tSafetyRecord.getDevType())) {
+            TSafetyFiredoor tSafetyFiredoor = new TSafetyFiredoor();
+            tSafetyFiredoor.setInspector(tSafetyRecord.getInspector());
+            tSafetyFiredoor.setInspectdate(tSafetyRecord.getInspectdate());
+            tSafetyFiredoor.setStatus(tSafetyRecord.getStatus());
+            tSafetyFiredoor.setMeasure(tSafetyRecord.getMeasure());
+            tSafetyFiredoor.setFileIds(tSafetyRecord.getFileIds());
+            tSafetyFiredoor.setUpdaterCode(getUserId().toString());
+            tSafetyFiredoor.setUpdatedate(new Date());
+            tSafetyFiredoor.setId(tSafetyRecord.getDevId());
+            tSafetyFiredoorService.updateTSafetyFiredoor(tSafetyFiredoor);
+        } else if ("3".equals(tSafetyRecord.getDevType())) {
+            TSafetyFireExtinguisher tSafetyFireExtinguisher = new TSafetyFireExtinguisher();
+            tSafetyFireExtinguisher.setInspector(tSafetyRecord.getInspector());
+            tSafetyFireExtinguisher.setFillingDate(tSafetyRecord.getFillingDate());
+            tSafetyFireExtinguisher.setInspectdate(tSafetyRecord.getInspectdate());
+            tSafetyFireExtinguisher.setStatus(tSafetyRecord.getStatus());
+            tSafetyFireExtinguisher.setMeasure(tSafetyRecord.getMeasure());
+            tSafetyFireExtinguisher.setInspectstatus(tSafetyRecord.getInspectstatus());
+            tSafetyFireExtinguisher.setFileIds(tSafetyRecord.getFileIds());
+            tSafetyFireExtinguisher.setId(tSafetyRecord.getDevId());
+            tSafetyFireExtinguisherService.updateTSafetyFireExtinguisher(tSafetyFireExtinguisher);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 修改洗眼器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:edit')")
+    @Log(title = "洗眼器检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TSafetyRecord tSafetyRecord) {
+        tSafetyRecord.setUpdatedate(new Date());
+        tSafetyRecord.setUpdaterCode(getUserId().toString());
+        tSafetyRecordService.updateTSafetyRecord(tSafetyRecord);
+        if ("1".equals(tSafetyRecord.getDevType())) {
+            TSafetyRecord recordQuery = new TSafetyRecord();
+            recordQuery.setDevId(tSafetyRecord.getDevId());
+            recordQuery.setDevType("1");
+            TSafetyRecord lastRecord = tSafetyRecordService.selectTSafetyRecordList(recordQuery).get(0);
+            TSafetyEyeWasher tSafetyEyeWasher = new TSafetyEyeWasher();
+            tSafetyEyeWasher.setStatus(lastRecord.getStatus());
+            tSafetyEyeWasher.setFaultDesc(lastRecord.getFaultDesc());
+            tSafetyEyeWasher.setFaultSloveSign(lastRecord.getFaultSloveSign());
+            tSafetyEyeWasher.setInspector(lastRecord.getInspector());
+            tSafetyEyeWasher.setInspectdate(lastRecord.getInspectdate());
+            tSafetyEyeWasher.setInspectstatus(lastRecord.getInspectstatus());
+            tSafetyEyeWasher.setUpdaterCode(getUserId().toString());
+            tSafetyEyeWasher.setUpdatedate(new Date());
+            tSafetyEyeWasher.setFileIds(tSafetyRecord.getFileIds());
+            tSafetyEyeWasher.setId(lastRecord.getDevId());
+            tSafetyEyeWasherService.updateTSafetyEyeWasher(tSafetyEyeWasher);
+        }else if("2".equals(tSafetyRecord.getDevType())) {
+            TSafetyRecord recordQuery = new TSafetyRecord();
+            recordQuery.setDevId(tSafetyRecord.getDevId());
+            recordQuery.setDevType("2");
+            TSafetyRecord lastRecord = tSafetyRecordService.selectTSafetyRecordList(recordQuery).get(0);
+            TSafetyFiredoor tSafetyFiredoor = new TSafetyFiredoor();
+            tSafetyFiredoor.setInspector(lastRecord.getInspector());
+            tSafetyFiredoor.setInspectdate(lastRecord.getInspectdate());
+            tSafetyFiredoor.setStatus(lastRecord.getStatus());
+            tSafetyFiredoor.setMeasure(lastRecord.getMeasure());
+            tSafetyFiredoor.setFileIds(lastRecord.getFileIds());
+            tSafetyFiredoor.setUpdaterCode(getUserId().toString());
+            tSafetyFiredoor.setUpdatedate(new Date());
+            tSafetyFiredoor.setId(tSafetyRecord.getDevId());
+            tSafetyFiredoorService.updateTSafetyFiredoor(tSafetyFiredoor);
+        } else if ("3".equals(tSafetyRecord.getDevType())) {
+            TSafetyRecord recordQuery = new TSafetyRecord();
+            recordQuery.setDevId(tSafetyRecord.getDevId());
+            recordQuery.setDevType("3");
+            TSafetyRecord lastRecord = tSafetyRecordService.selectTSafetyRecordList(recordQuery).get(0);
+            TSafetyFireExtinguisher tSafetyFireExtinguisher = new TSafetyFireExtinguisher();
+            tSafetyFireExtinguisher.setInspector(lastRecord.getInspector());
+            tSafetyFireExtinguisher.setFillingDate(lastRecord.getFillingDate());
+            tSafetyFireExtinguisher.setInspectdate(lastRecord.getInspectdate());
+            tSafetyFireExtinguisher.setStatus(lastRecord.getStatus());
+            tSafetyFireExtinguisher.setMeasure(lastRecord.getMeasure());
+            tSafetyFireExtinguisher.setInspectstatus(lastRecord.getInspectstatus());
+            tSafetyFireExtinguisher.setFileIds(lastRecord.getFileIds());
+            tSafetyFireExtinguisher.setId(tSafetyRecord.getDevId());
+            tSafetyFireExtinguisher.setUpdatedate(new Date());
+            tSafetyFireExtinguisher.setUpdaterCode(getUserId().toString());
+            tSafetyFireExtinguisherService.updateTSafetyFireExtinguisher(tSafetyFireExtinguisher);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除洗眼器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('safety:record:remove')")
+    @Log(title = "洗眼器检查记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tSafetyRecordService.deleteTSafetyRecordByIds(ids));
+    }
+}

+ 275 - 0
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyEyeWasher.java

@@ -0,0 +1,275 @@
+package com.cpms.project.safety.domain;
+
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 洗眼器对象 t_safety_eye_washer
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public class TSafetyEyeWasher extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 编号
+     */
+    @Excel(name = "编号")
+    private String washerNo;
+
+    /**
+     * 位置
+     */
+    @Excel(name = "位置")
+    private String location;
+
+    /**
+     * ok/not ok
+     */
+    @Excel(name = "ok/not ok",readConverterExp = "1=ok,0=not ok")
+    private String status;
+
+    /**
+     * 故障描述
+     */
+    @Excel(name = "故障描述")
+    private String faultDesc;
+
+    /**
+     * 故障解决签名
+     */
+    @Excel(name = "故障解决签名")
+    private String faultSloveSign;
+
+    /**
+     * 检查人
+     */
+    @Excel(name = "检查人")
+    private String inspector;
+
+    /**
+     * 检查日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查日期" , width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectdate;
+
+    /**
+     * 检查状况
+     */
+   @Excel(name = "检查状况")
+    private String inspectstatus;
+
+    /**
+     * 删除标识
+     */
+    private Integer delFlag;
+
+    /**
+     * 创建人
+     */
+   // @Excel(name = "创建人")
+    private String createrCode;
+
+    /**
+     * 创建日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+   // @Excel(name = "创建日期" , width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /**
+     * 更新人
+     */
+   // @Excel(name = "更新人")
+    private String updaterCode;
+
+    /**
+     * 更新日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    //@Excel(name = "更新日期" , width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /**
+     * 部门编号
+     */
+    private Long deptId;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    private String fileIds;
+
+    public String getFileIds() {
+        return fileIds;
+    }
+
+    public void setFileIds(String fileIds) {
+        this.fileIds = fileIds;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setWasherNo(String washerNo) {
+        this.washerNo = washerNo;
+    }
+
+    public String getWasherNo() {
+        return washerNo;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setFaultDesc(String faultDesc) {
+        this.faultDesc = faultDesc;
+    }
+
+    public String getFaultDesc() {
+        return faultDesc;
+    }
+
+    public void setFaultSloveSign(String faultSloveSign) {
+        this.faultSloveSign = faultSloveSign;
+    }
+
+    public String getFaultSloveSign() {
+        return faultSloveSign;
+    }
+
+    public void setInspector(String inspector) {
+        this.inspector = inspector;
+    }
+
+    public String getInspector() {
+        return inspector;
+    }
+
+    public void setInspectdate(Date inspectdate) {
+        this.inspectdate = inspectdate;
+    }
+
+    public Date getInspectdate() {
+        return inspectdate;
+    }
+
+    public void setInspectstatus(String inspectstatus) {
+        this.inspectstatus = inspectstatus;
+    }
+
+    public String getInspectstatus() {
+        return inspectstatus;
+    }
+
+    public void setDelFlag(Integer delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(String createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setUpdaterCode(String updaterCode) {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode() {
+        return updaterCode;
+    }
+
+    public void setUpdatedate(Date updatedate) {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate() {
+        return updatedate;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id" , getId())
+                .append("washerNo" , getWasherNo())
+                .append("location" , getLocation())
+                .append("status" , getStatus())
+                .append("faultDesc" , getFaultDesc())
+                .append("faultSloveSign" , getFaultSloveSign())
+                .append("inspector" , getInspector())
+                .append("inspectdate" , getInspectdate())
+                .append("inspectstatus" , getInspectstatus())
+                .append("delFlag" , getDelFlag())
+                .append("createrCode" , getCreaterCode())
+                .append("createdate" , getCreatedate())
+                .append("updaterCode" , getUpdaterCode())
+                .append("updatedate" , getUpdatedate())
+                .append("deptId" , getDeptId())
+                .append("remarks" , getRemarks())
+                .toString();
+    }
+}

+ 167 - 0
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiles.java

@@ -0,0 +1,167 @@
+package com.cpms.project.safety.domain;
+
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 安全设备设施检查附件对象 t_safety_files
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public class TSafetyFiles extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 文件url */
+    @Excel(name = "文件url")
+    private String fileUrl;
+
+    /** 文件名称 */
+    @Excel(name = "文件名称")
+    private String fileName;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    @Excel(name = "更新人")
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "更新日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setFileName(String fileName)
+    {
+        this.fileName = fileName;
+    }
+
+    public String getFileName()
+    {
+        return fileName;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("fileUrl", getFileUrl())
+            .append("fileName", getFileName())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 302 - 0
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFireExtinguisher.java

@@ -0,0 +1,302 @@
+package com.cpms.project.safety.domain;
+
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 灭火器对象 t_safety_fire_extinguisher
+ *
+ * @author ruoyi
+ * @date 2023-06-01
+ */
+public class TSafetyFireExtinguisher extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantName;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String location;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private String devNum;
+
+    /** 灭火器类型 */
+    @Excel(name = "灭火器类型")
+    private String extinguisherType;
+
+    /** 检查人 */
+    @Excel(name = "检查人")
+    private String inspector;
+
+    /** 充装日期 */
+    @Excel(name = "充装日期")
+    private String fillingDate;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectdate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=ok,0=not ok")
+    private String status;
+
+    /** 措施 */
+    @Excel(name = "措施")
+    private String measure;
+
+    /** 检查状况 */
+    @Excel(name = "检查状况")
+    private String inspectstatus;
+
+    /** 附件id */
+    private String fileIds;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantName(String plantName)
+    {
+        this.plantName = plantName;
+    }
+
+    public String getPlantName()
+    {
+        return plantName;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setLocation(String location)
+    {
+        this.location = location;
+    }
+
+    public String getLocation()
+    {
+        return location;
+    }
+    public void setDevNum(String devNum)
+    {
+        this.devNum = devNum;
+    }
+
+    public String getDevNum()
+    {
+        return devNum;
+    }
+    public void setExtinguisherType(String extinguisherType)
+    {
+        this.extinguisherType = extinguisherType;
+    }
+
+    public String getExtinguisherType()
+    {
+        return extinguisherType;
+    }
+    public void setInspector(String inspector)
+    {
+        this.inspector = inspector;
+    }
+
+    public String getInspector()
+    {
+        return inspector;
+    }
+    public void setFillingDate(String fillingDate)
+    {
+        this.fillingDate = fillingDate;
+    }
+
+    public String getFillingDate()
+    {
+        return fillingDate;
+    }
+    public void setInspectdate(Date inspectdate)
+    {
+        this.inspectdate = inspectdate;
+    }
+
+    public Date getInspectdate()
+    {
+        return inspectdate;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setMeasure(String measure)
+    {
+        this.measure = measure;
+    }
+
+    public String getMeasure()
+    {
+        return measure;
+    }
+    public void setInspectstatus(String inspectstatus)
+    {
+        this.inspectstatus = inspectstatus;
+    }
+
+    public String getInspectstatus()
+    {
+        return inspectstatus;
+    }
+    public void setFileIds(String fileIds)
+    {
+        this.fileIds = fileIds;
+    }
+
+    public String getFileIds()
+    {
+        return fileIds;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantName", getPlantName())
+            .append("devNo", getDevNo())
+            .append("location", getLocation())
+            .append("devNum", getDevNum())
+            .append("extinguisherType", getExtinguisherType())
+            .append("inspector", getInspector())
+            .append("fillingDate", getFillingDate())
+            .append("inspectdate", getInspectdate())
+            .append("status", getStatus())
+            .append("measure", getMeasure())
+            .append("inspectstatus", getInspectstatus())
+            .append("fileIds", getFileIds())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 260 - 0
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyFiredoor.java

@@ -0,0 +1,260 @@
+package com.cpms.project.safety.domain;
+
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 防火门对象 t_safety_firedoor
+ *
+ * @author ruoyi
+ * @date 2023-05-31
+ */
+public class TSafetyFiredoor extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 装置名称 */
+    @Excel(name = "装置名称")
+    private String plantName;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String location;
+
+    /** 检查人 */
+    @Excel(name = "检查人")
+    private String inspector;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectdate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=ok,0=not ok")
+    private String status;
+
+    /** 措施 */
+    @Excel(name = "措施")
+    private String measure;
+
+    /** 检查状况 */
+    @Excel(name = "检查状况")
+    private String inspectstatus;
+
+    /** 附件id */
+    private String fileIds;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPlantName(String plantName)
+    {
+        this.plantName = plantName;
+    }
+
+    public String getPlantName()
+    {
+        return plantName;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setLocation(String location)
+    {
+        this.location = location;
+    }
+
+    public String getLocation()
+    {
+        return location;
+    }
+    public void setInspector(String inspector)
+    {
+        this.inspector = inspector;
+    }
+
+    public String getInspector()
+    {
+        return inspector;
+    }
+    public void setInspectdate(Date inspectdate)
+    {
+        this.inspectdate = inspectdate;
+    }
+
+    public Date getInspectdate()
+    {
+        return inspectdate;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setMeasure(String measure)
+    {
+        this.measure = measure;
+    }
+
+    public String getMeasure()
+    {
+        return measure;
+    }
+    public void setInspectstatus(String inspectstatus)
+    {
+        this.inspectstatus = inspectstatus;
+    }
+
+    public String getInspectstatus()
+    {
+        return inspectstatus;
+    }
+    public void setFileIds(String fileIds)
+    {
+        this.fileIds = fileIds;
+    }
+
+    public String getFileIds()
+    {
+        return fileIds;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("plantName", getPlantName())
+            .append("devNo", getDevNo())
+            .append("location", getLocation())
+            .append("inspector", getInspector())
+            .append("inspectdate", getInspectdate())
+            .append("status", getStatus())
+            .append("measure", getMeasure())
+            .append("inspectstatus", getInspectstatus())
+            .append("fileIds", getFileIds())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .toString();
+    }
+}

+ 311 - 0
cpms-admin/src/main/java/com/cpms/project/safety/domain/TSafetyRecord.java

@@ -0,0 +1,311 @@
+package com.cpms.project.safety.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.cpms.common.annotation.Excel;
+import com.cpms.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 洗眼器检查记录对象 t_safety_record
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public class TSafetyRecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** id */
+    private Long id;
+
+    /** 洗眼器id */
+    private Long washerId;
+
+
+    private Long devId;
+
+    @Excel(name = "设备类型")
+    private String devType;
+
+    @Excel(name = "充装日期")
+    private String fillingDate;
+
+    @Excel(name = "位置")
+    private String location;
+    /** ok/not ok */
+    @Excel(name = "ok/not ok",readConverterExp = "1=ok,0=not ok")
+    private String status;
+
+    /** 故障描述 */
+    @Excel(name = "故障描述")
+    private String faultDesc;
+
+    /** 故障解决签名 */
+    @Excel(name = "故障解决签名")
+    private String faultSloveSign;
+
+
+    @Excel(name = "措施")
+    private String measure;
+
+    /** 检查人 */
+    @Excel(name = "检查人")
+    private String inspector;
+
+    /** 检查日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date inspectdate;
+
+    /** 检查状况 */
+    @Excel(name = "检查状况")
+    private String inspectstatus;
+
+    /** 删除标识 */
+    private Integer delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 更新人 */
+    private String updaterCode;
+
+    /** 更新日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 附件id */
+    @Excel(name = "附件id")
+    private String fileIds;
+
+    private Long fireId;
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public Long getDevId() {
+        return devId;
+    }
+
+    public void setDevId(Long devId) {
+        this.devId = devId;
+    }
+
+    public String getDevType() {
+        return devType;
+    }
+
+    public void setDevType(String devType) {
+        this.devType = devType;
+    }
+
+    public String getFillingDate() {
+        return fillingDate;
+    }
+
+    public void setFillingDate(String fillingDate) {
+        this.fillingDate = fillingDate;
+    }
+
+    public Long getFireId() {
+        return fireId;
+    }
+
+    public void setFireId(Long fireId) {
+        this.fireId = fireId;
+    }
+
+    public String getMeasure() {
+        return measure;
+    }
+
+    public void setMeasure(String measure) {
+        this.measure = measure;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setWasherId(Long washerId)
+    {
+        this.washerId = washerId;
+    }
+
+    public Long getWasherId()
+    {
+        return washerId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setFaultDesc(String faultDesc)
+    {
+        this.faultDesc = faultDesc;
+    }
+
+    public String getFaultDesc()
+    {
+        return faultDesc;
+    }
+    public void setFaultSloveSign(String faultSloveSign)
+    {
+        this.faultSloveSign = faultSloveSign;
+    }
+
+    public String getFaultSloveSign()
+    {
+        return faultSloveSign;
+    }
+    public void setInspector(String inspector)
+    {
+        this.inspector = inspector;
+    }
+
+    public String getInspector()
+    {
+        return inspector;
+    }
+    public void setInspectdate(Date inspectdate)
+    {
+        this.inspectdate = inspectdate;
+    }
+
+    public Date getInspectdate()
+    {
+        return inspectdate;
+    }
+    public void setInspectstatus(String inspectstatus)
+    {
+        this.inspectstatus = inspectstatus;
+    }
+
+    public String getInspectstatus()
+    {
+        return inspectstatus;
+    }
+    public void setDelFlag(Integer delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Integer getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setCreaterCode(String createrCode)
+    {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode()
+    {
+        return createrCode;
+    }
+    public void setCreatedate(Date createdate)
+    {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate()
+    {
+        return createdate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setFileIds(String fileIds)
+    {
+        this.fileIds = fileIds;
+    }
+
+    public String getFileIds()
+    {
+        return fileIds;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("washerId", getWasherId())
+            .append("status", getStatus())
+            .append("faultDesc", getFaultDesc())
+            .append("faultSloveSign", getFaultSloveSign())
+            .append("inspector", getInspector())
+            .append("inspectdate", getInspectdate())
+            .append("inspectstatus", getInspectstatus())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("remarks", getRemarks())
+            .append("fileIds", getFileIds())
+            .toString();
+    }
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyEyeWasherMapper.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.mapper;
+
+
+import com.cpms.project.safety.domain.TSafetyEyeWasher;
+
+import java.util.List;
+
+/**
+ * 洗眼器Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface TSafetyEyeWasherMapper 
+{
+    /**
+     * 查询洗眼器
+     * 
+     * @param id 洗眼器主键
+     * @return 洗眼器
+     */
+    public TSafetyEyeWasher selectTSafetyEyeWasherById(Long id);
+
+    /**
+     * 查询洗眼器列表
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 洗眼器集合
+     */
+    public List<TSafetyEyeWasher> selectTSafetyEyeWasherList(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 新增洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    public int insertTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 修改洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    public int updateTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 删除洗眼器
+     * 
+     * @param id 洗眼器主键
+     * @return 结果
+     */
+    public int deleteTSafetyEyeWasherById(Long id);
+
+    /**
+     * 批量删除洗眼器
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyEyeWasherByIds(Long[] ids);
+}

+ 62 - 0
cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFilesMapper.java

@@ -0,0 +1,62 @@
+package com.cpms.project.safety.mapper;
+
+import com.cpms.project.safety.domain.TSafetyFiles;
+
+import java.util.List;
+
+/**
+ * 安全设备设施检查附件Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface TSafetyFilesMapper 
+{
+    /**
+     * 查询安全设备设施检查附件
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 安全设备设施检查附件
+     */
+    public TSafetyFiles selectTSafetyFilesById(Long id);
+
+    /**
+     * 查询安全设备设施检查附件列表
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 安全设备设施检查附件集合
+     */
+    public List<TSafetyFiles> selectTSafetyFilesList(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 新增安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    public int insertTSafetyFiles(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 修改安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    public int updateTSafetyFiles(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 删除安全设备设施检查附件
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 结果
+     */
+    public int deleteTSafetyFilesById(Long id);
+
+    /**
+     * 批量删除安全设备设施检查附件
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFilesByIds(Long[] ids);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFireExtinguisherMapper.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.mapper;
+
+
+import com.cpms.project.safety.domain.TSafetyFireExtinguisher;
+
+import java.util.List;
+
+/**
+ * 灭火器Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-06-01
+ */
+public interface TSafetyFireExtinguisherMapper 
+{
+    /**
+     * 查询灭火器
+     * 
+     * @param id 灭火器主键
+     * @return 灭火器
+     */
+    public TSafetyFireExtinguisher selectTSafetyFireExtinguisherById(Long id);
+
+    /**
+     * 查询灭火器列表
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 灭火器集合
+     */
+    public List<TSafetyFireExtinguisher> selectTSafetyFireExtinguisherList(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 新增灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    public int insertTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 修改灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    public int updateTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 删除灭火器
+     * 
+     * @param id 灭火器主键
+     * @return 结果
+     */
+    public int deleteTSafetyFireExtinguisherById(Long id);
+
+    /**
+     * 批量删除灭火器
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFireExtinguisherByIds(Long[] ids);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyFiredoorMapper.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.mapper;
+
+
+import com.cpms.project.safety.domain.TSafetyFiredoor;
+
+import java.util.List;
+
+/**
+ * 防火门Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-31
+ */
+public interface TSafetyFiredoorMapper 
+{
+    /**
+     * 查询防火门
+     * 
+     * @param id 防火门主键
+     * @return 防火门
+     */
+    public TSafetyFiredoor selectTSafetyFiredoorById(Long id);
+
+    /**
+     * 查询防火门列表
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 防火门集合
+     */
+    public List<TSafetyFiredoor> selectTSafetyFiredoorList(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 新增防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    public int insertTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 修改防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    public int updateTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 删除防火门
+     * 
+     * @param id 防火门主键
+     * @return 结果
+     */
+    public int deleteTSafetyFiredoorById(Long id);
+
+    /**
+     * 批量删除防火门
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFiredoorByIds(Long[] ids);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/mapper/TSafetyRecordMapper.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.mapper;
+
+
+import com.cpms.project.safety.domain.TSafetyRecord;
+
+import java.util.List;
+
+/**
+ * 洗眼器检查记录Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface TSafetyRecordMapper
+{
+    /**
+     * 查询洗眼器检查记录
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 洗眼器检查记录
+     */
+    public TSafetyRecord selectTSafetyRecordById(Long id);
+
+    /**
+     * 查询洗眼器检查记录列表
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 洗眼器检查记录集合
+     */
+    public List<TSafetyRecord> selectTSafetyRecordList(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 新增洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    public int insertTSafetyRecord(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 修改洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    public int updateTSafetyRecord(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 删除洗眼器检查记录
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 结果
+     */
+    public int deleteTSafetyRecordById(Long id);
+
+    /**
+     * 批量删除洗眼器检查记录
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyRecordByIds(Long[] ids);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyEyeWasherService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.service;
+
+
+import com.cpms.project.safety.domain.TSafetyEyeWasher;
+
+import java.util.List;
+
+/**
+ * 洗眼器Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface ITSafetyEyeWasherService 
+{
+    /**
+     * 查询洗眼器
+     * 
+     * @param id 洗眼器主键
+     * @return 洗眼器
+     */
+    public TSafetyEyeWasher selectTSafetyEyeWasherById(Long id);
+
+    /**
+     * 查询洗眼器列表
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 洗眼器集合
+     */
+    public List<TSafetyEyeWasher> selectTSafetyEyeWasherList(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 新增洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    public int insertTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 修改洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    public int updateTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher);
+
+    /**
+     * 批量删除洗眼器
+     * 
+     * @param ids 需要删除的洗眼器主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyEyeWasherByIds(Long[] ids);
+
+    /**
+     * 删除洗眼器信息
+     * 
+     * @param id 洗眼器主键
+     * @return 结果
+     */
+    public int deleteTSafetyEyeWasherById(Long id);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFilesService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.service;
+
+
+import com.cpms.project.safety.domain.TSafetyFiles;
+
+import java.util.List;
+
+/**
+ * 安全设备设施检查附件Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface ITSafetyFilesService 
+{
+    /**
+     * 查询安全设备设施检查附件
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 安全设备设施检查附件
+     */
+    public TSafetyFiles selectTSafetyFilesById(Long id);
+
+    /**
+     * 查询安全设备设施检查附件列表
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 安全设备设施检查附件集合
+     */
+    public List<TSafetyFiles> selectTSafetyFilesList(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 新增安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    public int insertTSafetyFiles(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 修改安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    public int updateTSafetyFiles(TSafetyFiles tSafetyFiles);
+
+    /**
+     * 批量删除安全设备设施检查附件
+     * 
+     * @param ids 需要删除的安全设备设施检查附件主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFilesByIds(Long[] ids);
+
+    /**
+     * 删除安全设备设施检查附件信息
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 结果
+     */
+    public int deleteTSafetyFilesById(Long id);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFireExtinguisherService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.service;
+
+
+import com.cpms.project.safety.domain.TSafetyFireExtinguisher;
+
+import java.util.List;
+
+/**
+ * 灭火器Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-06-01
+ */
+public interface ITSafetyFireExtinguisherService 
+{
+    /**
+     * 查询灭火器
+     * 
+     * @param id 灭火器主键
+     * @return 灭火器
+     */
+    public TSafetyFireExtinguisher selectTSafetyFireExtinguisherById(Long id);
+
+    /**
+     * 查询灭火器列表
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 灭火器集合
+     */
+    public List<TSafetyFireExtinguisher> selectTSafetyFireExtinguisherList(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 新增灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    public int insertTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 修改灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    public int updateTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher);
+
+    /**
+     * 批量删除灭火器
+     * 
+     * @param ids 需要删除的灭火器主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFireExtinguisherByIds(Long[] ids);
+
+    /**
+     * 删除灭火器信息
+     * 
+     * @param id 灭火器主键
+     * @return 结果
+     */
+    public int deleteTSafetyFireExtinguisherById(Long id);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyFiredoorService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.service;
+
+
+import com.cpms.project.safety.domain.TSafetyFiredoor;
+
+import java.util.List;
+
+/**
+ * 防火门Service接口
+ * 
+ * @author ruoyi
+ * @date 2023-05-31
+ */
+public interface ITSafetyFiredoorService 
+{
+    /**
+     * 查询防火门
+     * 
+     * @param id 防火门主键
+     * @return 防火门
+     */
+    public TSafetyFiredoor selectTSafetyFiredoorById(Long id);
+
+    /**
+     * 查询防火门列表
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 防火门集合
+     */
+    public List<TSafetyFiredoor> selectTSafetyFiredoorList(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 新增防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    public int insertTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 修改防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    public int updateTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor);
+
+    /**
+     * 批量删除防火门
+     * 
+     * @param ids 需要删除的防火门主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyFiredoorByIds(Long[] ids);
+
+    /**
+     * 删除防火门信息
+     * 
+     * @param id 防火门主键
+     * @return 结果
+     */
+    public int deleteTSafetyFiredoorById(Long id);
+}

+ 63 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/ITSafetyRecordService.java

@@ -0,0 +1,63 @@
+package com.cpms.project.safety.service;
+
+
+import com.cpms.project.safety.domain.TSafetyRecord;
+
+import java.util.List;
+
+/**
+ * 洗眼器检查记录Service接口
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+public interface ITSafetyRecordService
+{
+    /**
+     * 查询洗眼器检查记录
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 洗眼器检查记录
+     */
+    public TSafetyRecord selectTSafetyRecordById(Long id);
+
+    /**
+     * 查询洗眼器检查记录列表
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 洗眼器检查记录集合
+     */
+    public List<TSafetyRecord> selectTSafetyRecordList(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 新增洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    public int insertTSafetyRecord(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 修改洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    public int updateTSafetyRecord(TSafetyRecord tSafetyRecord);
+
+    /**
+     * 批量删除洗眼器检查记录
+     *
+     * @param ids 需要删除的洗眼器检查记录主键集合
+     * @return 结果
+     */
+    public int deleteTSafetyRecordByIds(Long[] ids);
+
+    /**
+     * 删除洗眼器检查记录信息
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 结果
+     */
+    public int deleteTSafetyRecordById(Long id);
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyEyeWasherServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.safety.service.impl;
+
+import com.cpms.project.safety.domain.TSafetyEyeWasher;
+import com.cpms.project.safety.mapper.TSafetyEyeWasherMapper;
+import com.cpms.project.safety.service.ITSafetyEyeWasherService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 洗眼器Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Service
+public class TSafetyEyeWasherServiceImpl implements ITSafetyEyeWasherService
+{
+    @Autowired
+    private TSafetyEyeWasherMapper tSafetyEyeWasherMapper;
+
+    /**
+     * 查询洗眼器
+     * 
+     * @param id 洗眼器主键
+     * @return 洗眼器
+     */
+    @Override
+    public TSafetyEyeWasher selectTSafetyEyeWasherById(Long id)
+    {
+        return tSafetyEyeWasherMapper.selectTSafetyEyeWasherById(id);
+    }
+
+    /**
+     * 查询洗眼器列表
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 洗眼器
+     */
+    @Override
+    public List<TSafetyEyeWasher> selectTSafetyEyeWasherList(TSafetyEyeWasher tSafetyEyeWasher)
+    {
+        return tSafetyEyeWasherMapper.selectTSafetyEyeWasherList(tSafetyEyeWasher);
+    }
+
+    /**
+     * 新增洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    @Override
+    public int insertTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher)
+    {
+        return tSafetyEyeWasherMapper.insertTSafetyEyeWasher(tSafetyEyeWasher);
+    }
+
+    /**
+     * 修改洗眼器
+     * 
+     * @param tSafetyEyeWasher 洗眼器
+     * @return 结果
+     */
+    @Override
+    public int updateTSafetyEyeWasher(TSafetyEyeWasher tSafetyEyeWasher)
+    {
+        return tSafetyEyeWasherMapper.updateTSafetyEyeWasher(tSafetyEyeWasher);
+    }
+
+    /**
+     * 批量删除洗眼器
+     * 
+     * @param ids 需要删除的洗眼器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyEyeWasherByIds(Long[] ids)
+    {
+        return tSafetyEyeWasherMapper.deleteTSafetyEyeWasherByIds(ids);
+    }
+
+    /**
+     * 删除洗眼器信息
+     * 
+     * @param id 洗眼器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyEyeWasherById(Long id)
+    {
+        return tSafetyEyeWasherMapper.deleteTSafetyEyeWasherById(id);
+    }
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFilesServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.safety.service.impl;
+
+import com.cpms.project.safety.domain.TSafetyFiles;
+import com.cpms.project.safety.mapper.TSafetyFilesMapper;
+import com.cpms.project.safety.service.ITSafetyFilesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 安全设备设施检查附件Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Service
+public class TSafetyFilesServiceImpl implements ITSafetyFilesService
+{
+    @Autowired
+    private TSafetyFilesMapper tSafetyFilesMapper;
+
+    /**
+     * 查询安全设备设施检查附件
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 安全设备设施检查附件
+     */
+    @Override
+    public TSafetyFiles selectTSafetyFilesById(Long id)
+    {
+        return tSafetyFilesMapper.selectTSafetyFilesById(id);
+    }
+
+    /**
+     * 查询安全设备设施检查附件列表
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 安全设备设施检查附件
+     */
+    @Override
+    public List<TSafetyFiles> selectTSafetyFilesList(TSafetyFiles tSafetyFiles)
+    {
+        return tSafetyFilesMapper.selectTSafetyFilesList(tSafetyFiles);
+    }
+
+    /**
+     * 新增安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    @Override
+    public int insertTSafetyFiles(TSafetyFiles tSafetyFiles)
+    {
+        return tSafetyFilesMapper.insertTSafetyFiles(tSafetyFiles);
+    }
+
+    /**
+     * 修改安全设备设施检查附件
+     * 
+     * @param tSafetyFiles 安全设备设施检查附件
+     * @return 结果
+     */
+    @Override
+    public int updateTSafetyFiles(TSafetyFiles tSafetyFiles)
+    {
+        return tSafetyFilesMapper.updateTSafetyFiles(tSafetyFiles);
+    }
+
+    /**
+     * 批量删除安全设备设施检查附件
+     * 
+     * @param ids 需要删除的安全设备设施检查附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFilesByIds(Long[] ids)
+    {
+        return tSafetyFilesMapper.deleteTSafetyFilesByIds(ids);
+    }
+
+    /**
+     * 删除安全设备设施检查附件信息
+     * 
+     * @param id 安全设备设施检查附件主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFilesById(Long id)
+    {
+        return tSafetyFilesMapper.deleteTSafetyFilesById(id);
+    }
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFireExtinguisherServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.safety.service.impl;
+
+import com.cpms.project.safety.domain.TSafetyFireExtinguisher;
+import com.cpms.project.safety.mapper.TSafetyFireExtinguisherMapper;
+import com.cpms.project.safety.service.ITSafetyFireExtinguisherService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 灭火器Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-06-01
+ */
+@Service
+public class TSafetyFireExtinguisherServiceImpl implements ITSafetyFireExtinguisherService
+{
+    @Autowired
+    private TSafetyFireExtinguisherMapper tSafetyFireExtinguisherMapper;
+
+    /**
+     * 查询灭火器
+     * 
+     * @param id 灭火器主键
+     * @return 灭火器
+     */
+    @Override
+    public TSafetyFireExtinguisher selectTSafetyFireExtinguisherById(Long id)
+    {
+        return tSafetyFireExtinguisherMapper.selectTSafetyFireExtinguisherById(id);
+    }
+
+    /**
+     * 查询灭火器列表
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 灭火器
+     */
+    @Override
+    public List<TSafetyFireExtinguisher> selectTSafetyFireExtinguisherList(TSafetyFireExtinguisher tSafetyFireExtinguisher)
+    {
+        return tSafetyFireExtinguisherMapper.selectTSafetyFireExtinguisherList(tSafetyFireExtinguisher);
+    }
+
+    /**
+     * 新增灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    @Override
+    public int insertTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher)
+    {
+        return tSafetyFireExtinguisherMapper.insertTSafetyFireExtinguisher(tSafetyFireExtinguisher);
+    }
+
+    /**
+     * 修改灭火器
+     * 
+     * @param tSafetyFireExtinguisher 灭火器
+     * @return 结果
+     */
+    @Override
+    public int updateTSafetyFireExtinguisher(TSafetyFireExtinguisher tSafetyFireExtinguisher)
+    {
+        return tSafetyFireExtinguisherMapper.updateTSafetyFireExtinguisher(tSafetyFireExtinguisher);
+    }
+
+    /**
+     * 批量删除灭火器
+     * 
+     * @param ids 需要删除的灭火器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFireExtinguisherByIds(Long[] ids)
+    {
+        return tSafetyFireExtinguisherMapper.deleteTSafetyFireExtinguisherByIds(ids);
+    }
+
+    /**
+     * 删除灭火器信息
+     * 
+     * @param id 灭火器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFireExtinguisherById(Long id)
+    {
+        return tSafetyFireExtinguisherMapper.deleteTSafetyFireExtinguisherById(id);
+    }
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyFiredoorServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.safety.service.impl;
+
+import com.cpms.project.safety.domain.TSafetyFiredoor;
+import com.cpms.project.safety.mapper.TSafetyFiredoorMapper;
+import com.cpms.project.safety.service.ITSafetyFiredoorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 防火门Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2023-05-31
+ */
+@Service
+public class TSafetyFiredoorServiceImpl implements ITSafetyFiredoorService
+{
+    @Autowired
+    private TSafetyFiredoorMapper tSafetyFiredoorMapper;
+
+    /**
+     * 查询防火门
+     * 
+     * @param id 防火门主键
+     * @return 防火门
+     */
+    @Override
+    public TSafetyFiredoor selectTSafetyFiredoorById(Long id)
+    {
+        return tSafetyFiredoorMapper.selectTSafetyFiredoorById(id);
+    }
+
+    /**
+     * 查询防火门列表
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 防火门
+     */
+    @Override
+    public List<TSafetyFiredoor> selectTSafetyFiredoorList(TSafetyFiredoor tSafetyFiredoor)
+    {
+        return tSafetyFiredoorMapper.selectTSafetyFiredoorList(tSafetyFiredoor);
+    }
+
+    /**
+     * 新增防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    @Override
+    public int insertTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor)
+    {
+        return tSafetyFiredoorMapper.insertTSafetyFiredoor(tSafetyFiredoor);
+    }
+
+    /**
+     * 修改防火门
+     * 
+     * @param tSafetyFiredoor 防火门
+     * @return 结果
+     */
+    @Override
+    public int updateTSafetyFiredoor(TSafetyFiredoor tSafetyFiredoor)
+    {
+        return tSafetyFiredoorMapper.updateTSafetyFiredoor(tSafetyFiredoor);
+    }
+
+    /**
+     * 批量删除防火门
+     * 
+     * @param ids 需要删除的防火门主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFiredoorByIds(Long[] ids)
+    {
+        return tSafetyFiredoorMapper.deleteTSafetyFiredoorByIds(ids);
+    }
+
+    /**
+     * 删除防火门信息
+     * 
+     * @param id 防火门主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyFiredoorById(Long id)
+    {
+        return tSafetyFiredoorMapper.deleteTSafetyFiredoorById(id);
+    }
+}

+ 94 - 0
cpms-admin/src/main/java/com/cpms/project/safety/service/impl/TSafetyRecordServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cpms.project.safety.service.impl;
+
+import com.cpms.project.safety.domain.TSafetyRecord;
+import com.cpms.project.safety.mapper.TSafetyRecordMapper;
+import com.cpms.project.safety.service.ITSafetyRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 洗眼器检查记录Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-05-25
+ */
+@Service
+public class TSafetyRecordServiceImpl implements ITSafetyRecordService
+{
+    @Autowired
+    private TSafetyRecordMapper tSafetyRecordMapper;
+
+    /**
+     * 查询洗眼器检查记录
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 洗眼器检查记录
+     */
+    @Override
+    public TSafetyRecord selectTSafetyRecordById(Long id)
+    {
+        return tSafetyRecordMapper.selectTSafetyRecordById(id);
+    }
+
+    /**
+     * 查询洗眼器检查记录列表
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 洗眼器检查记录
+     */
+    @Override
+    public List<TSafetyRecord> selectTSafetyRecordList(TSafetyRecord tSafetyRecord)
+    {
+        return tSafetyRecordMapper.selectTSafetyRecordList(tSafetyRecord);
+    }
+
+    /**
+     * 新增洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    @Override
+    public int insertTSafetyRecord(TSafetyRecord tSafetyRecord)
+    {
+        return tSafetyRecordMapper.insertTSafetyRecord(tSafetyRecord);
+    }
+
+    /**
+     * 修改洗眼器检查记录
+     *
+     * @param tSafetyRecord 洗眼器检查记录
+     * @return 结果
+     */
+    @Override
+    public int updateTSafetyRecord(TSafetyRecord tSafetyRecord)
+    {
+        return tSafetyRecordMapper.updateTSafetyRecord(tSafetyRecord);
+    }
+
+    /**
+     * 批量删除洗眼器检查记录
+     *
+     * @param ids 需要删除的洗眼器检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyRecordByIds(Long[] ids)
+    {
+        return tSafetyRecordMapper.deleteTSafetyRecordByIds(ids);
+    }
+
+    /**
+     * 删除洗眼器检查记录信息
+     *
+     * @param id 洗眼器检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTSafetyRecordById(Long id)
+    {
+        return tSafetyRecordMapper.deleteTSafetyRecordById(id);
+    }
+}

+ 130 - 0
cpms-admin/src/main/resources/mapper/safety/TSafetyEyeWasherMapper.xml

@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cpms.project.safety.mapper.TSafetyEyeWasherMapper">
+
+    <resultMap type="TSafetyEyeWasher" id="TSafetyEyeWasherResult">
+        <result property="id"    column="id"    />
+        <result property="washerNo"    column="washer_no"    />
+        <result property="location"    column="location"    />
+        <result property="status"    column="status"    />
+        <result property="faultDesc"    column="fault_desc"    />
+        <result property="faultSloveSign"    column="fault_slove_sign"    />
+        <result property="inspector"    column="inspector"    />
+        <result property="inspectdate"    column="inspectdate"    />
+        <result property="inspectstatus"    column="inspectstatus"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="fileIds"    column="file_ids"    />
+    </resultMap>
+
+    <sql id="selectTSafetyEyeWasherVo">
+        select id, washer_no, location, status, fault_desc, fault_slove_sign, inspector, inspectdate, inspectstatus, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks,file_ids from t_safety_eye_washer
+    </sql>
+
+    <select id="selectTSafetyEyeWasherList" parameterType="TSafetyEyeWasher" resultMap="TSafetyEyeWasherResult">
+        <include refid="selectTSafetyEyeWasherVo"/>
+        <where>
+            <if test="washerNo != null  and washerNo != ''"> and washer_no = #{washerNo}</if>
+            <if test="location != null  and location != ''"> and location = #{location}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="faultDesc != null  and faultDesc != ''"> and fault_desc = #{faultDesc}</if>
+            <if test="faultSloveSign != null  and faultSloveSign != ''"> and fault_slove_sign = #{faultSloveSign}</if>
+            <if test="inspector != null  and inspector != ''"> and inspector = #{inspector}</if>
+            <if test="inspectdate != null "> and inspectdate = #{inspectdate}</if>
+            <if test="inspectstatus != null  and inspectstatus != ''"> and inspectstatus = #{inspectstatus}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSafetyEyeWasherById" parameterType="Long" resultMap="TSafetyEyeWasherResult">
+        <include refid="selectTSafetyEyeWasherVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSafetyEyeWasher" parameterType="TSafetyEyeWasher" useGeneratedKeys="true" keyProperty="id">
+        insert into t_safety_eye_washer
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="washerNo != null and washerNo != ''">washer_no,</if>
+            <if test="location != null">location,</if>
+            <if test="status != null">status,</if>
+            <if test="faultDesc != null">fault_desc,</if>
+            <if test="faultSloveSign != null">fault_slove_sign,</if>
+            <if test="inspector != null and inspector != ''">inspector,</if>
+            <if test="inspectdate != null">inspectdate,</if>
+            <if test="inspectstatus != null">inspectstatus,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="fileIds != null">file_ids,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="washerNo != null and washerNo != ''">#{washerNo},</if>
+            <if test="location != null">#{location},</if>
+            <if test="status != null">#{status},</if>
+            <if test="faultDesc != null">#{faultDesc},</if>
+            <if test="faultSloveSign != null">#{faultSloveSign},</if>
+            <if test="inspector != null and inspector != ''">#{inspector},</if>
+            <if test="inspectdate != null">#{inspectdate},</if>
+            <if test="inspectstatus != null">#{inspectstatus},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="fileIds != null">#{fileIds},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSafetyEyeWasher" parameterType="TSafetyEyeWasher">
+        update t_safety_eye_washer
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="washerNo != null and washerNo != ''">washer_no = #{washerNo},</if>
+            <if test="location != null">location = #{location},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="faultDesc != null">fault_desc = #{faultDesc},</if>
+            <if test="faultSloveSign != null">fault_slove_sign = #{faultSloveSign},</if>
+            <if test="inspector != null and inspector != ''">inspector = #{inspector},</if>
+            <if test="inspectdate != null">inspectdate = #{inspectdate},</if>
+            <if test="inspectstatus != null">inspectstatus = #{inspectstatus},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="fileIds != null">file_ids = #{fileIds},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSafetyEyeWasherById" parameterType="Long">
+        update t_safety_eye_washer set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSafetyEyeWasherByIds" parameterType="String">
+        update t_safety_eye_washer set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 96 - 0
cpms-admin/src/main/resources/mapper/safety/TSafetyFilesMapper.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cpms.project.safety.mapper.TSafetyFilesMapper">
+
+    <resultMap type="TSafetyFiles" id="TSafetyFilesResult">
+        <result property="id"    column="id"    />
+        <result property="fileUrl"    column="file_url"    />
+        <result property="fileName"    column="file_name"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectTSafetyFilesVo">
+        select id, file_url, file_name, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_safety_files
+    </sql>
+
+    <select id="selectTSafetyFilesList" parameterType="TSafetyFiles" resultMap="TSafetyFilesResult">
+        <include refid="selectTSafetyFilesVo"/>
+        <where>
+            <if test="fileUrl != null  and fileUrl != ''"> and file_url = #{fileUrl}</if>
+            <if test="fileName != null  and fileName != ''"> and file_name like concat('%', #{fileName}, '%')</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSafetyFilesById" parameterType="Long" resultMap="TSafetyFilesResult">
+        <include refid="selectTSafetyFilesVo"/>
+        where id= #{id}
+    </select>
+
+    <insert id="insertTSafetyFiles" parameterType="TSafetyFiles" useGeneratedKeys="true" keyProperty="id">
+        insert into t_safety_files
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fileUrl != null and fileUrl != ''">file_url,</if>
+            <if test="fileName != null and fileName != ''">file_name,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fileUrl != null and fileUrl != ''">#{fileUrl},</if>
+            <if test="fileName != null and fileName != ''">#{fileName},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSafetyFiles" parameterType="TSafetyFiles">
+        update t_safety_files
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="fileUrl != null and fileUrl != ''">file_url = #{fileUrl},</if>
+            <if test="fileName != null and fileName != ''">file_name = #{fileName},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSafetyFilesById" parameterType="Long">
+        update t_safety_files set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSafetyFilesByIds" parameterType="String">
+        update t_safety_files set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 146 - 0
cpms-admin/src/main/resources/mapper/safety/TSafetyFireExtinguisherMapper.xml

@@ -0,0 +1,146 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cpms.project.safety.mapper.TSafetyFireExtinguisherMapper">
+
+    <resultMap type="TSafetyFireExtinguisher" id="TSafetyFireExtinguisherResult">
+        <result property="id"    column="id"    />
+        <result property="plantName"    column="plant_name"    />
+        <result property="devNo"    column="dev_no"    />
+        <result property="location"    column="location"    />
+        <result property="devNum"    column="dev_num"    />
+        <result property="extinguisherType"    column="extinguisher_type"    />
+        <result property="inspector"    column="inspector"    />
+        <result property="fillingDate"    column="filling_date"    />
+        <result property="inspectdate"    column="inspectdate"    />
+        <result property="status"    column="status"    />
+        <result property="measure"    column="measure"    />
+        <result property="inspectstatus"    column="inspectstatus"    />
+        <result property="fileIds"    column="file_ids"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectTSafetyFireExtinguisherVo">
+        select id, plant_name, dev_no, location, dev_num, extinguisher_type, inspector, filling_date, inspectdate, status, measure, inspectstatus, file_ids, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_safety_fire_extinguisher
+    </sql>
+
+    <select id="selectTSafetyFireExtinguisherList" parameterType="TSafetyFireExtinguisher" resultMap="TSafetyFireExtinguisherResult">
+        <include refid="selectTSafetyFireExtinguisherVo"/>
+        <where>
+            <if test="plantName != null  and plantName != ''"> and plant_name like concat('%', #{plantName}, '%')</if>
+            <if test="devNo != null  and devNo != ''"> and dev_no = #{devNo}</if>
+            <if test="location != null  and location != ''"> and location = #{location}</if>
+            <if test="devNum != null  and devNum != ''"> and dev_num = #{devNum}</if>
+            <if test="extinguisherType != null  and extinguisherType != ''"> and extinguisher_type = #{extinguisherType}</if>
+            <if test="inspector != null  and inspector != ''"> and inspector = #{inspector}</if>
+            <if test="fillingDate != null  and fillingDate != ''"> and filling_date = #{fillingDate}</if>
+            <if test="inspectdate != null "> and inspectdate = #{inspectdate}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="measure != null  and measure != ''"> and measure = #{measure}</if>
+            <if test="inspectstatus != null  and inspectstatus != ''"> and inspectstatus = #{inspectstatus}</if>
+            <if test="fileIds != null  and fileIds != ''"> and file_ids = #{fileIds}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSafetyFireExtinguisherById" parameterType="Long" resultMap="TSafetyFireExtinguisherResult">
+        <include refid="selectTSafetyFireExtinguisherVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSafetyFireExtinguisher" parameterType="TSafetyFireExtinguisher" useGeneratedKeys="true" keyProperty="id">
+        insert into t_safety_fire_extinguisher
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">plant_name,</if>
+            <if test="devNo != null and devNo != ''">dev_no,</if>
+            <if test="location != null and location != ''">location,</if>
+            <if test="devNum != null and devNum != ''">dev_num,</if>
+            <if test="extinguisherType != null and extinguisherType != ''">extinguisher_type,</if>
+            <if test="inspector != null">inspector,</if>
+            <if test="fillingDate != null">filling_date,</if>
+            <if test="inspectdate != null">inspectdate,</if>
+            <if test="status != null">status,</if>
+            <if test="measure != null">measure,</if>
+            <if test="inspectstatus != null">inspectstatus,</if>
+            <if test="fileIds != null">file_ids,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">#{plantName},</if>
+            <if test="devNo != null and devNo != ''">#{devNo},</if>
+            <if test="location != null and location != ''">#{location},</if>
+            <if test="devNum != null and devNum != ''">#{devNum},</if>
+            <if test="extinguisherType != null and extinguisherType != ''">#{extinguisherType},</if>
+            <if test="inspector != null">#{inspector},</if>
+            <if test="fillingDate != null">#{fillingDate},</if>
+            <if test="inspectdate != null">#{inspectdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="measure != null">#{measure},</if>
+            <if test="inspectstatus != null">#{inspectstatus},</if>
+            <if test="fileIds != null">#{fileIds},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSafetyFireExtinguisher" parameterType="TSafetyFireExtinguisher">
+        update t_safety_fire_extinguisher
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">plant_name = #{plantName},</if>
+            <if test="devNo != null and devNo != ''">dev_no = #{devNo},</if>
+            <if test="location != null and location != ''">location = #{location},</if>
+            <if test="devNum != null and devNum != ''">dev_num = #{devNum},</if>
+            <if test="extinguisherType != null and extinguisherType != ''">extinguisher_type = #{extinguisherType},</if>
+            <if test="inspector != null">inspector = #{inspector},</if>
+            <if test="fillingDate != null">filling_date = #{fillingDate},</if>
+            <if test="inspectdate != null">inspectdate = #{inspectdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="measure != null">measure = #{measure},</if>
+            <if test="inspectstatus != null">inspectstatus = #{inspectstatus},</if>
+            <if test="fileIds != null">file_ids = #{fileIds},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSafetyFireExtinguisherById" parameterType="Long">
+        update t_safety_fire_extinguisher set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSafetyFireExtinguisherByIds" parameterType="String">
+        update t_safety_fire_extinguisher set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 131 - 0
cpms-admin/src/main/resources/mapper/safety/TSafetyFiredoorMapper.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cpms.project.safety.mapper.TSafetyFiredoorMapper">
+
+    <resultMap type="TSafetyFiredoor" id="TSafetyFiredoorResult">
+        <result property="id"    column="id"    />
+        <result property="plantName"    column="plant_name"    />
+        <result property="devNo"    column="dev_no"    />
+        <result property="location"    column="location"    />
+        <result property="inspector"    column="inspector"    />
+        <result property="inspectdate"    column="inspectdate"    />
+        <result property="status"    column="status"    />
+        <result property="measure"    column="measure"    />
+        <result property="inspectstatus"    column="inspectstatus"    />
+        <result property="fileIds"    column="file_ids"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+    </resultMap>
+
+    <sql id="selectTSafetyFiredoorVo">
+        select id, plant_name, dev_no, location, inspector, inspectdate, status, measure, inspectstatus, file_ids, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks from t_safety_firedoor
+    </sql>
+
+    <select id="selectTSafetyFiredoorList" parameterType="TSafetyFiredoor" resultMap="TSafetyFiredoorResult">
+        <include refid="selectTSafetyFiredoorVo"/>
+        <where>
+            <if test="plantName != null  and plantName != ''"> and plant_name like concat('%', #{plantName}, '%')</if>
+            <if test="devNo != null  and devNo != ''"> and dev_no = #{devNo}</if>
+            <if test="location != null  and location != ''"> and location = #{location}</if>
+            <if test="inspector != null  and inspector != ''"> and inspector = #{inspector}</if>
+            <if test="inspectdate != null "> and inspectdate = #{inspectdate}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="measure != null  and measure != ''"> and measure = #{measure}</if>
+            <if test="inspectstatus != null  and inspectstatus != ''"> and inspectstatus = #{inspectstatus}</if>
+            <if test="fileIds != null  and fileIds != ''"> and file_ids = #{fileIds}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+        and del_flag = 0
+        </where>
+    </select>
+
+    <select id="selectTSafetyFiredoorById" parameterType="Long" resultMap="TSafetyFiredoorResult">
+        <include refid="selectTSafetyFiredoorVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTSafetyFiredoor" parameterType="TSafetyFiredoor" useGeneratedKeys="true" keyProperty="id">
+        insert into t_safety_firedoor
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">plant_name,</if>
+            <if test="devNo != null and devNo != ''">dev_no,</if>
+            <if test="location != null and location != ''">location,</if>
+            <if test="inspector != null">inspector,</if>
+            <if test="inspectdate != null">inspectdate,</if>
+            <if test="status != null">status,</if>
+            <if test="measure != null">measure,</if>
+            <if test="inspectstatus != null">inspectstatus,</if>
+            <if test="fileIds != null">file_ids,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">#{plantName},</if>
+            <if test="devNo != null and devNo != ''">#{devNo},</if>
+            <if test="location != null and location != ''">#{location},</if>
+            <if test="inspector != null">#{inspector},</if>
+            <if test="inspectdate != null">#{inspectdate},</if>
+            <if test="status != null">#{status},</if>
+            <if test="measure != null">#{measure},</if>
+            <if test="inspectstatus != null">#{inspectstatus},</if>
+            <if test="fileIds != null">#{fileIds},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSafetyFiredoor" parameterType="TSafetyFiredoor">
+        update t_safety_firedoor
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="plantName != null and plantName != ''">plant_name = #{plantName},</if>
+            <if test="devNo != null and devNo != ''">dev_no = #{devNo},</if>
+            <if test="location != null and location != ''">location = #{location},</if>
+            <if test="inspector != null">inspector = #{inspector},</if>
+            <if test="inspectdate != null">inspectdate = #{inspectdate},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="measure != null">measure = #{measure},</if>
+            <if test="inspectstatus != null">inspectstatus = #{inspectstatus},</if>
+            <if test="fileIds != null">file_ids = #{fileIds},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSafetyFiredoorById" parameterType="Long">
+        update t_safety_firedoor set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSafetyFiredoorByIds" parameterType="String">
+        update t_safety_firedoor set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 156 - 0
cpms-admin/src/main/resources/mapper/safety/TSafetyRecordMapper.xml

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cpms.project.safety.mapper.TSafetyRecordMapper">
+
+    <resultMap type="TSafetyRecord" id="TSafetyRecordResult">
+        <result property="id"    column="id"    />
+        <result property="washerId"    column="washer_id"    />
+        <result property="status"    column="status"    />
+        <result property="faultDesc"    column="fault_desc"    />
+        <result property="faultSloveSign"    column="fault_slove_sign"    />
+        <result property="inspector"    column="inspector"    />
+        <result property="inspectdate"    column="inspectdate"    />
+        <result property="inspectstatus"    column="inspectstatus"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createrCode"    column="creater_code"    />
+        <result property="createdate"    column="createdate"    />
+        <result property="updaterCode"    column="updater_code"    />
+        <result property="updatedate"    column="updatedate"    />
+        <result property="deptId"    column="dept_id"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="fileIds"    column="file_ids"    />
+        <result property="fireId"    column="fire_id"    />
+        <result property="measure"    column="measure"    />
+        <result property="devId"    column="dev_id"    />
+        <result property="devType"    column="dev_type"    />
+        <result property="fillingDate"    column="filling_date"    />
+        <result property="location"    column="location"    />
+    </resultMap>
+
+    <sql id="selectTSafetyRecordVo">
+        select id, washer_id, status, fault_desc, fault_slove_sign, inspector, inspectdate, inspectstatus, del_flag, creater_code, createdate, updater_code, updatedate, dept_id, remarks, file_ids,fire_id,measure,filling_date,dev_type,dev_id,location from t_safety_record
+    </sql>
+
+    <select id="selectTSafetyRecordList" parameterType="TSafetyRecord" resultMap="TSafetyRecordResult">
+        <include refid="selectTSafetyRecordVo"/>
+        <where>
+            <if test="washerId != null  and washerId != ''"> and washer_id = #{washerId}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="faultDesc != null  and faultDesc != ''"> and fault_desc = #{faultDesc}</if>
+            <if test="faultSloveSign != null  and faultSloveSign != ''"> and fault_slove_sign = #{faultSloveSign}</if>
+            <if test="inspector != null  and inspector != ''"> and inspector = #{inspector}</if>
+            <if test="inspectdate != null "> and inspectdate = #{inspectdate}</if>
+            <if test="inspectstatus != null  and inspectstatus != ''"> and inspectstatus = #{inspectstatus}</if>
+            <if test="createrCode != null  and createrCode != ''"> and creater_code = #{createrCode}</if>
+            <if test="createdate != null "> and createdate = #{createdate}</if>
+            <if test="updaterCode != null  and updaterCode != ''"> and updater_code = #{updaterCode}</if>
+            <if test="updatedate != null "> and updatedate = #{updatedate}</if>
+            <if test="deptId != null "> and dept_id = #{deptId}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="fileIds != null  and fileIds != ''"> and file_ids = #{fileIds}</if>
+            <if test="fireId != null  and fireId != ''"> and fire_id = #{fireId}</if>
+            <if test="measure != null  and measure != ''"> and measure = #{measure}</if>
+            <if test="devType != null  and devType != ''"> and dev_type = #{devType}</if>
+            <if test="fillingDate != null  and fillingDate != ''"> and filling_date = #{fillingDate}</if>
+            <if test="devId != null  and devId != ''"> and dev_id = #{devId}</if>
+        and del_flag = 0
+        </where>
+        order by createdate desc
+    </select>
+
+    <select id="selectTSafetyRecordById" parameterType="Long" resultMap="TSafetyRecordResult">
+        <include refid="selectTSafetyRecordVo"/>
+        where id=#{id}
+    </select>
+
+    <insert id="insertTSafetyRecord" parameterType="TSafetyRecord" useGeneratedKeys="true" keyProperty="id">
+        insert into t_safety_record
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="washerId != null and washerId != ''">washer_id,</if>
+            <if test="status != null">status,</if>
+            <if test="faultDesc != null">fault_desc,</if>
+            <if test="faultSloveSign != null">fault_slove_sign,</if>
+            <if test="inspector != null">inspector,</if>
+            <if test="inspectdate != null">inspectdate,</if>
+            <if test="inspectstatus != null">inspectstatus,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createrCode != null">creater_code,</if>
+            <if test="createdate != null">createdate,</if>
+            <if test="updaterCode != null">updater_code,</if>
+            <if test="updatedate != null">updatedate,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="fileIds != null">file_ids,</if>
+            <if test="fireId != null">fire_id,</if>
+            <if test="measure != null">measure,</if>
+            <if test="fillingDate != null">filling_date,</if>
+            <if test="devType != null">dev_type,</if>
+            <if test="devId != null">dev_id,</if>
+            <if test="location != null">location,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="washerId != null and washerId != ''">#{washerId},</if>
+            <if test="status != null">#{status},</if>
+            <if test="faultDesc != null">#{faultDesc},</if>
+            <if test="faultSloveSign != null">#{faultSloveSign},</if>
+            <if test="inspector != null">#{inspector},</if>
+            <if test="inspectdate != null">#{inspectdate},</if>
+            <if test="inspectstatus != null">#{inspectstatus},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createrCode != null">#{createrCode},</if>
+            <if test="createdate != null">#{createdate},</if>
+            <if test="updaterCode != null">#{updaterCode},</if>
+            <if test="updatedate != null">#{updatedate},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="fileIds != null">#{fileIds},</if>
+            <if test="fireId != null">#{fireId},</if>
+            <if test="measure != null">#{measure},</if>
+            <if test="fillingDate != null">#{fillingDate},</if>
+            <if test="devType != null">#{devType},</if>
+            <if test="devId != null">#{devId},</if>
+            <if test="location != null">#{location},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTSafetyRecord" parameterType="TSafetyRecord">
+        update t_safety_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="washerId != null and washerId != ''">washer_id = #{washerId},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="faultDesc != null">fault_desc = #{faultDesc},</if>
+            <if test="faultSloveSign != null">fault_slove_sign = #{faultSloveSign},</if>
+            <if test="inspector != null">inspector = #{inspector},</if>
+            <if test="inspectdate != null">inspectdate = #{inspectdate},</if>
+            <if test="inspectstatus != null">inspectstatus = #{inspectstatus},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createrCode != null">creater_code = #{createrCode},</if>
+            <if test="createdate != null">createdate = #{createdate},</if>
+            <if test="updaterCode != null">updater_code = #{updaterCode},</if>
+            <if test="updatedate != null">updatedate = #{updatedate},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="fileIds != null">file_ids = #{fileIds},</if>
+            <if test="fireId != null">fire_id = #{fireId},</if>
+            <if test="measure != null">measure = #{measure},</if>
+            <if test="fillingDate != null">filling_date = #{fillingDate},</if>
+            <if test="devType != null">dev_type = #{devType},</if>
+            <if test="devId != null">dev_id = #{devId},</if>
+            <if test="location != null">location = #{location},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTSafetyRecordById" parameterType="Long">
+        update t_safety_record set del_flag=1 where id = #{id}
+    </delete>
+
+    <delete id="deleteTSafetyRecordByIds" parameterType="String">
+        update t_safety_record set del_flag=1 where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 53 - 0
cpms-ui/src/api/safety/extinguisher.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询灭火器列表
+export function listExtinguisher(query) {
+  return request({
+    url: '/safety/extinguisher/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询灭火器详细
+export function getExtinguisher(id) {
+  return request({
+    url: '/safety/extinguisher/' + id,
+    method: 'get'
+  })
+}
+
+// 新增灭火器
+export function addExtinguisher(data) {
+  return request({
+    url: '/safety/extinguisher',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改灭火器
+export function updateExtinguisher(data) {
+  return request({
+    url: '/safety/extinguisher',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除灭火器
+export function delExtinguisher(id) {
+  return request({
+    url: '/safety/extinguisher/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出灭火器
+export function exportExtinguisher(query) {
+  return request({
+    url: 'safety/extinguisher/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
cpms-ui/src/api/safety/files.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询安全设备设施检查附件列表
+export function listFiles(query) {
+  return request({
+    url: '/safety/files/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询安全设备设施检查附件详细
+export function getFiles(id) {
+  return request({
+    url: '/safety/files/' + id,
+    method: 'get'
+  })
+}
+
+// 新增安全设备设施检查附件
+export function addFiles(data) {
+  return request({
+    url: '/safety/files',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改安全设备设施检查附件
+export function updateFiles(data) {
+  return request({
+    url: '/safety/files',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除安全设备设施检查附件
+export function delFiles(id) {
+  return request({
+    url: '/safety/files/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出灭火器
+export function exportExtinguisher(query) {
+  return request({
+    url: 'safety/extinguisher/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
cpms-ui/src/api/safety/firedoor.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询防火门列表
+export function listFiredoor(query) {
+  return request({
+    url: '/safety/firedoor/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询防火门详细
+export function getFiredoor(id) {
+  return request({
+    url: '/safety/firedoor/' + id,
+    method: 'get'
+  })
+}
+
+// 新增防火门
+export function addFiredoor(data) {
+  return request({
+    url: '/safety/firedoor',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改防火门
+export function updateFiredoor(data) {
+  return request({
+    url: '/safety/firedoor',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除防火门
+export function delFiredoor(id) {
+  return request({
+    url: '/safety/firedoor/' + id,
+    method: 'delete'
+  })
+}
+
+// 删除防火门
+export function exportFiredoor(query) {
+  return request({
+    url: 'safety/firedoor/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
cpms-ui/src/api/safety/record.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询洗眼器检查记录列表
+export function listRecord(query) {
+  return request({
+    url: '/safety/record/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询洗眼器检查记录详细
+export function getRecord(id) {
+  return request({
+    url: '/safety/record/' + id,
+    method: 'get'
+  })
+}
+
+// 新增洗眼器检查记录
+export function addRecord(data) {
+  return request({
+    url: '/safety/record',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改洗眼器检查记录
+export function updateRecord(data) {
+  return request({
+    url: '/safety/record',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除洗眼器检查记录
+export function delRecord(id) {
+  return request({
+    url: '/safety/record/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出
+export function exportRecord(query) {
+  return request({
+    url: 'safety/record/export',
+    method: 'get',
+    params: query
+  })
+}

+ 53 - 0
cpms-ui/src/api/safety/washer.js

@@ -0,0 +1,53 @@
+import request from '@/utils/request'
+
+// 查询洗眼器列表
+export function listWasher(query) {
+  return request({
+    url: '/safety/washer/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询洗眼器详细
+export function getWasher(id) {
+  return request({
+    url: '/safety/washer/' + id,
+    method: 'get'
+  })
+}
+
+// 新增洗眼器
+export function addWasher(data) {
+  return request({
+    url: '/safety/washer',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改洗眼器
+export function updateWasher(data) {
+  return request({
+    url: '/safety/washer',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除洗眼器
+export function delWasher(id) {
+  return request({
+    url: '/safety/washer/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出
+export function exportWasher(query) {
+  return request({
+    url: 'safety/washer/export',
+    method: 'get',
+    params: query
+  })
+}

+ 18 - 18
cpms-ui/src/views/file/file/uploadFile.vue

@@ -70,23 +70,23 @@
           </a>
         </template>
       </el-table-column>
-<!--      <el-table-column label="类型" width="80" align="center" prop="type">
-        <template slot-scope="scope">
-          <svg-icon style="font-size: 200%;" v-if="scope.row.type == '1'" iconClass="excel_1"/>
-          <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '2'" iconClass="ppt"/>
-          <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '4'" iconClass="pdf_1"/>
-          <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '3'" iconClass="word"/>
-          <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '5'" iconClass="txt"/>
-          <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '0'" iconClass="folder"/>
-          <el-image
-            v-else-if="scope.row.type == '6'"
-            style="border-radius:5px; padding:5px 5px 0 0;width: 30px; height: 30px"
-            :src="getImgUrl(scope.row.fileUrl)"
-            :preview-src-list="[getImgUrl(scope.row.fileUrl)]">
-          </el-image>
-          <svg-icon style="font-size: 200%;" v-else iconClass="unknown"/>
-        </template>
-      </el-table-column>-->
+      <!--      <el-table-column label="类型" width="80" align="center" prop="type">
+              <template slot-scope="scope">
+                <svg-icon style="font-size: 200%;" v-if="scope.row.type == '1'" iconClass="excel_1"/>
+                <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '2'" iconClass="ppt"/>
+                <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '4'" iconClass="pdf_1"/>
+                <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '3'" iconClass="word"/>
+                <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '5'" iconClass="txt"/>
+                <svg-icon style="font-size: 200%;" v-else-if="scope.row.type == '0'" iconClass="folder"/>
+                <el-image
+                  v-else-if="scope.row.type == '6'"
+                  style="border-radius:5px; padding:5px 5px 0 0;width: 30px; height: 30px"
+                  :src="getImgUrl(scope.row.fileUrl)"
+                  :preview-src-list="[getImgUrl(scope.row.fileUrl)]">
+                </el-image>
+                <svg-icon style="font-size: 200%;" v-else iconClass="unknown"/>
+              </template>
+            </el-table-column>-->
 
       <el-table-column label="创建人" align="center" prop="uploader"/>
       <el-table-column label="创建时间" align="center" prop="uploadDate" width="180">
@@ -267,7 +267,7 @@ export default {
     rowClick(row, column, event) {
       this.$refs.fileTable.toggleRowExpansion(row);
     },
-      getImgUrl(url) {
+    getImgUrl(url) {
       return process.env.VUE_APP_BASE_API + url;
     },
     /** 查询附件列表 */

+ 2 - 2
cpms-ui/src/views/plant/content/index.vue

@@ -2,7 +2,7 @@
   <div>
     <!--    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
           < <el-form-item label="类型" prop="workType" label-width="50px">
-          <el-select v-model="queryParams.workType" :placeholder="$t('请选择') + $t('类型')" clearable size="small" style="width: 100%;">
+          <el-select v-model="queryParams.workType" :placeholder="请选择 + 类型" clearable size="small" style="width: 100%;">
             <el-option
               v-for="dict in workTypeOptions"
               :key="dict.dictValue"
@@ -12,7 +12,7 @@
           </el-select>
         </el-form-item>
           <el-form-item label="状态" prop="status" label-width="50px">
-            <el-select v-model="queryParams.status" :placeholder="$t('请选择') + $t('状态')" clearable size="small"  style="width: 100%;">
+            <el-select v-model="queryParams.status" :placeholder="请选择 + 状态" clearable size="small"  style="width: 100%;">
               <el-option
                 v-for="dict in agendaStatusOptions"
                 :key="dict.dictValue"

+ 669 - 0
cpms-ui/src/views/safety/extinguisher/index.vue

@@ -0,0 +1,669 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="装置名称" prop="plantName">
+        <el-input
+          v-model="queryParams.plantName"
+          placeholder="请输入装置名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位号" prop="devNo">
+        <el-input
+          v-model="queryParams.devNo"
+          placeholder="请输入位号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入位置"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['safety:extinguisher:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['safety:extinguisher:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['safety:extinguisher:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safety:extinguisher:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="extinguisherList" @selection-change="handleSelectionChange"
+              :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="装置名称" align="center" prop="plantName"/>
+      <el-table-column label="位号" align="center" prop="devNo"/>
+      <el-table-column label="位置" align="center" prop="location"/>
+      <el-table-column label="数量" align="center" prop="devNum"/>
+      <el-table-column label="灭火器类型" align="center" prop="extinguisherType"/>
+      <el-table-column label="检查人" align="center" prop="inspector"/>
+      <el-table-column label="充装日期" align="center" prop="fillingDate"/>
+      <el-table-column label="检查日期" align="center" prop="inspectdate" width="180"/>
+      <el-table-column label="按检查表确认" align="center" prop="status"  :formatter="formatStatus"/>
+      <el-table-column label="措施" align="center" prop="measure"/>
+      <el-table-column label="巡检照片" align="center">
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isEdit&&!scope.row.fileIds">N/A</span>
+          <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-document-checked"
+            @click="openRecord(scope.row)"
+            v-hasPermi="['safety:washer:edit']"
+          >巡检记录
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['safety:extinguisher:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['safety:extinguisher:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改灭火器对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="装置名称" prop="plantName">
+          <el-input v-model="form.plantName" placeholder="请输入装置名称"/>
+        </el-form-item>
+        <el-form-item label="位号" prop="devNo">
+          <el-input v-model="form.devNo" placeholder="请输入位号"/>
+        </el-form-item>
+        <el-form-item label="位置" prop="location">
+          <el-input v-model="form.location" placeholder="请输入位置"/>
+        </el-form-item>
+        <el-form-item label="数量" prop="devNum">
+          <el-input v-model="form.devNum" placeholder="请输入数量"/>
+        </el-form-item>
+        <el-form-item label="灭火器类型" prop="extinguisherType">
+          <el-input v-model="form.extinguisherType" placeholder="请输入灭火器类型"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :title="record.title" :visible.sync="record.open" width="80%" append-to-body>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAddRecord"
+          >新增
+          </el-button>
+        </el-col>
+      </el-row>
+      <el-table v-loading="record.loading" :data="record.dataList" :max-height="record.clientHeight"
+                border>
+        <el-table-column label="位置" align="center" prop="washerNo">{{ record.location }}</el-table-column>
+        <el-table-column label="按检查表确认" align="center" prop="status">
+          <template slot-scope="scope">
+
+            <el-radio-group v-if="scope.row.isEdit" v-model="scope.row.status">
+              <el-radio label="1">ok</el-radio>
+              <el-radio label="0">not ok</el-radio>
+            </el-radio-group>
+            <div v-else>{{ formatStatus(scope.row) }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="充装日期" align="center" prop="fillingDate">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.fillingDate"></el-input>
+            <span v-else>{{ scope.row.fillingDate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="措施" align="center" prop="measure">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.measure"></el-input>
+            <span v-else>{{ scope.row.measure }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查人" align="center" prop="inspector">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.inspector"></el-input>
+            <span v-else>{{ scope.row.inspector }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查日期" align="center" prop="inspectdate">
+          <template slot-scope="scope">
+            <el-date-picker style="width: auto"
+                            v-if="scope.row.isEdit"
+                            v-model="scope.row.inspectdate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            :placeholder="日期">
+            </el-date-picker>
+            <span v-else>{{ parseTime(scope.row.inspectdate, '{y}-{m}-{d}') }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="巡检照片" align="center">
+          <template slot-scope="scope">
+            <el-upload
+              v-if="scope.row.isEdit"
+              ref="doc"
+              :headers="doc.headers"
+              :action="doc.url"
+              :disabled="doc.isUploading"
+              :on-progress="handleFileDocProgress"
+              :on-success="handleFileDocSuccess"
+              :auto-upload="true"
+              accept=".jpg,.png"
+              :file-list="fileList"
+              :multiple="true"
+              list-type="picture"
+            >
+              <el-button type="primary"><i class="el-icon-upload"></i> 点击上传</el-button>
+            </el-upload>
+            <span v-else-if="!scope.row.isEdit&&!scope.row.fileIds">N/A</span>
+            <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template slot-scope="scope">
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-check"
+                       @click="save(scope.row)"
+            >保存
+            </el-button>
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-close"
+                       @click="cancelRecord(scope.row,scope.$index)"
+            >取消
+            </el-button>
+            <el-button v-if="!scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-edit"
+                       @click="handleUpdateRecord(scope.row)"
+            >修改
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="record.total>0"
+        :total="record.total"
+        :page.sync="record.queryParams.pageNum"
+        :limit.sync="record.queryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" title="巡检照片" :visible.sync="file.open">
+      <div>
+        <el-image
+          style="width: 30%; height: 30%;margin:10px;border-radius: 5%;vertical-align: middle;'"
+          v-for="url in srcList"
+          :src="url"
+          :preview-src-list="srcList">
+        </el-image>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  listExtinguisher,
+  getExtinguisher,
+  delExtinguisher,
+  addExtinguisher,
+  updateExtinguisher
+} from "@/api/safety/extinguisher";
+import {MessageBox} from "element-ui";
+import {getToken} from "@/utils/auth";
+import {addRecord, listRecord, updateRecord} from "@/api/safety/record";
+import {exportExtinguisher, getFiles} from "@/api/safety/files";
+import {exportFiredoor} from "@/api/safety/firedoor";
+
+export default {
+  name: "Extinguisher",
+  data() {
+    return {
+      fileIds: [],
+      fileList: [],
+      srcList: [],
+      file: {
+        open: false,
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/safety/files/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      record: {
+        open: false,
+        title: "巡检记录",
+        dataList: [],
+        loading: false,
+        location: null,
+        devId: null,
+        total: 0,
+        clientHeight: 400,
+        queryParams: {
+          devId: null,
+          devType: '3',
+          pageNum: 1,
+          pageSize: 20,
+        },
+      },
+      // 页面高度
+      clientHeight: 300,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 灭火器表格数据
+      extinguisherList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        plantName: null,
+        devNo: null,
+        location: null,
+        devNum: null,
+        extinguisherType: null,
+        inspector: null,
+        fillingDate: null,
+        inspectdate: null,
+        status: null,
+        measure: null,
+        inspectstatus: null,
+        fileIds: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        plantName: [
+          {required: true, message: "装置名称不能为空", trigger: "blur"}
+        ],
+        devNo: [
+          {required: true, message: "位号不能为空", trigger: "blur"}
+        ],
+        location: [
+          {required: true, message: "位置不能为空", trigger: "blur"}
+        ],
+        devNum: [
+          {required: true, message: "数量不能为空", trigger: "blur"}
+        ],
+        extinguisherType: [
+          {required: true, message: "灭火器类型不能为空", trigger: "change"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = (document.body.clientHeight - 80) * 0.8
+    });
+  },
+  methods: {
+    formatStatus(row) {
+      if (row.status == "1") {
+        return "ok"
+      } else if (row.status == "0") {
+        return "not ok"
+      }
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.doc.file = file;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.fileIds.push(response.data)
+    },
+    handleUpdateRecord(row) {
+      // 备份原始数据
+      row['oldRow'] = JSON.parse(JSON.stringify(row));
+      this.$nextTick(() => {
+        row.isEdit = true;
+      })
+    },
+    cancelRecord(row, index) {
+      // 如果是新增的数据
+      if (row.isAdd) {
+        this.record.dataList.splice(index, 1)
+      } else {
+        // 不是新增的数据  还原数据
+        for (const i in row.oldRow) {
+          row[i] = row.oldRow[i]
+        }
+        row.isEdit = false
+      }
+    },
+    save(row) {
+      let fileIds = '';
+      if (this.fileIds !== []) {
+        fileIds = this.fileIds.join(',')
+      }
+      if (row.isAdd) {
+        let data = {
+          location:this.record.location,
+          devId: this.record.devId,
+          measure: row.measure,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          fillingDate: row.fillingDate,
+          status: row.status,
+          devType: '3',
+          fileIds: fileIds,
+        }
+        addRecord(data).then(res => {
+          this.$message.success("保存成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds = []
+        })
+      } else {
+        let data = {
+          id: row.id,
+          location:this.record.location,
+          devId: this.record.devId,
+          measure: row.measure,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          fillingDate: row.fillingDate,
+          status: row.status,
+          devType: '3',
+          fileIds: fileIds,
+        }
+        updateRecord(data).then(res => {
+          this.$message.success("修改成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds = []
+        })
+      }
+    },
+    handleSee(ids) {
+      this.srcList = []
+      this.file.open = true;
+      for (const id of ids.split(',')) {
+        getFiles(id).then(res => {
+          this.srcList.push(process.env.VUE_APP_BASE_API + res.data.fileUrl)
+        })
+      }
+    },
+    handleAddRecord() {
+      this.record.dataList.push({
+        inspectdate: null,
+        inspector: null,
+        fillingDate: null,
+        measure: null,
+        status: null,
+        isEdit: true,
+        isAdd: true
+      })
+    },
+    openRecord(row) {
+      this.record.dataList = [];
+      this.record.open = true;
+      this.record.loading = true;
+      this.record.location = row.location;
+      this.record.devId = row.id;
+      console.log(this.record)
+      this.getRecordList(row.id)
+    },
+    getRecordList(id) {
+      this.record.queryParams.devId = id;
+      listRecord(this.record.queryParams).then(res => {
+        this.record.total = res.total;
+        this.record.loading = false;
+        res.rows.forEach(item => {
+          item["isEdit"] = false;
+        })
+        this.record.dataList = res.rows;
+      })
+    },
+    /** 查询灭火器列表 */
+    getList() {
+      this.loading = true;
+      listExtinguisher(this.queryParams).then(response => {
+        this.extinguisherList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plantName: null,
+        devNo: null,
+        location: null,
+        devNum: null,
+        extinguisherType: null,
+        inspector: null,
+        fillingDate: null,
+        inspectdate: null,
+        status: null,
+        measure: null,
+        inspectstatus: null,
+        fileIds: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加灭火器";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getExtinguisher(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改灭火器";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateExtinguisher(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addExtinguisher(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      MessageBox.confirm('是否确认删除灭火器编号为"' + ids + '"的数据项?').then(function () {
+        return delExtinguisher(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm("是否确认导出所有数据项?","警告", {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: "warning"
+      }).then(function() {
+        return exportExtinguisher(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    }
+
+  }
+};
+</script>

+ 649 - 0
cpms-ui/src/views/safety/firedoor/index.vue

@@ -0,0 +1,649 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="装置名称" prop="plantName">
+        <el-input
+          v-model="queryParams.plantName"
+          placeholder="请输入装置名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位号" prop="devNo">
+        <el-input
+          v-model="queryParams.devNo"
+          placeholder="请输入位号"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入位置"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['safety:firedoor:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['safety:firedoor:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['safety:firedoor:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safety:firedoor:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="firedoorList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="装置名称" align="center" prop="plantName"/>
+      <el-table-column label="位号" align="center" prop="devNo"/>
+      <el-table-column label="位置" align="center" prop="location"/>
+      <el-table-column label="检查人" align="center" prop="inspector"/>
+      <el-table-column label="检查日期" align="center" prop="inspectdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.inspectdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="状态" align="center" prop="status" :formatter="formatStatus"/>
+      <el-table-column label="措施" align="center" prop="measure"/>
+      <el-table-column label="巡检照片" align="center">
+        <template slot-scope="scope">
+          <span v-if="!scope.row.isEdit&&!scope.row.fileIds">N/A</span>
+          <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks"/>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-document-checked"
+            @click="openRecord(scope.row)"
+            v-hasPermi="['safety:washer:edit']"
+          >巡检记录
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['safety:firedoor:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['safety:firedoor:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改防火门对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="装置名称" prop="plantName">
+          <el-input v-model="form.plantName" placeholder="请输入装置名称"/>
+        </el-form-item>
+        <el-form-item label="位号" prop="devNo">
+          <el-input v-model="form.devNo" placeholder="请输入位号"/>
+        </el-form-item>
+        <el-form-item label="位置" prop="location">
+          <el-input v-model="form.location" placeholder="请输入位置"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :title="record.title" :visible.sync="record.open" width="80%" append-to-body>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAddRecord"
+          >新增
+          </el-button>
+        </el-col>
+      </el-row>
+      <el-table v-loading="record.loading" :data="record.dataList" :max-height="record.clientHeight"
+                border>
+        <el-table-column label="位号" align="center" prop="washerNo">{{ record.devNo }}</el-table-column>
+        <el-table-column label="位置" align="center" prop="washerNo">{{ record.location }}</el-table-column>
+        <el-table-column label="状态" align="center" prop="status">
+          <template slot-scope="scope">
+
+            <el-radio-group v-if="scope.row.isEdit" v-model="scope.row.status">
+              <el-radio label="1">ok</el-radio>
+              <el-radio label="0">not ok</el-radio>
+            </el-radio-group>
+            <div v-else>{{ formatStatus(scope.row) }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="措施" align="center" prop="measure">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.measure"></el-input>
+            <span v-else>{{ scope.row.measure }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查人" align="center" prop="inspector">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.inspector"></el-input>
+            <span v-else>{{ scope.row.inspector }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查日期" align="center" prop="inspectdate">
+          <template slot-scope="scope">
+            <el-date-picker style="width: auto"
+                            v-if="scope.row.isEdit"
+                            v-model="scope.row.inspectdate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            placeholder="日期">
+            </el-date-picker>
+            <span v-else>{{ parseTime(scope.row.inspectdate, '{y}-{m}-{d}') }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="巡检照片" align="center">
+          <template slot-scope="scope">
+            <el-upload
+              v-if="scope.row.isEdit"
+              ref="doc"
+              :headers="doc.headers"
+              :action="doc.url"
+              :disabled="doc.isUploading"
+              :on-progress="handleFileDocProgress"
+              :on-success="handleFileDocSuccess"
+              :auto-upload="true"
+              accept=".jpg,.png"
+              :file-list="fileList"
+              :multiple="true"
+              list-type="picture"
+            >
+              <el-button type="primary"><i class="el-icon-upload"></i> 点击上传</el-button>
+            </el-upload>
+            <span v-else-if="!scope.row.isEdit&&!scope.row.fileIds">N/A</span>
+            <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template slot-scope="scope">
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-check"
+                       @click="save(scope.row)"
+            >保存
+            </el-button>
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-close"
+                       @click="cancelRecord(scope.row,scope.$index)"
+            >取消
+            </el-button>
+            <el-button v-if="!scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-edit"
+                       @click="handleUpdateRecord(scope.row)"
+            >修改
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="record.total>0"
+        :total="record.total"
+        :page.sync="record.queryParams.pageNum"
+        :limit.sync="record.queryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" title="巡检照片" :visible.sync="file.open">
+      <div>
+        <el-image
+          style="width: 30%; height: 30%;margin:10px;border-radius: 5%;vertical-align: middle;'"
+          v-for="url in srcList"
+          :src="url"
+          :preview-src-list="srcList">
+        </el-image>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addFiredoor,
+  delFiredoor,
+  exportFiredoor,
+  getFiredoor,
+  listFiredoor,
+  updateFiredoor
+} from "@/api/safety/firedoor";
+import {MessageBox} from "element-ui";
+import {addRecord, listRecord, updateRecord} from "@/api/safety/record";
+import {getFiles} from "@/api/safety/files";
+import {getToken} from "@/utils/auth";
+
+export default {
+  name: "Firedoor",
+  data() {
+    return {
+      fileIds: [],
+      fileList: [],
+      srcList: [],
+      file: {
+        open: false,
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/safety/files/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      record: {
+        open: false,
+        title: "巡检记录",
+        dataList: [],
+        loading: false,
+        devNo: null,
+        location: null,
+        devId: null,
+        total: 0,
+        clientHeight: 400,
+        queryParams: {
+          devId: null,
+          devType: 2,
+          pageNum: 1,
+          pageSize: 20,
+        },
+      },
+      // 页面高度
+      clientHeight: 300,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 防火门表格数据
+      firedoorList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        plantName: null,
+        devNo: null,
+        location: null,
+        inspector: null,
+        inspectdate: null,
+        status: null,
+        measure: null,
+        inspectstatus: null,
+        fileIds: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        plantName: [
+          {required: true, message: "装置名称不能为空", trigger: "blur"}
+        ],
+        devNo: [
+          {required: true, message: "位号不能为空", trigger: "blur"}
+        ],
+        location: [
+          {required: true, message: "位置不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = (document.body.clientHeight - 80) * 0.8
+    });
+  },
+  methods: {
+    formatStatus(row) {
+      if (row.status == "1") {
+        return "ok"
+      } else if (row.status == "0") {
+        return "not ok"
+      }
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.doc.file = file;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.fileIds.push(response.data)
+    },
+    handleUpdateRecord(row) {
+      // 备份原始数据
+      row['oldRow'] = JSON.parse(JSON.stringify(row));
+      this.$nextTick(() => {
+        row.isEdit = true;
+      })
+    },
+    cancelRecord(row, index) {
+      // 如果是新增的数据
+      if (row.isAdd) {
+        this.record.dataList.splice(index, 1)
+      } else {
+        // 不是新增的数据  还原数据
+        for (const i in row.oldRow) {
+          row[i] = row.oldRow[i]
+        }
+        row.isEdit = false
+      }
+    },
+    save(row) {
+      let fileIds = '';
+      if (this.fileIds !== []) {
+        fileIds = this.fileIds.join(',')
+      }
+      if (row.isAdd) {
+        let data = {
+          devId: this.record.devId,
+          devType: 2,
+          location:this.record.location,
+          measure: row.measure,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          faultSloveSign: row.faultSloveSign,
+          faultDesc: row.faultDesc,
+          status: row.status,
+          fileIds: fileIds,
+        }
+        addRecord(data).then(res => {
+          this.$message.success("保存成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds=[]
+        })
+      } else {
+        let data = {
+          id: row.id,
+          devId: this.record.devId,
+          devType: 2,
+          location:this.record.location,
+          measure: row.measure,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          faultSloveSign: row.faultSloveSign,
+          faultDesc: row.faultDesc,
+          status: row.status,
+          fileIds: fileIds,
+        }
+        updateRecord(data).then(res => {
+          this.$message.success("修改成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds=[]
+        })
+      }
+    },
+    handleSee(ids) {
+      this.srcList = []
+      this.file.open = true;
+      for (const id of ids.split(',')) {
+        getFiles(id).then(res => {
+          this.srcList.push(process.env.VUE_APP_BASE_API + res.data.fileUrl)
+        })
+      }
+    },
+    handleAddRecord() {
+      this.record.dataList.push({
+        inspectdate: null,
+        inspector: null,
+        measure: null,
+        status: null,
+        isEdit: true,
+        isAdd: true
+      })
+    },
+    openRecord(row) {
+      this.record.dataList = [];
+      this.record.open = true;
+      this.record.loading = true;
+      this.record.devNo = row.devNo;
+      this.record.location = row.location;
+      this.record.devId = row.id;
+      console.log(this.record)
+      this.getRecordList(row.id)
+    },
+    getRecordList(id) {
+      this.record.queryParams.devId = id;
+      listRecord(this.record.queryParams).then(res => {
+        this.record.total = res.total;
+        this.record.loading = false;
+        res.rows.forEach(item => {
+          item["isEdit"] = false;
+        })
+        this.record.dataList = res.rows;
+      })
+    },
+    /** 查询防火门列表 */
+    getList() {
+      this.loading = true;
+      listFiredoor(this.queryParams).then(response => {
+        this.firedoorList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        plantName: null,
+        devNo: null,
+        location: null,
+        inspector: null,
+        inspectdate: null,
+        status: null,
+        measure: null,
+        inspectstatus: null,
+        fileIds: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加防火门";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getFiredoor(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改防火门";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateFiredoor(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addFiredoor(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      MessageBox.confirm('是否确认删除防火门编号为"' + ids + '"的数据项?').then(function () {
+        return delFiredoor(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm("是否确认导出所有数据项?","警告", {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: "warning"
+      }).then(function() {
+        return exportFiredoor(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    }
+  }
+};
+</script>

+ 203 - 0
cpms-ui/src/views/safety/record/index.vue

@@ -0,0 +1,203 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="检查日期" prop="inspectdate">
+        <el-date-picker clearable
+                        v-model="queryParams.inspectdate"
+                        type="date"
+                        value-format="yyyy-MM-dd"
+                        placeholder="请选择检查日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safety:record:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange" :height="clientHeight"
+              border>
+      <el-table-column label="位置" align="center" prop="location"/>
+      <el-table-column label="类型" align="center" prop="devType" :formatter="devTypeFormat"/>
+      <el-table-column label="ok/not ok" align="center" prop="status" :formatter="formatStatus"/>
+      <el-table-column label="故障描述" align="center" prop="faultDesc"/>
+      <el-table-column label="故障解决签名" align="center" prop="faultSloveSign"/>
+      <el-table-column label="检查人" align="center" prop="inspector"/>
+      <el-table-column label="检查日期" align="center" prop="inspectdate" width="180"/>
+      <el-table-column label="检查状况" align="center" prop="inspectstatus"/>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+  </div>
+</template>
+
+<script>
+import {exportRecord, listRecord} from "@/api/safety/record";
+import {exportFiredoor} from "@/api/safety/firedoor";
+
+export default {
+  name: "Record",
+  data() {
+    return {
+      devTypeOption: [],
+      // 页面高度
+      clientHeight: 300,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 检查记录表格数据
+      recordList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        washerId: null,
+        status: null,
+        faultDesc: null,
+        faultSloveSign: null,
+        inspector: null,
+        inspectdate: null,
+        inspectstatus: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null,
+        fileIds: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        washerId: [
+          {required: true, message: "洗眼器id不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = (document.body.clientHeight - 80) * 0.8
+    });
+    this.getDicts("safety_dev_type").then(res => {
+      this.devTypeOption = res.data;
+    })
+  },
+  methods: {
+    devTypeFormat(row, column) {
+      return this.selectDictLabel(this.devTypeOption, row.devType);
+    },
+    formatStatus(row) {
+      if (row.status == "1") {
+        return "ok"
+      } else if (row.status == "0") {
+        return "not ok"
+      }
+    },
+    /** 查询检查记录列表 */
+    getList() {
+      this.loading = true;
+      listRecord(this.queryParams).then(response => {
+        this.recordList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        washerId: null,
+        status: "0",
+        faultDesc: null,
+        faultSloveSign: null,
+        inspector: null,
+        inspectdate: null,
+        inspectstatus: "0",
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null,
+        fileIds: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm("是否确认导出所有数据项?","警告", {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: "warning"
+      }).then(function() {
+        return exportRecord(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    }
+
+  }
+};
+</script>

+ 661 - 0
cpms-ui/src/views/safety/washer/index.vue

@@ -0,0 +1,661 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
+             label-width="68px">
+      <el-form-item label="编号" prop="washerNo">
+        <el-input
+          v-model="queryParams.washerNo"
+          placeholder="请输入编号"
+          clearable
+          @input="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="位置" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入位置"
+          clearable
+          @input="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="ok/not ok" prop="status" label-width="100px">
+        <el-select v-model="queryParams.status" placeholder="请选择ok/not ok" clearable @change="handleQuery">
+          <el-option label="ok" value="1"/>
+          <el-option label="not ok" value="0"/>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['safety:washer:add']"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['safety:washer:edit']"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['safety:washer:remove']"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['safety:washer:export']"
+        >导出
+        </el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="washerList" @selection-change="handleSelectionChange"
+              :height="clientHeight"
+              border>
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column label="编号" align="center" prop="washerNo" min-width="80"/>
+      <el-table-column label="位置" align="center" prop="location" min-width="80"/>
+      <el-table-column label="ok/not ok" align="center" prop="status" :formatter="formatStatus" min-width="80"/>
+      <el-table-column label="故障描述" align="center" prop="faultDesc" min-width="80"/>
+      <el-table-column label="故障解决签名" align="center" prop="faultSloveSign" width="130"/>
+      <el-table-column label="检查人" align="center" prop="inspector" min-width="80"/>
+      <el-table-column label="检查日期" align="center" prop="inspectdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.inspectdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="检查状况" align="center" prop="inspectstatus" min-width="80"/>
+      <el-table-column label="巡检照片" align="center" prop="fileIds" min-width="80">
+        <template slot-scope="scope">
+          <span v-if="!scope.row.fileIds">N/A</span>
+          <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks" min-width="80"/>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-document-checked"
+            @click="openRecord(scope.row)"
+            v-hasPermi="['safety:washer:edit']"
+          >巡检记录
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['safety:washer:edit']"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['safety:washer:remove']"
+          >删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改洗眼器对话框 -->
+    <el-dialog :close-on-click-modal="false" :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="编号" prop="washerNo">
+          <el-input v-model="form.washerNo" placeholder="请输入编号"/>
+        </el-form-item>
+        <el-form-item label="位置" prop="location">
+          <el-input v-model="form.location" placeholder="请输入位置"/>
+        </el-form-item>
+        <el-form-item label="备注" prop="remarks">
+          <el-input v-model="form.remarks" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" :title="record.title" :visible.sync="record.open" width="80%" append-to-body>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAddRecord"
+          >新增
+          </el-button>
+        </el-col>
+      </el-row>
+      <el-table v-loading="record.loading" :data="record.dataList" :max-height="record.clientHeight"
+                border>
+        <el-table-column label="编号" align="center" prop="washerNo">{{ record.washerNo }}</el-table-column>
+        <el-table-column label="ok/not ok" align="center" prop="status">
+          <template slot-scope="scope">
+            <el-radio-group v-if="scope.row.isEdit" v-model="scope.row.status" @change="changeRadio(scope.row)">
+              <el-radio label="1">ok</el-radio>
+              <el-radio label="0">not ok</el-radio>
+            </el-radio-group>
+            <div v-else>{{ formatStatus(scope.row) }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="故障描述" align="center" prop="faultDesc">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.faultDesc"
+                      :disabled="scope.row.status==1"></el-input>
+            <span v-else>{{ scope.row.faultDesc }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="故障解决签名" align="center" prop="faultSloveSign">
+          <template slot-scope="scope">
+            <div :key="Math.random()">
+              <el-input v-if="scope.row.isEdit" v-model="scope.row.faultSloveSign"
+                        :disabled="scope.row.status==1"></el-input>
+              <span v-else>{{ scope.row.faultSloveSign }}</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查人" align="center" prop="inspector">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.inspector"></el-input>
+            <span v-else>{{ scope.row.inspector }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查日期" align="center" prop="inspectdate">
+          <template slot-scope="scope">
+            <el-date-picker style="width: auto"
+                            v-if="scope.row.isEdit"
+                            v-model="scope.row.inspectdate"
+                            type="date"
+                            value-format="yyyy-MM-dd"
+                            :placeholder="日期">
+            </el-date-picker>
+            <span v-else>{{ parseTime(scope.row.inspectdate, '{y}-{m}-{d}') }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="检查班组" align="center" prop="inspectstatus">
+          <template slot-scope="scope">
+            <el-input v-if="scope.row.isEdit" v-model="scope.row.inspectstatus"></el-input>
+            <span v-else>{{ scope.row.inspectstatus }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="巡检照片" align="center">
+          <template slot-scope="scope">
+            <el-upload
+              v-if="scope.row.isEdit"
+              ref="doc"
+              :headers="doc.headers"
+              :action="doc.url"
+              :disabled="doc.isUploading"
+              :on-progress="handleFileDocProgress"
+              :on-success="handleFileDocSuccess"
+              :auto-upload="true"
+              accept=".jpg,.png"
+              :file-list="fileList"
+              :multiple="true"
+              list-type="picture"
+            >
+              <el-button type="primary"><i class="el-icon-upload"></i> 点击上传</el-button>
+            </el-upload>
+            <span v-else-if="!scope.row.isEdit&&!scope.row.fileIds">N/A</span>
+            <el-button v-else type="text" @click="handleSee(scope.row.fileIds)">预览</el-button>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template slot-scope="scope">
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-check"
+                       @click="save(scope.row)"
+            >保存
+            </el-button>
+            <el-button v-if="scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-close"
+                       @click="cancelRecord(scope.row,scope.$index)"
+            >取消
+            </el-button>
+            <el-button v-if="!scope.row.isEdit"
+                       size="mini"
+                       type="text"
+                       icon="el-icon-edit"
+                       @click="handleUpdateRecord(scope.row)"
+            >修改
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+        v-show="record.total>0"
+        :total="record.total"
+        :page.sync="record.queryParams.pageNum"
+        :limit.sync="record.queryParams.pageSize"
+        @pagination="getList"
+      />
+    </el-dialog>
+    <el-dialog :close-on-click-modal="false" title="巡检照片" :visible.sync="file.open">
+      <div>
+        <el-image
+          style="width: 30%; height: 30%;margin:10px;border-radius: 5%;vertical-align: middle;'"
+          v-for="url in srcList"
+          :src="url"
+          :preview-src-list="srcList">
+        </el-image>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {listWasher, getWasher, delWasher, addWasher, updateWasher, exportWasher} from "@/api/safety/washer";
+import {addRecord, getRecord, listRecord, updateRecord} from "@/api/safety/record";
+import {getToken} from "@/utils/auth";
+import {MessageBox} from "element-ui";
+import {getFiles} from "@/api/safety/files";
+
+export default {
+  name: "Washer",
+  data() {
+    return {
+      fileIds: [],
+      fileList: [],
+      srcList: [],
+      file: {
+        open: false,
+
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: {Authorization: "Bearer " + getToken()},
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/safety/files/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      record: {
+        open: false,
+        title: "巡检记录",
+        dataList: [],
+        loading: false,
+        washerNo: null,
+        devId: null,
+        total: 0,
+        clientHeight: 400,
+        queryParams: {
+          devId: null,
+          devType: 1,
+          pageNum: 1,
+          pageSize: 20,
+        },
+      },
+      // 页面高度
+      clientHeight: 300,
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 洗眼器表格数据
+      washerList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        washerNo: null,
+        location: null,
+        status: null,
+        faultDesc: null,
+        faultSloveSign: null,
+        inspector: null,
+        inspectdate: null,
+        inspectstatus: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        fileIds: null,
+        remarks: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        washerNo: [
+          {required: true, message: "编号不能为空", trigger: "blur"}
+        ],
+        location: [
+          {required: true, message: "位置不能为空", trigger: "blur"}
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+    //设置表格高度对应屏幕高度
+    this.$nextTick(() => {
+      this.clientHeight = (document.body.clientHeight - 80) * 0.8;
+      this.record.clientHeight = (document.body.clientHeight - 150) * 0.8;
+    });
+  },
+  methods: {
+    handleSee(ids) {
+      this.srcList = []
+      this.file.open = true;
+      for (const id of ids.split(',')) {
+        getFiles(id).then(res => {
+          this.srcList.push(process.env.VUE_APP_BASE_API + res.data.fileUrl)
+        })
+      }
+    },
+    changeRadio(row) {
+      console.log(row)
+      if (row.status == 1) {
+        row.faultDesc = '';
+        row.faultSloveSign = '';
+      }
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+      this.doc.file = file;
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.fileIds.push(response.data)
+    },
+    cancelRecord(row, index) {
+      // 如果是新增的数据
+      if (row.isAdd) {
+        this.record.dataList.splice(index, 1)
+      } else {
+        // 不是新增的数据  还原数据
+        for (const i in row.oldRow) {
+          row[i] = row.oldRow[i]
+        }
+        row.isEdit = false
+      }
+    },
+    save(row) {
+      let fileIds = '';
+      console.log(this.fileIds)
+      if (this.fileIds != []) {
+        fileIds = this.fileIds.join(',')
+      }
+      if (row.isAdd) {
+        let data = {
+          devId: this.record.devId,
+          location:this.record.location,
+          devType: 1,
+          inspectstatus: row.inspectstatus,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          faultSloveSign: row.faultSloveSign,
+          faultDesc: row.faultDesc,
+          status: row.status,
+          fileIds: fileIds,
+        }
+        addRecord(data).then(res => {
+          this.$message.success("保存成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds=[]
+        })
+      } else {
+        let data = {
+          id: row.id,
+          devId: this.record.devId,
+          location:this.record.location,
+          devType: 1,
+          inspectstatus: row.inspectstatus,
+          inspectdate: row.inspectdate,
+          inspector: row.inspector,
+          faultSloveSign: row.faultSloveSign,
+          faultDesc: row.faultDesc,
+          status: row.status,
+          fileIds: fileIds,
+        }
+        updateRecord(data).then(res => {
+          this.$message.success("修改成功")
+          row.isEdit = false;
+          row.isAdd = false;
+          this.getList();
+          this.getRecordList(this.record.devId);
+          this.fileIds=[]
+        })
+      }
+    },
+    handleAddRecord() {
+      this.record.dataList.push({
+        inspectstatus: null,
+        inspectdate: null,
+        inspector: null,
+        faultSloveSign: null,
+        faultDesc: null,
+        status: null,
+        isEdit: true,
+        isAdd: true
+      })
+    },
+    handleUpdateRecord(row) {
+      // 备份原始数据
+      row['oldRow'] = JSON.parse(JSON.stringify(row));
+      this.$nextTick(() => {
+        row.isEdit = true;
+      })
+    },
+    openRecord(row) {
+      this.record.dataList = [];
+      this.record.open = true;
+      this.record.loading = true;
+      this.record.washerNo = row.washerNo;
+      this.record.devId = row.id;
+      this.record.location = row.location;
+      this.getRecordList(row.id)
+    },
+    getRecordList(id) {
+      this.record.queryParams.devId = id;
+      listRecord(this.record.queryParams).then(res => {
+        this.record.total = res.total;
+        this.record.loading = false;
+        res.rows.forEach(item => {
+          item["isEdit"] = false;
+        })
+        this.record.dataList = res.rows;
+      })
+    },
+    /** 查询洗眼器列表 */
+    getList() {
+      this.loading = true;
+      listWasher(this.queryParams).then(response => {
+        this.washerList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    formatStatus(row) {
+      if (row.status == "1") {
+        return "ok"
+      } else if (row.status == "0") {
+        return "not ok"
+      }
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        washerNo: null,
+        location: null,
+        status: null,
+        faultDesc: null,
+        faultSloveSign: null,
+        inspector: null,
+        inspectdate: null,
+        inspectstatus: null,
+        delFlag: null,
+        createrCode: null,
+        createdate: null,
+        updaterCode: null,
+        updatedate: null,
+        deptId: null,
+        remarks: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加洗眼器";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getWasher(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改洗眼器";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateWasher(this.form).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addWasher(this.form).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      MessageBox.confirm('是否确认删除该洗眼器').then(function () {
+        return delWasher(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm("是否确认导出所有数据项?","警告", {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: "warning"
+      }).then(function() {
+        return exportWasher(queryParams);
+      }).then(response => {
+        this.download(response.msg);
+      })
+    }
+
+  }
+};
+</script>