OrgInfoService.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.izouma.awesomeAdmin.service;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.izouma.awesomeAdmin.domain.OrgInfo;
  4. import com.izouma.awesomeAdmin.dto.PageQuery;
  5. import com.izouma.awesomeAdmin.repo.OrgInfoRepo;
  6. import com.izouma.awesomeAdmin.service.storage.StorageService;
  7. import com.izouma.awesomeAdmin.utils.FileUtils;
  8. import com.izouma.awesomeAdmin.utils.JpaUtils;
  9. import com.izouma.awesomeAdmin.utils.excel.UploadDataListener;
  10. import lombok.AllArgsConstructor;
  11. import org.apache.commons.io.FilenameUtils;
  12. import org.apache.commons.lang3.RandomStringUtils;
  13. import org.apache.poi.util.TempFile;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import java.io.File;
  18. import java.io.FileInputStream;
  19. import java.io.FileOutputStream;
  20. import java.io.IOException;
  21. import java.text.SimpleDateFormat;
  22. import java.util.Date;
  23. import java.util.zip.ZipEntry;
  24. import java.util.zip.ZipInputStream;
  25. @Service
  26. @AllArgsConstructor
  27. public class OrgInfoService {
  28. private OrgInfoRepo orgInfoRepo;
  29. private StorageService storageService;
  30. public Page<OrgInfo> all(PageQuery pageQuery) {
  31. return orgInfoRepo
  32. .findAll(JpaUtils.toSpecification(pageQuery, OrgInfo.class), JpaUtils.toPageRequest(pageQuery));
  33. }
  34. public void upload(MultipartFile file) throws IOException {
  35. File destDir = TempFile.createTempDirectory("import");
  36. FileUtils.unzip(file.getInputStream(), destDir);
  37. File xlsxFile = FileUtils.findExcel(destDir);
  38. if (xlsxFile == null) return;
  39. UploadDataListener<OrgInfo> listener = new UploadDataListener<>();
  40. EasyExcel.read(new FileInputStream(xlsxFile), OrgInfo.class, listener).sheet().doReadSync();
  41. for (OrgInfo data : listener.getData()) {
  42. if (data.getLogo() != null) {
  43. File uploadFile = new File(destDir, data.getLogo());
  44. if (uploadFile.exists()) {
  45. String path = "image/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
  46. + RandomStringUtils.randomAlphabetic(8)
  47. + "." + FilenameUtils.getExtension(uploadFile.getName());
  48. String url = storageService.uploadFromInputStream(new FileInputStream(uploadFile), path);
  49. data.setLogo(url);
  50. }
  51. }
  52. }
  53. orgInfoRepo.saveAll(listener.getData());
  54. }
  55. }