|
|
@@ -4,28 +4,59 @@ import com.alibaba.excel.EasyExcel;
|
|
|
import com.izouma.awesomeAdmin.domain.OrgInfo;
|
|
|
import com.izouma.awesomeAdmin.dto.PageQuery;
|
|
|
import com.izouma.awesomeAdmin.repo.OrgInfoRepo;
|
|
|
+import com.izouma.awesomeAdmin.service.storage.StorageService;
|
|
|
+import com.izouma.awesomeAdmin.utils.FileUtils;
|
|
|
import com.izouma.awesomeAdmin.utils.JpaUtils;
|
|
|
import com.izouma.awesomeAdmin.utils.excel.UploadDataListener;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.io.FilenameUtils;
|
|
|
+import org.apache.commons.lang3.RandomStringUtils;
|
|
|
+import org.apache.poi.util.TempFile;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.zip.ZipEntry;
|
|
|
+import java.util.zip.ZipInputStream;
|
|
|
|
|
|
@Service
|
|
|
@AllArgsConstructor
|
|
|
public class OrgInfoService {
|
|
|
|
|
|
- private OrgInfoRepo orgInfoRepo;
|
|
|
+ private OrgInfoRepo orgInfoRepo;
|
|
|
+ private StorageService storageService;
|
|
|
|
|
|
public Page<OrgInfo> all(PageQuery pageQuery) {
|
|
|
- return orgInfoRepo.findAll(JpaUtils.toSpecification(pageQuery, OrgInfo.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
+ return orgInfoRepo
|
|
|
+ .findAll(JpaUtils.toSpecification(pageQuery, OrgInfo.class), JpaUtils.toPageRequest(pageQuery));
|
|
|
}
|
|
|
|
|
|
public void upload(MultipartFile file) throws IOException {
|
|
|
+ File destDir = TempFile.createTempDirectory("import");
|
|
|
+ FileUtils.unzip(file.getInputStream(), destDir);
|
|
|
+ File xlsxFile = FileUtils.findExcel(destDir);
|
|
|
+ if (xlsxFile == null) return;
|
|
|
UploadDataListener<OrgInfo> listener = new UploadDataListener<>();
|
|
|
- EasyExcel.read(file.getInputStream(), OrgInfo.class, listener).sheet().doReadSync();
|
|
|
+ EasyExcel.read(new FileInputStream(xlsxFile), OrgInfo.class, listener).sheet().doReadSync();
|
|
|
+ for (OrgInfo data : listener.getData()) {
|
|
|
+ if (data.getLogo() != null) {
|
|
|
+ File uploadFile = new File(destDir, data.getLogo());
|
|
|
+ if (uploadFile.exists()) {
|
|
|
+ String path = "images/" + new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date())
|
|
|
+ + RandomStringUtils.randomAlphabetic(8)
|
|
|
+ + "." + FilenameUtils.getExtension(uploadFile.getName());
|
|
|
+ String url = storageService.uploadFromInputStream(new FileInputStream(uploadFile), path);
|
|
|
+ data.setLogo(url);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
orgInfoRepo.saveAll(listener.getData());
|
|
|
}
|
|
|
+
|
|
|
}
|