diff --git a/src/main/java/com/ai/da/controller/ClassificationController.java b/src/main/java/com/ai/da/controller/ClassificationController.java index 5cfb2678..48f6f85e 100644 --- a/src/main/java/com/ai/da/controller/ClassificationController.java +++ b/src/main/java/com/ai/da/controller/ClassificationController.java @@ -34,7 +34,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @RequestMapping("/api/classification") -@Api(value = "", tags = "接口") +@Api(value = "", tags = "分类") public class ClassificationController { @Resource diff --git a/src/main/java/com/ai/da/controller/WorkspaceController.java b/src/main/java/com/ai/da/controller/WorkspaceController.java index 12da0b1d..1de7008a 100644 --- a/src/main/java/com/ai/da/controller/WorkspaceController.java +++ b/src/main/java/com/ai/da/controller/WorkspaceController.java @@ -36,7 +36,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @RequestMapping("/api/workspace") -@Api(value = "", tags = "接口") +@Api(value = "", tags = "工作空间") public class WorkspaceController { @Resource diff --git a/src/main/java/com/ai/da/python/PythonService.java b/src/main/java/com/ai/da/python/PythonService.java index 214c7df2..8cdc6803 100644 --- a/src/main/java/com/ai/da/python/PythonService.java +++ b/src/main/java/com/ai/da/python/PythonService.java @@ -417,12 +417,185 @@ public class PythonService { if (Objects.nonNull(bottom)) { items.add(bottom); } + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall()) && elementVO.getSwitchCategory().equals("Outwear")) { + DesignPythonItem outwear = calculatePythonItemOutwear(pinData, elementVO, designPictureType); + if (Objects.nonNull(outwear)) { + items.add(outwear); + } + } } //计算填充Hairstyle Earring Shoes Body items.addAll(calculatePythonItemHairstyleShoes(elementVO, elementVO.getDesignLibraryModelPoint())); return items; } + private DesignPythonItem calculatePythonItemOutwear(List pinData, ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType) { + DesignPythonItem outwear = null; + //剩余的的PinData + List existPinDataIds = elementVO.getExistPinDataIds(); + List residuePinData = residuePinData(pinData, existPinDataIds, elementVO.getHasUseMd5List()); + if (CollectionUtil.isNotEmpty(residuePinData)) { + //single模式 + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall())) { + if (DesignPythonItem.OUTWEAR.contains(elementVO.getSwitchCategory())) { + //是否包含的Pin + Boolean isPin = residuePinData.stream().filter(residue -> + elementVO.getSwitchCategory().equals(residue.getLevel2Type())).findFirst().isPresent(); + //如果包含Pin只传一个 + if (isPin) { + //Pin的数据 + pinData = getPinDataByLevel2Type(pinData, elementVO.getSwitchCategory()); + //剩余的的PinData + List residueInnerPinDataByType = residuePinData(pinData, existPinDataIds, elementVO.getHasUseMd5List()); + CollectionElement elementNew = CollectionUtils.isEmpty(residueInnerPinDataByType) ? null : residueInnerPinDataByType.get(0); + if (Objects.nonNull(elementNew)) { + outwear = coverToDesignPythonItem(elementNew.getId(), elementVO.getSwitchCategory(), elementNew.getUrl(), elementVO); + //去重用 + existPinDataIds.add(elementNew.getId()); + //添加已使用的md5 + elementVO.getHasUseMd5List().add(elementNew.getMd5()); + } + } + } + } else { + //是否包含skirt的Pin + Boolean isPin = residuePinData.stream().filter(residue -> + DesignPythonItem.OUTWEAR.contains(residue.getLevel2Type())).findFirst().isPresent(); + //如果包含Pin只传一个 + if (isPin) { + for (String type : DesignPythonItem.OUTWEAR) { + //剩余的的PinData + List residueInnerPinData = residuePinData(pinData, existPinDataIds, elementVO.getHasUseMd5List()); + CollectionElement elementNew = residueInnerPinData.stream() + .filter(element -> element.getLevel2Type().equals(type)).findFirst().orElse(null); + if (Objects.nonNull(elementNew)) { + outwear = coverToDesignPythonItem(elementNew.getId(), type, elementNew.getUrl(), elementVO); + //去重用 + existPinDataIds.add(elementNew.getId()); + //添加已使用的md5 + elementVO.getHasUseMd5List().add(elementNew.getMd5()); + break; + } + } + } + } + + } + if (Objects.nonNull(outwear)) { + return outwear; + } + switch (designPictureType) { + case PIN: + if (Objects.isNull(outwear)) { + //single模式 + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall())) { + if (DesignPythonItem.OUTWEAR.contains(elementVO.getSwitchCategory())) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileByLevel2Type(elementVO.getSwitchCategory(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + return outwear; + } + } else { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileMaleBottoms(elementVO.getSysFileVo(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + //添加已使用的md5 + return outwear; + } + } + break; + case USER_LIBRARY: + //single模式 + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall())) { + if (DesignPythonItem.OUTWEAR.contains(elementVO.getSwitchCategory())) { + LibraryVo libraryVo = getRandomLibrary(elementVO.getLibraryVos(), + Arrays.asList(elementVO.getSwitchCategory()), elementVO.getHasUseMd5List()); + if (StringUtils.isEmpty(libraryVo)) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileByLevel2Type(elementVO.getSwitchCategory(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + return outwear; + } + outwear = coverToDesignPythonItem(null, libraryVo.getLevel2Type(), libraryVo.getUrl(), elementVO); + elementVO.getHasUseMd5List().add(libraryVo.getMd5()); + outwear.setBusinessId(libraryVo.getId()); + } + } else { + LibraryVo libraryVo = getRandomLibrary(elementVO.getLibraryVos(), + DesignPythonItem.OUTWEAR, elementVO.getHasUseMd5List()); + if (StringUtils.isEmpty(libraryVo)) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileMaleBottoms(elementVO.getSysFileVo(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + //添加已使用的md5 + return outwear; + } + outwear = coverToDesignPythonItem(null, libraryVo.getLevel2Type(), libraryVo.getUrl(), elementVO); + outwear.setBusinessId(libraryVo.getId()); + elementVO.getHasUseMd5List().add(libraryVo.getMd5()); + } + break; + case SYS_FILE: + //single模式 + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall())) { + if (DesignPythonItem.OUTWEAR.contains(elementVO.getSwitchCategory())) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileByLevel2Type(elementVO.getSwitchCategory(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + return outwear; + } + } else { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileMaleBottoms(elementVO.getSysFileVo(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + //添加已使用的md5 + return outwear; + } + break; + case NO_PIN: + //single模式 + if (SingleOverallEnum.SINGLE.getRealName().equals(elementVO.getSingleOverall())) { + if (DesignPythonItem.OUTWEAR.contains(elementVO.getSwitchCategory())) { + //非Pin的数据 + List noPinDataByType = + getNoPinData(elementVO.getSketchBoardElements(), Collections.singletonList(elementVO.getSwitchCategory())); + CollectionElement collectionElement = getRandomSketchLibrary(noPinDataByType, elementVO.getHasUseMd5List()); + if (Objects.isNull(collectionElement)) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileByLevel2Type(elementVO.getSwitchCategory(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + } else { + elementVO.getHasUseMd5List().add(collectionElement.getMd5()); + outwear = coverToDesignPythonItem(collectionElement.getId(), collectionElement.getLevel2Type(), collectionElement.getUrl(), elementVO); + } + } + } else { + //非Pin的数据 + List noPinData = getNoPinData(elementVO.getSketchBoardElements(), DesignPythonItem.OUTWEAR); + CollectionElement collectionElement = getRandomSketchLibrary(noPinData, elementVO.getHasUseMd5List()); + if (Objects.isNull(collectionElement)) { + //系统获取 + SysFileVO sysFileVO = getRandomSysFileMaleBottoms(elementVO.getSysFileVo(), elementVO.getSysFileIds(), elementVO.getModelSex()); + outwear = coverToDesignPythonItem(null, sysFileVO.getLevel2Type(), sysFileVO.getUrl(), elementVO); + outwear.setBusinessId(sysFileVO.getId()); + } else { + elementVO.getHasUseMd5List().add(collectionElement.getMd5()); + outwear = coverToDesignPythonItem(collectionElement.getId(), collectionElement.getLevel2Type(), collectionElement.getUrl(), elementVO); + } + } + break; + default: + } + return outwear; + } + private DesignPythonItem calculatePythonItemBottom(List pinData, ValidateElementVO elementVO, CurrentDesignPictureTypeEnum designPictureType) { DesignPythonItem bottom = null; //剩余的的PinData diff --git a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java index 9b195247..86beb205 100644 --- a/src/main/java/com/ai/da/python/vo/DesignPythonItem.java +++ b/src/main/java/com/ai/da/python/vo/DesignPythonItem.java @@ -80,8 +80,8 @@ public class DesignPythonItem { public static List SKIRT_TROUSERS = Arrays.asList( CollectionLevel2TypeEnum.SKIRT.getRealName(), CollectionLevel2TypeEnum.TROUSERS.getRealName()); - public static List OUTERWEAR = Arrays.asList( - "OuterWear"); + public static List OUTWEAR = Arrays.asList( + "Outwear"); public static List TOPS = Arrays.asList( "Tops"); 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 59cc4373..8ae49ff8 100644 --- a/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/CollectionElementServiceImpl.java @@ -413,7 +413,7 @@ public class CollectionElementServiceImpl extends ServiceImpl skecth.getIsPin() == 1 - && DesignPythonItem.OUTERWEAR.contains(skecth.getLevel2Type())).count(); + && DesignPythonItem.OUTWEAR.contains(skecth.getLevel2Type())).count(); if (topNum > 8 || bottomNum > 8 || outerwearNum > 8) { throw new BusinessException("the.number.of.PIN.top.or.bottom.or.outerwear.sketchBoard.cannot.be.more.than.8"); }