From 2c9047d1a5e6a9d0b902fc603d924bca10c9d2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 19 Jan 2026 10:46:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E6=8A=A5=E5=91=8A=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AF=B9=E6=9C=8D=E5=8A=A1=E6=9C=88=E6=8A=A5=E7=9A=84?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/request/FileSearch1Request.java | 2 +- .../gongfu/controller/FileController.java | 55 +++++++++++++++++-- .../gongfu/pojo/query/FileUploadQuery.java | 29 ++++++++++ 3 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/query/FileUploadQuery.java diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearch1Request.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearch1Request.java index 39dae663..4485a4ca 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearch1Request.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearch1Request.java @@ -11,7 +11,7 @@ public class FileSearch1Request extends PageRequest { private String key; /** - * 类型,0:派工单 + * 类型,0:派工单,1:服务月报 */ private Integer type; } diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/FileController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/FileController.java index d7c0f5d8..678a87d4 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/FileController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/FileController.java @@ -1,21 +1,30 @@ package com.nflg.mobilebroken.gongfu.controller; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.FileSearch1Request; +import com.nflg.mobilebroken.common.util.AdminUserUtil; +import com.nflg.mobilebroken.gongfu.pojo.query.FileUploadQuery; import com.nflg.mobilebroken.repository.entity.GongfuFile; +import com.nflg.mobilebroken.repository.service.IFileUploadRecordService; import com.nflg.mobilebroken.repository.service.IGongfuFileService; +import com.nflg.mobilebroken.starter.service.FileUploadService; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.apache.commons.io.FilenameUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Objects; @@ -27,14 +36,19 @@ import java.util.Objects; @RequestMapping("/file") public class FileController extends ControllerBase { + private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + @Resource private IGongfuFileService fileService; + @Resource + private FileUploadService fileUploadService; + /** * 文件搜索 */ @PostMapping("/search") - public ApiResult> search(@Valid @RequestBody FileSearch1Request request) { + public ApiResult> search(@RequestBody FileSearch1Request request) { return ApiResult.success( fileService.lambdaQuery() .eq(Objects.nonNull(request.getType()), GongfuFile::getType, request.getType()) @@ -43,6 +57,37 @@ public class FileController extends ControllerBase { ); } + /** + * 文件上传 + * @param type 类型,1:服务月报 + * @param fileName 文件名称 + * @param file 文件 + */ + @PostMapping("/upload") + public ApiResult upload(@RequestParam Integer type,@RequestParam String fileName,@RequestParam MultipartFile file) throws IOException { + String url = fileUploadService.upload(buildFilePath(getFileType(file.getOriginalFilename())), file); + fileService.save( + new GongfuFile() + .setType(type) + .setFileName(fileName) + .setFileSize(file.getSize()) + .setFileSuffix(FilenameUtils.getExtension(file.getOriginalFilename())) + .setFileUrl(url) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ); + return ApiResult.success(); + } + + private String buildFilePath(String fileType) { + return StrUtil.format("gongfu/{}/{}/{}/{}{}", LocalDateTime.now().format(FORMATTER), AdminUserUtil.getUserId() + , RandomUtil.randomString(4), IdUtil.fastUUID(), fileType); + } + + private String getFileType(String fileName) { + return "." + FilenameUtils.getExtension(fileName).toLowerCase(); + } + /** * 文件删除 */ diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/query/FileUploadQuery.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/query/FileUploadQuery.java new file mode 100644 index 00000000..f86bdabb --- /dev/null +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/query/FileUploadQuery.java @@ -0,0 +1,29 @@ +package com.nflg.mobilebroken.gongfu.pojo.query; + +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class FileUploadQuery { + + /** + * 类型,1:服务月报 + */ + @NotNull + private Integer type; + + /** + * 文件名称 + */ + @NotBlank + private String fileName; + + /** + * 文件 + */ + @NotNull + private MultipartFile file; +}