ExcelController.java 3.4 KB

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