功能描述:
做的是物联网的项目,Excel导入实现的功能是将Excel中的数据批量的导入AEP系统,再导入我们系统中。目前已经完成该功能,前端还会添加进度条优化。
对于导入导出功能,推荐这个Git:https://gitee.com/lemur/easypoi Excel模板:

前端向后端传递的参数:

前端代码:
<Upload
name="wlwDeviceFile"
ref="upload"
:action="pathUrl"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xls','xlsx']"
:max-size="5120"
:on-format-error="handleFormatError"
:on-exceeded-size="handleMaxSize"
:before-upload="handleBeforeUpload"
:data="extraData"
:disabled="!isLock"
>
<Button type="primary">选择文件</Button>
</Upload>
data() {
return {
isLock: true,
mesg: false,
extraData: {
aepProductId: localStorage.productId,
productId: localStorage.productItemId,
projectId: localStorage.currentProjectId
},
mes: "",
cod: 0,
// currentShow: false,
pathUrl: Util.baseUrl + "/api/excel/import",
wlwDevice: {
fileName: "", //用于显示上传文件名
id: localStorage.productId,
autoSubscribe: 0
},
ruleValidate: {
fileName: [
{
required: true,
message: "请选择文件",
trigger: "change"
}
]
}
};
},

handleSuccess(res, file) {
// console.log("res++++++++++++++++++++++++++", res);
if (res.code == 0) {
this.cod = res.code;
this.mes = '导入成功';
console.log(this.$refs.upload.fileList);
// this.$refs.upload.fileList.splice(0, 1);
} else {
this.cod = res.code;
this.mes = res.message;
}
this.isLock = true;
// this.$Spin.hide();
this.wlwDevice.fileName = file.name;
if (this.$refs.upload.fileList.length > 1) {
this.$refs.upload.fileList.splice(0, 1);
} // this.$emit("cancel", this.isOpen);
},
handleSubmit(name) {
console.log("----------------------");
this.$refs[name].validate(valid => {
if (valid) {
this.mesg = true;
this.$refs[name].resetFields();
this.$emit("cancel", this.isOpen);
this.$emit("refreshList");
console.log("-------------@@@--------");
} else {
this.$Message.error(this.$t("errorText"));
}
});
},
后端解析 Excel,将数据读取出来导入AEP系统

导入我们系统:

后端代码:
导入POM依赖: <dependency>
    <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.9</version>
