소스 검색

巡检后端代码

jiangbiao 1 년 전
부모
커밋
6ebf81f0e9
100개의 변경된 파일16520개의 추가작업 그리고 4개의 파일을 삭제
  1. 16 0
      master/pom.xml
  2. 28 0
      master/src/main/java/com/ruoyi/common/utils/DateUtils.java
  3. 31 0
      master/src/main/java/com/ruoyi/common/utils/StringUtils.java
  4. 39 4
      master/src/main/java/com/ruoyi/common/utils/file/ExcelUtils.java
  5. 78 0
      master/src/main/java/com/ruoyi/common/utils/poi/QRCodeEntity.java
  6. 197 0
      master/src/main/java/com/ruoyi/common/utils/poi/QRCodeUtil.java
  7. 10 0
      master/src/main/java/com/ruoyi/framework/config/RuoYiConfig.java
  8. 373 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseBicycleController.java
  9. 348 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseDownspoutController.java
  10. 354 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseEarplugController.java
  11. 373 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseManholeCoverController.java
  12. 423 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseMovementController.java
  13. 360 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseSafetyBeltController.java
  14. 386 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseTesterController.java
  15. 357 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseWalkieTalkieController.java
  16. 357 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseWaterPumpController.java
  17. 575 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseBicycle.java
  18. 374 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseDownspout.java
  19. 412 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseEarplug.java
  20. 376 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseManholeCover.java
  21. 428 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseMovement.java
  22. 402 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseSafetyBelt.java
  23. 395 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseTester.java
  24. 401 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseWalkieTalkie.java
  25. 388 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseWaterPump.java
  26. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseBicycleMapper.java
  27. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseDownspoutMapper.java
  28. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseEarplugMapper.java
  29. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseManholeCoverMapper.java
  30. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseMovementMapper.java
  31. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseSafetyBeltMapper.java
  32. 63 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseTesterMapper.java
  33. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseWalkieTalkieMapper.java
  34. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseWaterPumpMapper.java
  35. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseBicycleService.java
  36. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseDownspoutService.java
  37. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseEarplugService.java
  38. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseManholeCoverService.java
  39. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseMovementService.java
  40. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseSafetyBeltService.java
  41. 63 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseTesterService.java
  42. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseWalkieTalkieService.java
  43. 61 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseWaterPumpService.java
  44. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseBicycleServiceImpl.java
  45. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseDownspoutServiceImpl.java
  46. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseEarplugServiceImpl.java
  47. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseManholeCoverServiceImpl.java
  48. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseMovementServiceImpl.java
  49. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseSafetyBeltServiceImpl.java
  50. 99 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseTesterServiceImpl.java
  51. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseWalkieTalkieServiceImpl.java
  52. 93 0
      master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseWaterPumpServiceImpl.java
  53. 107 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevAlarmController.java
  54. 145 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevAnnihilatorController.java
  55. 109 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevBicycleController.java
  56. 107 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCabinetController.java
  57. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCctvController.java
  58. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCofferdamController.java
  59. 107 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevDoorController.java
  60. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevDownspoutController.java
  61. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevEarplugController.java
  62. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevEyewashController.java
  63. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevGasShieldController.java
  64. 114 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevHoseBoxController.java
  65. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevManholeCoverController.java
  66. 107 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevMovementController.java
  67. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevPagaController.java
  68. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevPostFireController.java
  69. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSafetyBeltController.java
  70. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSandboxController.java
  71. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSprinklerController.java
  72. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevStandpipeController.java
  73. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSteamCurtainController.java
  74. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevTesterController.java
  75. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWalkieTalkieController.java
  76. 113 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWaterCannonController.java
  77. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWaterPumpController.java
  78. 106 0
      master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWeathervaneController.java
  79. 210 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevAlarm.java
  80. 257 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevAnnihilator.java
  81. 181 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevBicycle.java
  82. 224 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCabinet.java
  83. 175 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCctv.java
  84. 175 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCofferdam.java
  85. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevDoor.java
  86. 175 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevDownspout.java
  87. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevEarplug.java
  88. 176 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevEyewash.java
  89. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevGasShield.java
  90. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevHoseBox.java
  91. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevManholeCover.java
  92. 212 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevMovement.java
  93. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevPaga.java
  94. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevPostFire.java
  95. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSafetyBelt.java
  96. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSandbox.java
  97. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSprinkler.java
  98. 189 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevStandpipe.java
  99. 175 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSteamCurtain.java
  100. 203 0
      master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevTester.java

+ 16 - 0
master/pom.xml

@@ -139,6 +139,22 @@
             <version>${commons.io.version}</version>
         </dependency>
 
+
+
+
+        <!-- zxing生成二维码 -->
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.3.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.3.3</version>
+        </dependency>
+
         <!--文件上传工具类 -->
         <dependency>
             <groupId>commons-fileupload</groupId>

+ 28 - 0
master/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -6,6 +6,7 @@ import java.lang.management.ManagementFactory;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.regex.Pattern;
 
@@ -260,4 +261,31 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return Integer.compare(d1, d2);
     }
 
+
+    /**
+     * 获取指定日期对应的月份最后一天
+     *
+     * @param dt
+     * @return
+     */
+    public static Date getLastMonthDay(Date dt) {
+        //获取当前月最后一天
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(dt);
+        int days = ca.getActualMaximum(Calendar.DAY_OF_MONTH) - 1;
+
+        String firstDay = DateUtils.parseDateToStr("yyyy-MM-01", dt);
+        Date startDate = null;
+
+        try {
+
+            startDate = DateUtils.parseDate(firstDay, "yyyy-MM-dd");
+
+        } catch (ParseException e) {
+            System.out.println(e.getMessage());
+        }
+
+        return DateUtils.addDays(startDate, days);
+    }
+
 }

+ 31 - 0
master/src/main/java/com/ruoyi/common/utils/StringUtils.java

@@ -456,4 +456,35 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
     {
         return (T) obj;
     }
