diff --git a/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/TemplateReplaceExecutor.java b/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/TemplateReplaceExecutor.java index 12322b5..3c1f372 100644 --- a/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/TemplateReplaceExecutor.java +++ b/wmyun-framework/wmyun-spring-boot-starter-word/src/main/java/com/wmyun/farmwork/word/core/TemplateReplaceExecutor.java @@ -27,11 +27,11 @@ import java.util.Map; @Component public class TemplateReplaceExecutor { - public String doReplace(@NotNull String absolutePath, TemplateExecDataModel data) { + public static String doReplace(@NotNull String absolutePath, TemplateExecDataModel data) { return doReplace(absolutePath, data, DefaultConfig.def()); } - private String doReplace(@NotNull String absolutePath, TemplateExecDataModel data, Configure def) { + private static String doReplace(@NotNull String absolutePath, TemplateExecDataModel data, Configure def) { File wordFile = new File(absolutePath); Map dataMap = new HashMap<>(); for (TypeText text : data.getText()) { diff --git a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/controller/admin/word/WordTemplateController.java b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/controller/admin/word/WordTemplateController.java index eb36dcc..0cb80b6 100644 --- a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/controller/admin/word/WordTemplateController.java +++ b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/controller/admin/word/WordTemplateController.java @@ -1,14 +1,12 @@ package com.wmyun.module.infra.controller.admin.word; +import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel; import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel; import com.wmyun.framework.common.pojo.CommonResult; import com.wmyun.module.infra.service.file.WordTemplateTagService; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -26,7 +24,7 @@ public class WordTemplateController { @Autowired private WordTemplateTagService wordService; - @PostMapping("file/{fileId}") + @PostMapping("/file/{fileId}") public CommonResult> requestAllTags(@PathVariable("fileId") String fileId) { try { return CommonResult.success(wordService.queryAllTag(fileId)); @@ -36,4 +34,13 @@ public class WordTemplateController { } } + @PostMapping("/file/{fileId}/generate") + public CommonResult doGenerate(@PathVariable("fileId") String fileId, @RequestBody TemplateExecDataModel data) { + try { + return CommonResult.success(wordService.generateNew(fileId, data)); + } catch (Exception e) { + e.printStackTrace(); + return CommonResult.error(500, e.getMessage()); + } + } } diff --git a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagService.java b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagService.java index 93d665b..105d004 100644 --- a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagService.java +++ b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagService.java @@ -1,5 +1,6 @@ package com.wmyun.module.infra.service.file; +import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel; import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel; import java.util.List; @@ -14,4 +15,6 @@ import java.util.List; public interface WordTemplateTagService { List queryAllTag(String fileId) throws Exception; + + Long generateNew(String fileId, TemplateExecDataModel data) throws Exception; } diff --git a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagServiceImpl.java b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagServiceImpl.java index 27db6ed..d0629f0 100644 --- a/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagServiceImpl.java +++ b/wmyun-module-infra/wmyun-module-infra-biz/src/main/java/com/wmyun/module/infra/service/file/WordTemplateTagServiceImpl.java @@ -1,17 +1,15 @@ package com.wmyun.module.infra.service.file; +import com.wmyun.farmwork.word.core.TemplateReplaceExecutor; import com.wmyun.farmwork.word.core.TemplateTagsGenerate; +import com.wmyun.farmwork.word.core.model.exec.TemplateExecDataModel; import com.wmyun.farmwork.word.core.model.gen.TagsGenDataModel; -import com.wmyun.framework.common.util.io.IoUtils; import com.wmyun.module.infra.dal.dataobject.file.FileDO; -import com.wmyun.module.infra.dal.mysql.file.FileMapper; import com.wmyun.module.infra.framework.file.core.client.FileClient; -import jakarta.annotation.Resource; -import jodd.io.IOUtil; -import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -32,9 +30,17 @@ public class WordTemplateTagServiceImpl implements WordTemplateTagService { @Autowired private FileConfigService fileConfigService; + @Autowired + private FileService fileService; + @Override public List queryAllTag(String fileId) throws Exception { - FileDO file = previewService.queryFileInfoByFileId(fileId); + + return TemplateTagsGenerate.execAllTags(saveFileToLocalTmp(fileId)); + } + + private String saveFileToLocalTmp(String fileId) throws Exception { + FileDO file = getFileInfo(fileId); FileClient client = fileConfigService.getFileClient(file.getConfigId()); byte[] content = client.getContent(file.getPath()); @@ -42,6 +48,22 @@ public class WordTemplateTagServiceImpl implements WordTemplateTagService { Path tempDir = Paths.get(System.getProperty("java.io.tmpdir")); Path targetPath = tempDir.resolve(name); Files.write(targetPath, content); - return TemplateTagsGenerate.execAllTags(targetPath.toAbsolutePath().toString()); + + return targetPath.toString(); + } + + private FileDO getFileInfo(String fileId) { + return previewService.queryFileInfoByFileId(fileId); + } + + @Override + public Long generateNew(String fileId, TemplateExecDataModel data) throws Exception { + String inputPath = saveFileToLocalTmp(fileId); + String outputPath = TemplateReplaceExecutor.doReplace(inputPath, data); + FileDO fileInfo = getFileInfo(fileId); + File file = new File(outputPath); + byte[] content = Files.readAllBytes(file.toPath()); + String url = fileService.createFile(fileInfo.getName(), outputPath, content); + return 0L; } } diff --git a/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitService.java b/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitService.java index b29d611..fae64fe 100644 --- a/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitService.java +++ b/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitService.java @@ -9,9 +9,9 @@ import java.util.ArrayList; import java.util.List; public interface PdfSplitService { - List splitPdf(File sourceFile, String outputDir); + List splitPdf(File sourceFile, String outputDir) throws IOException; - void splitPdfByPages(File sourceFile, String outputDir, int startPage, int endPage); + void splitPdfByPages(File sourceFile, String outputDir, int startPage, int endPage) throws IOException; - void splitAllPages(File sourceFile, String outputDir); + void splitAllPages(File sourceFile, String outputDir) throws IOException; } diff --git a/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitServiceImpl.java b/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitServiceImpl.java index 8803d14..c1b9110 100644 --- a/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitServiceImpl.java +++ b/wmyun-module-system/wmyun-module-system-biz/src/main/java/com/wmyun/module/system/service/pdf/PdfSplitServiceImpl.java @@ -2,19 +2,23 @@ package com.wmyun.module.system.service.pdf; import com.wmyun.module.system.controller.admin.pdf.vo.PdfResultVO; import org.apache.pdfbox.pdmodel.PDDocument; +import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; + /** * @author zhouc * @date 2025/3/1 15:42 * @className PdfSplitServiceImpl * @description */ -public class PdfSplitServiceImpl { + +@Service +public class PdfSplitServiceImpl implements PdfSplitService{ public List splitPdf(File sourceFile, String outputDir) throws IOException { List results = new ArrayList<>(); try (PDDocument document = PDDocument.load(sourceFile)) {