</dependency>
解析Excel的方法:
@Component
@NoArgsConstructor
public class ParseExcelUtil {
private static final Logger log = LoggerFactory.getLogger(ParseExcelUtil.class); public static Workbook getWorkbook(InputStream is, String fileName) throws ExcelIOException {
Workbook workbook = null;
String fileType = fileName.substring(fileName.lastIndexOf("."));
// 推荐使用poi-ooxml中的WorkbookFactory.create(is)来创建Workbook,
// 因为HSSFWorkbook和XSSFWorkbook都实现了Workbook接口(可以解决以下报错问题)
try {
if (ExcelVersion.V2003.getSuffix().equals(fileType)) {
workbook = new HSSFWorkbook(is); } else if (ExcelVersion.V2007.getSuffix().equals(fileType)) {
workbook = new XSSFWorkbook(is); }
}catch (IOException e){
// 无效后缀名称,这里之能保证excel的后缀名称,不能保证文件类型正确,不过没关系,在创建Workbook的时候会校验文件格式
throw new ExcelIOException("请上传文件!");
}
return workbook;
}
}
Excel版本问题的枚举:
@NoArgsConstructor
public enum ExcelVersion {
/**
* 虽然V2007版本支持最大支持1048575 * 16383 ,
* V2003版支持65535*255
* 但是在实际应用中如果使用如此庞大的对象集合会导致内存溢出,
* 因此这里限制最大为10000*100,如果还要加大建议先通过单元测试进行性能测试。
* 1000*100 全部导出预计时间为27s左右
*/
V2003(".xls", 10000, 100), V2007(".xlsx", 100, 100); private String suffix; private int maxRow; private int maxColumn; ExcelVersion(String suffix, int maxRow, int maxColumn) {
this.suffix = suffix;
this.maxRow = maxRow;
this.maxColumn = maxColumn;
} public String getSuffix() {
return this.suffix;
} public int getMaxRow() {
return maxRow;
} void setMaxRow(int maxRow) {
this.maxRow = maxRow;
} public int getMaxColumn() {
return maxColumn;
} void setMaxColumn(int maxColumn) {
this.maxColumn = maxColumn;
} void setSuffix(String suffix) {
this.suffix = suffix;
} }
Long型转ZonedDateTime型方法:
/**
* 将Long类型转化成0
* @author yk
* @param time
* @return
*/
public static ZonedDateTime toZonedDateTime(Long time){
SimpleDateFormat sdf = new SimpleDateFormat(LONG_DATE);
Date createDate = new Date(time);
String format = sdf.format(createDate);
DateTimeFormatter beijingFormatter = DateTimeFormatter.ofPattern(LONG_DATE).withZone(ZoneId.of("Asia/Shanghai"));
if(StringUtils.isBlank(format)){
return null;
}
ZonedDateTime beijingDateTime = ZonedDateTime.parse(format, beijingFormatter);
ZonedDateTime utc = beijingDateTime.withZoneSameInstant(ZoneId.of("UTC"));
return utc; }
控制层
@RestController
@RequestMapping("/api/excel")
public class ImportExcelController { private final Logger log = LoggerFactory.getLogger(ImportExcelController.class); private final WlwDeviceService wlwDeviceService; @Autowired
private ImportExcelService importExcelService; public ImportExcelController(WlwDeviceService wlwDeviceService) {
this.wlwDeviceService = wlwDeviceService;
} @PostMapping("/import")
public ImportExcelResult excelToWlwDevice(@RequestParam("wlwDeviceFile") MultipartFile wlwDeviceFile, @RequestParam("productId") String productId, @RequestParam("aepProductId") String aepProductId, @RequestParam("projectId") String projectId) throws Exception {
return importExcelService.excelToWlwDeviceService(wlwDeviceFile, productId, aepProductId, projectId);
} Service接口:
public interface ImportExcelService {
/**
* 导入
* @param wlwDeviceFile
* @param productId
* @param aepProductId
* @param projectId
* @return
*/
ImportExcelResult excelToWlwDeviceService(MultipartFile wlwDeviceFile, String productId, String aepProductId, String projectId);
} Service实现类:
@Service
public class ImportExcelServiceImpl implements ImportExcelService {
private static final Logger log = LoggerFactory.getLogger(ImportExcelServiceImpl.class); @Autowired
private AepApiUtil util; @Autowired
private WlwDeviceRepository wlwDeviceRepository; @Override
public ImportExcelResult excelToWlwDeviceService(MultipartFile wlwDeviceFile, String productId, String aepProductId, String projectId) {
ImportExcelResult importExcelResult = new ImportExcelResult(0, "导入成功");
//List<String> sList = new ArrayList<>();
if (wlwDeviceFile.isEmpty()) {
importExcelResult.setCode(100);
importExcelResult.setMessage("填写模版信息不能为空");
return importExcelResult;
}
//1.将excel中的数据放入list中
List<AepDeviceDTO> aepDeviceDTOList = new ArrayList<>();
//解析Excel文件
try {
InputStream is = wlwDeviceFile.getInputStream();
int size = 0;
String imei = null;
//厂家名称
String manufacturer = null;
//型号
String productType = null;
//设备名称
String deviceName = null;
//自动订阅
String autoObserver = null;
//设备类型
String deviceType = null;
StringBuilder megBuilder = new StringBuilder();
String filename = wlwDeviceFile.getOriginalFilename();
//1.根据Excel文件创建工作簿
Workbook wb = ParseExcelUtil.getWorkbook(is, filename);
//2.获取Sheet
Sheet sheet = wb.getSheetAt(0);
if (sheet != null) {
WlwDevice wlwDevice = new WlwDevice();
//3.获取Sheet中的每一行,和每一个单元格,数据从第二行开始
for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
log.info("处理到{}条记录",rowNum);
//根据索引获取每一个行
Row row = sheet.getRow(rowNum);
size = row.getLastCellNum();
//Aep的设备实体类
AepDeviceDTO deviceDTO = new AepDeviceDTO();
AepDeviceOther other = new AepDeviceOther();
Set<String> imeiMap = new HashSet<>();
for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
Cell cell = row.getCell(cellNum);
if (null == cell) {
break;
}
//根据索引获取每一个单元格 获取每一个单元格的内容;
switch (cellNum) {
case 0:
manufacturer = cell.getStringCellValue();
break;
case 1:
productType = cell.getStringCellValue();
break;
case 2:
imei = cell.getStringCellValue();
if (StringUtils.isBlank(imei)) {
importExcelResult.setCode(101);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:IMEI号不能为空");
continue;
}
if (imei.trim().length() != 15) {
importExcelResult.setCode(102);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:IMEI号必须是15位");
continue;
}
deviceDTO.setImei(imei.trim());
wlwDevice.setImei(imei.trim());
break;
case 3:
deviceName = cell.getStringCellValue();
if (StringUtils.isBlank(deviceName)) {
importExcelResult.setCode(104);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:设备名称不能为空");
continue;
}
deviceDTO.setDeviceName(deviceName.trim());
wlwDevice.setDeviceName(deviceName.trim());
break;
case 4:
autoObserver = cell.getStringCellValue();
if (StringUtils.isBlank(autoObserver)) {
importExcelResult.setCode(105);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:设备必须选择是否自动订阅");
continue;
}
//Aep的设备实体类的autoObserver pass平台暂时不做自动订阅和PSK,若做在这里set
if (autoObserver.trim().hashCode() == 26159) {
other.setAutoObserver(0);
} else if (autoObserver.trim().hashCode() == 21542) {
other.setAutoObserver(1);
} else {
importExcelResult.setCode(106);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:设备必须选择是否自动订阅");
continue;
}
break;
case 5:
deviceName = cell.getStringCellValue();
break;
default:
break;
}
}
deviceDTO.setProductId(Long.valueOf(aepProductId));
deviceDTO.setOther(other);
deviceDTO.setOperator(String.valueOf(SecurityUtils.getCurrentUserId()));
aepDeviceDTOList.add(deviceDTO);
//2.遍历list校验是否有重复的imei号
boolean add = imeiMap.add(imei);
if (!add) {
importExcelResult.setCode(108);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[")
.append(deviceName).append("],失败原因:设备IMEI存在重复数据,请检查模板");
continue;
}
//导入aep系统的设备
AepCreateDeviceResponse aepDevice = util.createAepDevice(deviceDTO);
Thread.sleep(200);
System.out.println("调用aep接口:" + aepDevice.getResult());
if (aepDevice.getCode() != 0) {
importExcelResult.setCode(aepDevice.getCode());
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[")
.append(deviceName).append("],失败原因:").append(aepDevice.getMsg());
continue;
} else {
importExcelResult.setCode(0);
importExcelResult.setMessage(aepDevice.getMsg());
//aep返回的结果参数
AepDevice result = aepDevice.getResult();
wlwDevice.setDeviceId(result.getDeviceId());
wlwDevice.setProductId(Long.valueOf(productId));
wlwDevice.setProjectId(Integer.valueOf(projectId));
wlwDevice.setAepProductId(Long.valueOf(result.getProductId()));
wlwDevice.setDeviceSn(result.getDeviceSn());
wlwDevice.setTenantId(result.getTenantId());
wlwDevice.setUpdatedDate(result.getUpdateTime() == null ? null : DateUtils.toZonedDateTime(result.getUpdateTime()));
wlwDevice.setNetStatus(result.getNetStatus());
wlwDevice.setUpdaterId(result.getOperator());
int insert = wlwDeviceRepository.insert(wlwDevice);
if (insert == 0) {
importExcelResult.setCode(109);
megBuilder.append("行号=[").append (rowNum + 1).append("];IMEI=[").append(imei).append("],设备名称=[").append(deviceName).append("],失败原因:PasS系统导入错误").append(aepDevice.getResult().getDeviceName());
continue;
}
}
}
}
importExcelResult.setMessage(megBuilder.toString());
is.close(); } catch (Exception e) {
log.error("插入设备失败", e);
importExcelResult.setCode(-1);
importExcelResult.setMessage("插入设备失败");
} return importExcelResult;
}
}  AepDeviceDTO实体类:
public class AepDeviceDTO {

