package com.imed.costaccount.web; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.imed.costaccount.common.exception.CostException; import com.imed.costaccount.common.util.Result; import com.imed.costaccount.model.User; import com.imed.costaccount.service.UserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Sheet; import org.apache.shiro.SecurityUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.List; import java.util.UUID; /** * 相关导入导出操作 */ @Slf4j @Api(tags = "excel导入导出") @RestController @RequestMapping("/costAccount/excel") public class ExcelController { private UserService userService; public ExcelController(UserService userService) { this.userService = userService; } @ApiOperation("用户导出模板设置") @GetMapping("/getImportUserTemplate") public void getImportUserTemplate(HttpServletResponse response) throws IOException { User user = (User) SecurityUtils.getSubject().getPrincipal(); // TODO: 2021/7/26 暂时没有登录 String uuid = UUID.randomUUID().toString(); String url = System.getProperty("java.io.tmpdir") + File.separator + uuid + File.separator + uuid + ".xls"; FileUtil.del(FileUtil.file(url)); ExcelWriter writer = new ExcelWriter(url); // 样式 Sheet sheet = writer.getSheet(); // 内容 writer.merge(0, 1, 0, 4, "为了保证成功导入,请勿修改模板格式", false); writer.passCurrentRow(); writer.passCurrentRow(); writer.merge(2, 2, 0, 4, "测试医院用户导入", false); writer.passCurrentRow(); writer.writeRow(Arrays.asList("院区","姓名", "工号", "密码","手机号码")); // 写入响应 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + uuid + ".xls"); ServletOutputStream out = null; out = response.getOutputStream(); writer.flush(out, true); writer.close(); IoUtil.close(out); } @PostMapping("/importUser") @ApiOperation("导入用户") public Result importUser(@RequestParam("file") MultipartFile file) { InputStream in; try { in = file.getInputStream(); ExcelReader reader = ExcelUtil.getReader(in); List> read = reader.read(); log.info("最开始:read={}",read); log.info("-------------------------------假装我是个分割线------------------------------------"); User user = (User) SecurityUtils.getSubject().getPrincipal(); return userService.importUser(read, user); } catch (IOException e) { e.printStackTrace(); throw new CostException(500, "导入失败"); } } }