From 54bbf0b9b31cb9136e0bf8eb5cfa58a097a536ad Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 5 Oct 2023 12:05:16 +0800 Subject: [PATCH] =?UTF-8?q?BUGFIX:=E6=A8=A1=E7=89=B9;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/python/vo/ModelPathObject.java | 8 +++ .../impl/CollectionElementServiceImpl.java | 5 +- .../da/service/impl/LibraryServiceImpl.java | 70 +++++++++++++++++-- 3 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/ai/da/python/vo/ModelPathObject.java diff --git a/src/main/java/com/ai/da/python/vo/ModelPathObject.java b/src/main/java/com/ai/da/python/vo/ModelPathObject.java new file mode 100644 index 00000000..d63e10e2 --- /dev/null +++ b/src/main/java/com/ai/da/python/vo/ModelPathObject.java @@ -0,0 +1,8 @@ +package com.ai.da.python.vo; + +import lombok.Data; + +@Data +public class ModelPathObject { + private String model_path; +} diff --git a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java index 6cf6edf9..6b0e4ab8 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -458,7 +458,7 @@ public class CollectionElementServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); @@ -468,12 +468,11 @@ public class CollectionElementServiceImpl extends ServiceImpl impl default: throw new BusinessException("unknown level1_type"); } - String filePath = minioUtil.upload(bucketName, path, libraryUploadDTO.getFile()); //保存element元素 if (libraryUploadDTO.getModelType().equals(ModelType.LIBRARY.getValue())) { - Library library = resolveData(libraryUploadDTO, userInfo, filePath); + String filePath = minioUtil.upload(bucketName, path, libraryUploadDTO.getFile()); + String newFilePath = bucketName + "/" + processMannequins(filePath); + Library library = resolveData(libraryUploadDTO, userInfo, newFilePath); LibraryUpdateVo libraryUpdateVo = CopyUtil.copyObject(library, LibraryUpdateVo.class); libraryUpdateVo.setMinIOPath(libraryUpdateVo.getUrl()); - libraryUpdateVo.setUrl(minioUtil.getPresignedUrl(filePath, 480)); + libraryUpdateVo.setUrl(minioUtil.getPresignedUrl(newFilePath, 480)); return libraryUpdateVo; }else if (libraryUploadDTO.getModelType().equals(ModelType.SYSTEM.getValue())) { - Library library = resolveData(libraryUploadDTO, userInfo, filePath); + bucketName = "aida-sys-image"; + path = "models/" + libraryUploadDTO.getModelSex(); + String filePath = minioUtil.upload(bucketName, path, libraryUploadDTO.getFile()); + String newFilePath = bucketName + "/" + processMannequins(filePath); + Library library = resolveData(libraryUploadDTO, userInfo, newFilePath); LibraryUpdateVo libraryUpdateVo = CopyUtil.copyObject(library, LibraryUpdateVo.class); libraryUpdateVo.setMinIOPath(libraryUpdateVo.getUrl()); - libraryUpdateVo.setUrl(minioUtil.getPresignedUrl(filePath, 480)); + libraryUpdateVo.setUrl(minioUtil.getPresignedUrl(newFilePath, 480)); return libraryUpdateVo; } return null; } + private String processMannequins(String filePath) { + ModelPathObject modelPathObject = new ModelPathObject(); + modelPathObject.setModel_path(filePath); + OkHttpClient client = new OkHttpClient().newBuilder() + .connectTimeout(30, TimeUnit.SECONDS) + .pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒) + .readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒) + .writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒) + .build(); + MediaType mediaType = MediaType.parse("application/json"); + //关闭FastJson的引用检测 防止出现$ref 现象 + String param = JSON.toJSONString(modelPathObject, SerializerFeature.DisableCircularReferenceDetect); + log.info("design请求python 参数:####{}", param); + RequestBody body = RequestBody.create(mediaType, param); + Request request = new Request.Builder() + .url("http://18.167.251.121:9991/api/model_process") +// .url(accessPythonIp + ":10200/aifda/api/v1.0/generate") + .method("POST", body) +// .addHeader("Authorization", "Basic YWlkbGFiOjEyMw==") + .addHeader("Content-Type", "application/json") + .build(); + Response response = null; + try { + response = client.newCall(request).execute(); + } catch (IOException ioException) { + log.error("PythonService##design异常###{}", ExceptionUtil.getThrowableList(ioException)); + } + //去除限流 +// AccessLimitUtils.validateOut("design"); + if (Objects.isNull(response)) { + log.error("PythonService##design异常###{}", "response or body is empty!"); + throw new BusinessException("system error!"); + } + if (response.isSuccessful()) { + try { + String responseBody = response.body().string(); + JSONObject responseObject = JSON.parseObject(responseBody); + String newMinioPath = responseObject.getString("data"); + return newMinioPath; + }catch (IOException e) { + throw new RuntimeException(e); + } + } + //生成失败 + throw new BusinessException("generate design exception!"); + } + private Library resolveData(LibraryUploadDTO uploadDTO, AuthPrincipalVo userInfo, String filePath) { if (uploadDTO.getModelType().equals(ModelType.LIBRARY.getValue())) { Library library = CopyUtil.copyObject(uploadDTO, Library.class);