我的随访

This commit is contained in:
zhangheng 2024-04-19 16:12:44 +08:00
parent d75d50ab45
commit dfd992e8b3
6 changed files with 161 additions and 16 deletions

View File

@ -23,6 +23,9 @@ public class HomePageController {
@Resource
private HomePageService homePageService;
/**
* 我的随访列表
*/
@GetMapping("/myFollowUp")
public TableDataInfo myFollowUp(MyFollowUpVO myFollowUp) {
return homePageService.myFollowUp(myFollowUp);
@ -32,7 +35,24 @@ public class HomePageController {
* 获取话术信息详细信息
*/
@GetMapping("/selectScriptInfo")
public AjaxResult selectScriptInfo(Long phoneId) {
return AjaxResult.success(homePageService.selectScriptInfo(phoneId));
public AjaxResult selectScriptInfo(Long templateId) {
return AjaxResult.success(homePageService.selectScriptInfo(templateId));
}
/**
* 问卷信息
*/
@GetMapping("/selectQuestion")
public AjaxResult selectQuestion(Long templateId) {
return homePageService.selectQuestion(templateId);
}
/**
* 问卷记录信息
*/
@GetMapping("/selectQuestionSubmit")
public AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId) {
return homePageService.selectQuestionSubmit(patientTaskExecuteRecordId);
}
}

View File

@ -1,8 +1,6 @@
package com.xinelu.mobile.mapper.homepage;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -14,5 +12,11 @@ import java.util.List;
*/
public interface HomePageMapper {
/**
* 我的随访列表
*
* @param myFollowUp 用户信息
* @return TableDataInfo
*/
List<MyFollowUpVO> selectManageRouteNode(MyFollowUpVO myFollowUp);
}

View File

@ -7,14 +7,35 @@ import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
public interface HomePageService {
/**
* 我的随访列表
*
* @param myFollowUp 用户信息
* @return TableDataInfo
*/
TableDataInfo myFollowUp(MyFollowUpVO myFollowUp);
/**
* 查询话术信息
*
* @param phoneId 话术信息主键
* @param templateId 话术信息主键
* @return 话术信息
*/
ScriptInfo selectScriptInfo(Long phoneId);
ScriptInfo selectScriptInfo(Long templateId);
/**
* 问卷信息
*
* @param templateId 问卷表id
* @return AjaxResult
*/
AjaxResult selectQuestion(Long templateId);
/**
* 问卷记录信息
*
* @param patientTaskExecuteRecordId 记录表id
* @return AjaxResult
*/
AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId);
}

View File

@ -1,10 +1,21 @@
package com.xinelu.mobile.service.homepage.Impl;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.RouteNodeNameEnum;
import com.xinelu.common.utils.PageServiceUtil;
import com.xinelu.common.utils.bean.BeanUtils;
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.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
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.vo.questionInfo.QuestionVO;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import com.xinelu.mobile.mapper.homepage.HomePageMapper;
import com.xinelu.mobile.service.homepage.HomePageService;
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
@ -17,6 +28,7 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -28,11 +40,24 @@ public class HomePageServiceImpl implements HomePageService {
private PageServiceUtil pageServiceUtil;
@Resource
private ScriptInfoMapper scriptInfoMapper;
@Resource
private QuestionInfoMapper questionInfoMapper;
@Resource
private QuestionSubjectMapper questionSubjectMapper;
@Resource
private QuestionSubjectOptionMapper questionSubjectOptionMapper;
@Resource
private PatientQuestionSubmitResultMapper submitResultMapper;
/**
* 我的随访列表
*
* @param myFollowUp 用户信息
* @return TableDataInfo
*/
@Override
public TableDataInfo myFollowUp(MyFollowUpVO myFollowUp) {
myFollowUp.setRouteNodeName(RouteNodeNameEnum.AFTER_ADMISSION.getInfo());
pageServiceUtil.startPage();
myFollowUp.setRouteNodeName(RouteNodeNameEnum.AFTER_DISCHARGE.getInfo());
List<MyFollowUpVO> myFollowUpList = homePageMapper.selectManageRouteNode(myFollowUp);
if (CollectionUtils.isEmpty(myFollowUpList)) {
return pageServiceUtil.getDataTable(new ArrayList<>());
@ -44,11 +69,63 @@ public class HomePageServiceImpl implements HomePageService {
myFollowUpVO.setFollowName("出院后第" + myFollowUpVO.getRouteNodeDay() + "");
}
myFollowUpList.sort(Comparator.comparing(MyFollowUpVO::getFollowDate).reversed());
//处理上面查询的list集合
Integer pageNum = myFollowUp.getPageNum();
Integer pageSize = myFollowUp.getPageSize();
myFollowUpList = myFollowUpList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
return pageServiceUtil.getDataTable(myFollowUpList);
}
/**
* 查询话术信息
*
* @param templateId 话术信息主键
* @return 话术信息
*/
@Override
public ScriptInfo selectScriptInfo(Long phoneId) {
return scriptInfoMapper.selectScriptInfoById(phoneId);
public ScriptInfo selectScriptInfo(Long templateId) {
return scriptInfoMapper.selectScriptInfoById(templateId);
}
/**
* 问卷信息
*
* @param templateId 问卷表id
* @return AjaxResult
*/
@Override
public AjaxResult selectQuestion(Long templateId) {
//查询问卷表
QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(templateId);
QuestionVO questionVO = new QuestionVO();
// 查询题目表
if (Objects.nonNull(questionInfo)) {
BeanUtils.copyBeanProp(questionVO, questionInfo);
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(templateId);
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
if (questionSubjectIds.size() == 0) {
questionVO.setQuestionSubjectList(questionSubjects);
return AjaxResult.success(questionVO);
}
// 查询选项表
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
for (QuestionSubjectVO questionSubject : questionSubjects) {
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
questionSubject.setQuestionSubjectOptionList(collect);
}
questionVO.setQuestionSubjectList(questionSubjects);
}
return AjaxResult.success(questionVO);
}
/**
* 问卷记录信息
*
* @param patientTaskExecuteRecordId 记录表id
* @return AjaxResult
*/
@Override
public AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId) {
return AjaxResult.success(submitResultMapper.selectResultByTaskExecuteRecordId(patientTaskExecuteRecordId, null));
}
}

View File

@ -1,9 +1,7 @@
package com.xinelu.mobile.vo.myfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDate;
@ -13,15 +11,28 @@ import java.time.LocalDate;
* @author xinelu
* @date 2024-04-18
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MyFollowUpVO extends BaseEntity {
public class MyFollowUpVO {
/**
* 用户id
*/
private Long residentId;
/**
* 执行记录表id
*/
private Long patientTaskExecuteRecordId;
/**
* 节点id
*/
private Long manageRouteNodeId;
private Long phoneId;
/**
* 模版id
*/
private Long templateId;
/**
* 随访时间
*/
@ -32,6 +43,9 @@ public class MyFollowUpVO extends BaseEntity {
*/
private String routeNodeName;
/**
* 随访名称
*/
private String followName;
/**
@ -54,4 +68,7 @@ public class MyFollowUpVO extends BaseEntity {
* 是否随访标记 0: 1:
*/
private Integer sign;
private Integer pageNum;
private Integer pageSize;
}

View File

@ -11,7 +11,13 @@
spmrn.route_node_name,
IFNULL( spmrn.route_node_day,0) routeNodeDay,
pi.discharge_time,
IF(pter.id=NULL,0,1) sign
IF(pter.id=NULL,0,1) sign,
pter.id patientTaskExecuteRecordId,
CASE
WHEN spmrn.task_type = 'PHONE_OUTBOUND' THEN spmrn.phone_id
WHEN spmrn.task_type = 'QUESTIONNAIRE_SCALE' THEN spmrn.question_info_id
WHEN spmrn.task_type = 'ARTIFICIAL_FOLLOW_UP' THEN spmrn.follow_template_id
END AS templateId
FROM patient_info pi
LEFT JOIN sign_patient_manage_route spmr ON spmr.patient_id = pi.id
LEFT JOIN sign_patient_manage_route_node spmrn ON spmrn.manage_route_id = spmr.id