大图合并进度

This commit is contained in:
lcj
2025-11-18 09:05:54 +08:00
parent dfaadd4977
commit 95b4bc85b3
4 changed files with 66 additions and 19 deletions

View File

@ -0,0 +1,27 @@
package org.dromara.drone.domain.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-11-17 19:59
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DroDroneBigPictureProgressVo {
/**
* 进度
*/
private BigDecimal progress;
/**
* 状态
*/
private String status;
}

View File

@ -10,6 +10,7 @@ import org.dromara.drone.domain.DroDroneBigPicture;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
@ -92,4 +93,9 @@ public class DroDroneBigPictureVo implements Serializable {
@ExcelProperty(value = "备注")
private String remark;
/**
* 进度
*/
private BigDecimal progress;
}

View File

@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.drone.domain.DroDroneBigPicture;
import org.dromara.drone.domain.bo.DroDroneBigPictureBo;
import org.dromara.drone.domain.bo.DroDroneBigPictureProgressVo;
import org.dromara.drone.domain.vo.DroDroneBigPictureVo;
import java.util.Collection;
@ -81,12 +82,12 @@ public interface IDroDroneBigPictureService extends IService<DroDroneBigPicture>
*
* @param picture 大图信息
*/
String isSynthesisCompleted(DroDroneBigPicture picture);
DroDroneBigPictureProgressVo isSynthesisCompleted(DroDroneBigPicture picture);
/**
* 是否合成完成
*
* @param pictureVo 大图信息
*/
String isSynthesisCompleted(DroDroneBigPictureVo pictureVo);
DroDroneBigPictureProgressVo isSynthesisCompleted(DroDroneBigPictureVo pictureVo);
}

View File

@ -15,6 +15,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.drone.domain.DroDroneBigPicture;
import org.dromara.drone.domain.bo.DroDroneBigPictureBo;
import org.dromara.drone.domain.bo.DroDroneBigPictureProgressVo;
import org.dromara.drone.domain.vo.DroDroneBigPictureVo;
import org.dromara.drone.mapper.DroDroneBigPictureMapper;
import org.dromara.drone.service.IDroDroneBigPictureService;
@ -61,11 +62,13 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl<DroDroneBigPictur
public DroDroneBigPictureVo queryById(Long id) {
DroDroneBigPictureVo pictureVo = baseMapper.selectVoById(id);
if (pictureVo != null) {
String synthesisCompleted = null;
try {
synthesisCompleted = this.isSynthesisCompleted(pictureVo);
if (StringUtils.isNotBlank(synthesisCompleted)) {
pictureVo.setStatus(synthesisCompleted);
DroDroneBigPictureProgressVo progressVo = this.isSynthesisCompleted(pictureVo);
if (progressVo != null) {
if (StringUtils.isNotBlank(progressVo.getStatus())) {
pictureVo.setStatus(progressVo.getStatus());
}
pictureVo.setProgress(progressVo.getProgress().multiply(new BigDecimal("100")));
}
} catch (Exception e) {
log.error("查询图片合成进度异常", e);
@ -90,9 +93,12 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl<DroDroneBigPictur
// 处理数据,判断合成中的图片是否完成合成
for (DroDroneBigPictureVo pictureVo : records) {
try {
String synthesisCompleted = this.isSynthesisCompleted(pictureVo);
if (StringUtils.isNotBlank(synthesisCompleted)) {
pictureVo.setStatus(synthesisCompleted);
DroDroneBigPictureProgressVo progressVo = this.isSynthesisCompleted(pictureVo);
if (progressVo != null) {
if (StringUtils.isNotBlank(progressVo.getStatus())) {
pictureVo.setStatus(progressVo.getStatus());
}
pictureVo.setProgress(progressVo.getProgress().multiply(new BigDecimal("100")));
}
} catch (Exception e) {
pictureVo.setStatus("4");
@ -230,26 +236,33 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl<DroDroneBigPictur
* @param picture 大图信息
*/
@Override
public String isSynthesisCompleted(DroDroneBigPicture picture) {
public DroDroneBigPictureProgressVo isSynthesisCompleted(DroDroneBigPicture picture) {
DroDroneBigPictureProgressVo vo = new DroDroneBigPictureProgressVo();
String newStatus = "";
vo.setProgress(BigDecimal.ZERO);
vo.setStatus(newStatus);
String status = picture.getStatus();
String taskId = picture.getTaskId();
if (status.equals("3") || status.equals("7") || status.equals("5") || status.equals("6")) {
vo.setProgress(BigDecimal.ONE);
}
if (taskId == null) {
return newStatus;
return vo;
}
if (!status.equals("2")) {
return newStatus;
return vo;
}
DroneImgMergeProgressVo progress = droneManager.getImgMergeProgress(taskId);
if (progress == null) {
return newStatus;
DroneImgMergeProgressVo imgMergeProgress = droneManager.getImgMergeProgress(taskId);
if (imgMergeProgress == null) {
return vo;
}
BigDecimal msg = progress.getMsg();
vo.setProgress(imgMergeProgress.getMsg());
BigDecimal msg = imgMergeProgress.getMsg();
if (msg != null && msg.compareTo(BigDecimal.ONE) == 0) {
newStatus = "3";
picture.setStatus(newStatus);
} else if (msg != null && msg.compareTo(BigDecimal.ZERO) >= 0 && msg.compareTo(BigDecimal.ONE) < 0) {
return newStatus;
return vo;
} else {
newStatus = "4";
picture.setStatus(newStatus);
@ -259,7 +272,7 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl<DroDroneBigPictur
if (!b) {
log.error("修改无人机大图信息状态失败");
}
return newStatus;
return vo;
}
/**
@ -268,7 +281,7 @@ public class DroDroneBigPictureServiceImpl extends ServiceImpl<DroDroneBigPictur
* @param pictureVo 大图信息
*/
@Override
public String isSynthesisCompleted(DroDroneBigPictureVo pictureVo) {
public DroDroneBigPictureProgressVo isSynthesisCompleted(DroDroneBigPictureVo pictureVo) {
DroDroneBigPicture picture = new DroDroneBigPicture();
BeanUtils.copyProperties(pictureVo, picture);
return this.isSynthesisCompleted(picture);