Easypoi 导入校验处理

导入的时候先根据注解进行处理

	ExcelImportResult<TaskInfoNineDO> result = ExcelImportUtil.importExcelMore(file.getInputStream(), TaskInfoNineDO.class,
					importParams);
	List<TaskInfoNineDO> successList = result.getList();//成功
	List<TaskInfoNineDO> failList = result.getFailList();//失败
	List<TaskInfoNineDO> list = new ArrayList<TaskInfoNineDO>();//返回
	/**
			 * 校验注解
			 */
		 if(!failList.isEmpty()){
				//非空原因
				for(TaskInfoNineDO f:failList){
					BeanValidator.validate(f);
				}
			}
log.info("是否存在验证未通过的数据:" + result.isVerfiyFail());
log.info("验证通过的数量:" + successList.size());
log.info("验证未通过的数量:" + failList.size());

然后是BeanValidator对象验证器

/**
* @author 作者 xiaoxiao
*
*/
/** 对象验证器
 * @author think
 *
 */
public class BeanValidator {

	public static<T> void  validate (T object) throws ValidationException{
		
		Validator validator = Validation.buildDefaultValidatorFactory().getValidator();//获得验证器
		
		Set<ConstraintViolation<T>> constraintViolations = validator.validate(object); //执行验证
		
		if(CollectionUtils.isEmpty(constraintViolations)){
			return;
		}
		
		 throw new ValidationException(convertErrorMsg(constraintViolations));
		
	}

	/**
	 * 注释(转换异常信息)
	 * @param constraintViolations
	 * @return
	 * String
	 * @author xiaoxiao
	 * @param <T>
	*/
	private static <T> String convertErrorMsg(Set<ConstraintViolation<T>> set) {
		// TODO Auto-generated method stub
		Map<String,StringBuffer> errorMap = new HashMap<>();
		String property;
		for(ConstraintViolation<T> cv:set){
			//这里循环获取错误信息,可以自定义
			property = cv.getPropertyPath().toString();
			if(errorMap.get(property)!=null){
				errorMap.get(property).append(","+cv.getMessage());
			}else{
				StringBuffer sbBuffer = new StringBuffer();
				sbBuffer.append(cv.getMessage());
				errorMap.put(property, sbBuffer);
			}
		}
		return errorMap.toString();
	} 
	
校验自定义注解值

```bash
	@Excel(name = "事业部",orderNum = "1",width = 15)
	@NotNull(message = "部门不能为空")
	private String deptName;

异常在此抛出

    log.error(e.getMessage(), e);
	map.put("msg", e.getMessage());
	map.put("code", 500);
	TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

如果注解校验能通过的话最后在定义
StringBuffer errorMessage = new StringBuffer();//错误消息
errorMessage.append()错误消息返回到前端导出错误数据

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值