From dc3336685e80c593a3654a6e53e3e1d1d13b2b50 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 06 五月 2026 15:30:13 +0800
Subject: [PATCH] fix(approve): 修复流程配置节点审批人为空时的异常处理
---
src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java | 101 +++++++++++++++++++++++++++++++++++---------------
1 files changed, 71 insertions(+), 30 deletions(-)
diff --git a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
index 151d93e..ec16cea 100644
--- a/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
+++ b/src/main/java/com/ruoyi/project/tool/gen/controller/GenController.java
@@ -1,25 +1,15 @@
package com.ruoyi.project.tool.gen.controller;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.alibaba.druid.DbType;
+import com.alibaba.druid.sql.SQLUtils;
+import com.alibaba.druid.sql.ast.SQLStatement;
+import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.sql.SqlUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.config.GenConfig;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
@@ -27,6 +17,18 @@
import com.ruoyi.project.tool.gen.domain.GenTableColumn;
import com.ruoyi.project.tool.gen.service.IGenTableColumnService;
import com.ruoyi.project.tool.gen.service.IGenTableService;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.AllArgsConstructor;
+import org.apache.commons.io.IOUtils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 浠g爜鐢熸垚 鎿嶄綔澶勭悊
@@ -35,12 +37,10 @@
*/
@RestController
@RequestMapping("/tool/gen")
+@AllArgsConstructor
public class GenController extends BaseController
{
- @Autowired
private IGenTableService genTableService;
-
- @Autowired
private IGenTableColumnService genTableColumnService;
/**
@@ -56,7 +56,7 @@
}
/**
- * 淇敼浠g爜鐢熸垚涓氬姟
+ * 鑾峰彇浠g爜鐢熸垚淇℃伅
*/
@PreAuthorize("@ss.hasPermi('tool:gen:query')")
@GetMapping(value = "/{talbleId}")
@@ -69,7 +69,7 @@
map.put("info", table);
map.put("rows", list);
map.put("tables", tables);
- return AjaxResult.success(map);
+ return success(map);
}
/**
@@ -88,7 +88,7 @@
* 鏌ヨ鏁版嵁琛ㄥ瓧娈靛垪琛�
*/
@PreAuthorize("@ss.hasPermi('tool:gen:list')")
- @GetMapping(value = "/column/{talbleId}")
+ @GetMapping(value = "/column/{tableId}")
public TableDataInfo columnList(Long tableId)
{
TableDataInfo dataInfo = new TableDataInfo();
@@ -109,8 +109,45 @@
String[] tableNames = Convert.toStrArray(tables);
// 鏌ヨ琛ㄤ俊鎭�
List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames);
- genTableService.importGenTable(tableList);
- return AjaxResult.success();
+ genTableService.importGenTable(tableList, SecurityUtils.getUsername());
+ return success();
+ }
+
+ /**
+ * 鍒涘缓琛ㄧ粨鏋勶紙淇濆瓨锛�
+ */
+ @PreAuthorize("@ss.hasRole('admin')")
+ @Log(title = "鍒涘缓琛�", businessType = BusinessType.OTHER)
+ @PostMapping("/createTable")
+ public AjaxResult createTableSave(String sql)
+ {
+ try
+ {
+ SqlUtil.filterKeyword(sql);
+ List<SQLStatement> sqlStatements = SQLUtils.parseStatements(sql, DbType.mysql);
+ List<String> tableNames = new ArrayList<>();
+ for (SQLStatement sqlStatement : sqlStatements)
+ {
+ if (sqlStatement instanceof MySqlCreateTableStatement)
+ {
+ MySqlCreateTableStatement createTableStatement = (MySqlCreateTableStatement) sqlStatement;
+ if (genTableService.createTable(createTableStatement.toString()))
+ {
+ String tableName = createTableStatement.getTableName().replaceAll("`", "");
+ tableNames.add(tableName);
+ }
+ }
+ }
+ List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames.toArray(new String[tableNames.size()]));
+ String operName = SecurityUtils.getUsername();
+ genTableService.importGenTable(tableList, operName);
+ return AjaxResult.success();
+ }
+ catch (Exception e)
+ {
+ logger.error(e.getMessage(), e);
+ return AjaxResult.error("鍒涘缓琛ㄧ粨鏋勫紓甯�");
+ }
}
/**
@@ -123,7 +160,7 @@
{
genTableService.validateEdit(genTable);
genTableService.updateGenTable(genTable);
- return AjaxResult.success();
+ return success();
}
/**
@@ -135,7 +172,7 @@
public AjaxResult remove(@PathVariable Long[] tableIds)
{
genTableService.deleteGenTableByIds(tableIds);
- return AjaxResult.success();
+ return success();
}
/**
@@ -146,7 +183,7 @@
public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException
{
Map<String, String> dataMap = genTableService.previewCode(tableId);
- return AjaxResult.success(dataMap);
+ return success(dataMap);
}
/**
@@ -169,8 +206,12 @@
@GetMapping("/genCode/{tableName}")
public AjaxResult genCode(@PathVariable("tableName") String tableName)
{
+ if (!GenConfig.isAllowOverwrite())
+ {
+ return AjaxResult.error("銆愮郴缁熼璁俱�戜笉鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦�");
+ }
genTableService.generatorCode(tableName);
- return AjaxResult.success();
+ return success();
}
/**
@@ -182,7 +223,7 @@
public AjaxResult synchDb(@PathVariable("tableName") String tableName)
{
genTableService.synchDb(tableName);
- return AjaxResult.success();
+ return success();
}
/**
--
Gitblit v1.9.3