ExcelController.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.imed.costaccount.web;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.io.IoUtil;
  4. import cn.hutool.poi.excel.ExcelReader;
  5. import cn.hutool.poi.excel.ExcelUtil;
  6. import cn.hutool.poi.excel.ExcelWriter;
  7. import com.imed.costaccount.common.util.Result;
  8. import com.imed.costaccount.model.User;
  9. import com.imed.costaccount.service.UserService;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiOperation;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.apache.poi.ss.usermodel.Sheet;
  14. import org.apache.shiro.SecurityUtils;
  15. import org.springframework.web.bind.annotation.*;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import javax.servlet.ServletOutputStream;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.io.File;
  20. import java.io.IOException;
  21. import java.io.InputStream;
  22. import java.util.Arrays;
  23. import java.util.List;
  24. import java.util.UUID;
  25. /**
  26. * 相关导入导出操作
  27. */
  28. @Slf4j
  29. @Api(tags = "excel导入导出")
  30. @RestController
  31. @RequestMapping("/costAccount/excel")
  32. public class ExcelController {
  33. private UserService userService;
  34. public ExcelController(UserService userService) {
  35. this.userService = userService;
  36. }
  37. @ApiOperation("用户导出模板设置")
  38. @GetMapping("/getImportUserTemplate")
  39. public void getImportUserTemplate(HttpServletResponse response) throws IOException {
  40. User user = (User) SecurityUtils.getSubject().getPrincipal();
  41. // TODO: 2021/7/26 暂时没有登录
  42. String uuid = UUID.randomUUID().toString();
  43. String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls";
  44. FileUtil.del(FileUtil.file(url));
  45. ExcelWriter writer = new ExcelWriter(url);
  46. // 样式
  47. Sheet sheet = writer.getSheet();
  48. sheet.setDefaultColumnWidth(1000 * 256);
  49. // 内容
  50. writer.merge(0, 1, 0, 4, "为了保证成功导入,请勿修改模板格式", false);
  51. writer.passCurrentRow();
  52. writer.passCurrentRow();
  53. writer.merge(2, 2, 0, 4, "测试医院用户导入", false);
  54. writer.passCurrentRow();
  55. writer.writeRow(Arrays.asList("院区","姓名", "账户", "密码","手机号码"));
  56. // 写入响应
  57. response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
  58. response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls");
  59. ServletOutputStream out = null;
  60. out = response.getOutputStream();
  61. writer.flush(out, true);
  62. writer.close();
  63. IoUtil.close(out);
  64. }
  65. @PostMapping("/importUser")
  66. @ApiOperation("导入用户")
  67. public Result importUser(@RequestParam("file") MultipartFile file) {
  68. InputStream in;
  69. try {
  70. in = file.getInputStream();
  71. ExcelReader reader = ExcelUtil.getReader(in);
  72. List<List<Object>> read = reader.read();
  73. log.info("最开始:read={}",read);
  74. log.info("-------------------------------假装我是个分割线------------------------------------");
  75. User user = (User) SecurityUtils.getSubject().getPrincipal();
  76. return userService.importUser(read, user);
  77. } catch (IOException e) {
  78. e.printStackTrace();
  79. return Result.errorMsg("导入失败");
  80. }
  81. }
  82. }