仅供参考 有更好的导入工具类希望大家多多指教
前端vue+elm
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['daq:importsys:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['daq:importsys:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['daq:importsys:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-upload2"
size="mini"
@click="handleImport"
v-hasPermi="['daq:importsys:import']"
>导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-download"
size="mini"
:loading="exportLoading"
@click="handleExport"
v-hasPermi="['daq:importsys:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- <el-table v-loading="loading" :data="importsysList" @selection-change="handleSelectionChange">
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="id">
<span>{{ props.row.id }}</span>
</el-form-item>
<el-form-item label="父id">
<span>{{ props.row.importsysId }}</span>
</el-form-item>
<el-form-item label="名称">
<span>{{ props.row.importsysName }}</span>
</el-form-item>
<el-form-item label="子id">
<span>{{ props.row.importsysZid }}</span>
</el-form-item>
<el-form-item label="部门">
<span>{{ props.row.importsysBranch }}</span>
</el-form-item>
<el-form-item label="状态">
<span>{{ props.row.importsysState }}</span>
</el-form-item>
<el-form-item label="备注">
<span>{{ props.row.importsysRemark }}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column
label="ID"
prop="id">
</el-table-column>
<el-table-column
label="信息编号"
prop="importsysId">
</el-table-column>
<el-table-column
label="名称"
prop="importsysName">
</el-table-column>
<el-table-column
label="部门"
prop="importsysBranch">
</el-table-column>
<el-table-column
label="状态"
prop="importsysState">
</el-table-column>
<el-table-column
label="备注"
prop="importsysRemark">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['daq:importsys:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['daq:importsys:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>-->
<el-tree
:data="depts"
:props="defaultProps"
:filter-node-method="filterNode"
:expand-on-click-node="false"
ref="tree">
<span class="custom-tree-node" style="display: flex;justify-content: space-between;width: 100%;"
slot-scope="{ node, data }">
<div style="width: 20px;">
<span>{{ data.id }}</span>
</div>
<div>
<span>{{ data.importsysId }}</span>
</div>
<div>
<span>{{ data.importsysName }}</span>
</div>
<div>
<span>{{ data.importsysZid }}</span>
</div>
<div>
<span>{{ data.importsysBranch }}</span>
</div>
<div>
<span>{{ data.importsysState }}</span>
</div>
<div>
<span>{{ data.importsysRemark }}</span>
</div>
</span>
</el-tree>
<!-- 添加或修改采集管理对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="父id" prop="importsysId">
<el-input v-model="form.importsysId" placeholder="请输入父id" />
</el-form-item>
<el-form-item label="名称" prop="importsysName">
<el-input v-model="form.importsysName" placeholder="请输入名称" />
</el-form-item>
<el-form-item label="子id" prop="importsysZid">
<el-input v-model="form.importsysZid" placeholder="请输入子id" />
</el-form-item>
<el-form-item label="部门" prop="importsysBranch">
<el-input v-model="form.importsysBranch" placeholder="请输入部门" />
</el-form-item>
<el-form-item label="状态" prop="importsysState">
<el-input v-model="form.importsysState" placeholder="请输入状态" />
</el-form-item>
<el-form-item label="备注" prop="importsysRemark">
<el-input v-model="form.importsysRemark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 导入对话框 -->
<el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
<el-upload
ref="upload"
:limit="1"
accept=".xlsx, .xls"
:headers="upload.headers"
:action="upload.url + '?updateSupport=' + upload.updateSupport"
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:auto-upload="false"
drag
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip">
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的用户数据
</div>
<span>仅允许导入xls、xlsx格式文件。</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
</div>
</el-upload>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFileForm">确 定</el-button>
<el-button @click="upload.open = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listImportsys, getImportsys, delImportsys, addImportsys, updateImportsys, exportImportsys,importTemplate } from "@/api/daq/yzsimportsys";
import { getToken } from "@/utils/auth";
export default {
name: "Importsys",
data() {
return {
filterText: '',
depts: [],
dept: {
importsysName: '',
importsysZid: ''
},
pName: '',
dialogVisible: false,
defaultProps: {
children: 'children',
label: 'importsysNam'
},
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 采集管理表格数据
importsysList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
importsysId: null,
importsysName: null,
importsysZid: null,
importsysBranch: null,
importsysState: null,
importsysRemark: null
},
// 表单参数
form: {},
// 表单校验
rules: {
},
// 用户导入参数
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/daq/importsys/importData"
}
};
},
//监听器,当filterText的值变化时会触发filterText(val)方法,
//其中val的值就是filterText的最新值
watch: {
filterText(val) {
//this.$refs.tree.filter(val)就会调用当前tree的filterNode这个方法
this.$refs.tree.filter(val);
}
},
created() {
this.getList();
},
methods: {
/** 查询采集管理列表 */
getList() {
this.loading = true;
listImportsys().then(response => {
console.log(response);
/*this.importsysList = response.rows;*/
this.depts = response;
console.log(this.depts)
/*this.total = response.total;*/
this.loading = false;
});
},
//value值就是filterText的最新值,data数据就是形成tree的json数据
filterNode(value, data) {
// console.log(data)
if (!value) return true;
return data.importsysName.indexOf(value) !== 0;
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
importsysId: null,
importsysName: null,
importsysZid: null,
importsysBranch: null,
importsysState: null,
importsysRemark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加采集管理";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getImportsys(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改采集管理";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateImportsys(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addImportsys(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除采集管理编号为"' + ids + '"的数据项?').then(function() {
return delImportsys(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$modal.confirm('是否确认导出所有采集管理数据项?').then(() => {
this.exportLoading = true;
return exportImportsys(queryParams);
}).then(response => {
this.$download.name(response.msg);
this.exportLoading = false;
}).catch(() => {});
},
/** 导入按钮操作 */
handleImport() {
this.upload.title = "用户导入";
this.upload.open = true;
},
/** 下载模板操作 */
importTemplate() {
importTemplate().then(response => {
this.$download.name(response.msg);
});
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
this.getList();
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
}
}
};
</script>
工具类
/**
* Excel工具类
* @author yangzhisen
* @date 2021/11/19
*/
public class ExcelPoiUtil {
private static Logger logger = LoggerFactory.getLogger(ExcelPoiUtil.class);
/**
* EXCEL 2003 扩展名
*/
public static final String EXCEL03_EXTENSION = ".xls";
/**
* EXCEL 2007 扩展名
*/
public static final String EXCEL07_EXTENSION = ".xlsx";
/**
* 读入excel文件,解析后返回
* @param file
* @throws IOException
*/
public static List<String[]> readExcel(MultipartFile file) throws IOException{
//检查文件
checkFile(file);
//获得Workbook工作薄对象
Workbook workbook = getWorkBook(file);
//创建返回对象,把每行中的值作为一个数组,所有行作为一个集合返回
List<String[]> list = new ArrayList<String[]>();
if(workbook != null){
String cellValue = "";
for(int sheetNum = 0;sheetNum < workbook.getNumberOfSheets();sheetNum++){
//获得当前sheet工作表
Sheet sheet = workbook.getSheetAt(sheetNum);
if(sheet == null){
continue;
}
//获得当前sheet的开始行
int firstRowNum = sheet.getFirstRowNum();
//获得当前sheet的结束行
int lastRowNum = sheet.getLastRowNum();
int colNum = sheet.getRow(firstRowNum).getPhysicalNumberOfCells();
//循环除了第一行的所有行
for(int rowNum = firstRowNum+1;rowNum <= lastRowNum;rowNum++){
//获得当前行
Row row = sheet.getRow(rowNum);
if(row == null){
continue;
}
//获得当前行的开始列
int firstCellNum = row.getFirstCellNum();
//获得当前行的列数
int lastCellNum = colNum;
String[] cells = new String[colNum];
//循环当前行
for(int cellNum = firstCellNum; cellNum < lastCellNum;cellNum++){
Cell cell = row.getCell(cellNum);
cellValue = getCellValue(cell).trim();
cells[cellNum] = cellValue;
}
list.add(cells);
}
}
workbook.close();
}
return list;
}
public static void checkFile(MultipartFile file) throws IOException{
//判断文件是否存在
if(null == file){
logger.error("文件不存在!");
throw new FileNotFoundException("文件不存在!");
}
//获得文件名
String fileName = file.getOriginalFilename();
//判断文件是否是excel文件
if(!fileName.endsWith(EXCEL03_EXTENSION) && !fileName.endsWith(EXCEL07_EXTENSION)){
logger.error(fileName + "不是excel文件");
throw new IOException(fileName + "不是excel文件");
}
}
public static Workbook getWorkBook(MultipartFile file) {
//获得文件名
String fileName = file.getOriginalFilename();
//创建Workbook工作薄对象,表示整个excel
Workbook workbook = null;
try {
//获取excel文件的io流
InputStream is = file.getInputStream();
//根据文件后缀名不同(xls和xlsx)获得不同的Workbook实现类对象
if(fileName.endsWith(EXCEL03_EXTENSION)){
//2003
workbook = new HSSFWorkbook(is);
}else if(fileName.endsWith(EXCEL07_EXTENSION)){
//2007
workbook = new XSSFWorkbook(is);
}
} catch (IOException e) {
logger.info(e.getMessage());
}
return workbook;
}
public static String getCellValue(Cell cell){
String cellValue = "";
if(cell == null){
return cellValue;
}
//把数字当成String来读,避免出现1读成1.0的情况
if(cell.getCellType() == CellType.STRING){
cell.setCellType(CellType.STRING);
}
//判断数据的类型
switch (cell.getCellType()){
case NUMERIC: //数字
cellValue = NumberToTextConverter.toText(cell.getNumericCellValue()); ;
break;
case STRING: //字符串
cellValue = String.valueOf(cell.getStringCellValue());
break;
case BOOLEAN: //Boolean
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA: //公式
cellValue = String.valueOf(cell.getCellFormula());
break;
case BLANK: //空值
cellValue = "";
break;
case ERROR: //故障
cellValue = "非法字符";
break;
default:
cellValue = "未知类型";
break;
}
return cellValue;
}
}
Controller 这边把MultpartFile传过去是因为要用流获取地址做一些必要判断
如果有更好的方法请多指教
/**
* 导入用户信息结构
*/
@ApiOperation("导入下井次数设置数据")
@ResponseBody
@Log(title = "导入", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('daq:importsys:import')")
@PostMapping("/importData")
public AjaxResult importData(@RequestParam("file") MultipartFile file) throws Exception {
try {
List<String[]> excellist = ExcelPoiUtil.readExcel(file);
if (excellist.size() < 1){
return AjaxResult.error("导入失败 导入内容不允许为空");
}
List<DaqImportsys> mapList = daqImportsysService.insertExcelDaq(excellist,file);
return AjaxResult.success("当前Excel导入成功");
}catch (Exception e){
logger.error("批量导入失败:{}",e);
return AjaxResult.error("批量导入失败");
}
}
接口实现类实现一些逻辑
/**
* 导入
* @author yangzhisen
* @param excellist 导入
* @return 结果
*/
@Override
public List<DaqImportsys> insertExcelDaq(List<String[]> excellist, MultipartFile file) {
/**
* 获取上传文件输入流
*/
// 定义一个输入流为空
InputStream inputStream = null;
// 使用try-catch环绕
try {
// 使用file获取到流给到inputStream
inputStream = file.getInputStream();
} catch (Exception e) {
// 异常类方法
e.printStackTrace();
}
/**
* 添加第一张表的sheet名称为一级菜单
*/
// 使用Hutool工具类的POI 获取到当前输入流Excel流的地址 寻找下标为0的第一张sheet表名
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
// 新建一个DaqImportsys实体类用于存放Excel获取到的数据
DaqImportsys importsys = new DaqImportsys();
// 这边做判断 通过流获取到的Excel的数据是否为NULL值
// 如果判断这边不为NULL值的话 继续将方法往下执行
if (excelReader != null){
// 做了一个死循环只允许第一个sheet获取到后的id值为01
// (后期可以根据需求修改:需要去数据库进行查询,然后for循环id再进行添加)
for (int i = 1; i <= 1; i++) {
// 把循环过i的值通过存放 放在实体类的ImportsysId字段上面进行一个赋值操作
importsys.setImportsysId("0"+i);
}
// 给实体类的ImportsysName进行一个赋值操作
// 赋值内容是通过Hutool工具类的POI调用获取 Sheet名的方法
importsys.setImportsysName(excelReader.getSheetNames().get(0));
// 把存入实体类的数据 进行添加ImportsysId和ImportsysName的方法
daqImportsysMapper.insertImportId(importsys);
}else{
// 如果判断为NULL值的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
/**
* 转化为List传过来的Excel 通过遍历进行添加
*/
// new一个ArrayList用于把DaqImportsys获取到的数据存放在这里
List<DaqImportsys> importsysList = new ArrayList<>();
// 创建一个实体类用于存放前端传过来的Excel数据
DaqImportsys daqImportsys;
// 循环遍历转化为List传过来的Excel
for (String[] excelRow : excellist) {
// 判断这四个值是否不为空或者NULL 终止所在层的循环
// excelRow[0]代表Excel的第一列
if (excelRow[0] == null && "".equals(excelRow[1]) && "".equals(excelRow[2]) && "".equals(excelRow[3])) {
break;
}
// 这个实体类链接上层实体类进行对象的存储
daqImportsys = new DaqImportsys();
// 把循环取到的都先给对象赋值 然后放list里做批量导入
// 赋值给ImportsysName (信息名称)
daqImportsys.setImportsysName(excelRow[0]);
// 赋值给ImportsysBranch (责任部门)
daqImportsys.setImportsysBranch(excelRow[1]);
// 赋值给ImporState ( 状 态 )
daqImportsys.setimportsysState(excelRow[2]);
// 赋值给ImportsyRemark ( 备 注 )
daqImportsys.setImportsysRemark(excelRow[3]);
// 把循环取到放在实体类里的值 都存储到List集合里面做批量导入
importsysList.add(daqImportsys);
}
//判断存入的List集合元素的个数是否大于0
if (importsysList.size() > 0) {
// 大于0的话就执行添加Excel到数据库的方法
daqImportsysMapper.importLIst(importsysList);
}else {
// 判断长度为0的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
/**
* 添加第一个sheet下的名称为二级菜单
*/
// 判断使用Hutool工具类的POI 获取到当前Excel流的地址 寻找下标为0的第一张sheet表名 是否为空值
if (excelReader != null) {
// 创建一个新的ArrayList集合用于存放DaqImportsys实体类
List<DaqImportsys> daqthList = new ArrayList<>();
// 定义一个实体类用于把获取到的值存入到这里
DaqImportsys daqSys;
// 从实体类中取出ImportsysId 存储为String类型
String importsysId = importsys.getImportsysId();
// 使用Hutool工具类的POI 获取第一行的第一个数据
List<List<Object>> readFirstLine = excelReader.read(1, excelReader.getRowCount());
// 循环遍历行数下表从0开始
for (int i = 0; i < readFirstLine.size(); i++) {
// 把循环取到的值放在这个List集合里面
List<Object> objects = readFirstLine.get(i);
// 对应上面的实体类
daqSys = new DaqImportsys();
// 根据数组长度循环添加到实体类ImportsysId
daqSys.setImportsysId("0100" + (i+1));
// 根据循环得到的ImportsysName添加到实体类
daqSys.setImportsysName((String) objects.get(0));
// 根据上一个存进去的父级id存在子id里面
daqSys.setImportsysZid(importsysId);
// 把存在实体类里面的数据存放在List当中
daqthList.add(daqSys);
}
// 如果存进去的长度不为空的话 那么就执行修改方案
if (daqthList.size() > 0) {
// 修改方案是循环修改 使用的是存在list里面的数据进行修改的
daqImportsysMapper.UpdatetLIst(daqthList);
} else {
// 判断长度为0的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
}else {
// 判断长度为0的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
/**
* 根据二级菜单名称查询sheet名称一样的话里面的内容为三级菜单
*/
// 首先定义一个数组是为了存放ExcelSheet的名称之后的循环修改使用的
ArrayList<Object> excelsheetname = new ArrayList<>();
// 使用HutoolUtil的方法获取到所有sheet的名称 是为了修改查询条件使用的
List<String> sheetNames = excelReader.getSheetNames();
// 循环获取到每一个sheet的名称
for (int i = 0; i < sheetNames.size(); i++) {
// 循环获取到每一个sheet的名称返回一个String类型
String s = sheetNames.get(i);
// 使用刚刚创建的数组存放这个循环获取到所有的sheetName
excelsheetname.add(s);
}
/**
* 根据sheet表下的数据名称 查询到对应的sheet名称
*/
// 使用HutoolUtil 获取到第一个sheet下所有数据的所有名称 用于查询和他相对应的其他sheet名称
List<List<Object>> readFirstOne = excelReader.read(1, excelReader.getRowCount());
// 创建一个实体类的list集合 用于后期存放获取到的数据 用于循环修改
List<DaqImportsys> daqthLists = new ArrayList<>();
// 循环获取到数据的长度 并且可以获取到的第一张sheet表下所有数据的所有名称
for (int i = 0; i < readFirstOne.size(); i++) {
// 取到跟长度一样的所有数据之后存在一个List<Obj>里面
List<Object> fondLongData = readFirstOne.get(i);
// 这一步的操作是获取到第一列的数据名称 也就是ImportsysName
String importsysName = (String) fondLongData.get(0);
// 根据获取到的长度 循环获取到所有SheetName
for (int j = 0; j < excelsheetname.size(); j++) {
// 将所有获取到的Sheet名称存放在这个方法当中
ExcelReader readeSheetName = excelReader.setSheet((String) excelsheetname.get(j));
// 这一步判断是看获取到第一列的数据名称是否和 获取到所有的sheet名称对应
if (fondLongData.get(0).equals(excelsheetname.get(j))){
// 如果对应的话 获取到每一个sheet下面的所有数据
List<Map<String, Object>> allSheetData = readeSheetName.readAll();
// 通过循环把每一个sheet下的数据都取出来
for (int i1 = 1; i1 < allSheetData.size()+1; i1++) {
// 使用HutoolUtil的方法取出的时候只取出循环出来的每一个sheet下第一行的第一个值
Cell allCell = readeSheetName.getCell(0, i1);
// 根据传过来的ImportsysName作为查询条件 用这个查询条件去做判断 判断根据这个name能否查询到对应的id
// 因为Excel当中会存在有很多一样的数据 所以说传回来的是一个集合 所以说这样查询的话得传回来一个实体类的List集合
List<DaqImportsys> idWhereNames = daqImportsysMapper.selectImportsysIdWhereName(importsysName);
// 判断HutoolUtil是否获取到数据了 如果获取数据不为空的话 继续执行以下方法
if (readeSheetName != null) {
// 首先定义一个空的实体类 用于存放传过来的数据
DaqImportsys daqths;
// 循环查询到的id 获取id的长度来获取 根据长度获取到每一个值(没有实际用处,后期使用的话可以直接使用)
for (int k = 0; k < idWhereNames.size(); k++) {
// 把实体类放在这里做调用使用
daqths = new DaqImportsys();
// ForEach循环(selectImportsysIdWhereName)根据name为查询条件查询到的id数据
for (DaqImportsys idWhereName : idWhereNames) {
// 这一步是把循环到的每一个sheetName的长度循环到的每一个都自增形式存在了这个ImportsysId里面
daqths.setImportsysId(idWhereName.getImportsysId() + "00" + (i1));
// 子id是通过查询到的ImportsysId存放在这个子id的实体类里面
daqths.setImportsysZid(idWhereName.getImportsysId());
}
// 通过HutoolUtil的方法取出循环出来的每一个sheet下面的第一个值之后 本来是Cell类型的数据 我们通过StringValue的方式转成String类型的数据村入到实体类中去
daqths.setImportsysName(String.valueOf(allCell));
// 把实体类获取到的值存入到 创建好的List集合当中做批量修改操作
daqthLists.add(daqths);
}
}else {
// 判断长度为NULL的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
}
}
}
}
//如果存进去的长度不为空的话 那么就执行修改方案
if (daqthLists.size() > 0) {
// 根据ImportsysName进行修改ImportsysId(父级id)和ImportsysZid(子id)
daqImportsysMapper.UpdatetLIstThreeName(daqthLists);
}else {
// 判断长度为0的话 第一步返回空值前端进行提示 后台则打印日志提示开发人员
System.err.println("您导入的Excel为空!请检查后再进行导入");
return null;
}
// 全部执行成功的话就返回
return importsysList;
}