Merge branch 'dev/dev_xp' into dev/dev

This commit is contained in:
2024-04-30 11:00:57 +08:00
7 changed files with 110 additions and 7 deletions

View File

@@ -26,6 +26,9 @@ public class DesignSingleIncludeLayersDTO {
@ApiModelProperty("进度") @ApiModelProperty("进度")
private String processId; private String processId;
@ApiModelProperty("性别")
private String gender;
@NotBlank(message = "timeZone.cannot.be.empty") @NotBlank(message = "timeZone.cannot.be.empty")
@ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取") @ApiModelProperty("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取")
private String timeZone; private String timeZone;

View File

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
@@ -14,6 +15,14 @@ public class DesignSingleItemDTO {
@ApiModelProperty("切换图片对应的id") @ApiModelProperty("切换图片对应的id")
private Long id; private Long id;
@NotEmpty(message = "changed cannot be empty")
@ApiModelProperty("当前服装的id是否被添加随机数")
private Boolean changed;
@NotBlank(message = "designType cannot be empty")
@ApiModelProperty("当前图片来源于用户上传还是从library选择 Collection/Library")
private String designType;
@NotBlank(message = "type.cannot.be.empty") @NotBlank(message = "type.cannot.be.empty")
@ApiModelProperty("生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring") @ApiModelProperty("生成item实际对应的类型 有:outwear,dress,blouse,skirt,trousers Shoes Hairstyle Earring")
private String type; private String type;

View File

@@ -17,6 +17,12 @@ public class DesignItemClothesDetailVO {
@ApiModelProperty("对应的上游id") @ApiModelProperty("对应的上游id")
private Long id; private Long id;
@ApiModelProperty("该id末尾是否被加了随机数")
private Boolean changed;
@ApiModelProperty("该图片来源 Collection / Library")
private String designType;
@ApiModelProperty("对应的类型 有:Outwear,Dress,Blouse,Skirt,Trousers Shoes Hairstyle Earring Body") @ApiModelProperty("对应的类型 有:Outwear,Dress,Blouse,Skirt,Trousers Shoes Hairstyle Earring Body")
private String type; private String type;

View File

@@ -12,6 +12,9 @@ import java.util.List;
@ApiModel("design single 印花详情") @ApiModel("design single 印花详情")
public class DesignSinglePrint { public class DesignSinglePrint {
@ApiModelProperty("印花是用户上传的还是从library中选的 collection/library")
private String designType;
@ApiModelProperty("印花url") @ApiModelProperty("印花url")
private String path; private String path;

View File

@@ -2595,13 +2595,21 @@ public class PythonService {
List<DesignPythonItem> response = new ArrayList<>(); List<DesignPythonItem> response = new ArrayList<>();
designSingleItemList.forEach(designSingleItem -> { designSingleItemList.forEach(designSingleItem -> {
Long businessId;
if (!designSingleIncludeLayersDTO.getIsPreview() && designSingleItem.getChanged()){
String s = String.valueOf(designSingleItem.getId());
businessId = Long.parseLong(s.substring(0,s.length() - 3));
}else {
businessId = designSingleItem.getId();
}
response.add(new DesignPythonItem( response.add(new DesignPythonItem(
designSingleItem.getType(), designSingleItem.getType(),
designSingleItem.getPath(), designSingleItem.getPath(),
designSingleItem.getColor(), designSingleItem.getColor(),
resolveDesignSinglePrint(designSingleItem.getPrintObject(), designSingleItem.getPath()), resolveDesignSinglePrint(designSingleItem.getPrintObject(), designSingleItem.getPath()),
// businessId designItemDetailId python端确认没有作用,但是数据库需要存,作用:未知) // businessId designItemDetailId python端确认没有作用,但是数据库需要存,作用:未知)
designSingleItem.getId(), // designSingleItem.getId(),
businessId,
pythonTAllInfoService.getImageIdByPath(designSingleItem.getPath()), pythonTAllInfoService.getImageIdByPath(designSingleItem.getPath()),
designSingleItem.getOffset(), designSingleItem.getOffset(),
designSingleItem.getScale(), designSingleItem.getScale(),

View File

@@ -3,11 +3,14 @@ package com.ai.da.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.config.exception.BusinessException;
import com.ai.da.common.constant.CommonConstant;
import com.ai.da.common.context.UserContext; import com.ai.da.common.context.UserContext;
import com.ai.da.common.enums.CollectionLevel1TypeEnum;
import com.ai.da.common.enums.SingleOverallEnum; import com.ai.da.common.enums.SingleOverallEnum;
import com.ai.da.common.enums.SysFileLevel2TypeEnum; import com.ai.da.common.enums.SysFileLevel2TypeEnum;
import com.ai.da.common.utils.CopyUtil; import com.ai.da.common.utils.CopyUtil;
import com.ai.da.common.utils.DateUtil; import com.ai.da.common.utils.DateUtil;
import com.ai.da.common.utils.MD5Utils;
import com.ai.da.common.utils.MinioUtil; import com.ai.da.common.utils.MinioUtil;
import com.ai.da.mapper.primary.DesignItemMapper; import com.ai.da.mapper.primary.DesignItemMapper;
import com.ai.da.mapper.primary.entity.*; import com.ai.da.mapper.primary.entity.*;
@@ -30,8 +33,10 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -488,6 +493,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
// 更新及保存图层信息 // 更新及保存图层信息
tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId(), tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId(),
userInfo, outfit, designSingleIncludeLayersDTO.getTimeZone(), designSingleIncludeLayersDTO.getDesignSingleItemDTOList()); userInfo, outfit, designSingleIncludeLayersDTO.getTimeZone(), designSingleIncludeLayersDTO.getDesignSingleItemDTOList());
saveCollectionElement(designSingleIncludeLayersDTO);
} else { } else {
JSONArray layers = outfit.getJSONArray("layers"); JSONArray layers = outfit.getJSONArray("layers");
tDesignPythonOutfitDetails = setTDesignPythonOutfitDetailList(layers, designItem.getDesignId(), null, userInfo.getId(), priorityOffset); tDesignPythonOutfitDetails = setTDesignPythonOutfitDetailList(layers, designItem.getDesignId(), null, userInfo.getId(), priorityOffset);
@@ -537,10 +544,6 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
log.error(layer.getImageCategory() + " layer does not exists!"); log.error(layer.getImageCategory() + " layer does not exists!");
throw new BusinessException("layers.does.not.exists"); throw new BusinessException("layers.does.not.exists");
} }
// Assert.notNull(detail, layer.getImageCategory() + " layer does not exists!");
/*layer.setImageUrl(detail.getImageUrl());
layer.setMaskUrl(detail.getMaskUrl());*/
}); });
// 3、组装python入参 // 3、组装python入参
@@ -621,15 +624,21 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
designSingleVO.setCurrentFullBodyView(minioUtil.getPresignedUrl(currentFullBodyView, 24 * 60)); designSingleVO.setCurrentFullBodyView(minioUtil.getPresignedUrl(currentFullBodyView, 24 * 60));
designSingleVO.setClothes(clothes); designSingleVO.setClothes(clothes);
// 获取每个单品的id是否被改变过该状态需要再返回给前端
Map<Long, Boolean> idChanged = designSingleItemDTOList.stream().collect(Collectors.toMap(DesignSingleItemDTO::getId, DesignSingleItemDTO::getChanged));
// 获取每个单品的designType该状态需要再返回给前端
Map<Long, String> idDesignType = designSingleItemDTOList.stream().collect(Collectors.toMap(DesignSingleItemDTO::getId, DesignSingleItemDTO::getDesignType));
boolean flag = singleOrOverall.equals("single"); boolean flag = singleOrOverall.equals("single");
designSingleItemDTOList.forEach(singleItem -> { designSingleItemDTOList.forEach(singleItem -> {
DesignItemClothesDetailVO designItemClothesDetailVO = new DesignItemClothesDetailVO(); DesignItemClothesDetailVO designItemClothesDetailVO = new DesignItemClothesDetailVO();
designItemClothesDetailVO.setId(singleItem.getId()); designItemClothesDetailVO.setId(singleItem.getId());
designItemClothesDetailVO.setChanged(idChanged.get(singleItem.getId()));
designItemClothesDetailVO.setDesignType(idDesignType.get(singleItem.getId()));
designItemClothesDetailVO.setType(singleItem.getType()); designItemClothesDetailVO.setType(singleItem.getType());
designItemClothesDetailVO.setPath(minioUtil.getPresignedUrl(singleItem.getPath(), 24 * 60)); designItemClothesDetailVO.setPath(minioUtil.getPresignedUrl(singleItem.getPath(), 24 * 60));
designItemClothesDetailVO.setMinIOPath(singleItem.getPath()); designItemClothesDetailVO.setMinIOPath(singleItem.getPath());
designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor())); designItemClothesDetailVO.setColor(panToneService.getPantoneByRgb(singleItem.getColor()));
// designItemClothesDetailVO.setPrintObject(new DesignPythonItemPrint(singleItem.getPrintObject().getPath()));
designItemClothesDetailVO.setPrintObject(singleItem.getPrintObject()); designItemClothesDetailVO.setPrintObject(singleItem.getPrintObject());
designItemClothesDetailVO.setLayersObject(layersObject.stream().filter( designItemClothesDetailVO.setLayersObject(layersObject.stream().filter(
layers -> (singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0]) layers -> (singleItem.getType().toLowerCase().equals(layers.getImageCategory().split("_")[0])
@@ -703,4 +712,68 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
queryWrapper.in("id",designItemIdList); queryWrapper.in("id",designItemIdList);
return designItemMapper.selectList(queryWrapper); return designItemMapper.selectList(queryWrapper);
} }
private void saveCollectionElement(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO){
ArrayList<Library> libraries = new ArrayList<>();
// 添加sketch到library
designSingleIncludeLayersDTO.getDesignSingleItemDTOList().forEach(designSingleItem -> {
if (!StringUtil.isNullOrEmpty(designSingleItem.getDesignType()) && designSingleItem.getDesignType().equals("Collection")){
String path = minioUtil.getPresignedUrl(designSingleItem.getPath(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME);
try {
String md5 = MD5Utils.encryptFile(path, false);
// 先判断是否需要被加入到library
Boolean needAdd = libraryService.checkMd5(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName(),
designSingleItem.getType(),
designSingleIncludeLayersDTO.getGender(),
md5);
// 加入到library
if (needAdd){
Library library = new Library();
library.setAccountId(UserContext.getUserHolder().getId());
library.setLevel1Type(CollectionLevel1TypeEnum.SKETCH_BOARD.getRealName());
library.setLevel2Type(designSingleItem.getType());
library.setLevel3Type(designSingleIncludeLayersDTO.getGender());
library.setUrl(designSingleItem.getPath());
library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
library.setMd5(md5);
library.setCreateDate(DateUtil.getByTimeZone(designSingleIncludeLayersDTO.getTimeZone()));
libraries.add(library);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// 添加print到library
designSingleItem.getPrintObject().getPrints().forEach(print -> {
if (!StringUtil.isNullOrEmpty(print.getDesignType()) && print.getDesignType().equals("Collection")){
String path = minioUtil.getPresignedUrl(print.getMinIOPath(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME);
try {
String md5 = MD5Utils.encryptFile(path, false);
// 先判断是否已被加入到library
Boolean needAdd = libraryService.checkMd5(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName(),
null,
null,
md5);
// 加入到library
if (needAdd){
Library library = new Library();
library.setAccountId(UserContext.getUserHolder().getId());
library.setLevel1Type(CollectionLevel1TypeEnum.PRINT_BOARD.getRealName());
library.setUrl(print.getMinIOPath());
library.setName(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
library.setMd5(md5);
library.setCreateDate(DateUtil.getByTimeZone(designSingleIncludeLayersDTO.getTimeZone()));
libraries.add(library);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
} );
libraryService.saveBatch(libraries);
}
} }

View File

@@ -409,7 +409,8 @@ public class LibraryServiceImpl extends ServiceImpl<LibraryMapper, Library> impl
qw.lambda().eq(Library::getLevel2Type, level2Type); qw.lambda().eq(Library::getLevel2Type, level2Type);
qw.lambda().eq(Library::getLevel3Type, sex); qw.lambda().eq(Library::getLevel3Type, sex);
} else { } else {
qw.lambda().eq(Library::getLevel2Type, sex); // qw.lambda().eq(Library::getLevel2Type, sex);
qw.lambda().eq(Library::getLevel3Type, sex);
} }
} }
qw.lambda().eq(Library::getMd5, md5); qw.lambda().eq(Library::getMd5, md5);