From 9e3c29bd474efecd92bd943170ed5f0765e243e8 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Wed, 22 Nov 2023 15:18:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?TASK:=20sketchBoard=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=EF=BC=9B=E5=B7=A5=E4=BD=9C=E7=A9=BA=E9=97=B4=E5=88=97=E8=A1=A8?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/mapper/entity/Sketches.java | 10 +++ .../da/mapper/entity/SketchesBoundingBox.java | 13 ++++ .../model/dto/QueryLibraryPageServiceDTO.java | 1 + .../com/ai/da/model/enums/FemalePosition.java | 9 +++ .../com/ai/da/model/enums/MalePosition.java | 9 +++ .../java/com/ai/da/model/enums/Position.java | 41 +++++++++++ src/main/java/com/ai/da/model/enums/Sex.java | 11 ++- .../java/com/ai/da/model/vo/WorkspaceVO.java | 9 +++ .../com/ai/da/service/LibraryService.java | 3 + .../da/service/impl/LibraryServiceImpl.java | 69 +++++++++++++++++-- .../da/service/impl/WorkspaceServiceImpl.java | 8 +++ src/main/resources/messages_en.properties | 1 + 12 files changed, 177 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/ai/da/mapper/entity/Sketches.java create mode 100644 src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java create mode 100644 src/main/java/com/ai/da/model/enums/Position.java diff --git a/src/main/java/com/ai/da/mapper/entity/Sketches.java b/src/main/java/com/ai/da/mapper/entity/Sketches.java new file mode 100644 index 00000000..a3fb57b4 --- /dev/null +++ b/src/main/java/com/ai/da/mapper/entity/Sketches.java @@ -0,0 +1,10 @@ +package com.ai.da.mapper.entity; + +import lombok.Data; + +@Data +public class Sketches { + private String image_id; + private String image_url; + private String image_category; +} diff --git a/src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java b/src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java new file mode 100644 index 00000000..24c5b1df --- /dev/null +++ b/src/main/java/com/ai/da/mapper/entity/SketchesBoundingBox.java @@ -0,0 +1,13 @@ +package com.ai.da.mapper.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class SketchesBoundingBox { + private List sketches; + +} + + diff --git a/src/main/java/com/ai/da/model/dto/QueryLibraryPageServiceDTO.java b/src/main/java/com/ai/da/model/dto/QueryLibraryPageServiceDTO.java index 3e39b329..281a2bdd 100644 --- a/src/main/java/com/ai/da/model/dto/QueryLibraryPageServiceDTO.java +++ b/src/main/java/com/ai/da/model/dto/QueryLibraryPageServiceDTO.java @@ -28,6 +28,7 @@ public class QueryLibraryPageServiceDTO extends PageQueryBaseVo { private List classificationIdList; + @ApiModelProperty("1交集2并集") private Integer intersection; } diff --git a/src/main/java/com/ai/da/model/enums/FemalePosition.java b/src/main/java/com/ai/da/model/enums/FemalePosition.java index 0ff8f3a9..d8efc49e 100644 --- a/src/main/java/com/ai/da/model/enums/FemalePosition.java +++ b/src/main/java/com/ai/da/model/enums/FemalePosition.java @@ -26,4 +26,13 @@ public enum FemalePosition implements IEnumDisplay { public String getValue() { return this.value; } + + public static FemalePosition getPosition(String value) { + for (FemalePosition position : values()) { + if (position.value.equalsIgnoreCase(value)) { + return position; + } + } + throw new IllegalArgumentException("No matching constant for [" + value + "]"); + } } diff --git a/src/main/java/com/ai/da/model/enums/MalePosition.java b/src/main/java/com/ai/da/model/enums/MalePosition.java index 3c5611d9..184eb5f0 100644 --- a/src/main/java/com/ai/da/model/enums/MalePosition.java +++ b/src/main/java/com/ai/da/model/enums/MalePosition.java @@ -24,4 +24,13 @@ public enum MalePosition implements IEnumDisplay { public String getValue() { return this.value; } + + public static MalePosition getPosition(String value) { + for (MalePosition position : values()) { + if (position.value.equalsIgnoreCase(value)) { + return position; + } + } + throw new IllegalArgumentException("No matching constant for [" + value + "]"); + } } diff --git a/src/main/java/com/ai/da/model/enums/Position.java b/src/main/java/com/ai/da/model/enums/Position.java new file mode 100644 index 00000000..498ed2f7 --- /dev/null +++ b/src/main/java/com/ai/da/model/enums/Position.java @@ -0,0 +1,41 @@ +package com.ai.da.model.enums; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * @Author: SHAHAIBO + * @Date: 2023/08/01 17:21 + * @Description: 服装性别分类 + */ +public enum Position implements IEnumDisplay { + OVERALL("Overall"), + TOPS("Tops"), + BOTTOMS("Bottoms"), + OUTWEAR("Outwear"), + BLOUSE("Blouse"), + DRESS("Dress"), + TROUSERS("Trousers"), + SKIRT("Skirt"); + + private String value; + + Position(String value) { + this.value = value; + } + + @Override + @JsonValue + public String getValue() { + return this.value; + } + + public static Position getPosition(String value) { + for (Position position : values()) { + if (position.value.equalsIgnoreCase(value)) { + return position; + } + } + throw new IllegalArgumentException("No matching constant for [" + value + "]"); + } +} diff --git a/src/main/java/com/ai/da/model/enums/Sex.java b/src/main/java/com/ai/da/model/enums/Sex.java index 63e99bf7..9fef3460 100644 --- a/src/main/java/com/ai/da/model/enums/Sex.java +++ b/src/main/java/com/ai/da/model/enums/Sex.java @@ -1,5 +1,6 @@ package com.ai.da.model.enums; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonValue; /** @@ -10,7 +11,6 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum Sex implements IEnumDisplay { FEMALE("Female"), - MALE("Male") // CHILD("Child") @@ -27,4 +27,13 @@ public enum Sex implements IEnumDisplay { public String getValue() { return this.value; } + + public static Sex getSex(String value) { + for (Sex sex : values()) { + if (sex.value.equalsIgnoreCase(value)) { + return sex; + } + } + throw new IllegalArgumentException("No matching constant for [" + value + "]"); + } } diff --git a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java index ed933a8a..209563f2 100644 --- a/src/main/java/com/ai/da/model/vo/WorkspaceVO.java +++ b/src/main/java/com/ai/da/model/vo/WorkspaceVO.java @@ -3,6 +3,11 @@ package com.ai.da.model.vo; import com.ai.da.common.response.PageBaseResponse; import com.ai.da.mapper.entity.Workspace; +import com.ai.da.model.enums.BizJson; +import com.ai.da.model.enums.FemalePosition; +import com.ai.da.model.enums.Position; +import com.ai.da.model.enums.Sex; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import io.swagger.annotations.ApiModel; @@ -28,4 +33,8 @@ public class WorkspaceVO extends Workspace { private String malePresignedUrl; private String childPresignedUrl; + private BizJson sexEnum; + + private BizJson positionEnum; + } diff --git a/src/main/java/com/ai/da/service/LibraryService.java b/src/main/java/com/ai/da/service/LibraryService.java index 8bdb6af5..d9e6a389 100644 --- a/src/main/java/com/ai/da/service/LibraryService.java +++ b/src/main/java/com/ai/da/service/LibraryService.java @@ -78,6 +78,9 @@ public interface LibraryService extends IService { String processMannequins(String uploadPath); + + void processSketchBoards(String filePath, String category); + Boolean checkMd5(String level1Type, String level2Type, String sex, String md5); void batchDeleteLibrary(LibraryDeleteDTO deleteDTO); 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 b16a9dd0..d6ad958d 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -2,7 +2,6 @@ package com.ai.da.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.exceptions.ExceptionUtil; -import cn.hutool.system.UserInfo; import com.ai.da.common.config.FileProperties; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.context.UserContext; @@ -14,7 +13,6 @@ import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.MinioUtil; import com.ai.da.mapper.LibraryMapper; import com.ai.da.mapper.SysFileMapper; -import com.ai.da.mapper.WorkspaceMapper; import com.ai.da.mapper.entity.*; import com.ai.da.model.dto.*; import com.ai.da.model.enums.MannequinType; @@ -22,10 +20,7 @@ import com.ai.da.model.enums.ModelType; import com.ai.da.model.enums.Sex; import com.ai.da.model.vo.*; import com.ai.da.python.vo.ModelPathObject; -import com.ai.da.service.ClassificationService; -import com.ai.da.service.LibraryModelPointService; -import com.ai.da.service.LibraryService; -import com.ai.da.service.WorkspaceService; +import com.ai.da.service.*; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; @@ -81,6 +76,9 @@ public class LibraryServiceImpl extends ServiceImpl impl @Value("${minio.bucketName.sysImage}") private String sysImage; + @Resource + private PythonTAllInfoService pythonTAllInfoService; + private static List top = Arrays.asList(CollectionLevel2TypeEnum.DRESS.getRealName(), CollectionLevel2TypeEnum.OUTWEAR.getRealName(), CollectionLevel2TypeEnum.BLOUSE.getRealName()); private static List bottom = Arrays.asList(CollectionLevel2TypeEnum.SKIRT.getRealName(), @@ -255,6 +253,9 @@ public class LibraryServiceImpl extends ServiceImpl impl } } else { String filePath = minioUtil.upload(bucketName, path, libraryUploadDTO.getFile()); + if (libraryUploadDTO.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) { + processSketchBoards(filePath, libraryUploadDTO.getLevel2Type()); + } //保存element元素 Library library = resolveData(libraryUploadDTO, userInfo, filePath); LibraryUpdateVo libraryUpdateVo = CopyUtil.copyObject(library, LibraryUpdateVo.class); @@ -314,6 +315,62 @@ public class LibraryServiceImpl extends ServiceImpl impl throw new BusinessException("processMannequins.interface.exception"); } + @Override + public void processSketchBoards(String filePath, String category) { + Long imageId = pythonTAllInfoService.getImageIdByPath(filePath); + SketchesBoundingBox sketchesBoundingBox = new SketchesBoundingBox(); + List list = new ArrayList<>(); + Sketches sketches = new Sketches(); + sketches.setImage_id(String.valueOf(imageId)); + sketches.setImage_url(filePath); + sketches.setImage_category(category); + list.add(sketches); + sketchesBoundingBox.setSketches(list); + + 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(sketchesBoundingBox, SerializerFeature.DisableCircularReferenceDetect); + log.info("processSketchBoards请求python 参数:####{}", param); + RequestBody body = RequestBody.create(mediaType, param); + Request request = new Request.Builder() + .url("http://18.167.251.121:9991/api/sketches_bounding_box") + .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##processSketchBoards异常###{}", ExceptionUtil.getThrowableList(ioException)); + throw new BusinessException("processSketchBoards.interface.exception"); + } + //去除限流 +// AccessLimitUtils.validateOut("design"); + if (response.isSuccessful()) { + try { + if (Objects.isNull(response.body())) { + throw new BusinessException("processSketchBoards.interface.exception"); + } + String responseBody = response.body().string(); + JSONObject responseObject = JSON.parseObject(responseBody); +// String newMinioPath = responseObject.getString("data"); +// return newMinioPath; + } catch (IOException | JSONException e) { + log.error(e.getMessage()); + throw new BusinessException("processSketchBoards.interface.exception"); + } + } + //生成失败 + throw new BusinessException("processSketchBoards.interface.exception"); + } + @Override public Boolean checkMd5(String level1Type, String level2Type, String sex, String md5) { AuthPrincipalVo userInfo = UserContext.getUserHolder(); diff --git a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java index 2acacda2..0bcd1c9f 100644 --- a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java @@ -194,6 +194,10 @@ public class WorkspaceServiceImpl extends ServiceImpl Date: Wed, 22 Nov 2023 15:48:08 +0800 Subject: [PATCH 2/5] =?UTF-8?q?TASK:=20sketchBoard=E4=B8=8A=E4=BC=A0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 6658b8d8..942167bf 100644 --- a/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/LibraryServiceImpl.java @@ -363,6 +363,7 @@ public class LibraryServiceImpl extends ServiceImpl impl } String responseBody = response.body().string(); JSONObject responseObject = JSON.parseObject(responseBody); + return; // String newMinioPath = responseObject.getString("data"); // return newMinioPath; } catch (IOException | JSONException e) { From edce5f322784b8dec6d1e7788fc85f6434c38197 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Wed, 22 Nov 2023 16:38:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?TASK:=20sketchBoard=E8=A3=81=E5=89=AA;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/service/impl/CollectionElementServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 36a9ca3b..efa2f048 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -287,6 +287,7 @@ public class CollectionElementServiceImpl extends ServiceImpl libraryList = CopyUtil.copyList(elements, Library.class, (o, d) -> { if (d.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) { d.setLevel3Type(modelSex); + libraryService.processSketchBoards(d.getUrl(), d.getLevel2Type()); } d.setCreateDate(DateUtil.getByTimeZone(timeZone)); d.setName(name); From 5213b03598e850448105d63359b4432ebd921cdb Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Wed, 22 Nov 2023 16:44:28 +0800 Subject: [PATCH 4/5] =?UTF-8?q?TASK:=20sketchBoard=E8=A3=81=E5=89=AA;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/da/service/impl/CollectionElementServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 efa2f048..9884ca7b 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -287,7 +287,11 @@ public class CollectionElementServiceImpl extends ServiceImpl libraryList = CopyUtil.copyList(elements, Library.class, (o, d) -> { if (d.getLevel1Type().equals(LibraryLevel1TypeEnum.SKETCH_BOARD.getRealName())) { d.setLevel3Type(modelSex); - libraryService.processSketchBoards(d.getUrl(), d.getLevel2Type()); + try { + libraryService.processSketchBoards(d.getUrl(), d.getLevel2Type()); + }catch (Exception e) { + // TODO:暂不处理 + } } d.setCreateDate(DateUtil.getByTimeZone(timeZone)); d.setName(name); From ecec69a45ec613532462e7ac723085ec9dbaa9c8 Mon Sep 17 00:00:00 2001 From: shahaibo <1023316923@qq.com> Date: Thu, 23 Nov 2023 10:32:33 +0800 Subject: [PATCH 5/5] =?UTF-8?q?TASK:=20=E6=9E=9A=E4=B8=BE=E7=B1=BB?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/config/exception/BusinessException.java | 6 +++++- .../ai/da/service/impl/WorkspaceServiceImpl.java | 10 +++++----- src/main/resources/messages_en.properties | 14 +++++++++++++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ai/da/common/config/exception/BusinessException.java b/src/main/java/com/ai/da/common/config/exception/BusinessException.java index 35774162..46f24694 100644 --- a/src/main/java/com/ai/da/common/config/exception/BusinessException.java +++ b/src/main/java/com/ai/da/common/config/exception/BusinessException.java @@ -53,7 +53,11 @@ public class BusinessException extends RuntimeException { return new Locale(Language.valueOf(userInfo.getLanguage()).getValue()); } - private static String getMessageFromResource(String msg, Locale userLocale) { + public static String getMessageFromResource(String msg) { + return getMessageFromResource(msg, getUserLocale()); + } + + public static String getMessageFromResource(String msg, Locale userLocale) { try (InputStream inputStream = BusinessException.class.getClassLoader().getResourceAsStream("messages_" + userLocale.getLanguage() + ".properties")) { if (inputStream != null) { ResourceBundle bundle = new PropertyResourceBundle(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); diff --git a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java index 0bcd1c9f..01f2064a 100644 --- a/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/WorkspaceServiceImpl.java @@ -196,8 +196,8 @@ public class WorkspaceServiceImpl extends ServiceImpl kvs = new ArrayList(); IEnumDisplay[] items = (IEnumDisplay[]) clazz.getEnumConstants(); for (IEnumDisplay item : items) { - kvs.add(new BizJson(item.getValue(), item.name(), null)); + kvs.add(new BizJson(item.getValue(), item.name(), BusinessException.getMessageFromResource(item.name()))); } return kvs; } diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index ec32a4d5..25febc3e 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -161,4 +161,16 @@ processSketchBoards.interface.exception=We encountered an error uploading sketch designProcess.interface.exception=There's been an issue loading the progress bar. (Please try again later. If this issue persists, please contact us at help@aida.com.hk.) generate.interface.exception=We are currently experiencing a high volume of generating requests. (Please try again later. If the problem continues, reach out to us at help@aida.com.hk for support.) generate.interface.error=We encountered an error with the generate interface. (Please try again later. If this issue persists, please contact us at help@aida.com.hk.) -chat-bot.interface.exception=We encountered an error with the chat robot interface.(Please try again later. If this issue persists, please contact us at help@aida.com.hk.) \ No newline at end of file +chat-bot.interface.exception=We encountered an error with the chat robot interface.(Please try again later. If this issue persists, please contact us at help@aida.com.hk.) + +# 多语言返回 +OVERALL=Overall +TOPS=Tops +BOTTOMS=Bottoms +OUTWEAR=Outwear +BLOUSE=Blouse +DRESS=Dress +TROUSERS=Trousers +SKIRT=Skirt +FEMALE=Female +MALE=Male \ No newline at end of file