Browse Source

加入了dict 这个参数

4.1.3.A
jueyue 7 years ago
parent
commit
4e87ad8471
13 changed files with 122 additions and 43 deletions
  1. +6
    -0
      easypoi-annotation/src/main/java/cn/afterturn/easypoi/excel/annotation/Excel.java
  2. +18
    -5
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ExcelBaseParams.java
  3. +16
    -0
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelBaseEntity.java
  4. +3
    -3
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/ExcelBatchExportService.java
  5. +4
    -3
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/ExcelExportService.java
  6. +4
    -4
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/base/BaseExportService.java
  7. +10
    -4
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/base/ExportCommonService.java
  8. +3
    -3
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java
  9. +21
    -16
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/CellValueService.java
  10. +4
    -4
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java
  11. +1
    -0
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/base/ImportBaseService.java
  12. +1
    -1
      easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/sax/parse/SaxRowRead.java
  13. +31
    -0
      easypoi-base/src/main/java/cn/afterturn/easypoi/handler/inter/IExcelDictHandler.java

+ 6
- 0
easypoi-annotation/src/main/java/cn/afterturn/easypoi/excel/annotation/Excel.java View File

@@ -112,6 +112,10 @@ public @interface Excel {
* 值得替换 导出是{a_id,b_id} 导入反过来,所以只用写一个
*/
public String[] replace() default {};
/**
* 字典名称
*/
public String dict() default "";
/**
* 导入路径,如果是图片可以填写,默认是upload/className/ IconEntity这个类对应的就是upload/Icon/
@@ -162,4 +166,6 @@ public @interface Excel {
* @return
*/
public boolean isColumnHidden() default false;
}

+ 18
- 5
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/ExcelBaseParams.java View File

