ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-demo/src/main/java/com/ruoyi/demo/domain/bo/TestDemoImportVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/demo/demo/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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()); } /** * å¯¼åºæµè¯å表å表 */ 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; } 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(); } } };