Merge branch 'dev/dev_xp' into dev/dev

This commit is contained in:
2025-02-12 12:13:52 +08:00
2 changed files with 53 additions and 12 deletions

View File

@@ -14,13 +14,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -535,6 +534,32 @@ public class MinioUtil {
int index = path.indexOf("/");
return path.substring(index + 1); // 获取路径的其余部分作为对象名称
}
public List<Integer> getImagesWidthAndHeight(String path){
int index = path.indexOf("/");
String bucketName = path.substring(0, index);
String objectName = path.substring(index + 1);
try {
// 从 MinIO 下载图片
GetObjectResponse response = minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucketName)
.object(objectName)
.build()
);
BufferedImage image = ImageIO.read(response);
int width = image.getWidth();
int height = image.getHeight();
log.info("Image path {}, Width: {}, Height: {}", path, width, height);
response.close();
return Arrays.asList(width, height);
} catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
log.error("图片:{}, 获取宽高异常", path);
throw new BusinessException(e.getMessage());
}
}
}

View File

@@ -1385,14 +1385,14 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
// 判断有无印花
if (CollectionUtil.isNotEmpty(prints)) {
// 有印花
d.setPrintObject(convertToDesignSinglePrintDTO(prints));
d.setPrintObject(convertToDesignSinglePrintDTO(prints, o.getPath()));
}
// 根据designItemDetailId获取design elements
List<DesignItemDetailPrint> trims = designItemDetailPrintService.getByDesignItemDetailId(o.getId(), "trims");
// 判断有无装饰 trims
if (CollectionUtil.isNotEmpty(trims)) {
// 有印花
d.setTrims(convertToDesignSinglePrintDTO(trims));
d.setTrims(convertToDesignSinglePrintDTO(trims, o.getPath()));
}
}));
//single 和 Models(模特)时候 系统元素为空
@@ -1586,7 +1586,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
return designItemDetailVO;
}
private DesignSinglePrintDTO convertToDesignSinglePrintDTO(List<DesignItemDetailPrint> designItemDetailPrints) {
private DesignSinglePrintDTO convertToDesignSinglePrintDTO(List<DesignItemDetailPrint> designItemDetailPrints, String sketchPath) {
DesignSinglePrintDTO designSinglePrintDTO = new DesignSinglePrintDTO();
List<DesignSinglePrint> prints = new ArrayList<>();
@@ -1601,25 +1601,41 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
designSinglePrint.setPriority(detailPrint.getPriority());
designSinglePrint.setPath(minioUtil.getPreSignedUrl(detailPrint.getPath(), 24 * 60));
designSinglePrint.setMinIOPath(detailPrint.getPath());
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
List<Float> scales;
try{
scales = JSONArray.parseArray(detailPrint.getScale(), Float.class);
}catch (JSONException e){
scales = Arrays.asList(Float.valueOf(detailPrint.getScale()), Float.valueOf(detailPrint.getScale()));
Float scale = Float.valueOf(detailPrint.getScale());
if (designSinglePrint.getIfSingle()){
List<Integer> printWAndH = minioUtil.getImagesWidthAndHeight(detailPrint.getPath());
List<Integer> sketchWAndH = minioUtil.getImagesWidthAndHeight(sketchPath);
scales = Arrays.asList(scale * printWAndH.get(0) / sketchWAndH.get(0), scale * printWAndH.get(1) / sketchWAndH.get(1));
}else {
scales = Arrays.asList(scale, scale);
}
}
designSinglePrint.setScale(scales);
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
prints.add(designSinglePrint);
} else {
// single模式下多个印花
// 多个印花
// designSinglePrintDTO.setIfSingle(Boolean.TRUE);
designItemDetailPrints.forEach(print -> {
// if (print.getSingleOrOverall().equals("single")) {
List<Float> scales;
Boolean ifSingle = print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE;
Float scale = Float.valueOf(print.getScale());
try{
scales = JSONArray.parseArray(print.getScale(), Float.class);
}catch (JSONException e){
scales = Arrays.asList(Float.valueOf(print.getScale()), Float.valueOf(print.getScale()));
if (ifSingle){
List<Integer> printWAndH = minioUtil.getImagesWidthAndHeight(print.getPath());
List<Integer> sketchWAndH = minioUtil.getImagesWidthAndHeight(sketchPath);
scales = Arrays.asList(scale * printWAndH.get(0) / sketchWAndH.get(0), scale * printWAndH.get(1) / sketchWAndH.get(1));
}else {
scales = Arrays.asList(scale, scale);
}
}
prints.add(new DesignSinglePrint(
print.getLevel2Type(),
@@ -1629,7 +1645,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
scales,
print.getAngle(),
print.getPriority(),
print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE));
ifSingle));
// }
});
}