Browse Source

项目信息批量导入

environment_dev
gjh 4 weeks ago
parent
commit
f9763aea0c
  1. 40
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/ExcelController.java
  2. 4
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java
  3. 32
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ProjectInfoListener.java
  4. 3
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java
  5. 8
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java

40
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));
}
}

4
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ProjectInfoVo.java

@ -88,7 +88,7 @@ public class ProjectInfoVo implements Serializable {
/** /**
* 前期设计字符串数组JSON格式存储 * 前期设计字符串数组JSON格式存储
*/ */
@ExcelProperty(value = "前期设计", converter = ExcelDictConvert.class) @ExcelProperty(value = "前期设计")
//@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储") //@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储")
private String earlyDesign; private String earlyDesign;
@ -113,7 +113,7 @@ public class ProjectInfoVo implements Serializable {
/** /**
* 项目类别字符串数组JSON格式存储 * 项目类别字符串数组JSON格式存储
*/ */
@ExcelProperty(value = "项目类别", converter = ExcelDictConvert.class) @ExcelProperty(value = "项目类别")
//@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储") //@ExcelDictFormat(readConverterExp = "字=符串数组,JSON格式存储")
private String projectTypeList; private String projectTypeList;

32
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<ProjectInfoVo> {
@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) {
}
}

3
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IProjectInfoService.java

@ -1,5 +1,6 @@
package org.dromara.demo.service; package org.dromara.demo.service;
import org.dromara.demo.domain.ProjectInfo;
import org.dromara.demo.domain.vo.ProjectInfoVo; import org.dromara.demo.domain.vo.ProjectInfoVo;
import org.dromara.demo.domain.bo.ProjectInfoBo; import org.dromara.demo.domain.bo.ProjectInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -65,4 +66,6 @@ public interface IProjectInfoService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
void addData(List<ProjectInfo> list);
} }

8
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ProjectInfoServiceImpl.java

@ -1,5 +1,6 @@
package org.dromara.demo.service.impl; 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.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -27,7 +28,7 @@ import java.util.Collection;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class ProjectInfoServiceImpl implements IProjectInfoService { public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements IProjectInfoService {
private final ProjectInfoMapper baseMapper; private final ProjectInfoMapper baseMapper;
@ -161,4 +162,9 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
@Override
public void addData(List<ProjectInfo> list) {
this.saveBatch(list);
}
} }

Loading…
Cancel
Save