Преглед на файлове

fix:增加api excel导入功能

liaoyitao преди 6 месеца
родител
ревизия
75f0a6bb1e

+ 19 - 0
pom.xml

@@ -144,6 +144,25 @@
144 144
             <artifactId>mysql-connector-java</artifactId>
145 145
             <version>8.0.33</version>
146 146
         </dependency>
147
+        <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
148
+        <dependency>
149
+            <groupId>com.oracle.database.jdbc</groupId>
150
+            <artifactId>ojdbc8</artifactId>
151
+            <version>23.5.0.24.07</version>
152
+        </dependency>
153
+        <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
154
+        <dependency>
155
+            <groupId>com.microsoft.sqlserver</groupId>
156
+            <artifactId>mssql-jdbc</artifactId>
157
+            <version>12.8.1.jre11</version>
158
+        </dependency>
159
+        <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
160
+        <dependency>
161
+            <groupId>com.alibaba</groupId>
162
+            <artifactId>easyexcel</artifactId>
163
+            <version>4.0.3</version>
164
+        </dependency>
165
+
147 166
 
148 167
     </dependencies>
149 168
 

+ 12 - 0
src/main/java/com/lqkj/cmlcp/module/api/controller/ApiInfoController.java

@@ -6,6 +6,7 @@ import com.lqkj.cmlcp.module.api.service.ApiInfoService;
6 6
 import io.swagger.v3.oas.annotations.tags.Tag;
7 7
 import org.springframework.beans.factory.annotation.Autowired;
8 8
 import org.springframework.web.bind.annotation.*;
9
+import org.springframework.web.multipart.MultipartFile;
9 10
 
10 11
 import java.util.List;
11 12
 
@@ -42,4 +43,15 @@ public class ApiInfoController {
42 43
         return Result.ok(apiInfoService.findById(id));
43 44
     }
44 45
 
46
+    /**
47
+     * 导入excel
48
+     * @param file
49
+     * @return
50
+     */
51
+    @PostMapping("/importExcel")
52
+    public Result importApi(@RequestParam("file") MultipartFile file) {
53
+        apiInfoService.importExcel(file);
54
+        return Result.ok();
55
+    }
56
+
45 57
 }

+ 6 - 1
src/main/java/com/lqkj/cmlcp/module/api/domain/ApiInfo.java

@@ -1,7 +1,9 @@
1 1
 package com.lqkj.cmlcp.module.api.domain;
2 2
 
3
+import com.alibaba.excel.annotation.ExcelProperty;
3 4
 import com.alibaba.fastjson2.JSONArray;
4 5
 import com.alibaba.fastjson2.JSONObject;
6
+import com.lqkj.cmlcp.utils.JsonArrayStringConverter;
5 7
 import io.hypersistence.utils.hibernate.type.json.JsonType;
6 8
 import io.swagger.v3.oas.annotations.media.Schema;
7 9
 import jakarta.persistence.*;
@@ -17,12 +19,13 @@ import org.hibernate.annotations.Type;
17 19
 @Setter
18 20
 @NoArgsConstructor
19 21
 @AllArgsConstructor
