Excel工具类优化,新增 FieldType 接口,规范化编程,防止误用。
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user