/**
* 处理checkExcel 过程的异常
* 无异常 返回ResponseEntity ->data
* @return
*/
public ResponseEntity checkExcelData(path = "文件路径"){
//文件路径为空
if(path==null){
return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_NAME);
}
//尝试解析模板
List<Sqrlb> list = new ArrayList<>();
try {
list = this.checkExcel(requestBody.getFilePath());
} catch (Exception e) {
//异常返回值检测
if(e.toString().indexOf("not exists")!=-1){
return new ResponseEntity(ResponseCode.EXCEL_EXISTS);
}
if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_NAME.getCode()))){
return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_NAME);
}else if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_LX.getCode()))) {
return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_LX);
}else if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_HM.getCode()))) {
return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_HM);
}else if(e.getMessage().equals(String.valueOf(ResponseCode.ZJLX_NULL.getCode()))){
return new ResponseEntity(ResponseCode.ZJLX_NULL);
}else{
return new ResponseEntity(ResponseCode.EXCEL_TYPE);
}
}
if(list==null || list.size()==0){
return new ResponseEntity(ResponseCode.EXCEL_NOT_ROTE);
}
// list.forEach(System.out::println);
ResponseEntity res = new ResponseEntity();
res.addData(list);
return res;
}

checkExcel方法:

/**
* 遍历文件
*/
@Override
public List<Sqrlb> checkExcel(String filePath) throws Exception {
List<Sqrlb> list= new ArrayList<>();
EasyExcel.read(filePath, Sqrlb.class, new AnalysisEventListener<Sqrlb>() {
// 每读取一行就调用该方法
@SneakyThrows
@Override
public void invoke(Sqrlb data, AnalysisContext context) {
//名字没填写
if(StringUtils.isEmpty(data.getSqrxm())){
throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_NAME.getCode()));
}
//证件类型没填写
if(StringUtils.isEmpty(data.getSqrzjlx())){
throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_LX.getCode()));
}
//证件号码没填写
if(StringUtils.isEmpty(data.getSqrzjhm())){
throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_HM.getCode()));
}
//根据模板身份类型 替换对应

if(data.getSqrzjlx().equals(ResponseCode.ZJLX1.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX1.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX2.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX2.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX3.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX3.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX4.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX4.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX5.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX5.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX6.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX6.getMessageEn());
}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX7.getMessageCh())){
data.setSqrzjlx(ResponseCode.ZJLX7.getMessageEn());
}else{
//超出其中类型之外
throw new Exception(String.valueOf(ResponseCode.ZJLX_NULL.getCode()));
}

list.add(data);
}
// 全部读取完成就调用该方法
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// System.out.println("读取完成");
}
}).sheet().doRead();
return list;
}

Sqrlb的PDO:

package com.esint.fzjlcxdwjlcx.entity.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@ApiModel("申请人列表")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sqrlb {

@ApiModelProperty("申请人姓名")
private String sqrxm;

@ApiModelProperty("申请人证件类型")
private String sqrzjlx;

@ApiModelProperty("申请人证件号码")
private String sqrzjhm;

}

ResponseCode 枚举

package com.esint.fzjlcxdwjlcx.constants;

