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.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.security.InvalidKeyException; import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.ArrayList; import java.util.*;
import java.util.Base64;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -535,6 +534,32 @@ public class MinioUtil {
int index = path.indexOf("/"); int index = path.indexOf("/");
return path.substring(index + 1); // 获取路径的其余部分作为对象名称 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)) { if (CollectionUtil.isNotEmpty(prints)) {
// 有印花 // 有印花
d.setPrintObject(convertToDesignSinglePrintDTO(prints)); d.setPrintObject(convertToDesignSinglePrintDTO(prints, o.getPath()));
} }
// 根据designItemDetailId获取design elements // 根据designItemDetailId获取design elements
List<DesignItemDetailPrint> trims = designItemDetailPrintService.getByDesignItemDetailId(o.getId(), "trims"); List<DesignItemDetailPrint> trims = designItemDetailPrintService.getByDesignItemDetailId(o.getId(), "trims");
// 判断有无装饰 trims // 判断有无装饰 trims
if (CollectionUtil.isNotEmpty(trims)) { if (CollectionUtil.isNotEmpty(trims)) {
// 有印花 // 有印花
d.setTrims(convertToDesignSinglePrintDTO(trims)); d.setTrims(convertToDesignSinglePrintDTO(trims, o.getPath()));
} }
})); }));
//single 和 Models(模特)时候 系统元素为空 //single 和 Models(模特)时候 系统元素为空
@@ -1586,7 +1586,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
return designItemDetailVO; return designItemDetailVO;
} }
private DesignSinglePrintDTO convertToDesignSinglePrintDTO(List<DesignItemDetailPrint> designItemDetailPrints) { private DesignSinglePrintDTO convertToDesignSinglePrintDTO(List<DesignItemDetailPrint> designItemDetailPrints, String sketchPath) {
DesignSinglePrintDTO designSinglePrintDTO = new DesignSinglePrintDTO(); DesignSinglePrintDTO designSinglePrintDTO = new DesignSinglePrintDTO();
List<DesignSinglePrint> prints = new ArrayList<>(); List<DesignSinglePrint> prints = new ArrayList<>();
@@ -1601,25 +1601,41 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
designSinglePrint.setPriority(detailPrint.getPriority()); designSinglePrint.setPriority(detailPrint.getPriority());
designSinglePrint.setPath(minioUtil.getPreSignedUrl(detailPrint.getPath(), 24 * 60)); designSinglePrint.setPath(minioUtil.getPreSignedUrl(detailPrint.getPath(), 24 * 60));
designSinglePrint.setMinIOPath(detailPrint.getPath()); designSinglePrint.setMinIOPath(detailPrint.getPath());
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
List<Float> scales; List<Float> scales;
try{ try{
scales = JSONArray.parseArray(detailPrint.getScale(), Float.class); scales = JSONArray.parseArray(detailPrint.getScale(), Float.class);
}catch (JSONException e){ }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.setScale(scales);
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
prints.add(designSinglePrint); prints.add(designSinglePrint);
} else { } else {
// single模式下多个印花 // 多个印花
// designSinglePrintDTO.setIfSingle(Boolean.TRUE); // designSinglePrintDTO.setIfSingle(Boolean.TRUE);
designItemDetailPrints.forEach(print -> { designItemDetailPrints.forEach(print -> {
// if (print.getSingleOrOverall().equals("single")) { // if (print.getSingleOrOverall().equals("single")) {
List<Float> scales; List<Float> scales;
Boolean ifSingle = print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE;
Float scale = Float.valueOf(print.getScale());
try{ try{
scales = JSONArray.parseArray(print.getScale(), Float.class); scales = JSONArray.parseArray(print.getScale(), Float.class);
}catch (JSONException e){ }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( prints.add(new DesignSinglePrint(
print.getLevel2Type(), print.getLevel2Type(),
@@ -1629,7 +1645,7 @@ public class DesignServiceImpl extends ServiceImpl<DesignMapper, Design> impleme
scales, scales,
print.getAngle(), print.getAngle(),
print.getPriority(), print.getPriority(),
print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE)); ifSingle));
// } // }
}); });
} }