Преглед изворни кода

fix(risk-hiddenDanger): 处理交互简化,状态精简为 2 个

业务需求:
- 状态字段精简为'待处理'/'已处理'两个(原 3 个含'处理中')
- 处理操作独立弹窗:仅录入处理结果/处理描述/照片
- 提交处理后强制 status='已处理',后端不依赖前端传值

后端变更:
- IRiskHiddenDangerService.handleDanger 签名变更:
  原 (id, status, handler, handleResult)
  新 (id, handler, handleResult, handleMeasures, photoList)
- RiskHiddenDangerServiceImpl.handleDanger:
  强制 setHandleStatus('已处理') + setHandleTime + setFinishTime
  写入 handleResult / handleMeasures / photoList
- RiskHiddenDangerController.handle:
  handlerName 为空时 LoginHelper.getUsername() 兜底
  传入 handleResult/handleMeasures/photoList

SQL 升级:
- 新增 risk_hidden_danger_dict.sql
  * sys_dict_type: risk_handle_result(隐患处理结果)
  * sys_dict_data: 5 项处理结果(隐患已消除/已设置警戒/已上报整改/临时管控/其他)
  * 历史'处理中'数据回退为'待处理'(幂等)
yangjingjing пре 3 дана
родитељ
комит
86903ef506

+ 13 - 1
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/controller/RiskHiddenDangerController.java

@@ -7,6 +7,7 @@ import jakarta.validation.constraints.NotEmpty;
 import jakarta.validation.constraints.NotNull;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
 import org.dromara.common.excel.utils.ExcelUtil;
@@ -15,6 +16,7 @@ import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.web.core.BaseController;
 import org.dromara.risk.domain.bo.RiskHiddenDangerBo;
 import org.dromara.risk.domain.vo.RiskHiddenDangerVo;
@@ -140,7 +142,17 @@ public class RiskHiddenDangerController extends BaseController {
     @RepeatSubmit()
     @PutMapping("/handle/{id}")
     public R<Void> handle(@PathVariable("id") Long id, @RequestBody RiskHiddenDangerBo bo) {
-        return toAjax(hiddenDangerService.handleDanger(id, bo.getHandleStatus(), bo.getHandlerName(), bo.getHandleResult()));
+        // 处理人前端未传时,自动取当前登录用户
+        String handler = StringUtils.isBlank(bo.getHandlerName())
+            ? LoginHelper.getUsername()
+            : bo.getHandlerName();
+        return toAjax(hiddenDangerService.handleDanger(
+            id,
+            handler,
+            bo.getHandleResult(),
+            bo.getHandleMeasures(),
+            bo.getPhotoList()
+        ));
     }
 
 }

+ 7 - 6
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/service/IRiskHiddenDangerService.java

@@ -86,14 +86,15 @@ public interface IRiskHiddenDangerService {
     Map<String, Object> getDangerTypeStats();
 
     /**
-     * 处理隐患(更新状态为处理中/已处理)
+     * 处理隐患(更新状态为'已处理',写入处理结果/描述/照片)
      *
-     * @param id           隐患主键
-     * @param status       处理状态
-     * @param handler      处理人
-     * @param handleResult 处理结果
+     * @param id             隐患主键
+     * @param handler        处理人
+     * @param handleResult   处理结果(字典)
+     * @param handleMeasures 处理描述文案
+     * @param photoList      处理后照片(JSON数组字符串)
      * @return 结果
      */
-    int handleDanger(Long id, String status, String handler, String handleResult);
+    int handleDanger(Long id, String handler, String handleResult, String handleMeasures, String photoList);
 
 }

+ 9 - 5
ruoyi-modules/ruoyi-risk/src/main/java/org/dromara/risk/service/impl/RiskHiddenDangerServiceImpl.java

@@ -149,18 +149,22 @@ public class RiskHiddenDangerServiceImpl implements IRiskHiddenDangerService {
         return baseMapper.deleteBatchIds(ids);
     }
     /**
-     * 处理隐患(更新状态)
+     * 处理隐患(更新为'已处理',写入处理结果/描述/照片)
      */
     @Override
-    public int handleDanger(Long id, String status, String handler, String handleResult) {
+    public int handleDanger(Long id, String handler, String handleResult, String handleMeasures, String photoList) {
         RiskHiddenDanger update = new RiskHiddenDanger();
         update.setId(id);
-        update.setHandleStatus(status);
+        // 提交处理即视为完成:状态强制置为'已处理'(不依赖前端传入)
+        update.setHandleStatus("已处理");
         update.setHandlerName(handler);
         update.setHandleResult(handleResult);
-        if ("已处理".equals(status)) {
-            update.setHandleTime(new java.util.Date());
+        update.setHandleMeasures(handleMeasures);
+        if (StringUtils.isNotBlank(photoList)) {
+            update.setPhotoList(photoList);
         }
+        update.setHandleTime(new Date());
+        update.setFinishTime(new Date());
         return baseMapper.updateById(update);
     }
 

+ 35 - 0
sql/risk_hidden_danger_dict.sql

@@ -0,0 +1,35 @@
+-- ============================================
+-- 安全隐患模块 - 处理结果字典
+-- 配合前端 hiddenDanger/index.vue 的处理结果下拉框
+-- ============================================
+
+-- 字典类型:隐患处理结果
+INSERT INTO sys_dict_type (dict_name, dict_type, status, create_dept, create_by, create_time, remark)
+VALUES ('隐患处理结果', 'risk_handle_result', '0', 103, 1, NOW(), '安全隐患处理结果字典')
+ON DUPLICATE KEY UPDATE update_time = NOW();
+
+-- 字典数据:常见处理结果(可按业务调整)
+INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_dept, create_by, create_time, remark)
+VALUES
+  (1, '隐患已消除', '隐患已消除', 'risk_handle_result', '', 'success', 'N', '0', 103, 1, NOW(), '隐患已经现场整改消除'),
+  (2, '已设置警戒', '已设置警戒', 'risk_handle_result', '', 'warning', 'N', '0', 103, 1, NOW(), '现场设置了警戒标识或警戒线'),
+  (3, '已上报整改', '已上报整改', 'risk_handle_result', '', 'primary', 'N', '0', 103, 1, NOW(), '已上报相关部门进行整改'),
+  (4, '临时管控', '临时管控', 'risk_handle_result', '', 'info', 'N', '0', 103, 1, NOW(), '采取临时性管控措施'),
+  (5, '其他', '其他', 'risk_handle_result', '', 'default', 'N', '0', 103, 1, NOW(), '其他处理结果')
+ON DUPLICATE KEY UPDATE update_time = NOW();
+
+-- ============================================
+-- (可选)数据清洗:历史"处理中"状态归并到"待处理"
+-- 如果有遗留的"处理中"数据,统一回退为"待处理"
+-- 幂等可重复执行
+-- ============================================
+UPDATE risk_hidden_danger
+  SET handle_status = '待处理'
+WHERE handle_status = '处理中';
+
+-- ============================================
+-- (可选)数据列兼容性:隐患处理结果字段
+-- 字段 handle_result TEXT 已经存在,可存字典值或自由文本
+-- 字段 handle_measures TEXT 已存在,存放处理描述文案
+-- 字段 handle_time / finish_time DATETIME 已存在
+-- ============================================