功能描述:
做的是物联网的项目,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. code first网站发布后数据表中没有数据问题

    code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuratio ...

  2. dede开启会员功能

    登陆后台,找到菜单里面的系统基本参数设置>会员设置>开启会员功能,选择“是”,保存即可

  3. 19 03 02 HTTP和https

    HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法. HTTPS(Hypertext Transfer Protocol ov ...

  4. 115-PHP实例化和不实例化输出类常量

    <?php class boy{ //定义男孩类 const sex='男'; public $age=15; } echo '不实例化对象输出类常量:'.boy::sex; $boy=new ...

  5. Kylin笔记

    简介 Apache Kylin(Extreme OLAP Engine for Big Data)是一个开源的分布式 分析引擎,为Hadoop等大型分布式数据平台之上的超大规模数据集通过标准 SQL查 ...

  6. Node.js NPM 管理包

    章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json 根据安 ...

  7. 环境变量和文件查找&文件打包与解压缩

    环境变量和文件查找 介绍环境变量的作用与用法 及几种搜索文件的方法 学会这些技巧可以高效地使用 Linux 知识点:环境变量的设置 环境变量的修改 环境变量 要解释环境变量,得先明白变量是什么,准确的 ...

  8. UVA - 116 Unidirectional TSP (单向TSP)(dp---多段图的最短路)

    题意:给一个m行n列(m<=10, n<=100)的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列.要求经过的整数之和最小.第一行的上一行是最后一行,最后一 ...

  9. 三星首款折叠屏手机Galaxy Fold上架中国官网

    2 月 28 日,在三星 Galaxy S10 系列新品发布会上,备受期待的三星首款可折叠屏手机 Galaxy Fold 也在中国正式亮相.目前,Galaxy Fold 已正式上架三星中国官网,可以预 ...

  10. 10 —— node —— 获取文件在前台遍历

    思想 : 前台主动发起获取 => ajax 1,前台文件 index.html <!DOCTYPE html> <html lang="en"> &l ...