    /**
* 终端名称
*/
private String deviceName; /**
* 设备编号
*/
private String deviceSn; /**
* IMEI号,全局唯一,根据产品的Endpoint必填,创建时可相同,则删除原产品新建产品
*/
private String imei; /**
* 操作者
*/
private String operator; /**
* LWM2M协议必填参数,其他协议不填
* {
* autoObserver:0.自动订阅 1.取消自动订阅,必填;
* imsi:总长度不超过15位,使用0~9的数字,String类型,选填;
* pskValue:由大小写字母加0-9数字组成的16位字符串,选填
* }
*/
private AepDeviceOther other; /**
* 产品id
*/
private Long productId; public String getDeviceName() {
return deviceName;
} public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
} public String getDeviceSn() {
return deviceSn;
} public void setDeviceSn(String deviceSn) {
this.deviceSn = deviceSn;
} public String getImei() {
return imei;
} public void setImei(String imei) {
this.imei = imei;
} public String getOperator() {
return operator;
} public void setOperator(String operator) {
this.operator = operator;
} public AepDeviceOther getOther() {
return other;
} public void setOther(AepDeviceOther other) {
this.other = other;
} public Long getProductId() {
return productId;
} public void setProductId(Long productId) {
this.productId = productId;
} @Override
public String toString() {
return "AepDeviceDTO{" +
"deviceName='" + deviceName + '\'' +
", deviceSn='" + deviceSn + '\'' +
", imei='" + imei + '\'' +
", operator='" + operator + '\'' +
", other=" + other +
", productId=" + productId +
'}';
}
}   AepDeviceOther实体类:
public class AepDeviceOther {

