|
@@ -0,0 +1,114 @@
|
|
|
+package cn.cslg.report.service.file;
|
|
|
+
|
|
|
+import cn.cslg.report.common.model.dto.FMSDeleteFileDTO;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import okhttp3.*;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.FileCopyUtils;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import static cn.hutool.core.io.FileUtil.getMimeType;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Okhttp调用FMS上传文件接口
|
|
|
+ * @Author xiexiang
|
|
|
+ * @Date 2023/8/10
|
|
|
+ */
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class FileManagerService {
|
|
|
+ @Value("${authorUrl}")
|
|
|
+ private String PCSUrl;
|
|
|
+ @Value("${OPSUrl}")
|
|
|
+ private String OPSUrl;
|
|
|
+ @Value("${PASUrl}")
|
|
|
+ private String PASUrl;
|
|
|
+ @Value("${RMSUrl}")
|
|
|
+ private String RMSUrl;
|
|
|
+ @Value("${FMSUrl}")
|
|
|
+ private String FMSUrl;
|
|
|
+ @Value("${FileSource}")
|
|
|
+ private Integer FileSource;
|
|
|
+ public String uploadFile(List<MultipartFile> multipartFiles) throws IOException {
|
|
|
+ List<File> files = new ArrayList<>();
|
|
|
+ for(MultipartFile multipartFile:multipartFiles){
|
|
|
+ File file = new File(multipartFile.getOriginalFilename());
|
|
|
+ FileCopyUtils.copy(multipartFile.getBytes(),file);
|
|
|
+ files.add(file);
|
|
|
+ }
|
|
|
+ MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
|
|
|
+ .setType(MultipartBody.FORM);
|
|
|
+ for(File file:files){
|
|
|
+ //根据文件名获取文件的MIME类型
|
|
|
+ String mimeType = getMimeType(file.getPath());
|
|
|
+ multipartBodyBuilder.addFormDataPart("files",file.getName(),RequestBody.create(MediaType.parse(mimeType), file));
|
|
|
+ }
|
|
|
+ RequestBody requestBody =multipartBodyBuilder
|
|
|
+ .addFormDataPart("sourceId", String.valueOf(FileSource))
|
|
|
+ .build();
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
|
|
|
+ .connectTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .writeTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .readTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .build();
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(FMSUrl + "/fileManager/uploadSystemFile")
|
|
|
+ .post(requestBody)
|
|
|
+ .build();
|
|
|
+ return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 调用文件系统查询接口
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public String getSystemFileFromFMS(List<Integer> fileIds) throws IOException {
|
|
|
+ String param = new Gson().toJson(fileIds);
|
|
|
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
|
|
|
+ .connectTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .writeTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .readTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .build();
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(FMSUrl + "/fileManager/getFileData")
|
|
|
+ .post(requestBody)
|
|
|
+ .build();
|
|
|
+ return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 调用文件系统删除接口
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ public String deleteFileFromFMS(List<Integer> ids) throws IOException {
|
|
|
+ FMSDeleteFileDTO fmsDeleteFileDTO =new FMSDeleteFileDTO();
|
|
|
+ fmsDeleteFileDTO.setIds(ids);
|
|
|
+ fmsDeleteFileDTO.setType(2);
|
|
|
+ String param = new Gson().toJson(fmsDeleteFileDTO);
|
|
|
+ RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
|
|
|
+ .connectTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .writeTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .readTimeout(60, TimeUnit.SECONDS)
|
|
|
+ .build();
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(FMSUrl + "/fileManager/deleteSystemFile")
|
|
|
+ .post(requestBody)
|
|
|
+ .build();
|
|
|
+ return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).string();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|