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; +}