Skip to content

Commit aff6227

Browse files
committed
fix: 导出数据日期格式错误
1 parent efb0927 commit aff6227

File tree

1 file changed

+43
-48
lines changed
  • backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview

1 file changed

+43
-48
lines changed

backend/framework/src/main/java/org/jumpserver/chen/framework/console/dataview/DataView.java

+43-48
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import java.nio.file.Files;
2121
import java.sql.Clob;
2222
import java.sql.SQLException;
23+
import java.text.SimpleDateFormat;
2324
import java.time.LocalDateTime;
2425
import java.time.format.DateTimeFormatter;
26+
import java.util.Date;
2527
import java.util.HashMap;
2628
import java.util.List;
2729
import java.util.Map;
@@ -101,13 +103,17 @@ private void fullData(SQLQueryResult result) {
101103
this.data.getData().clear();
102104

103105
this.getStateManager().getState().setTotal(result.getTotal());
106+
this.fullDataViewData(this.data, result);
107+
}
108+
104109

110+
private void fullDataViewData(DataViewData viewData, SQLQueryResult result) {
105111

106-
this.data.setFields(result.getFields());
112+
viewData.setFields(result.getFields());
107113

108114
Map<String, Integer> fieldNumMap = new HashMap<>();
109115

110-
this.data.getFields().forEach(field -> {
116+
viewData.getFields().forEach(field -> {
111117
if (fieldNumMap.containsKey(field.getName())) {
112118
var fieldName = field.getName();
113119
var num = fieldNumMap.get(field.getName());
@@ -118,16 +124,16 @@ private void fullData(SQLQueryResult result) {
118124
}
119125
});
120126

121-
122127
for (List<Object> row : result.getData()) {
123128
Map<String, Object> map = new HashMap<>();
124129
for (int i = 0; i < row.size(); i++) {
125-
map.put(this.data.getFields().get(i).getName(), row.get(i));
130+
map.put(viewData.getFields().get(i).getName(), row.get(i));
126131
}
127-
this.data.getData().add(map);
132+
viewData.getData().add(map);
128133
}
129134
}
130135

136+
131137
private static void writeString(BufferedWriter writer, Object object) throws IOException {
132138
var str = object.toString();
133139

@@ -137,6 +143,35 @@ private static void writeString(BufferedWriter writer, Object object) throws IOE
137143
writer.write(str);
138144
}
139145

146+
private void writeCSVData(BufferedWriter writer, DataViewData viewData) throws IOException, SQLException {
147+
148+
for (Field field : viewData.getFields()) {
149+
writeString(writer, field.getName());
150+
writer.write(",");
151+
}
152+
for (Map<String, Object> row : viewData.getData()) {
153+
for (Field field : viewData.getFields()) {
154+
var obj = row.get(field.getName());
155+
if (obj == null) {
156+
writer.write("NULL");
157+
writer.write(",");
158+
} else if (obj instanceof Clob clob) {
159+
writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length())));
160+
writer.write(",");
161+
} else if (obj instanceof Date) {
162+
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
163+
writeString(writer, fmt.format(obj));
164+
} else {
165+
writeString(writer, row.get(field.getName()));
166+
writer.write(",");
167+
}
168+
}
169+
writer.newLine();
170+
}
171+
172+
writer.newLine();
173+
}
174+
140175
public void export(String scope) throws SQLException {
141176
var session = SessionManager.getCurrentSession();
142177

@@ -155,56 +190,16 @@ public void export(String scope) throws SQLException {
155190
var writer = Files.newBufferedWriter(f.toPath());
156191

157192
if (scope.equals("current")) {
158-
for (Field field : this.data.getFields()) {
159-
writeString(writer, field.getName());
160-
writer.write(",");
161-
}
162-
writer.newLine();
163-
164-
for (Map<String, Object> row : this.data.getData()) {
165-
for (Field field : this.data.getFields()) {
166-
if (row.get(field.getName()) == null) {
167-
writer.write("NULL");
168-
writer.write(",");
169-
} else if (row.get(field.getName()) instanceof Clob clob) {
170-
writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length())));
171-
writer.write(",");
172-
} else {
173-
writeString(writer, row.get(field.getName()));
174-
writer.write(",");
175-
}
176-
}
177-
writer.newLine();
178-
}
193+
this.writeCSVData(writer, this.data);
179194
command.setOutput(String.format("%d rows exported", this.data.getData().size()));
180195
}
181196

182197
if (scope.equals("all")) {
183198
SQLQueryParams queryParams = new SQLQueryParams();
184199
queryParams.setLimit(-1);
185200
var result = this.loadDataInterface.loadData(queryParams);
186-
187-
for (Field field : result.getFields()) {
188-
writer.write(field.getName());
189-
writer.write(",");
190-
}
191-
writer.newLine();
192-
193-
for (List<Object> row : result.getData()) {
194-
for (Object o : row) {
195-
if (o == null) {
196-
writer.write("NULL");
197-
writer.write(",");
198-
} else if (o instanceof Clob clob) {
199-
writer.write(CodeUtils.escapeCsvValue(clob.getSubString(1, (int) clob.length())));
200-
writer.write(",");
201-
} else {
202-
writer.write(o.toString());
203-
writer.write(",");
204-
}
205-
}
206-
writer.newLine();
207-
}
201+
var viewData = new DataViewData();
202+
this.fullDataViewData(viewData, result);
208203
command.setOutput(String.format("%d rows exported", result.getData().size()));
209204
}
210205
writer.flush();

0 commit comments

Comments
 (0)