Commit 1aa611bd by zhangxingmin

push

parent d92dcb7f
......@@ -5,6 +5,7 @@ import com.yd.oss.api.service.ApiExcelService;
import com.yd.oss.feign.client.ApiExcelFeignClient;
import com.yd.oss.feign.dto.ExportResult;
import com.yd.oss.feign.request.ApiExportRequest;
import com.yd.oss.feign.request.ApiOssExcelParseRequest;
import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest;
import com.yd.oss.feign.response.ApiOssExcelParseResponse;
import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
......@@ -46,7 +47,7 @@ public class ApiExcelController implements ApiExcelFeignClient {
* @return
*/
@Override
public Result<ApiOssExcelParseResponse> parse(MultipartFile file, String[] sheetClassNames) {
public Result<ApiOssExcelParseResponse> parse(MultipartFile file, String sheetClassNames) {
return apiExcelService.parse(file,sheetClassNames);
}
......
......@@ -3,6 +3,7 @@ package com.yd.oss.api.service;
import com.yd.common.result.Result;
import com.yd.oss.feign.dto.ExportParam;
import com.yd.oss.feign.dto.ExportResult;
import com.yd.oss.feign.request.ApiOssExcelParseRequest;
import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest;
import com.yd.oss.feign.response.ApiOssExcelParseResponse;
import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
......@@ -15,7 +16,7 @@ public interface ApiExcelService {
Result<ApiOssExportAppointmentExcelResponse> exportAppointment(ApiOssExportAppointmentExcelRequest request);
Result<ApiOssExcelParseResponse> parse(MultipartFile file, String[] sheetClassNames);
Result<ApiOssExcelParseResponse> parse(MultipartFile file, String sheetClassNames);
Result<ExportResult> export(List<?> dataList, ExportParam exportParam, Class<?> entityClass);
......
......@@ -3,6 +3,7 @@ package com.yd.oss.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.oss.api.service.ApiExcelService;
import com.yd.oss.feign.request.ApiOssExcelParseRequest;
import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest;
import com.yd.oss.feign.response.ApiOssExcelParseResponse;
import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
......@@ -63,13 +64,14 @@ public class ApiExcelServiceImpl implements ApiExcelService {
*/
@Override
public Result<ApiOssExcelParseResponse> parse(MultipartFile file,
String[] sheetClassNames) {
String sheetClassNames) {
ApiOssExcelParseResponse response = new ApiOssExcelParseResponse();
try {
String[] strings = sheetClassNames.split(",");
// 将类名字符串转换为Class对象
Class<?>[] sheetClasses = new Class<?>[sheetClassNames.length];
for (int i = 0; i < sheetClassNames.length; i++) {
sheetClasses[i] = Class.forName(sheetClassNames[i]);
Class<?>[] sheetClasses = new Class<?>[strings.length];
for (int i = 0; i < strings.length; i++) {
sheetClasses[i] = Class.forName(strings[i]);
}
// 解析Excel
......
......@@ -26,5 +26,10 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.yd</groupId>
<artifactId>yd-csf-feign</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
......@@ -4,6 +4,7 @@ import com.yd.common.result.Result;
import com.yd.oss.feign.dto.ExportResult;
import com.yd.oss.feign.fallback.ApiExcelFeignFallbackFactory;
import com.yd.oss.feign.request.ApiExportRequest;
import com.yd.oss.feign.request.ApiOssExcelParseRequest;
import com.yd.oss.feign.request.ApiOssExportAppointmentExcelRequest;
import com.yd.oss.feign.response.ApiOssExcelParseResponse;
import com.yd.oss.feign.response.ApiOssExportAppointmentExcelResponse;
......@@ -39,7 +40,7 @@ public interface ApiExcelFeignClient {
*/
@PostMapping(value = "/parse-excel", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<ApiOssExcelParseResponse> parse(@RequestPart("file") MultipartFile file,
@RequestPart("sheetClassNames") String[] sheetClassNames);
@RequestParam(value = "sheetClassNames", required = false) String sheetClassNames);
/**
* 导出excel(通用)
......
......@@ -29,10 +29,11 @@ public class ApiExcelFeignFallbackFactory implements FallbackFactory<ApiExcelFei
}
@Override
public Result<ApiOssExcelParseResponse> parse(MultipartFile file, String[] sheetClassNames) {
public Result<ApiOssExcelParseResponse> parse(MultipartFile file, String sheetClassNames) {
return null;
}
@Override
public Result<ExportResult> export(ApiExportRequest request) {
return null;
......
......@@ -32,18 +32,40 @@ public class PdfUtil {
* @param wordFile word源文件
*/
public static void linuxWordToPdf(File pdfFile, File wordFile) {
// 获取word文件的绝对路径
String sourcePath = wordFile.getAbsolutePath();// 获取pdf文件存放文件夹的绝对路径
String sourcePath = wordFile.getAbsolutePath();
String outDir = pdfFile.getAbsolutePath().substring(0, pdfFile.getAbsolutePath().lastIndexOf(File.separator));
// 构建LibreOffice的命令行工具命令
String command = "libreoffice --invisible --convert-to pdf --outdir " + outDir + " " + sourcePath;
log.info(command);
// 执行转换命令
try {
executeLinuxCmd(command);
} catch (Exception e) {
log.error("linuxWordToPdf linux环境word转换为pdf时出现异常:", e);
// 使用绝对路径尝试不同的命令
String[] commands = {
"/usr/bin/libreoffice --invisible --convert-to pdf --outdir " + outDir + " " + sourcePath,
"/usr/bin/soffice --invisible --convert-to pdf --outdir " + outDir + " " + sourcePath,
"/usr/lib64/libreoffice/program/soffice --invisible --convert-to pdf --outdir " + outDir + " " + sourcePath
};
boolean success = false;
Exception lastException = null;
for (String command : commands) {
try {
log.info("尝试命令: " + command);
executeLinuxCmd(command);
// 检查PDF文件是否生成
if (pdfFile.exists() && pdfFile.length() > 0) {
log.info("PDF转换成功,使用命令: " + command);
success = true;
break;
} else {
log.warn("命令执行成功但未生成PDF文件: " + command);
}
} catch (Exception e) {
lastException = e;
log.warn("命令执行失败: " + command + ", 错误: " + e.getMessage());
}
}
if (!success) {
throw new RuntimeException("所有LibreOffice转换命令都失败了", lastException);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment