Browse Source

计量推送

huangtf 1 year ago
parent
commit
3cebd700f9

+ 87 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveMeasurementController.java

@@ -3,7 +3,14 @@ package org.springblade.archive.controller;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
 import org.springblade.archive.service.IArchiveAutoPdfService;
 import org.springblade.archive.service.IArchiveAutoPdfService;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.feign.ArchiveFileClient;
@@ -14,13 +21,22 @@ import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.CommonFileClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
-import org.springframework.http.HttpStatus;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.*;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 
 
+import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
+import java.net.URI;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -107,4 +123,74 @@ public class ArchiveMeasurementController {
         }
         }
         return R.success(ResultCode.SUCCESS);
         return R.success(ResultCode.SUCCESS);
     }
     }
+
+    @PostMapping("/test")
+    @ApiOperation(value = "上传文件", notes = "上传文件")
+    public R test() {
+        String projectName ="重庆试验项目";
+        String contractName ="第一合同段";
+        String periodName ="第三期";
+        String fileName ="交工证书";
+        String fileTime ="2023.03.11";
+        String dutyUser ="设计单位";
+        String fileUrl ="https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20230908/8287a3eee944e8fd8dabedeeed961432.pdf";
+        String dstUrl  ="http://127.0.0.1:8090/blade-archive/archiveMeasurement/upFile";
+        sendFileToArchive(projectName,contractName,periodName,fileName,fileTime,dutyUser,fileUrl,dstUrl);
+        return R.success(ResultCode.SUCCESS);
+    }
+
+
+
+    public void sendFileToArchive(String projectName, String contractName, String periodName, String fileName,
+                                  String fileTime, String dutyUser, String fileUrl, String dstUrl) {
+        try {
+            // 使用 RestTemplate 下载文件
+            RestTemplate restTemplate = new RestTemplate();
+            ResponseEntity<byte[]> response = restTemplate.getForEntity(fileUrl, byte[].class);
+            if (response.getStatusCode() == HttpStatus.OK) {
+                byte[] fileBytes = response.getBody();
+
+                // 将下载的文件保存到临时文件
+                Path tempFilePath = Files.createTempFile("temp-", "-" + fileName);
+                Files.write(tempFilePath, fileBytes, StandardOpenOption.CREATE);
+
+                // 创建请求参数
+                MultiValueMap<String, Object> requestParams = new LinkedMultiValueMap<>();
+                requestParams.add("projectName", projectName);
+                requestParams.add("contractName", contractName);
+                requestParams.add("periodName", periodName);
+                requestParams.add("fileName", fileName);
+                requestParams.add("fileTime", fileTime);
+                requestParams.add("dutyUser", dutyUser);
+                requestParams.add("fileData", new FileSystemResource(tempFilePath.toFile()));
+
+                // 发起 POST 请求
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+                HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(requestParams, headers);
+                RestTemplate postRestTemplate = new RestTemplate();
+                ResponseEntity<String> postResponse = postRestTemplate.exchange(
+                        URI.create(dstUrl),
+                        HttpMethod.POST,
+                        requestEntity,
+                        String.class
+                );
+
+                // 处理响应结果
+                if (postResponse.getStatusCode() == HttpStatus.OK) {
+                    System.out.println("File sent to archive successfully.");
+                } else {
+                    System.out.println("Failed to send file to archive. Response: " + postResponse.getBody());
+                }
+
+                // 删除临时文件
+                Files.delete(tempFilePath);
+            } else {
+                System.out.println("Failed to download file from the provided URL: " + fileUrl);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
 }
 }