From cdcd2d540de3e6ba4c2e9e7c6a879416da78c17b Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 16 Dec 2021 10:53:51 +0800
Subject: [PATCH] 保安员导出过多导致报错问题处理
---
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml | 7 +++
src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java | 22 +++++------
src/main/java/org/springblade/modules/equipage/controller/CarController.java | 1
src/main/java/org/springblade/common/utils/FtpSyncUtil.java | 8 ++--
src/main/java/org/springblade/common/excel/RowWriteHandler.java | 53 +++++++++++++++++---------
5 files changed, 55 insertions(+), 36 deletions(-)
diff --git a/src/main/java/org/springblade/common/excel/RowWriteHandler.java b/src/main/java/org/springblade/common/excel/RowWriteHandler.java
index ae04aa7..38a7282 100644
--- a/src/main/java/org/springblade/common/excel/RowWriteHandler.java
+++ b/src/main/java/org/springblade/common/excel/RowWriteHandler.java
@@ -6,6 +6,7 @@
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
+import org.springblade.core.tool.utils.Func;
import java.util.List;
@@ -14,31 +15,45 @@
* @author zhongrj
* @since 2021-9-26
*/
-public class RowWriteHandler implements CellWriteHandler {
+public class RowWriteHandler implements CellWriteHandler {
+ public static CellStyle cellStyle;
- @Override
- public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+ /**
+ * 设置全局变量,防止 cellStyle 创建过多报错 2021-12-16 zrj
+ * The maximum number of cell styles was exceeded. You can define up to 64000styles in a .xlsx workbook
+ * @param cellStyle
+ */
+ public static void setCellStyle(CellStyle cellStyle) {
+ RowWriteHandler.cellStyle = cellStyle;
+ }
+ @Override
+ public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
+
+ }
+
+ @Override
+ public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+ //设置单元格格式为文本
+ Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
+ //自定义样式不为空时,重复利用
+ if(Func.isEmpty(cellStyle)){
+ cellStyle = workbook.createCellStyle();
+ setCellStyle(cellStyle);
}
+ DataFormat dataFormat = workbook.createDataFormat();
+ cellStyle.setDataFormat(dataFormat.getFormat("@"));
+ cell.setCellStyle(cellStyle);
+ }
- @Override
- public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- //设置单元格格式为文本
- Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
- CellStyle cellStyle = workbook.createCellStyle();
- DataFormat dataFormat = workbook.createDataFormat();
- cellStyle.setDataFormat(dataFormat.getFormat("@"));
- cell.setCellStyle(cellStyle);
- }
+ //@Override 加上会报错
+ public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- //@Override 加上会报错
- public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
+ }
- }
+ @Override
+ public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
- @Override
- public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
-
- }
+ }
}
diff --git a/src/main/java/org/springblade/common/utils/FtpSyncUtil.java b/src/main/java/org/springblade/common/utils/FtpSyncUtil.java
index a8e9f61..2f588b1 100644
--- a/src/main/java/org/springblade/common/utils/FtpSyncUtil.java
+++ b/src/main/java/org/springblade/common/utils/FtpSyncUtil.java
@@ -15,12 +15,12 @@
* sql 处理
* @return
*/
- public static StringBuilder sqlHandler(StringBuilder builder,String sql){
- String[] split = builder.toString().split(";");
+ public static StringBuilder sqlHandler(StringBuilder builder,String sql,int length){
//拼接
builder = builder.append(sql).append(";");
+ String[] split = builder.toString().split(";");
//判断list.size 大小
- if (split.length==999){
+ if (split.length==length){
//执行
FtpUtil.sqlFileUpload(builder.toString());
//清空
@@ -30,7 +30,7 @@
}
/**
- * sql 处理
+ * sql 处理,执行
* @return
*/
public static void slqSync(StringBuilder builder){
diff --git a/src/main/java/org/springblade/modules/equipage/controller/CarController.java b/src/main/java/org/springblade/modules/equipage/controller/CarController.java
index 7735838..71f3295 100644
--- a/src/main/java/org/springblade/modules/equipage/controller/CarController.java
+++ b/src/main/java/org/springblade/modules/equipage/controller/CarController.java
@@ -180,6 +180,7 @@
response.setCharacterEncoding(org.apache.commons.codec.Charsets.UTF_8.name());
fileName = URLEncoder.encode("车辆导入数据模板"+ DateUtil.time(), Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+
//修改单元格格式为文本格式
EasyExcel.write(response.getOutputStream(), CarExcel.class).sheet("车辆数据表").registerWriteHandler(new RowWriteHandler()).doWrite(list);
} catch (Throwable var6) {
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index 220ebc5..9b39a2b 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -778,7 +778,12 @@
and bu.real_name like concat('%', #{user.realName},'%')
</if>
<if test="user.dispatch!=null and user.dispatch != ''">
- and bu.dispatch = #{user.dispatch}
+ <if test="user.dispatch == 0">
+ and bu.dispatch = #{user.dispatch}
+ </if>
+ <if test="user.dispatch == 1">
+ and bu.dispatch = #{user.dispatch}
+ </if>
</if>
<if test="user.userType!=null and user.userType != ''">
and bu.user_type = #{user.userType}
diff --git a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
index 599e01a..6780ebc 100644
--- a/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
+++ b/src/main/java/org/springblade/modules/training/controller/TrainingRegistrationController.java
@@ -139,7 +139,7 @@
+ "," + "'" + trainingRegistration.getIsExam() + "'"
+ "," +"'" + trainingRegistration.getAuditStatus() + "'" + ");" +
"update blade_user set is_train = " + user1.getIsTrain() + " " +"where id = " + "'" + user1.getId() + "'";
- return FtpSyncUtil.sqlHandler(builder, sql);
+ return FtpSyncUtil.sqlHandler(builder, sql,500);
}
/**
@@ -196,13 +196,9 @@
if (status){
return R.data(200,"取消报名成功");
}
-
-
-
}else {
return R.data(201,"尚未报名");
}
-
}
return R.data(202,"取消报名失败");
}
@@ -302,7 +298,7 @@
AtomicInteger count = new AtomicInteger();
//创建年龄部分对象集合
List<String> errorList = new ArrayList<>();
- AtomicReference<StringBuilder> builder = new AtomicReference<>(new StringBuilder());
+// AtomicReference<StringBuilder> builder = new AtomicReference<>(new StringBuilder());
//遍历
list.forEach(userId ->{
User user = userService.getById(userId);
@@ -326,7 +322,8 @@
userService.updateById(user);
//数据同步
- builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+ saveTrainingRegistration(trainingRegistration1,user);
+// builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
} else {
if (user.getIsTrain() != 1) {
TrainingRegistration trainingRegistration1 = new TrainingRegistration();
@@ -344,7 +341,8 @@
userService.updateById(user);
//数据同步
- builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
+ saveTrainingRegistration(trainingRegistration1,user);
+// builder.set(batchSaveTrainingRegistration(trainingRegistration1, user, builder.get()));
}
}
}else {
@@ -354,10 +352,10 @@
errorList.add(user.getCardid());
}
});
- //同步
- if (builder.get().length()>0) {
- FtpSyncUtil.slqSync(builder.get());
- }
+// //同步
+// if (builder.get().length()>0) {
+// FtpSyncUtil.slqSync(builder.get());
+// }
//如果存在年龄不符的,则抛出异常
if (count.get()>0){
String errorAccount = StringUtils.join(errorList, "\\\n");
--
Gitblit v1.9.3