From 51df578a8e7e5dc353aa0e54b788f8034569faba Mon Sep 17 00:00:00 2001 From: longbao <1923439579@qq.com> Date: Sat, 16 Nov 2024 12:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B5=81=E7=A8=8B=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E3=80=91=20=E4=BF=AE=E6=94=B9=E7=97=85=E4=BE=8B?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=97=B6=E4=B8=8A=E4=BC=A0=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/HumanManageServiceImpl.java | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/HumanManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/HumanManageServiceImpl.java index 1d72e153..934a5789 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/HumanManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/HumanManageServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.supervision.enums.EnumMedicalRec; import com.supervision.exception.BusinessException; import com.supervision.manage.dto.HumanGenerateDTO; @@ -16,6 +17,7 @@ import com.supervision.manage.service.HumanManageService; import com.supervision.manage.service.MaterialLibraryManageService; import com.supervision.model.*; import com.supervision.service.AskPatientAnswerService; +import com.supervision.service.DirectoryInfoService; import com.supervision.service.HumanService; import com.supervision.service.MedicalRecService; import com.supervision.util.UserUtil; @@ -24,6 +26,7 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -49,6 +52,7 @@ public class HumanManageServiceImpl implements HumanManageService { private final AskPatientAnswerService askPatientAnswerService; private final MaterialLibraryManageService mediaLibraryManageService; private final DirectoryInfoManageService directoryInfoManageService; + private final DirectoryInfoService directoryInfoService; /** * 创建一个线程池,本意是用来异步调用数字人使用的 @@ -75,18 +79,25 @@ public class HumanManageServiceImpl implements HumanManageService { Human human = humanService.getOptById(humanId).orElseThrow(() -> new BusinessException("数字人形象不存在")); File imageFile = fileManageService.downloadFile(human.getImageFileId()); - // 创建一个图片临时文件 - log.info("提交文件生成,文件名:{}", FileUtil.getName(imageFile)); + // 查询疾病信息 Map dissesInfoByMedicalRecId = medicalRecService.queryDissesInfoByMedicalRecId(medicalId); // 保存视频到素材中心 // 1.创建病例文件夹 - DirectoryInfo directoryInfo = new DirectoryInfo(); - directoryInfo.setDirectoryDesc(dissesInfoByMedicalRecId.get("diseaseNameAlias")); - directoryInfo.setDirectoryName(dissesInfoByMedicalRecId.get("diseaseName")); - String directoryId = directoryInfoManageService.addDirectory(directoryInfo); + String directoryId; + LambdaQueryChainWrapper diseaseName = directoryInfoService.lambdaQuery() + .eq(DirectoryInfo::getDirectoryName, dissesInfoByMedicalRecId.get("diseaseName")); + if (diseaseName.count() == 0) { + DirectoryInfo directoryInfo = new DirectoryInfo(); + directoryInfo.setDirectoryDesc(dissesInfoByMedicalRecId.get("diseaseNameAlias")); + directoryInfo.setDirectoryName(dissesInfoByMedicalRecId.get("diseaseName")); + directoryId = directoryInfoManageService.addDirectory(directoryInfo); + } else { + DirectoryInfo one = diseaseName.one(); + directoryId = one.getId(); + } // 2.上传视频素材到文件夹 // 静态 @@ -202,7 +213,7 @@ public class HumanManageServiceImpl implements HumanManageService { silentDTOGetStatus = silentDTOGet.getStatus(); } while (!silentDTOGetStatus.equals("completed")); - FileResource fileResource = convertBase64ToFile("silent", FileUtil.getName(imageFile), silentDTOGet.getVideo()); + FileResource fileResource = convertBase64ToFile("silent", human.getImageName(), silentDTOGet.getVideo()); human.setSilentVideoFileId(fileResource.getId()); human.setImageName(fileResource.getFileName()); @@ -255,7 +266,7 @@ public class HumanManageServiceImpl implements HumanManageService { */ private void generateDynamic(Human human, File imageFile, String medicalId, String directoryId) throws Exception { - log.info("提交文件生成动态视频,文件名:{}", imageFile.getPath()); + log.info("提交文件生成动态视频,文件名:{}", FileUtil.getName(imageFile)); if (StrUtil.isAllBlank(human.getDynamicVideoFileId(), human.getDynamicTaskUid())) { HumanGenerateDTO dynamicDTO; @@ -279,7 +290,7 @@ public class HumanManageServiceImpl implements HumanManageService { // 如果已经生成了视频,那么直接拿到这个视频 - FileResource fileResource = convertBase64ToFile("dynamic", FileUtil.getName(imageFile), dynamicDTOGet.getVideo()); + FileResource fileResource = convertBase64ToFile("dynamic", human.getImageName(), dynamicDTOGet.getVideo()); human.setDynamicVideoFileId(fileResource.getId()); human.setImageName(fileResource.getFileName()); @@ -303,7 +314,7 @@ public class HumanManageServiceImpl implements HumanManageService { patientAnswerError.setAnswer("异常"); askPatientAnswerList.add(patientAnswerError); - askPatientAnswerService.updateBatchById(askPatientAnswerList); + askPatientAnswerService.updateBatchById(askPatientAnswerList); // 完成 MedicalRec medicalRec1 = new MedicalRec(); @@ -328,10 +339,12 @@ public class HumanManageServiceImpl implements HumanManageService { String prefix = FileUtil.getPrefix(imageFileName); // 创建一个图片临时文件 - File tempFile = FileUtil.createTempFile(prefixName + "_" + prefix, ".mp4", true); - + File tempFile = new File(prefixName + "_" + prefix + ".mpf"); +// File tempFile = FileUtil.createTempFile(prefixName + "_" + prefix, ".mp4", true); Base64.decodeToFile(base64, tempFile); - return fileManageService.uploadFile(tempFile); + FileResource fileResource = fileManageService.uploadFile(tempFile); + tempFile.delete(); + return fileResource; }