diff --git a/src/main/resources/modules/SpringBoot/java/frame/excel/WExcel.java b/src/main/resources/modules/SpringBoot/java/frame/excel/WExcel.java index 06e94bde..98ececb2 100644 --- a/src/main/resources/modules/SpringBoot/java/frame/excel/WExcel.java +++ b/src/main/resources/modules/SpringBoot/java/frame/excel/WExcel.java @@ -100,7 +100,7 @@ public class WExcel implements Serializable, Cloneable { /** * 表头的集合 */ - private List<${basePackage}.frame.excel.WColumn> columnList = new ArrayList<>(); + private List columnList = new ArrayList<>(); /** * 单元格里存放的对象 @@ -120,7 +120,7 @@ public class WExcel implements Serializable, Cloneable { * * @return WColumn集合 */ - private List<${basePackage}.frame.excel.WColumn> initColumns(Class clazz) { + private List initColumns(Class clazz) { //获取工作簿名称,没有则以类名为默认工作簿名称 if (clazz.isAnnotationPresent(SheetName.class)) { SheetName sheetName = clazz.getAnnotation(SheetName.class); @@ -138,7 +138,7 @@ public class WExcel implements Serializable, Cloneable { continue; } - ${basePackage}.frame.excel.WColumn WColumn = new ${basePackage}.frame.excel.WColumn(); + WColumn WColumn = new WColumn(); WColumn.setField(field); Method set = ClassUtil.setMethod(field.getName(), clazz, field.getType()); @@ -161,7 +161,7 @@ public class WExcel implements Serializable, Cloneable { WColumn.setDescription(field.getAnnotation(ColumnDescription.class).value()); } //获取下拉列表 - if (field.isAnnotationPresent(${basePackage}.frame.excel.annotation.ColumnList.class)) { + if (field.isAnnotationPresent(ColumnList.class)) { WColumn.setCellList(field.getAnnotation(ColumnList.class).value()); } @@ -229,7 +229,7 @@ public class WExcel implements Serializable, Cloneable { if (list.size() > 0) { for (T t : list) { WRow row = new WRow(); - for (${basePackage}.frame.excel.WColumn column : columnList) { + for (WColumn column : columnList) { if (column == null) { continue; } @@ -261,6 +261,14 @@ public class WExcel implements Serializable, Cloneable { return this; } + public WExcel loadData(File file) throws TemplateNotMatchException, ReadErrorException, IOException { + return loadData(FileUtil.readFileToByteArray(file), null); + } + + public WExcel loadData(File file, Processor processor) throws TemplateNotMatchException, ReadErrorException, IOException { + return loadData(FileUtil.readFileToByteArray(file), processor); + } + public WExcel loadData(byte[] bytes) throws TemplateNotMatchException, ReadErrorException { return loadData(bytes, null); } @@ -672,29 +680,4 @@ public class WExcel implements Serializable, Cloneable { fileOutputStream.write(getBytes()); fileOutputStream.close(); } - - public static void main(String[] args) throws IOException { - Dept dept = new Dept(); - dept.setDeptName("AAAAAA"); - ArrayList depts = new ArrayList(); - depts.add(dept); - File file = new File("E:\\E.xlsx"); - - // 导出模板 -// new WExcel(Dept.class).loadData(depts).toFile(file); - - // 检查excel文件是否符合导入 - byte[] bytes = FileUtil.readFileToByteArray(new File("E:\\E.xlsx")); - try { - WExcel check = new WExcel(Dept.class).loadData(bytes); - check.toFile(new File("E:\\E_err.xlsx")); - System.out.println(check.hasError()); - } catch (TemplateNotMatchException e) { - e.printStackTrace(); - } catch (ReadErrorException e) { - e.printStackTrace(); - } - - System.out.println(); - } } diff --git a/src/main/resources/modules/SpringBoot/java/module/system/ent/Dept.java b/src/main/resources/modules/SpringBoot/java/module/system/ent/Dept.java index 21e2ef32..4e3877f5 100644 --- a/src/main/resources/modules/SpringBoot/java/module/system/ent/Dept.java +++ b/src/main/resources/modules/SpringBoot/java/module/system/ent/Dept.java @@ -2,6 +2,7 @@ package ${basePackage}.module.system.ent; import ${basePackage}.frame.excel.annotation.ColumnDescription; import ${basePackage}.frame.excel.annotation.ColumnName; +import ${basePackage}.frame.excel.annotation.ColumnList; import ${basePackage}.frame.excel.annotation.SheetName; import ${basePackage}.frame.base.BaseEntity; @@ -50,6 +51,7 @@ public class Dept extends BaseEntity { */ @ColumnName("是否有效") @ColumnDescription("") + @ColumnList({"是", "否"}) private Boolean valid; public String getDeptCode() { diff --git a/src/main/resources/modules/SpringBoot/java/module/system/mgr/LogErrManagerImpl.java b/src/main/resources/modules/SpringBoot/java/module/system/mgr/LogErrManagerImpl.java index 58b9163c..814ff25e 100644 --- a/src/main/resources/modules/SpringBoot/java/module/system/mgr/LogErrManagerImpl.java +++ b/src/main/resources/modules/SpringBoot/java/module/system/mgr/LogErrManagerImpl.java @@ -12,6 +12,7 @@ import ${basePackage}.frame.utils.IDgenerator; import ${basePackage}.frame.utils.MapperUtil; import ${basePackage}.frame.utils.Message; import ${basePackage}.frame.utils.ValidationUtil; +import ${basePackage}.module.system.ent.LogErr; import ${basePackage}.module.system.mpr.LogErrMapper; import ${basePackage}.module.system.req.LogErrCreateRequest; import ${basePackage}.module.system.req.LogErrDeleteRequest; @@ -54,7 +55,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr } long id = IDgenerator.nextId(); - ${basePackage}.module.system.ent.LogErr entity = MapperUtil.map(request, ${basePackage}.module.system.ent.LogErr.class); + LogErr entity = MapperUtil.map(request, LogErr.class); entity.setId(id); long result = logErrMapper.insert(entity, token); @@ -139,7 +140,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr if (StringUtil.isNotEmpty(request.getSortKey())) { PageHelper.orderBy(request.getSortKey() + " " + request.getSortType()); } - PageInfo<${basePackage}.module.system.ent.LogErr> pageInfo = new PageInfo<>(logErrMapper.find(request, token)); + PageInfo pageInfo = new PageInfo<>(logErrMapper.find(request, token)); response.setResult(pageInfo.getList()); response.setTotalCount(pageInfo.getTotal()); @@ -163,7 +164,7 @@ public class LogErrManagerImpl implements ${basePackage}.module.system.mgr.LogEr return response; } - ${basePackage}.module.system.ent.LogErr po = logErrMapper.get(request, token); + LogErr po = logErrMapper.get(request, token); if (po != null) { response.setLogErr(po); diff --git a/src/main/resources/modules/SpringBoot/java/module/system/mpr/LogErrMapper.java b/src/main/resources/modules/SpringBoot/java/module/system/mpr/LogErrMapper.java index 74bc745b..709c1d29 100644 --- a/src/main/resources/modules/SpringBoot/java/module/system/mpr/LogErrMapper.java +++ b/src/main/resources/modules/SpringBoot/java/module/system/mpr/LogErrMapper.java @@ -3,6 +3,7 @@ package ${basePackage}.module.system.mpr; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import ${basePackage}.frame.auth.Token; +import ${basePackage}.module.system.ent.LogErr; import ${basePackage}.module.system.req.LogErrDeleteRequest; import ${basePackage}.module.system.req.LogErrFindRequest; import ${basePackage}.module.system.req.LogErrGetRequest; @@ -26,7 +27,7 @@ public interface LogErrMapper { * @param token 令牌 * @return 返回数量 */ - long insert(@Param("request") ${basePackage}.module.system.ent.LogErr request, @Param("token") Token token); + long insert(@Param("request") LogErr request, @Param("token") Token token); /** * 批量插入 @@ -35,7 +36,7 @@ public interface LogErrMapper { * @param token 令牌 * @return 返回数量 */ - long insertBatch(@Param("list") List<${basePackage}.module.system.ent.LogErr> request, @Param("token") Token token); + long insertBatch(@Param("list") List request, @Param("token") Token token); /** * 逻辑删除 @@ -62,7 +63,7 @@ public interface LogErrMapper { * @param token 令牌 * @return 返回对象 */ - List<${basePackage}.module.system.ent.LogErr> find(@Param("request") LogErrFindRequest request, @Param("token") Token token); + List find(@Param("request") LogErrFindRequest request, @Param("token") Token token); /** * 获得对象 @@ -71,5 +72,5 @@ public interface LogErrMapper { * @param token 令牌 * @return 返回对象 */ - ${basePackage}.module.system.ent.LogErr get(@Param("request") LogErrGetRequest request, @Param("token") Token token); + LogErr get(@Param("request") LogErrGetRequest request, @Param("token") Token token); } diff --git a/src/main/resources/modules/SpringBoot/java/module/system/rsp/LogErrFindResponse.java b/src/main/resources/modules/SpringBoot/java/module/system/rsp/LogErrFindResponse.java index 44df14f2..a6adcc8b 100644 --- a/src/main/resources/modules/SpringBoot/java/module/system/rsp/LogErrFindResponse.java +++ b/src/main/resources/modules/SpringBoot/java/module/system/rsp/LogErrFindResponse.java @@ -1,6 +1,7 @@ package ${basePackage}.module.system.rsp; import ${basePackage}.frame.base.BaseFindResponse; +import ${basePackage}.module.system.ent.LogErr; /** * LogErrFindResponse - 错误日志 @@ -9,5 +10,5 @@ import ${basePackage}.frame.base.BaseFindResponse; * @version 0.0.1 * @since 2017-01-01 */ -public class LogErrFindResponse extends BaseFindResponse<${basePackage}.module.system.ent.LogErr> { +public class LogErrFindResponse extends BaseFindResponse { } \ No newline at end of file diff --git a/src/main/resources/modules/SpringBoot/test/UtilTest.java b/src/main/resources/modules/SpringBoot/test/UtilTest.java index 5ff9aabf..77c18c37 100644 --- a/src/main/resources/modules/SpringBoot/test/UtilTest.java +++ b/src/main/resources/modules/SpringBoot/test/UtilTest.java @@ -1,11 +1,28 @@ package ${basePackage}; -import ${basePackage}.frame.utils.*; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; +import ${basePackage}.frame.excel.WExcel; +import ${basePackage}.frame.excel.exception.ReadErrorException; +import ${basePackage}.frame.excel.exception.TemplateNotMatchException; +import ${basePackage}.frame.utils.AESUtil; +import ${basePackage}.frame.utils.Base64Util; +import ${basePackage}.frame.utils.IDgenerator; +import ${basePackage}.frame.utils.MD5Util; +import ${basePackage}.frame.utils.MapperUtil; +import ${basePackage}.frame.utils.ProcessUtil; +import ${basePackage}.frame.utils.RSAUtil; +import ${basePackage}.module.system.ent.Dept; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * UtilTest - - 测试用例 @@ -91,4 +108,49 @@ public class UtilTest { boolean b = RSAUtil.doCheck("我有一个苹果".getBytes(), sign); System.out.println(b); } + + @Test + public void testExcel() { + // 准备导出数据 + Dept dept = new Dept(); + dept.setDeptCode("A000101"); + dept.setDeptName("人事部"); + dept.setDeptAlias("人事部"); + dept.setSupCode("A0001"); + dept.setSupName("董事会"); + dept.setValid(true); + ArrayList depts = new ArrayList(); + depts.add(dept); + + // 设置文件地址及导出 + try { + File file = new File("E:\\E.xlsx"); + new WExcel(Dept.class).loadData(depts).toFile(file); + } catch (IOException e) { + e.printStackTrace(); + } + + // 导入数据 + try { + File file = new File("E:\\E.xlsx"); + WExcel.Processor processor = new WExcel.Processor() { + @Override + public List exec(Dept o) { + System.out.println("从Excel中读取对象:" + MapperUtil.toJson(o)); + return Arrays.asList("模拟处理对象业务时出现的错误信息1","模拟处理对象业务时出现的错误信息2"); + } + }; + WExcel check = new WExcel(Dept.class).loadData(file, processor); + if (check.hasError()) { + System.out.println("导入或处理有错误."); + check.toFile(new File("E:\\E_err.xlsx")); + } + } catch (TemplateNotMatchException e) { + Assert.assertTrue("导入文件与模板不匹配,请重新下载模板!", false); + } catch (ReadErrorException e) { + Assert.assertTrue("导入文件错误,请检查格式或文件是否被破坏!", false); + } catch (IOException e) { + Assert.assertTrue("读取错误!", false); + } + } }