From c21ff85b57929e39bf37d462181b0edc242f354b Mon Sep 17 00:00:00 2001
From: zhujie <693337446@qq.com>
Date: 星期五, 26 十一月 2021 13:02:59 +0800
Subject: [PATCH] update 增加excel导入样例

---
 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java |   25 +++++++-
 ruoyi-ui/src/views/demo/demo/index.vue                                     |   67 ++++++++++++++++++++++
 ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java    |   66 ++++++++++++++++++++++
 3 files changed, 155 insertions(+), 3 deletions(-)

diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
index 7b70360..695d254 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java
@@ -1,27 +1,31 @@
 package com.ruoyi.demo.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.ValidatorUtils;
+import com.ruoyi.common.utils.poi.ExcelResult;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.demo.domain.TestDemo;
 import com.ruoyi.demo.domain.bo.TestDemoBo;
+import com.ruoyi.demo.domain.bo.TestDemoImportVo;
 import com.ruoyi.demo.domain.vo.TestDemoVo;
 import com.ruoyi.demo.service.ITestDemoService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotEmpty;
@@ -65,6 +69,21 @@
         return iTestDemoService.customPageList(bo);
     }
 
+    @ApiOperation("瀵煎叆娴嬭瘯鍗曡〃")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "file", value = "瀵煎叆鏂囦欢", dataType = "java.io.File", required = true),
+    })
+    @Log(title = "娴嬭瘯鍗曡〃", businessType = BusinessType.IMPORT)
+    @PreAuthorize("@ss.hasPermi('demo:demo:import')")
+    @PostMapping("/importData")
+    public AjaxResult<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
+        ExcelResult<TestDemoImportVo> excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true, true);
+        List<TestDemoImportVo> testDemoImportVoList = excelResult.getList();
+        List<TestDemo> TestDemoList = BeanUtil.copyToList(testDemoImportVoList, TestDemo.class);
+        iTestDemoService.saveAll(TestDemoList);
+        return AjaxResult.success(excelResult.getAnalysis());
+    }
+
     /**
      * 瀵煎嚭娴嬭瘯鍗曡〃鍒楄〃
      */
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java
new file mode 100644
index 0000000..2150cdf
--- /dev/null
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java
@@ -0,0 +1,66 @@
+package com.ruoyi.demo.domain.bo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 娴嬭瘯鍗曡〃涓氬姟瀵硅薄 test_demo
+ *
+ * @author Lion Li
+ * @date 2021-07-26
+ */
+
+@Data
+@ApiModel("娴嬭瘯鍗曡〃涓氬姟瀵硅薄")
+public class TestDemoImportVo {
+
+
+    /**
+     * 閮ㄩ棬id
+     */
+	@ApiModelProperty("閮ㄩ棬id")
+    @NotNull(message = "閮ㄩ棬id涓嶈兘涓虹┖")
+    @ExcelProperty(value = "閮ㄩ棬id")
+    private Long deptId;
+
+    /**
+     * 鐢ㄦ埛id
+     */
+	@ApiModelProperty("鐢ㄦ埛id")
+    @NotNull(message = "鐢ㄦ埛id涓嶈兘涓虹┖")
+    @ExcelProperty(value = "鐢ㄦ埛id")
+    private Long userId;
+
+    /**
+     * 鎺掑簭鍙�
+     */
+	@ApiModelProperty("鎺掑簭鍙�")
+    @NotNull(message = "鎺掑簭鍙蜂笉鑳戒负绌�")
+    @ExcelProperty(value = "鎺掑簭鍙�")
+    private Long orderNum;
+
+    /**
+     * key閿�
+     */
+	@ApiModelProperty("key閿�")
+    @NotBlank(message = "key閿笉鑳戒负绌�")
+    @ExcelProperty(value = "key閿�")
+    private String testKey;
+
+    /**
+     * 鍊�
+     */
+	@ApiModelProperty("鍊�")
+    @NotBlank(message = "鍊间笉鑳戒负绌�")
+    @ExcelProperty(value = "鍊�")
+    private String value;
+}
diff --git a/ruoyi-ui/src/views/demo/demo/index.vue b/ruoyi-ui/src/views/demo/demo/index.vue
index 9ff0e47..c6a2cdf 100644
--- a/ruoyi-ui/src/views/demo/demo/index.vue
+++ b/ruoyi-ui/src/views/demo/demo/index.vue
@@ -73,6 +73,16 @@
       </el-col>
       <el-col :span="1.5">
         <el-button
+          type="info"
+          plain
+          icon="el-icon-upload2"
+          size="mini"
+          @click="handleImport"
+          v-hasPermi="['demo:demo:import']"
+        >瀵煎叆</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
           type="warning"
           plain
           icon="el-icon-download"
@@ -164,11 +174,34 @@
         <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>
+      </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 { listDemo, pageDemo, getDemo, delDemo, addDemo, updateDemo } from "@/api/demo/demo";
+import {getToken} from "@/utils/auth";
 
 export default {
   name: "Demo",
@@ -198,6 +231,19 @@
       open: false,
       // 鍒涘缓鏃堕棿鏃堕棿鑼冨洿
       daterangeCreateTime: [],
+      // 鐢ㄦ埛瀵煎叆鍙傛暟
+      upload: {
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+        open: false,
+        // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
+        title: "",
+        // 鏄惁绂佺敤涓婁紶
+        isUploading: false,
+        // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+        headers: { Authorization: "Bearer " + getToken() },
+        // 涓婁紶鐨勫湴鍧�
+        url: process.env.VUE_APP_BASE_API + "/demo/demo/importData"
+      },
       // 鏌ヨ鍙傛暟
       queryParams: {
         pageNum: 1,
@@ -353,11 +399,32 @@
         this.loading = false;
       });
     },
+    /** 瀵煎叆鎸夐挳鎿嶄綔 */
+    handleImport() {
+      this.upload.title = "鐢ㄦ埛瀵煎叆";
+      this.upload.open = true;
+    },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
       this.download('demo/demo/export', {
         ...this.queryParams
       }, `demo_${new Date().getTime()}.xlsx`)
+    },
+    // 鏂囦欢涓婁紶涓鐞�
+    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();
     }
   }
 };

--
Gitblit v1.9.3