diff --git a/dl-module-repair/pom.xml b/dl-module-repair/pom.xml index a6ee9701..c28df541 100644 --- a/dl-module-repair/pom.xml +++ b/dl-module-repair/pom.xml @@ -29,30 +29,8 @@ com.deepoove poi-tl - 1.12.2 + 1.10.0 - - io.minio - minio - 8.4.0 - - - cn.iocoder.boot - dl-module-knowledge - 2.1.0-jdk8-snapshot - compile - - - cn.iocoder.boot - yudao-module-infra-biz - 2.1.0-jdk8-snapshot - compile - - - org.springframework - spring-test - - 8 diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java index c3fae8bf..553e4a73 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/controller/admin/DlRepairTicketsController.java @@ -1,41 +1,27 @@ package cn.iocoder.yudao.module.tickets.controller.admin; -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.lang.Assert; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO; -import cn.iocoder.yudao.module.infra.framework.file.core.client.FileClient; -import cn.iocoder.yudao.module.infra.service.file.FileConfigService; -import cn.iocoder.yudao.module.infra.service.file.FileService; -import cn.iocoder.yudao.module.knowledge.constants.Result; -import cn.iocoder.yudao.module.knowledge.controller.requestdto.TOperationDocRequest; import cn.iocoder.yudao.module.tickets.entity.DlRepairTickets; import cn.iocoder.yudao.module.tickets.service.DlRepairTicketsService; -import cn.iocoder.yudao.module.tickets.tools.TOperaDocRequestUtil; import cn.iocoder.yudao.module.tickets.vo.CustomerAndCarVO; import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO; import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.tencentcloudapi.ess.v20201111.models.FileInfo; import io.swagger.v3.oas.annotations.Operation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; - -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * 维修工单表(DlRepairTickets)表控制层 + * * @author 小李 * @date 18:21 2024/9/13 -**/ + **/ @RestController @RequestMapping("/repair/tickets") public class DlRepairTicketsController { @@ -44,26 +30,19 @@ public class DlRepairTicketsController { */ @Resource private DlRepairTicketsService dlRepairTicketsService; - @Autowired - private TOperaDocRequestUtil tOperaDocRequestUtil; - @Autowired - private FileService fileService; - @Resource - private FileConfigService fileConfigService; - /** * 维修工单表 新增 * + * @param ticketsRespVO 新增对象 * @author 小李 * @date 11:33 2024/9/20 - * @param ticketsRespVO 新增对象 - **/ + **/ @PostMapping("/create") @Operation(summary = "维修工单表 新增") - public CommonResult createTicket(@RequestBody DlRepairTicketsRespVO ticketsRespVO){ + public CommonResult createTicket(@RequestBody DlRepairTicketsRespVO ticketsRespVO) { dlRepairTicketsService.createTickets(ticketsRespVO); return CommonResult.ok(); } @@ -71,17 +50,17 @@ public class DlRepairTicketsController { /** * 维修工单表 分页 * + * @param repairTicketsReqVO 查询对象 + * @param pageNo 页码 + * @param pageSize 条数 * @author 小李 * @date 20:51 2024/9/20 - * @param repairTicketsReqVO 查询对象 - * @param pageNo 页码 - * @param pageSize 条数 - **/ + **/ @GetMapping("/page") @Operation(summary = "维修工单表 分页") public CommonResult getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO, - @RequestParam(value = "pageNo", defaultValue = "1")Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "10")Integer pageSize){ + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNo, pageSize); return success(dlRepairTicketsService.getTicketsPage(repairTicketsReqVO, page)); } @@ -89,26 +68,26 @@ public class DlRepairTicketsController { /** * 获得一个工单的详细信息 * + * @param id 工单ID * @author 小李 * @date 16:05 2024/9/21 - * @param id 工单ID - **/ + **/ @GetMapping("/get") @Operation(summary = "查看一个工单的详细信息") - public CommonResult getTicketsById(@RequestParam("id") String id){ + public CommonResult getTicketsById(@RequestParam("id") String id) { return success(dlRepairTicketsService.getTicketsById(id)); } /** * 维修工单表 作废 * + * @param repairTicketsReqVO 工单对象 * @author 小李 * @date 19:46 2024/9/22 - * @param repairTicketsReqVO 工单对象 - **/ + **/ @PostMapping("/void") @Operation(summary = "维修工单表 作废") - public CommonResult setTicketsVoid(@RequestBody DlRepairTicketsReqVO repairTicketsReqVO){ + public CommonResult setTicketsVoid(@RequestBody DlRepairTicketsReqVO repairTicketsReqVO) { dlRepairTicketsService.setTicketsVoid(repairTicketsReqVO); return CommonResult.ok(); } @@ -116,49 +95,63 @@ public class DlRepairTicketsController { /** * 维修工单表 结算 * + * @param repairTicketsRespVO 工单 * @author 小李 * @date 8:50 2024/9/23 - * @param repairTicketsRespVO 工单 - **/ + **/ @PostMapping("/paid") @Operation(summary = "维修工单表 结算") - public CommonResult setTicketsPaid(@RequestBody DlRepairTicketsRespVO repairTicketsRespVO){ + public CommonResult setTicketsPaid(@RequestBody DlRepairTicketsRespVO repairTicketsRespVO) { dlRepairTicketsService.setTicketsPaid(repairTicketsRespVO); return CommonResult.ok(); } - /** - * 维修工单表 导出 - * - * @author lzt - * @date 2024年10月11日 - * @param file 导出文件 - */ - @PostMapping("/print") - @Operation(summary = "维修工单表 导出") - public ResponseEntity> printDocument(@RequestParam("file") MultipartFile file) { - if (file.isEmpty()) { - return ResponseEntity.badRequest().body(new Result<>(null, "文件不能为空")); - } +// /** +// * 维修工单表 导出 +// * +// * @param file 导出文件 +// * @author lzt +// * @date 2024年10月11日 +// */ +// @PostMapping("/print") +// @Operation(summary = "维修工单表 导出") +// public ResponseEntity> printDocument(@RequestParam("file") MultipartFile file) { +// if (file.isEmpty()) { +// return ResponseEntity.badRequest().body(new Result<>(null, "文件不能为空")); +// } +// +// try { +// FileDO fileInfo = fileService.createFileDetail(file.getOriginalFilename(), "/ticket", IoUtil.readBytes(file.getInputStream())); +// return ResponseEntity.ok(new Result<>(fileInfo, "文件上传成功")); +// } catch (Exception e) { +// return ResponseEntity.status(500).body(new Result<>(null, "文件上传失败: " + e.getMessage())); +// } +// } - try { - FileDO fileInfo = fileService.createFileDetail(file.getOriginalFilename(), "/ticket", IoUtil.readBytes(file.getInputStream())); - return ResponseEntity.ok(new Result<>(fileInfo, "文件上传成功")); - } catch (Exception e) { - return ResponseEntity.status(500).body(new Result<>(null, "文件上传失败: " + e.getMessage())); - } + /** + * 维修工单打印 + * + * @param response HttpServletResponse + * @param id 维修工单id + * @author PQZ + * @date 13:48 2024/10/12 + **/ + @GetMapping("/print/{id}") + @Operation(summary = "维修工单打印") + public void printDocument(HttpServletResponse response, @PathVariable String id) { + dlRepairTicketsService.print(response,id); } /** * 客户信息和车辆信息 新增、修改 * + * @param customerAndCarVO 用户信息和车辆信息 * @author 小李 * @date 9:25 2024/10/8 - * @param customerAndCarVO 用户信息和车辆信息 - **/ + **/ @PostMapping("/updateUserAndCar") @Operation(summary = "客户信息和车辆信息 新增、修改") - public CommonResult updateCustomerAndCar(@RequestBody CustomerAndCarVO customerAndCarVO){ + public CommonResult updateCustomerAndCar(@RequestBody CustomerAndCarVO customerAndCarVO) { dlRepairTicketsService.updateCustomerAndCar(customerAndCarVO); return CommonResult.ok(); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java index e1fd55fd..80bcefba 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/DlRepairTicketsService.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import javax.servlet.http.HttpServletResponse; + /** * 针对表【dl_repair_tickets(维修工单表)】的数据库操作Service * @@ -19,54 +21,64 @@ public interface DlRepairTicketsService extends IService { /** * 维修工单表 新增 * + * @param ticketsRespVO 新增对象 * @author 小李 * @date 11:33 2024/9/20 - * @param ticketsRespVO 新增对象 **/ void createTickets(DlRepairTicketsRespVO ticketsRespVO); /** * 维修工单表 分页 * + * @param repairTicketsReqVO 查询对象 * @author 小李 * @date 20:51 2024/9/20 - * @param repairTicketsReqVO 查询对象 **/ IPage getTicketsPage(DlRepairTicketsReqVO repairTicketsReqVO, Page page); /** * 获得一个工单的详细信息 * + * @param id 工单ID * @author 小李 * @date 16:05 2024/9/21 - * @param id 工单ID **/ DlRepairTicketsRespVO getTicketsById(String id); /** * 维修工单表 作废 * + * @param repairTicketsReqVO 工单对象 * @author 小李 * @date 19:46 2024/9/22 - * @param repairTicketsReqVO 工单对象 **/ void setTicketsVoid(DlRepairTicketsReqVO repairTicketsReqVO); /** * 维修工单表 结算 * + * @param repairTicketsRespVO 工单 * @author 小李 * @date 8:50 2024/9/23 - * @param repairTicketsRespVO 工单 **/ void setTicketsPaid(DlRepairTicketsRespVO repairTicketsRespVO); /** * 客户信息和车辆信息 新增、修改 * + * @param customerAndCarVO 用户信息和车辆信息 * @author 小李 * @date 9:25 2024/10/8 - * @param customerAndCarVO 用户信息和车辆信息 **/ void updateCustomerAndCar(CustomerAndCarVO customerAndCarVO); + + /** + * 打印工单 + * + * @param response HttpServletResponse + * @param id String + * @author PQZ + * @date 14:00 2024/10/12 + **/ + void print(HttpServletResponse response, String id); } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java index 5bdc8694..d909d286 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java @@ -32,6 +32,7 @@ import cn.iocoder.yudao.module.tickets.entity.DlRepairTitem; import cn.iocoder.yudao.module.tickets.mapper.DlRepairTicketsMapper; import cn.iocoder.yudao.module.tickets.service.DlRepairTicketsService; import cn.iocoder.yudao.module.tickets.service.DlRepairTitemService; +import cn.iocoder.yudao.module.tickets.tools.WordUtil; import cn.iocoder.yudao.module.tickets.vo.CustomerAndCarVO; import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO; import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsRespVO; @@ -41,13 +42,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.io.InputStream; import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; -import java.util.Optional; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -325,6 +331,34 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl params = new HashMap<>(); + params.put("jobNumber","123456789"); + String fileName = "结算单.docx"; + String tmpPath = "D:\\"+fileName; + try{ + InputStream inputStream = XWPFTemplate.class.getResourceAsStream("/templates/gdmb.docx"); + XWPFTemplate template = XWPFTemplate.compile(inputStream); + template.render(params); + FileOutputStream fos = new FileOutputStream(tmpPath); + template.write(fos); + fos.flush(); + template.close(); + WordUtil.down(response,tmpPath,fileName); + }catch (Exception e){ + e.printStackTrace(); + } + } } diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/TOperaDocRequestUtil.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/TOperaDocRequestUtil.java index cd7581c6..dbcda8fd 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/TOperaDocRequestUtil.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/TOperaDocRequestUtil.java @@ -1,96 +1,94 @@ -package cn.iocoder.yudao.module.tickets.tools; - -import cn.iocoder.yudao.module.infra.service.file.FileService; -import cn.iocoder.yudao.module.knowledge.constants.Result; -import cn.iocoder.yudao.module.tickets.controller.admin.DlRepairTicketsController; -import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; -import com.tencentcloudapi.ess.v20201111.models.FileInfo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.ResponseEntity; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.HashMap; - -import static com.fhs.core.trans.util.ConvertUtil.convert; - - -/** - * 工单导出工具类 - * @author lzt - * @date 9:27 2024年10月11日 - */ -@Component(value = "TOperaDocRequestUtil" ) -public class TOperaDocRequestUtil { - - @Resource - private FileService fileService; - @Value("${minio.bucketName:dev}") - private String bucketName; - - public TOperaDocRequestUtil() throws FileNotFoundException { - } - - - private static String TEMPLATE_PATH = "/templates/gdmb.docx"; - - @Autowired - private DlRepairTicketsController dlRepairTicketsController; - - public FileInfo export(DlRepairTicketsReqVO request) throws IOException { - String fileStr = TEMPLATE_PATH; - - if (fileStr != null) { - byte[] inputStream = fileService.downloadFile(bucketName, fileStr); - - // 数据循环填充 - LoopRowTableRenderPolicy loopRowTableRenderPolicy = new LoopRowTableRenderPolicy(); - Configure configure = Configure.builder().bind("czTable", loopRowTableRenderPolicy).build(); - - // word导出到本地 - MultipartFile convert = null; - if (fileStr.contains("gdmb.docx")) { - // 操作模板文件-数据填充 - XWPFTemplate template = XWPFTemplate.compile(String.valueOf(inputStream), configure).render( - new HashMap() {{ - // 填充数据 TODO - //put("requestData", request); - - }} - ); - ByteArrayOutputStream outputStreamWord = new ByteArrayOutputStream();; - template.writeAndClose(outputStreamWord); - //IConverter converter = LocalConverter.builder().build(); - byte[] bytes = outputStreamWord.toByteArray(); - ByteArrayInputStream inputStreamWord = new ByteArrayInputStream(bytes); - - ByteArrayOutputStream outputStreamPdf = new ByteArrayOutputStream(); - - //converter.convert(inputStreamWord).as(DocumentType.DOCX).to(outputStreamPdf).as(DocumentType.PDF).execute(); - byte[] bytesPdf = outputStreamPdf.toByteArray(); - ByteArrayInputStream inputStreamPdf = new ByteArrayInputStream(bytesPdf); - - // convert = new MultipartFile(fileStr.replace(".docx", ".pdf"), "application/pdf", inputStreamPdf.readAllBytes()); - convert = new MockMultipartFile("gdmb.pdf", bytes); - } - ResponseEntity> responseEntity = dlRepairTicketsController.printDocument(convert); - -// 获取 Result 对象 - Result fileupload = responseEntity.getBody(); - if (fileupload != null) { - return fileupload.getData(); - } - } - return null; - } -} +//package cn.iocoder.yudao.module.tickets.tools; +// +//import cn.iocoder.yudao.module.infra.service.file.FileService; +//import cn.iocoder.yudao.module.knowledge.constants.Result; +//import cn.iocoder.yudao.module.tickets.controller.admin.DlRepairTicketsController; +//import cn.iocoder.yudao.module.tickets.vo.DlRepairTicketsReqVO; +//import com.deepoove.poi.XWPFTemplate; +//import com.deepoove.poi.config.Configure; +//import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy; +//import com.tencentcloudapi.ess.v20201111.models.FileInfo; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.ResponseEntity; +//import org.springframework.mock.web.MockMultipartFile; +//import org.springframework.stereotype.Component; +//import org.springframework.web.multipart.MultipartFile; +// +//import javax.annotation.Resource; +//import java.io.ByteArrayInputStream; +//import java.io.ByteArrayOutputStream; +//import java.io.FileNotFoundException; +//import java.io.IOException; +//import java.util.HashMap; +// +// +///** +// * 工单导出工具类 +// * @author lzt +// * @date 9:27 2024年10月11日 +// */ +//@Component(value = "TOperaDocRequestUtil" ) +//public class TOperaDocRequestUtil { +// +// @Resource +// private FileService fileService; +// @Value("${minio.bucketName:dev}") +// private String bucketName; +// +// public TOperaDocRequestUtil() throws FileNotFoundException { +// } +// +// +// private static String TEMPLATE_PATH = "/templates/gdmb.docx"; +// +// @Autowired +// private DlRepairTicketsController dlRepairTicketsController; +// +// public FileInfo export(DlRepairTicketsReqVO request) throws IOException { +// String fileStr = TEMPLATE_PATH; +// +// if (fileStr != null) { +// byte[] inputStream = fileService.downloadFile(bucketName, fileStr); +// +// // 数据循环填充 +// LoopRowTableRenderPolicy loopRowTableRenderPolicy = new LoopRowTableRenderPolicy(); +// Configure configure = Configure.builder().bind("czTable", loopRowTableRenderPolicy).build(); +// +// // word导出到本地 +// MultipartFile convert = null; +// if (fileStr.contains("gdmb.docx")) { +// // 操作模板文件-数据填充 +// XWPFTemplate template = XWPFTemplate.compile(String.valueOf(inputStream), configure).render( +// new HashMap() {{ +// // 填充数据 TODO +// //put("requestData", request); +// +// }} +// ); +// ByteArrayOutputStream outputStreamWord = new ByteArrayOutputStream();; +// template.writeAndClose(outputStreamWord); +// //IConverter converter = LocalConverter.builder().build(); +// byte[] bytes = outputStreamWord.toByteArray(); +// ByteArrayInputStream inputStreamWord = new ByteArrayInputStream(bytes); +// +// ByteArrayOutputStream outputStreamPdf = new ByteArrayOutputStream(); +// +// //converter.convert(inputStreamWord).as(DocumentType.DOCX).to(outputStreamPdf).as(DocumentType.PDF).execute(); +// byte[] bytesPdf = outputStreamPdf.toByteArray(); +// ByteArrayInputStream inputStreamPdf = new ByteArrayInputStream(bytesPdf); +// +// // convert = new MultipartFile(fileStr.replace(".docx", ".pdf"), "application/pdf", inputStreamPdf.readAllBytes()); +// convert = new MockMultipartFile("gdmb.pdf", bytes); +// } +// ResponseEntity> responseEntity = dlRepairTicketsController.printDocument(convert); +// +// // 获取 Result 对象 +// Result fileupload = responseEntity.getBody(); +// if (fileupload != null) { +// return fileupload.getData(); +// } +// } +// return null; +// } +//} diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/WordUtil.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/WordUtil.java new file mode 100644 index 00000000..5bb579db --- /dev/null +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/tools/WordUtil.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.tickets.tools; + +import javax.servlet.http.HttpServletResponse; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.FileInputStream; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * POI-TL工具类 + * @author PQZ + * @date 13:49 2024/10/12 +**/ +public class WordUtil { + /**模版路径*/ + public static String TEMPLATE_PATH = "/templates/gdmb.docx"; + + public static void down(HttpServletResponse response, String filePath, String fileName) { + String encodeName = null; + try { + encodeName = encodeStr(fileName); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + response.addHeader("Access-Control-Allow-Origin", "*"); + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename"); + response.setHeader("Content-disposition", "attachment; filename=" + encodeName + ";" + "filename*=" + "utf-8''" + encodeName); + response.setHeader("download-filename", encodeName); + try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath)); + // 输出流 + BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());) { + byte[] buff = new byte[1024]; + int len = 0; + while ((len = bis.read(buff)) > 0) { + bos.write(buff, 0, len); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 编码工具方法 + */ + public static String encodeStr(String fileName) throws UnsupportedEncodingException { + return URLEncoder.encode(fileName,"UTF-8"); + } + +} diff --git a/yudao-module-infra/yudao-module-infra-biz/pom.xml b/yudao-module-infra/yudao-module-infra-biz/pom.xml index ada189a0..a12f078a 100644 --- a/yudao-module-infra/yudao-module-infra-biz/pom.xml +++ b/yudao-module-infra/yudao-module-infra-biz/pom.xml @@ -124,12 +124,6 @@ org.apache.tika tika-core - - com.aliyun.oss - aliyun-sdk-oss - 3.11.2 - compile - diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java index 98bcaaa0..cf40e74e 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileService.java @@ -5,10 +5,6 @@ import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileCreateReq import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePageReqVO; import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FilePresignedUrlRespVO; import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO; -import org.apache.tomcat.jni.FileInfo; -import org.springframework.web.multipart.MultipartFile; - -import javax.xml.ws.Response; /** * 文件 Service 接口 @@ -67,16 +63,4 @@ public interface FileService { */ FilePresignedUrlRespVO getFilePresignedUrl(String path) throws Exception; - /** - * 下载文件 - * - * @author lzt - * @date 2024年10月11日 - * @param bucketName 存储桶名称 - * @param fileName 文件名称 - * @return 文件下载响应 - */ - byte[] downloadFile(String bucketName, String fileName); - -// FileInfo uploadFile(MultipartFile file); } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java index a1d8d38e..54cf38ca 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java @@ -144,44 +144,4 @@ public class FileServiceImpl implements FileService { return BeanUtils.toBean(presignedObjectUrl, FilePresignedUrlRespVO.class, object -> object.setConfigId(fileClient.getId())); } - - @Override - @SneakyThrows - public byte[] downloadFile(String bucketName, String fileStr) { - // 获取文件存储客户端 - FileClient client = fileConfigService.getFileClient(Long.valueOf(bucketName)); - Assert.notNull(client, "客户端({}) 不能为空", bucketName); - - // 获取文件内容 - return client.getContent(fileStr); - } - -// @Override -// public FileInfo uploadFile(MultipartFile file) { -// String bucketName = "xxxxx"; // 存储桶名称 -// String fileName = file.getOriginalFilename(); -// -// try { -// // 上传文件到 OSS -// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, fileName, file.getInputStream()); -// ossClient.putObject(putObjectRequest); -// -// // 创建并返回 FileInfo 对象 -// FileInfo fileInfo = new FileInfo(); -// fileInfo.setFileName(fileName); -// fileInfo.setBucketName(bucketName); -// return fileInfo; -// -// } catch (IOException e) { -// e.printStackTrace(); -// throw new RuntimeException("文件上传到 OSS 失败: " + e.getMessage()); -// } finally { -// // 关闭 OSS 客户端 -// ossClient.shutdown(); -// } -// } - - - - } diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 444015e0..ed551dd6 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -237,6 +237,8 @@ yudao: - /admin-api/rescue/driverLogin - /admin-api/rescuePayApi/payNotify - /admin-api/payApi/payNotify + - /repair/tickets/print/** + - /admin-api/repair/tickets/print/** websocket: enable: true # websocket的开关 path: /infra/ws # 路径 @@ -298,6 +300,8 @@ yudao: - /admin-api/payApi/payNotify - /admin-api/base/notice/** - /app-api/** #小程序端接口,不区分租户 + - /repair/tickets/print/** + - /admin-api/repair/tickets/print/** ignore-tables: - system_tenant - system_tenant_package diff --git a/yudao-server/src/main/resources/templates/gdmb.docx b/yudao-server/src/main/resources/templates/gdmb.docx new file mode 100644 index 00000000..6d061efa Binary files /dev/null and b/yudao-server/src/main/resources/templates/gdmb.docx differ