Commit a601c50c by 陈健智

数据下载动态表头文本增加截取处理

parent 803cb7f0
...@@ -26,10 +26,14 @@ public class Constant { ...@@ -26,10 +26,14 @@ public class Constant {
public static final String MONTH_PATTERN = "yyyy-MM"; public static final String MONTH_PATTERN = "yyyy-MM";
public static final String YEAR_PATTERN = "yyyy"; public static final String YEAR_PATTERN = "yyyy";
public static final String SECOND_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final FastDateFormat SPEC_MINUTE_FORMAT = FastDateFormat.getInstance(SPEC_MINUTE_PATTERN); public static final FastDateFormat SPEC_MINUTE_FORMAT = FastDateFormat.getInstance(SPEC_MINUTE_PATTERN);
public static final FastDateFormat SPEC_DAY_POINT_FORMAT = FastDateFormat.getInstance(SPEC_DAY_PATTERN); public static final FastDateFormat SPEC_DAY_POINT_FORMAT = FastDateFormat.getInstance(SPEC_DAY_PATTERN);
public static final FastDateFormat HOUR_FORMAT = FastDateFormat.getInstance(HOUR_PATTERN); public static final FastDateFormat HOUR_FORMAT = FastDateFormat.getInstance(HOUR_PATTERN);
public static final FastDateFormat DAY_FORMAT = FastDateFormat.getInstance(DAY_PATTERN); public static final FastDateFormat DAY_FORMAT = FastDateFormat.getInstance(DAY_PATTERN);
public static final FastDateFormat EXCEL_TIME_FORMAT = FastDateFormat.getInstance(SECOND_PATTERN);
public static final FastDateFormat SPEC_DAY_FORMAT = FastDateFormat.getInstance("yyyy/MM/dd"); public static final FastDateFormat SPEC_DAY_FORMAT = FastDateFormat.getInstance("yyyy/MM/dd");
public static final FastDateFormat ONLY_MONTH_FORMAT = FastDateFormat.getInstance("M月"); public static final FastDateFormat ONLY_MONTH_FORMAT = FastDateFormat.getInstance("M月");
public static final FastDateFormat DF_yyyyMMdd = FastDateFormat.getInstance("yyyyMMdd"); public static final FastDateFormat DF_yyyyMMdd = FastDateFormat.getInstance("yyyyMMdd");
......
...@@ -9,6 +9,7 @@ import com.alibaba.excel.write.metadata.WriteSheet; ...@@ -9,6 +9,7 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import com.zhiwei.brandkbs2.easyexcel.config.ReadExcelDTO; import com.zhiwei.brandkbs2.easyexcel.config.ReadExcelDTO;
import com.zhiwei.brandkbs2.easyexcel.config.WriteExcelDTO; import com.zhiwei.brandkbs2.easyexcel.config.WriteExcelDTO;
import com.zhiwei.brandkbs2.util.Tools; import com.zhiwei.brandkbs2.util.Tools;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -26,6 +27,7 @@ import java.nio.channels.ReadableByteChannel; ...@@ -26,6 +27,7 @@ import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel; import java.nio.channels.WritableByteChannel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author sjj * @author sjj
...@@ -112,7 +114,7 @@ public class EasyExcelUtil { ...@@ -112,7 +114,7 @@ public class EasyExcelUtil {
*/ */
public static <T> void write(String filePath, String sheetName, Class<T> clazz, List<T> datas) { public static <T> void write(String filePath, String sheetName, Class<T> clazz, List<T> datas) {
try { try {
formatExcelExports(clazz, datas); formatExcelExports(clazz, datas, null);
EasyExcel.write(filePath, clazz).sheet(sheetName).doWrite(datas); EasyExcel.write(filePath, clazz).sheet(sheetName).doWrite(datas);
} catch (Exception e) { } catch (Exception e) {
log.error("file:{},write error:", filePath, e); log.error("file:{},write error:", filePath, e);
...@@ -172,6 +174,7 @@ public class EasyExcelUtil { ...@@ -172,6 +174,7 @@ public class EasyExcelUtil {
*/ */
public static void dynamicHeadWrite(String filePath, String sheetName, List<List<String>> head, List<List<Object>> datas) { public static void dynamicHeadWrite(String filePath, String sheetName, List<List<String>> head, List<List<Object>> datas) {
try { try {
formatExcelExports(null, null, datas);
EasyExcel.write(filePath).head(head).sheet(sheetName).doWrite(datas); EasyExcel.write(filePath).head(head).sheet(sheetName).doWrite(datas);
} catch (Exception e) { } catch (Exception e) {
log.error("file:{},write error:", filePath, e); log.error("file:{},write error:", filePath, e);
...@@ -190,7 +193,7 @@ public class EasyExcelUtil { ...@@ -190,7 +193,7 @@ public class EasyExcelUtil {
*/ */
public static <T> void download(String fileName, String sheetName, Class<T> clazz, List<T> datas, HttpServletResponse response) { public static <T> void download(String fileName, String sheetName, Class<T> clazz, List<T> datas, HttpServletResponse response) {
try { try {
formatExcelExports(clazz, datas); formatExcelExports(clazz, datas, null);
response.setContentType("application/vnd.ms-excel"); response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 // 这里URLEncoder.encode可以防止中文乱码
...@@ -238,11 +241,12 @@ public class EasyExcelUtil { ...@@ -238,11 +241,12 @@ public class EasyExcelUtil {
return filePath + Tools.concat(projectName, nickName, System.currentTimeMillis(), fileName) + ".xlsx"; return filePath + Tools.concat(projectName, nickName, System.currentTimeMillis(), fileName) + ".xlsx";
} }
private static <T> void formatExcelExports(Class<T> clazz, List<T> datas){ private static <T> void formatExcelExports(Class<T> clazz, List<T> datas, List<List<Object>> dynamicDatas){
if (Objects.nonNull(clazz)) {
List<Field> stringFields = new ArrayList<>(); List<Field> stringFields = new ArrayList<>();
// 记录需要设置的部分 // 记录需要设置的部分
for (Field field : clazz.getDeclaredFields()) { for (Field field : clazz.getDeclaredFields()) {
// String格式截取前32767 // String格式截取前5000
if (field.getGenericType().toString().equals(String.class.toString())) { if (field.getGenericType().toString().equals(String.class.toString())) {
field.setAccessible(true); field.setAccessible(true);
stringFields.add(field); stringFields.add(field);
...@@ -252,12 +256,22 @@ public class EasyExcelUtil { ...@@ -252,12 +256,22 @@ public class EasyExcelUtil {
for (Field field : stringFields) { for (Field field : stringFields) {
try { try {
// 截取为excel单元格允许的最大长度 // 截取为excel单元格允许的最大长度
field.set(data, StringUtils.substring((String) (field.get(data)), 0, 32767)); field.set(data, StringUtils.substring((String) (field.get(data)), 0, 5000));
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
log.error(e); log.error(e);
} }
} }
}); });
} }
if (CollectionUtils.isNotEmpty(dynamicDatas)){
for (List<Object> dynamicData : dynamicDatas) {
dynamicData.replaceAll(obj -> {
if (Objects.nonNull(obj)) {
obj = StringUtils.substring(String.valueOf(obj), 0, 5000);
}
return obj;
});
}
}
}
} }
...@@ -5183,7 +5183,7 @@ public class MarkDataServiceImpl implements MarkDataService { ...@@ -5183,7 +5183,7 @@ public class MarkDataServiceImpl implements MarkDataService {
for (JSONObject hit : hits) { for (JSONObject hit : hits) {
BaseMap baseMap = Tools.getBaseFromEsMap(hit); BaseMap baseMap = Tools.getBaseFromEsMap(hit);
List<Object> data = new ArrayList<>(); List<Object> data = new ArrayList<>();
data.add(new Date(baseMap.getTime())); data.add(Constant.EXCEL_TIME_FORMAT.format(baseMap.getTime()));
data.add(baseMap.getPlatform()); data.add(baseMap.getPlatform());
data.add(baseMap.getSource()); data.add(baseMap.getSource());
data.add(baseMap.getTitle()); data.add(baseMap.getTitle());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment