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 1/2] =?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); From 907184d2eb8609e153ac1336473f587e48babf06 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 5 Oct 2023 13:37:42 +0800 Subject: [PATCH 2/2] =?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 --- .../ai/da/controller/DesignController.java | 6 ++ .../java/com/ai/da/mapper/entity/SysFile.java | 4 ++ .../ai/da/model/vo/DesignCollectionVO.java | 2 + .../java/com/ai/da/model/vo/SysFileVO.java | 4 ++ .../java/com/ai/da/python/PythonService.java | 2 +- .../com/ai/da/python/vo/ProcessIdObject.java | 8 +++ .../java/com/ai/da/service/DesignService.java | 2 + .../impl/CollectionElementServiceImpl.java | 2 +- .../ai/da/service/impl/DesignServiceImpl.java | 64 +++++++++++++++++-- .../da/service/impl/LibraryServiceImpl.java | 2 + 10 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/ai/da/python/vo/ProcessIdObject.java diff --git a/src/main/java/com/ai/da/controller/DesignController.java b/src/main/java/com/ai/da/controller/DesignController.java index ac1d25bd..9b365fd9 100644 --- a/src/main/java/com/ai/da/controller/DesignController.java +++ b/src/main/java/com/ai/da/controller/DesignController.java @@ -31,6 +31,12 @@ public class DesignController { return Response.success(designService.designCollection(designDTO)); } + @ApiOperation(value = "design进度条") + @GetMapping("/designProcess") + public Response designProcess(@RequestParam("processId") String processId) { + return Response.success(designService.designProcess(processId)); + } + @ApiOperation(value = "重新设计 Collection") @PostMapping("/reDesignCollection") public Response reDesignCollection(@Valid @RequestBody ReDesignCollectionDTO reDesignDTO) { diff --git a/src/main/java/com/ai/da/mapper/entity/SysFile.java b/src/main/java/com/ai/da/mapper/entity/SysFile.java index 5072ab10..0790bcfd 100644 --- a/src/main/java/com/ai/da/mapper/entity/SysFile.java +++ b/src/main/java/com/ai/da/mapper/entity/SysFile.java @@ -51,6 +51,10 @@ public class SysFile implements Serializable { * */ private String md5; + + private Integer high; + + private Integer width; /** * 路径 绝对路径 * diff --git a/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java b/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java index b23f2c98..8ad6e7a4 100644 --- a/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java +++ b/src/main/java/com/ai/da/model/vo/DesignCollectionVO.java @@ -21,6 +21,8 @@ public class DesignCollectionVO { @ApiModelProperty("design生成的图片 数组") private List designCollectionItems; + private String processId; + public DesignCollectionVO() { } } diff --git a/src/main/java/com/ai/da/model/vo/SysFileVO.java b/src/main/java/com/ai/da/model/vo/SysFileVO.java index 3f99d2c6..7c1851c6 100644 --- a/src/main/java/com/ai/da/model/vo/SysFileVO.java +++ b/src/main/java/com/ai/da/model/vo/SysFileVO.java @@ -34,4 +34,8 @@ public class SysFileVO implements Serializable { */ private String md5; + private Integer high; + + private Integer width; + } diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index fcfc32c1..009ea9ee 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -191,7 +191,7 @@ public class PythonService { DesignPythonObjects designPythonObjects = new DesignPythonObjects(); List objects = Lists.newArrayList(); designPythonObjects.setObjects(objects); - designPythonObjects.setProcess_id("1234"); + designPythonObjects.setProcess_id(UUID.randomUUID().toString()); long pinPrintNum = calculateDesignPinPrintNum(elementVO.getPrintBoardElements()); long noPinPrintNum = calculateDesignNoPinPrintNum(elementVO.getPrintBoardElements()); //没有print的 diff --git a/src/main/java/com/ai/da/python/vo/ProcessIdObject.java b/src/main/java/com/ai/da/python/vo/ProcessIdObject.java new file mode 100644 index 00000000..98b0c7f6 --- /dev/null +++ b/src/main/java/com/ai/da/python/vo/ProcessIdObject.java @@ -0,0 +1,8 @@ +package com.ai.da.python.vo; + +import lombok.Data; + +@Data +public class ProcessIdObject { + private String process_id; +} diff --git a/src/main/java/com/ai/da/service/DesignService.java b/src/main/java/com/ai/da/service/DesignService.java index 282548d0..3f611b30 100644 --- a/src/main/java/com/ai/da/service/DesignService.java +++ b/src/main/java/com/ai/da/service/DesignService.java @@ -76,4 +76,6 @@ public interface DesignService extends IService { * @return */ DesignItemDetailVO detail(Long designPythonOutfitId,Long designItemId); + + Integer designProcess(String processId); } 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 6b0e4ab8..d2883654 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -468,7 +468,7 @@ public class CollectionElementServiceImpl extends ServiceImpl impleme } } } - + response.setProcessId(pythonObjects.getProcess_id()); return response; } @@ -627,9 +629,9 @@ public class DesignServiceImpl extends ServiceImpl impleme Assert.notNull(design, "design does not exist!"); List designItems = designItemService.getByDesignId(designId); if (CollectionUtils.isEmpty(designItems)) { - return new DesignCollectionVO(designId, design.getCollectionId(), null); + return new DesignCollectionVO(designId, design.getCollectionId(), null, null); } - return new DesignCollectionVO(designId, design.getCollectionId(), coverDesignItemToVO(designItems)); + return new DesignCollectionVO(designId, design.getCollectionId(), coverDesignItemToVO(designItems), null); } private List coverDesignItemToVO(List designItems) { @@ -857,6 +859,54 @@ public class DesignServiceImpl extends ServiceImpl impleme editResponseColor(designItemDetails,response)); } + @Override + public Integer designProcess(String processId) { + ProcessIdObject object = new ProcessIdObject(); + object.setProcess_id(processId); + 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(object, 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 num = responseObject.getString("data"); + return Integer.valueOf(num); + }catch (IOException e) { + throw new RuntimeException(e); + } + } + //生成失败 + throw new BusinessException("generate design exception!"); + } + private String converTypeToLevel1(String type) { if (StringUtils.isEmpty(type)) { return null; diff --git a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java index d4b79d32..04af4d86 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -267,6 +267,8 @@ public class LibraryServiceImpl extends ServiceImpl impl sysFile.setUrl(filePath); sysFile.setMd5(uploadDTO.getMd5()); sysFile.setCreateDate(new Date()); + sysFile.setHigh(uploadDTO.getHigh()); + sysFile.setWidth(uploadDTO.getWidth()); sysFileMapper.insert(sysFile); Library library = new Library(); library.setId(sysFile.getId());