From f9763aea0c3d6ab55416b95dcf6780f3549cccb3 Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Tue, 19 Aug 2025 10:43:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BF=A1=E6=81=AF=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/ExcelController.java | 40 +++++++++++++++++++ .../dromara/demo/domain/vo/ProjectInfoVo.java | 4 +- .../demo/listener/ProjectInfoListener.java | 32 +++++++++++++++ .../demo/service/IProjectInfoService.java | 3 ++ .../service/impl/ProjectInfoServiceImpl.java | 8 +++- 5 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ExcelController.java create mode 100644 ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ProjectInfoListener.java diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ExcelController.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ExcelController.java new file mode 100644 index 0000000..56108d9 --- /dev/null +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ExcelController.java @@ -0,0 +1,40 @@ +package org.dromara.demo.controller; + +import com.alibaba.excel.EasyExcel; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.demo.domain.vo.ProjectInfoVo; +import org.dromara.demo.listener.ProjectInfoListener; +import org.dromara.demo.service.IProjectInfoService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +@Slf4j +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/evr/excel") +public class ExcelController { + + @Resource + private IProjectInfoService projectInfoService ; + + @PostMapping("/uploadProjectInfo") + public void uploadPointInfo(MultipartFile file, HttpServletResponse response) throws IOException { + long t1 = System.currentTimeMillis(); + // 业务层 + EasyExcel.read(file.getInputStream(), ProjectInfoVo.class, new ProjectInfoListener(projectInfoService)).sheet().doRead(); + response.setContentType("text/html;charset=utf8"); + long t2 = System.currentTimeMillis(); + response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)+"ms"); + log.info("批量项目信息成功! 共用时:{}ms",(t2-t1)); + } + +} diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java index c40e047..61e1c03 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java @@ -88,7 +88,7 @@ public class ProjectInfoVo implements Serializable { /** * 前期设计(字符串数组,JSON格式存储) */ - @ExcelProperty(value = "前期设计", converter = ExcelDictConvert.class) + @ExcelProperty(value = "前期设计") //@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储") private String earlyDesign; @@ -113,7 +113,7 @@ public class ProjectInfoVo implements Serializable { /** * 项目类别(字符串数组,JSON格式存储) */ - @ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) + @ExcelProperty(value = "项目类别") //@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储") private String projectTypeList; diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ProjectInfoListener.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ProjectInfoListener.java new file mode 100644 index 0000000..004ffe6 --- /dev/null +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ProjectInfoListener.java @@ -0,0 +1,32 @@ +package org.dromara.demo.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import jakarta.annotation.Resource; +import org.dromara.demo.domain.bo.ProjectInfoBo; +import org.dromara.demo.domain.vo.ProjectInfoVo; +import org.dromara.demo.service.IProjectInfoService; +import org.springframework.beans.BeanUtils; + +public class ProjectInfoListener implements ReadListener { + + @Resource + private IProjectInfoService projectInfoService ; + + public ProjectInfoListener(IProjectInfoService projectInfoService) { + this.projectInfoService = projectInfoService; + } + + @Override + public void invoke(ProjectInfoVo projectInfoVo, AnalysisContext analysisContext) { + ProjectInfoBo projectInfo = new ProjectInfoBo(); + BeanUtils.copyProperties(projectInfoVo,projectInfo); + projectInfoService.insertByBo(projectInfo); + + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } +} diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java index b25e623..92b03df 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java @@ -1,5 +1,6 @@ package org.dromara.demo.service; +import org.dromara.demo.domain.ProjectInfo; import org.dromara.demo.domain.vo.ProjectInfoVo; import org.dromara.demo.domain.bo.ProjectInfoBo; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -65,4 +66,6 @@ public interface IProjectInfoService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + void addData(List list); } diff --git a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java index bf38056..5a77d27 100644 --- a/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.demo.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -27,7 +28,7 @@ import java.util.Collection; */ @RequiredArgsConstructor @Service -public class ProjectInfoServiceImpl implements IProjectInfoService { +public class ProjectInfoServiceImpl extends ServiceImpl implements IProjectInfoService { private final ProjectInfoMapper baseMapper; @@ -161,4 +162,9 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public void addData(List list) { + this.saveBatch(list); + } }