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 e8440ef7..1d72e153 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 @@ -10,16 +10,14 @@ import cn.hutool.json.JSONUtil; import com.supervision.enums.EnumMedicalRec; import com.supervision.exception.BusinessException; import com.supervision.manage.dto.HumanGenerateDTO; +import com.supervision.manage.service.DirectoryInfoManageService; import com.supervision.manage.service.FileManageService; import com.supervision.manage.service.HumanManageService; -import com.supervision.model.AskPatientAnswer; -import com.supervision.model.FileResource; -import com.supervision.model.Human; -import com.supervision.model.MedicalRec; +import com.supervision.manage.service.MaterialLibraryManageService; +import com.supervision.model.*; import com.supervision.service.AskPatientAnswerService; import com.supervision.service.HumanService; import com.supervision.service.MedicalRecService; -import com.supervision.util.OkHttpUtils; import com.supervision.util.UserUtil; import com.supervision.vo.manage.HumanReqVo; import jakarta.servlet.http.HttpServletResponse; @@ -49,6 +47,9 @@ public class HumanManageServiceImpl implements HumanManageService { private final FileManageService fileManageService; private final MedicalRecService medicalRecService; private final AskPatientAnswerService askPatientAnswerService; + private final MaterialLibraryManageService mediaLibraryManageService; + private final DirectoryInfoManageService directoryInfoManageService; + /** * 创建一个线程池,本意是用来异步调用数字人使用的 * 核心线程数:2 @@ -76,9 +77,22 @@ public class HumanManageServiceImpl implements HumanManageService { File imageFile = fileManageService.downloadFile(human.getImageFileId()); // 创建一个图片临时文件 log.info("提交文件生成,文件名:{}", FileUtil.getName(imageFile)); - generateSilent(human, imageFile, medicalId); - generateDynamic(human, imageFile, medicalId); + // 查询疾病信息 + 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); + + // 2.上传视频素材到文件夹 + // 静态 + generateSilent(human, imageFile, medicalId, directoryId); + // 动态 + generateDynamic(human, imageFile, medicalId, directoryId); humanService.updateById(human); } @@ -156,7 +170,20 @@ public class HumanManageServiceImpl implements HumanManageService { return humanService.removeById(id); } - private void generateSilent(Human human, File imageFile, String medicalId) throws Exception { + + /** + * 生成静态视频 + * + * @param human 数字人 + * @param imageFile 数字人图片 + * @param medicalId 病例id + * @param directoryId 目录id + * @throws Exception + */ + private void generateSilent(Human human, File imageFile, String medicalId, String directoryId) throws Exception { + + log.info("提交文件生成静态视频,文件名:{}", FileUtil.getName(imageFile)); + if (StrUtil.isAllBlank(human.getSilentVideoFileId(), human.getSilentTaskUid())) { HumanGenerateDTO silentDTO; try { @@ -203,13 +230,33 @@ public class HumanManageServiceImpl implements HumanManageService { medicalRecService.updateById(medicalRec1); human.setSilentTaskUid(silentDTO.getUid()); + // 上传视频素材 + List materialLibraryList = new ArrayList<>(); + MaterialLibrary mediaLibrarySilent = new MaterialLibrary(); + mediaLibrarySilent.setDirectoryId(directoryId); + mediaLibrarySilent.setFileResourceId(fileResource.getId()); + mediaLibrarySilent.setMaterialType(1); + materialLibraryList.add(mediaLibrarySilent); + mediaLibraryManageService.uploadMaterial(materialLibraryList); } } + } - } + /** + * 生成动态视频 + * + * @param human 数字人 + * @param imageFile 数字人图片 + * @param medicalId 病例id + * @param directoryId + * @return 动态视频资源 + * @throws Exception + */ + private void generateDynamic(Human human, File imageFile, String medicalId, String directoryId) throws Exception { + + log.info("提交文件生成动态视频,文件名:{}", imageFile.getPath()); - private void generateDynamic(Human human, File imageFile, String medicalId) throws Exception { if (StrUtil.isAllBlank(human.getDynamicVideoFileId(), human.getDynamicTaskUid())) { HumanGenerateDTO dynamicDTO; try { @@ -264,9 +311,17 @@ public class HumanManageServiceImpl implements HumanManageService { medicalRec1.setId(medicalId); medicalRecService.updateById(medicalRec1); human.setDynamicTaskUid(dynamicDTO.getUid()); + + // 视频上传素材 + List materialLibraryList = new ArrayList<>(); + MaterialLibrary mediaLibraryDynamic = new MaterialLibrary(); + mediaLibraryDynamic.setDirectoryId(directoryId); + mediaLibraryDynamic.setFileResourceId(fileResource.getId()); + mediaLibraryDynamic.setMaterialType(1); + materialLibraryList.add(mediaLibraryDynamic); + mediaLibraryManageService.uploadMaterial(materialLibraryList); } } - } private FileResource convertBase64ToFile(String prefixName, String imageFileName, String base64) throws Exception { @@ -297,6 +352,14 @@ public class HumanManageServiceImpl implements HumanManageService { // 上传图片 FileResource fileResource = fileManageService.uploadFile(imageFile, imageFile.getContentType()); + // 上传照片素材(目前导入中上传素材有且仅有一个图片) + List materialLibraryList = new ArrayList<>(); + MaterialLibrary mediaLibrary = new MaterialLibrary(); + mediaLibrary.setFileResourceId(fileResource.getId()); + mediaLibrary.setMaterialType(0); + materialLibraryList.add(mediaLibrary); + mediaLibraryManageService.uploadMaterial(materialLibraryList); + // 生成数字人 Human human = new Human(); human.setImageFileId(fileResource.getId()); diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java index 01231446..545a36bd 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java @@ -786,7 +786,7 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService { .eq(AskPatientAnswer::getMedicalId, medicalRecId) .list(); for (AskPatientAnswer askPatientAnswer : askPatientAnswers) { - if (null != askPatientAnswer){ + if (null != askPatientAnswer) { patientAnswerString = patientAnswerString + askPatientAnswer.getQuestion() + "," + askPatientAnswer.getAnswer() + ","; } } diff --git a/virtual-patient-manage/src/test/java/com/supervision/manage/MedicalAiAnswerSetter.java b/virtual-patient-manage/src/test/java/com/supervision/manage/MedicalAiAnswerSetter.java index 74ebf439..f641f947 100644 --- a/virtual-patient-manage/src/test/java/com/supervision/manage/MedicalAiAnswerSetter.java +++ b/virtual-patient-manage/src/test/java/com/supervision/manage/MedicalAiAnswerSetter.java @@ -122,4 +122,36 @@ public class MedicalAiAnswerSetter { } askPatientAnswerService.saveOrUpdate(askPatientAnswer); } + + public void test(){ + // 静态视频 + String staticFilePath = "C:\\Users\\19234\\Desktop\\测试\\nidshdish.png"; + File file = new File(staticFilePath); + String name = file.getName(); + File newFile = new File("hallo"+name); // 新文件名 + + // 修改文件名 + boolean renamed = file.renameTo(newFile); + + if (renamed) { + System.out.println("文件重命名成功。"); + } else { + System.out.println("文件重命名失败。"); + } + + // 检查文件是否存在,如果存在则删除 + if (newFile.exists()) { + boolean deleted = newFile.delete(); + if (deleted) { + System.out.println("文件删除成功。"); + } else { + System.out.println("文件删除失败。"); + } + } else { + System.out.println("文件不存在,无法删除。"); + } + } + + + } diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/MedicalRecMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/MedicalRecMapper.java index 71d83e19..a62c5757 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/MedicalRecMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/MedicalRecMapper.java @@ -8,6 +8,8 @@ import com.supervision.vo.manage.MedicalRecPageReqVO; import com.supervision.vo.manage.MedicalRecPageResVO; import org.apache.ibatis.annotations.Param; +import java.util.Map; + /** * @author flevance * @description 针对表【vp_medical_rec(病历表)】的数据库操作Mapper @@ -33,6 +35,15 @@ public interface MedicalRecMapper extends BaseMapper { */ void updateMedicalRecNo(@Param("code") String code, @Param("gender") String gender, @Param("id") String id); + + + /** + * 查询疾病信息根据病例id + * @param medicalRecId 病例id + * @return 疾病的名称(diseaseName)和别名(diseaseNameAlias) + */ + Map queryDissesInfoByMedicalRecId(String medicalRecId); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/MedicalRecService.java b/virtual-patient-model/src/main/java/com/supervision/service/MedicalRecService.java index d1c2a8aa..4594f18b 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/MedicalRecService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/MedicalRecService.java @@ -8,6 +8,7 @@ import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.vo.manage.MedicalRecQaVO; import java.util.List; +import java.util.Map; /** * @author flevance @@ -44,4 +45,12 @@ public interface MedicalRecService extends IService { */ void saveAskPatientAnswerListByMedicalRec(List qaList, String medicalRecId); + + /** + * 查询疾病信息根据病例id + * @param medicalRecId 病例id + * @return 疾病的名称(diseaseName)和别名(diseaseNameAlias) + */ + Map queryDissesInfoByMedicalRecId(String medicalRecId); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/MedicalRecServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/MedicalRecServiceImpl.java index 1aad0412..21db47a1 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/MedicalRecServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/MedicalRecServiceImpl.java @@ -166,6 +166,16 @@ public class MedicalRecServiceImpl extends ServiceImpl queryDissesInfoByMedicalRecId(String medicalRecId) { + return this.baseMapper.queryDissesInfoByMedicalRecId(medicalRecId); + } } diff --git a/virtual-patient-model/src/main/resources/mapper/MedicalRecMapper.xml b/virtual-patient-model/src/main/resources/mapper/MedicalRecMapper.xml index 43c915ac..dd12d887 100644 --- a/virtual-patient-model/src/main/resources/mapper/MedicalRecMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/MedicalRecMapper.xml @@ -37,7 +37,8 @@ - id,no,patient_id,patient_head_pic,digital_human_type, + id + ,no,patient_id,patient_head_pic,digital_human_type, patient_name,patient_gender,patient_age, patient_marriage,patient_profession,patient_phone, native_place,patient_nation,patient_postcode, @@ -62,7 +63,7 @@ t1.id as medicalId, t3.disease_name as diagnosisPrimaryStr, t1.no as no, - t1.patient_id as patientId, + t1.patient_id as patientId, t1.patient_name as name, t1.patient_age as age, t1.patient_gender as gender, @@ -70,7 +71,7 @@ t1.patient_head_pic as patientHeadPic, t1.patient_self_desc as patientSelfDesc, t1.status as medicalStatus, - t1.medical_status as medicalDataStatus, + t1.medical_status as medicalDataStatus, if(t1.update_time is null, t1.create_time, t1.update_time) as time from vp_medical_rec t1 left join vp_disease t3 on t1.disease_id = t3.id @@ -93,4 +94,13 @@ order by time desc + + +