    /**
* 0.自动订阅 1.取消自动订阅,必填;
*/
private Integer autoObserver; /**
* 总长度不超过15位,使用0~9的数字,String类型,选填;
*/
private String imsi; /**
* 由大小写字母加0-9数字组成的16位字符串,选填
*/
private String pskValue; public Integer getAutoObserver() {
return autoObserver;
} public void setAutoObserver(Integer autoObserver) {
this.autoObserver = autoObserver;
} public String getImsi() {
return imsi;
} public void setImsi(String imsi) {
this.imsi = imsi;
} public String getPskValue() {
return pskValue;
} public void setPskValue(String pskValue) {
this.pskValue = pskValue;
} @Override
public String toString() {
return "{" +
"autoObserver=" + autoObserver +
", imsi='" + imsi + '\'' +
", pskValue='" + pskValue + '\'' +
'}';
}
} WlwDevice实体类:
public class WlwDevice implements Serializable {
/**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private Integer id; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.create_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private ZonedDateTime createDate; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.updated_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private ZonedDateTime updatedDate; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.del_flag
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private Integer delFlag; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.creator_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String creatorId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.updater_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String updaterId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.device_name
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String deviceName; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.device_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String deviceId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.device_sn
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String deviceSn; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.imei
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String imei; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.imsi
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String imsi; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.product_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private Long productId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.aep_product_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
private Long aepProductId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.project_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private Integer projectId; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.remark
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String remark; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.last_up_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private ZonedDateTime lastUpTime; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.last_down_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private ZonedDateTime lastDownTime; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.device_status
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
private String deviceStatus; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.net_status
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
private Integer netStatus; /**
*
* This field was generated by MyBatis Generator.
* This field corresponds to the database column wlw_device.tenant_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
private String tenantId; /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.id
*
* @return the value of wlw_device.id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public Integer getId() {
return id;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.id
*
* @param id the value for wlw_device.id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setId(Integer id) {
this.id = id;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.create_date
*
* @return the value of wlw_device.create_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public ZonedDateTime getCreateDate() {
return createDate;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.create_date
*
* @param createDate the value for wlw_device.create_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setCreateDate(ZonedDateTime createDate) {
this.createDate = createDate;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.updated_date
*
* @return the value of wlw_device.updated_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public ZonedDateTime getUpdatedDate() {
return updatedDate;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.updated_date
*
* @param updatedDate the value for wlw_device.updated_date
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setUpdatedDate(ZonedDateTime updatedDate) {
this.updatedDate = updatedDate;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.del_flag
*
* @return the value of wlw_device.del_flag
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public Integer getDelFlag() {
return delFlag;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.del_flag
*
* @param delFlag the value for wlw_device.del_flag
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.creator_id
*
* @return the value of wlw_device.creator_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getCreatorId() {
return creatorId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.creator_id
*
* @param creatorId the value for wlw_device.creator_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setCreatorId(String creatorId) {
this.creatorId = creatorId == null ? null : creatorId.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.updater_id
*
* @return the value of wlw_device.updater_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getUpdaterId() {
return updaterId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.updater_id
*
* @param updaterId the value for wlw_device.updater_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setUpdaterId(String updaterId) {
this.updaterId = updaterId == null ? null : updaterId.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.device_name
*
* @return the value of wlw_device.device_name
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getDeviceName() {
return deviceName;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.device_name
*
* @param deviceName the value for wlw_device.device_name
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setDeviceName(String deviceName) {
this.deviceName = deviceName == null ? null : deviceName.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.device_id
*
* @return the value of wlw_device.device_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getDeviceId() {
return deviceId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.device_id
*
* @param deviceId the value for wlw_device.device_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setDeviceId(String deviceId) {
this.deviceId = deviceId == null ? null : deviceId.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.device_sn
*
* @return the value of wlw_device.device_sn
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getDeviceSn() {
return deviceSn;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.device_sn
*
* @param deviceSn the value for wlw_device.device_sn
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setDeviceSn(String deviceSn) {
this.deviceSn = deviceSn == null ? null : deviceSn.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.imei
*
* @return the value of wlw_device.imei
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getImei() {
return imei;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.imei
*
* @param imei the value for wlw_device.imei
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setImei(String imei) {
this.imei = imei == null ? null : imei.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.imsi
*
* @return the value of wlw_device.imsi
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getImsi() {
return imsi;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.imsi
*
* @param imsi the value for wlw_device.imsi
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setImsi(String imsi) {
this.imsi = imsi == null ? null : imsi.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.product_id
*
* @return the value of wlw_device.product_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public Long getProductId() {
return productId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.product_id
*
* @param productId the value for wlw_device.product_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setProductId(Long productId) {
this.productId = productId;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.aep_product_id
*
* @return the value of wlw_device.aep_product_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public Long getAepProductId() {
return aepProductId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.aep_product_id
*
* @param aepProductId the value for wlw_device.aep_product_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public void setAepProductId(Long aepProductId) {
this.aepProductId = aepProductId;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.project_id
*
* @return the value of wlw_device.project_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public Integer getProjectId() {
return projectId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.project_id
*
* @param projectId the value for wlw_device.project_id
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setProjectId(Integer projectId) {
this.projectId = projectId;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.remark
*
* @return the value of wlw_device.remark
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getRemark() {
return remark;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.remark
*
* @param remark the value for wlw_device.remark
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setRemark(String remark) {
this.remark = remark == null ? null : remark.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.last_up_time
*
* @return the value of wlw_device.last_up_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public ZonedDateTime getLastUpTime() {
return lastUpTime;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.last_up_time
*
* @param lastUpTime the value for wlw_device.last_up_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setLastUpTime(ZonedDateTime lastUpTime) {
this.lastUpTime = lastUpTime;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.last_down_time
*
* @return the value of wlw_device.last_down_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public ZonedDateTime getLastDownTime() {
return lastDownTime;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.last_down_time
*
* @param lastDownTime the value for wlw_device.last_down_time
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setLastDownTime(ZonedDateTime lastDownTime) {
this.lastDownTime = lastDownTime;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.device_status
*
* @return the value of wlw_device.device_status
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public String getDeviceStatus() {
return deviceStatus;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.device_status
*
* @param deviceStatus the value for wlw_device.device_status
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
public void setDeviceStatus(String deviceStatus) {
this.deviceStatus = deviceStatus == null ? null : deviceStatus.trim();
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.net_status
*
* @return the value of wlw_device.net_status
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public Integer getNetStatus() {
return netStatus;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.net_status
*
* @param netStatus the value for wlw_device.net_status
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public void setNetStatus(Integer netStatus) {
this.netStatus = netStatus;
} /**
* This method was generated by MyBatis Generator.
* This method returns the value of the database column wlw_device.tenant_id
*
* @return the value of wlw_device.tenant_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public String getTenantId() {
return tenantId;
} /**
* This method was generated by MyBatis Generator.
* This method sets the value of the database column wlw_device.tenant_id
*
* @param tenantId the value for wlw_device.tenant_id
*
* @mbg.generated Mon Dec 23 14:04:02 CST 2019
*/
public void setTenantId(String tenantId) {
this.tenantId = tenantId == null ? null : tenantId.trim();
} /**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table wlw_device
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
WlwDevice other = (WlwDevice) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getCreateDate() == null ? other.getCreateDate() == null : this.getCreateDate().equals(other.getCreateDate()))
&& (this.getUpdatedDate() == null ? other.getUpdatedDate() == null : this.getUpdatedDate().equals(other.getUpdatedDate()))
&& (this.getDelFlag() == null ? other.getDelFlag() == null : this.getDelFlag().equals(other.getDelFlag()))
&& (this.getCreatorId() == null ? other.getCreatorId() == null : this.getCreatorId().equals(other.getCreatorId()))
&& (this.getUpdaterId() == null ? other.getUpdaterId() == null : this.getUpdaterId().equals(other.getUpdaterId()))
&& (this.getDeviceName() == null ? other.getDeviceName() == null : this.getDeviceName().equals(other.getDeviceName()))
&& (this.getDeviceId() == null ? other.getDeviceId() == null : this.getDeviceId().equals(other.getDeviceId()))
&& (this.getDeviceSn() == null ? other.getDeviceSn() == null : this.getDeviceSn().equals(other.getDeviceSn()))
&& (this.getImei() == null ? other.getImei() == null : this.getImei().equals(other.getImei()))
&& (this.getImsi() == null ? other.getImsi() == null : this.getImsi().equals(other.getImsi()))
&& (this.getProductId() == null ? other.getProductId() == null : this.getProductId().equals(other.getProductId()))
&& (this.getAepProductId() == null ? other.getAepProductId() == null : this.getAepProductId().equals(other.getAepProductId()))
&& (this.getProjectId() == null ? other.getProjectId() == null : this.getProjectId().equals(other.getProjectId()))
&& (this.getRemark() == null ? other.getRemark() == null : this.getRemark().equals(other.getRemark()))
&& (this.getLastUpTime() == null ? other.getLastUpTime() == null : this.getLastUpTime().equals(other.getLastUpTime()))
&& (this.getLastDownTime() == null ? other.getLastDownTime() == null : this.getLastDownTime().equals(other.getLastDownTime()))
&& (this.getDeviceStatus() == null ? other.getDeviceStatus() == null : this.getDeviceStatus().equals(other.getDeviceStatus()))
&& (this.getNetStatus() == null ? other.getNetStatus() == null : this.getNetStatus().equals(other.getNetStatus()))
&& (this.getTenantId() == null ? other.getTenantId() == null : this.getTenantId().equals(other.getTenantId()));
} /**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table wlw_device
*
* @mbg.generated Mon Dec 09 14:33:32 CST 2019
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getCreateDate() == null) ? 0 : getCreateDate().hashCode());
result = prime * result + ((getUpdatedDate() == null) ? 0 : getUpdatedDate().hashCode());
result = prime * result + ((getDelFlag() == null) ? 0 : getDelFlag().hashCode());
result = prime * result + ((getCreatorId() == null) ? 0 : getCreatorId().hashCode());
result = prime * result + ((getUpdaterId() == null) ? 0 : getUpdaterId().hashCode());
result = prime * result + ((getDeviceName() == null) ? 0 : getDeviceName().hashCode());
result = prime * result + ((getDeviceId() == null) ? 0 : getDeviceId().hashCode());
result = prime * result + ((getDeviceSn() == null) ? 0 : getDeviceSn().hashCode());
result = prime * result + ((getImei() == null) ? 0 : getImei().hashCode());
result = prime * result + ((getImsi() == null) ? 0 : getImsi().hashCode());
result = prime * result + ((getProductId() == null) ? 0 : getProductId().hashCode());
result = prime * result + ((getAepProductId() == null) ? 0 : getAepProductId().hashCode());
result = prime * result + ((getProjectId() == null) ? 0 : getProjectId().hashCode());
result = prime * result + ((getRemark() == null) ? 0 : getRemark().hashCode());
result = prime * result + ((getLastUpTime() == null) ? 0 : getLastUpTime().hashCode());
result = prime * result + ((getLastDownTime() == null) ? 0 : getLastDownTime().hashCode());
result = prime * result + ((getDeviceStatus() == null) ? 0 : getDeviceStatus().hashCode());
result = prime * result + ((getNetStatus() == null) ? 0 : getNetStatus().hashCode());
result = prime * result + ((getTenantId() == null) ? 0 : getTenantId().hashCode());
return result;
}
												

后端Springboot前端VUE实现Excel导入功能的更多相关文章

  1. 后端 SpringBoot + 前端 vue 打包发布到Tomcat

    近段时间 做了一些前后端的开发 需要在Tomcat里进行发布    把自己整理的分享出来 后端打包 pom.xml 文件 <packaging>war</packaging> ...

  2. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

  3. vue中excel导入导出组件

    vue中导入导出excel,并根据后台返回类型进行判断,导入到数据库中 功能:实现js导入导出excel,并且对导入的excel进行展示,当excel标题名称和数据库的名称标题匹配时,则对应列导入的数 ...

  4. java利用jxl实现Excel导入功能

    本次项目实践基于Spring+SpringMvc+MyBatis框架,简单实现了Excel模板导出.和Excel批量导入的功能.实现过程如下:. 1.maven导入所需jar包 <depende ...

  5. Excel导入功能(Ajaxfileupload)

    前言: 前端采用Easyui+Ajaxfileupload实现 后端采用springmvc框架,其中把解析xml封装成了一个jar包,直接调用即可 准备: 前端需要导入(easyui导入js省略,自行 ...

  6. Excel导入功能

    一:前端 <t:dgToolBar title="Excel题库导入" icon="icon-search" onclick="question ...

  7. Java中Excel导入功能实现、excel导入公共方法_POI -

    这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> ...

  8. springboot整合easyexcel实现Excel导入导出

    easyexcel:快速.简单避免OOM的java处理Excel工具 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套 ...

  9. php Excel 导入功能

    下载excel类地址 https://pan.baidu.com/s/19MqAHUn4RyZ5HEAChyC0jg  密码:mn58 本人用的thinkcmf框架 把类文件放在框架的类文件里面,下面 ...

随机推荐

  1. maven启动报错No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered while building th ...

  2. 设置gvim的字体大小

    1.临时设置: 进入命令行模式输入: set guifont=Courier\ New:h10 2.永久设置: 打开安装目录找到defaults.vim在最后一行输入: set guifont=Cou ...

  3. 时间戳和LocalDateTime和Date互转和格式化

    一 前言 续上篇java8在日常开发中使用LocalDate和LocalTime[https://blog.csdn.net/youku1327/article/details/102771936]中 ...

  4. Spark 2.x Troubleshooting Guide

    IBM在spark summit上分享的内容,包括编译spark源码,运行spark时候常见问题(缺包.OOM.GC问题.hdfs数据分布不均匀等),spark任务堆/thread dump 目录 编 ...

  5. 如何下载Github的工程到本地,完成修改并提交

    2019-02-22 对以下方法做了测试 可以生效 1 在Github上添加密钥 方法是:https://www.cnblogs.com/jason-beijing/p/9110187.html 2 ...

  6. 18 react react-redux 的编写 TodoList

    1. 安装 react-redux yarn add react-redux 2. react-redux 编写 TodoList 使所有子组件 都能使用 store #index.js import ...

  7. 下页小希学MVC5+EF6.2 学习记录三

      目的:1 学习mvc+ef 2  写下日记也是对自己的督促 期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型 ...

  8. Linux系统中的变量PATH

    PATH 作用 在Linux安装一些可执行文件通常要添加路径环境变量PATH,PATH环境变量通俗的讲就是把程序的路径"备案"到系统中,这样执行这些程序时就不需要输入完整路径,直接 ...

  9. 自定义环形进度条RoundProgressBar

    一.效果图: Canvas画圆环说明: 圆环宽度不必在意,只是画笔宽度设置后达到的效果. 二.实现步骤 1.自定义View-RoundProgressBar 2.设置属性resources(decle ...

  10. 小明有5本新书,要借给A、B、C三位小朋友 若每人每次只能借一本,则可以有多少种不同的借法?

    /* 问题描述: 小明有5本新书,要借给A.B.C三位小朋友, 若每人每次只能借一本,则可以有多少种不同的借法? 问题分析: 本题属于数学当中最常见的排列组合问题, 即求从5个数当中取3个不同数的排列 ...