package cn.cslg.pas.service; import cn.cslg.pas.common.dto.FMSDeleteFileDTO; import com.google.gson.Gson; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import org.apache.commons.io.FileUtils; 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("${FMSUrl}") private String FMSUrl; @Value("${FileSource}") private Integer FileSource; /** * 调用文件系统上传文件接口 * * @param multipartFiles 文件 */ // public String uploadFile(List multipartFiles) throws IOException { // List 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(); // Response response = null; // response = okHttpClient.newCall(request).execute(); // // 最后记得删除临时文件 // for (File file : files) { // FileUtils.deleteQuietly(file); // } // return Objects.requireNonNull(response.body()).string(); // } // // /** // * 调用文件系统取出文件接口(获得文件流) // * // * @param fieldId 文件id // */ // public byte[] downloadSystemFileFromFMS(Integer fieldId) throws IOException { // 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/downloadSystemFile?fileId=" + fieldId) // .get() // .build(); // return Objects.requireNonNull(okHttpClient.newCall(request).execute().body()).bytes(); // } // // /** // * 调用文件系统获取文件信息接口 // * // * @param fileIds 文件ids // */ // public String getSystemFileFromFMS(List 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(); // } // // /** // * 调用文件系统删除文件接口 // * // * @param ids 需要删除的文件ids // */ // public String deleteFileFromFMS(List 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(); // } }