|
|
@ -19,6 +19,7 @@ import com.supervision.model.MedicalRec;
|
|
|
|
import com.supervision.service.AskPatientAnswerService;
|
|
|
|
import com.supervision.service.AskPatientAnswerService;
|
|
|
|
import com.supervision.service.HumanService;
|
|
|
|
import com.supervision.service.HumanService;
|
|
|
|
import com.supervision.service.MedicalRecService;
|
|
|
|
import com.supervision.service.MedicalRecService;
|
|
|
|
|
|
|
|
import com.supervision.util.OkHttpUtils;
|
|
|
|
import com.supervision.util.UserUtil;
|
|
|
|
import com.supervision.util.UserUtil;
|
|
|
|
import com.supervision.vo.manage.HumanReqVo;
|
|
|
|
import com.supervision.vo.manage.HumanReqVo;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
@ -62,6 +64,8 @@ public class HumanManageServiceImpl implements HumanManageService {
|
|
|
|
private String silent;
|
|
|
|
private String silent;
|
|
|
|
@Value("${humanGenerate.dynamic}")
|
|
|
|
@Value("${humanGenerate.dynamic}")
|
|
|
|
private String dynamic;
|
|
|
|
private String dynamic;
|
|
|
|
|
|
|
|
@Value("${humanGenerate.status}")
|
|
|
|
|
|
|
|
private String status;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@ -162,24 +166,40 @@ public class HumanManageServiceImpl implements HumanManageService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 保存静态视频
|
|
|
|
// 保存静态视频
|
|
|
|
if (silentDTO.getCode() == 200) {
|
|
|
|
if (silentDTO.getCode() == 200) {
|
|
|
|
if (StrUtil.isNotBlank(silentDTO.getVideo())) {
|
|
|
|
HumanGenerateDTO silentDTOGet;
|
|
|
|
// 如果已经生成了视频,那么直接拿到这个视频
|
|
|
|
String silentDTOGetStatus = "";
|
|
|
|
FileResource fileResource = convertBase64ToFile("silent", FileUtil.getName(imageFile), silentDTO.getVideo());
|
|
|
|
do {
|
|
|
|
|
|
|
|
String post = HttpUtil.get(humanBaseUrl + status + "/" + silentDTO.getUid());
|
|
|
|
|
|
|
|
silentDTOGet = JSONUtil.toBean(post, HumanGenerateDTO.class);
|
|
|
|
|
|
|
|
silentDTOGetStatus = silentDTOGet.getStatus();
|
|
|
|
|
|
|
|
} while (!silentDTOGetStatus.equals("completed"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FileResource fileResource = convertBase64ToFile("silent", FileUtil.getName(imageFile), silentDTOGet.getVideo());
|
|
|
|
human.setSilentVideoFileId(fileResource.getId());
|
|
|
|
human.setSilentVideoFileId(fileResource.getId());
|
|
|
|
human.setImageName(fileResource.getFileName());
|
|
|
|
human.setImageName(fileResource.getFileName());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<AskPatientAnswer> askPatientAnswerList = new ArrayList<>();
|
|
|
|
// 诊断闻讯绑定静态视频
|
|
|
|
// 诊断闻讯绑定静态视频
|
|
|
|
AskPatientAnswer askPatientAnswer = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "静态视频");
|
|
|
|
AskPatientAnswer askPatientAnswer = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"静默视频\"");
|
|
|
|
AskPatientAnswer patientAnswer = new AskPatientAnswer();
|
|
|
|
AskPatientAnswer patientAnswer = new AskPatientAnswer();
|
|
|
|
patientAnswer.setId(askPatientAnswer.getId());
|
|
|
|
patientAnswer.setId(askPatientAnswer.getId());
|
|
|
|
patientAnswer.setAnswerResourceId(fileResource.getId());
|
|
|
|
patientAnswer.setAnswerResourceId(fileResource.getId());
|
|
|
|
askPatientAnswerService.updateById(patientAnswer);
|
|
|
|
askPatientAnswerList.add(patientAnswer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 默认回复
|
|
|
|
|
|
|
|
AskPatientAnswer askPatientAnswerMoRen = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"默认回复\"");
|
|
|
|
|
|
|
|
AskPatientAnswer patientAnswerMoRen = new AskPatientAnswer();
|
|
|
|
|
|
|
|
patientAnswerMoRen.setId(askPatientAnswerMoRen.getId());
|
|
|
|
|
|
|
|
patientAnswerMoRen.setAnswer("默认回复");
|
|
|
|
|
|
|
|
askPatientAnswerList.add(patientAnswerMoRen);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
askPatientAnswerService.updateBatchById(askPatientAnswerList);
|
|
|
|
|
|
|
|
|
|
|
|
// 完成
|
|
|
|
// 完成
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode());
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode());
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
}
|
|
|
|
|
|
|
|
human.setSilentTaskUid(silentDTO.getUid());
|
|
|
|
human.setSilentTaskUid(silentDTO.getUid());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -200,25 +220,48 @@ public class HumanManageServiceImpl implements HumanManageService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dynamicDTO.getCode() == 200) {
|
|
|
|
if (dynamicDTO.getCode() == 200) {
|
|
|
|
if (StrUtil.isNotBlank(dynamicDTO.getVideo())) {
|
|
|
|
|
|
|
|
|
|
|
|
HumanGenerateDTO dynamicDTOGet;
|
|
|
|
|
|
|
|
String dynamicDTOGetStatus = "";
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
|
|
|
String post = HttpUtil.get(humanBaseUrl + status + "/" + dynamicDTO.getUid());
|
|
|
|
|
|
|
|
dynamicDTOGet = JSONUtil.toBean(post, HumanGenerateDTO.class);
|
|
|
|
|
|
|
|
dynamicDTOGetStatus = dynamicDTOGet.getStatus();
|
|
|
|
|
|
|
|
} while (!dynamicDTOGetStatus.equals("completed"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 如果已经生成了视频,那么直接拿到这个视频
|
|
|
|
// 如果已经生成了视频,那么直接拿到这个视频
|
|
|
|
FileResource fileResource = convertBase64ToFile("dynamic", FileUtil.getName(imageFile), dynamicDTO.getVideo());
|
|
|
|
FileResource fileResource = convertBase64ToFile("dynamic", FileUtil.getName(imageFile), dynamicDTOGet.getVideo());
|
|
|
|
human.setDynamicVideoFileId(fileResource.getId());
|
|
|
|
human.setDynamicVideoFileId(fileResource.getId());
|
|
|
|
human.setImageName(fileResource.getFileName());
|
|
|
|
human.setImageName(fileResource.getFileName());
|
|
|
|
|
|
|
|
|
|
|
|
// 诊断闻讯绑定动态视频
|
|
|
|
// 诊断闻讯绑定动态视频
|
|
|
|
AskPatientAnswer askPatientAnswer = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "动态视频");
|
|
|
|
List<AskPatientAnswer> askPatientAnswerList = new ArrayList<>();
|
|
|
|
AskPatientAnswer patientAnswer = new AskPatientAnswer();
|
|
|
|
AskPatientAnswer askPatientAnswerDynamic = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"动态视频\"");
|
|
|
|
patientAnswer.setId(askPatientAnswer.getId());
|
|
|
|
AskPatientAnswer patientAnswerDynamic = new AskPatientAnswer();
|
|
|
|
patientAnswer.setAnswerResourceId(fileResource.getId());
|
|
|
|
patientAnswerDynamic.setId(askPatientAnswerDynamic.getId());
|
|
|
|
askPatientAnswerService.updateById(patientAnswer);
|
|
|
|
patientAnswerDynamic.setAnswerResourceId(fileResource.getId());
|
|
|
|
|
|
|
|
askPatientAnswerList.add(patientAnswerDynamic);
|
|
|
|
|
|
|
|
// 你好
|
|
|
|
|
|
|
|
AskPatientAnswer askPatientAnswerHallo = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"你好\"");
|
|
|
|
|
|
|
|
AskPatientAnswer patientAnswerHallo = new AskPatientAnswer();
|
|
|
|
|
|
|
|
patientAnswerHallo.setId(askPatientAnswerHallo.getId());
|
|
|
|
|
|
|
|
patientAnswerHallo.setAnswer("你好");
|
|
|
|
|
|
|
|
askPatientAnswerList.add(patientAnswerHallo);
|
|
|
|
|
|
|
|
// 异常
|
|
|
|
|
|
|
|
AskPatientAnswer askPatientAnswerError = askPatientAnswerService.queryAnswerIdByMedicalId(medicalId, "\"错误\"");
|
|
|
|
|
|
|
|
AskPatientAnswer patientAnswerError = new AskPatientAnswer();
|
|
|
|
|
|
|
|
patientAnswerError.setId(askPatientAnswerError.getId());
|
|
|
|
|
|
|
|
patientAnswerError.setAnswer("异常");
|
|
|
|
|
|
|
|
askPatientAnswerList.add(patientAnswerError);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
askPatientAnswerService.updateBatchById(askPatientAnswerList);
|
|
|
|
|
|
|
|
|
|
|
|
// 完成
|
|
|
|
// 完成
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.COMPLETE.getCode());
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.COMPLETE.getCode());
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
}
|
|
|
|
|
|
|
|
human.setDynamicTaskUid(dynamicDTO.getUid());
|
|
|
|
human.setDynamicTaskUid(dynamicDTO.getUid());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -238,14 +281,13 @@ public class HumanManageServiceImpl implements HumanManageService {
|
|
|
|
|
|
|
|
|
|
|
|
@SneakyThrows
|
|
|
|
@SneakyThrows
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional
|
|
|
|
|
|
|
|
public boolean createHuman(MultipartFile imageFile, String medicalId) {
|
|
|
|
public boolean createHuman(MultipartFile imageFile, String medicalId) {
|
|
|
|
// 查询病例状态
|
|
|
|
// 查询病例状态
|
|
|
|
MedicalRec medicalRec = medicalRecService.lambdaQuery()
|
|
|
|
MedicalRec medicalRec = medicalRecService.lambdaQuery()
|
|
|
|
.eq(MedicalRec::getMedicalStatus, EnumMedicalRec.DIGITAL_HUMAN_CREATED.getCode())
|
|
|
|
.eq(MedicalRec::getMedicalStatus, EnumMedicalRec.DIGITAL_HUMAN_CREATED.getCode())
|
|
|
|
.eq(MedicalRec::getId, medicalId)
|
|
|
|
.eq(MedicalRec::getId, medicalId)
|
|
|
|
.one();
|
|
|
|
.one();
|
|
|
|
Assert.isTrue(null == medicalRec, "请先导入病例后再操作");
|
|
|
|
Assert.isTrue(null != medicalRec, "请先导入病例后再操作");
|
|
|
|
|
|
|
|
|
|
|
|
// 上传图片
|
|
|
|
// 上传图片
|
|
|
|
FileResource fileResource = fileManageService.uploadFile(imageFile, imageFile.getContentType());
|
|
|
|
FileResource fileResource = fileManageService.uploadFile(imageFile, imageFile.getContentType());
|
|
|
@ -258,22 +300,24 @@ public class HumanManageServiceImpl implements HumanManageService {
|
|
|
|
human.setUpdateUserId(UserUtil.getUser().getId());
|
|
|
|
human.setUpdateUserId(UserUtil.getUser().getId());
|
|
|
|
humanService.save(human);
|
|
|
|
humanService.save(human);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定病例
|
|
|
|
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode());
|
|
|
|
|
|
|
|
medicalRec1.setHumanId(human.getId());
|
|
|
|
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Human one = humanService.lambdaQuery().eq(Human::getId, human.getId()).one();
|
|
|
|
|
|
|
|
|
|
|
|
// 异步调用生成数字人
|
|
|
|
// 异步调用生成数字人
|
|
|
|
humanExecutor.submit(() -> {
|
|
|
|
humanExecutor.submit(() -> {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
generateHuman(human.getId(), medicalId);
|
|
|
|
generateHuman(one.getId(), medicalId);
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("createHuman:生成数字人异常", e);
|
|
|
|
log.error("createHuman:生成数字人异常", e);
|
|
|
|
throw new BusinessException("生成数字人异常");
|
|
|
|
throw new BusinessException("生成数字人异常");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定病例
|
|
|
|
|
|
|
|
MedicalRec medicalRec1 = new MedicalRec();
|
|
|
|
|
|
|
|
medicalRec1.setMedicalStatus(EnumMedicalRec.ESTABLISHED_RECORD.getCode());
|
|
|
|
|
|
|
|
medicalRec1.setHumanId(human.getId());
|
|
|
|
|
|
|
|
medicalRec1.setId(medicalId);
|
|
|
|
|
|
|
|
medicalRecService.updateById(medicalRec1);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|