Excel工具类优化,新增 FieldType 接口,规范化编程,防止误用。

This commit is contained in:
thinkgem
2020-03-05 18:08:00 +08:00
parent a87f4f25ff
commit 60e1129e0e
10 changed files with 204 additions and 185 deletions

View File

@@ -5,8 +5,6 @@ package com.jeesite.common.utils.excel.fieldtype;
import java.util.List;
import org.springframework.core.NamedThreadLocal;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.entity.Area;
import com.jeesite.modules.sys.utils.AreaUtils;
@@ -14,23 +12,22 @@ import com.jeesite.modules.sys.utils.AreaUtils;
/**
* 字段类型转换
* @author ThinkGem
* @version 2018-08-11
* @version 2020-3-5
* @example fieldType = AreaType.class
*/
public class AreaType {
public class AreaType implements FieldType {
private static ThreadLocal<List<Area>> cache = new NamedThreadLocal<>("AreaType");
private List<Area> list;
public AreaType() {
list = AreaUtils.getAreaAllList();
}
/**
* 获取对象值(导入)
*/
public static Object getValue(String val) {
List<Area> cacheList = cache.get();
if (cacheList == null){
cacheList = AreaUtils.getAreaAllList();
cache.set(cacheList);
}
for (Area e : cacheList){
public Object getValue(String val) {
for (Area e : list){
if (StringUtils.trimToEmpty(val).equals(e.getAreaName())){
return e;
}
@@ -41,18 +38,11 @@ public class AreaType {
/**
* 获取对象值(导出)
*/
public static String setValue(Object val) {
public String setValue(Object val) {
if (val != null && ((Area)val).getAreaName() != null){
return ((Area)val).getAreaName();
}
return "";
}
/**
* 清理缓存
*/
public static void clearCache(){
cache.remove();
return StringUtils.EMPTY;
}
}

View File

@@ -5,8 +5,6 @@ package com.jeesite.common.utils.excel.fieldtype;
import java.util.List;
import org.springframework.core.NamedThreadLocal;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.entity.Company;
import com.jeesite.modules.sys.utils.EmpUtils;
@@ -14,23 +12,22 @@ import com.jeesite.modules.sys.utils.EmpUtils;
/**
* 字段类型转换
* @author ThinkGem
* @version 2018-08-11
* @version 2020-3-5
* @example fieldType = CompanyType.class
*/
public class CompanyType {
public class CompanyType implements FieldType {
private static ThreadLocal<List<Company>> cache = new NamedThreadLocal<>("CompanyType");
private List<Company> list;
public CompanyType() {
list = EmpUtils.getCompanyAllList();
}
/**
* 获取对象值(导入)
*/
public static Object getValue(String val) {
List<Company> cacheList = cache.get();
if (cacheList == null){
cacheList = EmpUtils.getCompanyAllList();
cache.set(cacheList);
}
for (Company e : cacheList){
public Object getValue(String val) {
for (Company e : list){
if (StringUtils.trimToEmpty(val).equals(e.getCompanyName())){
return e;
}
@@ -41,17 +38,11 @@ public class CompanyType {
/**
* 设置对象值(导出)
*/
public static String setValue(Object val) {
public String setValue(Object val) {
if (val != null && ((Company)val).getCompanyName() != null){
return ((Company)val).getCompanyName();
}
return "";
return StringUtils.EMPTY;
}
/**
* 清理缓存
*/
public static void clearCache(){
cache.remove();
}
}

View File

@@ -5,8 +5,6 @@ package com.jeesite.common.utils.excel.fieldtype;
import java.util.List;
import org.springframework.core.NamedThreadLocal;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.modules.sys.entity.Office;
import com.jeesite.modules.sys.utils.EmpUtils;
@@ -14,23 +12,22 @@ import com.jeesite.modules.sys.utils.EmpUtils;
/**
* 字段类型转换
* @author ThinkGem
* @version 2018-08-11
* @version 2020-3-5
* @example fieldType = OfficeType.class
*/
public class OfficeType {
public class OfficeType implements FieldType {
private static ThreadLocal<List<Office>> cache = new NamedThreadLocal<>("OfficeType");
private List<Office> list;
public OfficeType() {
list = EmpUtils.getOfficeAllList();
}
/**
* 获取对象值(导入)
*/
public static Object getValue(String val) {
List<Office> cacheList = cache.get();
if (cacheList == null){
cacheList = EmpUtils.getOfficeAllList();
cache.set(cacheList);
}
for (Office e : cacheList){
public Object getValue(String val) {
for (Office e : list){
if (StringUtils.trimToEmpty(val).equals(e.getOfficeName())){
return e;
}
@@ -41,17 +38,11 @@ public class OfficeType {
/**
* 设置对象值(导出)
*/
public static String setValue(Object val) {
public String setValue(Object val) {
if (val != null && ((Office)val).getOfficeName() != null){
return ((Office)val).getOfficeName();
}
return "";
return StringUtils.EMPTY;
}
/**
* 清理缓存
*/
public static void clearCache(){
cache.remove();
}
}

View File

@@ -5,8 +5,6 @@ package com.jeesite.common.utils.excel.fieldtype;
import java.util.List;
import org.springframework.core.NamedThreadLocal;
import com.jeesite.common.collect.ListUtils;
import com.jeesite.common.lang.StringUtils;
import com.jeesite.common.utils.SpringUtils;
@@ -16,26 +14,24 @@ import com.jeesite.modules.sys.service.PostService;
/**
* 字段类型转换
* @author ThinkGem
* @version 2018-08-11
* @version 2020-3-5
* @example fieldType = PostListType.class
*/
public class PostListType {
private static PostService postService = SpringUtils.getBean(PostService.class);
private static ThreadLocal<List<Post>> cache = new NamedThreadLocal<>("PostListType");
public class PostListType implements FieldType {
private List<Post> postList;
public PostListType() {
PostService postService = SpringUtils.getBean(PostService.class);
postList = postService.findList(new Post());
}
/**
* 获取对象值(导入)
*/
public static Object getValue(String val) {
List<Post> postList = ListUtils.newArrayList();
List<Post> cacheList = cache.get();
if (cacheList == null){
cacheList = postService.findList(new Post());
cache.set(cacheList);
}
public Object getValue(String val) {
for (String s : StringUtils.split(val, ",")) {
for (Post e : cacheList) {
for (Post e : postList) {
if (StringUtils.trimToEmpty(s).equals(e.getPostName())) {
postList.add(e);
}
@@ -47,7 +43,7 @@ public class PostListType {
/**
* 设置对象值(导出)
*/
public static String setValue(Object val) {
public String setValue(Object val) {
if (val != null) {
@SuppressWarnings("unchecked")
List<Post> postList = (List<Post>) val;
@@ -56,10 +52,4 @@ public class PostListType {
return "";
}
/**
* 清理缓存
*/
public static void clearCache(){
cache.remove();
}
}

View File

@@ -32,10 +32,10 @@ import com.jeesite.common.utils.excel.fieldtype.OfficeType;
attrName="employee", columns={
@Column(includeEntity=BaseEntity.class),
@Column(includeEntity=DataEntity.class),
@Column(name="emp_code", attrName="empCode", label="员工编码", isPK=true),
@Column(name="emp_no", attrName="empNo", label="员工工号"),
@Column(name="emp_name", attrName="empName", label="员工姓名", queryType=QueryType.LIKE),
@Column(name="emp_name_en", attrName="empNameEn", label="英文名", queryType=QueryType.LIKE),
@Column(name="emp_code", attrName="empCode", label="员工编码", isPK=true),
@Column(name="emp_no", attrName="empNo", label="员工工号"),
@Column(name="emp_name", attrName="empName", label="员工姓名", queryType=QueryType.LIKE),
@Column(name="emp_name_en", attrName="empNameEn", label="英文名", queryType=QueryType.LIKE),
}),
@JoinTable(type=Type.LEFT_JOIN, entity=Office.class, alias="o",
on="o.office_code=e.office_code", attrName="employee.office",
@@ -66,9 +66,9 @@ import com.jeesite.common.utils.excel.fieldtype.OfficeType;
@JoinTable(type=Type.LEFT_JOIN, entity=Area.class, alias="ar",
on="ar.area_code = c.area_code", attrName="employee.company.area",
columns={
@Column(name="area_code", label="区域代码", isPK=true),
@Column(name="area_name", label="区域名称", isQuery=false),
@Column(name="area_type", label="区域类型"),
@Column(name="area_code", label="区域代码", isPK=true),
@Column(name="area_name", label="区域名称", isQuery=false),
@Column(name="area_type", label="区域类型"),
}),
},
extWhereKeys="dsfOffice, dsfCompany",
@@ -97,11 +97,12 @@ public class EmpUser extends User {
@ExcelField(title="电子邮箱", attrName="email", align=Align.LEFT, sort=50),
@ExcelField(title="手机号码", attrName="mobile", align=Align.CENTER, sort=60),
@ExcelField(title="办公电话", attrName="phone", align=Align.CENTER, sort=70),
@ExcelField(title="性别", attrName="sex", dictType="sys_user_sex", width=10*256, align=Align.CENTER, sort=75),
@ExcelField(title="性别", attrName="sex", dictType="sys_user_sex", words=10, align=Align.CENTER, sort=75),
@ExcelField(title="员工编码", attrName="employee.empCode", align=Align.CENTER, sort=80),
@ExcelField(title="员工姓名", attrName="employee.empName", align=Align.CENTER, sort=95),
@ExcelField(title="拥有角色编号", attrName="userRoleString", align=Align.LEFT, sort=800, type=ExcelField.Type.IMPORT),
@ExcelField(title="最后登录日期", attrName="lastLoginDate", width=20*256, align=Align.CENTER, sort=900, type=ExcelField.Type.EXPORT, dataFormat="yyyy-MM-dd HH:mm"),
@ExcelField(title="建档日期", attrName="createDate", words=15, align=Align.CENTER, sort=900, type=ExcelField.Type.EXPORT, dataFormat="yyyy-MM-dd"),
@ExcelField(title="最后登录", attrName="lastLoginDate", words=20, align=Align.CENTER, sort=900, type=ExcelField.Type.EXPORT),
})
public Employee getEmployee(){
Employee employee = (Employee)super.getRefObj();