Browse Source

feat(special-equipment): 新增设备铭牌照片字段(MinIO,新增必填)

- risk_special_equipment 表加 nameplate_url + nameplate_name 字段
- 新增独立升级脚本 risk_special_equipment_nameplate.sql(幂等)
- 同步更新 risk_tables.sql + risk_control_platform.sql
- RiskSpecialEquipment Do/Bo/Vo 加 photoList + nameplateUrl + nameplateName 字段
- Bo 加 @NotBlank(nameplateUrl) 必填校验 + @Size 限制
- Vo 加 @ExcelProperty 导出注解

需求: 新增特种设备时必须上传设备铭牌照片(JPG/PNG,5MB),支持编辑回填
yangjingjing 2 ngày trước cách đây
mục cha
commit
5b8eba0a75

+ 15 - 0
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/domain/RiskSpecialEquipment.java

@@ -86,6 +86,21 @@ public class RiskSpecialEquipment extends TenantEntity {
      */
     private String location;
 
+    /**
+     * 设备照片(JSON数组)
+     */
+    private String photoList;
+
+    /**
+     * 设备铭牌照片URL(MinIO对象存储路径,新增设备必填)
+     */
+    private String nameplateUrl;
+
+    /**
+     * 设备铭牌照片原始文件名
+     */
+    private String nameplateName;
+
     /**
      * 安装日期
      */

+ 13 - 0
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/domain/bo/RiskSpecialEquipmentBo.java

@@ -96,6 +96,19 @@ public class RiskSpecialEquipmentBo extends BaseEntity {
      */
     private String photoList;
 
+    /**
+     * 设备铭牌照片URL(MinIO对象存储路径,新增设备必填)
+     */
+    @NotBlank(message = "请上传设备铭牌照片")
+    @Size(min = 0, max = 500, message = "设备铭牌照片URL长度不能超过{max}个字符")
+    private String nameplateUrl;
+
+    /**
+     * 设备铭牌照片原始文件名
+     */
+    @Size(min = 0, max = 200, message = "设备铭牌照片名称长度不能超过{max}个字符")
+    private String nameplateName;
+
     /**
      * 安装日期
      */

+ 12 - 0
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/domain/vo/RiskSpecialEquipmentVo.java

@@ -106,6 +106,18 @@ public class RiskSpecialEquipmentVo implements Serializable {
     @ExcelProperty(value = "设备照片")
     private String photoList;
 
+    /**
+     * 设备铭牌照片URL(MinIO对象存储路径,新增设备必填)
+     */
+    @ExcelProperty(value = "设备铭牌照片URL")
+    private String nameplateUrl;
+
+    /**
+     * 设备铭牌照片原始文件名
+     */
+    @ExcelProperty(value = "设备铭牌照片")
+    private String nameplateName;
+
     /**
      * 安装日期
      */

+ 3 - 1
sql/risk_control_platform.sql

@@ -1778,6 +1778,8 @@ CREATE TABLE `risk_special_equipment` (
   `store_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '门店名称',
   `location` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '位置',
   `photo_list` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '设备照片(JSON数组)',
+  `nameplate_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备铭牌照片URL(MinIO对象存储路径,新增设备必填)',
+  `nameplate_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备铭牌照片原始文件名',
   `install_date` date DEFAULT NULL COMMENT '安装日期',
   `next_maintenance_date` date DEFAULT NULL COMMENT '下次维护时间(完成维护时由用户录入)',
   `maintenance_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '未维护' COMMENT '维护状态(未维护/待维护/维护中/正常)',
@@ -1809,7 +1811,7 @@ CREATE TABLE `risk_special_equipment` (
 
 LOCK TABLES `risk_special_equipment` WRITE;
 /*!40000 ALTER TABLE `risk_special_equipment` DISABLE KEYS */;
-INSERT INTO `risk_special_equipment` VALUES (2069712807448551426,'000000',NULL,'test1','电梯',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,NULL,NULL,'未维护','在用','未检',NULL,NULL,NULL,NULL,103,1,'2026-06-24 17:22:41',1,'2026-06-24 17:22:41','0');
+INSERT INTO `risk_special_equipment` VALUES (2069712807448551426,'000000',NULL,'test1','电梯',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,NULL,NULL,NULL,'未维护','在用','未检',NULL,NULL,NULL,NULL,103,1,'2026-06-24 17:22:41',1,'2026-06-24 17:22:41','0');
 /*!40000 ALTER TABLE `risk_special_equipment` ENABLE KEYS */;
 UNLOCK TABLES;
 

+ 49 - 0
sql/risk_special_equipment_nameplate.sql

@@ -0,0 +1,49 @@
+-- =============================================================
+-- 风控平台 数据库增量脚本  特种设备-设备铭牌照片字段
+-- 适用版本: 风控平台 2026-07-07 之前的部署
+--
+-- 需求:
+--   新增特种设备时必须上传设备铭牌照片(基于 MinIO 对象存储),
+--   支持 JPG/PNG 格式,单个文件不超过 5MB。
+--
+-- 本脚本特征:
+--   - 全部 SQL 幂等,可重复执行(基于 INFORMATION_SCHEMA 判断)
+--   - 新环境用 risk_control_platform.sql 部署;已有环境用本脚本增量升级
+--   - 不修改业务表已有数据,仅追加字段
+-- =============================================================
+
+SET NAMES utf8mb4;
+
+-- =============================================================
+-- 1. 特种设备表 risk_special_equipment 加设备铭牌照片字段
+-- =============================================================
+
+-- 1.1 nameplate_url 设备铭牌照片 URL(MinIO public 桶路径)
+SET @sql = (SELECT IF(
+  (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
+     WHERE TABLE_SCHEMA = DATABASE()
+       AND TABLE_NAME   = 'risk_special_equipment'
+       AND COLUMN_NAME  = 'nameplate_url') = 0,
+  'ALTER TABLE `risk_special_equipment` ADD COLUMN `nameplate_url` VARCHAR(500) DEFAULT NULL COMMENT ''设备铭牌照片URL(MinIO对象存储路径,新增设备必填)'' AFTER `photo_list`',
+  'SELECT 1'));
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
+
+-- 1.2 nameplate_name 设备铭牌照片原始文件名(下载时显示用)
+SET @sql = (SELECT IF(
+  (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
+     WHERE TABLE_SCHEMA = DATABASE()
+       AND TABLE_NAME   = 'risk_special_equipment'
+       AND COLUMN_NAME  = 'nameplate_name') = 0,
+  'ALTER TABLE `risk_special_equipment` ADD COLUMN `nameplate_name` VARCHAR(200) DEFAULT NULL COMMENT ''设备铭牌照片原始文件名'' AFTER `nameplate_url`',
+  'SELECT 1'));
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
+
+
+-- =============================================================
+-- 2. 验证清单(可手动 SELECT 确认)
+-- =============================================================
+-- SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_COMMENT
+--   FROM INFORMATION_SCHEMA.COLUMNS
+--  WHERE TABLE_SCHEMA = DATABASE()
+--    AND TABLE_NAME = 'risk_special_equipment'
+--    AND COLUMN_NAME IN ('nameplate_url', 'nameplate_name');

+ 2 - 0
sql/risk_tables.sql

@@ -314,6 +314,8 @@ CREATE TABLE `risk_special_equipment` (
   `store_name` VARCHAR(100) COMMENT '门店名称',
   `location` VARCHAR(200) COMMENT '位置',
   `photo_list` TEXT COMMENT '设备照片(JSON数组)',
+    `nameplate_url` VARCHAR(500) COMMENT '设备铭牌照片URL(MinIO对象存储路径,新增设备必填)',
+    `nameplate_name` VARCHAR(200) COMMENT '设备铭牌照片原始文件名',
   `install_date` DATE COMMENT '安装日期',
   `use_status` VARCHAR(20) DEFAULT '在用' COMMENT '使用状态',
   `inspection_status` VARCHAR(20) DEFAULT '未检' COMMENT '检验状态',