修改印花 允许同时single和overall
This commit is contained in:
@@ -405,7 +405,7 @@ public class MinioUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public String getPresignedUrl(String path, int expiry, boolean resetCache) {
|
||||
public String getPreSignedUrl(String path, int expiry, boolean resetCache) {
|
||||
if (resetCache || LocalCacheUtils.getPresignedUrlCache(path) == null) {
|
||||
if (!path.contains("/")) {
|
||||
throw new BusinessException("The path is error!");
|
||||
@@ -413,7 +413,7 @@ public class MinioUtil {
|
||||
int index = path.indexOf("/");
|
||||
String bucketName = path.substring(0, index);
|
||||
String fileName = path.substring(index + 1);
|
||||
String presignedUrl = getPresignedUrl(bucketName, fileName, expiry);
|
||||
String presignedUrl = getPreSignedUrl(bucketName, fileName, expiry);
|
||||
LocalCacheUtils.setPresignedUrlCache(path, presignedUrl);
|
||||
return presignedUrl;
|
||||
} else {
|
||||
|
||||
@@ -90,6 +90,10 @@ public class DesignItemDetail implements Serializable {
|
||||
* item的优先级
|
||||
*/
|
||||
private Integer priority;
|
||||
/**
|
||||
* 未分割的只上了颜色或只有overall印花的图层
|
||||
*/
|
||||
private String undividedLayer;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
|
||||
@@ -15,17 +15,17 @@ public class DesignSinglePrintDTO implements Serializable {
|
||||
// @ApiModelProperty("印花url")
|
||||
// private String path;
|
||||
|
||||
@ApiModelProperty("single -> true,overall -> false")
|
||||
private Boolean ifSingle;
|
||||
/*@ApiModelProperty("single -> true,overall -> false")
|
||||
private Boolean ifSingle;*/
|
||||
|
||||
@ApiModelProperty("印花详细")
|
||||
private List<DesignSinglePrint> prints;
|
||||
|
||||
public DesignSinglePrintDTO() {
|
||||
}
|
||||
|
||||
/*
|
||||
public DesignSinglePrintDTO(Boolean ifSingle, List<DesignSinglePrint> prints) {
|
||||
this.ifSingle = ifSingle;
|
||||
this.prints = prints;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
@@ -58,6 +58,9 @@ public class DesignItemClothesDetailVO {
|
||||
@ApiModelProperty("渐变色信息")
|
||||
private Gradient gradient;
|
||||
|
||||
@ApiModelProperty("未分割的图层")
|
||||
private String undividedLayer;
|
||||
|
||||
public DesignItemClothesDetailVO() {
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ import java.util.List;
|
||||
@ApiModel("design single 印花详情")
|
||||
public class DesignSinglePrint implements Serializable {
|
||||
|
||||
@ApiModelProperty("single -> true,overall -> false")
|
||||
private Boolean ifSingle;
|
||||
|
||||
@ApiModelProperty("印花的类型 Slogan || Logo || Pattern")
|
||||
private String level2Type;
|
||||
|
||||
@@ -48,7 +51,7 @@ public class DesignSinglePrint implements Serializable {
|
||||
this.scale = scale;
|
||||
}
|
||||
|
||||
public DesignSinglePrint(String level2Type, String path, String minIOPath, List<Double> location, Double scale, Double angle, Integer priority) {
|
||||
public DesignSinglePrint(String level2Type, String path, String minIOPath, List<Double> location, Double scale, Double angle, Integer priority, Boolean ifSingle) {
|
||||
this.level2Type = level2Type;
|
||||
this.path = path;
|
||||
this.minIOPath = minIOPath;
|
||||
@@ -56,5 +59,6 @@ public class DesignSinglePrint implements Serializable {
|
||||
this.scale = scale;
|
||||
this.angle = angle;
|
||||
this.priority = priority;
|
||||
this.ifSingle = ifSingle;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1928,14 +1928,14 @@ public class PythonService {
|
||||
if (!elementVO.getDesignPythonItemPrint().getPath().equals("none")
|
||||
&& elementVO.getDesignPrintPictureTypeLayoutList().contains(type)) {
|
||||
DesignPythonItemPrint designPythonItemPrint = CopyUtil.copyObject(elementVO.getDesignPythonItemPrint(), DesignPythonItemPrint.class);
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(Collections.singletonList(designPythonItemPrint.getPath()));
|
||||
designPythonItemBlouse.setPrint(designPythonItemPrint);
|
||||
designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
} else {
|
||||
DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint();
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(new ArrayList<>());
|
||||
designPythonItemBlouse.setPrint(designPythonItemPrint);
|
||||
designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
}
|
||||
return designPythonItemBlouse;
|
||||
}
|
||||
@@ -1957,14 +1957,14 @@ public class PythonService {
|
||||
if (!elementVO.getDesignPythonItemPrint().getPath().equals("none")
|
||||
&& elementVO.getDesignPrintPictureTypeLayoutList().contains(collectionElement.getLevel2Type())) {
|
||||
DesignPythonItemPrint designPythonItemPrint = CopyUtil.copyObject(elementVO.getDesignPythonItemPrint(), DesignPythonItemPrint.class);
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(Collections.singletonList(designPythonItemPrint.getPath()));
|
||||
designPythonItemBlouse.setPrint(designPythonItemPrint);
|
||||
designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
} else {
|
||||
DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint();
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(new ArrayList<>());
|
||||
designPythonItemBlouse.setPrint(designPythonItemPrint);
|
||||
designPythonItemBlouse.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
}
|
||||
return designPythonItemBlouse;
|
||||
}
|
||||
@@ -2587,7 +2587,7 @@ public class PythonService {
|
||||
List<DesignPythonItem> response = CopyUtil.copyList(designPythonItemDto, DesignPythonItem.class, (o, d) -> {
|
||||
d.setBusinessId(o.getId());
|
||||
d.setIcon("none");
|
||||
d.setPrint(resolveDesignSinglePrint(o.getPrintObject(), o.getPath()));
|
||||
// d.setPrint(resolveDesignSinglePrint(o.getPrintObject(), o.getPath()));
|
||||
});
|
||||
DesignPythonItem body = new DesignPythonItem();
|
||||
body.setType(SysFileLevel2TypeEnum.BODY.getRealName());
|
||||
@@ -2636,12 +2636,13 @@ public class PythonService {
|
||||
// todo 当渐变色不为空时,是否需要将颜色置为 0 0 0
|
||||
}
|
||||
|
||||
PrintToPython printToPython = resolveDesignSinglePrint(designSingleItem.getPrintObject().getPrints());
|
||||
resolveDesignElement(designSingleItem.getTrims(), printToPython);
|
||||
response.add(new DesignPythonItem(
|
||||
designSingleItem.getType(),
|
||||
designSingleItem.getPath(),
|
||||
designSingleItem.getColor(),
|
||||
resolveDesignSinglePrint(designSingleItem.getPrintObject(), null),
|
||||
resolveDesignElement(designSingleItem.getTrims()),
|
||||
printToPython,
|
||||
// businessId designItemDetailId (python端确认没有作用,但是数据库需要存,作用:未知)
|
||||
// designSingleItem.getId(),
|
||||
businessId,
|
||||
@@ -2666,47 +2667,84 @@ public class PythonService {
|
||||
}
|
||||
|
||||
|
||||
private DesignPythonItemPrint resolveDesignSinglePrint(DesignSinglePrintDTO printObject, String clothesPath) {
|
||||
// 没有印花时的参数设置
|
||||
if (printObject.getIfSingle().equals(Boolean.FALSE) && CollectionUtil.isEmpty(printObject.getPrints())) {
|
||||
return new DesignPythonItemPrint(new ArrayList<>(), false);
|
||||
private PrintToPython resolveDesignSinglePrint(List<DesignSinglePrint> printObject) {
|
||||
PrintToPython printToPython = new PrintToPython();
|
||||
DesignPythonItemPrint printSingle = new DesignPythonItemPrint();
|
||||
DesignPythonItemPrint printOverall = new DesignPythonItemPrint();
|
||||
printToPython.setSingle(printSingle);
|
||||
printToPython.setOverall(printOverall);
|
||||
if (printObject.isEmpty()){
|
||||
return printToPython;
|
||||
}
|
||||
DesignPythonItemPrint print = CopyUtil.copyObject(printObject, DesignPythonItemPrint.class);
|
||||
|
||||
int size = printObject.getPrints().size();
|
||||
// 没有印花时的参数设置
|
||||
// if (printObject.getIfSingle().equals(Boolean.FALSE) && CollectionUtil.isEmpty(printObject.getPrints())) {
|
||||
// return new DesignPythonItemPrint(new ArrayList<>(), false);
|
||||
// }
|
||||
// DesignPythonItemPrint print = CopyUtil.copyObject(printObject, DesignPythonItemPrint.class);
|
||||
|
||||
int size = printObject.size();
|
||||
// 占位符填充数组
|
||||
List<List<Double>> location = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> scale = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> angle = new ArrayList<>(Collections.nCopies(size, null));
|
||||
ArrayList<String> paths = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<List<Double>> locationS = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> scaleS = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> angleS = new ArrayList<>(Collections.nCopies(size, null));
|
||||
ArrayList<String> pathsS = new ArrayList<>(Collections.nCopies(size, null));
|
||||
|
||||
List<List<Double>> locationO = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> scaleO = new ArrayList<>(Collections.nCopies(size, null));
|
||||
List<Double> angleO = new ArrayList<>(Collections.nCopies(size, null));
|
||||
ArrayList<String> pathsO = new ArrayList<>(Collections.nCopies(size, null));
|
||||
|
||||
// 设置印花的位置、大小、旋转角度
|
||||
// 优先级越大,越靠近顶层,在传输给python的数组中,越靠前
|
||||
List<DesignSinglePrint> prints = printObject.getPrints();
|
||||
prints.forEach(p -> {
|
||||
// List<DesignSinglePrint> prints = printObject.getPrints();
|
||||
printObject.forEach(p -> {
|
||||
p.getLocation().set(0, p.getLocation().get(0));
|
||||
p.getLocation().set(1, p.getLocation().get(1));
|
||||
Integer priority = p.getPriority();
|
||||
location.set(size - priority, p.getLocation());
|
||||
scale.set(size - priority, p.getScale());
|
||||
angle.set(size - priority, p.getAngle());
|
||||
paths.set(size - priority, p.getMinIOPath());
|
||||
// todo 下标越界问题
|
||||
if (p.getIfSingle()){
|
||||
locationS.set(priority - 1, p.getLocation());
|
||||
scaleS.set(priority - 1, p.getScale());
|
||||
angleS.set( priority - 1, p.getAngle());
|
||||
pathsS.set(priority - 1, p.getMinIOPath());
|
||||
}else {
|
||||
locationO.set(priority - 1, p.getLocation());
|
||||
scaleO.set(priority - 1, p.getScale());
|
||||
angleO.set(priority - 1, p.getAngle());
|
||||
pathsO.set(priority - 1, p.getMinIOPath());
|
||||
}
|
||||
// log.info("本次print打点locations###{}###fileVO{}", p.getLocation(), JSON.toJSONString(fileVO));
|
||||
});
|
||||
print.setLocation(location);
|
||||
print.setPrint_scale_list(scale);
|
||||
print.setPrint_angle_list(angle);
|
||||
print.setPrint_path_list(paths);
|
||||
locationS.removeAll(Collections.singleton(null));
|
||||
scaleS.removeAll(Collections.singleton(null));
|
||||
angleS.removeAll(Collections.singleton(null));
|
||||
pathsS.removeAll(Collections.singleton(null));
|
||||
printSingle.setLocation(locationS);
|
||||
printSingle.setPrint_scale_list(scaleS);
|
||||
printSingle.setPrint_angle_list(angleS);
|
||||
printSingle.setPrint_path_list(pathsS);
|
||||
|
||||
return print;
|
||||
locationO.removeAll(Collections.singleton(null));
|
||||
scaleO.removeAll(Collections.singleton(null));
|
||||
angleO.removeAll(Collections.singleton(null));
|
||||
pathsO.removeAll(Collections.singleton(null));
|
||||
printOverall.setLocation(locationO);
|
||||
printOverall.setPrint_scale_list(scaleO);
|
||||
printOverall.setPrint_angle_list(angleO);
|
||||
printOverall.setPrint_path_list(pathsO);
|
||||
|
||||
return printToPython;
|
||||
}
|
||||
|
||||
private DesignPythonItemElement resolveDesignElement(DesignSinglePrintDTO trims) {
|
||||
private void resolveDesignElement(DesignSinglePrintDTO trims, PrintToPython printToPython) {
|
||||
// 没有design element 时的参数设置
|
||||
if (Objects.isNull(trims.getIfSingle()) && CollectionUtil.isEmpty(trims.getPrints())) {
|
||||
return null;
|
||||
DesignPythonItemElement element = new DesignPythonItemElement();
|
||||
if (CollectionUtil.isEmpty(trims.getPrints())) {
|
||||
printToPython.setElement(element);
|
||||
return;
|
||||
}
|
||||
DesignPythonItemElement print = new DesignPythonItemElement();
|
||||
|
||||
|
||||
int size = trims.getPrints().size();
|
||||
// 占位符填充数组
|
||||
@@ -2722,18 +2760,17 @@ public class PythonService {
|
||||
p.getLocation().set(0, p.getLocation().get(0));
|
||||
p.getLocation().set(1, p.getLocation().get(1));
|
||||
Integer priority = p.getPriority();
|
||||
location.set(size - priority, p.getLocation());
|
||||
scale.set(size - priority, p.getScale());
|
||||
angle.set(size - priority, p.getAngle());
|
||||
paths.set(size - priority, p.getMinIOPath());
|
||||
location.set(priority - 1, p.getLocation());
|
||||
scale.set(priority - 1, p.getScale());
|
||||
angle.set(priority - 1, p.getAngle());
|
||||
paths.set(priority - 1, p.getMinIOPath());
|
||||
// log.info("本次print打点locations###{}###fileVO{}", p.getLocation(), JSON.toJSONString(fileVO));
|
||||
});
|
||||
print.setLocation(location);
|
||||
print.setElement_scale_list(scale);
|
||||
print.setElement_angle_list(angle);
|
||||
print.setElement_path_list(paths);
|
||||
|
||||
return print;
|
||||
element.setLocation(location);
|
||||
element.setElement_scale_list(scale);
|
||||
element.setElement_angle_list(angle);
|
||||
element.setElement_path_list(paths);
|
||||
printToPython.setElement(element);
|
||||
}
|
||||
|
||||
private DesignPythonBasic coverToSingleBasic(DesignPythonItem designPythonItem, String singleOverall,
|
||||
@@ -2806,9 +2843,9 @@ public class PythonService {
|
||||
dress.setColor("none");
|
||||
dress.setIcon("none");
|
||||
DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint();
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(new ArrayList<>());
|
||||
dress.setPrint(designPythonItemPrint);
|
||||
dress.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
dress.setPath("aida-sys-image/images/female/blouse/0628001551.jpg");
|
||||
response.add(dress);
|
||||
|
||||
@@ -2817,9 +2854,9 @@ public class PythonService {
|
||||
skirt.setColor("none");
|
||||
skirt.setIcon("none");
|
||||
DesignPythonItemPrint designPythonItemPrint1 = new DesignPythonItemPrint();
|
||||
designPythonItemPrint1.setIfSingle(false);
|
||||
// designPythonItemPrint1.setIfSingle(false);
|
||||
designPythonItemPrint1.setPrint_path_list(new ArrayList<>());
|
||||
skirt.setPrint(designPythonItemPrint1);
|
||||
skirt.setPrint(new PrintToPython(designPythonItemPrint1));
|
||||
skirt.setPath("aida-sys-image/images/female/skirt/0628000022.jpg");
|
||||
// skirt.setPath("aida-sys-image/images/female/dress/0628000000.jpg");
|
||||
response.add(skirt);
|
||||
@@ -2829,9 +2866,9 @@ public class PythonService {
|
||||
top.setColor("none");
|
||||
top.setIcon("none");
|
||||
DesignPythonItemPrint designPythonItemPrint = new DesignPythonItemPrint();
|
||||
designPythonItemPrint.setIfSingle(false);
|
||||
// designPythonItemPrint.setIfSingle(false);
|
||||
designPythonItemPrint.setPrint_path_list(new ArrayList<>());
|
||||
top.setPrint(designPythonItemPrint);
|
||||
top.setPrint(new PrintToPython(designPythonItemPrint));
|
||||
top.setPath("aida-sys-image/images/male/tops/mens_test_10.png");
|
||||
response.add(top);
|
||||
|
||||
@@ -2840,9 +2877,9 @@ public class PythonService {
|
||||
bottom.setColor("none");
|
||||
bottom.setIcon("none");
|
||||
DesignPythonItemPrint designPythonItemPrint1 = new DesignPythonItemPrint();
|
||||
designPythonItemPrint1.setIfSingle(false);
|
||||
// designPythonItemPrint1.setIfSingle(false);
|
||||
designPythonItemPrint1.setPrint_path_list(new ArrayList<>());
|
||||
bottom.setPrint(designPythonItemPrint1);
|
||||
bottom.setPrint(new PrintToPython(designPythonItemPrint1));
|
||||
bottom.setPath("aida-sys-image/images/male/bottoms/mens_test_6252.png");
|
||||
response.add(bottom);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public class DesignPythonItem {
|
||||
/**
|
||||
* 对应的print图片的绝对路径
|
||||
*/
|
||||
private DesignPythonItemPrint print;
|
||||
private PrintToPython print;
|
||||
|
||||
/**
|
||||
* trims 衣服上的装饰
|
||||
@@ -118,13 +118,12 @@ public class DesignPythonItem {
|
||||
this.image_id = image_id;
|
||||
}
|
||||
|
||||
public DesignPythonItem(String type, String path, String color, DesignPythonItemPrint print, DesignPythonItemElement element, Long businessId,
|
||||
public DesignPythonItem(String type, String path, String color, PrintToPython print, Long businessId,
|
||||
Long image_id, List<Long> offset, Float[] resize_scale, Integer priority, String gradient, String gradientString) {
|
||||
this.type = type;
|
||||
this.path = path;
|
||||
this.color = color;
|
||||
this.print = print;
|
||||
this.element = element;
|
||||
// this.icon = icon;
|
||||
this.businessId = businessId;
|
||||
this.image_id = image_id;
|
||||
@@ -135,7 +134,7 @@ public class DesignPythonItem {
|
||||
this.gradientString = gradientString;
|
||||
}
|
||||
|
||||
public DesignPythonItem(String type, String path, String color, DesignPythonItemPrint print, String icon, Long businessId, Long image_id) {
|
||||
public DesignPythonItem(String type, String path, String color, PrintToPython print, String icon, Long businessId, Long image_id) {
|
||||
this.type = type;
|
||||
this.path = path;
|
||||
this.color = color;
|
||||
|
||||
@@ -3,21 +3,22 @@ package com.ai.da.python.vo;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DesignPythonItemElement {
|
||||
|
||||
@ApiModelProperty("print的位置 传 [[0.2, 0.2]]")
|
||||
private List<List<Double>> location;
|
||||
private List<List<Double>> location = new ArrayList<>();
|
||||
|
||||
private List<String> element_path_list;
|
||||
private List<String> element_path_list = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("print的缩放比例 传 [0.2, 0.2]")
|
||||
private List<Double> element_scale_list;
|
||||
private List<Double> element_scale_list = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("print的旋转角度 传 [0.2, 0.2]")
|
||||
private List<Double> element_angle_list;
|
||||
private List<Double> element_angle_list = new ArrayList<>();
|
||||
|
||||
public DesignPythonItemElement() {
|
||||
}
|
||||
|
||||
@@ -4,6 +4,9 @@ import com.alibaba.fastjson.annotation.JSONField;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@@ -14,7 +17,7 @@ public class DesignPythonItemPrint {
|
||||
@ApiModelProperty("图片绝对路径")
|
||||
private String path;
|
||||
|
||||
private List<String> print_path_list;
|
||||
private List<String> print_path_list = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("上传时候对应的类型,一级类型 Printboard ")
|
||||
private String level1Type;
|
||||
@@ -33,19 +36,29 @@ public class DesignPythonItemPrint {
|
||||
|
||||
|
||||
@ApiModelProperty("print的位置 传 [[0.2, 0.2]]")
|
||||
private List<List<Double>> location;
|
||||
private List<List<Double>> location = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("print的缩放比例 传 [0.2, 0.2]")
|
||||
private List<Double> print_scale_list;
|
||||
private List<Double> print_scale_list = new ArrayList<>();
|
||||
|
||||
@ApiModelProperty("print的旋转角度 传 [0.2, 0.2]")
|
||||
private List<Double> print_angle_list;
|
||||
private List<Double> print_angle_list = new ArrayList<>();
|
||||
|
||||
@JSONField(name = "IfSingle")
|
||||
public Boolean getIfSingle() {
|
||||
return ifSingle;
|
||||
}
|
||||
|
||||
public DesignPythonItemPrint(List<String> print_path_list, Boolean ifDesign) {
|
||||
if (ifDesign){
|
||||
this.print_path_list = print_path_list;
|
||||
this.location = Collections.singletonList(Arrays.asList(0.0, 0.0));
|
||||
this.print_scale_list = Arrays.asList(0.0, 0.0);
|
||||
this.print_angle_list = Arrays.asList(0.0, 0.0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public DesignPythonItemPrint(String singlePath, String level1Type, Float scale, Boolean ifSingle) {
|
||||
this.path = singlePath;
|
||||
this.level1Type = level1Type;
|
||||
@@ -60,8 +73,4 @@ public class DesignPythonItemPrint {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public DesignPythonItemPrint(List<String> print_path_list, Boolean ifSingle) {
|
||||
this.print_path_list = print_path_list;
|
||||
this.ifSingle = ifSingle;
|
||||
}
|
||||
}
|
||||
|
||||
20
src/main/java/com/ai/da/python/vo/PrintToPython.java
Normal file
20
src/main/java/com/ai/da/python/vo/PrintToPython.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package com.ai.da.python.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PrintToPython {
|
||||
private DesignPythonItemPrint single;
|
||||
private DesignPythonItemPrint overall;
|
||||
private DesignPythonItemElement element;
|
||||
|
||||
public PrintToPython(DesignPythonItemPrint overall) {
|
||||
this.overall = new DesignPythonItemPrint(overall.getPrint_path_list(),Boolean.TRUE);
|
||||
single = new DesignPythonItemPrint();
|
||||
element = new DesignPythonItemElement();
|
||||
}
|
||||
}
|
||||
@@ -261,7 +261,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// todo check这个方法是否还在用
|
||||
private DesignCollectionItemVO saveSingleDesignItemAndDetail(DesignPythonObjects pythonObjects
|
||||
, Long designId, Long designItemId, Long collectionId, AuthPrincipalVo userInfo, String timeZone) {
|
||||
DesignCollectionItemVO response = new DesignCollectionItemVO();
|
||||
@@ -295,7 +295,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
designItemDetail.setBusinessId(0L);
|
||||
}
|
||||
designItemDetail.setIconPath(detail.getIcon());
|
||||
DesignPythonItemPrint printObject = detail.getPrint();
|
||||
// todo
|
||||
DesignPythonItemPrint printObject = detail.getPrint().getSingle();
|
||||
designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
designItemDetail.setPrintJson(JSON.toJSONString(printObject));
|
||||
designItemDetails.add(designItemDetail);
|
||||
@@ -312,7 +313,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
|
||||
private List<TDesignPythonOutfitDetail> saveDesignSingleItemDetailAndLayers(DesignPythonObjects pythonObjects
|
||||
, Long designId, Long designItemId, Long userId
|
||||
, JSONObject outfit, String timeZone, List<DesignSingleItemDTO> designSingleItemDTOList) {
|
||||
, JSONObject outfit, String timeZone, List<DesignSingleItemDTO> designSingleItemDTOList
|
||||
, Map<String, String> categoryAndUndividedLayer) {
|
||||
|
||||
DesignItem designItem = new DesignItem();
|
||||
// String url = pythonObjects.getObjects().get(0).getBasic().getSave_name();
|
||||
@@ -343,8 +345,10 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
designItemDetail.setPriority(0);
|
||||
}
|
||||
designItemDetail.setIconPath(detail.getIcon());
|
||||
DesignPythonItemPrint printObject = detail.getPrint();
|
||||
designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
designItemDetail.setUndividedLayer(categoryAndUndividedLayer.get(detail.getType().toLowerCase()));
|
||||
// 印花存储在design_item_detail_print表中 这里还要存吗?
|
||||
// DesignPythonItemPrint printObject = detail.getPrintToPython();
|
||||
// designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
// 当有多个印花后,返回的printObject太长,导致存储到数据库时报错
|
||||
// designItemDetail.setPrintJson(JSON.toJSONString(printObject));
|
||||
designItemDetails.add(designItemDetail);
|
||||
@@ -506,14 +510,17 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
throw new BusinessException("priority.cannot.be.repeated");
|
||||
}
|
||||
|
||||
JSONArray layers = outfit.getJSONArray("layers");
|
||||
Map<String, String> categoryAndUndividedLayer = setTypeAndUndividedLayer(layers);
|
||||
if (!designSingleIncludeLayersDTO.getIsPreview()) {
|
||||
// 更新及保存图层信息
|
||||
tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId(),
|
||||
userId, outfit, designSingleIncludeLayersDTO.getTimeZone(), designSingleIncludeLayersDTO.getDesignSingleItemDTOList());
|
||||
tDesignPythonOutfitDetails = saveDesignSingleItemDetailAndLayers(objects, design.getId(), designSingleIncludeLayersDTO.getDesignItemId()
|
||||
, userId, outfit, designSingleIncludeLayersDTO.getTimeZone()
|
||||
, designSingleIncludeLayersDTO.getDesignSingleItemDTOList()
|
||||
, categoryAndUndividedLayer);
|
||||
|
||||
saveCollectionElement(designSingleIncludeLayersDTO);
|
||||
} else {
|
||||
JSONArray layers = outfit.getJSONArray("layers");
|
||||
tDesignPythonOutfitDetails = setTDesignPythonOutfitDetailList(layers, designItem.getDesignId(), null, userId, priorityOffset);
|
||||
}
|
||||
|
||||
@@ -537,7 +544,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
outfit.getString("synthesis_url"),
|
||||
designSingleIncludeLayersDTO.getDesignSingleItemDTOList(),
|
||||
detailsVO,
|
||||
design.getSingleOverall());
|
||||
design.getSingleOverall(),
|
||||
categoryAndUndividedLayer);
|
||||
}
|
||||
|
||||
private void sketchBase64ToPath(DesignSingleIncludeLayersDTO designSingleIncludeLayersDTO){
|
||||
@@ -560,6 +568,16 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
});
|
||||
}
|
||||
|
||||
private Map<String, String> setTypeAndUndividedLayer(JSONArray layers){
|
||||
HashMap<String, String> categoryAndLayer = new HashMap<>();
|
||||
for (int i = 0; i < layers.size(); i++) {
|
||||
JSONObject jsonObject = layers.getJSONObject(i);
|
||||
String category = jsonObject.getString("image_category").split("_")[0];
|
||||
if (!category.equals("body") && !categoryAndLayer.containsKey(category)) categoryAndLayer.put(category, jsonObject.getString("pattern_image_url"));
|
||||
}
|
||||
return categoryAndLayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ComposeLayersVO editLayersPositionAndScale(EditLayersPositionAndScaleVO positionAndScaleVO) throws IOException {
|
||||
@@ -650,7 +668,8 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
String currentFullBodyView,
|
||||
List<DesignSingleItemDTO> designSingleItemDTOList,
|
||||
List<DesignPythonOutfitVO> layersObject,
|
||||
String singleOrOverall) {
|
||||
String singleOrOverall,
|
||||
Map<String, String> categoryAndUndividedLayer) {
|
||||
|
||||
DesignSingleVO designSingleVO = new DesignSingleVO();
|
||||
ArrayList<DesignItemClothesDetailVO> clothes = new ArrayList<>();
|
||||
@@ -684,6 +703,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
&& (flag ? Boolean.TRUE : singleItem.getPriority().equals(layers.getPriority())))
|
||||
).collect(Collectors.toList()));
|
||||
designItemClothesDetailVO.setGradient(singleItem.getGradient());
|
||||
if (categoryAndUndividedLayer.containsKey(singleItem.getType().toLowerCase())) designItemClothesDetailVO.setUndividedLayer(minioUtil.getPreSignedUrl(categoryAndUndividedLayer.get(singleItem.getType().toLowerCase()), CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
|
||||
body.setLayersObject(layersObject.stream().filter(layers -> layers.getImageCategory().equals("body")).collect(Collectors.toList()));
|
||||
|
||||
clothes.add(designItemClothesDetailVO);
|
||||
@@ -715,20 +735,16 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
String printType,
|
||||
Map<Integer, Long> designItemDetailTypeIdMap,
|
||||
String timeZone){
|
||||
|
||||
// todo 这边这样做对吗
|
||||
DesignSinglePrintDTO printObject;
|
||||
if (printType.equals("print")){
|
||||
printObject = designSingleItem.getPrintObject();
|
||||
}else {
|
||||
printObject = designSingleItem.getTrims();
|
||||
if (Objects.isNull(printObject.getIfSingle())){
|
||||
printObject.setIfSingle(Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
if (printObject.getIfSingle().equals(Boolean.FALSE)
|
||||
&& CollectionUtil.isEmpty(printObject.getPrints())) {
|
||||
return;
|
||||
} else {
|
||||
if (!CollectionUtil.isEmpty(printObject.getPrints())) {
|
||||
// 2、有印花,添加到list
|
||||
printObject.getPrints().forEach(print -> {
|
||||
// 2.1 判断是否第一次添加印花,是:直接添加
|
||||
@@ -743,7 +759,7 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
|
||||
designItemDetailPrint.setLevel2Type(print.getLevel2Type());
|
||||
designItemDetailPrint.setPath(print.getMinIOPath());
|
||||
designItemDetailPrint.setScale(print.getScale());
|
||||
designItemDetailPrint.setSingleOrOverall(printType.equals("print") ? printObject.getIfSingle() ? "single" : "overall" : "single");
|
||||
designItemDetailPrint.setSingleOrOverall(printType.equals("print") ? print.getIfSingle() ? "single" : "overall" : "single");
|
||||
designItemDetailPrint.setCreateDate(LocalDateTime.now(ZoneId.of(timeZone)));
|
||||
// single、overall模式下都有position、angle和priority
|
||||
designItemDetailPrint.setPosition(print.getLocation().toString());
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||
import com.ai.da.common.config.FileProperties;
|
||||
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.enums.*;
|
||||
import com.ai.da.common.utils.*;
|
||||
@@ -623,10 +624,13 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
||||
}
|
||||
designItemDetail.setIconPath(detail.getIcon());
|
||||
designItemDetail.setPriority(typePriority.get(detail.getType().toLowerCase()));
|
||||
DesignPythonItemPrint printObject = detail.getPrint();
|
||||
designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
if (!detail.getType().equals("Body")){
|
||||
DesignPythonItemPrint printObject = detail.getPrint().getOverall();
|
||||
// designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
designItemDetail.setPrintPath(CollectionUtils.isEmpty(printObject.getPrint_path_list()) ? "" : printObject.getPrint_path_list().get(0));
|
||||
}
|
||||
designItemDetailService.save(designItemDetail);
|
||||
if (!SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) && designItemDetail.getPrintPath() != null) {
|
||||
if (!SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) && !StringUtil.isNullOrEmpty(designItemDetail.getPrintPath())) {
|
||||
DesignItemDetailPrint print = new DesignItemDetailPrint();
|
||||
print.setDesignItemDetailId(designItemDetail.getId());
|
||||
print.setPrintType("print");
|
||||
@@ -686,7 +690,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
||||
designItemDetail.setBusinessId(0L);
|
||||
}
|
||||
designItemDetail.setIconPath(detail.getIcon());
|
||||
DesignPythonItemPrint printObject = detail.getPrint();
|
||||
DesignPythonItemPrint printObject = detail.getPrint().getOverall();
|
||||
designItemDetail.setPrintPath(Objects.isNull(printObject) ? "" : printObject.getPath());
|
||||
designItemDetails.add(designItemDetail);
|
||||
});
|
||||
@@ -1001,6 +1005,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
||||
d.setMinIOPath(o.getPath());
|
||||
d.setLevel1Type(converTypeToLevel1(o.getType()));
|
||||
d.setGradient(JSONObject.parseObject(o.getGradientString(), Gradient.class));
|
||||
if (!StringUtil.isNullOrEmpty(o.getUndividedLayer())) d.setUndividedLayer(minioUtil.getPreSignedUrl(o.getUndividedLayer(), CommonConstant.MINIO_IMAGE_EXPIRE_TIME));
|
||||
// 根据designItemDetailId获取印花
|
||||
List<DesignItemDetailPrint> prints = designItemDetailPrintService.getByDesignItemDetailId(o.getId(), "print");
|
||||
// 判断有无印花
|
||||
@@ -1204,7 +1209,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
||||
if (designItemDetailPrints.size() == 1) {
|
||||
DesignItemDetailPrint detailPrint = designItemDetailPrints.get(0);
|
||||
DesignSinglePrint designSinglePrint = new DesignSinglePrint();
|
||||
designSinglePrintDTO.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
|
||||
// designSinglePrintDTO.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
|
||||
designSinglePrint.setLevel2Type(detailPrint.getLevel2Type());
|
||||
designSinglePrint.setLocation(JSONArray.parseArray(detailPrint.getPosition(), Double.class));
|
||||
designSinglePrint.setAngle(detailPrint.getAngle());
|
||||
@@ -1212,21 +1217,23 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
|
||||
designSinglePrint.setPath(minioUtil.getPreSignedUrl(detailPrint.getPath(), 24 * 60));
|
||||
designSinglePrint.setMinIOPath(detailPrint.getPath());
|
||||
designSinglePrint.setScale(detailPrint.getScale());
|
||||
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
|
||||
prints.add(designSinglePrint);
|
||||
} else {
|
||||
// single模式下多个印花
|
||||
designSinglePrintDTO.setIfSingle(Boolean.TRUE);
|
||||
// designSinglePrintDTO.setIfSingle(Boolean.TRUE);
|
||||
designItemDetailPrints.forEach(print -> {
|
||||
if (print.getSingleOrOverall().equals("single")) {
|
||||
prints.add(new DesignSinglePrint(
|
||||
print.getLevel2Type(),
|
||||
minioUtil.getPreSignedUrl(print.getPath(), 24 * 60),
|
||||
print.getPath(),
|
||||
JSONArray.parseArray(print.getPosition(), Double.class),
|
||||
print.getScale(),
|
||||
print.getAngle(),
|
||||
print.getPriority()));
|
||||
}
|
||||
// if (print.getSingleOrOverall().equals("single")) {
|
||||
prints.add(new DesignSinglePrint(
|
||||
print.getLevel2Type(),
|
||||
minioUtil.getPreSignedUrl(print.getPath(), 24 * 60),
|
||||
print.getPath(),
|
||||
JSONArray.parseArray(print.getPosition(), Double.class),
|
||||
print.getScale(),
|
||||
print.getAngle(),
|
||||
print.getPriority(),
|
||||
print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE));
|
||||
// }
|
||||
});
|
||||
}
|
||||
designSinglePrintDTO.setPrints(prints);
|
||||
|
||||
@@ -432,13 +432,13 @@ public class UserLikeGroupServiceImpl extends ServiceImpl<UserLikeGroupMapper, U
|
||||
for (ToProductImageResultVO toProductImageResultVO : toProductImageResultVOS) {
|
||||
if (toProductImageResultVO.getElementType().equals("ProductElement")) {
|
||||
ToProductElement toProductElement = toProductElementMapper.selectById(toProductImageResultVO.getElementId());
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPresignedUrl(toProductElement.getUrl(), 24 * 60));
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPreSignedUrl(toProductElement.getUrl(), 24 * 60));
|
||||
}else if ((toProductImageResultVO.getElementType().equals("DesignOutfit"))) {
|
||||
TDesignPythonOutfit tDesignPythonOutfit = designPythonOutfitMapper.selectById(toProductImageResultVO.getElementId());
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPresignedUrl(tDesignPythonOutfit.getDesignUrl(), 24 * 60));
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPreSignedUrl(tDesignPythonOutfit.getDesignUrl(), 24 * 60));
|
||||
}else {
|
||||
ToProductImageResult toProductImageResult1 = toProductImageResultMapper.selectById(toProductImageResultVO.getElementId());
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPresignedUrl(toProductImageResult1.getUrl(), 24 * 60));
|
||||
toProductImageResultVO.setSourceUrl(minioUtil.getPreSignedUrl(toProductImageResult1.getUrl(), 24 * 60));
|
||||
}
|
||||
}
|
||||
return toProductImageResultVOS;
|
||||
|
||||
Reference in New Issue
Block a user