@@ -16,6 +16,7 @@
package cn.afterturn.easypoi.excel.entity;
import cn.afterturn.easypoi.handler.inter.IExcelDataHandler;
import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;
/**
* 基础参数
@@ -28,14 +29,26 @@ public class ExcelBaseParams {
/**
* 数据处理接口,以此为主,replace,format都在这后面
*/
private IExcelDataHandler dataHanlder;
private IExcelDataHandler dataHandler;
public IExcelDataHandler getDataHanlder() {
return dataHanlder;
/**
* 字段处理类
*/
private IExcelDictHandler dictHandler;
public IExcelDataHandler getDataHandler() {
return dataHandler;
}
public void setDataHanlder(IExcelDataHandler dataHanlder) {
this.dataHanlder = dataHanlder;
public void setDataHandler(IExcelDataHandler dataHandler) {
this.dataHandler = dataHandler;
}
public IExcelDictHandler getDictHandler() {
return dictHandler;
}
public void setDictHandler(IExcelDictHandler dictHandler) {
this.dictHandler = dictHandler;
}
}

+ 16
- 0
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/entity/params/ExcelBaseEntity.java View File

@@ -50,6 +50,10 @@ public class ExcelBaseEntity {
* 导出日期格式
*/
private String[] replace;
/**
* 字典名称
*/
private String dict;
/**
* set/get方法
*/
@@ -145,4 +149,16 @@ public class ExcelBaseEntity {
public void setFixedIndex(int fixedIndex) {
this.fixedIndex = fixedIndex;
}
public String getDict() {
return dict;
}
public void setDict(String dict) {
this.dict = dict;
}
public void setFixedIndex(Integer fixedIndex) {
this.fixedIndex = fixedIndex;
}
}

+ 3
- 3
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/ExcelBatchExportService.java View File

@@ -109,9 +109,9 @@ public class ExcelBatchExportService extends ExcelExportService {
List<ExcelExportEntity> entityList, Collection<?> dataSet,
Sheet sheet) {
try {
dataHanlder = entity.getDataHanlder();
if (dataHanlder != null && dataHanlder.getNeedHandlerFields() != null) {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
dataHandler = entity.getDataHandler();
if (dataHandler != null && dataHandler.getNeedHandlerFields() != null) {
needHandlerList = Arrays.asList(dataHandler.getNeedHandlerFields());
}
// 创建表格样式
setExcelExportStyler((IExcelExportStyler) entity.getStyle()


+ 4
- 3
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/ExcelExportService.java View File

@@ -149,10 +149,11 @@ public class ExcelExportService extends BaseExportService {
List<ExcelExportEntity> entityList, Collection<?> dataSet,
Sheet sheet) {
try {
dataHanlder = entity.getDataHanlder();
if (dataHanlder != null && dataHanlder.getNeedHandlerFields() != null) {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
dataHandler = entity.getDataHandler();
if (dataHandler != null && dataHandler.getNeedHandlerFields() != null) {
needHandlerList = Arrays.asList(dataHandler.getNeedHandlerFields());
}
dictHandler = entity.getDictHandler();
// 创建表格样式
setExcelExportStyler((IExcelExportStyler) entity.getStyle()
.getConstructor(Workbook.class).newInstance(workbook));


+ 4
- 4
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/base/BaseExportService.java View File

@@ -104,7 +104,7 @@ public abstract class BaseExportService extends ExportCommonService {
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
.setHyperlink(dataHandler.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), t,
entity.getName(), value));
}
@@ -113,7 +113,7 @@ public abstract class BaseExportService extends ExportCommonService {
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity),
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1).setHyperlink(dataHanlder.getHyperlink(
row.getCell(cellNum - 1).setHyperlink(dataHandler.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), t,
entity.getName(), value));
}
@@ -225,7 +225,7 @@ public abstract class BaseExportService extends ExportCommonService {
entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
.setHyperlink(dataHandler.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
value));
}
@@ -234,7 +234,7 @@ public abstract class BaseExportService extends ExportCommonService {
index % 2 == 0 ? getStyles(false, entity) : getStyles(true, entity), entity);
if (entity.isHyperlink()) {
row.getCell(cellNum - 1)
.setHyperlink(dataHanlder.getHyperlink(
.setHyperlink(dataHandler.getHyperlink(
row.getSheet().getWorkbook().getCreationHelper(), obj, entity.getName(),
value));
}


+ 10
- 4
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/base/ExportCommonService.java View File

@@ -30,6 +30,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;

import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.math.NumberUtils;
@@ -58,9 +59,10 @@ public class ExportCommonService {

protected static final Logger LOGGER = LoggerFactory.getLogger(ExportCommonService.class);

protected IExcelDataHandler dataHanlder;
protected IExcelDataHandler dataHandler;
protected IExcelDictHandler dictHandler;

protected List<String> needHanlderList;
protected List<String> needHandlerList;

/**
* 创建导出实体对象
@@ -195,8 +197,11 @@ public class ExportCommonService {
if (StringUtils.isNotEmpty(entity.getNumFormat())) {
value = numFormatValue(value, entity);
}
if (needHanlderList != null && needHanlderList.contains(entity.getName())) {
value = dataHanlder.exportHandler(obj, entity.getName(), value);
if (StringUtils.isNotEmpty(entity.getDict()) && dictHandler != null) {
value = dictHandler.toName(entity.getDict(), obj, entity.getName(), value);
}
if (needHandlerList != null && needHandlerList.contains(entity.getName())) {
value = dataHandler.exportHandler(obj, entity.getName(), value);
}
if (StringUtils.isNotEmpty(entity.getSuffix()) && value != null) {
value = value + entity.getSuffix();
@@ -243,6 +248,7 @@ public class ExportCommonService {
excelEntity.setMethod(PoiReflectorUtil.fromCache(pojoClass).getGetMethod(field.getName()));
excelEntity.setNumFormat(excel.numFormat());
excelEntity.setColumnHidden(excel.isColumnHidden());
excelEntity.setDict(excel.dict());
if (excelGroup != null) {
excelEntity.setGroupName(PoiPublicUtil.getValueByTargetId(excelGroup.name(), targetId, null));
} else {


+ 3
- 3
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/export/template/ExcelExportOfTemplateUtil.java View File

@@ -198,9 +198,9 @@ public final class ExcelExportOfTemplateUtil extends BaseExportService {
}
if (dataSet != null) {
// step 4. 正常的数据填充
dataHanlder = params.getDataHanlder();
if (dataHanlder != null) {
needHanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
dataHandler = params.getDataHandler();
if (dataHandler != null) {
needHandlerList = Arrays.asList(dataHandler.getNeedHandlerFields());
}
addDataToSheet(pojoClass, dataSet, wb.getSheetAt(params.getDataSheetNum()), wb);
}


+ 21
- 16
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/CellValueService.java View File

@@ -27,6 +27,7 @@ import java.util.Date;
import java.util.List;
import java.util.Map;

import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
@@ -52,7 +53,7 @@ public class CellValueService {

private static final Logger LOGGER = LoggerFactory.getLogger(CellValueService.class);

private List<String> hanlderList = null;
private List<String> handlerList = null;

/**
* 获取单元格内的值
@@ -179,15 +180,15 @@ public class CellValueService {

/**
* 获取cell的值
*
* @param object
* @param excelParams
* @param object
* @param cell
* @param excelParams
* @param titleString
* @param dictHandler
*/
public Object getValue(IExcelDataHandler<?> dataHanlder, Object object, Cell cell,
public Object getValue(IExcelDataHandler<?> dataHandler, Object object, Cell cell,
Map<String, ExcelImportEntity> excelParams,
String titleString) throws Exception {
String titleString, IExcelDictHandler dictHandler) throws Exception {
ExcelImportEntity entity = excelParams.get(titleString);
String xclass = "class java.lang.Object";
if (!(object instanceof Map)) {
@@ -200,8 +201,12 @@ public class CellValueService {
if (entity != null) {
result = hanlderSuffix(entity.getSuffix(), result);
result = replaceValue(entity.getReplace(), result);
result = replaceValue(entity.getReplace(), result);
if(dictHandler != null && StringUtils.isNoneBlank(entity.getDict())){
dictHandler.toValue(entity.getDict(), object, entity.getName(), result);
}
}
result = hanlderValue(dataHanlder, object, result, titleString);
result = handlerValue(dataHandler, object, result, titleString);
return getValueByType(xclass, result, entity);
}

@@ -225,7 +230,7 @@ public class CellValueService {
Object result = cellEntity.getValue();
result = hanlderSuffix(entity.getSuffix(), result);
result = replaceValue(entity.getReplace(), result);
result = hanlderValue(dataHanlder, object, result, titleString);
result = handlerValue(dataHanlder, object, result, titleString);
return getValueByType(xclass, result, entity);
}

@@ -310,24 +315,24 @@ public class CellValueService {
/**
* 调用处理接口处理值
*
* @param dataHanlder
* @param dataHandler
* @param object
* @param result
* @param titleString
* @return
*/
@SuppressWarnings({"unchecked", "rawtypes"})
private Object hanlderValue(IExcelDataHandler dataHanlder, Object object, Object result,
private Object handlerValue(IExcelDataHandler dataHandler, Object object, Object result,
String titleString) {
if (dataHanlder == null || dataHanlder.getNeedHandlerFields() == null
|| dataHanlder.getNeedHandlerFields().length == 0) {
if (dataHandler == null || dataHandler.getNeedHandlerFields() == null
|| dataHandler.getNeedHandlerFields().length == 0) {
return result;
}
if (hanlderList == null) {
hanlderList = Arrays.asList(dataHanlder.getNeedHandlerFields());
if (handlerList == null) {
handlerList = Arrays.asList(dataHandler.getNeedHandlerFields());
}
if (hanlderList.contains(titleString)) {
return dataHanlder.importHandler(object, titleString, result);
if (handlerList.contains(titleString)) {
return dataHandler.importHandler(object, titleString, result);
}
return result;
}


+ 4
- 4
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/ExcelImportService.java View File

@@ -542,11 +542,11 @@ public class ExcelImportService extends ImportBaseService {
private void saveFieldValue(ImportParams params, Object object, Cell cell,
Map<String, ExcelImportEntity> excelParams, String titleString,
Row row) throws Exception {
Object value = cellValueServer.getValue(params.getDataHanlder(), object, cell, excelParams,
titleString);
Object value = cellValueServer.getValue(params.getDataHandler(), object, cell, excelParams,
titleString, params.getDictHandler());
if (object instanceof Map) {
if (params.getDataHanlder() != null) {
params.getDataHanlder().setMapValue((Map) object, titleString, value);
if (params.getDataHandler() != null) {
params.getDataHandler().setMapValue((Map) object, titleString, value);
} else {
((Map) object).put(titleString, value);
}


+ 1
- 0
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/base/ImportBaseService.java View File

@@ -178,6 +178,7 @@ public class ImportBaseService {
} else {
excelEntity.setFormat(excel.format());
}
excelEntity.setDict(excel.dict());
}
public void getExcelFieldList(String targetId, Field[] fields, Class<?> pojoClass,


+ 1
- 1
easypoi-base/src/main/java/cn/afterturn/easypoi/excel/imports/sax/parse/SaxRowRead.java View File

@@ -199,7 +199,7 @@ public class SaxRowRead extends ImportBaseService implements ISaxRowRead {
private void saveFieldValue(ImportParams params, Object object, SaxReadCellEntity entity,
Map<String, ExcelImportEntity> excelParams,
String titleString) throws Exception {
Object value = cellValueServer.getValue(params.getDataHanlder(), object, entity,
Object value = cellValueServer.getValue(params.getDataHandler(), object, entity,
excelParams, titleString);
setValues(excelParams.get(titleString), object, value);
}


+ 31
- 0
easypoi-base/src/main/java/cn/afterturn/easypoi/handler/inter/IExcelDictHandler.java View File

@@ -0,0 +1,31 @@
package cn.afterturn.easypoi.handler.inter;

/**
* @author jueyue on 18-2-2.
* @version 3.0.4
*/
public interface IExcelDictHandler {

/**
* 从值翻译到名称
*
* @param dict 字典Key
* @param obj 对象
* @param name 属性名称
* @param value 属性值
* @return
*/
public String toName(String dict, Object obj, String name, Object value);

/**
* 从名称翻译到值
*
* @param dict 字典Key
* @param obj 对象
* @param name 属性名称
* @param value 属性值
* @return
*/
public String toValue(String dict, Object obj, String name, Object value);

}

Loading…
Cancel
Save