+
+
+    /**
+     * 判断val1是否为val2中的值
+     *
+     * @param val1 要比较的值
+     * @param val2 必须是数组
+     * @return true/false
+     */
+    public static boolean isEquals(String val1, String... val2) {
+        if (isEmpty(val1) || isEmpty(val2)) {
+            return false;
+        }
+        for (String s : val2) {
+            if (s.equals(val1)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 判断val1是否为val2中的值
+     *
+     * @param val1 要比较的值
+     * @param val2 必须是数组
+     * @return true/false
+     */
+    public static boolean isNotEquals(String val1, String... val2) {
+        return !isEquals(val1, val2);
+    }
 }

+ 39 - 4
master/src/main/java/com/ruoyi/common/utils/file/ExcelUtils.java

@@ -1,5 +1,8 @@
 package com.ruoyi.common.utils.file;
 
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.controller.BaseController;
 import org.apache.commons.lang.time.DateFormatUtils;
 import org.apache.poi.hssf.usermodel.HSSFDataFormat;
@@ -7,15 +10,15 @@ import org.apache.poi.hssf.usermodel.HSSFDateUtil;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
@@ -315,4 +318,36 @@ public class ExcelUtils {
         return false;
     }
 
+    public static void insertPicture(XSSFWorkbook workbook, XSSFSheet sheet, String fileUrl, int row, int col, double scaleX, double scaleY) {
+        try {
+            // 输入流
+            String localPath = RuoYiConfig.getProfile();
+            String imagePath = localPath + StringUtils.substringAfter(fileUrl, Constants.RESOURCE_PREFIX);
+            InputStream is = new FileInputStream(imagePath);
+            byte[] bytes = IOUtils.toByteArray(is);
+            @SuppressWarnings("static-access")
+            int pictureIdx = workbook.addPicture(bytes, workbook.PICTURE_TYPE_PNG);
+            CreationHelper helper = workbook.getCreationHelper();
+            Drawing drawing = sheet.createDrawingPatriarch();
+            ClientAnchor anchor = helper.createClientAnchor();
+            // 图片插入坐标
+            anchor.setCol1(col);
+            anchor.setRow1(row);
+            // 插入图片
+            Picture pict = drawing.createPicture(anchor, pictureIdx);
+            pict.resize(scaleX, scaleY);
+            is.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    public static void createVoidCell(int startCell, int endCell, XSSFRow row) {
+        for (int i = startCell; i <= endCell; i++) {
+            row.createCell(i);
+        }
+    }
 }

+ 78 - 0
master/src/main/java/com/ruoyi/common/utils/poi/QRCodeEntity.java

@@ -0,0 +1,78 @@
+package com.ruoyi.common.utils.poi;
+
+import com.ruoyi.common.utils.StringUtils;
+
+public class QRCodeEntity {
+    private Long id;
+
+    private String devNo;
+
+    private String patrolType;
+    private String position;
+
+    private String description;
+
+    public QRCodeEntity() {
+    }
+
+    public QRCodeEntity(Long id, String devNo, String patrolType, String position) {
+        this.id = id;
+        this.devNo = devNo;
+        this.patrolType = patrolType;
+        this.position = position;
+        this.description =
+                "位号:" + getDevNo() + (StringUtils.isNotEmpty(getPosition()) ? " 位置:" + getPosition() : "");
+    }
+
+    public QRCodeEntity(Long id, String description, String patrolType) {
+        this.id = id;
+        this.description = description;
+        this.patrolType = patrolType;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDevNo() {
+        return devNo;
+    }
+
+    public void setDevNo(String devNo) {
+        this.devNo = devNo;
+    }
+
+    public String getPatrolType() {
+        return patrolType;
+    }
+
+    public void setPatrolType(String patrolType) {
+        this.patrolType = patrolType;
+    }
+
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    @Override
+    public String toString() {
+        return getDescription();
+    }
+}

+ 197 - 0
master/src/main/java/com/ruoyi/common/utils/poi/QRCodeUtil.java

@@ -0,0 +1,197 @@
+package com.ruoyi.common.utils.poi;
+
+import com.alibaba.fastjson.JSON;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.WriterException;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.config.RuoYiConfig;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.util.Units;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.XWPFParagraph;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class QRCodeUtil<T> {
+    private static final Logger log = LoggerFactory.getLogger(QRCodeUtil.class);
+
+    /**
+     * 导出数据列表
+     */
+    private List<T> list;
+    private static XWPFDocument doc;
+
+    //CODE_WIDTH:二维码宽度,单位像素
+    private static final int CODE_WIDTH = 400;
+    //CODE_HEIGHT:二维码高度,单位像素
+    private static final int CODE_HEIGHT = 400;
+    //FONT_WIDTH:字体大小
+    private static final int FONT_WIDTH = 16;
+    //FRONT_COLOR:二维码前景色,0x000000 表示黑色
+    private static final int FRONT_COLOR = 0x000000;
+    //BACKGROUND_COLOR:二维码背景色,0xFFFFFF 表示白色
+    //演示用 16 进制表示,和前端页面 CSS 的取色是一样的,注意前后景颜色应该对比明显,如常见的黑白
+    private static final int BACKGROUND_COLOR = 0xFFFFFF;
+
+    /**
+     * 实体对象
+     */
+    public Class<T> clazz;
+
+
+    public QRCodeUtil(Class<T> clazz) {
+        this.clazz = clazz;
+    }
+
+    private void init(List<T> list, String title) {
+        if (CollectionUtils.isEmpty(list)) {
+            list = new ArrayList<>();
+        }
+        this.list = list;
+        doc = new XWPFDocument();
+    }
+
+    public void exportQRCode(HttpServletResponse response, List<T> list) {
+        exportQRCode(response, list, StringUtils.EMPTY);
+    }
+
+    public void exportQRCode(HttpServletResponse response, List<T> list, String title) {
+        response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+        response.setCharacterEncoding("utf-8");
+        this.init(list, title);
+        exportQRCode(response);
+    }
+
+    public void exportQRCode(HttpServletResponse response) {
+        try {
+            writeDoc();
+            doc.write(response.getOutputStream());
+        } catch (Exception e) {
+            log.error("导出Word异常{}", e.getMessage());
+        } finally {
+            IOUtils.closeQuietly(doc);
+        }
+    }
+
+    public static void createCodeToFile(String content, File codeImgFileSaveDir, String fileName) {
+        try {
+            if (StringUtils.isBlank(content) || StringUtils.isBlank(fileName)) {
+                return;
+            }
+            content = content.trim();
+            if (codeImgFileSaveDir == null || codeImgFileSaveDir.isFile()) {
+                //二维码图片存在目录为空,默认放在桌面...
+                codeImgFileSaveDir = new File(RuoYiConfig.getQRCodePath());
+            }
+            if (!codeImgFileSaveDir.exists()) {
+                //二维码图片存在目录不存在,开始创建...
+                codeImgFileSaveDir.mkdirs();
+            }
+
+            //核心代码-生成二维码
+            BufferedImage bufferedImage = getBufferedImage(content);
+
+            File codeImgFile = new File(codeImgFileSaveDir, fileName);
+            ImageIO.write(bufferedImage, "png", codeImgFile);
+
+            log.info("二维码图片生成成功:" + codeImgFile.getPath());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void createCodeToStream(String content, ByteArrayOutputStream baos,String text) {
+        try {
+            if (StringUtils.isBlank(content)) {
+                return;
+            }
+            content = content.trim();
+            //核心代码-生成二维码
+            BufferedImage qrCodeImage = getBufferedImage(content);
+
+
+            // 添加底部文字
+            BufferedImage combinedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT + 30, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g = combinedImage.createGraphics();
+            g.setColor(Color.WHITE); // 设置背景颜色为白色
+            g.fillRect(0, 0, CODE_WIDTH, CODE_HEIGHT + 30); // 填充背景颜色
+            g.drawImage(qrCodeImage, 0, 0, null);
+            g.setColor(Color.BLACK); // 设置文字颜色为黑色
+            g.setFont(new Font("微软雅黑", Font.PLAIN, FONT_WIDTH));
+            int textWidth = g.getFontMetrics().stringWidth(text);
+            int textX = (CODE_WIDTH - textWidth) / 2;
+            g.drawString(text, textX, CODE_HEIGHT + 20);
+            g.dispose();
+            ImageIO.write(combinedImage, "png", baos);
+
+            log.info("二维码图片生成到输出流成功...");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static Font loadFont(String fontFilePath, int fontSize) throws IOException, FontFormatException {
+        return Font.createFont(Font.TRUETYPE_FONT, new File(fontFilePath)).deriveFont(Font.PLAIN, fontSize);
+    }
+
+    //核心代码-生成二维码
+    private static BufferedImage getBufferedImage(String content) throws WriterException {
+
+        //com.google.zxing.EncodeHintType:编码提示类型,枚举类型
+        Map<EncodeHintType, Object> hints = new HashMap<>();
+
+        //EncodeHintType.CHARACTER_SET:设置字符编码类型
+        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+
+        //EncodeHintType.ERROR_CORRECTION:设置误差校正
+        //ErrorCorrectionLevel:误差校正等级,L = ~7% correction、M = ~15% correction、Q = ~25% correction、H = ~30% correction
+        //不设置时,默认为 L 等级,等级不一样,生成的图案不同,但扫描的结果是一样的
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
+
+        //EncodeHintType.MARGIN:设置二维码边距,单位像素,值越小,二维码距离四周越近
+        hints.put(EncodeHintType.MARGIN, 1);
+
+        MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
+        BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, CODE_WIDTH, CODE_HEIGHT, hints);
+        BufferedImage bufferedImage = new BufferedImage(CODE_WIDTH, CODE_HEIGHT, BufferedImage.TYPE_INT_BGR);
+        for (int x = 0; x < CODE_WIDTH; x++) {
+            for (int y = 0; y < CODE_HEIGHT; y++) {
+                bufferedImage.setRGB(x, y, bitMatrix.get(x, y) ? FRONT_COLOR : BACKGROUND_COLOR);
+            }
+        }
+        return bufferedImage;
+    }
+
+
+    private void writeDoc() {
+        XWPFParagraph paragraph = doc.createParagraph();
+        list.forEach(item -> {
+            try {
+                log.info("==================================================" + JSON.toJSONString(item));
+                //务必重写类的toString方法
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                createCodeToStream(JSON.toJSONString(item), baos,item.toString());
+                InputStream is = new ByteArrayInputStream(baos.toByteArray());
+                paragraph.createRun().addPicture(is, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(200));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
+    }
+
+}

+ 10 - 0
master/src/main/java/com/ruoyi/framework/config/RuoYiConfig.java

@@ -142,4 +142,14 @@ public class RuoYiConfig
         return getProfile() + dir;
     }
 
+
+    /**
+     * 获取二维码生成路径
+     *
+     * @return
+     */
+    public static String getQRCodePath() {
+        return getProfile() + "/QRCode";
+    }
+
 }

+ 373 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseBicycleController.java

@@ -0,0 +1,373 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseBicycle;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseBicycleService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 自行车Controller
+ *
+ * @author admin
+ * @date 2023-11-09
+ */
+@RestController
+@RequestMapping("/commonuse/bicycle")
+public class TCommonuseBicycleController extends BaseController {
+    @Autowired
+    private ITCommonuseBicycleService tCommonuseBicycleService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询自行车列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseBicycle tCommonuseBicycle) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseBicycle.getIssuesFlag()))
+            tCommonuseBicycle.setIssuesFlag("0");
+        List<TCommonuseBicycle> list = tCommonuseBicycleService.selectTCommonuseBicycleList(tCommonuseBicycle);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出自行车列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:export')")
+    @Log(title = "自行车", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseBicycle tCommonuseBicycle) {
+        try {
+            tCommonuseBicycle.setIssuesFlag("0");
+            List<TCommonuseBicycle> list = tCommonuseBicycleService.selectTCommonuseBicycleList(tCommonuseBicycle);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 2500);
+            sheet.setColumnWidth(1, 2500);
+            sheet.setColumnWidth(2, 2500);
+            sheet.setColumnWidth(3, 2500);
+            sheet.setColumnWidth(4, 2500);
+            sheet.setColumnWidth(5, 2500);
+            sheet.setColumnWidth(6, 2500);
+            sheet.setColumnWidth(7, 2500);
+            sheet.setColumnWidth(8, 2500);
+            sheet.setColumnWidth(9, 2500);
+            sheet.setColumnWidth(10, 2500);
+            sheet.setColumnWidth(11, 2500);
+            sheet.setColumnWidth(12, 2500);
+            sheet.setColumnWidth(13, 2500);
+            sheet.setColumnWidth(14, 2500);
+            sheet.setColumnWidth(15, 2500);
+            sheet.setColumnWidth(16, 2500);
+
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.24  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 16, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 16));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("自行车检查记录");
+            row2.setHeightInPoints(30);
+            ExcelUtils.createVoidCell(1, 16, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 16));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseBicycle.getYear());
+            ExcelUtils.createVoidCell(1, 16, row3);
+            row3.createCell(1).setCellValue("检查频率:1次/3月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 1, 16));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(1).setCellValue("检查内容");
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 1, 16));
+            sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            row5.setHeightInPoints(80);
+            row5.createCell(0).setCellValue("自行车编号");
+            row5.createCell(1).setCellValue("外观检查完好");
+            row5.createCell(2).setCellValue("前后轮车胎气压正常");
+            row5.createCell(3).setCellValue("脚蹬无破损");
+            row5.createCell(4).setCellValue("前后手刹完好,功能正常");
+            row5.createCell(5).setCellValue("车铃铛完好,能正常使用");
+            row5.createCell(6).setCellValue("自行车链条完好");
+            row5.createCell(7).setCellValue("反光贴正常");
+            row5.createCell(8).setCellValue("自行车支架完好");
+            row5.createCell(9).setCellValue("车坐垫完好,无损坏");
+            row5.createCell(10).setCellValue("前后轮挡泥板完好");
+            row5.createCell(11).setCellValue("前后轮车辐条完好");
+            row5.createCell(12).setCellValue("前后轮钢圈完好");
+            row5.createCell(13).setCellValue("车锁完好,功能正常");
+            row5.createCell(14).setCellValue("自行车编号清晰,无污损");
+            row5.createCell(15).setCellValue("自行车后座支架完好,无松动");
+            row5.createCell(16).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseBicycle bicycle = list.get(i);
+                planId = bicycle.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(bicycle.getDevNo());
+                row.createCell(1).setCellValue("1".equals(bicycle.getAppearance()) ? "√" : bicycle.getAppearance());
+                row.createCell(2).setCellValue("1".equals(bicycle.getNormobaria()) ? "√" : bicycle.getNormobaria());
+                row.createCell(3).setCellValue("1".equals(bicycle.getPedalCondition()) ? "√" : bicycle.getPedalCondition());
+                row.createCell(4).setCellValue("1".equals(bicycle.getHandbrakeIntact()) ? "√" : bicycle.getHandbrakeIntact());
+                row.createCell(5).setCellValue("1".equals(bicycle.getBellIntact()) ? "√" : bicycle.getBellIntact());
+                row.createCell(6).setCellValue("1".equals(bicycle.getHingeIntact()) ? "√" : bicycle.getHingeIntact());
+                row.createCell(7).setCellValue("1".equals(bicycle.getNormalReflector()) ? "√" : bicycle.getNormalReflector());
+                row.createCell(8).setCellValue("1".equals(bicycle.getSupportIntact()) ? "√" : bicycle.getSupportIntact());
+                row.createCell(9).setCellValue("1".equals(bicycle.getCushionIntact()) ? "√" : bicycle.getCushionIntact());
+                row.createCell(10).setCellValue("1".equals(bicycle.getFenderIntact()) ? "√" : bicycle.getFenderIntact());
+                row.createCell(11).setCellValue("1".equals(bicycle.getSpokeStripIntact()) ? "√" : bicycle.getSpokeStripIntact());
+                row.createCell(12).setCellValue("1".equals(bicycle.getSteelRingIntact()) ? "√" : bicycle.getSteelRingIntact());
+                row.createCell(13).setCellValue("1".equals(bicycle.getLockIntact()) ? "√" : bicycle.getLockIntact());
+                row.createCell(14).setCellValue("1".equals(bicycle.getClearlyNumbered()) ? "√" : bicycle.getClearlyNumbered());
+                row.createCell(15).setCellValue("1".equals(bicycle.getSupportNoLoose()) ? "√" : bicycle.getSupportNoLoose());
+                XSSFCell cell10 = row.createCell(16);
+                if (StringUtils.isNotEmpty(bicycle.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(bicycle.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 8, 1, 1);
+            ExcelUtils.createVoidCell(1, 16, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 1, 16));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            row29.createCell(1).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(2, 16, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 1, 16));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                for (Cell cell : row) {
+                    cell.setCellStyle(style);
+                }
+
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 16, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 16));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 16, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 16));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 16, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 16));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每3个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 16, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 16));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    /**
+     * 获取自行车详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseBicycleService.selectTCommonuseBicycleById(id));
+    }
+
+    /**
+     * 获取自行车详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseBicycle tCommonuseBicycle) {
+        if (StringUtils.isNull(tCommonuseBicycle.getDevNo()) || StringUtils.isNull(tCommonuseBicycle.getPlanId())) {
+            return AjaxResult.error("位置或计划id不能为空!");
+        }
+        TCommonuseBicycle item = new TCommonuseBicycle();
+        item.setPlanId(tCommonuseBicycle.getPlanId());
+        item.setPrecision(tCommonuseBicycle.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseBicycle> list = tCommonuseBicycleService.selectTCommonuseBicycleList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增自行车
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:add')")
+    @Log(title = "自行车", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseBicycle tCommonuseBicycle) {
+        return toAjax(tCommonuseBicycleService.insertTCommonuseBicycle(tCommonuseBicycle));
+    }
+
+    /**
+     * 修改自行车
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:edit')")
+    @Log(title = "自行车", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseBicycle tCommonuseBicycle) {
+        tCommonuseBicycle.setUpdatedate(new Date());
+        tCommonuseBicycle.setUpdaterCode(getUserId().toString());
+        tCommonuseBicycle.setCheckStatus("1");
+        tCommonuseBicycle.setCheckDate(new Date());
+        TCommonuseBicycle item = tCommonuseBicycleService.selectTCommonuseBicycleById(tCommonuseBicycle.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseBicycle.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if (StringUtils.isNotEquals(tCommonuseBicycle.getAppearance(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getNormobaria(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getPedalCondition(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getHandbrakeIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getBellIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getHingeIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getNormalReflector(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getSupportIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getCushionIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getFenderIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getSpokeStripIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getSteelRingIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getLockIntact(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getSupportNoLoose(), "1")
+                || StringUtils.isNotEquals(tCommonuseBicycle.getClearlyNumbered(), "1")) {
+            tCommonuseBicycle.setIssuesStatus("1");
+            tCommonuseBicycle.setCheckStatus("0");
+            tCommonuseBicycleService.updateTCommonuseBicycle(tCommonuseBicycle);
+            tCommonuseBicycle.setIssuesFlag("1");
+            tCommonuseBicycle.setCheckStatus("1");
+            tCommonuseBicycle.setCreatedate(new Date());
+            tCommonuseBicycle.setCreaterCode(getUserId().toString());
+            tCommonuseBicycle.setDevNo(item.getDevNo());
+            tCommonuseBicycleService.insertTCommonuseBicycle(tCommonuseBicycle);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("21");
+            tPatrolIssues.setDevDescribe(tCommonuseBicycle.getDevNo());
+            tPatrolIssues.setLinkId(tCommonuseBicycle.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("21");
+                tPatrolIssues.setDevDescribe(item.getDevNo());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseBicycle.setIssuesStatus("0");
+            tCommonuseBicycleService.updateTCommonuseBicycle(tCommonuseBicycle);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除自行车
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:bicycle:remove')")
+    @Log(title = "自行车", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseBicycleService.deleteTCommonuseBicycleByIds(ids));
+    }
+}

+ 348 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseDownspoutController.java

@@ -0,0 +1,348 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseDownspout;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseDownspoutService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 落水管Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/downspout")
+public class TCommonuseDownspoutController extends BaseController {
+    @Autowired
+    private ITCommonuseDownspoutService tCommonuseDownspoutService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询落水管列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseDownspout tCommonuseDownspout) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseDownspout.getIssuesFlag()))
+            tCommonuseDownspout.setIssuesFlag("0");
+        List<TCommonuseDownspout> list = tCommonuseDownspoutService.selectTCommonuseDownspoutList(tCommonuseDownspout);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出落水管列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:export')")
+    @Log(title = "落水管", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseDownspout tCommonuseDownspout) {
+        try {
+            tCommonuseDownspout.setIssuesFlag("0");
+            List<TCommonuseDownspout> list = tCommonuseDownspoutService.selectTCommonuseDownspoutList(tCommonuseDownspout);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 4500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.28  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 5, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 5));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("落水管检查记录");
+            ExcelUtils.createVoidCell(1, 5, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 5));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseDownspout.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 1));
+            ExcelUtils.createVoidCell(1, 5, row3);
+            row3.createCell(2).setCellValue("检查频率:1次/6月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 2, 5));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 5, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 2, 5));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            ExcelUtils.createVoidCell(0, 1, row5);
+            row5.createCell(2).setCellValue("落水管外观");
+            row5.createCell(3).setCellValue("管道是否破损");
+            row5.createCell(4).setCellValue("紧固件是否松动");
+            row5.createCell(5).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseDownspout downspout = list.get(i);
+                planId = downspout.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(downspout.getPosition());
+                row.createCell(2).setCellValue("1".equals(downspout.getAppearance()) ? "√" : downspout.getAppearance());
+                row.createCell(3).setCellValue("1".equals(downspout.getDamaged()) ? "√" : downspout.getDamaged());
+                row.createCell(4).setCellValue("1".equals(downspout.getBecomeFlexible()) ? "√" : downspout.getBecomeFlexible());
+                XSSFCell cell10 = row.createCell(5);
+                if (StringUtils.isNotEmpty(downspout.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(downspout.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 1));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 3, 1, 1);
+            ExcelUtils.createVoidCell(3, 5, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 2, 5));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 1, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 1));
+            row29.createCell(2).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(3, 5, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 2, 5));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 5, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 5));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 5, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 5));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 5, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 5));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每六个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 5, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 5));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取落水管详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseDownspoutService.selectTCommonuseDownspoutById(id));
+    }
+
+    /**
+     * 获取落水管详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseDownspout tCommonuseDownspout) {
+        if (StringUtils.isNull(tCommonuseDownspout.getPosition()) || StringUtils.isNull(tCommonuseDownspout.getPlanId())) {
+            return AjaxResult.error("位置或计划id不能为空!");
+        }
+        TCommonuseDownspout item = new TCommonuseDownspout();
+        item.setPlanId(tCommonuseDownspout.getPlanId());
+        item.setPrecision(tCommonuseDownspout.getPosition());
+        item.setIssuesFlag("0");
+        List<TCommonuseDownspout> list = tCommonuseDownspoutService.selectTCommonuseDownspoutList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增落水管
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:add')")
+    @Log(title = "落水管", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseDownspout tCommonuseDownspout) {
+        return toAjax(tCommonuseDownspoutService.insertTCommonuseDownspout(tCommonuseDownspout));
+    }
+
+    /**
+     * 修改落水管
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:edit')")
+    @Log(title = "落水管", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseDownspout tCommonuseDownspout) {
+        tCommonuseDownspout.setUpdatedate(new Date());
+        tCommonuseDownspout.setUpdaterCode(getUserId().toString());
+        tCommonuseDownspout.setCheckStatus("1");
+        tCommonuseDownspout.setCheckDate(new Date());
+        TCommonuseDownspout item = tCommonuseDownspoutService.selectTCommonuseDownspoutById(tCommonuseDownspout.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseDownspout.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if (StringUtils.isNotEquals(tCommonuseDownspout.getAppearance(), "1")
+                || StringUtils.isNotEquals(tCommonuseDownspout.getBecomeFlexible(), "1")
+                || StringUtils.isNotEquals(tCommonuseDownspout.getDamaged(), "1")) {
+            tCommonuseDownspout.setIssuesStatus("1");
+            tCommonuseDownspout.setCheckStatus("0");
+            tCommonuseDownspoutService.updateTCommonuseDownspout(tCommonuseDownspout);
+            tCommonuseDownspout.setIssuesFlag("1");
+            tCommonuseDownspout.setCheckStatus("1");
+            tCommonuseDownspout.setCreatedate(new Date());
+            tCommonuseDownspout.setCreaterCode(getUserId().toString());
+            tCommonuseDownspout.setPosition(item.getPosition());
+            tCommonuseDownspoutService.insertTCommonuseDownspout(tCommonuseDownspout);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("25");
+            tPatrolIssues.setDevDescribe(tCommonuseDownspout.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseDownspout.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("25");
+                tPatrolIssues.setDevDescribe(item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseDownspout.setIssuesStatus("0");
+            tCommonuseDownspoutService.updateTCommonuseDownspout(tCommonuseDownspout);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除落水管
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:downspout:remove')")
+    @Log(title = "落水管", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseDownspoutService.deleteTCommonuseDownspoutByIds(ids));
+    }
+}

+ 354 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseEarplugController.java

@@ -0,0 +1,354 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseEarplug;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseEarplugService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 耳塞分配器检查记录Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/earplug")
+public class TCommonuseEarplugController extends BaseController {
+    @Autowired
+    private ITCommonuseEarplugService tCommonuseEarplugService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询耳塞分配器检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseEarplug tCommonuseEarplug) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseEarplug.getIssuesFlag()))
+            tCommonuseEarplug.setIssuesFlag("0");
+        List<TCommonuseEarplug> list = tCommonuseEarplugService.selectTCommonuseEarplugList(tCommonuseEarplug);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出耳塞分配器检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:export')")
+    @Log(title = "耳塞分配器检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseEarplug tCommonuseEarplug) {
+        try {
+            tCommonuseEarplug.setIssuesFlag("0");
+            List<TCommonuseEarplug> list = tCommonuseEarplugService.selectTCommonuseEarplugList(tCommonuseEarplug);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 4500);
+            sheet.setColumnWidth(6, 4500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.22  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 6, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("耳塞分配器检查记录");
+            ExcelUtils.createVoidCell(1, 6, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 6));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseEarplug.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 2));
+            ExcelUtils.createVoidCell(1, 6, row3);
+            row3.createCell(3).setCellValue("检查频率:1次/3月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 6));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("位置");
+            row4.createCell(3).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 6, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 6));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            ExcelUtils.createVoidCell(0, 2, row5);
+            row5.createCell(3).setCellValue("外观情况");
+            row5.createCell(4).setCellValue("标识清晰度");
+            row5.createCell(5).setCellValue("耳塞内分配器数量是否充足");
+            row5.createCell(6).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseEarplug earplug = list.get(i);
+                planId = earplug.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(earplug.getDevNo());
+                row.createCell(2).setCellValue(earplug.getPosition());
+                row.createCell(3).setCellValue("1".equals(earplug.getAppearance()) ? "√" : earplug.getAppearance());
+                row.createCell(4).setCellValue("1".equals(earplug.getIdentificationClarity()) ? "√" : earplug.getIdentificationClarity());
+                row.createCell(5).setCellValue("1".equals(earplug.getAdequacyOrNot()) ? "√" : earplug.getAdequacyOrNot());
+                XSSFCell cell10 = row.createCell(6);
+                if (StringUtils.isNotEmpty(earplug.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(earplug.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(3, 6, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 6));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 2, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            row29.createCell(3).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(4, 6, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 6));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 6, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 6, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 6, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每3个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 6, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取耳塞分配器检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseEarplugService.selectTCommonuseEarplugById(id));
+    }
+
+    /**
+     * 获取耳塞分配器检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseEarplug tCommonuseEarplug) {
+        if (StringUtils.isEmpty(tCommonuseEarplug.getDevNo()) || StringUtils.isNull(tCommonuseEarplug.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseEarplug item = new TCommonuseEarplug();
+        item.setPlanId(tCommonuseEarplug.getPlanId());
+        item.setPrecision(tCommonuseEarplug.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseEarplug> list = tCommonuseEarplugService.selectTCommonuseEarplugList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增耳塞分配器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:add')")
+    @Log(title = "耳塞分配器检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseEarplug tCommonuseEarplug) {
+        return toAjax(tCommonuseEarplugService.insertTCommonuseEarplug(tCommonuseEarplug));
+    }
+
+    /**
+     * 修改耳塞分配器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:edit')")
+    @Log(title = "耳塞分配器检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseEarplug tCommonuseEarplug) {
+        tCommonuseEarplug.setUpdatedate(new Date());
+        tCommonuseEarplug.setUpdaterCode(getUserId().toString());
+        tCommonuseEarplug.setCheckStatus("1");
+        tCommonuseEarplug.setCheckDate(new Date());
+        TCommonuseEarplug item = tCommonuseEarplugService.selectTCommonuseEarplugById(tCommonuseEarplug.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseEarplug.getPlanId());
+        if (tPatrolPlan.getStatus() == 1) {
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if ((StringUtils.isNotEmpty(tCommonuseEarplug.getAdequacyOrNot()) && !"1".equals(tCommonuseEarplug.getAdequacyOrNot())) ||
+                (StringUtils.isNotEmpty(tCommonuseEarplug.getAppearance()) && !"1".equals(tCommonuseEarplug.getAppearance())) ||
+                (StringUtils.isNotEmpty(tCommonuseEarplug.getIdentificationClarity()) && !"1".equals(tCommonuseEarplug.getIdentificationClarity()))) {
+            tCommonuseEarplug.setIssuesStatus("1");
+            tCommonuseEarplug.setCheckStatus("0");
+            tCommonuseEarplugService.updateTCommonuseEarplug(tCommonuseEarplug);
+            tCommonuseEarplug.setIssuesFlag("1");
+            tCommonuseEarplug.setCheckStatus("1");
+            tCommonuseEarplug.setCreatedate(new Date());
+            tCommonuseEarplug.setCreaterCode(getUserId().toString());
+            tCommonuseEarplug.setDevNo(item.getDevNo());
+            tCommonuseEarplug.setPosition(item.getPosition());
+            tCommonuseEarplugService.insertTCommonuseEarplug(tCommonuseEarplug);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("19");
+            tPatrolIssues.setDevDescribe(tCommonuseEarplug.getDevNo() + " " + tCommonuseEarplug.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseEarplug.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("19");
+                tPatrolIssues.setDevDescribe(item.getDevNo()+" "+item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseEarplug.setIssuesStatus("0");
+            tCommonuseEarplugService.updateTCommonuseEarplug(tCommonuseEarplug);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除耳塞分配器检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:earplug:remove')")
+    @Log(title = "耳塞分配器检查记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseEarplugService.deleteTCommonuseEarplugByIds(ids));
+    }
+}

+ 373 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseManholeCoverController.java

@@ -0,0 +1,373 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseManholeCover;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseManholeCoverService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 地井盖Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/cover")
+public class TCommonuseManholeCoverController extends BaseController {
+    @Autowired
+    private ITCommonuseManholeCoverService tCommonuseManholeCoverService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询地井盖列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseManholeCover tCommonuseManholeCover) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseManholeCover.getIssuesFlag()))
+            tCommonuseManholeCover.setIssuesFlag("0");
+        List<TCommonuseManholeCover> list = tCommonuseManholeCoverService.selectTCommonuseManholeCoverList(tCommonuseManholeCover);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出地井盖列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:export')")
+    @Log(title = "地井盖", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseManholeCover tCommonuseManholeCover) {
+        try {
+            tCommonuseManholeCover.setIssuesFlag("0");
+            List<TCommonuseManholeCover> list = tCommonuseManholeCoverService.selectTCommonuseManholeCoverList(tCommonuseManholeCover);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 2500);
+            sheet.setColumnWidth(1, 2500);
+            sheet.setColumnWidth(2, 4000);
+            sheet.setColumnWidth(3, 2500);
+            sheet.setColumnWidth(4, 2500);
+            sheet.setColumnWidth(5, 2500);
+            sheet.setColumnWidth(6, 2500);
+            sheet.setColumnWidth(7, 2500);
+            sheet.setColumnWidth(8, 4000);
+            sheet.setColumnWidth(9, 2500);
+            sheet.setColumnWidth(10, 2500);
+            sheet.setColumnWidth(11, 2500);
+            ;
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.25  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 11, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 11));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("地井盖检查记录");
+            row2.setHeightInPoints(30);
+            ExcelUtils.createVoidCell(1, 11, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 11));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseManholeCover.getYear());
+            ExcelUtils.createVoidCell(1, 5, row3);
+            row3.createCell(6).setCellValue("检查频率:1次/六个月");
+            ExcelUtils.createVoidCell(7, 11, row3);
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 5));
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 6, 11));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("位置");
+            row4.createCell(3).setCellValue("检查内容");
+            row4.createCell(6).setCellValue("序号");
+            row4.createCell(7).setCellValue("位号");
+            row4.createCell(8).setCellValue("位置");
+            row4.createCell(9).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(10, 11, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 5));
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 9, 11));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 6, 6));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 7, 7));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 8));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            row5.setHeightInPoints(30);
+            row5.createCell(3).setCellValue("地井盖是否缺失");
+            row5.createCell(4).setCellValue("地井盖外观");
+            row5.createCell(5).setCellValue("检查人");
+            row5.createCell(9).setCellValue("地井盖是否缺失");
+            row5.createCell(10).setCellValue("地井盖外观");
+            row5.createCell(11).setCellValue("检查人");
+            ExcelUtils.createVoidCell(0, 1, row5);
+            ExcelUtils.createVoidCell(6, 7, row5);
+            Long planId = null;
+            int n = 0;
+            int m = 5;
+            boolean br = false;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                if (list.size() / 2 == i) {
+                    n = 6;
+                    br = true;
+                }
+                TCommonuseManholeCover cover = list.get(i);
+                planId = cover.getPlanId();
+                XSSFRow row;
+                if (br) {
+                    row = sheet.getRow(m);
+                    m++;
+                } else {
+                    row = sheet.createRow(5 + i);
+                }
+                row.createCell(n).setCellValue(i+1);
+                row.createCell(1 + n).setCellValue(cover.getDevNo());
+                row.createCell(2 + n).setCellValue(cover.getPosition());
+                row.createCell(3 + n).setCellValue("1".equals(cover.getDeficiency()) ? "√" : cover.getDeficiency());
+                row.createCell(4 + n).setCellValue("1".equals(cover.getAppearance()) ? "√" : cover.getAppearance());
+                XSSFCell cell10 = row.createCell(5 + n);
+                if (StringUtils.isNotEmpty(cover.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(cover.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = m;
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 7, 1, 1);
+            ExcelUtils.createVoidCell(1, 11, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 1, 11));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            row29.createCell(1).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(2, 11, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 1, 11));
+            // 下一行
+            nextRowNum++;
+            XSSFRow rowbz = sheet.createRow(nextRowNum);
+            rowbz.setHeightInPoints(30);
+            XSSFCell rowbzCell1 = rowbz.createCell(0);
+            rowbzCell1.setCellValue("备注");
+            ExcelUtils.createVoidCell(1, 11, rowbz);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 1, 11));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                for (Cell cell : row) {
+                    cell.setCellStyle(style);
+                }
+
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 11, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 11));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 11, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 11));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 11, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 11));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每六个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 11, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 11));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取地井盖详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseManholeCoverService.selectTCommonuseManholeCoverById(id));
+    }
+
+    /**
+     * 获取地井盖详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseManholeCover tCommonuseManholeCover) {
+        if (StringUtils.isEmpty(tCommonuseManholeCover.getDevNo()) || StringUtils.isNull(tCommonuseManholeCover.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseManholeCover item = new TCommonuseManholeCover();
+        item.setPlanId(tCommonuseManholeCover.getPlanId());
+        item.setPrecision(tCommonuseManholeCover.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseManholeCover> list = tCommonuseManholeCoverService.selectTCommonuseManholeCoverList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:add')")
+    @Log(title = "地井盖", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseManholeCover tCommonuseManholeCover) {
+        return toAjax(tCommonuseManholeCoverService.insertTCommonuseManholeCover(tCommonuseManholeCover));
+    }
+
+    /**
+     * 修改地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:edit')")
+    @Log(title = "地井盖", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseManholeCover tCommonuseManholeCover) {
+        tCommonuseManholeCover.setUpdatedate(new Date());
+        tCommonuseManholeCover.setUpdaterCode(getUserId().toString());
+        tCommonuseManholeCover.setCheckStatus("1");
+        tCommonuseManholeCover.setCheckDate(new Date());
+        TCommonuseManholeCover item = tCommonuseManholeCoverService.selectTCommonuseManholeCoverById(tCommonuseManholeCover.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseManholeCover.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if ((StringUtils.isNotEmpty(tCommonuseManholeCover.getAppearance()) && !"1".equals(tCommonuseManholeCover.getAppearance())) ||
+                (StringUtils.isNotEmpty(tCommonuseManholeCover.getDeficiency()) && !"1".equals(tCommonuseManholeCover.getDeficiency()))) {
+            tCommonuseManholeCover.setIssuesStatus("1");
+            tCommonuseManholeCover.setCheckStatus("0");
+            tCommonuseManholeCoverService.updateTCommonuseManholeCover(tCommonuseManholeCover);
+            tCommonuseManholeCover.setIssuesFlag("1");
+            tCommonuseManholeCover.setCheckStatus("1");
+            tCommonuseManholeCover.setCreatedate(new Date());
+            tCommonuseManholeCover.setCreaterCode(getUserId().toString());
+            tCommonuseManholeCover.setDevNo(item.getDevNo());
+            tCommonuseManholeCover.setPosition(item.getPosition());
+            tCommonuseManholeCoverService.insertTCommonuseManholeCover(tCommonuseManholeCover);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("22");
+            tPatrolIssues.setDevDescribe(tCommonuseManholeCover.getDevNo() + " " + tCommonuseManholeCover.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseManholeCover.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("22");
+                tPatrolIssues.setDevDescribe(item.getDevNo()+" "+item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseManholeCover.setIssuesStatus("0");
+            tCommonuseManholeCoverService.updateTCommonuseManholeCover(tCommonuseManholeCover);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:cover:remove')")
+    @Log(title = "地井盖", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseManholeCoverService.deleteTCommonuseManholeCoverByIds(ids));
+    }
+}

+ 423 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseMovementController.java

@@ -0,0 +1,423 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseMovement;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseMovementService;
+import com.ruoyi.project.patrol.dev.domain.TDevMovement;
+import com.ruoyi.project.patrol.dev.service.ITDevMovementService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 移动平台及移动梯Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/movement")
+public class TCommonuseMovementController extends BaseController {
+    @Autowired
+    private ITCommonuseMovementService tCommonuseMovementService;
+
+    @Autowired
+    private ITDevMovementService tDevMovementService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询移动平台及移动梯列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseMovement tCommonuseMovement) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseMovement.getIssuesFlag()))
+            tCommonuseMovement.setIssuesFlag("0");
+        List<TCommonuseMovement> list = tCommonuseMovementService.selectTCommonuseMovementList(tCommonuseMovement);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出移动平台及移动梯列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:export')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseMovement tCommonuseMovement) {
+        try {
+            tCommonuseMovement.setIssuesFlag("0");
+            List<TCommonuseMovement> list = tCommonuseMovementService.selectTCommonuseMovementList(tCommonuseMovement);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 4500);
+            sheet.setColumnWidth(6, 4500);
+            sheet.setColumnWidth(7, 4500);
+            sheet.setColumnWidth(8, 3500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.23  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 8, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("移动平台及移动梯检查记录");
+            ExcelUtils.createVoidCell(1, 8, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 8));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseMovement.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 2));
+            ExcelUtils.createVoidCell(1, 8, row3);
+            row3.createCell(3).setCellValue("检查频率:1次/年");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 8));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("位置");
+            row4.createCell(3).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 8, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 8));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            ExcelUtils.createVoidCell(0, 2, row5);
+            row5.createCell(3).setCellValue("外观情况");
+            row5.createCell(4).setCellValue("踏板情况");
+            row5.createCell(5).setCellValue("锈蚀情况");
+            row5.createCell(6).setCellValue("移动梯扶手");
+            row5.createCell(7).setCellValue("万向轮功能");
+            row5.createCell(8).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseMovement movement = list.get(i);
+                TDevMovement tDevMovement = new TDevMovement();
+                tDevMovement.setDevNo(movement.getDevNo());
+                tDevMovement.setPosition(movement.getPosition());
+                List<TDevMovement> tDevMovements = tDevMovementService.selectTDevMovementList(tDevMovement);
+                if (CollectionUtils.isNotEmpty(tDevMovements) && tDevMovements.size() == 1) {
+                    TDevMovement devMovement = tDevMovements.get(0);
+                    planId = movement.getPlanId();
+                    XSSFRow row = sheet.createRow(5 + i);
+                    row.createCell(0).setCellValue(i + 1);
+                    row.createCell(1).setCellValue(movement.getDevNo());
+                    row.createCell(2).setCellValue(movement.getPosition());
+                    if (StringUtils.isNotEmpty(devMovement.getIgnoreColumn()) && devMovement.getIgnoreColumn().contains("corrosion")) {
+                        row.createCell(3).setCellValue("/");
+                    } else
+                        row.createCell(3).setCellValue("1".equals(movement.getAppearance()) ? "√" : movement.getAppearance());
+                    if (StringUtils.isNotEmpty(devMovement.getIgnoreColumn()) && devMovement.getIgnoreColumn().contains("appearance")) {
+                        row.createCell(4).setCellValue("/");
+                    } else
+                        row.createCell(4).setCellValue("1".equals(movement.getFootboard()) ? "√" : movement.getFootboard());
+                    if (StringUtils.isNotEmpty(devMovement.getIgnoreColumn()) && devMovement.getIgnoreColumn().contains("footboard")) {
+                        row.createCell(5).setCellValue("/");
+                    } else
+                        row.createCell(5).setCellValue("1".equals(movement.getCorrosion()) ? "√" : movement.getCorrosion());
+                    if (StringUtils.isNotEmpty(devMovement.getIgnoreColumn()) && devMovement.getIgnoreColumn().contains("handrail")) {
+                        row.createCell(6).setCellValue("/");
+                    } else
+                        row.createCell(6).setCellValue("1".equals(movement.getHandrail()) ? "√" : movement.getHandrail());
+                    if (StringUtils.isNotEmpty(devMovement.getIgnoreColumn()) && devMovement.getIgnoreColumn().contains("universalWheel")) {
+                        row.createCell(7).setCellValue("/");
+                    } else
+                        row.createCell(7).setCellValue("1".equals(movement.getUniversalWheel()) ? "√" : movement.getUniversalWheel());
+                    XSSFCell cell10 = row.createCell(8);
+                    if (StringUtils.isNotEmpty(movement.getUpdaterCode())) {
+                        SysUser sysUser = sysUserService.selectUserById(Long.valueOf(movement.getUpdaterCode()));
+                        cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                    }
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(3, 8, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 8));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 2, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            row29.createCell(3).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(4, 8, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 8));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 8, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 8, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 8, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每一年检查维护一次。");
+            ExcelUtils.createVoidCell(1, 8, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取移动平台及移动梯详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        TCommonuseMovement movement = tCommonuseMovementService.selectTCommonuseMovementById(id);
+        if (movement!=null) {
+            TDevMovement tDevMovement = new TDevMovement();
+            tDevMovement.setPrecision(movement.getDevNo());
+            tDevMovement.setPosition(movement.getPosition());
+            movement.setIgnoreColumn(tDevMovementService.selectTDevMovementList(tDevMovement).get(0).getIgnoreColumn());
+        }
+        return AjaxResult.success(movement);
+    }
+
+    /**
+     * 获取移动平台及移动梯详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseMovement tCommonuseMovement) {
+        if (StringUtils.isEmpty(tCommonuseMovement.getDevNo()) || StringUtils.isNull(tCommonuseMovement.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseMovement item = new TCommonuseMovement();
+        item.setPlanId(tCommonuseMovement.getPlanId());
+        item.setPrecision(tCommonuseMovement.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseMovement> list = tCommonuseMovementService.selectTCommonuseMovementList(item);
+        if (CollectionUtils.isNotEmpty(list)) {
+            TCommonuseMovement movement = list.get(0);
+            TDevMovement tDevMovement = new TDevMovement();
+            tDevMovement.setDevNo(movement.getDevNo());
+            tDevMovement.setPosition(movement.getPosition());
+            TDevMovement devMovement = tDevMovementService.selectTDevMovementList(tDevMovement).get(0);
+            movement.setIgnoreColumn(devMovement.getIgnoreColumn());
+            return AjaxResult.success(movement);
+        }
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:add')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseMovement tCommonuseMovement) {
+        return toAjax(tCommonuseMovementService.insertTCommonuseMovement(tCommonuseMovement));
+    }
+
+    /**
+     * 修改移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:edit')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseMovement tCommonuseMovement) {
+        tCommonuseMovement.setUpdatedate(new Date());
+        tCommonuseMovement.setUpdaterCode(getUserId().toString());
+        tCommonuseMovement.setCheckStatus("1");
+        tCommonuseMovement.setCheckDate(new Date());
+        TCommonuseMovement item = tCommonuseMovementService.selectTCommonuseMovementById(tCommonuseMovement.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseMovement.getPlanId());
+        if (tPatrolPlan.getStatus() == 1) {
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        TDevMovement tDevMovement = new TDevMovement();
+        tDevMovement.setDevNo(item.getDevNo());
+        tDevMovement.setPosition(item.getPosition());
+        List<TDevMovement> tDevMovements = tDevMovementService.selectTDevMovementList(tDevMovement);
+        if (CollectionUtils.isNotEmpty(tDevMovements) && tDevMovements.size() == 1) {
+            TDevMovement movement = tDevMovements.get(0);
+            if (StringUtils.isNotEmpty(movement.getIgnoreColumn()) && movement.getIgnoreColumn().contains("corrosion")) {
+                tCommonuseMovement.setCorrosion("/");
+            }
+            if (StringUtils.isNotEmpty(movement.getIgnoreColumn()) && movement.getIgnoreColumn().contains("appearance")) {
+                tCommonuseMovement.setAppearance("/");
+            }
+            if (StringUtils.isNotEmpty(movement.getIgnoreColumn()) && movement.getIgnoreColumn().contains("footboard")) {
+                tCommonuseMovement.setFootboard("/");
+            }
+            if (StringUtils.isNotEmpty(movement.getIgnoreColumn()) && movement.getIgnoreColumn().contains("handrail")) {
+                tCommonuseMovement.setHandrail("/");
+            }
+            if (StringUtils.isNotEmpty(movement.getIgnoreColumn()) && movement.getIgnoreColumn().contains("universalWheel")) {
+                tCommonuseMovement.setUniversalWheel("/");
+            }
+        }
+        if (StringUtils.isNotEquals(tCommonuseMovement.getCorrosion(), "1", "/") || StringUtils.isNotEquals(tCommonuseMovement.getAppearance(), "1", "/") ||
+                StringUtils.isNotEquals(tCommonuseMovement.getFootboard(), "1", "/") || StringUtils.isNotEquals(tCommonuseMovement.getHandrail(), "1", "/") ||
+                StringUtils.isNotEquals(tCommonuseMovement.getUniversalWheel(), "1", "/")) {
+            tCommonuseMovement.setIssuesStatus("1");
+            tCommonuseMovement.setCheckStatus("0");
+            tCommonuseMovementService.updateTCommonuseMovement(tCommonuseMovement);
+            tCommonuseMovement.setIssuesFlag("1");
+            tCommonuseMovement.setCheckStatus("1");
+            tCommonuseMovement.setCreatedate(new Date());
+            tCommonuseMovement.setCreaterCode(getUserId().toString());
+            tCommonuseMovement.setDevNo(item.getDevNo());
+            tCommonuseMovement.setPosition(item.getPosition());
+            tCommonuseMovementService.insertTCommonuseMovement(tCommonuseMovement);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("20");
+            tPatrolIssues.setDevDescribe(tCommonuseMovement.getDevNo() + " " + tCommonuseMovement.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseMovement.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("20");
+                tPatrolIssues.setDevDescribe(item.getDevNo()+" "+item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseMovement.setIssuesStatus("0");
+            tCommonuseMovementService.updateTCommonuseMovement(tCommonuseMovement);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:movement:remove')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseMovementService.deleteTCommonuseMovementByIds(ids));
+    }
+}

+ 360 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseSafetyBeltController.java

@@ -0,0 +1,360 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseSafetyBelt;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseSafetyBeltService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 安全带Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/safetyBelt")
+public class TCommonuseSafetyBeltController extends BaseController {
+    @Autowired
+    private ITCommonuseSafetyBeltService tCommonuseSafetyBeltService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询安全带列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseSafetyBelt tCommonuseSafetyBelt) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseSafetyBelt.getIssuesFlag()))
+            tCommonuseSafetyBelt.setIssuesFlag("0");
+        List<TCommonuseSafetyBelt> list = tCommonuseSafetyBeltService.selectTCommonuseSafetyBeltList(tCommonuseSafetyBelt);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出安全带列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:export')")
+    @Log(title = "安全带", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseSafetyBelt tCommonuseSafetyBelt) {
+        try {
+            tCommonuseSafetyBelt.setIssuesFlag("0");
+            List<TCommonuseSafetyBelt> list = tCommonuseSafetyBeltService.selectTCommonuseSafetyBeltList(tCommonuseSafetyBelt);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 4500);
+            sheet.setColumnWidth(6, 4500);
+            sheet.setColumnWidth(7, 4500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.27  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 7, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("安全带检查记录");
+            ExcelUtils.createVoidCell(1, 7, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseSafetyBelt.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 2));
+            ExcelUtils.createVoidCell(1, 7, row3);
+            row3.createCell(3).setCellValue("检查频率:1次/月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 7));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("位置");
+            row4.createCell(3).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 7, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 7));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            ExcelUtils.createVoidCell(0, 2, row5);
+            row5.createCell(3).setCellValue("安全带腰带、背带的外观,无破损、变色、发霉、断线");
+            row5.createCell(4).setCellValue("安全带扣件无松动,卡扣牢固可靠");
+            row5.createCell(5).setCellValue("安全带缓冲安全绳及保护套");
+            row5.createCell(6).setCellValue("编号准确,在有效期内");
+            row5.createCell(7).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseSafetyBelt belt = list.get(i);
+                planId = belt.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(belt.getDevNo());
+                row.createCell(2).setCellValue(belt.getPosition());
+                row.createCell(3).setCellValue("1".equals(belt.getNoDamage()) ? "√" : belt.getNoDamage());
+                row.createCell(4).setCellValue("1".equals(belt.getFastness()) ? "√" : belt.getFastness());
+                row.createCell(5).setCellValue("1".equals(belt.getProtectiveJacket()) ? "√" : belt.getProtectiveJacket());
+                row.createCell(6).setCellValue("1".equals(belt.getValidity()) ? "√" : belt.getValidity());
+                XSSFCell cell10 = row.createCell(7);
+                if (StringUtils.isNotEmpty(belt.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(belt.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(3, 7, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 7));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 2, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            row29.createCell(3).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(4, 7, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 7));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 4) {
+                    row.setHeightInPoints(70);
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 7, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 7, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 7, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每1个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 7, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取安全带详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseSafetyBeltService.selectTCommonuseSafetyBeltById(id));
+    }
+
+    /**
+     * 获取安全带详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseSafetyBelt tCommonuseSafetyBelt) {
+        if (StringUtils.isNull(tCommonuseSafetyBelt.getDevNo()) || StringUtils.isNull(tCommonuseSafetyBelt.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseSafetyBelt item = new TCommonuseSafetyBelt();
+        item.setPlanId(tCommonuseSafetyBelt.getPlanId());
+        item.setPrecision(tCommonuseSafetyBelt.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseSafetyBelt> list = tCommonuseSafetyBeltService.selectTCommonuseSafetyBeltList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增安全带
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:add')")
+    @Log(title = "安全带", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseSafetyBelt tCommonuseSafetyBelt) {
+        return toAjax(tCommonuseSafetyBeltService.insertTCommonuseSafetyBelt(tCommonuseSafetyBelt));
+    }
+
+    /**
+     * 修改安全带
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:edit')")
+    @Log(title = "安全带", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseSafetyBelt tCommonuseSafetyBelt) {
+        tCommonuseSafetyBelt.setUpdatedate(new Date());
+        tCommonuseSafetyBelt.setUpdaterCode(getUserId().toString());
+        tCommonuseSafetyBelt.setCheckStatus("1");
+        tCommonuseSafetyBelt.setCheckDate(new Date());
+        TCommonuseSafetyBelt item = tCommonuseSafetyBeltService.selectTCommonuseSafetyBeltById(tCommonuseSafetyBelt.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseSafetyBelt.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if (StringUtils.isNotEquals(tCommonuseSafetyBelt.getFastness(), "1")
+                || StringUtils.isNotEquals(tCommonuseSafetyBelt.getNoDamage(), "1")
+                || StringUtils.isNotEquals(tCommonuseSafetyBelt.getProtectiveJacket(), "1")
+                || StringUtils.isNotEquals(tCommonuseSafetyBelt.getValidity(), "1")) {
+            tCommonuseSafetyBelt.setIssuesStatus("1");
+            tCommonuseSafetyBelt.setCheckStatus("0");
+            tCommonuseSafetyBeltService.updateTCommonuseSafetyBelt(tCommonuseSafetyBelt);
+            tCommonuseSafetyBelt.setIssuesFlag("1");
+            tCommonuseSafetyBelt.setCheckStatus("1");
+            tCommonuseSafetyBelt.setCreatedate(new Date());
+            tCommonuseSafetyBelt.setCreaterCode(getUserId().toString());
+            tCommonuseSafetyBelt.setDevNo(item.getDevNo());
+            tCommonuseSafetyBelt.setPosition(item.getPosition());
+            tCommonuseSafetyBeltService.insertTCommonuseSafetyBelt(tCommonuseSafetyBelt);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("24");
+            tPatrolIssues.setDevDescribe(item.getDevNo()+" "+tCommonuseSafetyBelt.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseSafetyBelt.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("24");
+                tPatrolIssues.setDevDescribe(item.getDevNo()+" "+item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseSafetyBelt.setIssuesStatus("0");
+            tCommonuseSafetyBeltService.updateTCommonuseSafetyBelt(tCommonuseSafetyBelt);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除安全带
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:safetyBelt:remove')")
+    @Log(title = "安全带", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseSafetyBeltService.deleteTCommonuseSafetyBeltByIds(ids));
+    }
+}

+ 386 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseTesterController.java

@@ -0,0 +1,386 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseTester;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseTesterService;
+import com.ruoyi.project.patrol.dev.domain.TDevTester;
+import com.ruoyi.project.patrol.dev.service.ITDevTesterService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 检测仪检查记录Controller
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+@RestController
+@RequestMapping("/commonuse/tester")
+public class TCommonuseTesterController extends BaseController {
+    @Autowired
+    private ITCommonuseTesterService tCommonuseTesterService;
+    @Autowired
+    private ITDevTesterService tDevTesterService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询检测仪检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseTester tCommonuseTester) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseTester.getIssuesFlag()))
+            tCommonuseTester.setIssuesFlag("0");
+        List<TCommonuseTester> list = tCommonuseTesterService.selectTCommonuseTesterList(tCommonuseTester);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出检测仪检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:export')")
+    @Log(title = "检测仪检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseTester tCommonuseTester) {
+        try {
+            tCommonuseTester.setIssuesFlag("0");
+            List<TCommonuseTester> list = tCommonuseTesterService.selectTCommonuseTesterListToExcel(tCommonuseTester);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            XSSFSheet sheet = workbook.createSheet();// 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 4500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 3500);
+            sheet.setColumnWidth(4, 3500);
+            sheet.setColumnWidth(5, 4500);
+            sheet.setColumnWidth(6, 4500);
+            sheet.setColumnWidth(7, 3500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.21  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 7, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("四合一/苯系物/硫化氢/二氧化碳/射线检测仪检查记录");
+            ExcelUtils.createVoidCell(1, 7, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseTester.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 3));
+            ExcelUtils.createVoidCell(1, 7, row3);
+            row3.createCell(4).setCellValue("检查频率:1次/3月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 4, 7));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("检测仪类型");
+            row4.createCell(2).setCellValue("型号");
+            row4.createCell(3).setCellValue("编号");
+            row4.createCell(4).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(5, 7, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 4, 7));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 3, 3));
+            ExcelUtils.createVoidCell(0, 3, row5);
+            row5.createCell(4).setCellValue("检测仪外观及背夹完好度");
+            row5.createCell(5).setCellValue("检测仪显示屏及电量");
+            row5.createCell(6).setCellValue("检测仪有效期");
+            row5.createCell(7).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            int startRow = 5;
+            int endRow = 5;
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseTester tester = list.get(i);
+                planId = tester.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(tester.getTesterType());
+                row.createCell(2).setCellValue(tester.getTesterModel());
+                row.createCell(3).setCellValue(tester.getTesterNo());
+                row.createCell(4).setCellValue("1".equals(tester.getTesterBody()) ? "√" : tester.getTesterBody());
+                row.createCell(5).setCellValue("1".equals(tester.getTesterEnergy()) ? "√" : tester.getTesterEnergy());
+                row.createCell(6).setCellValue("1".equals(tester.getTesterSafeDate()) ? "√" : tester.getTesterSafeDate());
+                XSSFCell cell10 = row.createCell(7);
+                if (StringUtils.isNotEmpty(tester.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tester.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+                // 合并相同类型的单元格
+                if (i != 0) {
+                    if (tester.getTesterType().equals(list.get(i - 1).getTesterType())) {//当前行与上一行为同一类型时
+                        endRow++;
+                    } else {
+                        if (startRow != endRow) {//当前合并开始行和结束行不为同一行时,合并
+                            sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 1, 1));
+                        }
+                        startRow = ++endRow;// 开始行=结束行+1
+                    }
+                    if (i+1 == list.size()) {//最后一种类型
+                        if (startRow != endRow)
+                            sheet.addMergedRegion(new CellRangeAddress(startRow, endRow, 1, 1));
+                    }
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(3, 7, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 7));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 2, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            row29.createCell(3).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(4, 7, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 7));
+
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (!sheet.getSheetName().contains("事故柜1")) {
+                    if (row.getRowNum() == 4) {
+                        row.setHeightInPoints(80);
+                    }
+                }
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 8, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 8, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 8, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每3个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 8, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 8));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取检测仪检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseTesterService.selectTCommonuseTesterById(id));
+    }
+
+    /**
+     * 获取检测仪检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseTester tCommonuseTester) {
+        if (StringUtils.isNull(tCommonuseTester.getId()) || StringUtils.isNull(tCommonuseTester.getPlanId())) {
+            return AjaxResult.error("id或计划id不能为空!");
+        }
+        TDevTester tDevTester = tDevTesterService.selectTDevTesterById(tCommonuseTester.getId());
+        TCommonuseTester item = new TCommonuseTester();
+        item.setPlanId(tCommonuseTester.getPlanId());
+        item.setTesterNo(tDevTester.getTesterNo());
+        item.setTesterType(tDevTester.getTesterType());
+        item.setTesterModel(tDevTester.getTesterModel());
+        item.setIssuesFlag("0");
+        List<TCommonuseTester> list = tCommonuseTesterService.selectTCommonuseTesterList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增检测仪检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:add')")
+    @Log(title = "检测仪检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseTester tCommonuseTester) {
+        return toAjax(tCommonuseTesterService.insertTCommonuseTester(tCommonuseTester));
+    }
+
+    /**
+     * 修改检测仪检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:edit')")
+    @Log(title = "检测仪检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseTester tCommonuseTester) {
+        tCommonuseTester.setUpdatedate(new Date());
+        tCommonuseTester.setUpdaterCode(getUserId().toString());
+        tCommonuseTester.setCheckStatus("1");
+        tCommonuseTester.setCheckDate(new Date());
+        TCommonuseTester item = tCommonuseTesterService.selectTCommonuseTesterById(tCommonuseTester.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseTester.getPlanId());
+        if (tPatrolPlan.getStatus() == 1) {
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if ((StringUtils.isNotEmpty(tCommonuseTester.getTesterEnergy()) && !"1".equals(tCommonuseTester.getTesterEnergy())) ||
+                (StringUtils.isNotEmpty(tCommonuseTester.getTesterBody()) && !"1".equals(tCommonuseTester.getTesterBody())) ||
+                (StringUtils.isNotEmpty(tCommonuseTester.getTesterSafeDate()) && !"1".equals(tCommonuseTester.getTesterSafeDate()))) {
+            tCommonuseTester.setIssuesStatus("1");
+            tCommonuseTester.setCheckStatus("0");
+            tCommonuseTesterService.updateTCommonuseTester(tCommonuseTester);
+            tCommonuseTester.setIssuesFlag("1");
+            tCommonuseTester.setCheckStatus("1");
+            tCommonuseTester.setCreatedate(new Date());
+            tCommonuseTester.setCreaterCode(getUserId().toString());
+            tCommonuseTester.setTesterNo(item.getTesterNo());
+            tCommonuseTester.setTesterModel(item.getTesterModel());
+            tCommonuseTester.setTesterType(item.getTesterType());
+            tCommonuseTesterService.insertTCommonuseTester(tCommonuseTester);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("18");
+            tPatrolIssues.setDevDescribe(tCommonuseTester.getTesterType() + " " + tCommonuseTester.getTesterModel() + " " + tCommonuseTester.getTesterNo());
+            tPatrolIssues.setLinkId(tCommonuseTester.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("18");
+                tPatrolIssues.setDevDescribe(item.getTesterType() + " " + item.getTesterModel() + " " + item.getTesterNo());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseTester.setIssuesStatus("0");
+            tCommonuseTesterService.updateTCommonuseTester(tCommonuseTester);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除检测仪检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:tester:remove')")
+    @Log(title = "检测仪检查记录", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseTesterService.deleteTCommonuseTesterByIds(ids));
+    }
+}

+ 357 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseWalkieTalkieController.java

@@ -0,0 +1,357 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWalkieTalkie;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseWalkieTalkieService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 对讲机Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/walkitTalkie")
+public class TCommonuseWalkieTalkieController extends BaseController {
+    @Autowired
+    private ITCommonuseWalkieTalkieService tCommonuseWalkieTalkieService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询对讲机列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseWalkieTalkie tCommonuseWalkieTalkie) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseWalkieTalkie.getIssuesFlag()))
+            tCommonuseWalkieTalkie.setIssuesFlag("0");
+        List<TCommonuseWalkieTalkie> list = tCommonuseWalkieTalkieService.selectTCommonuseWalkieTalkieList(tCommonuseWalkieTalkie);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出对讲机列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:export')")
+    @Log(title = "对讲机", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseWalkieTalkie tCommonuseWalkieTalkie) {
+        try {
+            tCommonuseWalkieTalkie.setIssuesFlag("0");
+            List<TCommonuseWalkieTalkie> list = tCommonuseWalkieTalkieService.selectTCommonuseWalkieTalkieList(tCommonuseWalkieTalkie);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 5500);
+            sheet.setColumnWidth(6, 4500);
+            sheet.setColumnWidth(7, 4500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.26  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 7, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("对讲机检查记录");
+            ExcelUtils.createVoidCell(1, 7, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 7));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseWalkieTalkie.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 1));
+            ExcelUtils.createVoidCell(1, 7, row3);
+            row3.createCell(2).setCellValue("检查频率:1次/月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 2, 7));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 7, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 2, 7));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            ExcelUtils.createVoidCell(0, 2, row5);
+            row5.createCell(2).setCellValue("外观情况");
+            row5.createCell(3).setCellValue("编号标签");
+            row5.createCell(4).setCellValue("电池状况");
+            row5.createCell(5).setCellValue("显示屏状况");
+            row5.createCell(6).setCellValue("通话音质");
+            row5.createCell(7).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseWalkieTalkie talkie = list.get(i);
+                planId = talkie.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(talkie.getDevNo());
+                row.createCell(2).setCellValue("1".equals(talkie.getAppearance()) ? "√" : talkie.getAppearance());
+                row.createCell(3).setCellValue("1".equals(talkie.getNumberingLabel()) ? "√" : talkie.getNumberingLabel());
+                row.createCell(4).setCellValue("1".equals(talkie.getBatteryCondition()) ? "√" : talkie.getBatteryCondition());
+                row.createCell(5).setCellValue("1".equals(talkie.getDisplayScreen()) ? "√" : talkie.getDisplayScreen());
+                row.createCell(6).setCellValue("1".equals(talkie.getVoiceQuality()) ? "√" : talkie.getVoiceQuality());
+                XSSFCell cell10 = row.createCell(7);
+                if (StringUtils.isNotEmpty(talkie.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(talkie.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 1));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(2, 7, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 2, 7));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 1, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 1));
+            row29.createCell(2).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(3, 7, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 2, 7));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 7, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 7, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 7, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每一个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 7, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 7));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取对讲机详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseWalkieTalkieService.selectTCommonuseWalkieTalkieById(id));
+    }
+
+    /**
+     * 获取对讲机详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo( TCommonuseWalkieTalkie tCommonuseWalkieTalkie) {
+        if (StringUtils.isNull(tCommonuseWalkieTalkie.getDevNo()) || StringUtils.isNull(tCommonuseWalkieTalkie.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseWalkieTalkie item = new TCommonuseWalkieTalkie();
+        item.setPlanId(tCommonuseWalkieTalkie.getPlanId());
+        item.setPrecision(tCommonuseWalkieTalkie.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseWalkieTalkie> list = tCommonuseWalkieTalkieService.selectTCommonuseWalkieTalkieList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:add')")
+    @Log(title = "对讲机", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseWalkieTalkie tCommonuseWalkieTalkie) {
+        return toAjax(tCommonuseWalkieTalkieService.insertTCommonuseWalkieTalkie(tCommonuseWalkieTalkie));
+    }
+
+    /**
+     * 修改对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:edit')")
+    @Log(title = "对讲机", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseWalkieTalkie tCommonuseWalkieTalkie) {
+        tCommonuseWalkieTalkie.setUpdatedate(new Date());
+        tCommonuseWalkieTalkie.setUpdaterCode(getUserId().toString());
+        tCommonuseWalkieTalkie.setCheckStatus("1");
+        tCommonuseWalkieTalkie.setCheckDate(new Date());
+        TCommonuseWalkieTalkie item = tCommonuseWalkieTalkieService.selectTCommonuseWalkieTalkieById(tCommonuseWalkieTalkie.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseWalkieTalkie.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if (StringUtils.isNotEquals(tCommonuseWalkieTalkie.getAppearance(), "1")
+                || StringUtils.isNotEquals(tCommonuseWalkieTalkie.getBatteryCondition(), "1")
+                || StringUtils.isNotEquals(tCommonuseWalkieTalkie.getDisplayScreen(), "1")
+                || StringUtils.isNotEquals(tCommonuseWalkieTalkie.getVoiceQuality(), "1")
+                || StringUtils.isNotEquals(tCommonuseWalkieTalkie.getNumberingLabel(), "1")) {
+            tCommonuseWalkieTalkie.setIssuesStatus("1");
+            tCommonuseWalkieTalkie.setCheckStatus("0");
+            tCommonuseWalkieTalkieService.updateTCommonuseWalkieTalkie(tCommonuseWalkieTalkie);
+            tCommonuseWalkieTalkie.setIssuesFlag("1");
+            tCommonuseWalkieTalkie.setCheckStatus("1");
+            tCommonuseWalkieTalkie.setCreatedate(new Date());
+            tCommonuseWalkieTalkie.setCreaterCode(getUserId().toString());
+            tCommonuseWalkieTalkie.setDevNo(item.getDevNo());
+            tCommonuseWalkieTalkieService.insertTCommonuseWalkieTalkie(tCommonuseWalkieTalkie);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("23");
+            tPatrolIssues.setDevDescribe(tCommonuseWalkieTalkie.getDevNo());
+            tPatrolIssues.setLinkId(tCommonuseWalkieTalkie.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("23");
+                tPatrolIssues.setDevDescribe(item.getDevNo());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseWalkieTalkie.setIssuesStatus("0");
+            tCommonuseWalkieTalkieService.updateTCommonuseWalkieTalkie(tCommonuseWalkieTalkie);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:walkitTalkie:remove')")
+    @Log(title = "对讲机", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseWalkieTalkieService.deleteTCommonuseWalkieTalkieByIds(ids));
+    }
+}

+ 357 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/controller/TCommonuseWaterPumpController.java

@@ -0,0 +1,357 @@
+package com.ruoyi.project.patrol.commonuse.controller;
+
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.ExcelUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWaterPump;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseWaterPumpService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolIssues;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolPlan;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolIssuesService;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolPlanService;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 水泵接合器Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/commonuse/pump")
+public class TCommonuseWaterPumpController extends BaseController {
+    @Autowired
+    private ITCommonuseWaterPumpService tCommonuseWaterPumpService;
+
+    @Autowired
+    private ITPatrolPlanService tPatrolPlanService;
+
+    @Autowired
+    private ITPatrolIssuesService tPatrolIssuesService;
+
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询水泵接合器列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TCommonuseWaterPump tCommonuseWaterPump) {
+        startPage();
+        if (StringUtils.isEmpty(tCommonuseWaterPump.getIssuesFlag()))
+            tCommonuseWaterPump.setIssuesFlag("0");
+        List<TCommonuseWaterPump> list = tCommonuseWaterPumpService.selectTCommonuseWaterPumpList(tCommonuseWaterPump);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出水泵接合器列表
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:export')")
+    @Log(title = "水泵接合器", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TCommonuseWaterPump tCommonuseWaterPump) {
+        try {
+            tCommonuseWaterPump.setIssuesFlag("0");
+            List<TCommonuseWaterPump> list = tCommonuseWaterPumpService.selectTCommonuseWaterPumpList(tCommonuseWaterPump);
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            // 创建工作簿
+            XSSFSheet sheet = workbook.createSheet();
+            // 设置列宽
+            sheet.setColumnWidth(0, 1200);
+            sheet.setColumnWidth(1, 3500);
+            sheet.setColumnWidth(2, 3500);
+            sheet.setColumnWidth(3, 4500);
+            sheet.setColumnWidth(4, 4500);
+            sheet.setColumnWidth(5, 4500);
+            sheet.setColumnWidth(6, 4500);
+            //第一行
+            XSSFRow row1 = sheet.createRow(0);
+            row1.createCell(0).setCellValue("CBP-6.3.0-SCFSH-020.29  Rev:04  2021/10/01");
+            ExcelUtils.createVoidCell(1, 6, row1);
+            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));//合并
+            //第二行
+            XSSFRow row2 = sheet.createRow(1);
+            row2.createCell(0).setCellValue("水泵接合器检查记录");
+            ExcelUtils.createVoidCell(1, 6, row2);
+            sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 6));
+            //第三行
+            XSSFRow row3 = sheet.createRow(2);
+            row3.createCell(0).setCellValue("年度:" + tCommonuseWaterPump.getYear());
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 0, 2));
+            ExcelUtils.createVoidCell(1, 6, row3);
+            row3.createCell(3).setCellValue("检查频率:1次/3月");
+            sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, 6));
+            //第四行
+            XSSFRow row4 = sheet.createRow(3);
+            row4.createCell(0).setCellValue("序号");
+            row4.createCell(1).setCellValue("位号");
+            row4.createCell(2).setCellValue("位置");
+            row4.createCell(3).setCellValue("检查内容");
+            ExcelUtils.createVoidCell(4, 6, row4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 3, 3, 6));
+            //第五行
+            XSSFRow row5 = sheet.createRow(4);
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 0));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 1, 1));
+            sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 2));
+            ExcelUtils.createVoidCell(0, 2, row5);
+            row5.createCell(3).setCellValue("接合器外观");
+            row5.createCell(4).setCellValue("接合器编号标识");
+            row5.createCell(5).setCellValue("接合器闷盖及接口");
+            row5.createCell(6).setCellValue("检查人");
+            Long planId = null;
+            //遍历数组赋值
+            for (int i = 0; i < list.size(); i++) {
+                TCommonuseWaterPump pump = list.get(i);
+                planId = pump.getPlanId();
+                XSSFRow row = sheet.createRow(5 + i);
+                row.createCell(0).setCellValue(i + 1);
+                row.createCell(1).setCellValue(pump.getDevNo());
+                row.createCell(2).setCellValue(pump.getPosition());
+                row.createCell(3).setCellValue("1".equals(pump.getAppearance()) ? "√" : pump.getAppearance());
+                row.createCell(4).setCellValue("1".equals(pump.getNumberingIdentification()) ? "√" : pump.getNumberingIdentification());
+                row.createCell(5).setCellValue("1".equals(pump.getCoverInterface()) ? "√" : pump.getCoverInterface());
+                XSSFCell cell10 = row.createCell(6);
+                if (StringUtils.isNotEmpty(pump.getUpdaterCode())) {
+                    SysUser sysUser = sysUserService.selectUserById(Long.valueOf(pump.getUpdaterCode()));
+                    cell10.setCellValue(sysUser == null ? "" : sysUser.getNickName());
+                }
+            }
+            String confirmed = "";
+            Date confirmedDate = null;
+            TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(planId);
+            if (Objects.nonNull(tPatrolPlan) && Objects.nonNull(tPatrolPlan.getConfirmed())) {
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tPatrolPlan.getConfirmed()));
+                confirmed = sysUser.getSignUrl();
+                confirmedDate = tPatrolPlan.getConfirmDate();
+            }
+            // 循环后下一行
+            int nextRowNum = 5 + list.size();
+            XSSFRow row28 = sheet.createRow(nextRowNum);
+            row28.setHeightInPoints(30);
+            XSSFCell row28Cell1 = row28.createCell(0);
+            row28Cell1.setCellValue("签名");
+            ExcelUtils.createVoidCell(1, 2, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            if (StringUtils.isNotEmpty(confirmed))
+                ExcelUtils.insertPicture(workbook, sheet, confirmed, nextRowNum, 5, 1, 1);
+            ExcelUtils.createVoidCell(3, 6, row28);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 6));
+            // 下一行
+            nextRowNum++;
+            XSSFRow row29 = sheet.createRow(nextRowNum);
+            row29.setHeightInPoints(30);
+            XSSFCell row29Cell1 = row29.createCell(0);
+            row29Cell1.setCellValue("日期");
+            ExcelUtils.createVoidCell(1, 2, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 2));
+            row29.createCell(3).setCellValue(confirmedDate != null ? new SimpleDateFormat("yyyy-MM-dd").format(confirmedDate) : "");
+            ExcelUtils.createVoidCell(4, 6, row29);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 3, 6));
+            // 设置单元格样式
+            // 文字居中,自动换行,四周边框
+            CellStyle style = workbook.createCellStyle();
+            style.setAlignment(HorizontalAlignment.CENTER);
+            style.setVerticalAlignment(VerticalAlignment.CENTER);
+            style.setWrapText(true);
+            style.setBorderTop(BorderStyle.THIN);
+            style.setBorderBottom(BorderStyle.THIN);
+            style.setBorderLeft(BorderStyle.THIN);
+            style.setBorderRight(BorderStyle.THIN);
+
+            // 设置垂直居中,四周边框
+            CellStyle style2 = workbook.createCellStyle();
+            style2.setVerticalAlignment(VerticalAlignment.CENTER);
+            style2.setBorderTop(BorderStyle.THIN);
+            style2.setBorderBottom(BorderStyle.THIN);
+            style2.setBorderLeft(BorderStyle.THIN);
+            style2.setBorderRight(BorderStyle.THIN);
+            for (Row row : sheet) {
+                row.setHeightInPoints(30);
+                if (row.getRowNum() == 0) {
+                    continue;
+                }
+                if (row.getRowNum() == 4) {
+                    row.setHeightInPoints(70);
+                }
+                if (row.getRowNum() == 2) {
+                    for (Cell cell : row) {
+                        if (cell.getColumnIndex() == 0 || cell.getColumnIndex() == 1 || cell.getColumnIndex() == 2)
+                            cell.setCellStyle(style2);
+                        else
+                            cell.setCellStyle(style);
+                    }
+                } else {
+                    for (Cell cell : row) {
+                        cell.setCellStyle(style);
+                    }
+                }
+            }
+            nextRowNum++;
+            XSSFRow row30 = sheet.createRow(nextRowNum);
+            row30.createCell(0).setCellValue("说明:");
+            ExcelUtils.createVoidCell(1, 6, row30);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row31 = sheet.createRow(nextRowNum);
+            row31.createCell(0).setCellValue("1.检查正常打“√”。");
+            ExcelUtils.createVoidCell(1, 6, row31);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row32 = sheet.createRow(nextRowNum);
+            row32.createCell(0).setCellValue("2.检查有不正常情况打“X”,并记录存在问题,处理结果及完成时间。");
+            ExcelUtils.createVoidCell(1, 6, row32);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            nextRowNum++;
+            XSSFRow row33 = sheet.createRow(nextRowNum);
+            row33.createCell(0).setCellValue("3. 检查频率为每3个月检查维护一次。");
+            ExcelUtils.createVoidCell(1, 6, row33);
+            sheet.addMergedRegion(new CellRangeAddress(nextRowNum, nextRowNum, 0, 6));
+
+            //返回
+            String fileName = ExcelUtil.encodingFilename("main");
+            OutputStream os = Files.newOutputStream(Paths.get(ExcelUtil.getAbsoluteFile(fileName)));
+            workbook.write(os);
+            workbook.close();
+            return AjaxResult.success(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * 获取水泵接合器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tCommonuseWaterPumpService.selectTCommonuseWaterPumpById(id));
+    }
+
+    /**
+     * 获取水泵接合器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:query')")
+    @GetMapping(value = "/info")
+    public AjaxResult getInfo(TCommonuseWaterPump tCommonuseWaterPump) {
+        if (StringUtils.isNull(tCommonuseWaterPump.getDevNo()) || StringUtils.isNull(tCommonuseWaterPump.getPlanId())) {
+            return AjaxResult.error("位号或计划id不能为空!");
+        }
+        TCommonuseWaterPump item = new TCommonuseWaterPump();
+        item.setPlanId(tCommonuseWaterPump.getPlanId());
+        item.setPrecision(tCommonuseWaterPump.getDevNo());
+        item.setIssuesFlag("0");
+        List<TCommonuseWaterPump> list = tCommonuseWaterPumpService.selectTCommonuseWaterPumpList(item);
+        if (CollectionUtils.isNotEmpty(list))
+            return AjaxResult.success(list.get(0));
+        return AjaxResult.error("此设备不在当前巡检计划中!");
+    }
+
+    /**
+     * 新增水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:add')")
+    @Log(title = "水泵接合器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TCommonuseWaterPump tCommonuseWaterPump) {
+        return toAjax(tCommonuseWaterPumpService.insertTCommonuseWaterPump(tCommonuseWaterPump));
+    }
+
+    /**
+     * 修改水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:edit')")
+    @Log(title = "水泵接合器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TCommonuseWaterPump tCommonuseWaterPump) {
+        tCommonuseWaterPump.setUpdatedate(new Date());
+        tCommonuseWaterPump.setUpdaterCode(getUserId().toString());
+        tCommonuseWaterPump.setCheckStatus("1");
+        tCommonuseWaterPump.setCheckDate(new Date());
+        TCommonuseWaterPump item = tCommonuseWaterPumpService.selectTCommonuseWaterPumpById(tCommonuseWaterPump.getId());
+        TPatrolPlan tPatrolPlan = tPatrolPlanService.selectTPatrolPlanById(tCommonuseWaterPump.getPlanId());
+        if (tPatrolPlan.getStatus()==1){
+            return AjaxResult.error("当前选择的计划已确认!");
+        }
+        if (!"1".equals(item.getCheckStatus())) {
+            tPatrolPlan.setUncheckedNum(tPatrolPlan.getUncheckedNum() - 1);
+            tPatrolPlan.setCheckedNum(tPatrolPlan.getCheckedNum() + 1);
+            tPatrolPlanService.updateTPatrolPlan(tPatrolPlan);
+        }
+        if (StringUtils.isNotEquals(tCommonuseWaterPump.getAppearance(), "1")
+                || StringUtils.isNotEquals(tCommonuseWaterPump.getCoverInterface(), "1")
+                || StringUtils.isNotEquals(tCommonuseWaterPump.getNumberingIdentification(), "1")) {
+            tCommonuseWaterPump.setIssuesStatus("1");
+            tCommonuseWaterPump.setCheckStatus("0");
+            tCommonuseWaterPumpService.updateTCommonuseWaterPump(tCommonuseWaterPump);
+            tCommonuseWaterPump.setIssuesFlag("1");
+            tCommonuseWaterPump.setCheckStatus("1");
+            tCommonuseWaterPump.setCreatedate(new Date());
+            tCommonuseWaterPump.setCreaterCode(getUserId().toString());
+            tCommonuseWaterPump.setDevNo(item.getDevNo());
+            tCommonuseWaterPump.setPosition(item.getPosition());
+            tCommonuseWaterPumpService.insertTCommonuseWaterPump(tCommonuseWaterPump);
+            TPatrolIssues tPatrolIssues = new TPatrolIssues();
+            tPatrolIssues.setPatrolType("26");
+            tPatrolIssues.setDevDescribe(item.getDevNo() + " " + tCommonuseWaterPump.getPosition());
+            tPatrolIssues.setLinkId(tCommonuseWaterPump.getId());
+            tPatrolIssues.setStatus(0L);
+            tPatrolIssuesService.insertTPatrolIssues(tPatrolIssues);
+        } else {
+            if ("1".equals(item.getIssuesStatus())) {
+                TPatrolIssues tPatrolIssues = new TPatrolIssues();
+                tPatrolIssues.setPatrolType("26");
+                tPatrolIssues.setDevDescribe(item.getDevNo()+" "+item.getPosition());
+                tPatrolIssues.setCreatedate(new Date());
+                for (TPatrolIssues patrolIssues : tPatrolIssuesService.selectTPatrolIssuesList(tPatrolIssues)) {
+                    patrolIssues.setStatus(1L);
+                    tPatrolIssuesService.updateTPatrolIssues(patrolIssues);
+                }
+            }
+            tCommonuseWaterPump.setIssuesStatus("0");
+            tCommonuseWaterPumpService.updateTCommonuseWaterPump(tCommonuseWaterPump);
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('commonuse:pump:remove')")
+    @Log(title = "水泵接合器", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tCommonuseWaterPumpService.deleteTCommonuseWaterPumpByIds(ids));
+    }
+}

+ 575 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseBicycle.java

@@ -0,0 +1,575 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 自行车对象 t_commonuse_bicycle
+ *
+ * @author admin
+ * @date 2023-11-09
+ */
+public class TCommonuseBicycle extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseBicycle() {
+    }
+
+    public TCommonuseBicycle(String devNo, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 自行车编号
+     */
+    @Excel(name = "自行车编号")
+    private String devNo;
+
+    /**
+     * 外观检查完好
+     */
+    @Excel(name = "外观检查完好")
+    private String appearance;
+
+    /**
+     * 前后轮车胎气压正常
+     */
+    @Excel(name = "前后轮车胎气压正常")
+    private String normobaria;
+
+    /**
+     * 脚蹬无破损
+     */
+    @Excel(name = "脚蹬无破损")
+    private String pedalCondition;
+
+    /**
+     * 前后手刹完好,功能正常
+     */
+    @Excel(name = "前后手刹完好,功能正常")
+    private String handbrakeIntact;
+
+    /**
+     * 车铃铛完好,能正常使用
+     */
+    @Excel(name = "车铃铛完好,能正常使用")
+    private String bellIntact;
+
+    /**
+     * 自行车链条完好
+     */
+    @Excel(name = "自行车链条完好")
+    private String hingeIntact;
+
+    /**
+     * 反光贴正常
+     */
+    @Excel(name = "反光贴正常")
+    private String normalReflector;
+
+    /**
+     * 自行车支架完好
+     */
+    @Excel(name = "自行车支架完好")
+    private String supportIntact;
+
+    /**
+     * 车坐垫完好,无损坏
+     */
+    @Excel(name = "车坐垫完好,无损坏")
+    private String cushionIntact;
+
+    /**
+     * 前后轮挡泥板完好
+     */
+    @Excel(name = "前后轮挡泥板完好")
+    private String fenderIntact;
+
+    /**
+     * 前后轮车辐条完好
+     */
+    @Excel(name = "前后轮车辐条完好")
+    private String spokeStripIntact;
+
+    /**
+     * 前后轮钢圈完好
+     */
+    @Excel(name = "前后轮钢圈完好")
+    private String steelRingIntact;
+
+    /**
+     * 车锁完好,功能正常
+     */
+    @Excel(name = "车锁完好,功能正常")
+    private String lockIntact;
+
+    /**
+     * 自行车编号清晰,无污损
+     */
+    @Excel(name = "自行车编号清晰,无污损")
+    private String clearlyNumbered;
+
+    /**
+     * 自行车后座支架完好,无松动
+     */
+    @Excel(name = "自行车后座支架完好,无松动")
+    private String supportNoLoose;
+
+    /**
+     * 检查状态
+     */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /**
+     * 检查时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /**
+     * 确认人
+     */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /**
+     * 修改人
+     */
+    @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 month;
+
+    /**
+     * 年度
+     */
+    @Excel(name = "年度")
+    private Long year;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /**
+     * 删除标识0未删除
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人")
+    private String createrCode;
+
+    /**
+     * 部门编号
+     */
+    @Excel(name = "部门编号")
+    private Long deptId;
+
+    /**
+     * 计划id
+     */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /**
+     * 问题文件地址
+     */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /**
+     * 文件地址
+     */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /**
+     * 检测是否有问题(1:是,0:否)
+     */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /**
+     * 是否为问题记录数据
+     */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /**
+     * 问题修复附件
+     */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setDevNo(String devNo) {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo() {
+        return devNo;
+    }
+
+    public void setAppearance(String appearance) {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance() {
+        return appearance;
+    }
+
+    public void setNormobaria(String normobaria) {
+        this.normobaria = normobaria;
+    }
+
+    public String getNormobaria() {
+        return normobaria;
+    }
+
+    public void setPedalCondition(String pedalCondition) {
+        this.pedalCondition = pedalCondition;
+    }
+
+    public String getPedalCondition() {
+        return pedalCondition;
+    }
+
+    public void setHandbrakeIntact(String handbrakeIntact) {
+        this.handbrakeIntact = handbrakeIntact;
+    }
+
+    public String getHandbrakeIntact() {
+        return handbrakeIntact;
+    }
+
+    public void setBellIntact(String bellIntact) {
+        this.bellIntact = bellIntact;
+    }
+
+    public String getBellIntact() {
+        return bellIntact;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckDate(Date checkDate) {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate() {
+        return checkDate;
+    }
+
+    public void setConfirmed(String confirmed) {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed() {
+        return confirmed;
+    }
+
+    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 setMonth(Long month) {
+        this.month = month;
+    }
+
+    public Long getMonth() {
+        return month;
+    }
+
+    public void setYear(Long year) {
+        this.year = year;
+    }
+
+    public Long getYear() {
+        return year;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setCreatedate(Date createdate) {
+        this.createdate = createdate;
+    }
+
+    public Date getCreatedate() {
+        return createdate;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setCreaterCode(String createrCode) {
+        this.createrCode = createrCode;
+    }
+
+    public String getCreaterCode() {
+        return createrCode;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    public void setPlanId(Long planId) {
+        this.planId = planId;
+    }
+
+    public Long getPlanId() {
+        return planId;
+    }
+
+    public void setProblemFileUrl(String problemFileUrl) {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl() {
+        return problemFileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setIssuesStatus(String issuesStatus) {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus() {
+        return issuesStatus;
+    }
+
+    public void setIssuesFlag(String issuesFlag) {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag() {
+        return issuesFlag;
+    }
+
+    public void setRepairFile(String repairFile) {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile() {
+        return repairFile;
+    }
+
+    public void setHingeIntact(String hingeIntact) {
+        this.hingeIntact = hingeIntact;
+    }
+
+    public String getHingeIntact() {
+        return hingeIntact;
+    }
+
+    public void setNormalReflector(String normalReflector) {
+        this.normalReflector = normalReflector;
+    }
+
+    public String getNormalReflector() {
+        return normalReflector;
+    }
+
+    public void setSupportIntact(String supportIntact) {
+        this.supportIntact = supportIntact;
+    }
+
+    public String getSupportIntact() {
+        return supportIntact;
+    }
+
+    public void setCushionIntact(String cushionIntact) {
+        this.cushionIntact = cushionIntact;
+    }
+
+    public String getCushionIntact() {
+        return cushionIntact;
+    }
+
+    public void setFenderIntact(String fenderIntact) {
+        this.fenderIntact = fenderIntact;
+    }
+
+    public String getFenderIntact() {
+        return fenderIntact;
+    }
+
+    public void setSpokeStripIntact(String spokeStripIntact) {
+        this.spokeStripIntact = spokeStripIntact;
+    }
+
+    public String getSpokeStripIntact() {
+        return spokeStripIntact;
+    }
+
+    public void setSteelRingIntact(String steelRingIntact) {
+        this.steelRingIntact = steelRingIntact;
+    }
+
+    public String getSteelRingIntact() {
+        return steelRingIntact;
+    }
+
+    public void setLockIntact(String lockIntact) {
+        this.lockIntact = lockIntact;
+    }
+
+    public String getLockIntact() {
+        return lockIntact;
+    }
+
+    public void setClearlyNumbered(String clearlyNumbered) {
+        this.clearlyNumbered = clearlyNumbered;
+    }
+
+    public String getClearlyNumbered() {
+        return clearlyNumbered;
+    }
+
+    public void setSupportNoLoose(String supportNoLoose) {
+        this.supportNoLoose = supportNoLoose;
+    }
+
+    public String getSupportNoLoose() {
+        return supportNoLoose;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("devNo", getDevNo())
+                .append("appearance", getAppearance())
+                .append("normobaria", getNormobaria())
+                .append("pedalCondition", getPedalCondition())
+                .append("handbrakeIntact", getHandbrakeIntact())
+                .append("bellIntact", getBellIntact())
+                .append("checkStatus", getCheckStatus())
+                .append("checkDate", getCheckDate())
+                .append("confirmed", getConfirmed())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("month", getMonth())
+                .append("year", getYear())
+                .append("remarks", getRemarks())
+                .append("createdate", getCreatedate())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("deptId", getDeptId())
+                .append("planId", getPlanId())
+                .append("problemFileUrl", getProblemFileUrl())
+                .append("fileUrl", getFileUrl())
+                .append("issuesStatus", getIssuesStatus())
+                .append("issuesFlag", getIssuesFlag())
+                .append("repairFile", getRepairFile())
+                .append("hingeIntact", getHingeIntact())
+                .append("normalReflector", getNormalReflector())
+                .append("supportIntact", getSupportIntact())
+                .append("cushionIntact", getCushionIntact())
+                .append("fenderIntact", getFenderIntact())
+                .append("spokeStripIntact", getSpokeStripIntact())
+                .append("steelRingIntact", getSteelRingIntact())
+                .append("lockIntact", getLockIntact())
+                .append("clearlyNumbered", getClearlyNumbered())
+                .append("supportNoLoose", getSupportNoLoose())
+                .toString();
+    }
+}

+ 374 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseDownspout.java

@@ -0,0 +1,374 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 落水管对象 t_commonuse_downspout
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseDownspout extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseDownspout() {
+    }
+
+    public TCommonuseDownspout( String position, Long month, Long year, Long planId, String createrCode) {
+
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+    /** ID */
+    private Long id;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 落水管外观 */
+    @Excel(name = "落水管外观")
+    private String appearance;
+
+    /** 管道是否破损 */
+    @Excel(name = "管道是否破损")
+    private String damaged;
+
+    /** 紧固件是否松动 */
+    @Excel(name = "紧固件是否松动")
+    private String becomeFlexible;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setAppearance(String appearance)
+    {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance()
+    {
+        return appearance;
+    }
+    public void setDamaged(String damaged)
+    {
+        this.damaged = damaged;
+    }
+
+    public String getDamaged()
+    {
+        return damaged;
+    }
+    public void setBecomeFlexible(String becomeFlexible)
+    {
+        this.becomeFlexible = becomeFlexible;
+    }
+
+    public String getBecomeFlexible()
+    {
+        return becomeFlexible;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("position", getPosition())
+            .append("appearance", getAppearance())
+            .append("damaged", getDamaged())
+            .append("becomeFlexible", getBecomeFlexible())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 412 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseEarplug.java

@@ -0,0 +1,412 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 耳塞分配器检查记录对象 t_commonuse_earplug
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseEarplug extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    public TCommonuseEarplug() {
+    }
+
+    public TCommonuseEarplug(String devNo, String position, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 位号
+     */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /**
+     * 位置
+     */
+    @Excel(name = "位置")
+    private String position;
+
+    /**
+     * 外观情况
+     */
+    @Excel(name = "外观情况")
+    private String appearance;
+
+    /**
+     * 标识清晰度
+     */
+    @Excel(name = "标识清晰度")
+    private String identificationClarity;
+
+    /**
+     * 耳塞内分配器数量是否充足
+     */
+    @Excel(name = "耳塞内分配器数量是否充足")
+    private String adequacyOrNot;
+
+    /**
+     * 确认人
+     */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 检查状态
+     */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /**
+     * 检查时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /**
+     * 月度
+     */
+    @Excel(name = "月度")
+    private Long month;
+
+    /**
+     * 年度
+     */
+    @Excel(name = "年度")
+    private Long year;
+
+    /**
+     * 删除标识0未删除
+     */
+    private Long 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;
+
+    /**
+     * 计划id
+     */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /**
+     * 问题文件地址
+     */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /**
+     * 文件地址
+     */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /**
+     * 检测是否有问题(1:是,0:否)
+     */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /**
+     * 是否为问题记录数据
+     */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /**
+     * 问题修复附件
+     */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setDevNo(String devNo) {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo() {
+        return devNo;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setAppearance(String appearance) {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance() {
+        return appearance;
+    }
+
+    public void setIdentificationClarity(String identificationClarity) {
+        this.identificationClarity = identificationClarity;
+    }
+
+    public String getIdentificationClarity() {
+        return identificationClarity;
+    }
+
+    public void setAdequacyOrNot(String adequacyOrNot) {
+        this.adequacyOrNot = adequacyOrNot;
+    }
+
+    public String getAdequacyOrNot() {
+        return adequacyOrNot;
+    }
+
+    public void setConfirmed(String confirmed) {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed() {
+        return confirmed;
+    }
+
+    public void setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setCheckStatus(String checkStatus) {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus() {
+        return checkStatus;
+    }
+
+    public void setCheckDate(Date checkDate) {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate() {
+        return checkDate;
+    }
+
+    public void setMonth(Long month) {
+        this.month = month;
+    }
+
+    public Long getMonth() {
+        return month;
+    }
+
+    public void setYear(Long year) {
+        this.year = year;
+    }
+
+    public Long getYear() {
+        return year;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId) {
+        this.planId = planId;
+    }
+
+    public Long getPlanId() {
+        return planId;
+    }
+
+    public void setProblemFileUrl(String problemFileUrl) {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl() {
+        return problemFileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setIssuesStatus(String issuesStatus) {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus() {
+        return issuesStatus;
+    }
+
+    public void setIssuesFlag(String issuesFlag) {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag() {
+        return issuesFlag;
+    }
+
+    public void setRepairFile(String repairFile) {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile() {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("devNo", getDevNo())
+                .append("position", getPosition())
+                .append("appearance", getAppearance())
+                .append("identificationClarity", getIdentificationClarity())
+                .append("adequacyOrNot", getAdequacyOrNot())
+                .append("confirmed", getConfirmed())
+                .append("remarks", getRemarks())
+                .append("checkStatus", getCheckStatus())
+                .append("checkDate", getCheckDate())
+                .append("month", getMonth())
+                .append("year", getYear())
+                .append("delFlag", getDelFlag())
+                .append("createrCode", getCreaterCode())
+                .append("createdate", getCreatedate())
+                .append("updaterCode", getUpdaterCode())
+                .append("updatedate", getUpdatedate())
+                .append("deptId", getDeptId())
+                .append("planId", getPlanId())
+                .append("problemFileUrl", getProblemFileUrl())
+                .append("fileUrl", getFileUrl())
+                .append("issuesStatus", getIssuesStatus())
+                .append("issuesFlag", getIssuesFlag())
+                .append("repairFile", getRepairFile())
+                .toString();
+    }
+}

+ 376 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseManholeCover.java

@@ -0,0 +1,376 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 地井盖对象 t_commonuse_manhole_cover
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseManholeCover extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+
+    public TCommonuseManholeCover() {
+    }
+
+    public TCommonuseManholeCover(String devNo, String position, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 地井盖是否缺失 */
+    @Excel(name = "地井盖是否缺失")
+    private String deficiency;
+
+    /** 地井盖外观 */
+    @Excel(name = "地井盖外观")
+    private String appearance;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDeficiency(String deficiency)
+    {
+        this.deficiency = deficiency;
+    }
+
+    public String getDeficiency()
+    {
+        return deficiency;
+    }
+    public void setAppearance(String appearance)
+    {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance()
+    {
+        return appearance;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("deficiency", getDeficiency())
+            .append("appearance", getAppearance())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 428 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseMovement.java

@@ -0,0 +1,428 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 移动平台及移动梯对象 t_commonuse_movement
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseMovement extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseMovement() {
+    }
+
+    public TCommonuseMovement(String devNo, String position, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 外观情况 */
+    @Excel(name = "外观情况")
+    private String appearance;
+
+    /** 踏板情况 */
+    @Excel(name = "踏板情况")
+    private String footboard;
+
+    /** 锈蚀情况 */
+    @Excel(name = "锈蚀情况")
+    private String corrosion;
+
+    /** 移动梯扶手 */
+    @Excel(name = "移动梯扶手")
+    private String handrail;
+
+    /** 万向轮功能 */
+    @Excel(name = "万向轮功能")
+    private String universalWheel;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    /** 免检项 */
+    private String ignoreColumn;
+
+    public String getIgnoreColumn() {
+        return ignoreColumn;
+    }
+
+    public void setIgnoreColumn(String ignoreColumn) {
+        this.ignoreColumn = ignoreColumn;
+    }
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setAppearance(String appearance)
+    {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance()
+    {
+        return appearance;
+    }
+    public void setFootboard(String footboard)
+    {
+        this.footboard = footboard;
+    }
+
+    public String getFootboard()
+    {
+        return footboard;
+    }
+    public void setCorrosion(String corrosion)
+    {
+        this.corrosion = corrosion;
+    }
+
+    public String getCorrosion()
+    {
+        return corrosion;
+    }
+    public void setHandrail(String handrail)
+    {
+        this.handrail = handrail;
+    }
+
+    public String getHandrail()
+    {
+        return handrail;
+    }
+    public void setUniversalWheel(String universalWheel)
+    {
+        this.universalWheel = universalWheel;
+    }
+
+    public String getUniversalWheel()
+    {
+        return universalWheel;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("appearance", getAppearance())
+            .append("footboard", getFootboard())
+            .append("corrosion", getCorrosion())
+            .append("handrail", getHandrail())
+            .append("universalWheel", getUniversalWheel())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 402 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseSafetyBelt.java

@@ -0,0 +1,402 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 安全带对象 t_commonuse_safety_belt
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseSafetyBelt extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseSafetyBelt() {
+    }
+
+    public TCommonuseSafetyBelt(String devNo, String position, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 安全带腰带、背带的外观,无破损、变色、发霉、断线 */
+    @Excel(name = "安全带腰带、背带的外观,无破损、变色、发霉、断线")
+    private String noDamage;
+
+    /** 安全带扣件无松动,卡扣牢固可靠 */
+    @Excel(name = "安全带扣件无松动,卡扣牢固可靠")
+    private String fastness;
+
+    /** 安全带缓冲安全绳及保护套 */
+    @Excel(name = "安全带缓冲安全绳及保护套")
+    private String protectiveJacket;
+
+    /** 编号准确,在有效期内 */
+    @Excel(name = "编号准确,在有效期内")
+    private String validity;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setNoDamage(String noDamage)
+    {
+        this.noDamage = noDamage;
+    }
+
+    public String getNoDamage()
+    {
+        return noDamage;
+    }
+    public void setFastness(String fastness)
+    {
+        this.fastness = fastness;
+    }
+
+    public String getFastness()
+    {
+        return fastness;
+    }
+    public void setProtectiveJacket(String protectiveJacket)
+    {
+        this.protectiveJacket = protectiveJacket;
+    }
+
+    public String getProtectiveJacket()
+    {
+        return protectiveJacket;
+    }
+    public void setValidity(String validity)
+    {
+        this.validity = validity;
+    }
+
+    public String getValidity()
+    {
+        return validity;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("noDamage", getNoDamage())
+            .append("fastness", getFastness())
+            .append("protectiveJacket", getProtectiveJacket())
+            .append("validity", getValidity())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 395 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseTester.java

@@ -0,0 +1,395 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 检测仪检查记录对象 t_commonuse_tester
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+public class TCommonuseTester extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+
+    public TCommonuseTester() {
+    }
+
+    public TCommonuseTester(String testerType,String testerModel,String testerNo,  Long month, Long year, Long planId,String createrCode) {
+        this.testerType = testerType;
+        this.testerModel = testerModel;
+        this.testerNo = testerNo;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+
+    /** ID */
+    private Long id;
+
+    /** 检测仪类型 */
+    @Excel(name = "检测仪类型")
+    private String testerType;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String testerModel;
+
+    /** 编号 */
+    @Excel(name = "编号")
+    private String testerNo;
+
+    /** 检测仪外观及背夹完好度 */
+    @Excel(name = "检测仪外观及背夹完好度")
+    private String testerBody;
+
+    /** 检测仪显示屏及电量 */
+    @Excel(name = "检测仪显示屏及电量")
+    private String testerEnergy;
+
+
+    @Excel(name = "检测仪有效期")
+    private String testerSafeDate;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setTesterType(String testerType)
+    {
+        this.testerType = testerType;
+    }
+
+    public String getTesterType()
+    {
+        return testerType;
+    }
+    public void setTesterModel(String testerModel)
+    {
+        this.testerModel = testerModel;
+    }
+
+    public String getTesterModel()
+    {
+        return testerModel;
+    }
+    public void setTesterNo(String testerNo)
+    {
+        this.testerNo = testerNo;
+    }
+
+    public String getTesterNo()
+    {
+        return testerNo;
+    }
+    public void setTesterBody(String testerBody)
+    {
+        this.testerBody = testerBody;
+    }
+
+    public String getTesterBody()
+    {
+        return testerBody;
+    }
+    public void setTesterEnergy(String testerEnergy)
+    {
+        this.testerEnergy = testerEnergy;
+    }
+
+    public String getTesterEnergy()
+    {
+        return testerEnergy;
+    }
+    public void setTesterSafeDate(String testerSafeDate)
+    {
+        this.testerSafeDate = testerSafeDate;
+    }
+
+    public String getTesterSafeDate()
+    {
+        return testerSafeDate;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("testerType", getTesterType())
+            .append("testerModel", getTesterModel())
+            .append("testerNo", getTesterNo())
+            .append("testerBody", getTesterBody())
+            .append("testerEnergy", getTesterEnergy())
+            .append("testerSafeDate", getTesterSafeDate())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 401 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseWalkieTalkie.java

@@ -0,0 +1,401 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 对讲机对象 t_commonuse_walkie_talkie
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseWalkieTalkie extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseWalkieTalkie() {
+    }
+
+    public TCommonuseWalkieTalkie(String devNo, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 外观情况 */
+    @Excel(name = "外观情况")
+    private String appearance;
+
+    /** 编号标签 */
+    @Excel(name = "编号标签")
+    private String numberingLabel;
+
+    /** 电池状况 */
+    @Excel(name = "电池状况")
+    private String batteryCondition;
+
+    /** 显示屏状况 */
+    @Excel(name = "显示屏状况")
+    private String displayScreen;
+
+    /** 通话音质 */
+    @Excel(name = "通话音质")
+    private String voiceQuality;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setAppearance(String appearance)
+    {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance()
+    {
+        return appearance;
+    }
+    public void setNumberingLabel(String numberingLabel)
+    {
+        this.numberingLabel = numberingLabel;
+    }
+
+    public String getNumberingLabel()
+    {
+        return numberingLabel;
+    }
+    public void setBatteryCondition(String batteryCondition)
+    {
+        this.batteryCondition = batteryCondition;
+    }
+
+    public String getBatteryCondition()
+    {
+        return batteryCondition;
+    }
+    public void setDisplayScreen(String displayScreen)
+    {
+        this.displayScreen = displayScreen;
+    }
+
+    public String getDisplayScreen()
+    {
+        return displayScreen;
+    }
+    public void setVoiceQuality(String voiceQuality)
+    {
+        this.voiceQuality = voiceQuality;
+    }
+
+    public String getVoiceQuality()
+    {
+        return voiceQuality;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("appearance", getAppearance())
+            .append("numberingLabel", getNumberingLabel())
+            .append("batteryCondition", getBatteryCondition())
+            .append("displayScreen", getDisplayScreen())
+            .append("voiceQuality", getVoiceQuality())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 388 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/domain/TCommonuseWaterPump.java

@@ -0,0 +1,388 @@
+package com.ruoyi.project.patrol.commonuse.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 水泵接合器对象 t_commonuse_water_pump
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TCommonuseWaterPump extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    public TCommonuseWaterPump() {
+    }
+
+    public TCommonuseWaterPump(String devNo, String position, Long month, Long year, Long planId, String createrCode) {
+        this.devNo = devNo;
+        this.position = position;
+        this.month = month;
+        this.year = year;
+        this.planId = planId;
+        this.issuesStatus = "0";
+        this.checkStatus = "0";
+        this.createdate = new Date();
+        this.createrCode = createrCode;
+    }
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 接合器外观 */
+    @Excel(name = "接合器外观")
+    private String appearance;
+
+    /** 接合器编号标识 */
+    @Excel(name = "接合器编号标识")
+    private String numberingIdentification;
+
+    /** 接合器闷盖及接口 */
+    @Excel(name = "接合器闷盖及接口")
+    private String coverInterface;
+
+    /** 确认人 */
+    @Excel(name = "确认人")
+    private String confirmed;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 检查状态 */
+    @Excel(name = "检查状态")
+    private String checkStatus;
+
+    /** 检查时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "检查时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checkDate;
+
+    /** 月度 */
+    @Excel(name = "月度")
+    private Long month;
+
+    /** 年度 */
+    @Excel(name = "年度")
+    private Long year;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 计划id */
+    @Excel(name = "计划id")
+    private Long planId;
+
+    /** 问题文件地址 */
+    @Excel(name = "问题文件地址")
+    private String problemFileUrl;
+
+    /** 文件地址 */
+    @Excel(name = "文件地址")
+    private String fileUrl;
+
+    /** 检测是否有问题(1:是,0:否) */
+    @Excel(name = "检测是否有问题(1:是,0:否)")
+    private String issuesStatus;
+
+    /** 是否为问题记录数据 */
+    @Excel(name = "是否为问题记录数据")
+    private String issuesFlag;
+
+    /** 问题修复附件 */
+    @Excel(name = "问题修复附件")
+    private String repairFile;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setAppearance(String appearance)
+    {
+        this.appearance = appearance;
+    }
+
+    public String getAppearance()
+    {
+        return appearance;
+    }
+    public void setNumberingIdentification(String numberingIdentification)
+    {
+        this.numberingIdentification = numberingIdentification;
+    }
+
+    public String getNumberingIdentification()
+    {
+        return numberingIdentification;
+    }
+    public void setCoverInterface(String coverInterface)
+    {
+        this.coverInterface = coverInterface;
+    }
+
+    public String getCoverInterface()
+    {
+        return coverInterface;
+    }
+    public void setConfirmed(String confirmed)
+    {
+        this.confirmed = confirmed;
+    }
+
+    public String getConfirmed()
+    {
+        return confirmed;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setCheckStatus(String checkStatus)
+    {
+        this.checkStatus = checkStatus;
+    }
+
+    public String getCheckStatus()
+    {
+        return checkStatus;
+    }
+    public void setCheckDate(Date checkDate)
+    {
+        this.checkDate = checkDate;
+    }
+
+    public Date getCheckDate()
+    {
+        return checkDate;
+    }
+    public void setMonth(Long month)
+    {
+        this.month = month;
+    }
+
+    public Long getMonth()
+    {
+        return month;
+    }
+    public void setYear(Long year)
+    {
+        this.year = year;
+    }
+
+    public Long getYear()
+    {
+        return year;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPlanId(Long planId)
+    {
+        this.planId = planId;
+    }
+
+    public Long getPlanId()
+    {
+        return planId;
+    }
+    public void setProblemFileUrl(String problemFileUrl)
+    {
+        this.problemFileUrl = problemFileUrl;
+    }
+
+    public String getProblemFileUrl()
+    {
+        return problemFileUrl;
+    }
+    public void setFileUrl(String fileUrl)
+    {
+        this.fileUrl = fileUrl;
+    }
+
+    public String getFileUrl()
+    {
+        return fileUrl;
+    }
+    public void setIssuesStatus(String issuesStatus)
+    {
+        this.issuesStatus = issuesStatus;
+    }
+
+    public String getIssuesStatus()
+    {
+        return issuesStatus;
+    }
+    public void setIssuesFlag(String issuesFlag)
+    {
+        this.issuesFlag = issuesFlag;
+    }
+
+    public String getIssuesFlag()
+    {
+        return issuesFlag;
+    }
+    public void setRepairFile(String repairFile)
+    {
+        this.repairFile = repairFile;
+    }
+
+    public String getRepairFile()
+    {
+        return repairFile;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("appearance", getAppearance())
+            .append("numberingIdentification", getNumberingIdentification())
+            .append("coverInterface", getCoverInterface())
+            .append("confirmed", getConfirmed())
+            .append("remarks", getRemarks())
+            .append("checkStatus", getCheckStatus())
+            .append("checkDate", getCheckDate())
+            .append("month", getMonth())
+            .append("year", getYear())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("planId", getPlanId())
+            .append("problemFileUrl", getProblemFileUrl())
+            .append("fileUrl", getFileUrl())
+            .append("issuesStatus", getIssuesStatus())
+            .append("issuesFlag", getIssuesFlag())
+            .append("repairFile", getRepairFile())
+            .toString();
+    }
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseBicycleMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseBicycle;
+
+/**
+ * 自行车Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-09
+ */
+public interface TCommonuseBicycleMapper 
+{
+    /**
+     * 查询自行车
+     * 
+     * @param id 自行车主键
+     * @return 自行车
+     */
+    public TCommonuseBicycle selectTCommonuseBicycleById(Long id);
+
+    /**
+     * 查询自行车列表
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 自行车集合
+     */
+    public List<TCommonuseBicycle> selectTCommonuseBicycleList(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 新增自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    public int insertTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 修改自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    public int updateTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 删除自行车
+     * 
+     * @param id 自行车主键
+     * @return 结果
+     */
+    public int deleteTCommonuseBicycleById(Long id);
+
+    /**
+     * 批量删除自行车
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseBicycleByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseDownspoutMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseDownspout;
+
+/**
+ * 落水管Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseDownspoutMapper 
+{
+    /**
+     * 查询落水管
+     * 
+     * @param id 落水管主键
+     * @return 落水管
+     */
+    public TCommonuseDownspout selectTCommonuseDownspoutById(Long id);
+
+    /**
+     * 查询落水管列表
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 落水管集合
+     */
+    public List<TCommonuseDownspout> selectTCommonuseDownspoutList(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 新增落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    public int insertTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 修改落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    public int updateTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 删除落水管
+     * 
+     * @param id 落水管主键
+     * @return 结果
+     */
+    public int deleteTCommonuseDownspoutById(Long id);
+
+    /**
+     * 批量删除落水管
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseDownspoutByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseEarplugMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseEarplug;
+
+/**
+ * 耳塞分配器检查记录Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseEarplugMapper 
+{
+    /**
+     * 查询耳塞分配器检查记录
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 耳塞分配器检查记录
+     */
+    public TCommonuseEarplug selectTCommonuseEarplugById(Long id);
+
+    /**
+     * 查询耳塞分配器检查记录列表
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 耳塞分配器检查记录集合
+     */
+    public List<TCommonuseEarplug> selectTCommonuseEarplugList(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 新增耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    public int insertTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 修改耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    public int updateTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 删除耳塞分配器检查记录
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 结果
+     */
+    public int deleteTCommonuseEarplugById(Long id);
+
+    /**
+     * 批量删除耳塞分配器检查记录
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseEarplugByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseManholeCoverMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseManholeCover;
+
+/**
+ * 地井盖Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseManholeCoverMapper 
+{
+    /**
+     * 查询地井盖
+     * 
+     * @param id 地井盖主键
+     * @return 地井盖
+     */
+    public TCommonuseManholeCover selectTCommonuseManholeCoverById(Long id);
+
+    /**
+     * 查询地井盖列表
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 地井盖集合
+     */
+    public List<TCommonuseManholeCover> selectTCommonuseManholeCoverList(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 新增地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    public int insertTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 修改地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    public int updateTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 删除地井盖
+     * 
+     * @param id 地井盖主键
+     * @return 结果
+     */
+    public int deleteTCommonuseManholeCoverById(Long id);
+
+    /**
+     * 批量删除地井盖
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseManholeCoverByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseMovementMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseMovement;
+
+/**
+ * 移动平台及移动梯Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseMovementMapper 
+{
+    /**
+     * 查询移动平台及移动梯
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 移动平台及移动梯
+     */
+    public TCommonuseMovement selectTCommonuseMovementById(Long id);
+
+    /**
+     * 查询移动平台及移动梯列表
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 移动平台及移动梯集合
+     */
+    public List<TCommonuseMovement> selectTCommonuseMovementList(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 新增移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    public int insertTCommonuseMovement(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 修改移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    public int updateTCommonuseMovement(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 删除移动平台及移动梯
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 结果
+     */
+    public int deleteTCommonuseMovementById(Long id);
+
+    /**
+     * 批量删除移动平台及移动梯
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseMovementByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseSafetyBeltMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseSafetyBelt;
+
+/**
+ * 安全带Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseSafetyBeltMapper 
+{
+    /**
+     * 查询安全带
+     * 
+     * @param id 安全带主键
+     * @return 安全带
+     */
+    public TCommonuseSafetyBelt selectTCommonuseSafetyBeltById(Long id);
+
+    /**
+     * 查询安全带列表
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 安全带集合
+     */
+    public List<TCommonuseSafetyBelt> selectTCommonuseSafetyBeltList(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 新增安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    public int insertTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 修改安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    public int updateTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 删除安全带
+     * 
+     * @param id 安全带主键
+     * @return 结果
+     */
+    public int deleteTCommonuseSafetyBeltById(Long id);
+
+    /**
+     * 批量删除安全带
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseSafetyBeltByIds(Long[] ids);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseTesterMapper.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseTester;
+
+import java.util.List;
+
+/**
+ * 检测仪检查记录Mapper接口
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+public interface TCommonuseTesterMapper
+{
+    /**
+     * 查询检测仪检查记录
+     *
+     * @param id 检测仪检查记录主键
+     * @return 检测仪检查记录
+     */
+    public TCommonuseTester selectTCommonuseTesterById(Long id);
+
+    /**
+     * 查询检测仪检查记录列表
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 检测仪检查记录集合
+     */
+    public List<TCommonuseTester> selectTCommonuseTesterList(TCommonuseTester tCommonuseTester);
+    public List<TCommonuseTester> selectTCommonuseTesterListToExcel(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 新增检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    public int insertTCommonuseTester(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 修改检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    public int updateTCommonuseTester(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 删除检测仪检查记录
+     *
+     * @param id 检测仪检查记录主键
+     * @return 结果
+     */
+    public int deleteTCommonuseTesterById(Long id);
+
+    /**
+     * 批量删除检测仪检查记录
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseTesterByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseWalkieTalkieMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWalkieTalkie;
+
+/**
+ * 对讲机Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseWalkieTalkieMapper 
+{
+    /**
+     * 查询对讲机
+     * 
+     * @param id 对讲机主键
+     * @return 对讲机
+     */
+    public TCommonuseWalkieTalkie selectTCommonuseWalkieTalkieById(Long id);
+
+    /**
+     * 查询对讲机列表
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 对讲机集合
+     */
+    public List<TCommonuseWalkieTalkie> selectTCommonuseWalkieTalkieList(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 新增对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    public int insertTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 修改对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    public int updateTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 删除对讲机
+     * 
+     * @param id 对讲机主键
+     * @return 结果
+     */
+    public int deleteTCommonuseWalkieTalkieById(Long id);
+
+    /**
+     * 批量删除对讲机
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseWalkieTalkieByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/mapper/TCommonuseWaterPumpMapper.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.mapper;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWaterPump;
+
+/**
+ * 水泵接合器Mapper接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface TCommonuseWaterPumpMapper 
+{
+    /**
+     * 查询水泵接合器
+     * 
+     * @param id 水泵接合器主键
+     * @return 水泵接合器
+     */
+    public TCommonuseWaterPump selectTCommonuseWaterPumpById(Long id);
+
+    /**
+     * 查询水泵接合器列表
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 水泵接合器集合
+     */
+    public List<TCommonuseWaterPump> selectTCommonuseWaterPumpList(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 新增水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    public int insertTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 修改水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    public int updateTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 删除水泵接合器
+     * 
+     * @param id 水泵接合器主键
+     * @return 结果
+     */
+    public int deleteTCommonuseWaterPumpById(Long id);
+
+    /**
+     * 批量删除水泵接合器
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseWaterPumpByIds(Long[] ids);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseBicycleService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseBicycle;
+
+/**
+ * 自行车Service接口
+ * 
+ * @author admin
+ * @date 2023-11-09
+ */
+public interface ITCommonuseBicycleService 
+{
+    /**
+     * 查询自行车
+     * 
+     * @param id 自行车主键
+     * @return 自行车
+     */
+    public TCommonuseBicycle selectTCommonuseBicycleById(Long id);
+
+    /**
+     * 查询自行车列表
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 自行车集合
+     */
+    public List<TCommonuseBicycle> selectTCommonuseBicycleList(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 新增自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    public int insertTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 修改自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    public int updateTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle);
+
+    /**
+     * 批量删除自行车
+     * 
+     * @param ids 需要删除的自行车主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseBicycleByIds(Long[] ids);
+
+    /**
+     * 删除自行车信息
+     * 
+     * @param id 自行车主键
+     * @return 结果
+     */
+    public int deleteTCommonuseBicycleById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseDownspoutService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseDownspout;
+
+/**
+ * 落水管Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseDownspoutService 
+{
+    /**
+     * 查询落水管
+     * 
+     * @param id 落水管主键
+     * @return 落水管
+     */
+    public TCommonuseDownspout selectTCommonuseDownspoutById(Long id);
+
+    /**
+     * 查询落水管列表
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 落水管集合
+     */
+    public List<TCommonuseDownspout> selectTCommonuseDownspoutList(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 新增落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    public int insertTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 修改落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    public int updateTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout);
+
+    /**
+     * 批量删除落水管
+     * 
+     * @param ids 需要删除的落水管主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseDownspoutByIds(Long[] ids);
+
+    /**
+     * 删除落水管信息
+     * 
+     * @param id 落水管主键
+     * @return 结果
+     */
+    public int deleteTCommonuseDownspoutById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseEarplugService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseEarplug;
+
+/**
+ * 耳塞分配器检查记录Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseEarplugService 
+{
+    /**
+     * 查询耳塞分配器检查记录
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 耳塞分配器检查记录
+     */
+    public TCommonuseEarplug selectTCommonuseEarplugById(Long id);
+
+    /**
+     * 查询耳塞分配器检查记录列表
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 耳塞分配器检查记录集合
+     */
+    public List<TCommonuseEarplug> selectTCommonuseEarplugList(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 新增耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    public int insertTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 修改耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    public int updateTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug);
+
+    /**
+     * 批量删除耳塞分配器检查记录
+     * 
+     * @param ids 需要删除的耳塞分配器检查记录主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseEarplugByIds(Long[] ids);
+
+    /**
+     * 删除耳塞分配器检查记录信息
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 结果
+     */
+    public int deleteTCommonuseEarplugById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseManholeCoverService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseManholeCover;
+
+/**
+ * 地井盖Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseManholeCoverService 
+{
+    /**
+     * 查询地井盖
+     * 
+     * @param id 地井盖主键
+     * @return 地井盖
+     */
+    public TCommonuseManholeCover selectTCommonuseManholeCoverById(Long id);
+
+    /**
+     * 查询地井盖列表
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 地井盖集合
+     */
+    public List<TCommonuseManholeCover> selectTCommonuseManholeCoverList(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 新增地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    public int insertTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 修改地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    public int updateTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover);
+
+    /**
+     * 批量删除地井盖
+     * 
+     * @param ids 需要删除的地井盖主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseManholeCoverByIds(Long[] ids);
+
+    /**
+     * 删除地井盖信息
+     * 
+     * @param id 地井盖主键
+     * @return 结果
+     */
+    public int deleteTCommonuseManholeCoverById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseMovementService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseMovement;
+
+/**
+ * 移动平台及移动梯Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseMovementService 
+{
+    /**
+     * 查询移动平台及移动梯
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 移动平台及移动梯
+     */
+    public TCommonuseMovement selectTCommonuseMovementById(Long id);
+
+    /**
+     * 查询移动平台及移动梯列表
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 移动平台及移动梯集合
+     */
+    public List<TCommonuseMovement> selectTCommonuseMovementList(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 新增移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    public int insertTCommonuseMovement(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 修改移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    public int updateTCommonuseMovement(TCommonuseMovement tCommonuseMovement);
+
+    /**
+     * 批量删除移动平台及移动梯
+     * 
+     * @param ids 需要删除的移动平台及移动梯主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseMovementByIds(Long[] ids);
+
+    /**
+     * 删除移动平台及移动梯信息
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 结果
+     */
+    public int deleteTCommonuseMovementById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseSafetyBeltService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseSafetyBelt;
+
+/**
+ * 安全带Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseSafetyBeltService 
+{
+    /**
+     * 查询安全带
+     * 
+     * @param id 安全带主键
+     * @return 安全带
+     */
+    public TCommonuseSafetyBelt selectTCommonuseSafetyBeltById(Long id);
+
+    /**
+     * 查询安全带列表
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 安全带集合
+     */
+    public List<TCommonuseSafetyBelt> selectTCommonuseSafetyBeltList(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 新增安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    public int insertTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 修改安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    public int updateTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt);
+
+    /**
+     * 批量删除安全带
+     * 
+     * @param ids 需要删除的安全带主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseSafetyBeltByIds(Long[] ids);
+
+    /**
+     * 删除安全带信息
+     * 
+     * @param id 安全带主键
+     * @return 结果
+     */
+    public int deleteTCommonuseSafetyBeltById(Long id);
+}

+ 63 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseTesterService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseTester;
+
+import java.util.List;
+
+/**
+ * 检测仪检查记录Service接口
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+public interface ITCommonuseTesterService
+{
+    /**
+     * 查询检测仪检查记录
+     *
+     * @param id 检测仪检查记录主键
+     * @return 检测仪检查记录
+     */
+    public TCommonuseTester selectTCommonuseTesterById(Long id);
+
+    /**
+     * 查询检测仪检查记录列表
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 检测仪检查记录集合
+     */
+    public List<TCommonuseTester> selectTCommonuseTesterList(TCommonuseTester tCommonuseTester);
+    public List<TCommonuseTester> selectTCommonuseTesterListToExcel(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 新增检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    public int insertTCommonuseTester(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 修改检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    public int updateTCommonuseTester(TCommonuseTester tCommonuseTester);
+
+    /**
+     * 批量删除检测仪检查记录
+     *
+     * @param ids 需要删除的检测仪检查记录主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseTesterByIds(Long[] ids);
+
+    /**
+     * 删除检测仪检查记录信息
+     *
+     * @param id 检测仪检查记录主键
+     * @return 结果
+     */
+    public int deleteTCommonuseTesterById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseWalkieTalkieService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWalkieTalkie;
+
+/**
+ * 对讲机Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseWalkieTalkieService 
+{
+    /**
+     * 查询对讲机
+     * 
+     * @param id 对讲机主键
+     * @return 对讲机
+     */
+    public TCommonuseWalkieTalkie selectTCommonuseWalkieTalkieById(Long id);
+
+    /**
+     * 查询对讲机列表
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 对讲机集合
+     */
+    public List<TCommonuseWalkieTalkie> selectTCommonuseWalkieTalkieList(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 新增对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    public int insertTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 修改对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    public int updateTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie);
+
+    /**
+     * 批量删除对讲机
+     * 
+     * @param ids 需要删除的对讲机主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseWalkieTalkieByIds(Long[] ids);
+
+    /**
+     * 删除对讲机信息
+     * 
+     * @param id 对讲机主键
+     * @return 结果
+     */
+    public int deleteTCommonuseWalkieTalkieById(Long id);
+}

+ 61 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/ITCommonuseWaterPumpService.java

@@ -0,0 +1,61 @@
+package com.ruoyi.project.patrol.commonuse.service;
+
+import java.util.List;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWaterPump;
+
+/**
+ * 水泵接合器Service接口
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+public interface ITCommonuseWaterPumpService 
+{
+    /**
+     * 查询水泵接合器
+     * 
+     * @param id 水泵接合器主键
+     * @return 水泵接合器
+     */
+    public TCommonuseWaterPump selectTCommonuseWaterPumpById(Long id);
+
+    /**
+     * 查询水泵接合器列表
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 水泵接合器集合
+     */
+    public List<TCommonuseWaterPump> selectTCommonuseWaterPumpList(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 新增水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    public int insertTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 修改水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    public int updateTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump);
+
+    /**
+     * 批量删除水泵接合器
+     * 
+     * @param ids 需要删除的水泵接合器主键集合
+     * @return 结果
+     */
+    public int deleteTCommonuseWaterPumpByIds(Long[] ids);
+
+    /**
+     * 删除水泵接合器信息
+     * 
+     * @param id 水泵接合器主键
+     * @return 结果
+     */
+    public int deleteTCommonuseWaterPumpById(Long id);
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseBicycleServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseBicycleMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseBicycle;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseBicycleService;
+
+/**
+ * 自行车Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-09
+ */
+@Service
+public class TCommonuseBicycleServiceImpl implements ITCommonuseBicycleService 
+{
+    @Autowired
+    private TCommonuseBicycleMapper tCommonuseBicycleMapper;
+
+    /**
+     * 查询自行车
+     * 
+     * @param id 自行车主键
+     * @return 自行车
+     */
+    @Override
+    public TCommonuseBicycle selectTCommonuseBicycleById(Long id)
+    {
+        return tCommonuseBicycleMapper.selectTCommonuseBicycleById(id);
+    }
+
+    /**
+     * 查询自行车列表
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 自行车
+     */
+    @Override
+    public List<TCommonuseBicycle> selectTCommonuseBicycleList(TCommonuseBicycle tCommonuseBicycle)
+    {
+        return tCommonuseBicycleMapper.selectTCommonuseBicycleList(tCommonuseBicycle);
+    }
+
+    /**
+     * 新增自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle)
+    {
+        return tCommonuseBicycleMapper.insertTCommonuseBicycle(tCommonuseBicycle);
+    }
+
+    /**
+     * 修改自行车
+     * 
+     * @param tCommonuseBicycle 自行车
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseBicycle(TCommonuseBicycle tCommonuseBicycle)
+    {
+        return tCommonuseBicycleMapper.updateTCommonuseBicycle(tCommonuseBicycle);
+    }
+
+    /**
+     * 批量删除自行车
+     * 
+     * @param ids 需要删除的自行车主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseBicycleByIds(Long[] ids)
+    {
+        return tCommonuseBicycleMapper.deleteTCommonuseBicycleByIds(ids);
+    }
+
+    /**
+     * 删除自行车信息
+     * 
+     * @param id 自行车主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseBicycleById(Long id)
+    {
+        return tCommonuseBicycleMapper.deleteTCommonuseBicycleById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseDownspoutServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseDownspoutMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseDownspout;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseDownspoutService;
+
+/**
+ * 落水管Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseDownspoutServiceImpl implements ITCommonuseDownspoutService 
+{
+    @Autowired
+    private TCommonuseDownspoutMapper tCommonuseDownspoutMapper;
+
+    /**
+     * 查询落水管
+     * 
+     * @param id 落水管主键
+     * @return 落水管
+     */
+    @Override
+    public TCommonuseDownspout selectTCommonuseDownspoutById(Long id)
+    {
+        return tCommonuseDownspoutMapper.selectTCommonuseDownspoutById(id);
+    }
+
+    /**
+     * 查询落水管列表
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 落水管
+     */
+    @Override
+    public List<TCommonuseDownspout> selectTCommonuseDownspoutList(TCommonuseDownspout tCommonuseDownspout)
+    {
+        return tCommonuseDownspoutMapper.selectTCommonuseDownspoutList(tCommonuseDownspout);
+    }
+
+    /**
+     * 新增落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout)
+    {
+        return tCommonuseDownspoutMapper.insertTCommonuseDownspout(tCommonuseDownspout);
+    }
+
+    /**
+     * 修改落水管
+     * 
+     * @param tCommonuseDownspout 落水管
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseDownspout(TCommonuseDownspout tCommonuseDownspout)
+    {
+        return tCommonuseDownspoutMapper.updateTCommonuseDownspout(tCommonuseDownspout);
+    }
+
+    /**
+     * 批量删除落水管
+     * 
+     * @param ids 需要删除的落水管主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseDownspoutByIds(Long[] ids)
+    {
+        return tCommonuseDownspoutMapper.deleteTCommonuseDownspoutByIds(ids);
+    }
+
+    /**
+     * 删除落水管信息
+     * 
+     * @param id 落水管主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseDownspoutById(Long id)
+    {
+        return tCommonuseDownspoutMapper.deleteTCommonuseDownspoutById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseEarplugServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseEarplugMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseEarplug;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseEarplugService;
+
+/**
+ * 耳塞分配器检查记录Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseEarplugServiceImpl implements ITCommonuseEarplugService 
+{
+    @Autowired
+    private TCommonuseEarplugMapper tCommonuseEarplugMapper;
+
+    /**
+     * 查询耳塞分配器检查记录
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 耳塞分配器检查记录
+     */
+    @Override
+    public TCommonuseEarplug selectTCommonuseEarplugById(Long id)
+    {
+        return tCommonuseEarplugMapper.selectTCommonuseEarplugById(id);
+    }
+
+    /**
+     * 查询耳塞分配器检查记录列表
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 耳塞分配器检查记录
+     */
+    @Override
+    public List<TCommonuseEarplug> selectTCommonuseEarplugList(TCommonuseEarplug tCommonuseEarplug)
+    {
+        return tCommonuseEarplugMapper.selectTCommonuseEarplugList(tCommonuseEarplug);
+    }
+
+    /**
+     * 新增耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug)
+    {
+        return tCommonuseEarplugMapper.insertTCommonuseEarplug(tCommonuseEarplug);
+    }
+
+    /**
+     * 修改耳塞分配器检查记录
+     * 
+     * @param tCommonuseEarplug 耳塞分配器检查记录
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseEarplug(TCommonuseEarplug tCommonuseEarplug)
+    {
+        return tCommonuseEarplugMapper.updateTCommonuseEarplug(tCommonuseEarplug);
+    }
+
+    /**
+     * 批量删除耳塞分配器检查记录
+     * 
+     * @param ids 需要删除的耳塞分配器检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseEarplugByIds(Long[] ids)
+    {
+        return tCommonuseEarplugMapper.deleteTCommonuseEarplugByIds(ids);
+    }
+
+    /**
+     * 删除耳塞分配器检查记录信息
+     * 
+     * @param id 耳塞分配器检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseEarplugById(Long id)
+    {
+        return tCommonuseEarplugMapper.deleteTCommonuseEarplugById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseManholeCoverServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseManholeCoverMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseManholeCover;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseManholeCoverService;
+
+/**
+ * 地井盖Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseManholeCoverServiceImpl implements ITCommonuseManholeCoverService 
+{
+    @Autowired
+    private TCommonuseManholeCoverMapper tCommonuseManholeCoverMapper;
+
+    /**
+     * 查询地井盖
+     * 
+     * @param id 地井盖主键
+     * @return 地井盖
+     */
+    @Override
+    public TCommonuseManholeCover selectTCommonuseManholeCoverById(Long id)
+    {
+        return tCommonuseManholeCoverMapper.selectTCommonuseManholeCoverById(id);
+    }
+
+    /**
+     * 查询地井盖列表
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 地井盖
+     */
+    @Override
+    public List<TCommonuseManholeCover> selectTCommonuseManholeCoverList(TCommonuseManholeCover tCommonuseManholeCover)
+    {
+        return tCommonuseManholeCoverMapper.selectTCommonuseManholeCoverList(tCommonuseManholeCover);
+    }
+
+    /**
+     * 新增地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover)
+    {
+        return tCommonuseManholeCoverMapper.insertTCommonuseManholeCover(tCommonuseManholeCover);
+    }
+
+    /**
+     * 修改地井盖
+     * 
+     * @param tCommonuseManholeCover 地井盖
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseManholeCover(TCommonuseManholeCover tCommonuseManholeCover)
+    {
+        return tCommonuseManholeCoverMapper.updateTCommonuseManholeCover(tCommonuseManholeCover);
+    }
+
+    /**
+     * 批量删除地井盖
+     * 
+     * @param ids 需要删除的地井盖主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseManholeCoverByIds(Long[] ids)
+    {
+        return tCommonuseManholeCoverMapper.deleteTCommonuseManholeCoverByIds(ids);
+    }
+
+    /**
+     * 删除地井盖信息
+     * 
+     * @param id 地井盖主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseManholeCoverById(Long id)
+    {
+        return tCommonuseManholeCoverMapper.deleteTCommonuseManholeCoverById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseMovementServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseMovementMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseMovement;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseMovementService;
+
+/**
+ * 移动平台及移动梯Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseMovementServiceImpl implements ITCommonuseMovementService 
+{
+    @Autowired
+    private TCommonuseMovementMapper tCommonuseMovementMapper;
+
+    /**
+     * 查询移动平台及移动梯
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 移动平台及移动梯
+     */
+    @Override
+    public TCommonuseMovement selectTCommonuseMovementById(Long id)
+    {
+        return tCommonuseMovementMapper.selectTCommonuseMovementById(id);
+    }
+
+    /**
+     * 查询移动平台及移动梯列表
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 移动平台及移动梯
+     */
+    @Override
+    public List<TCommonuseMovement> selectTCommonuseMovementList(TCommonuseMovement tCommonuseMovement)
+    {
+        return tCommonuseMovementMapper.selectTCommonuseMovementList(tCommonuseMovement);
+    }
+
+    /**
+     * 新增移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseMovement(TCommonuseMovement tCommonuseMovement)
+    {
+        return tCommonuseMovementMapper.insertTCommonuseMovement(tCommonuseMovement);
+    }
+
+    /**
+     * 修改移动平台及移动梯
+     * 
+     * @param tCommonuseMovement 移动平台及移动梯
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseMovement(TCommonuseMovement tCommonuseMovement)
+    {
+        return tCommonuseMovementMapper.updateTCommonuseMovement(tCommonuseMovement);
+    }
+
+    /**
+     * 批量删除移动平台及移动梯
+     * 
+     * @param ids 需要删除的移动平台及移动梯主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseMovementByIds(Long[] ids)
+    {
+        return tCommonuseMovementMapper.deleteTCommonuseMovementByIds(ids);
+    }
+
+    /**
+     * 删除移动平台及移动梯信息
+     * 
+     * @param id 移动平台及移动梯主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseMovementById(Long id)
+    {
+        return tCommonuseMovementMapper.deleteTCommonuseMovementById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseSafetyBeltServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseSafetyBeltMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseSafetyBelt;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseSafetyBeltService;
+
+/**
+ * 安全带Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseSafetyBeltServiceImpl implements ITCommonuseSafetyBeltService 
+{
+    @Autowired
+    private TCommonuseSafetyBeltMapper tCommonuseSafetyBeltMapper;
+
+    /**
+     * 查询安全带
+     * 
+     * @param id 安全带主键
+     * @return 安全带
+     */
+    @Override
+    public TCommonuseSafetyBelt selectTCommonuseSafetyBeltById(Long id)
+    {
+        return tCommonuseSafetyBeltMapper.selectTCommonuseSafetyBeltById(id);
+    }
+
+    /**
+     * 查询安全带列表
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 安全带
+     */
+    @Override
+    public List<TCommonuseSafetyBelt> selectTCommonuseSafetyBeltList(TCommonuseSafetyBelt tCommonuseSafetyBelt)
+    {
+        return tCommonuseSafetyBeltMapper.selectTCommonuseSafetyBeltList(tCommonuseSafetyBelt);
+    }
+
+    /**
+     * 新增安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt)
+    {
+        return tCommonuseSafetyBeltMapper.insertTCommonuseSafetyBelt(tCommonuseSafetyBelt);
+    }
+
+    /**
+     * 修改安全带
+     * 
+     * @param tCommonuseSafetyBelt 安全带
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseSafetyBelt(TCommonuseSafetyBelt tCommonuseSafetyBelt)
+    {
+        return tCommonuseSafetyBeltMapper.updateTCommonuseSafetyBelt(tCommonuseSafetyBelt);
+    }
+
+    /**
+     * 批量删除安全带
+     * 
+     * @param ids 需要删除的安全带主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseSafetyBeltByIds(Long[] ids)
+    {
+        return tCommonuseSafetyBeltMapper.deleteTCommonuseSafetyBeltByIds(ids);
+    }
+
+    /**
+     * 删除安全带信息
+     * 
+     * @param id 安全带主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseSafetyBeltById(Long id)
+    {
+        return tCommonuseSafetyBeltMapper.deleteTCommonuseSafetyBeltById(id);
+    }
+}

+ 99 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseTesterServiceImpl.java

@@ -0,0 +1,99 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseTesterMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseTester;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseTesterService;
+
+/**
+ * 检测仪检查记录Service业务层处理
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+@Service
+public class TCommonuseTesterServiceImpl implements ITCommonuseTesterService
+{
+    @Autowired
+    private TCommonuseTesterMapper tCommonuseTesterMapper;
+
+    /**
+     * 查询检测仪检查记录
+     *
+     * @param id 检测仪检查记录主键
+     * @return 检测仪检查记录
+     */
+    @Override
+    public TCommonuseTester selectTCommonuseTesterById(Long id)
+    {
+        return tCommonuseTesterMapper.selectTCommonuseTesterById(id);
+    }
+
+    /**
+     * 查询检测仪检查记录列表
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 检测仪检查记录
+     */
+    @Override
+    public List<TCommonuseTester> selectTCommonuseTesterList(TCommonuseTester tCommonuseTester)
+    {
+        return tCommonuseTesterMapper.selectTCommonuseTesterList(tCommonuseTester);
+    }
+
+    @Override
+    public List<TCommonuseTester> selectTCommonuseTesterListToExcel(TCommonuseTester tCommonuseTester)
+    {
+        return tCommonuseTesterMapper.selectTCommonuseTesterListToExcel(tCommonuseTester);
+    }
+
+    /**
+     * 新增检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseTester(TCommonuseTester tCommonuseTester)
+    {
+        return tCommonuseTesterMapper.insertTCommonuseTester(tCommonuseTester);
+    }
+
+    /**
+     * 修改检测仪检查记录
+     *
+     * @param tCommonuseTester 检测仪检查记录
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseTester(TCommonuseTester tCommonuseTester)
+    {
+        return tCommonuseTesterMapper.updateTCommonuseTester(tCommonuseTester);
+    }
+
+    /**
+     * 批量删除检测仪检查记录
+     *
+     * @param ids 需要删除的检测仪检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseTesterByIds(Long[] ids)
+    {
+        return tCommonuseTesterMapper.deleteTCommonuseTesterByIds(ids);
+    }
+
+    /**
+     * 删除检测仪检查记录信息
+     *
+     * @param id 检测仪检查记录主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseTesterById(Long id)
+    {
+        return tCommonuseTesterMapper.deleteTCommonuseTesterById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseWalkieTalkieServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseWalkieTalkieMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWalkieTalkie;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseWalkieTalkieService;
+
+/**
+ * 对讲机Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseWalkieTalkieServiceImpl implements ITCommonuseWalkieTalkieService 
+{
+    @Autowired
+    private TCommonuseWalkieTalkieMapper tCommonuseWalkieTalkieMapper;
+
+    /**
+     * 查询对讲机
+     * 
+     * @param id 对讲机主键
+     * @return 对讲机
+     */
+    @Override
+    public TCommonuseWalkieTalkie selectTCommonuseWalkieTalkieById(Long id)
+    {
+        return tCommonuseWalkieTalkieMapper.selectTCommonuseWalkieTalkieById(id);
+    }
+
+    /**
+     * 查询对讲机列表
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 对讲机
+     */
+    @Override
+    public List<TCommonuseWalkieTalkie> selectTCommonuseWalkieTalkieList(TCommonuseWalkieTalkie tCommonuseWalkieTalkie)
+    {
+        return tCommonuseWalkieTalkieMapper.selectTCommonuseWalkieTalkieList(tCommonuseWalkieTalkie);
+    }
+
+    /**
+     * 新增对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie)
+    {
+        return tCommonuseWalkieTalkieMapper.insertTCommonuseWalkieTalkie(tCommonuseWalkieTalkie);
+    }
+
+    /**
+     * 修改对讲机
+     * 
+     * @param tCommonuseWalkieTalkie 对讲机
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseWalkieTalkie(TCommonuseWalkieTalkie tCommonuseWalkieTalkie)
+    {
+        return tCommonuseWalkieTalkieMapper.updateTCommonuseWalkieTalkie(tCommonuseWalkieTalkie);
+    }
+
+    /**
+     * 批量删除对讲机
+     * 
+     * @param ids 需要删除的对讲机主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseWalkieTalkieByIds(Long[] ids)
+    {
+        return tCommonuseWalkieTalkieMapper.deleteTCommonuseWalkieTalkieByIds(ids);
+    }
+
+    /**
+     * 删除对讲机信息
+     * 
+     * @param id 对讲机主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseWalkieTalkieById(Long id)
+    {
+        return tCommonuseWalkieTalkieMapper.deleteTCommonuseWalkieTalkieById(id);
+    }
+}

+ 93 - 0
master/src/main/java/com/ruoyi/project/patrol/commonuse/service/impl/TCommonuseWaterPumpServiceImpl.java

@@ -0,0 +1,93 @@
+package com.ruoyi.project.patrol.commonuse.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.project.patrol.commonuse.mapper.TCommonuseWaterPumpMapper;
+import com.ruoyi.project.patrol.commonuse.domain.TCommonuseWaterPump;
+import com.ruoyi.project.patrol.commonuse.service.ITCommonuseWaterPumpService;
+
+/**
+ * 水泵接合器Service业务层处理
+ * 
+ * @author admin
+ * @date 2023-11-08
+ */
+@Service
+public class TCommonuseWaterPumpServiceImpl implements ITCommonuseWaterPumpService 
+{
+    @Autowired
+    private TCommonuseWaterPumpMapper tCommonuseWaterPumpMapper;
+
+    /**
+     * 查询水泵接合器
+     * 
+     * @param id 水泵接合器主键
+     * @return 水泵接合器
+     */
+    @Override
+    public TCommonuseWaterPump selectTCommonuseWaterPumpById(Long id)
+    {
+        return tCommonuseWaterPumpMapper.selectTCommonuseWaterPumpById(id);
+    }
+
+    /**
+     * 查询水泵接合器列表
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 水泵接合器
+     */
+    @Override
+    public List<TCommonuseWaterPump> selectTCommonuseWaterPumpList(TCommonuseWaterPump tCommonuseWaterPump)
+    {
+        return tCommonuseWaterPumpMapper.selectTCommonuseWaterPumpList(tCommonuseWaterPump);
+    }
+
+    /**
+     * 新增水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    @Override
+    public int insertTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump)
+    {
+        return tCommonuseWaterPumpMapper.insertTCommonuseWaterPump(tCommonuseWaterPump);
+    }
+
+    /**
+     * 修改水泵接合器
+     * 
+     * @param tCommonuseWaterPump 水泵接合器
+     * @return 结果
+     */
+    @Override
+    public int updateTCommonuseWaterPump(TCommonuseWaterPump tCommonuseWaterPump)
+    {
+        return tCommonuseWaterPumpMapper.updateTCommonuseWaterPump(tCommonuseWaterPump);
+    }
+
+    /**
+     * 批量删除水泵接合器
+     * 
+     * @param ids 需要删除的水泵接合器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseWaterPumpByIds(Long[] ids)
+    {
+        return tCommonuseWaterPumpMapper.deleteTCommonuseWaterPumpByIds(ids);
+    }
+
+    /**
+     * 删除水泵接合器信息
+     * 
+     * @param id 水泵接合器主键
+     * @return 结果
+     */
+    @Override
+    public int deleteTCommonuseWaterPumpById(Long id)
+    {
+        return tCommonuseWaterPumpMapper.deleteTCommonuseWaterPumpById(id);
+    }
+}

+ 107 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevAlarmController.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.service.ITDevAlarmService;
+import com.ruoyi.project.patrol.dev.domain.TDevAlarm;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 现场可燃气体检测器/火灾报警系统Controller
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/dev/alarm")
+public class TDevAlarmController extends BaseController {
+    @Autowired
+    private ITDevAlarmService tDevAlarmService;
+
+    /**
+     * 查询现场可燃气体检测器/火灾报警系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevAlarm tDevAlarm) {
+        startPage();
+        List<TDevAlarm> list = tDevAlarmService.selectTDevAlarmList(tDevAlarm);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出现场可燃气体检测器/火灾报警系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:export')")
+    @Log(title = "现场可燃气体检测器/火灾报警系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevAlarm tDevAlarm) {
+        List<TDevAlarm> list = tDevAlarmService.selectTDevAlarmList(tDevAlarm);
+        ExcelUtil<TDevAlarm> util = new ExcelUtil<TDevAlarm>(TDevAlarm.class);
+        return util.exportExcel(list,  "现场可燃气体检测器/火灾报警系统数据");
+    }
+
+    @Log(title = "现场可燃气体检测器/火灾报警系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevAlarm tDevAlarm) {
+        List<TDevAlarm> list = tDevAlarmService.selectTDevAlarmList(tDevAlarm);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevAlarm item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+
+    /**
+     * 获取现场可燃气体检测器/火灾报警系统详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevAlarmService.selectTDevAlarmById(id));
+    }
+
+    /**
+     * 新增现场可燃气体检测器/火灾报警系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:add')")
+    @Log(title = "现场可燃气体检测器/火灾报警系统", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevAlarm tDevAlarm) {
+        return toAjax(tDevAlarmService.insertTDevAlarm(tDevAlarm));
+    }
+
+    /**
+     * 修改现场可燃气体检测器/火灾报警系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:edit')")
+    @Log(title = "现场可燃气体检测器/火灾报警系统", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevAlarm tDevAlarm) {
+        return toAjax(tDevAlarmService.updateTDevAlarm(tDevAlarm));
+    }
+
+    /**
+     * 删除现场可燃气体检测器/火灾报警系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:alarm:remove')")
+    @Log(title = "现场可燃气体检测器/火灾报警系统", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevAlarmService.deleteTDevAlarmByIds(ids));
+    }
+}

+ 145 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevAnnihilatorController.java

@@ -0,0 +1,145 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevAnnihilator;
+import com.ruoyi.project.patrol.dev.service.ITDevAnnihilatorService;
+import com.ruoyi.project.patrol.patrol.domain.TPatrolMain;
+import com.ruoyi.project.patrol.patrol.service.ITPatrolMainService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 灭火器材Controller
+ *
+ * @author ruoyi
+ * @date 2023-08-28
+ */
+@RestController
+@RequestMapping("/dev/annihilator")
+public class TDevAnnihilatorController extends BaseController {
+    @Autowired
+    private ITDevAnnihilatorService tDevAnnihilatorService;
+    @Autowired
+    private ITPatrolMainService tPatrolMainService;
+
+    /**
+     * 查询灭火器材列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevAnnihilator tDevAnnihilator) {
+        startPage();
+        List<TDevAnnihilator> list = tDevAnnihilatorService.selectTDevAnnihilatorList(tDevAnnihilator);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出灭火器材列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:export')")
+    @Log(title = "灭火器材", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevAnnihilator tDevAnnihilator) {
+        List<TDevAnnihilator> list = tDevAnnihilatorService.selectTDevAnnihilatorList(tDevAnnihilator);
+        ExcelUtil<TDevAnnihilator> util = new ExcelUtil<TDevAnnihilator>(TDevAnnihilator.class);
+        return util.exportExcel(list,  "灭火器材数据");
+    }
+
+    @Log(title = "手提式/小推车式灭火器/灭火器材箱", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevAnnihilator tDevAnnihilator) {
+        List<TDevAnnihilator> list = tDevAnnihilatorService.selectTDevAnnihilatorList(tDevAnnihilator);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevAnnihilator item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(),item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取灭火器材详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevAnnihilatorService.selectTDevAnnihilatorById(id));
+    }
+
+    /**
+     * 新增灭火器材
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:add')")
+    @Log(title = "灭火器材", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevAnnihilator tDevAnnihilator) {
+        String num = "{1}/{2}/{3}";
+        if (tDevAnnihilatorService.insertTDevAnnihilator(tDevAnnihilator) > 0) {
+            num = getNum(num);
+        }
+        return getAjaxResult(num);
+    }
+
+    /**
+     * 修改灭火器材
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:edit')")
+    @Log(title = "灭火器材", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevAnnihilator tDevAnnihilator) {
+        String num = "{1}/{2}/{3}";
+        if (tDevAnnihilatorService.updateTDevAnnihilator(tDevAnnihilator) > 0) {
+            num = getNum(num);
+        }
+        return getAjaxResult(num);
+    }
+
+    /**
+     * 删除灭火器材
+     */
+    @PreAuthorize("@ss.hasPermi('dev:annihilator:remove')")
+    @Log(title = "灭火器材", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        String num = "{1}/{2}/{3}";
+        if (tDevAnnihilatorService.deleteTDevAnnihilatorByIds(ids) > 0) {
+            num = getNum(num);
+        }
+        return getAjaxResult(num);
+    }
+
+    private AjaxResult getAjaxResult(String num) {
+        num = num.replace("{1}", "0");
+        num = num.replace("{2}", "0");
+        num = num.replace("{3}", "0");
+        TPatrolMain tPatrolMain = new TPatrolMain();
+        tPatrolMain.setPatrolType("1");
+        tPatrolMain.setDevNum(num);
+        return toAjax(tPatrolMainService.updateTPatrolMainByType(tPatrolMain));
+    }
+
+    private String getNum(String num) {
+        for (TDevAnnihilator devAnnihilator : tDevAnnihilatorService.selectTDevAnnihilatorNum()) {
+            if ("1".equals(devAnnihilator.getDevType())) {
+                num = num.replace("{1}", devAnnihilator.getAnniNum());
+            } else if ("2".equals(devAnnihilator.getDevType())) {
+                num = num.replace("{2}", devAnnihilator.getAnniNum());
+            } else if ("3".equals(devAnnihilator.getDevType())) {
+                num = num.replace("{3}", devAnnihilator.getAnniNum());
+            }
+        }
+        return num;
+    }
+}

+ 109 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevBicycleController.java

@@ -0,0 +1,109 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevBicycle;
+import com.ruoyi.project.patrol.dev.service.ITDevBicycleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 自行车Controller
+ *
+ * @author admin
+ * @date 2023-11-09
+ */
+@RestController
+@RequestMapping("/dev/bicycle")
+public class TDevBicycleController extends BaseController {
+    @Autowired
+    private ITDevBicycleService tDevBicycleService;
+
+    /**
+     * 查询自行车列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevBicycle tDevBicycle) {
+        startPage();
+        List<TDevBicycle> list = tDevBicycleService.selectTDevBicycleList(tDevBicycle);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出自行车列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:export')")
+    @Log(title = "自行车", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevBicycle tDevBicycle) {
+        List<TDevBicycle> list = tDevBicycleService.selectTDevBicycleList(tDevBicycle);
+        ExcelUtil<TDevBicycle> util = new ExcelUtil<TDevBicycle>(TDevBicycle.class);
+        return util.exportExcel(list,  "自行车数据");
+    }
+
+    /**
+     * 导出自行车列表
+     */
+    @Log(title = "自行车二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevBicycle tDevBicycle) {
+        List<TDevBicycle> list = tDevBicycleService.selectTDevBicycleList(tDevBicycle);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevBicycle item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), ""));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取自行车详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevBicycleService.selectTDevBicycleById(id));
+    }
+
+    /**
+     * 新增自行车
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:add')")
+    @Log(title = "自行车", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevBicycle tDevBicycle) {
+        return toAjax(tDevBicycleService.insertTDevBicycle(tDevBicycle));
+    }
+
+    /**
+     * 修改自行车
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:edit')")
+    @Log(title = "自行车", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevBicycle tDevBicycle) {
+        return toAjax(tDevBicycleService.updateTDevBicycle(tDevBicycle));
+    }
+
+    /**
+     * 删除自行车
+     */
+    @PreAuthorize("@ss.hasPermi('dev:bicycle:remove')")
+    @Log(title = "自行车", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevBicycleService.deleteTDevBicycleByIds(ids));
+    }
+}

+ 107 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCabinetController.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevCabinet;
+import com.ruoyi.project.patrol.dev.service.ITDevCabinetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 应急事故柜Controller
+ *
+ * @author admin
+ * @date 2023-11-07
+ */
+@RestController
+@RequestMapping("/dev/cabinet")
+public class TDevCabinetController extends BaseController {
+    @Autowired
+    private ITDevCabinetService tDevCabinetService;
+
+    /**
+     * 查询应急事故柜列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevCabinet tDevCabinet) {
+        startPage();
+        List<TDevCabinet> list = tDevCabinetService.selectTDevCabinetList(tDevCabinet);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出应急事故柜列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:export')")
+    @Log(title = "应急事故柜", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevCabinet tDevCabinet) {
+        List<TDevCabinet> list = tDevCabinetService.selectTDevCabinetList(tDevCabinet);
+        ExcelUtil<TDevCabinet> util = new ExcelUtil<TDevCabinet>(TDevCabinet.class);
+        return util.exportExcel(list,  "应急事故柜数据");
+    }
+
+    @Log(title = "应急事故柜二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response,TDevCabinet tDevCabinet) {
+        tDevCabinet.setDevType(null);
+        List<TDevCabinet> list = tDevCabinetService.selectTDevCabinetList(tDevCabinet);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevCabinet item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), "事故柜"+item.getDevType()+":"+item.getDevName() ,item.getPatrolType()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取应急事故柜详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevCabinetService.selectTDevCabinetById(id));
+    }
+
+    /**
+     * 新增应急事故柜
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:add')")
+    @Log(title = "应急事故柜", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevCabinet tDevCabinet) {
+        return toAjax(tDevCabinetService.insertTDevCabinet(tDevCabinet));
+    }
+
+    /**
+     * 修改应急事故柜
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:edit')")
+    @Log(title = "应急事故柜", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevCabinet tDevCabinet) {
+        return toAjax(tDevCabinetService.updateTDevCabinet(tDevCabinet));
+    }
+
+    /**
+     * 删除应急事故柜
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cabinet:remove')")
+    @Log(title = "应急事故柜", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevCabinetService.deleteTDevCabinetByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCctvController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevCctv;
+import com.ruoyi.project.patrol.dev.service.ITDevCctvService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * CCTV系统Controller
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+@RestController
+@RequestMapping("/dev/cctv")
+public class TDevCctvController extends BaseController {
+    @Autowired
+    private ITDevCctvService tDevCctvService;
+
+    /**
+     * 查询CCTV系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevCctv tDevCctv) {
+        startPage();
+        List<TDevCctv> list = tDevCctvService.selectTDevCctvList(tDevCctv);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出CCTV系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:export')")
+    @Log(title = "CCTV系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevCctv tDevCctv) {
+        List<TDevCctv> list = tDevCctvService.selectTDevCctvList(tDevCctv);
+        ExcelUtil<TDevCctv> util = new ExcelUtil<TDevCctv>(TDevCctv.class);
+        return util.exportExcel(list,  "CCTV系统数据");
+    }
+
+    @Log(title = "CCTV系统二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevCctv tDevCctv) {
+        List<TDevCctv> list = tDevCctvService.selectTDevCctvList(tDevCctv);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevCctv item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), ""));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取CCTV系统详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevCctvService.selectTDevCctvById(id));
+    }
+
+    /**
+     * 新增CCTV系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:add')")
+    @Log(title = "CCTV系统", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevCctv tDevCctv) {
+        return toAjax(tDevCctvService.insertTDevCctv(tDevCctv));
+    }
+
+    /**
+     * 修改CCTV系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:edit')")
+    @Log(title = "CCTV系统", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevCctv tDevCctv) {
+        return toAjax(tDevCctvService.updateTDevCctv(tDevCctv));
+    }
+
+    /**
+     * 删除CCTV系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cctv:remove')")
+    @Log(title = "CCTV系统", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevCctvService.deleteTDevCctvByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevCofferdamController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevCofferdam;
+import com.ruoyi.project.patrol.dev.service.ITDevCofferdamService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 蒸汽裂解装置各区域围堰Controller
+ *
+ * @author admin
+ * @date 2023-11-06
+ */
+@RestController
+@RequestMapping("/dev/cofferdam")
+public class TDevCofferdamController extends BaseController
+{
+    @Autowired
+    private ITDevCofferdamService tDevCofferdamService;
+
+    /**
+     * 查询蒸汽裂解装置各区域围堰列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevCofferdam tDevCofferdam)
+    {
+        startPage();
+        List<TDevCofferdam> list = tDevCofferdamService.selectTDevCofferdamList(tDevCofferdam);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出蒸汽裂解装置各区域围堰列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:export')")
+    @Log(title = "蒸汽裂解装置各区域围堰", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevCofferdam tDevCofferdam)
+    {
+        List<TDevCofferdam> list = tDevCofferdamService.selectTDevCofferdamList(tDevCofferdam);
+        ExcelUtil<TDevCofferdam> util = new ExcelUtil<TDevCofferdam>(TDevCofferdam.class);
+        return util.exportExcel(list,  "蒸汽裂解装置各区域围堰数据");
+    }
+
+    @Log(title = "蒸汽裂解装置各区域围堰二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevCofferdam tDevCofferdam) {
+        List<TDevCofferdam> list = tDevCofferdamService.selectTDevCofferdamList(tDevCofferdam);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevCofferdam item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), ""));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取蒸汽裂解装置各区域围堰详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevCofferdamService.selectTDevCofferdamById(id));
+    }
+
+    /**
+     * 新增蒸汽裂解装置各区域围堰
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:add')")
+    @Log(title = "蒸汽裂解装置各区域围堰", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevCofferdam tDevCofferdam)
+    {
+        return toAjax(tDevCofferdamService.insertTDevCofferdam(tDevCofferdam));
+    }
+
+    /**
+     * 修改蒸汽裂解装置各区域围堰
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:edit')")
+    @Log(title = "蒸汽裂解装置各区域围堰", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevCofferdam tDevCofferdam)
+    {
+        return toAjax(tDevCofferdamService.updateTDevCofferdam(tDevCofferdam));
+    }
+
+    /**
+     * 删除蒸汽裂解装置各区域围堰
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cofferdam:remove')")
+    @Log(title = "蒸汽裂解装置各区域围堰", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevCofferdamService.deleteTDevCofferdamByIds(ids));
+    }
+}

+ 107 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevDoorController.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevDoor;
+import com.ruoyi.project.patrol.dev.service.ITDevDoorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 常闭式防爆门/防火门Controller
+ *
+ * @author admin
+ * @date 2023-11-07
+ */
+@RestController
+@RequestMapping("/dev/door")
+public class TDevDoorController extends BaseController {
+    @Autowired
+    private ITDevDoorService tDevDoorService;
+
+    /**
+     * 查询常闭式防爆门/防火门列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevDoor tDevDoor) {
+        startPage();
+        List<TDevDoor> list = tDevDoorService.selectTDevDoorList(tDevDoor);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出常闭式防爆门/防火门列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:export')")
+    @Log(title = "常闭式防爆门/防火门", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevDoor tDevDoor) {
+        List<TDevDoor> list = tDevDoorService.selectTDevDoorList(tDevDoor);
+        ExcelUtil<TDevDoor> util = new ExcelUtil<TDevDoor>(TDevDoor.class);
+        return util.exportExcel(list,  "常闭式防爆门及防火门数据");
+    }
+
+    @Log(title = "常闭式防爆门/防火门二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevDoor tDevDoor) {
+        tDevDoor.setDevType(null);
+        List<TDevDoor> list = tDevDoorService.selectTDevDoorList(tDevDoor);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevDoor item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getDevType()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取常闭式防爆门/防火门详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevDoorService.selectTDevDoorById(id));
+    }
+
+    /**
+     * 新增常闭式防爆门/防火门
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:add')")
+    @Log(title = "常闭式防爆门/防火门", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevDoor tDevDoor) {
+        return toAjax(tDevDoorService.insertTDevDoor(tDevDoor));
+    }
+
+    /**
+     * 修改常闭式防爆门/防火门
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:edit')")
+    @Log(title = "常闭式防爆门/防火门", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevDoor tDevDoor) {
+        return toAjax(tDevDoorService.updateTDevDoor(tDevDoor));
+    }
+
+    /**
+     * 删除常闭式防爆门/防火门
+     */
+    @PreAuthorize("@ss.hasPermi('dev:door:remove')")
+    @Log(title = "常闭式防爆门/防火门", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevDoorService.deleteTDevDoorByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevDownspoutController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevDownspout;
+import com.ruoyi.project.patrol.dev.service.ITDevDownspoutService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 落水管Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/downspout")
+public class TDevDownspoutController extends BaseController {
+    @Autowired
+    private ITDevDownspoutService tDevDownspoutService;
+
+    /**
+     * 查询落水管列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevDownspout tDevDownspout) {
+        startPage();
+        List<TDevDownspout> list = tDevDownspoutService.selectTDevDownspoutList(tDevDownspout);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出落水管列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:export')")
+    @Log(title = "落水管", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevDownspout tDevDownspout) {
+        List<TDevDownspout> list = tDevDownspoutService.selectTDevDownspoutList(tDevDownspout);
+        ExcelUtil<TDevDownspout> util = new ExcelUtil<TDevDownspout>(TDevDownspout.class);
+        return util.exportExcel(list,  "落水管数据");
+    }
+
+    @Log(title = "落水管二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response,  TDevDownspout tDevDownspout) {
+        List<TDevDownspout> list = tDevDownspoutService.selectTDevDownspoutList(tDevDownspout);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevDownspout item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getPosition(), item.getPatrolType() ));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取落水管详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevDownspoutService.selectTDevDownspoutById(id));
+    }
+
+    /**
+     * 新增落水管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:add')")
+    @Log(title = "落水管", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevDownspout tDevDownspout) {
+        return toAjax(tDevDownspoutService.insertTDevDownspout(tDevDownspout));
+    }
+
+    /**
+     * 修改落水管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:edit')")
+    @Log(title = "落水管", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevDownspout tDevDownspout) {
+        return toAjax(tDevDownspoutService.updateTDevDownspout(tDevDownspout));
+    }
+
+    /**
+     * 删除落水管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:downspout:remove')")
+    @Log(title = "落水管", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevDownspoutService.deleteTDevDownspoutByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevEarplugController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevEarplug;
+import com.ruoyi.project.patrol.dev.service.ITDevEarplugService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 耳塞分配器Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/earplug")
+public class TDevEarplugController extends BaseController {
+    @Autowired
+    private ITDevEarplugService tDevEarplugService;
+
+    /**
+     * 查询耳塞分配器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevEarplug tDevEarplug) {
+        startPage();
+        List<TDevEarplug> list = tDevEarplugService.selectTDevEarplugList(tDevEarplug);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出耳塞分配器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:export')")
+    @Log(title = "耳塞分配器", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevEarplug tDevEarplug) {
+        List<TDevEarplug> list = tDevEarplugService.selectTDevEarplugList(tDevEarplug);
+        ExcelUtil<TDevEarplug> util = new ExcelUtil<TDevEarplug>(TDevEarplug.class);
+        return util.exportExcel(list,  "耳塞分配器数据");
+    }
+
+    @Log(title = "耳塞分配器二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevEarplug tDevEarplug) {
+        List<TDevEarplug> list = tDevEarplugService.selectTDevEarplugList(tDevEarplug);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevEarplug item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取耳塞分配器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevEarplugService.selectTDevEarplugById(id));
+    }
+
+    /**
+     * 新增耳塞分配器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:add')")
+    @Log(title = "耳塞分配器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevEarplug tDevEarplug) {
+        return toAjax(tDevEarplugService.insertTDevEarplug(tDevEarplug));
+    }
+
+    /**
+     * 修改耳塞分配器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:edit')")
+    @Log(title = "耳塞分配器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevEarplug tDevEarplug) {
+        return toAjax(tDevEarplugService.updateTDevEarplug(tDevEarplug));
+    }
+
+    /**
+     * 删除耳塞分配器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:earplug:remove')")
+    @Log(title = "耳塞分配器", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevEarplugService.deleteTDevEarplugByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevEyewashController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevEyewash;
+import com.ruoyi.project.patrol.dev.service.ITDevEyewashService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 洗眼器Controller
+ *
+ * @author ruoyi
+ * @date 2023-09-04
+ */
+@RestController
+@RequestMapping("/dev/eyewash")
+public class TDevEyewashController extends BaseController
+{
+    @Autowired
+    private ITDevEyewashService tDevEyewashService;
+
+    /**
+     * 查询洗眼器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevEyewash tDevEyewash)
+    {
+        startPage();
+        List<TDevEyewash> list = tDevEyewashService.selectTDevEyewashList(tDevEyewash);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出洗眼器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:export')")
+    @Log(title = "洗眼器", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevEyewash tDevEyewash)
+    {
+        List<TDevEyewash> list = tDevEyewashService.selectTDevEyewashList(tDevEyewash);
+        ExcelUtil<TDevEyewash> util = new ExcelUtil<TDevEyewash>(TDevEyewash.class);
+        return util.exportExcel(list,  "洗眼器数据");
+    }
+
+    @Log(title = "洗眼器", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevEyewash tDevEyewash){
+        List<TDevEyewash> list = tDevEyewashService.selectTDevEyewashList(tDevEyewash);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevEyewash item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(),item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取洗眼器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevEyewashService.selectTDevEyewashById(id));
+    }
+
+    /**
+     * 新增洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:add')")
+    @Log(title = "洗眼器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevEyewash tDevEyewash)
+    {
+        return toAjax(tDevEyewashService.insertTDevEyewash(tDevEyewash));
+    }
+
+    /**
+     * 修改洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:edit')")
+    @Log(title = "洗眼器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevEyewash tDevEyewash)
+    {
+        return toAjax(tDevEyewashService.updateTDevEyewash(tDevEyewash));
+    }
+
+    /**
+     * 删除洗眼器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:eyewash:remove')")
+    @Log(title = "洗眼器", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevEyewashService.deleteTDevEyewashByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevGasShieldController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevGasShield;
+import com.ruoyi.project.patrol.dev.service.ITDevGasShieldService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * CO2气体保护系统Controller
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/dev/shield")
+public class TDevGasShieldController extends BaseController {
+    @Autowired
+    private ITDevGasShieldService tDevGasShieldService;
+
+    /**
+     * 查询CO2气体保护系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevGasShield tDevGasShield) {
+        startPage();
+        List<TDevGasShield> list = tDevGasShieldService.selectTDevGasShieldList(tDevGasShield);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出CO2气体保护系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:export')")
+    @Log(title = "CO2气体保护系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevGasShield tDevGasShield) {
+        List<TDevGasShield> list = tDevGasShieldService.selectTDevGasShieldList(tDevGasShield);
+        ExcelUtil<TDevGasShield> util = new ExcelUtil<TDevGasShield>(TDevGasShield.class);
+        return util.exportExcel(list,  "CO2气体保护系统数据");
+    }
+
+    @Log(title = "CO2气体保护系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevGasShield tDevGasShield) {
+        List<TDevGasShield> list = tDevGasShieldService.selectTDevGasShieldList(tDevGasShield);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevGasShield item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取CO2气体保护系统详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevGasShieldService.selectTDevGasShieldById(id));
+    }
+
+    /**
+     * 新增CO2气体保护系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:add')")
+    @Log(title = "CO2气体保护系统", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevGasShield tDevGasShield) {
+        return toAjax(tDevGasShieldService.insertTDevGasShield(tDevGasShield));
+    }
+
+    /**
+     * 修改CO2气体保护系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:edit')")
+    @Log(title = "CO2气体保护系统", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevGasShield tDevGasShield) {
+        return toAjax(tDevGasShieldService.updateTDevGasShield(tDevGasShield));
+    }
+
+    /**
+     * 删除CO2气体保护系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:shield:remove')")
+    @Log(title = "CO2气体保护系统", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevGasShieldService.deleteTDevGasShieldByIds(ids));
+    }
+}

+ 114 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevHoseBoxController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevHoseBox;
+import com.ruoyi.project.patrol.dev.service.ITDevHoseBoxService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 消防水带箱检查记录Controller
+ *
+ * @author admin
+ * @date 2023-10-31
+ */
+@RestController
+@RequestMapping("/dev/hoseBox")
+public class TDevHoseBoxController extends BaseController
+{
+    @Autowired
+    private ITDevHoseBoxService tDevHoseBoxService;
+
+    /**
+     * 查询消防水带箱检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevHoseBox tDevHoseBox)
+    {
+        startPage();
+        List<TDevHoseBox> list = tDevHoseBoxService.selectTDevHoseBoxList(tDevHoseBox);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出消防水带箱检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:export')")
+    @Log(title = "消防水带箱检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevHoseBox tDevHoseBox)
+    {
+        List<TDevHoseBox> list = tDevHoseBoxService.selectTDevHoseBoxList(tDevHoseBox);
+        ExcelUtil<TDevHoseBox> util = new ExcelUtil<TDevHoseBox>(TDevHoseBox.class);
+        return util.exportExcel(list,  "消防水带箱检查记录数据");
+    }
+
+    @Log(title = "消防水带箱二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevHoseBox tDevHoseBox) {
+        List<TDevHoseBox> list = tDevHoseBoxService.selectTDevHoseBoxList(tDevHoseBox);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevHoseBox item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(),item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+
+    /**
+     * 获取消防水带箱检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevHoseBoxService.selectTDevHoseBoxById(id));
+    }
+
+    /**
+     * 新增消防水带箱检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:add')")
+    @Log(title = "消防水带箱检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevHoseBox tDevHoseBox)
+    {
+        return toAjax(tDevHoseBoxService.insertTDevHoseBox(tDevHoseBox));
+    }
+
+    /**
+     * 修改消防水带箱检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:edit')")
+    @Log(title = "消防水带箱检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevHoseBox tDevHoseBox)
+    {
+        return toAjax(tDevHoseBoxService.updateTDevHoseBox(tDevHoseBox));
+    }
+
+    /**
+     * 删除消防水带箱检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:hoseBox:remove')")
+    @Log(title = "消防水带箱检查记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevHoseBoxService.deleteTDevHoseBoxByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevManholeCoverController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevManholeCover;
+import com.ruoyi.project.patrol.dev.service.ITDevManholeCoverService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 地井盖Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/cover")
+public class TDevManholeCoverController extends BaseController {
+    @Autowired
+    private ITDevManholeCoverService tDevManholeCoverService;
+
+    /**
+     * 查询地井盖列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevManholeCover tDevManholeCover) {
+        startPage();
+        List<TDevManholeCover> list = tDevManholeCoverService.selectTDevManholeCoverList(tDevManholeCover);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出地井盖列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:export')")
+    @Log(title = "地井盖", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevManholeCover tDevManholeCover) {
+        List<TDevManholeCover> list = tDevManholeCoverService.selectTDevManholeCoverList(tDevManholeCover);
+        ExcelUtil<TDevManholeCover> util = new ExcelUtil<TDevManholeCover>(TDevManholeCover.class);
+        return util.exportExcel(list,  "地井盖数据");
+    }
+
+    @Log(title = "地井盖二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevManholeCover tDevManholeCover) {
+        List<TDevManholeCover> list = tDevManholeCoverService.selectTDevManholeCoverList(tDevManholeCover);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevManholeCover item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取地井盖详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevManholeCoverService.selectTDevManholeCoverById(id));
+    }
+
+    /**
+     * 新增地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:add')")
+    @Log(title = "地井盖", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevManholeCover tDevManholeCover) {
+        return toAjax(tDevManholeCoverService.insertTDevManholeCover(tDevManholeCover));
+    }
+
+    /**
+     * 修改地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:edit')")
+    @Log(title = "地井盖", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevManholeCover tDevManholeCover) {
+        return toAjax(tDevManholeCoverService.updateTDevManholeCover(tDevManholeCover));
+    }
+
+    /**
+     * 删除地井盖
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cover:remove')")
+    @Log(title = "地井盖", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevManholeCoverService.deleteTDevManholeCoverByIds(ids));
+    }
+}

+ 107 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevMovementController.java

@@ -0,0 +1,107 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevMovement;
+import com.ruoyi.project.patrol.dev.service.ITDevMovementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 移动平台及移动梯Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/movement")
+public class TDevMovementController extends BaseController {
+    @Autowired
+    private ITDevMovementService tDevMovementService;
+
+    /**
+     * 查询移动平台及移动梯列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevMovement tDevMovement) {
+        startPage();
+        List<TDevMovement> list = tDevMovementService.selectTDevMovementList(tDevMovement);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出移动平台及移动梯列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:export')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevMovement tDevMovement) {
+        List<TDevMovement> list = tDevMovementService.selectTDevMovementList(tDevMovement);
+        ExcelUtil<TDevMovement> util = new ExcelUtil<TDevMovement>(TDevMovement.class);
+        return util.exportExcel(list,  "移动平台及移动梯数据");
+    }
+
+    @Log(title = "移动平台及移动梯二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevMovement tDevMovement) {
+        List<TDevMovement> list = tDevMovementService.selectTDevMovementList(tDevMovement);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevMovement item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+
+    /**
+     * 获取移动平台及移动梯详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevMovementService.selectTDevMovementById(id));
+    }
+
+    /**
+     * 新增移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:add')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevMovement tDevMovement) {
+        return toAjax(tDevMovementService.insertTDevMovement(tDevMovement));
+    }
+
+    /**
+     * 修改移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:edit')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevMovement tDevMovement) {
+        return toAjax(tDevMovementService.updateTDevMovement(tDevMovement));
+    }
+
+    /**
+     * 删除移动平台及移动梯
+     */
+    @PreAuthorize("@ss.hasPermi('dev:movement:remove')")
+    @Log(title = "移动平台及移动梯", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevMovementService.deleteTDevMovementByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevPagaController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevPaga;
+import com.ruoyi.project.patrol.dev.service.ITDevPagaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * PAGAController
+ *
+ * @author admin
+ * @date 2023-11-02
+ */
+@RestController
+@RequestMapping("/dev/paga")
+public class TDevPagaController extends BaseController {
+    @Autowired
+    private ITDevPagaService tDevPagaService;
+
+    /**
+     * 查询PAGA列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevPaga tDevPaga) {
+        startPage();
+        List<TDevPaga> list = tDevPagaService.selectTDevPagaList(tDevPaga);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出PAGA列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:export')")
+    @Log(title = "PAGA", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevPaga tDevPaga) {
+        List<TDevPaga> list = tDevPagaService.selectTDevPagaList(tDevPaga);
+        ExcelUtil<TDevPaga> util = new ExcelUtil<TDevPaga>(TDevPaga.class);
+        return util.exportExcel(list,  "PAGA数据");
+    }
+
+    @Log(title = "PAGA二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevPaga tDevPaga) {
+        List<TDevPaga> list = tDevPagaService.selectTDevPagaList(tDevPaga);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevPaga item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取PAGA详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevPagaService.selectTDevPagaById(id));
+    }
+
+    /**
+     * 新增PAGA
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:add')")
+    @Log(title = "PAGA", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevPaga tDevPaga) {
+        return toAjax(tDevPagaService.insertTDevPaga(tDevPaga));
+    }
+
+    /**
+     * 修改PAGA
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:edit')")
+    @Log(title = "PAGA", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevPaga tDevPaga) {
+        return toAjax(tDevPagaService.updateTDevPaga(tDevPaga));
+    }
+
+    /**
+     * 删除PAGA
+     */
+    @PreAuthorize("@ss.hasPermi('dev:paga:remove')")
+    @Log(title = "PAGA", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevPagaService.deleteTDevPagaByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevPostFireController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevPostFire;
+import com.ruoyi.project.patrol.dev.service.ITDevPostFireService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 地上消火栓检查记录Controller
+ *
+ * @author ruoyi
+ * @date 2023-10-30
+ */
+@RestController
+@RequestMapping("/dev/postFire")
+public class TDevPostFireController extends BaseController
+{
+    @Autowired
+    private ITDevPostFireService tDevPostFireService;
+
+    /**
+     * 查询地上消火栓检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevPostFire tDevPostFire)
+    {
+        startPage();
+        List<TDevPostFire> list = tDevPostFireService.selectTDevPostFireList(tDevPostFire);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出地上消火栓检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:export')")
+    @Log(title = "地上消火栓检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevPostFire tDevPostFire)
+    {
+        List<TDevPostFire> list = tDevPostFireService.selectTDevPostFireList(tDevPostFire);
+        ExcelUtil<TDevPostFire> util = new ExcelUtil<TDevPostFire>(TDevPostFire.class);
+        return util.exportExcel(list,  "地上消火栓检查记录数据");
+    }
+
+    @Log(title = "地上消火栓二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevPostFire tDevPostFire) {
+        List<TDevPostFire> list = tDevPostFireService.selectTDevPostFireList(tDevPostFire);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevPostFire item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(),item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取地上消火栓检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevPostFireService.selectTDevPostFireById(id));
+    }
+
+    /**
+     * 新增地上消火栓检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:add')")
+    @Log(title = "地上消火栓检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevPostFire tDevPostFire)
+    {
+        return toAjax(tDevPostFireService.insertTDevPostFire(tDevPostFire));
+    }
+
+    /**
+     * 修改地上消火栓检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:edit')")
+    @Log(title = "地上消火栓检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevPostFire tDevPostFire)
+    {
+        return toAjax(tDevPostFireService.updateTDevPostFire(tDevPostFire));
+    }
+
+    /**
+     * 删除地上消火栓检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:postFire:remove')")
+    @Log(title = "地上消火栓检查记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevPostFireService.deleteTDevPostFireByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSafetyBeltController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevSafetyBelt;
+import com.ruoyi.project.patrol.dev.service.ITDevSafetyBeltService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 安全带Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/safetyBelt")
+public class TDevSafetyBeltController extends BaseController {
+    @Autowired
+    private ITDevSafetyBeltService tDevSafetyBeltService;
+
+    /**
+     * 查询安全带列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevSafetyBelt tDevSafetyBelt) {
+        startPage();
+        List<TDevSafetyBelt> list = tDevSafetyBeltService.selectTDevSafetyBeltList(tDevSafetyBelt);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出安全带列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:export')")
+    @Log(title = "安全带", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevSafetyBelt tDevSafetyBelt) {
+        List<TDevSafetyBelt> list = tDevSafetyBeltService.selectTDevSafetyBeltList(tDevSafetyBelt);
+        ExcelUtil<TDevSafetyBelt> util = new ExcelUtil<TDevSafetyBelt>(TDevSafetyBelt.class);
+        return util.exportExcel(list,  "安全带数据");
+    }
+
+    @Log(title = "安全带二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevSafetyBelt tDevSafetyBelt) {
+        List<TDevSafetyBelt> list = tDevSafetyBeltService.selectTDevSafetyBeltList(tDevSafetyBelt);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevSafetyBelt item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取安全带详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevSafetyBeltService.selectTDevSafetyBeltById(id));
+    }
+
+    /**
+     * 新增安全带
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:add')")
+    @Log(title = "安全带", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevSafetyBelt tDevSafetyBelt) {
+        return toAjax(tDevSafetyBeltService.insertTDevSafetyBelt(tDevSafetyBelt));
+    }
+
+    /**
+     * 修改安全带
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:edit')")
+    @Log(title = "安全带", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevSafetyBelt tDevSafetyBelt) {
+        return toAjax(tDevSafetyBeltService.updateTDevSafetyBelt(tDevSafetyBelt));
+    }
+
+    /**
+     * 删除安全带
+     */
+    @PreAuthorize("@ss.hasPermi('dev:safetyBelt:remove')")
+    @Log(title = "安全带", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevSafetyBeltService.deleteTDevSafetyBeltByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSandboxController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevSandbox;
+import com.ruoyi.project.patrol.dev.service.ITDevSandboxService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 应急沙箱Controller
+ *
+ * @author admin
+ * @date 2023-11-02
+ */
+@RestController
+@RequestMapping("/dev/sandbox")
+public class TDevSandboxController extends BaseController
+{
+    @Autowired
+    private ITDevSandboxService tDevSandboxService;
+
+    /**
+     * 查询应急沙箱列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevSandbox tDevSandbox)
+    {
+        startPage();
+        List<TDevSandbox> list = tDevSandboxService.selectTDevSandboxList(tDevSandbox);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出应急沙箱列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:export')")
+    @Log(title = "应急沙箱", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevSandbox tDevSandbox)
+    {
+        List<TDevSandbox> list = tDevSandboxService.selectTDevSandboxList(tDevSandbox);
+        ExcelUtil<TDevSandbox> util = new ExcelUtil<TDevSandbox>(TDevSandbox.class);
+        return util.exportExcel(list,  "应急沙箱数据");
+    }
+
+    @Log(title = "应急沙箱二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response,  TDevSandbox tDevSandbox) {
+        List<TDevSandbox> list = tDevSandboxService.selectTDevSandboxList(tDevSandbox);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevSandbox item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取应急沙箱详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevSandboxService.selectTDevSandboxById(id));
+    }
+
+    /**
+     * 新增应急沙箱
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:add')")
+    @Log(title = "应急沙箱", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevSandbox tDevSandbox)
+    {
+        return toAjax(tDevSandboxService.insertTDevSandbox(tDevSandbox));
+    }
+
+    /**
+     * 修改应急沙箱
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:edit')")
+    @Log(title = "应急沙箱", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevSandbox tDevSandbox)
+    {
+        return toAjax(tDevSandboxService.updateTDevSandbox(tDevSandbox));
+    }
+
+    /**
+     * 删除应急沙箱
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sandbox:remove')")
+    @Log(title = "应急沙箱", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevSandboxService.deleteTDevSandboxByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSprinklerController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevSprinkler;
+import com.ruoyi.project.patrol.dev.service.ITDevSprinklerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 自动喷淋灭火系统Controller
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+@RestController
+@RequestMapping("/dev/sprinkler")
+public class TDevSprinklerController extends BaseController
+{
+    @Autowired
+    private ITDevSprinklerService tDevSprinklerService;
+
+    /**
+     * 查询自动喷淋灭火系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevSprinkler tDevSprinkler)
+    {
+        startPage();
+        List<TDevSprinkler> list = tDevSprinklerService.selectTDevSprinklerList(tDevSprinkler);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出自动喷淋灭火系统列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:export')")
+    @Log(title = "自动喷淋灭火系统", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevSprinkler tDevSprinkler)
+    {
+        List<TDevSprinkler> list = tDevSprinklerService.selectTDevSprinklerList(tDevSprinkler);
+        ExcelUtil<TDevSprinkler> util = new ExcelUtil<TDevSprinkler>(TDevSprinkler.class);
+        return util.exportExcel(list,  "自动喷淋灭火系统数据");
+    }
+
+    @Log(title = "自动喷淋灭火系统二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response,TDevSprinkler tDevSprinkler) {
+        List<TDevSprinkler> list = tDevSprinklerService.selectTDevSprinklerList(tDevSprinkler);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevSprinkler item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取自动喷淋灭火系统详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevSprinklerService.selectTDevSprinklerById(id));
+    }
+
+    /**
+     * 新增自动喷淋灭火系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:add')")
+    @Log(title = "自动喷淋灭火系统", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevSprinkler tDevSprinkler)
+    {
+        return toAjax(tDevSprinklerService.insertTDevSprinkler(tDevSprinkler));
+    }
+
+    /**
+     * 修改自动喷淋灭火系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:edit')")
+    @Log(title = "自动喷淋灭火系统", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevSprinkler tDevSprinkler)
+    {
+        return toAjax(tDevSprinklerService.updateTDevSprinkler(tDevSprinkler));
+    }
+
+    /**
+     * 删除自动喷淋灭火系统
+     */
+    @PreAuthorize("@ss.hasPermi('dev:sprinkler:remove')")
+    @Log(title = "自动喷淋灭火系统", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevSprinklerService.deleteTDevSprinklerByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevStandpipeController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevStandpipe;
+import com.ruoyi.project.patrol.dev.service.ITDevStandpipeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 消防竖管Controller
+ *
+ * @author admin
+ * @date 2023-10-31
+ */
+@RestController
+@RequestMapping("/dev/standpipe")
+public class TDevStandpipeController extends BaseController {
+    @Autowired
+    private ITDevStandpipeService tDevStandpipeService;
+
+    /**
+     * 查询消防竖管列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevStandpipe tDevStandpipe) {
+        startPage();
+        List<TDevStandpipe> list = tDevStandpipeService.selectTDevStandpipeList(tDevStandpipe);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出消防竖管列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:export')")
+    @Log(title = "消防竖管", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevStandpipe tDevStandpipe) {
+        List<TDevStandpipe> list = tDevStandpipeService.selectTDevStandpipeList(tDevStandpipe);
+        ExcelUtil<TDevStandpipe> util = new ExcelUtil<TDevStandpipe>(TDevStandpipe.class);
+        return util.exportExcel(list,  "消防竖管数据");
+    }
+
+    @Log(title = "消防竖管二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevStandpipe tDevStandpipe) {
+        List<TDevStandpipe> list = tDevStandpipeService.selectTDevStandpipeList(tDevStandpipe);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevStandpipe item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取消防竖管详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevStandpipeService.selectTDevStandpipeById(id));
+    }
+
+    /**
+     * 新增消防竖管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:add')")
+    @Log(title = "消防竖管", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevStandpipe tDevStandpipe) {
+        return toAjax(tDevStandpipeService.insertTDevStandpipe(tDevStandpipe));
+    }
+
+    /**
+     * 修改消防竖管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:edit')")
+    @Log(title = "消防竖管", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevStandpipe tDevStandpipe) {
+        return toAjax(tDevStandpipeService.updateTDevStandpipe(tDevStandpipe));
+    }
+
+    /**
+     * 删除消防竖管
+     */
+    @PreAuthorize("@ss.hasPermi('dev:standpipe:remove')")
+    @Log(title = "消防竖管", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevStandpipeService.deleteTDevStandpipeByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevSteamCurtainController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevSteamCurtain;
+import com.ruoyi.project.patrol.dev.service.ITDevSteamCurtainService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 蒸汽幕Controller
+ *
+ * @author admin
+ * @date 2023-11-06
+ */
+@RestController
+@RequestMapping("/dev/curtain")
+public class TDevSteamCurtainController extends BaseController {
+    @Autowired
+    private ITDevSteamCurtainService tDevSteamCurtainService;
+
+    /**
+     * 查询蒸汽幕列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevSteamCurtain tDevSteamCurtain) {
+        startPage();
+        List<TDevSteamCurtain> list = tDevSteamCurtainService.selectTDevSteamCurtainList(tDevSteamCurtain);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出蒸汽幕列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:export')")
+    @Log(title = "蒸汽幕", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevSteamCurtain tDevSteamCurtain) {
+        List<TDevSteamCurtain> list = tDevSteamCurtainService.selectTDevSteamCurtainList(tDevSteamCurtain);
+        ExcelUtil<TDevSteamCurtain> util = new ExcelUtil<TDevSteamCurtain>(TDevSteamCurtain.class);
+        return util.exportExcel(list,  "蒸汽幕数据");
+    }
+
+    @Log(title = "蒸汽幕二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevSteamCurtain tDevSteamCurtain) {
+        List<TDevSteamCurtain> list = tDevSteamCurtainService.selectTDevSteamCurtainList(tDevSteamCurtain);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevSteamCurtain item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), ""));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取蒸汽幕详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevSteamCurtainService.selectTDevSteamCurtainById(id));
+    }
+
+    /**
+     * 新增蒸汽幕
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:add')")
+    @Log(title = "蒸汽幕", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevSteamCurtain tDevSteamCurtain) {
+        return toAjax(tDevSteamCurtainService.insertTDevSteamCurtain(tDevSteamCurtain));
+    }
+
+    /**
+     * 修改蒸汽幕
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:edit')")
+    @Log(title = "蒸汽幕", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevSteamCurtain tDevSteamCurtain) {
+        return toAjax(tDevSteamCurtainService.updateTDevSteamCurtain(tDevSteamCurtain));
+    }
+
+    /**
+     * 删除蒸汽幕
+     */
+    @PreAuthorize("@ss.hasPermi('dev:curtain:remove')")
+    @Log(title = "蒸汽幕", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevSteamCurtainService.deleteTDevSteamCurtainByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevTesterController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevTester;
+import com.ruoyi.project.patrol.dev.service.ITDevTesterService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 检测仪Controller
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+@RestController
+@RequestMapping("/dev/tester")
+public class TDevTesterController extends BaseController {
+    @Autowired
+    private ITDevTesterService tDevTesterService;
+
+    /**
+     * 查询检测仪列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevTester tDevTester) {
+        startPage();
+        List<TDevTester> list = tDevTesterService.selectTDevTesterList(tDevTester);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出检测仪列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:export')")
+    @Log(title = "检测仪", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevTester tDevTester) {
+        List<TDevTester> list = tDevTesterService.selectTDevTesterList(tDevTester);
+        ExcelUtil<TDevTester> util = new ExcelUtil<TDevTester>(TDevTester.class);
+        return util.exportExcel(list,  "检测仪数据");
+    }
+
+    @Log(title = "检测仪二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevTester tDevTester) {
+        List<TDevTester> list = tDevTesterService.selectTDevTesterList(tDevTester);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevTester item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), "类型:" + item.getTesterType() + " 编号:" + item.getTesterNo(), item.getPatrolType()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取检测仪详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevTesterService.selectTDevTesterById(id));
+    }
+
+    /**
+     * 新增检测仪
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:add')")
+    @Log(title = "检测仪", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevTester tDevTester) {
+        return toAjax(tDevTesterService.insertTDevTester(tDevTester));
+    }
+
+    /**
+     * 修改检测仪
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:edit')")
+    @Log(title = "检测仪", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevTester tDevTester) {
+        return toAjax(tDevTesterService.updateTDevTester(tDevTester));
+    }
+
+    /**
+     * 删除检测仪
+     */
+    @PreAuthorize("@ss.hasPermi('dev:tester:remove')")
+    @Log(title = "检测仪", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevTesterService.deleteTDevTesterByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWalkieTalkieController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevWalkieTalkie;
+import com.ruoyi.project.patrol.dev.service.ITDevWalkieTalkieService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 对讲机Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/walkieTalkie")
+public class TDevWalkieTalkieController extends BaseController {
+    @Autowired
+    private ITDevWalkieTalkieService tDevWalkieTalkieService;
+
+    /**
+     * 查询对讲机列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevWalkieTalkie tDevWalkieTalkie) {
+        startPage();
+        List<TDevWalkieTalkie> list = tDevWalkieTalkieService.selectTDevWalkieTalkieList(tDevWalkieTalkie);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出对讲机列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:export')")
+    @Log(title = "对讲机", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevWalkieTalkie tDevWalkieTalkie) {
+        List<TDevWalkieTalkie> list = tDevWalkieTalkieService.selectTDevWalkieTalkieList(tDevWalkieTalkie);
+        ExcelUtil<TDevWalkieTalkie> util = new ExcelUtil<TDevWalkieTalkie>(TDevWalkieTalkie.class);
+        return util.exportExcel(list,  "对讲机数据");
+    }
+
+    @Log(title = "对讲机二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevWalkieTalkie tDevWalkieTalkie) {
+        List<TDevWalkieTalkie> list = tDevWalkieTalkieService.selectTDevWalkieTalkieList(tDevWalkieTalkie);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevWalkieTalkie item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), ""));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取对讲机详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevWalkieTalkieService.selectTDevWalkieTalkieById(id));
+    }
+
+    /**
+     * 新增对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:add')")
+    @Log(title = "对讲机", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevWalkieTalkie tDevWalkieTalkie) {
+        return toAjax(tDevWalkieTalkieService.insertTDevWalkieTalkie(tDevWalkieTalkie));
+    }
+
+    /**
+     * 修改对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:edit')")
+    @Log(title = "对讲机", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevWalkieTalkie tDevWalkieTalkie) {
+        return toAjax(tDevWalkieTalkieService.updateTDevWalkieTalkie(tDevWalkieTalkie));
+    }
+
+    /**
+     * 删除对讲机
+     */
+    @PreAuthorize("@ss.hasPermi('dev:walkieTalkie:remove')")
+    @Log(title = "对讲机", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevWalkieTalkieService.deleteTDevWalkieTalkieByIds(ids));
+    }
+}

+ 113 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWaterCannonController.java

@@ -0,0 +1,113 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevWaterCannon;
+import com.ruoyi.project.patrol.dev.service.ITDevWaterCannonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 消防水炮检查记录Controller
+ *
+ * @author admin
+ * @date 2023-10-30
+ */
+@RestController
+@RequestMapping("/dev/cannon")
+public class TDevWaterCannonController extends BaseController
+{
+    @Autowired
+    private ITDevWaterCannonService tDevWaterCannonService;
+
+    /**
+     * 查询消防水炮检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevWaterCannon tDevWaterCannon)
+    {
+        startPage();
+        List<TDevWaterCannon> list = tDevWaterCannonService.selectTDevWaterCannonList(tDevWaterCannon);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出消防水炮检查记录列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:export')")
+    @Log(title = "消防水炮检查记录", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevWaterCannon tDevWaterCannon)
+    {
+        List<TDevWaterCannon> list = tDevWaterCannonService.selectTDevWaterCannonList(tDevWaterCannon);
+        ExcelUtil<TDevWaterCannon> util = new ExcelUtil<TDevWaterCannon>(TDevWaterCannon.class);
+        return util.exportExcel(list,  "消防水炮检查记录数据");
+    }
+
+    @Log(title = "洗眼器", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevWaterCannon tDevWaterCannon){
+        List<TDevWaterCannon> list = tDevWaterCannonService.selectTDevWaterCannonList(tDevWaterCannon);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevWaterCannon item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(),item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取消防水炮检查记录详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(tDevWaterCannonService.selectTDevWaterCannonById(id));
+    }
+
+    /**
+     * 新增消防水炮检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:add')")
+    @Log(title = "消防水炮检查记录", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevWaterCannon tDevWaterCannon)
+    {
+        return toAjax(tDevWaterCannonService.insertTDevWaterCannon(tDevWaterCannon));
+    }
+
+    /**
+     * 修改消防水炮检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:edit')")
+    @Log(title = "消防水炮检查记录", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevWaterCannon tDevWaterCannon)
+    {
+        return toAjax(tDevWaterCannonService.updateTDevWaterCannon(tDevWaterCannon));
+    }
+
+    /**
+     * 删除消防水炮检查记录
+     */
+    @PreAuthorize("@ss.hasPermi('dev:cannon:remove')")
+    @Log(title = "消防水炮检查记录", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(tDevWaterCannonService.deleteTDevWaterCannonByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWaterPumpController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevWaterPump;
+import com.ruoyi.project.patrol.dev.service.ITDevWaterPumpService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 水泵接合器Controller
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+@RestController
+@RequestMapping("/dev/pump")
+public class TDevWaterPumpController extends BaseController {
+    @Autowired
+    private ITDevWaterPumpService tDevWaterPumpService;
+
+    /**
+     * 查询水泵接合器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevWaterPump tDevWaterPump) {
+        startPage();
+        List<TDevWaterPump> list = tDevWaterPumpService.selectTDevWaterPumpList(tDevWaterPump);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出水泵接合器列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:export')")
+    @Log(title = "水泵接合器", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevWaterPump tDevWaterPump) {
+        List<TDevWaterPump> list = tDevWaterPumpService.selectTDevWaterPumpList(tDevWaterPump);
+        ExcelUtil<TDevWaterPump> util = new ExcelUtil<TDevWaterPump>(TDevWaterPump.class);
+        return util.exportExcel(list,  "水泵接合器数据");
+    }
+
+    @Log(title = "水泵接合器导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevWaterPump tDevWaterPump) {
+        List<TDevWaterPump> list = tDevWaterPumpService.selectTDevWaterPumpList(tDevWaterPump);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevWaterPump item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取水泵接合器详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevWaterPumpService.selectTDevWaterPumpById(id));
+    }
+
+    /**
+     * 新增水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:add')")
+    @Log(title = "水泵接合器", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevWaterPump tDevWaterPump) {
+        return toAjax(tDevWaterPumpService.insertTDevWaterPump(tDevWaterPump));
+    }
+
+    /**
+     * 修改水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:edit')")
+    @Log(title = "水泵接合器", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevWaterPump tDevWaterPump) {
+        return toAjax(tDevWaterPumpService.updateTDevWaterPump(tDevWaterPump));
+    }
+
+    /**
+     * 删除水泵接合器
+     */
+    @PreAuthorize("@ss.hasPermi('dev:pump:remove')")
+    @Log(title = "水泵接合器", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevWaterPumpService.deleteTDevWaterPumpByIds(ids));
+    }
+}

+ 106 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/controller/TDevWeathervaneController.java

@@ -0,0 +1,106 @@
+package com.ruoyi.project.patrol.dev.controller;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.poi.QRCodeEntity;
+import com.ruoyi.common.utils.poi.QRCodeUtil;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.project.patrol.dev.domain.TDevWeathervane;
+import com.ruoyi.project.patrol.dev.service.ITDevWeathervaneService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 风向标/风向袋/新风系统正压计Controller
+ *
+ * @author admin
+ * @date 2023-11-06
+ */
+@RestController
+@RequestMapping("/dev/weathervane")
+public class TDevWeathervaneController extends BaseController {
+    @Autowired
+    private ITDevWeathervaneService tDevWeathervaneService;
+
+    /**
+     * 查询风向标/风向袋/新风系统正压计列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(TDevWeathervane tDevWeathervane) {
+        startPage();
+        List<TDevWeathervane> list = tDevWeathervaneService.selectTDevWeathervaneList(tDevWeathervane);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出风向标/风向袋/新风系统正压计列表
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:export')")
+    @Log(title = "风向标/风向袋/新风系统正压计", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public AjaxResult export(TDevWeathervane tDevWeathervane) {
+        List<TDevWeathervane> list = tDevWeathervaneService.selectTDevWeathervaneList(tDevWeathervane);
+        ExcelUtil<TDevWeathervane> util = new ExcelUtil<TDevWeathervane>(TDevWeathervane.class);
+        return util.exportExcel(list,  "风向标/风向袋/新风系统正压计数据");
+    }
+
+    @Log(title = "风向标二维码导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportQRCode")
+    public void exportQRCode(HttpServletResponse response, TDevWeathervane tDevWeathervane) {
+        List<TDevWeathervane> list = tDevWeathervaneService.selectTDevWeathervaneList(tDevWeathervane);
+        List<QRCodeEntity> qrCodeEntities = new ArrayList<>();
+        for (TDevWeathervane item : list) {
+            qrCodeEntities.add(new QRCodeEntity(item.getId(), item.getDevNo(), item.getPatrolType(), item.getPosition()));
+        }
+        QRCodeUtil<QRCodeEntity> util = new QRCodeUtil<>(QRCodeEntity.class);
+        util.exportQRCode(response, qrCodeEntities);
+    }
+
+    /**
+     * 获取风向标/风向袋/新风系统正压计详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return AjaxResult.success(tDevWeathervaneService.selectTDevWeathervaneById(id));
+    }
+
+    /**
+     * 新增风向标/风向袋/新风系统正压计
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:add')")
+    @Log(title = "风向标/风向袋/新风系统正压计", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody TDevWeathervane tDevWeathervane) {
+        return toAjax(tDevWeathervaneService.insertTDevWeathervane(tDevWeathervane));
+    }
+
+    /**
+     * 修改风向标/风向袋/新风系统正压计
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:edit')")
+    @Log(title = "风向标/风向袋/新风系统正压计", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody TDevWeathervane tDevWeathervane) {
+        return toAjax(tDevWeathervaneService.updateTDevWeathervane(tDevWeathervane));
+    }
+
+    /**
+     * 删除风向标/风向袋/新风系统正压计
+     */
+    @PreAuthorize("@ss.hasPermi('dev:weathervane:remove')")
+    @Log(title = "风向标/风向袋/新风系统正压计", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(tDevWeathervaneService.deleteTDevWeathervaneByIds(ids));
+    }
+}

+ 210 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevAlarm.java

@@ -0,0 +1,210 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 现场可燃气体检测器/火灾报警系统对象 t_dev_alarm
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+public class TDevAlarm extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    /** 免检项 */
+    private String ignoreColumn;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public String getIgnoreColumn() {
+        return ignoreColumn;
+    }
+
+    public void setIgnoreColumn(String ignoreColumn) {
+        this.ignoreColumn = ignoreColumn;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 257 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevAnnihilator.java

@@ -0,0 +1,257 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 灭火器材对象 t_dev_annihilator
+ *
+ * @author ruoyi
+ * @date 2023-08-28
+ */
+public class TDevAnnihilator extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 位号
+     */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /**
+     * 位置
+     */
+    @Excel(name = "位置")
+    private String position;
+
+    /**
+     * 灭火器型号&类型
+     */
+    @Excel(name = "灭火器型号&类型")
+    private String anniType;
+
+    /**
+     * 数量
+     */
+    @Excel(name = "数量")
+    private String anniNum;
+
+    /**
+     * 防雨防晒护罩
+     */
+    private String anniSafe;
+
+    /**
+     * 灭火器类型
+     */
+    private String devType;
+
+    /**
+     * 状态
+     */
+    private Long delFlag;
+
+    /**
+     * 创建人
+     */
+    private String createrCode;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /**
+     * 修改人
+     */
+    private String updaterCode;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String  status;
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /**
+     * 部门编号
+     */
+//    @Excel(name = "部门编号")
+    private Long deptId;
+
+    private String  patrolType;
+
+    /** 忽略检查列 */
+    private String ignoreColumn;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public String getIgnoreColumn() {
+        return ignoreColumn;
+    }
+
+    public void setIgnoreColumn(String ignoreColumn) {
+        this.ignoreColumn = ignoreColumn;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getPatrolType() {
+        return patrolType;
+    }
+
+    public void setPatrolType(String patrolType) {
+        this.patrolType = patrolType;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setDevNo(String devNo) {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo() {
+        return devNo;
+    }
+
+    public void setPosition(String position) {
+        this.position = position;
+    }
+
+    public String getPosition() {
+        return position;
+    }
+
+    public void setAnniType(String anniType) {
+        this.anniType = anniType;
+    }
+
+    public String getAnniType() {
+        return anniType;
+    }
+
+    public void setAnniNum(String anniNum) {
+        this.anniNum = anniNum;
+    }
+
+    public String getAnniNum() {
+        return anniNum;
+    }
+
+    public void setAnniSafe(String anniSafe) {
+        this.anniSafe = anniSafe;
+    }
+
+    public String getAnniSafe() {
+        return anniSafe;
+    }
+
+    public void setDevType(String devType) {
+        this.devType = devType;
+    }
+
+    public String getDevType() {
+        return devType;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks) {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks() {
+        return remarks;
+    }
+
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId() {
+        return deptId;
+    }
+
+    @Override
+    public String toString() {
+        return
+                "位号:" + getDevNo() +
+                        " 位置:" + getPosition();
+    }
+}

+ 181 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevBicycle.java

@@ -0,0 +1,181 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 自行车对象 t_dev_bicycle
+ *
+ * @author admin
+ * @date 2023-11-09
+ */
+public class TDevBicycle extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 自行车编号 */
+    @Excel(name = "自行车编号")
+    private String devNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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 patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 224 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCabinet.java

@@ -0,0 +1,224 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 应急事故柜对象 t_dev_cabinet
+ *
+ * @author admin
+ * @date 2023-11-07
+ */
+public class TDevCabinet extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 器材名称 */
+    @Excel(name = "器材名称")
+    private String devName;
+
+    /** 器材标配数量 */
+    @Excel(name = "器材标配数量")
+    private String devNum;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    /** 事故柜类型 */
+    @Excel(name = "事故柜类型",readConverterExp = "1=事故柜1,2=事故柜2,3=事故柜3")
+    private String devType;
+
+    /** 免检项 */
+    private String ignoreColumn;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public String getIgnoreColumn() {
+        return ignoreColumn;
+    }
+
+    public void setIgnoreColumn(String ignoreColumn) {
+        this.ignoreColumn = ignoreColumn;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevName(String devName)
+    {
+        this.devName = devName;
+    }
+
+    public String getDevName()
+    {
+        return devName;
+    }
+    public void setDevNum(String devNum)
+    {
+        this.devNum = devNum;
+    }
+
+    public String getDevNum()
+    {
+        return devNum;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+    public void setDevType(String devType)
+    {
+        this.devType = devType;
+    }
+
+    public String getDevType()
+    {
+        return devType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devName", getDevName())
+            .append("devNum", getDevNum())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .append("devType", getDevType())
+            .toString();
+    }
+}

+ 175 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCctv.java

@@ -0,0 +1,175 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * CCTV系统对象 t_dev_cctv
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+public class TDevCctv extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 主键id */
+    private Long id;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setUpdatedate(Date updatedate)
+    {
+        this.updatedate = updatedate;
+    }
+
+    public Date getUpdatedate()
+    {
+        return updatedate;
+    }
+    public void setUpdaterCode(String updaterCode)
+    {
+        this.updaterCode = updaterCode;
+    }
+
+    public String getUpdaterCode()
+    {
+        return updaterCode;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("devNo", getDevNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("id", getId())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updatedate", getUpdatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 175 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevCofferdam.java

@@ -0,0 +1,175 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 蒸汽裂解装置各区域围堰对象 t_dev_cofferdam
+ *
+ * @author admin
+ * @date 2023-11-06
+ */
+public class TDevCofferdam extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevDoor.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 常闭式防爆门/防火门对象 t_dev_door
+ *
+ * @author admin
+ * @date 2023-11-07
+ */
+public class TDevDoor extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    /** 事故柜类型 */
+    @Excel(name = "防爆门/防火门归属")
+    private String devType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+    public void setDevType(String devType)
+    {
+        this.devType = devType;
+    }
+
+    public String getDevType()
+    {
+        return devType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .append("devType", getDevType())
+            .toString();
+    }
+}

+ 175 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevDownspout.java

@@ -0,0 +1,175 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 落水管对象 t_dev_downspout
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TDevDownspout extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevEarplug.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 耳塞分配器对象 t_dev_earplug
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TDevEarplug extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 176 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevEyewash.java

@@ -0,0 +1,176 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 洗眼器对象 t_dev_eyewash
+ *
+ * @author ruoyi
+ * @date 2023-09-04
+ */
+public class TDevEyewash extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 巡检设备类型 */
+    private String patrolType;
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return
+                "位号:" + getDevNo() +
+                        " 位置:" + getPosition();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevGasShield.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * CO2气体保护系统对象 t_dev_gas_shield
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+public class TDevGasShield extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevHoseBox.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 消防水带箱检查记录对象 t_dev_hose_box
+ *
+ * @author admin
+ * @date 2023-10-31
+ */
+public class TDevHoseBox extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevManholeCover.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 地井盖对象 t_dev_manhole_cover
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TDevManholeCover extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 212 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevMovement.java

@@ -0,0 +1,212 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 移动平台及移动梯对象 t_dev_movement
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TDevMovement extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 忽略检查列 */
+    private String ignoreColumn;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    private String precision;
+
+    public String getPrecision() {
+        return precision;
+    }
+
+    public void setPrecision(String precision) {
+        this.precision = precision;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setIgnoreColumn(String ignoreColumn)
+    {
+        this.ignoreColumn = ignoreColumn;
+    }
+
+    public String getIgnoreColumn()
+    {
+        return ignoreColumn;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("ignoreColumn", getIgnoreColumn())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevPaga.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * PAGA对象 t_dev_paga
+ *
+ * @author admin
+ * @date 2023-11-02
+ */
+public class TDevPaga extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevPostFire.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 地上消火栓检查记录对象 t_dev_post_fire
+ *
+ * @author ruoyi
+ * @date 2023-10-30
+ */
+public class TDevPostFire extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSafetyBelt.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 安全带对象 t_dev_safety_belt
+ *
+ * @author admin
+ * @date 2023-11-08
+ */
+public class TDevSafetyBelt extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSandbox.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 应急沙箱对象 t_dev_sandbox
+ *
+ * @author admin
+ * @date 2023-11-02
+ */
+public class TDevSandbox extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSprinkler.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 自动喷淋灭火系统对象 t_dev_sprinkler
+ *
+ * @author admin
+ * @date 2023-11-01
+ */
+public class TDevSprinkler extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 189 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevStandpipe.java

@@ -0,0 +1,189 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 消防竖管对象 t_dev_standpipe
+ *
+ * @author admin
+ * @date 2023-10-31
+ */
+public class TDevStandpipe extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 位置 */
+    @Excel(name = "位置")
+    private String position;
+
+    /** 删除标识0未删除 */
+    private Long delFlag;
+
+    /** 创建人 */
+    private String createrCode;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createdate;
+
+    /** 修改人 */
+    private String updaterCode;
+
+    /** 修改时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date updatedate;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 部门编号 */
+    private Long deptId;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setPosition(String position)
+    {
+        this.position = position;
+    }
+
+    public String getPosition()
+    {
+        return position;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDeptId(Long deptId)
+    {
+        this.deptId = deptId;
+    }
+
+    public Long getDeptId()
+    {
+        return deptId;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("position", getPosition())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("remarks", getRemarks())
+            .append("deptId", getDeptId())
+            .append("status", getStatus())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 175 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevSteamCurtain.java

@@ -0,0 +1,175 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 蒸汽幕对象 t_dev_steam_curtain
+ *
+ * @author admin
+ * @date 2023-11-06
+ */
+public class TDevSteamCurtain extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键id */
+    private Long id;
+
+    /** 位号 */
+    @Excel(name = "位号")
+    private String devNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setDevNo(String devNo)
+    {
+        this.devNo = devNo;
+    }
+
+    public String getDevNo()
+    {
+        return devNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("devNo", getDevNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

+ 203 - 0
master/src/main/java/com/ruoyi/project/patrol/dev/domain/TDevTester.java

@@ -0,0 +1,203 @@
+package com.ruoyi.project.patrol.dev.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.framework.web.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 检测仪对象 t_dev_tester
+ *
+ * @author admin
+ * @date 2023-11-03
+ */
+public class TDevTester extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 检测仪类型 */
+    @Excel(name = "检测仪类型")
+    private String testerType;
+
+    /** 型号 */
+    @Excel(name = "型号")
+    private String testerModel;
+
+    /** 编号 */
+    @Excel(name = "编号")
+    private String testerNo;
+
+    /** 状态 */
+    @Excel(name = "状态",readConverterExp = "1=在用,2=维修,3=停用")
+    private String status;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String remarks;
+
+    /** 删除标识0未删除 */
+    private Long 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;
+
+    /** 设备类型 */
+    private String patrolType;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setTesterType(String testerType)
+    {
+        this.testerType = testerType;
+    }
+
+    public String getTesterType()
+    {
+        return testerType;
+    }
+    public void setTesterModel(String testerModel)
+    {
+        this.testerModel = testerModel;
+    }
+
+    public String getTesterModel()
+    {
+        return testerModel;
+    }
+    public void setTesterNo(String testerNo)
+    {
+        this.testerNo = testerNo;
+    }
+
+    public String getTesterNo()
+    {
+        return testerNo;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setRemarks(String remarks)
+    {
+        this.remarks = remarks;
+    }
+
+    public String getRemarks()
+    {
+        return remarks;
+    }
+    public void setDelFlag(Long delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public Long 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 setPatrolType(String patrolType)
+    {
+        this.patrolType = patrolType;
+    }
+
+    public String getPatrolType()
+    {
+        return patrolType;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("testerType", getTesterType())
+            .append("testerModel", getTesterModel())
+            .append("testerNo", getTesterNo())
+            .append("status", getStatus())
+            .append("remarks", getRemarks())
+            .append("delFlag", getDelFlag())
+            .append("createrCode", getCreaterCode())
+            .append("createdate", getCreatedate())
+            .append("updaterCode", getUpdaterCode())
+            .append("updatedate", getUpdatedate())
+            .append("deptId", getDeptId())
+            .append("patrolType", getPatrolType())
+            .toString();
+    }
+}

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.