Merge remote-tracking branch 'origin/dev/dev' into dev/dev
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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,23 +1601,51 @@ 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.setScale(JSONArray.parseArray(detailPrint.getScale(), Float.class));
|
||||
designSinglePrint.setIfSingle(detailPrint.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE);
|
||||
List<Float> scales;
|
||||
try{
|
||||
scales = JSONArray.parseArray(detailPrint.getScale(), Float.class);
|
||||
}catch (JSONException e){
|
||||
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);
|
||||
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){
|
||||
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(),
|
||||
minioUtil.getPreSignedUrl(print.getPath(), 24 * 60),
|
||||
print.getPath(),
|
||||
JSONArray.parseArray(print.getPosition(), Float.class),
|
||||
JSONArray.parseArray(print.getScale(), Float.class),
|
||||
scales,
|
||||
print.getAngle(),
|
||||
print.getPriority(),
|
||||
print.getSingleOrOverall().equals("single") ? Boolean.TRUE : Boolean.FALSE));
|
||||
ifSingle));
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user