20
-public class ApiInfo {
22
+public class ApiInfo implements java.io.Serializable{
21 23
     @Id
22 24
     @Column(name = "id")
23 25
     @GeneratedValue(strategy = GenerationType.IDENTITY)
24 26
     private Integer id;
25 27
 
28
+    @ExcelProperty(value = "api名字")
26 29
     @Column(name = "name")
27 30
     @Schema(description = "api名字")
28 31
     private String name;
@@ -45,12 +48,14 @@ public class ApiInfo {
45 48
     @Schema(description = "请求参数")
46 49
     private JSONObject params;
47 50
 
51
+    @ExcelProperty(value = "数据", converter = JsonArrayStringConverter.class)
48 52
     @Type(JsonType.class)
49 53
     @Column(name = "data", columnDefinition = "jsonb")
50 54
     @Schema(description = "请求体")
51 55
     private JSONArray data;
52 56
 
53 57
     @Column(name = "type")
58
+    @ExcelProperty(value = "api类型")
54 59
     @Schema(description = "api类型, 1 rest; 2 static; 3 直接查询数据库")
55 60
     private Integer type;
56 61
 

+ 7 - 0
src/main/java/com/lqkj/cmlcp/module/api/service/ApiInfoService.java

@@ -1,6 +1,7 @@
1 1
 package com.lqkj.cmlcp.module.api.service;
2 2
 
3 3
 import com.lqkj.cmlcp.module.api.domain.ApiInfo;
4
+import org.springframework.web.multipart.MultipartFile;
4 5
 
5 6
 import java.util.List;
6 7
 
@@ -13,4 +14,10 @@ public interface ApiInfoService {
13 14
     void delete(List<Integer> ids);
14 15
 
15 16
     ApiInfo findById(Integer id);
17
+
18
+    /**
19
+     * 导入excel
20
+     * @param file
21
+     */
22
+    void importExcel(MultipartFile file);
16 23
 }

+ 16 - 0
src/main/java/com/lqkj/cmlcp/module/api/service/impl/ApiInfoServiceImpl.java

@@ -1,5 +1,7 @@
1 1
 package com.lqkj.cmlcp.module.api.service.impl;
2 2
 
3
+import cn.afterturn.easypoi.excel.entity.ImportParams;
4
+import com.alibaba.excel.EasyExcel;
3 5
 import com.alibaba.fastjson2.JSONArray;
4 6
 import com.alibaba.fastjson2.JSONObject;
5 7
 import com.lqkj.cmlcp.module.api.domain.ApiInfo;
@@ -9,6 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
9 11
 import org.springframework.stereotype.Service;
10 12
 import org.springframework.transaction.annotation.Propagation;
11 13
 import org.springframework.transaction.annotation.Transactional;
14
+import org.springframework.web.multipart.MultipartFile;
12 15
 
13 16
 import java.sql.Connection;
14 17
 import java.sql.DriverManager;
@@ -50,6 +53,19 @@ public class ApiInfoServiceImpl implements ApiInfoService {
50 53
         return apiInfo;
51 54
     }
52 55
 
56
+    @Override
57
+    public void importExcel(MultipartFile file) {
58
+        try {
59
+            ImportParams params = new ImportParams();
60
+            params.setTitleRows(1); // 表示表格的标题行数
61
+            params.setHeadRows(1);  // 表示表头行数
62
+            List<ApiInfo> apiInfos = EasyExcel.read(file.getInputStream()).head(ApiInfo.class).sheet().doReadSync();
63
+            apiInfoRepository.saveAll(apiInfos);
64
+        } catch (Exception e) {
65
+            throw new RuntimeException(e);
66
+        }
67
+    }
68
+
53 69
     private void encapsuLationDbData(ApiInfo apiInfo) {
54 70
         if (apiInfo.getData() != null) return;
55 71
         JSONObject params = apiInfo.getParams();

+ 25 - 0
src/main/java/com/lqkj/cmlcp/utils/JsonArrayStringConverter.java

@@ -0,0 +1,25 @@
1
+package com.lqkj.cmlcp.utils;
2
+
3
+import com.alibaba.excel.converters.Converter;
4
+import com.alibaba.excel.metadata.GlobalConfiguration;
5
+import com.alibaba.excel.metadata.data.ReadCellData;
6
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
7
+import com.alibaba.fastjson2.JSON;
8
+import com.alibaba.fastjson2.JSONArray;
9
+import lombok.AllArgsConstructor;
10
+import lombok.Data;
11
+import org.springframework.stereotype.Component;
12
+
13
+@Component
14
+@Data
15
+@AllArgsConstructor
16
+public class JsonArrayStringConverter implements Converter<JSONArray> {
17
+
18
+    @Override
19
+    public JSONArray convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
20
+        return JSON.parseArray(cellData.getStringValue());
21
+    }
22
+
23
+
24
+}
25
+