逻辑修正
This commit is contained in:
parent
f0b8d85dcc
commit
ff39208d80
@ -386,14 +386,13 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
if (faceSampleList.isEmpty()) {
|
if (faceSampleList.isEmpty()) {
|
||||||
log.info("faceId:{} sample list not exist", faceId);
|
log.info("faceId:{} sample list not exist", faceId);
|
||||||
}
|
}
|
||||||
if (automatic == 1) {
|
if (templateBiz.determineTemplateCanGenerate(templateId, faceId, false)) {
|
||||||
if (templateBiz.determineTemplateCanGenerate(templateId, faceId, false)) {
|
// 临时写死,当自动生成视频,切片也算合成中,并更新状态
|
||||||
// 临时写死,当自动生成视频,切片也算合成中,并更新状态
|
taskStatusBiz.setFaceCutStatus(face.getId(), 0);
|
||||||
taskStatusBiz.setFaceCutStatus(face.getId(), 0);
|
} else {
|
||||||
}
|
taskStatusBiz.setFaceCutStatus(face.getId(), 2);
|
||||||
}
|
}
|
||||||
List<Long> faceSampleIds = faceSampleList.stream().map(FaceSampleEntity::getId).collect(Collectors.toList());
|
List<Long> faceSampleIds = faceSampleList.stream().map(FaceSampleEntity::getId).collect(Collectors.toList());
|
||||||
List<SourceEntity> sourceList = sourceMapper.listVideoByScenicFaceRelation(face.getScenicId(), faceId);
|
|
||||||
// ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId());
|
// ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(face.getScenicId());
|
||||||
// if (automatic > 0) {
|
// if (automatic > 0) {
|
||||||
// TaskReqQuery taskReqQuery = new TaskReqQuery();
|
// TaskReqQuery taskReqQuery = new TaskReqQuery();
|
||||||
@ -434,7 +433,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
task.templateId = templateId;
|
task.templateId = templateId;
|
||||||
task.memberId = face.getMemberId();
|
task.memberId = face.getMemberId();
|
||||||
task.callback = () -> {
|
task.callback = () -> {
|
||||||
log.info("task callback");
|
log.info("task callback: {}", task);
|
||||||
boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId);
|
boolean canGenerate = templateBiz.determineTemplateCanGenerate(templateId, faceId);
|
||||||
if (!canGenerate) {
|
if (!canGenerate) {
|
||||||
log.info("task callback: 不能生成,templateId: {}", templateId);
|
log.info("task callback: 不能生成,templateId: {}", templateId);
|
||||||
@ -529,10 +528,7 @@ public class TaskTaskServiceImpl implements TaskService {
|
|||||||
};
|
};
|
||||||
if (faceSampleIds.isEmpty()) {
|
if (faceSampleIds.isEmpty()) {
|
||||||
// 没有人脸样本
|
// 没有人脸样本
|
||||||
if (!sourceList.isEmpty()) {
|
task.callback.onInvoke();
|
||||||
// 但是有原片
|
|
||||||
task.callback.onInvoke();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
VideoPieceGetter.addTask(task);
|
VideoPieceGetter.addTask(task);
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,9 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -112,6 +114,7 @@ public class VideoPieceGetter {
|
|||||||
// taskStatusBiz.setFaceCutStatus(task.faceId, 0);
|
// taskStatusBiz.setFaceCutStatus(task.faceId, 0);
|
||||||
// }
|
// }
|
||||||
AtomicBoolean invoke = new AtomicBoolean(false);
|
AtomicBoolean invoke = new AtomicBoolean(false);
|
||||||
|
ThreadPoolExecutor executor = new ThreadPoolExecutor(8, 16, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(32));
|
||||||
List<String> currentPlaceholder = new ArrayList<>();
|
List<String> currentPlaceholder = new ArrayList<>();
|
||||||
List<FaceSampleEntity> list = faceSampleMapper.listByIds(task.getFaceSampleIds());
|
List<FaceSampleEntity> list = faceSampleMapper.listByIds(task.getFaceSampleIds());
|
||||||
Collection<List<FaceSampleEntity>> collection = list.stream()
|
Collection<List<FaceSampleEntity>> collection = list.stream()
|
||||||
@ -124,7 +127,7 @@ public class VideoPieceGetter {
|
|||||||
.collect(Collectors.groupingBy(FaceSampleEntity::getDeviceId))
|
.collect(Collectors.groupingBy(FaceSampleEntity::getDeviceId))
|
||||||
.values();
|
.values();
|
||||||
collection.forEach(faceSampleList -> {
|
collection.forEach(faceSampleList -> {
|
||||||
new Thread(() -> {
|
executor.execute(() -> {
|
||||||
faceSampleList.parallelStream().forEach(faceSample -> {
|
faceSampleList.parallelStream().forEach(faceSample -> {
|
||||||
DeviceEntity device = deviceRepository.getDevice(faceSample.getDeviceId());
|
DeviceEntity device = deviceRepository.getDevice(faceSample.getDeviceId());
|
||||||
DeviceConfigEntity config = deviceRepository.getDeviceConfig(faceSample.getDeviceId());
|
DeviceConfigEntity config = deviceRepository.getDeviceConfig(faceSample.getDeviceId());
|
||||||
@ -252,10 +255,17 @@ public class VideoPieceGetter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}).start();
|
});
|
||||||
});
|
});
|
||||||
if (task.faceId != null) {
|
try {
|
||||||
taskStatusBiz.setFaceCutStatus(task.faceId, 1);
|
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
|
||||||
|
executor.shutdown();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
if (task.faceId != null) {
|
||||||
|
taskStatusBiz.setFaceCutStatus(task.faceId, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (null != task.getCallback()) {
|
if (null != task.getCallback()) {
|
||||||
if (!invoke.get()) {
|
if (!invoke.get()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user