当前位置: 首页 > news >正文

若依系统的数据导入功能设置

一、后端

@Log(title = "公交站牌", businessType = BusinessType.IMPORT)@PreAuthorize("@ss.hasPermi('busStop:busStop:import')")@PostMapping("/importData")public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception{ExcelUtil<BusStop> util = new ExcelUtil<BusStop>(BusStop.class);List<BusStop> busStopList = util.importExcel(file.getInputStream());LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());String operName = loginUser.getUsername();String message = busStopService.importUser(busStopList, updateSupport, operName);return AjaxResult.success(message);}@GetMapping("/importTemplate")public AjaxResult importTemplate(){ExcelUtil<BusStop> util = new ExcelUtil<BusStop>(BusStop.class);return util.importTemplateExcel("公交站牌数据");}

实现类中的

 /*** 导入公交站牌信息* @param busStopList* @param isUpdateSupport* @param operName* @return*/@Overridepublic String importUser(List<BusStop> busStopList, boolean isUpdateSupport, String operName) {if (StringUtils.isNull(busStopList) || busStopList.size() == 0){throw new CustomException("导入公交站牌数据不能为空!");}int successNum = 0;int failureNum = 0;StringBuilder successMsg = new StringBuilder();StringBuilder failureMsg = new StringBuilder();for (BusStop busStop : busStopList){try{// 验证是否存在这个公交站牌SysUser u = busStopMapper.selectBusStopByWfcId(busStop.getWfcId());if (StringUtils.isNull(u)){busStop.setCreateBy(operName);this.insertBusStop(busStop);successNum++;successMsg.append("<br/>" + successNum + "、站牌 " + busStop.getWfcId() + " 导入成功");}else if (isUpdateSupport){busStop.setUpdateBy(operName);this.updateBusStop(busStop);successNum++;successMsg.append("<br/>" + successNum + "、站牌 " + busStop.getWfcId() + " 更新成功");}else{failureNum++;failureMsg.append("<br/>" + failureNum + "、站牌 " + busStop.getWfcId() + " 已存在");}}catch (Exception e){failureNum++;String msg = "<br/>" + failureNum + "、站牌 " + busStop.getWfcId() + " 导入失败:";failureMsg.append(msg + e.getMessage());//log.error(msg, e);}}if (failureNum > 0){failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");throw new CustomException(failureMsg.toString());}else{successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");}return successMsg.toString();}

二、前端
data return中

// 用户导入参数upload: {// 是否显示弹出层(用户导入)open: false,// 弹出层标题(用户导入)title: "",// 是否禁用上传isUploading: false,// 是否更新已经存在的站牌数据updateSupport: 0,// 设置上传的请求头部headers: { Authorization: "Bearer " + getToken() },// 上传的地址url: process.env.VUE_APP_BASE_API + "/busStop/busStop/importData"},

methods中放置

  /** 导入按钮操作 */handleImport() {this.upload.title = "站牌导入";this.upload.open = true;},/** 下载模板操作 */importTemplate() {importTemplate().then(response => {this.download(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();}

temple中放置

  <!-- 用户导入对话框 --><el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body><el-uploadref="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" slot="tip"><el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link></div><div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</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>

el-row中放置

  <el-col :span="1.5"><el-buttontype="info"icon="el-icon-upload2"size="mini"@click="handleImport"v-hasPermi="['busStop:busStop:import']">导入</el-button></el-col>
http://www.lryc.cn/news/215557.html

相关文章:

  • vue页面父组件与子组件相互调用方法和传递参数值
  • vim使用
  • 人工智能基础_机器学习014_BGD批量梯度下降公式更新_进一步推导_SGD随机梯度下降和MBGD小批量梯度下降公式进一步推导---人工智能工作笔记0054
  • Android STR研究之一
  • 单链表的详解实现
  • 抛弃 scp 改用 rsync,让 Linux 下文件传输高效无比
  • Leetcode 2919. Minimum Increment Operations to Make Array Beautiful
  • 关键词搜索亚马逊商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)
  • [计算机提升] Windows系统软件:娱乐类
  • 【Git企业开发】第五节.远程操作
  • idea 配置checkstyle全过程
  • 小程序如何设置自动使用物流账号发货
  • 高性能渲染——详解Html Canvas的优势与性能
  • 2023.10 各个编程语言 受欢迎指数 排行
  • 『PyQt5-基本控件』| 15 如何设置主窗口居中?退出应用程序如何操作?
  • scrapy+selenium框架模拟登录
  • 【实验五】题解
  • Android开发知识学习——Kotlin基础
  • C++——定义一个 Book(图书)类
  • 深度学习之基于YoloV5的道路地面缺陷检测系统(UI界面)
  • AcWing94. 递归实现排列型枚举:输出1~n的全排列
  • 神经网络多种注意力机制原理和代码讲解
  • 前端HTML
  • Jenkins安装(Jenkins 2.429)及安装失败解决(Jenkins 2.222.4)
  • vue中哪些数组操作可以重排
  • 订单创建订单确认、收货创建收货确认取消收货、生成库存和领用单发料
  • yolox转rknn
  • llava1.5模型安装、预测、训练详细教程
  • 一个ppt带你读懂网络安全行业四大顶会之一的ndss论文<<Large Language Model guided Protocol Fuzzing>>
  • ajax调用springboot后台接口