From 6c1f449b168e1d4f5d42a07075f3124592d96a09 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Mon, 22 Apr 2024 15:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E9=9A=8F=E8=AE=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PatientQuestionSubmitResultDTO.java | 2 + .../homepage/HomePageController.java | 9 +- .../service/homepage/HomePageService.java | 3 + .../homepage/Impl/HomePageServiceImpl.java | 136 +++++++++++++++++- 4 files changed, 146 insertions(+), 4 deletions(-) diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientquestionsubmitresult/PatientQuestionSubmitResultDTO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientquestionsubmitresult/PatientQuestionSubmitResultDTO.java index da91fbfe..bd02b986 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientquestionsubmitresult/PatientQuestionSubmitResultDTO.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientquestionsubmitresult/PatientQuestionSubmitResultDTO.java @@ -4,6 +4,7 @@ import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmi import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; @@ -13,6 +14,7 @@ import java.util.List; * @author : youxilong * @date : 2024/4/7 13:48 */ +@EqualsAndHashCode(callSuper = true) @Data public class PatientQuestionSubmitResultDTO extends PatientQuestionSubmitResult { diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java index 4fef9817..c88d202e 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java @@ -2,11 +2,10 @@ package com.xinelu.mobile.controller.homepage; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; import com.xinelu.mobile.service.homepage.HomePageService; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -55,4 +54,8 @@ public class HomePageController { return homePageService.selectQuestionSubmit(patientTaskExecuteRecordId); } + @PostMapping("/updateTaskExecuteRecord") + public AjaxResult updatePatientTaskExecuteRecord(@RequestBody PatientQuestionSubmitResultDTO dto) { + return homePageService.updatePatientTaskExecuteRecord(dto); + } } diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java index 8b527c78..516c06c0 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java @@ -3,6 +3,7 @@ package com.xinelu.mobile.service.homepage; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.page.TableDataInfo; import com.xinelu.manage.domain.scriptInfo.ScriptInfo; +import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; public interface HomePageService { @@ -38,4 +39,6 @@ public interface HomePageService { * @return AjaxResult */ AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId); + + AjaxResult updatePatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto); } \ No newline at end of file diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java index b94d863e..d628be23 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java @@ -1,18 +1,33 @@ package com.xinelu.mobile.service.homepage.Impl; +import com.xinelu.common.constant.TaskCreateTypeConstant; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.enums.NodeExecuteStatusEnum; import com.xinelu.common.enums.RouteNodeNameEnum; +import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.PageServiceUtil; import com.xinelu.common.utils.bean.BeanUtils; +import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult; +import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult; +import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult; +import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; import com.xinelu.manage.domain.questioninfo.QuestionInfo; import com.xinelu.manage.domain.questionsubject.QuestionSubject; import com.xinelu.manage.domain.scriptInfo.ScriptInfo; +import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; +import com.xinelu.manage.dto.patientquestionoptionresult.PatientQuestionOptionResultDTO; +import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO; +import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; +import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper; +import com.xinelu.manage.mapper.patientquestionsubjectresult.PatientQuestionSubjectResultMapper; import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper; +import com.xinelu.manage.mapper.patienttaskexecuterecord.PatientTaskExecuteRecordMapper; import com.xinelu.manage.mapper.questioninfo.QuestionInfoMapper; import com.xinelu.manage.mapper.questionsubject.QuestionSubjectMapper; import com.xinelu.manage.mapper.questionsubjectoption.QuestionSubjectOptionMapper; import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper; +import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.vo.questionInfo.QuestionVO; import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO; import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO; @@ -22,8 +37,10 @@ import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -48,6 +65,16 @@ public class HomePageServiceImpl implements HomePageService { private QuestionSubjectOptionMapper questionSubjectOptionMapper; @Resource private PatientQuestionSubmitResultMapper submitResultMapper; + @Resource + private PatientQuestionSubmitResultMapper patientQuestionSubmitResultMapper; + @Resource + private PatientQuestionSubjectResultMapper patientQuestionSubjectResultMapper; + @Resource + private PatientQuestionOptionResultMapper patientQuestionOptionResultMapper; + @Resource + private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper; + @Resource + private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper; /** * 我的随访列表 @@ -59,6 +86,7 @@ public class HomePageServiceImpl implements HomePageService { public TableDataInfo myFollowUp(MyFollowUpVO myFollowUp) { myFollowUp.setRouteNodeName(RouteNodeNameEnum.AFTER_DISCHARGE.getInfo()); List myFollowUpList = homePageMapper.selectManageRouteNode(myFollowUp); + int total = myFollowUpList.size(); if (CollectionUtils.isEmpty(myFollowUpList)) { return pageServiceUtil.getDataTable(new ArrayList<>()); } @@ -75,7 +103,9 @@ public class HomePageServiceImpl implements HomePageService { Integer pageSize = myFollowUp.getSize(); myFollowUpList = myFollowUpList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList()); } - return pageServiceUtil.getDataTable(myFollowUpList); + TableDataInfo dataTable = pageServiceUtil.getDataTable(myFollowUpList); + dataTable.setTotal(total); + return dataTable; } /** @@ -130,4 +160,108 @@ public class HomePageServiceImpl implements HomePageService { public AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId) { return AjaxResult.success(submitResultMapper.selectResultByTaskExecuteRecordId(patientTaskExecuteRecordId, null)); } + + /** + * 人工随访代办处理 + * + * @param dto 患者问卷提交结果信息表DTO + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult updatePatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto) { + String routeHandlePerson = dto.getRouteHandlePerson(); + LocalDateTime time = LocalDateTime.now(); + // 更新节点任务表 + updateSignPatientManageRouteNode(dto, routeHandlePerson, time); + // 新增患者管理任务执行记录 + Long taskExecuteRecordId = insertPatientTaskExecuteRecord(dto, routeHandlePerson, time); + PatientQuestionSubmitResult patientQuestionSubmitResult = new PatientQuestionSubmitResult(); + BeanUtils.copyBeanProp(patientQuestionSubmitResult, dto); + patientQuestionSubmitResult.setCreateBy(routeHandlePerson); + patientQuestionSubmitResult.setCreateTime(time); + patientQuestionSubmitResult.setTaskExecuteRecordId(taskExecuteRecordId); + // 新增患者问卷提交结果 + if (patientQuestionSubmitResultMapper.insertPatientQuestionSubmitResult(patientQuestionSubmitResult) <= 0) { + throw new ServiceException("新增患者问卷提交结果失败"); + } + // 获取到患者问卷题目提交结果信息DTO + List subjectResultList = dto.getSubjectResultDTOList(); + // 初始化患者问卷题目提交结果信息 + List patientQuestionSubjectResults = new ArrayList<>(); + // 获取到患者问卷题目选项提交结果DTO + List patientQuestionOptionResults = new ArrayList<>(); + for (PatientQuestionSubjectResultDTO questionSubjectResult : subjectResultList) { + PatientQuestionSubjectResult saveQuestionSubject = new PatientQuestionSubjectResult(); + BeanUtils.copyBeanProp(saveQuestionSubject, questionSubjectResult); + saveQuestionSubject.setQuestionSubmitResultId(patientQuestionSubmitResult.getId()); + saveQuestionSubject.setCreateBy(routeHandlePerson); + saveQuestionSubject.setCreateTime(time); + patientQuestionSubjectResults.add(saveQuestionSubject); + if (CollectionUtils.isNotEmpty(questionSubjectResult.getOptionResultList())) { + patientQuestionOptionResults.addAll(questionSubjectResult.getOptionResultList()); + } + } + // 新增患者问卷题目提交结果 + if (patientQuestionSubjectResultMapper.saveQuestionSubjectList(patientQuestionSubjectResults) <= 0) { + throw new ServiceException("新增患者问卷题目提交结果失败"); + } + if (CollectionUtils.isNotEmpty(patientQuestionOptionResults)) { + return AjaxResult.success(); + } + // 初始化患者问卷题目选项提交结果 + List saveQuestionSubjectOptions = new ArrayList<>(); + for (PatientQuestionOptionResultDTO patientQuestionOptionResult : patientQuestionOptionResults) { + PatientQuestionOptionResult saveQuestionOption = new PatientQuestionOptionResult(); + BeanUtils.copyBeanProp(saveQuestionOption, patientQuestionOptionResult); + // 从已保存的患者问卷题目结果列表中查找当前选项所对应的题目结果 + PatientQuestionSubjectResult patientQuestionSubjectResult = patientQuestionSubjectResults.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionNumber()) && patientQuestionOptionResult.getQuestionNumber().compareTo(item.getQuestionNumber()) == 0).findFirst().orElse(new PatientQuestionSubjectResult()); + saveQuestionOption.setQuestionSubjectResultId(patientQuestionSubjectResult.getId()); + saveQuestionOption.setCreateTime(time); + saveQuestionOption.setCreateBy(routeHandlePerson); + saveQuestionSubjectOptions.add(saveQuestionOption); + } + // 新增患者问卷题目选项提交结果 + if (patientQuestionOptionResultMapper.saveQuestionOptionList(saveQuestionSubjectOptions) <= 0) { + throw new ServiceException("新增患者问卷题目选项提交结果失败"); + } + return AjaxResult.success(); + } + + /** + * 更新节点任务表 + */ + private void updateSignPatientManageRouteNode(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) { + SignPatientManageRouteNode signPatientManageRouteNode = new SignPatientManageRouteNode(); + signPatientManageRouteNode.setId(dto.getManageRouteNodeId()); + signPatientManageRouteNode.setRouteHandleRemark(dto.getRouteHandleRemark()); + signPatientManageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.EXECUTED.toString()); + signPatientManageRouteNode.setRouteHandleId(dto.getRouteHandleId()); + signPatientManageRouteNode.setRouteHandlePerson(routeHandlePerson); + signPatientManageRouteNode.setUpdateBy(routeHandlePerson); + signPatientManageRouteNode.setUpdateTime(time); + // 更新节点任务表 + if (signPatientManageRouteNodeMapper.updateSignPatientManageRouteNode(signPatientManageRouteNode) <= 0) { + throw new ServiceException("更新节点任务表失败"); + } + } + + /** + * 新增患者管理任务执行记录 + */ + private Long insertPatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) { + PatientTaskExecuteRecord patientTaskExecuteRecord = new PatientTaskExecuteRecord(); + BeanUtils.copyProperties(dto, patientTaskExecuteRecord); + patientTaskExecuteRecord.setExecuteTime(time); + patientTaskExecuteRecord.setTaskContent(dto.getTaskType()); + patientTaskExecuteRecord.setExecutePerson(routeHandlePerson); + patientTaskExecuteRecord.setCreateBy(routeHandlePerson); + patientTaskExecuteRecord.setExecuteType(TaskCreateTypeConstant.MANUAL_CREATE); + patientTaskExecuteRecord.setCreateTime(time); + if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) > 0) { + return patientTaskExecuteRecord.getId(); + } else { + throw new ServiceException("新增患者管理任务记录失败"); + } + } } \ No newline at end of file