Просмотр исходного кода

fix:优化导入execl共通接口处理数据逻辑,更改拖拽table达梦数据源的多表查询sql生成逻辑

韩帛霖 1 год назад
Родитель
Сommit
a6d7bd5375

+ 15 - 12
ruoyi-admin/src/main/java/com/ruoyi/web/controller/dragForm/CommonFileController.java

@@ -19,8 +19,10 @@ import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.config.ServerConfig;
 import com.ruoyi.system.entity.CommonEntity;
 import com.ruoyi.system.entity.TableInfo;
+import com.ruoyi.system.entity.TableSql;
 import com.ruoyi.system.service.ICommonService;
 import com.ruoyi.system.service.IDataSourceService;
+import com.ruoyi.system.service.ITableSqlService;
 import io.lettuce.core.ScriptOutputType;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
@@ -72,6 +74,9 @@ public class CommonFileController {
     @Resource
     private ICommonService commonService;
 
+    @Resource
+    private ITableSqlService iTableSqlService;
+
     private static final String FILE_DELIMETER = ",";
 
     /**
@@ -185,22 +190,20 @@ public class CommonFileController {
     @Anonymous
     @ApiOperation("上传文件")
     @PostMapping(value = "/uploadData", headers = "content-type=multipart/form-data")
-    public AjaxResult uploadDataFile(String tableName, @RequestPart("file") MultipartFile file) throws Exception {
-        Map<String, Object> map = new HashMap<>();
-        map.put("tableName", "test");
-        map.put("databaseType", "mysql");
-        map.put("databaseName", "zkqy-call");
+    public AjaxResult uploadDataFile(String tableName, String sqlKey, @RequestPart("file") MultipartFile file) throws Exception {
         try {
             // 创建一个工作簿对象 解析上传的excel表数据
             List<Map<String, String>> listMap = convertList(EasyExcel.read(file.getInputStream()).sheet().headRowNumber(0).doReadSync());
-            // 查询当前文件插入表结构
-            List<TableInfo> tableInfoList = dataSourceService.tableFieldInfo(map);
-            Map<String, Object> fieldMap = new HashMap<>(); // 存储 字段描述:字段列名
-            tableInfoList.forEach(item -> {
-                fieldMap.put(item.getFieldDescription(), item.getFieldName());
+            // 得到当前导出入数据的格式k/v
+            TableSql tableSql = iTableSqlService.selectTableSqlByTSqlKey(sqlKey);
+            // 存储 字段描述:字段列名
+            Map<String, Object> fieldMap = (Map<String, Object>) JSON.parse(tableSql.getTableExportField());
+            Map<String, Object> endFieldMap = new HashMap<>();
+            fieldMap.forEach((mKey, mVal) -> {
+                endFieldMap.put(mVal.toString(), mKey);
             });
             listMap.get(0).forEach((mKey, mVal) -> {
-                if (mVal != null) listMap.get(0).put(mKey, fieldMap.get(mVal).toString());
+                if (mVal != null) listMap.get(0).put(mKey, endFieldMap.get(mVal).toString());
             });
             // 挣个excel文件数据
             listMap.forEach(item -> {
@@ -213,7 +216,7 @@ public class CommonFileController {
             });
             listMap.remove(0);
             CommonEntity commonEntity = new CommonEntity();
-            commonEntity.setBasicMap(JSONObject.parseObject("{ \"tableName\":\"test\"}", new TypeReference<Map<String, Object>>() {
+            commonEntity.setBasicMap(JSONObject.parseObject("{ \"tableName\":\"" + tableName + "\"}", new TypeReference<Map<String, Object>>() {
             }));
             commonEntity.setAddListMap(listMap);
             return success(commonService.batchInsert(commonEntity));

+ 6 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DragTableServiceImpl.java

@@ -149,8 +149,8 @@ public class DragTableServiceImpl implements IDragTableService {
     // SQL 超级查询常量
     public static final String SQL_MIDDLE = "IFNULL( #{VAL}, '' )";
 
-    // sqlserver 数据类型的超级查询常量
-    public static final String SQLSERVER_MIDDLE = "COALESCE( #{VAL}, '' )";
+    // sqlserver || DM 数据类型的超级查询常量
+    public static final String SQL_DM_SERVER_MIDDLE = "COALESCE( #{VAL}, '' )";
 
     // SQL 条件的结束
     public static final String SQL_END = "LIKE '%#{val}%'";
@@ -176,15 +176,15 @@ public class DragTableServiceImpl implements IDragTableService {
         // 拼接sql查询条件
         switch (SecurityUtils.getDatabaseType().toUpperCase()) {
             case "MYSQL":
-            case "DM":
                 for (int i = 0; dragTableVo.getSearchFieldList().size() > i; i++) {
                     SQL += SQL_START + SQL_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
                     SQL += dragTableVo.getSearchFieldList().size() - 1 == i ? ")" : ",\n";
                 }
                 break;
+            case "DM":
             case "SQLSERVER":
                 for (int i = 0; dragTableVo.getSearchFieldList().size() > i; i++) {
-                    SQL += SQL_START + SQLSERVER_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
+                    SQL += SQL_START + SQL_DM_SERVER_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
                     SQL += dragTableVo.getSearchFieldList().size() - 1 == i ? ")" : ",\n";
                 }
                 break;
@@ -237,15 +237,15 @@ public class DragTableServiceImpl implements IDragTableService {
         // 拼接sql查询条件
         switch (SecurityUtils.getDatabaseType().toUpperCase()) {
             case "MYSQL":
-            case "DM":
                 for (int i = 0; dragTableVo.getSearchFieldList().size() > i; i++) {
                     SQL += SQL_START + SQL_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
                     SQL += dragTableVo.getSearchFieldList().size() - 1 == i ? ")" : ",\n";
                 }
                 break;
+            case "DM":
             case "SQLSERVER":
                 for (int i = 0; dragTableVo.getSearchFieldList().size() > i; i++) {
-                    SQL += SQL_START + SQLSERVER_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
+                    SQL += SQL_START + SQL_DM_SERVER_MIDDLE.replace("#{VAL}", dragTableVo.getSearchFieldList().get(i));
                     SQL += dragTableVo.getSearchFieldList().size() - 1 == i ? ")" : ",\n";
                 }
                 break;

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/test/ljj.java

@@ -22,6 +22,11 @@ public class ljj {
 
 
     public static void main(String[] args) {
+
+        String a = "asdjkl";
+        System.out.println(a.replaceAll("k","QQ"));
+
+
 //        for (int i = 0; i < 10; i++) {
 //
 //            System.out.println(SQL_MIDDLE + "1");