From c316a76c664a54cb2a941e12003d29c40737a94e Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Fri, 13 Dec 2024 17:09:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=88=86=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/jiashi/FileUploader.java | 46 ++++++++--------- .../controller/LianZhongSyncController.java | 51 +++++++++++++++---- .../com/jiashi/service/UpdateService.java | 51 +++++++++++++++---- 3 files changed, 105 insertions(+), 43 deletions(-) diff --git a/src/main/java/com/jiashi/FileUploader.java b/src/main/java/com/jiashi/FileUploader.java index d8d9fb1..a292392 100644 --- a/src/main/java/com/jiashi/FileUploader.java +++ b/src/main/java/com/jiashi/FileUploader.java @@ -54,29 +54,29 @@ public class FileUploader { folder.delete(); } - public static void main(String[] args) throws IOException { - List files = new ArrayList<>(); - files.add(new File("C:\\jiahsi-saomiao\\413425_刘燊杨_20221009_004624\\16763947060057863381.jpg")); -// files.add(new File("C:\\jiahsi-saomiao\\413425_刘燊杨_20221009_004624\\16763947060420811242.jpg")); - - - // 额外的表单字段参数 - List params = new ArrayList<>(); - params.add(new FormField("uploadFileParams", "[ {\"inpatientNo\":\"35132331\", \"admiss_id\":\"12312342342312\",\"admiss_times\":\"1\",\"disDate\":\"2020-07-30 00:00:00.000\", \"fileTitle\":\"16763947060057863381.jpg\", \"uploadFileName\":\"16763947060057863381.jpg\", \"assortId\":\"078F7675CB0048EDBE586D59831C57B0\" ,\n" + - "\"patientId\":\"12323432412312\",\n" + - "\"name\":\"长三\",\n" + - "\"admissDate\":\"2022-02-01\",\n" + - "\"sex\":\"男\"\n" + - "}\n" + - "]")); - - // 上传URL - String uploadUrl = "http://192.168.16.116:9511/fileUploadJpg"; - - // 执行批量上传 - CommonResult commonResult = uploadFilesWithParams(files, uploadUrl, params); - System.out.println(new Gson().toJson(commonResult)); - } +// public static void main(String[] args) throws IOException { +// List files = new ArrayList<>(); +// files.add(new File("C:\\jiahsi-saomiao\\413425_刘燊杨_20221009_004624\\16763947060057863381.jpg")); +//// files.add(new File("C:\\jiahsi-saomiao\\413425_刘燊杨_20221009_004624\\16763947060420811242.jpg")); +// +// +// // 额外的表单字段参数 +// List params = new ArrayList<>(); +// params.add(new FormField("uploadFileParams", "[ {\"inpatientNo\":\"35132331\", \"admiss_id\":\"12312342342312\",\"admiss_times\":\"1\",\"disDate\":\"2020-07-30 00:00:00.000\", \"fileTitle\":\"16763947060057863381.jpg\", \"uploadFileName\":\"16763947060057863381.jpg\", \"assortId\":\"078F7675CB0048EDBE586D59831C57B0\" ,\n" + +// "\"patientId\":\"12323432412312\",\n" + +// "\"name\":\"长三\",\n" + +// "\"admissDate\":\"2022-02-01\",\n" + +// "\"sex\":\"男\"\n" + +// "}\n" + +// "]")); +// +// // 上传URL +// String uploadUrl = "http://192.168.16.116:9511/fileUploadJpg"; +// +// // 执行批量上传 +// CommonResult commonResult = uploadFilesWithParams(files, uploadUrl, params); +// System.out.println(new Gson().toJson(commonResult)); +// } } diff --git a/src/main/java/com/jiashi/controller/LianZhongSyncController.java b/src/main/java/com/jiashi/controller/LianZhongSyncController.java index bc2105c..1be1d90 100644 --- a/src/main/java/com/jiashi/controller/LianZhongSyncController.java +++ b/src/main/java/com/jiashi/controller/LianZhongSyncController.java @@ -8,15 +8,12 @@ import com.jiashi.service.CardInfo; import com.jiashi.service.FormField; import com.jiashi.service.Picture; import com.jiashi.service.UploadInfo; -import com.sun.xml.internal.ws.util.CompletedFuture; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -27,8 +24,11 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.concurrent.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @author YongBin Wen @@ -268,15 +268,45 @@ public class LianZhongSyncController { } - // 额外的表单字段参数 - List params = new ArrayList<>(); - String s = new Gson().toJson(uploadInfos); - params.add(new FormField("uploadFileParams", s)); - log.info("请求参数:" + cardInfo.getPatno()); + Map uploadInfosMap = uploadInfos.stream().collect(Collectors.toMap(UploadInfo::getUploadFileName, Function.identity())); + + boolean success = true; // 上传 - CommonResult commonResult = FileUploader.uploadFilesWithParams(files, "http://192.168.161.102:9511/fileUploadJpg", params); - if (commonResult.getCode() == 0) { + int totalSize = files.size(); + int batchSize = 500; + if (totalSize > batchSize) { + for (int i = 0; i < totalSize; i += batchSize) { + ArrayList batch = new ArrayList<>(); + List uploadInfoParams = new ArrayList<>(); + // 计算当前批次的结束索引 + int end = Math.min(i + batchSize, totalSize); + for (int j = i; j < end; j++) { + batch.add(files.get(j)); + uploadInfoParams.add(uploadInfosMap.get(files.get(j).getName())); + } + // 额外的表单字段参数 + List params = new ArrayList<>(); + String s = new Gson().toJson(uploadInfoParams); + params.add(new FormField("uploadFileParams", s)); + log.info("请求参数:" + cardInfo.getPatno()); + CommonResult commonResult = FileUploader.uploadFilesWithParams(batch, "http://192.168.161.102:9511/batchFileUploadJpg", params); + boolean res = commonResult.getCode() == 0; + success = success && res; + } + } else { + // 额外的表单字段参数 + List params = new ArrayList<>(); + String s = new Gson().toJson(uploadInfos); + params.add(new FormField("uploadFileParams", s)); + log.info("请求参数:" + cardInfo.getPatno()); + CommonResult commonResult = FileUploader.uploadFilesWithParams(files, "http://192.168.161.102:9511/fileUploadJpg", params); + success = commonResult.getCode() == 0; + } + + + + if (success) { dataQuery.updateBatchState(cardInfo, 3); } @@ -295,4 +325,5 @@ public class LianZhongSyncController { } + } diff --git a/src/main/java/com/jiashi/service/UpdateService.java b/src/main/java/com/jiashi/service/UpdateService.java index 0a63773..2153a30 100644 --- a/src/main/java/com/jiashi/service/UpdateService.java +++ b/src/main/java/com/jiashi/service/UpdateService.java @@ -12,10 +12,13 @@ import javax.annotation.PostConstruct; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.function.Function; +import java.util.stream.Collectors; @Component @Slf4j @@ -122,21 +125,49 @@ public class UpdateService { FileUploader.deleteFolder(directory); return; } - - // 额外的表单字段参数 - List params = new ArrayList<>(); - String s = new Gson().toJson(uploadInfos); - params.add(new FormField("uploadFileParams", s)); - log.info("请求参数:"+cardInfo.getPatno()); - // 上传 try { - CommonResult commonResult = FileUploader.uploadFilesWithParams(files, "http://192.168.161.102:9511/fileUploadJpg", params); - if(commonResult.getCode()==0){ + + Map uploadInfosMap = uploadInfos.stream().collect(Collectors.toMap(UploadInfo::getUploadFileName, Function.identity())); + + + boolean success = true; + // 上传 + int totalSize = files.size(); + int batchSize = 500; + if (totalSize > batchSize) { + for (int i = 0; i < totalSize; i += batchSize) { + ArrayList batch = new ArrayList<>(); + List uploadInfoParams = new ArrayList<>(); + // 计算当前批次的结束索引 + int end = Math.min(i + batchSize, totalSize); + for (int j = i; j < end; j++) { + batch.add(files.get(j)); + uploadInfoParams.add(uploadInfosMap.get(files.get(j).getName())); + } + // 额外的表单字段参数 + List params = new ArrayList<>(); + String s = new Gson().toJson(uploadInfoParams); + params.add(new FormField("uploadFileParams", s)); + log.info("请求参数:" + cardInfo.getPatno()); + CommonResult commonResult = FileUploader.uploadFilesWithParams(batch, "http://192.168.161.102:9511/batchFileUploadJpg", params); + boolean res = commonResult.getCode() == 0; + success = success && res; + } + } else { + // 额外的表单字段参数 + List params = new ArrayList<>(); + String s = new Gson().toJson(uploadInfos); + params.add(new FormField("uploadFileParams", s)); + log.info("请求参数:" + cardInfo.getPatno()); + CommonResult commonResult = FileUploader.uploadFilesWithParams(files, "http://192.168.161.102:9511/fileUploadJpg", params); + success = commonResult.getCode() == 0; + } + + if(success){ dataQuery.updateBatchState(cardInfo,3); }else{ dataQuery.updateBatchState(cardInfo,4); - log.error(commonResult.getMsg()); } } catch (Exception e) { dataQuery.updateBatchState(cardInfo,4);