2
2
3
3
import com .alibaba .excel .ExcelWriter ;
4
4
import com .alibaba .excel .write .metadata .WriteSheet ;
5
+ import io .github .linwancen .sql .bean .Dto ;
5
6
import io .github .linwancen .sql .bean .Rel ;
6
7
import io .github .linwancen .sql .bean .SqlInfo ;
7
8
import io .github .linwancen .sql .bean .TableColumn ;
18
19
import java .util .Collections ;
19
20
import java .util .Comparator ;
20
21
import java .util .HashSet ;
22
+ import java .util .LinkedHashMap ;
21
23
import java .util .List ;
24
+ import java .util .Map ;
22
25
import java .util .Set ;
23
26
import java .util .TreeMap ;
24
27
@@ -32,14 +35,17 @@ public class SqlInfoWriter {
32
35
private final WriteSheet table ;
33
36
private final WriteSheet column ;
34
37
private final WriteSheet rel ;
38
+ private final WriteSheet dto ;
35
39
private final Set <List <String >> columnRel = new HashSet <>();
40
+ private final Map <String , String > dtoMap = new LinkedHashMap <>();
36
41
37
42
public SqlInfoWriter (ExcelWriter excelWriter ) {
38
43
this .excelWriter = excelWriter ;
39
44
sql = ExcelUtils .sheet (this .excelWriter , "sql" , SqlInfo .class );
40
45
table = ExcelUtils .sheet (excelWriter , "table" , TableColumn .class );
41
46
column = ExcelUtils .sheet (excelWriter , "column" , TableColumn .class );
42
47
rel = ExcelUtils .sheet (excelWriter , "rel" , Rel .class );
48
+ dto = ExcelUtils .sheet (excelWriter , "dto" , Dto .class );
43
49
}
44
50
45
51
public void write (List <SqlInfo > sqlInfo ) {
@@ -52,12 +58,23 @@ public void write(List<SqlInfo> sqlInfo) {
52
58
}
53
59
info .setSql (sqlStr );
54
60
61
+ String oneTableName = null ;
62
+ if (info .getTableMap ().size () == 1 ) {
63
+ oneTableName = info .getTableMap ().keySet ().iterator ().next ();
64
+ String parameterClass = info .getParameterClass ();
65
+ if (parameterClass != null ) {
66
+ dtoMap .putIfAbsent (parameterClass , oneTableName );
67
+ }
68
+ String resultClass = info .getResultClass ();
69
+ if (resultClass != null ) {
70
+ dtoMap .put (resultClass , oneTableName );
71
+ }
72
+ }
55
73
for (TreeMap <String , TableColumn > map : info .getColumnList ()) {
56
74
for (TableColumn v : map .values ()) {
57
75
// column table null and one table use it
58
- if (v .getTable () == null && info .getTableMap ().size () == 1 ) {
59
- String tableName = info .getTableMap ().keySet ().iterator ().next ();
60
- v .setTable (tableName );
76
+ if (v .getTable () == null && oneTableName != null ) {
77
+ v .setTable (oneTableName );
61
78
}
62
79
excelWriter .write (Collections .singleton (v ), column );
63
80
@@ -78,6 +95,7 @@ public void write(List<SqlInfo> sqlInfo) {
78
95
79
96
appendErr (info , err );
80
97
}
98
+ dtoMap .forEach ((clazz , table ) -> excelWriter .write (Collections .singleton (new Dto (clazz , table )), dto ));
81
99
excelWriter .write (sqlInfo , sql );
82
100
83
101
File file = excelWriter .writeContext ().writeWorkbookHolder ().getFile ();
0 commit comments