业务逻辑中通常对于保存或者导入的信息需要进行校验,这时候我们如果通过后台校验可能需要大量的ifelse去判断,那不如通过一个反射写一个通用的校验,请看代码--》
import org.apache.commons.lang3.ObjectUtils;
import java.lang.reflect.Field;
import java.util.*;
/**
* @Author: yitianRen
* @Date: 14:30 2020/8/1
* @Description:
* @Version v1.0
*/
public class CheckEntityFieldValueEmpty {
//基本信息非空字段
public static final String[] AM_HIGH_TALENT_INFO_FIELDS =
{"name", "sex", "idNum", "orgFullName", "orgType", "adminPost", "pqLevel", "education", "mobile", "email", "address", "talenLevel","hightTalentType"};
//高端会计人才非空字段
public static final String[] AM_HIGH_TALENT_INFO_FIELDS_QGLJ =
{"talentType", "year", "culStatus", "graDate"};
//高端会计人才特殊支持计划非空字段
public static final String[] AM_HIGH_TALENT_INFO_FIELDS_KJTSZCJH =
{"year", "culStatus", "graDate"};
//全国大中型企事业单位总会计师培养(高端班)非空字段
public static final String[] AM_HIGH_TALENT_INFO_FIELDS_KJSPYG =
{"talentType", "talentPeriod", "culStatus", "graDate"};
//校验保存或者导入实体类中不能为空值的项
/**
*@Author: yitianRen
*@Date: 17:12 2020/8/1
*@Description:
* @param isList 提示语
* @param listIndex 第几项
* @param notEmptyStrs 不能为空的字段值
* @param obj 实体
*@Version v1.0
*/
public static List<Map<String,String>> checkEntity(String[] notEmptyStrs, Object obj,int isList,int listIndex){
List<Map<String,String>> resutList = new LinkedList<>();
/* for (int i = 0; i < checkList.size(); i++) {
Object obj = checkList.get(i);*/
Field[] fields = obj.getClass().getDeclaredFields();
Map<String,String> map = new HashMap<>();
StringBuffer sb =new StringBuffer();
if(isList == -1){
sb.append("当前单据中基础项");
}else if(isList == -3){
sb.append("第"+(listIndex+1)+"列中基础项");
}else if(isList == -2){
sb.append("当前单据中锁定项");
}
else if(isList == -4){
sb.append("第"+(listIndex+1)+"列中锁定项");
}
Boolean isEmpty = false;
for (Field f:fields) {
try {
//校验是否是需要校验字段
if (Arrays.asList(notEmptyStrs).contains(f.getName())) {
f.setAccessible(true);
Object value = f.get(obj);
String str = ObjectUtils.toString(value, "");
if (StringUtil.isEmpty(str)) {
isEmpty = true;
sb.append(getName(f.getName()));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
sb.append("项不能为空!");
map.put("emptyField",sb.toString());
if(isEmpty){
resutList.add(map);
}
//}
return resutList;
}
private static String getName(String name) {
Map<String,String> nameMap = new HashMap<>();
nameMap.put("name","姓名");
nameMap.put("sex","性别");
nameMap.put("idNum","身份证号");
nameMap.put("orgFullName","工作单位全称");
nameMap.put("orgType","工作单位类别");
nameMap.put("adminPost","会计人员职务");
nameMap.put("pqLevel","职称");
nameMap.put("education","学历");
nameMap.put("mobile","手机号");
nameMap.put("email","电子邮箱");
nameMap.put("address","通讯地址");
nameMap.put("talenLevel","高端会计人才级别");
nameMap.put("hightTalentType","会计人才类型");
nameMap.put("talentType","高端会计人才类别");
nameMap.put("year","年度");
nameMap.put("hightClassType","高端班类别");
nameMap.put("talentPeriod","期次");
nameMap.put("culStatus","培养状态");
nameMap.put("graDate","毕业年度");
return "【"+nameMap.get(name)+"】";
}
}
参考使用:
CheckEntityFieldValueEmpty.checkEntity(CheckEntityFieldValueEmpty.AM_HIGH_TALENT_INFO_FIELDS,highTalentInfoVo,-1,0);