全面修复和测试引入easypoi的bug,处理dict转换问题

This commit is contained in:
lixuetao
2023-11-18 13:45:38 +08:00
parent b84fded287
commit 1a0d0a2c08
23 changed files with 207 additions and 32 deletions
@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.common.api.vo.Results;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.SpringContextUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.config.easypoi.EasyPoiDictHandlerImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.shiro.SecurityUtils;
@@ -74,6 +76,7 @@ public class JeroController<T, S extends IService<T>> {
mv.addObject(FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(CLASS, clazz);
ExportParams exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
exportParams.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
mv.addObject(PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
return mv;
@@ -113,6 +116,7 @@ public class JeroController<T, S extends IService<T>> {
}
Map<String, Object> map = new HashMap<>();
ExportParams exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title+i);
exportParams.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
exportParams.setType(ExcelType.XSSF);
//map.put("title",exportParams);//表格Title
map.put(PARAMS,exportParams);//表格Title
@@ -157,8 +161,9 @@ public class JeroController<T, S extends IService<T>> {
// 获取上传文件对象
MultipartFile file = entity.getValue();
ImportParams params = new ImportParams();
/*params.setTitleRows(2);
params.setHeadRows(1);*/
params.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<T> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
@@ -172,7 +177,7 @@ public class JeroController<T, S extends IService<T>> {
return Results.OK("文件导入成功!数据行数:" + list.size());
} catch (Exception e) {
log.error(e.getMessage(), e);
return Results.error("文件导入失败:" + e.getMessage());
return Results.error("文件导入失败,请联系管理员");
} finally {
try {
file.getInputStream().close();
@@ -58,7 +58,7 @@ public class SysDictItemCore implements Serializable {
/**
* 排序
*/
@Excel(name = "排序", width = 15, type=4)
@Excel(name = "排序", width = 15, type = 10)
private Integer sortOrder;
@@ -0,0 +1,91 @@
package com.jero.config.easypoi;
import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.jero.common.api.CommonAPI;
import com.jero.common.system.vo.DictModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 针对easypoi的@Excel的dict属性,做字典值转换的方法
* 需要进行字段转换必须使用:
* exportParams.setDictHandler(new EasyPoiDictHandlerImpl());
* 来实现转换处理
*/
@Slf4j
@Service
public class EasyPoiDictHandlerImpl implements IExcelDictHandler {
@Lazy
@Resource
private CommonAPI commonAPI;
@Override
public List<Map> getList(String dict) {
if (StrUtil.isEmpty(dict)) {
return null;
}
List<DictModel> dictList = commonAPI.queryDictItemsByCode(dict);
if (dictList != null && !dictList.isEmpty()){
List<Map> result = new ArrayList<>();
for (DictModel t : dictList) {
if(t!=null){
Map<String, String> map = new HashMap<>();
map.put("text", t.getText());
map.put("value", t.getValue());
result.add(map);
}
}
return result;
}
return null;
}
@Override
public String toName(String dict, Object obj, String name, Object value) {
if (ObjectUtil.isEmpty(value)) {
return null;
}
String valueStr = String.valueOf(value);
List<DictModel> dictList = commonAPI.queryDictItemsByCode(dict);
for (DictModel t : dictList) {
if(t!=null && valueStr.equals(t.getValue())){
return t.getText();
}
}
return null;
}
@Override
public String toValue(String dict, Object obj, String name, Object value) {
if (ObjectUtil.isEmpty(value)) {
return null;
}
String valueStr = String.valueOf(value);
List<DictModel> dictList = commonAPI.queryDictItemsByCode(dict);
for (DictModel t : dictList) {
if(t!=null && valueStr.equals(t.getText())){
return t.getValue();
}
}
return null;
}
}
@@ -17,6 +17,7 @@ import com.jero.common.util.BrowserUtils;
import com.jero.common.util.SpringContextUtils;
import com.jero.common.util.TokenUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.config.easypoi.EasyPoiDictHandlerImpl;
import com.jero.generater.modules.online.auth.service.IOnlAuthPageService;
import com.jero.generater.modules.online.cgform.converter.ConvertUtil;
import com.jero.generater.modules.online.cgform.entity.OnlCgformEnhanceJs;
@@ -566,8 +567,9 @@ public class OnlCgformApiController {
}
List<ExcelExportEntity> var14 = getExcelExportEntities(var4, var7, fieldList, var12);
Workbook var33 = ExcelExportUtil.exportExcel(new ExportParams(null, var5), var14, var12);
ExportParams exportParams = new ExportParams(null, var5);
exportParams.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
Workbook var33 = ExcelExportUtil.exportExcel(exportParams, var14, var12);
ServletOutputStream var34 = null;
getVar3(var2, var3, var4, var33, var34);
@@ -659,8 +661,9 @@ public class OnlCgformApiController {
while (var53.hasNext()) {
Entry<String, MultipartFile> var20 = var53.next();
MultipartFile var21 = var20.getValue();
ImportParams var22 = new ImportParams();
List<Map<String, Object>> var23 = ExcelImportUtil.importExcel(var21.getInputStream(), Map.class, var22);
ImportParams params = new ImportParams();
params.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
List<Map<String, Object>> var23 = ExcelImportUtil.importExcel(var21.getInputStream(), Map.class, params);
if (var23 != null) {
Object var24 = "";
ArrayList<Map<String, Object>> var25 = new ArrayList<>();
@@ -13,7 +13,9 @@ import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.DynamicDataSourceModel;
import com.jero.common.util.BrowserUtils;
import com.jero.common.util.SpringContextUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.config.easypoi.EasyPoiDictHandlerImpl;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportHead;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportItem;
import com.jero.generater.modules.online.cgreport.entity.OnlCgreportParam;
@@ -452,13 +454,16 @@ public class OnlCgreportAPI {
var42 = new String(var4.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
var3.setHeader("content-disposition", "attachment;filename=" + var42 + ".xls");
}
Workbook var44 = ExcelExportUtil.exportExcel(new ExportParams(null, var5), var13, var9);
ExportParams exportParams = new ExportParams(null, var5);
exportParams.setDictHandler(SpringContextUtils.getApplicationContext().getBean(EasyPoiDictHandlerImpl.class));
Workbook var44 = ExcelExportUtil.exportExcel(exportParams, var13, var9);
var41 = var3.getOutputStream();
var44.write(var41);
} catch (Exception var33) {
log.error("异常",var33);
} finally {
try {
if(var41 != null){var41.flush();var41.close();}
} catch (Exception var32) {