/**
* @author :mengxiang
* @description:默认返回值
* @date :2021-12-15 23:38
*/
public enum ResponseCode {


SUCCESS(200, "OK", "请求成功。"),
FAIL_SERVICE_CREATED(201, "Created", "已创建。"),
FAIL_SERVICE_ACCEPTED(202, "Accepted", "已接受。"),
FAIL_SERVICE_GRAMMAR(400, "Bad Request", "客户端请求的语法错误,服务器无法理解"),
FAIL_SERVICE_AUTH(401, "Unauthorized", "请求要求用户的身份认证。"),
FAIL_SERVICE_REFUSE(403, "Forbidden", "服务器理解请求客户端的请求,但是拒绝执行此请求."),
FAIL_SERVICE_NOT(405, "Method Not Allowed", "服务的操作被禁用。"),
FAIL_SERVICE_MATCHING(406, "Not Acceptable", "服务器无法根据客户端请求的内容特性完成请求。"),
FAIL_USER_INFO(407, "userResponse fail", "解析受累单位与民警失败"),
FAIL_SERVICE_(422, "Unprocesable Entity", "请求资源校验失败。"),
ERROR(500, "Internal Server Error", "服务器内部错误。"),
ERROR_REQUESTDWFKFW(80009, "反馈服务失败", "反馈服务失败。"),
ERROR_REQUESTDWFKFWFH(80010, "反馈服务返回失败", "反馈返回失败。"),
ERROR_REQUESTBJZTCX(800010, "查询办结状态服务失败", "查询办结状态服务失败。"),
ERROR_REQUESTBJZTCXFH(80011, "查询办结状态服务返回失败", "查询办结状态服务返回失败。"),
ERROR_REQUESTDWLSCX(80004, "单位办理历史查询服务失败", "单位办理历史查询服务失败。"),
ERROR_REQUESTDWLSCXFH(80005, "单位办理历史查询服务返回失败", "单位办理历史查询服务返回失败。"),
ERROR_SEARCHSLXX(80003, "没有查询到该条记录的受理信息", "没有查询到该条记录的受理信息。"),

ERROR_TOKEN(2001,"Token Failed","未能获得相关Token信息"),
ERROR_USERINFO(2002,"User Detail Failed","获得用户信息出错"),
EXCEL_TYPE(3001,"Excel Type Failed","模板异常"),
EXCEL_VALUE_EMPTY_NAME(3002,"name Value Null","名字存在空值"),
EXCEL_VALUE_EMPTY_LX(3003,"zjlx Value Null","申请人证件类型存在空值"),
EXCEL_VALUE_EMPTY_HM(3004,"zjhm Value Null","证件号码存在空值"),
EXCEL_EXISTS(3005,"xlsx not exists","服务器文件不存在"),
EXCEL_NOT_ROTE(3006,"xlsx has no rote","excel没有记录"),
EXCEL_MAX_ROTE(3007,"xlsx max 100","excel记录不超过100"),
ZJLX1(3101,"111","身份证"),
ZJLX2(3102,"414","护照"),
ZJLX3(3103,"511","台湾居民来往大陆通行证"),
ZJLX4(3104,"989","港澳台居民居住证"),
ZJLX5(3105,"988","港澳居民来往内地通行证"),
ZJLX6(3106,"553","永久居留证件"),
ZJLX7(3107,"113","居民户口薄"),
ZJLX_NULL(3108,"zjlx Error","证件类型错误"),
FILE_IO_ERROR1(4001,"IO Error1","IO异常1"),
FILE_IO_ERROR2(4002,"IO Error2","IO异常2"),
FILE_NULL(4003,"file null","上传文件空"),
FORM_ERROR(4004,"some message must not be null","表单必填项不能为空"),
FORM_SUCCESS(4005,"check form success","表单校验无误"),
FORM_FILE_PATH(4006,"file path null","表单文件路径为空"),
FORM_SAVE_ERROR(4007,"form save database false","表单入库错误"),
FORM_SAVER_SERVERNUM_ERROR(4008,"isServiceNum","没有保存服务编码"),
GET_TOKEN(5001,"get token server error","获得平台token异常"),
GET_TOKEN_NULL(5002,"token is null","获得平台token data为空"),
GET_USRES_INFO(5003,"get user by systoken server error","基于sysToken获得用户详细信息异常"),
GET_USRES_INFO_NULL(5004,"get user by systoken is null","基于sysToken获得用户详细data为空"),
GET_USERS_NULL(5005,"userResponse is null","userResponse空"),
GET_SLDWXX_ERROR(5006,"userResponse changge sldwxx error","userResponse转换sldwxx异常"),
GET_SLDWXX_NULL(5007,"sldwxx or sldwdm is null","受理单位或受理单位代码为空"),
GA_SEND_ERROR(6001,"gong an server send error","公安提交数据异常"),
GA_GET_DATA_NULL(6002,"gong an server applyResult is null","公安提交返回空"),
GA_GET_DATA_ERROR(6003,"gong an server data error","公安提交失败"),

;
private final Integer code;
private final String messageEn;
private final String messageCh;


private ResponseCode(Integer code, String messageEn, String messageCh) {
this.code = code;
this.messageCh = messageCh;
this.messageEn = messageEn;
}

public int getCode() {
return code;
}


public String getMessageEn() {
return messageEn;
}


public String getMessageCh() {
return messageCh;
}

}

结果类ResponseEntity:

package com.esint.fzjlcxdwjlcx.entity.response;

import com.esint.fzjlcxdwjlcx.constants.ResponseCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("通用返回")
public class ResponseEntity<T> {

@ApiModelProperty("返回代码")
private Integer code;
@ApiModelProperty("返回消息")
private String message;
@ApiModelProperty("返回对象")
private T data;


public ResponseEntity(ResponseCode responseCode) {
this.code = responseCode.getCode();
this.message = responseCode.getMessageCh();

}
public ResponseEntity(Integer code,String message) {
this.code = code;
this.message = message;

}

public ResponseEntity(ResponseCode responseCode, T data) {
this.code = responseCode.getCode();
this.message = responseCode.getMessageCh();
this.data = data;
}

public ResponseEntity<T> addData(T data) {
this.data = data;
return this;
}

public ResponseEntity<T> success(T data) {
return new ResponseEntity<T>(ResponseCode.SUCCESS).addData(data);
}
public ResponseEntity<T> success(Integer code,String message,T data) {
return new ResponseEntity<T>(code,message).addData(data);
}
public ResponseEntity<T> error(String erorrs) {
return new ResponseEntity<T>(81000,erorrs);
}
public ResponseEntity<T> error(Integer code,String erorrs) {
return new ResponseEntity<T>(code,erorrs);
}
}