小程序满意度
This commit is contained in:
parent
ed5c15990b
commit
158dafcbcb
@ -6,7 +6,6 @@ import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecor
|
|||||||
import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
|
import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
|
||||||
import com.xinelu.manage.mapper.patienttaskexecuterecord.PatientTaskExecuteRecordMapper;
|
import com.xinelu.manage.mapper.patienttaskexecuterecord.PatientTaskExecuteRecordMapper;
|
||||||
import com.xinelu.manage.service.patienttaskexecuterecord.IPatientTaskExecuteRecordService;
|
import com.xinelu.manage.service.patienttaskexecuterecord.IPatientTaskExecuteRecordService;
|
||||||
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
|
|
||||||
import com.xinelu.manage.vo.patienttaskexecuterecord.PatientTaskExecuteRecordVO;
|
import com.xinelu.manage.vo.patienttaskexecuterecord.PatientTaskExecuteRecordVO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@ -26,8 +25,6 @@ public class PatientTaskExecuteRecordServiceImpl implements IPatientTaskExecuteR
|
|||||||
private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper;
|
private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private PatientQuestionSubmitResultMapper submitResultMapper;
|
private PatientQuestionSubmitResultMapper submitResultMapper;
|
||||||
@Resource
|
|
||||||
private IPropagandaInfoService iPropagandaInfoService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询患者管理任务执行记录
|
* 查询患者管理任务执行记录
|
||||||
|
|||||||
@ -61,7 +61,7 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
|||||||
questionVO.setQuestionSubjectList(questionSubjects);
|
questionVO.setQuestionSubjectList(questionSubjects);
|
||||||
return questionVO;
|
return questionVO;
|
||||||
}
|
}
|
||||||
// 查询选项表
|
// 选项表
|
||||||
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
|
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
|
||||||
for (QuestionSubjectVO questionSubject : questionSubjects) {
|
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());
|
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
|
||||||
|
|||||||
@ -7,13 +7,12 @@ import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecor
|
|||||||
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
||||||
import com.xinelu.mobile.service.homepage.HomePageService;
|
import com.xinelu.mobile.service.homepage.HomePageService;
|
||||||
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
||||||
|
import com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.xinelu.common.utils.PageUtils.startPage;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机构信息Controller
|
* 机构信息Controller
|
||||||
*
|
*
|
||||||
@ -76,4 +75,24 @@ public class HomePageController extends BaseController {
|
|||||||
List<PatientTaskExecuteRecord> list = homePageService.selectPatientTaskExecuteRecord(residentId);
|
List<PatientTaskExecuteRecord> list = homePageService.selectPatientTaskExecuteRecord(residentId);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成满意度问卷
|
||||||
|
*/
|
||||||
|
@GetMapping("/completedSatisfaction")
|
||||||
|
private TableDataInfo completedSatisfactionQuestionnaire(Long residentId) {
|
||||||
|
startPage();
|
||||||
|
List<SatisfactionQuestionnaire> list = homePageService.completedSatisfactionQuestionnaire(residentId);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未执行满意度问卷
|
||||||
|
*/
|
||||||
|
@GetMapping("/incompleteSatisfaction")
|
||||||
|
private TableDataInfo incompleteSatisfactionQuestionnaire(Long residentId, Integer pageNum, Integer pageSize) {
|
||||||
|
startPage();
|
||||||
|
List<SatisfactionQuestionnaire> list = homePageService.incompleteSatisfactionQuestionnaire(residentId,pageNum,pageSize);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -2,6 +2,7 @@ package com.xinelu.mobile.mapper.homepage;
|
|||||||
|
|
||||||
import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord;
|
import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord;
|
||||||
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
||||||
|
import com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -30,4 +31,25 @@ public interface HomePageMapper {
|
|||||||
* @return PatientTaskExecuteRecord
|
* @return PatientTaskExecuteRecord
|
||||||
*/
|
*/
|
||||||
List<PatientTaskExecuteRecord> selectTaskExecuteRecordByResidentId(@Param("residentId") Long residentId, @Param("nodeExecuteStatus") String nodeExecuteStatus);
|
List<PatientTaskExecuteRecord> selectTaskExecuteRecordByResidentId(@Param("residentId") Long residentId, @Param("nodeExecuteStatus") String nodeExecuteStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据居民查询已完成满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民id
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
List<SatisfactionQuestionnaire> satisfactionQuestionnaireByResidentId(@Param("residentId") Long residentId, @Param("taskContent") String taskContent,
|
||||||
|
@Param("questionType") String questionType, @Param("routeNodeName") String routeNodeName);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据居民查询已完成满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民id
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
List<SatisfactionQuestionnaire> incompleteSatisfactionQuestionnaire(@Param("residentId") Long residentId, @Param("taskContent") String taskContent,
|
||||||
|
@Param("questionType") String questionType, @Param("routeNodeName") String routeNodeName,
|
||||||
|
@Param("nodeExecuteStatus") String nodeExecuteStatus, @Param("routeCheckStatus") String routeCheckStatus);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -6,6 +6,7 @@ import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecor
|
|||||||
import com.xinelu.manage.domain.scriptInfo.ScriptInfo;
|
import com.xinelu.manage.domain.scriptInfo.ScriptInfo;
|
||||||
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
|
||||||
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
||||||
|
import com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -58,4 +59,21 @@ public interface HomePageService {
|
|||||||
* @return AjaxResult
|
* @return AjaxResult
|
||||||
*/
|
*/
|
||||||
List<PatientTaskExecuteRecord> selectPatientTaskExecuteRecord(Long residentId);
|
List<PatientTaskExecuteRecord> selectPatientTaskExecuteRecord(Long residentId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民信息
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
List<SatisfactionQuestionnaire> completedSatisfactionQuestionnaire(Long residentId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未执行满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民信息
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
List<SatisfactionQuestionnaire> incompleteSatisfactionQuestionnaire(Long residentId, Integer pageNum, Integer pageSize);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3,8 +3,7 @@ package com.xinelu.mobile.service.homepage.Impl;
|
|||||||
import com.xinelu.common.constant.TaskCreateTypeConstant;
|
import com.xinelu.common.constant.TaskCreateTypeConstant;
|
||||||
import com.xinelu.common.core.domain.AjaxResult;
|
import com.xinelu.common.core.domain.AjaxResult;
|
||||||
import com.xinelu.common.core.page.TableDataInfo;
|
import com.xinelu.common.core.page.TableDataInfo;
|
||||||
import com.xinelu.common.enums.NodeExecuteStatusEnum;
|
import com.xinelu.common.enums.*;
|
||||||
import com.xinelu.common.enums.RouteNodeNameEnum;
|
|
||||||
import com.xinelu.common.exception.ServiceException;
|
import com.xinelu.common.exception.ServiceException;
|
||||||
import com.xinelu.common.utils.PageServiceUtil;
|
import com.xinelu.common.utils.PageServiceUtil;
|
||||||
import com.xinelu.common.utils.bean.BeanUtils;
|
import com.xinelu.common.utils.bean.BeanUtils;
|
||||||
@ -34,6 +33,7 @@ import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
|
|||||||
import com.xinelu.mobile.mapper.homepage.HomePageMapper;
|
import com.xinelu.mobile.mapper.homepage.HomePageMapper;
|
||||||
import com.xinelu.mobile.service.homepage.HomePageService;
|
import com.xinelu.mobile.service.homepage.HomePageService;
|
||||||
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO;
|
||||||
|
import com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -239,6 +239,44 @@ public class HomePageServiceImpl implements HomePageService {
|
|||||||
return homePageMapper.selectTaskExecuteRecordByResidentId(residentId, NodeExecuteStatusEnum.EXECUTED.getInfo());
|
return homePageMapper.selectTaskExecuteRecordByResidentId(residentId, NodeExecuteStatusEnum.EXECUTED.getInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已完成满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民信息
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SatisfactionQuestionnaire> completedSatisfactionQuestionnaire(Long residentId) {
|
||||||
|
return homePageMapper.satisfactionQuestionnaireByResidentId(residentId, TaskContentEnum.QUESTIONNAIRE_SCALE.getInfo(), QuestionTypeEnum.SATISFACTION_QUESTIONNAIRE.getInfo(), RouteNodeNameEnum.AFTER_DISCHARGE.getInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未执行满意度问卷
|
||||||
|
*
|
||||||
|
* @param residentId 居民信息
|
||||||
|
* @return SatisfactionQuestionnaire
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SatisfactionQuestionnaire> incompleteSatisfactionQuestionnaire(Long residentId, Integer pageNum, Integer pageSize) {
|
||||||
|
List<SatisfactionQuestionnaire> incompleteSatisfaction = homePageMapper.incompleteSatisfactionQuestionnaire(residentId, TaskContentEnum.QUESTIONNAIRE_SCALE.getInfo(), QuestionTypeEnum.SATISFACTION_QUESTIONNAIRE.getInfo(), RouteNodeNameEnum.AFTER_DISCHARGE.getInfo(), NodeExecuteStatusEnum.UNEXECUTED.getInfo(), RouteCheckStatusEnum.AGREE.getInfo());
|
||||||
|
if (CollectionUtils.isEmpty(incompleteSatisfaction)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
int total = incompleteSatisfaction.size();
|
||||||
|
for (SatisfactionQuestionnaire satisfactionQuestionnaire : incompleteSatisfaction) {
|
||||||
|
if (Objects.nonNull(satisfactionQuestionnaire) && Objects.nonNull(satisfactionQuestionnaire.getDischargeTime())) {
|
||||||
|
satisfactionQuestionnaire.setExecuteTime(satisfactionQuestionnaire.getDischargeTime().plusDays(satisfactionQuestionnaire.getRouteNodeDay()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
incompleteSatisfaction.sort(Comparator.comparing(SatisfactionQuestionnaire::getExecuteTime).reversed());
|
||||||
|
if (Objects.nonNull(pageSize) || Objects.nonNull(pageNum)) {
|
||||||
|
incompleteSatisfaction = incompleteSatisfaction.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
TableDataInfo dataTable = pageServiceUtil.getDataTable(incompleteSatisfaction);
|
||||||
|
dataTable.setTotal(total);
|
||||||
|
return incompleteSatisfaction;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新节点任务表
|
* 更新节点任务表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.xinelu.mobile.vo.satisfactionquestionnaire;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SatisfactionQuestionnaire {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 路径名称
|
||||||
|
*/
|
||||||
|
private String manageRouteName;
|
||||||
|
/**
|
||||||
|
* 执行时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDateTime executeTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 节点名称
|
||||||
|
*/
|
||||||
|
private String routeNodeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 节点天数
|
||||||
|
*/
|
||||||
|
private Integer routeNodeDay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 问卷标题
|
||||||
|
*/
|
||||||
|
private String questionnaireName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出院时间
|
||||||
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
private LocalDateTime dischargeTime;
|
||||||
|
}
|
||||||
@ -64,4 +64,43 @@
|
|||||||
</where>
|
</where>
|
||||||
ORDER BY pter.execute_time desc
|
ORDER BY pter.execute_time desc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="satisfactionQuestionnaireByResidentId"
|
||||||
|
resultType="com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire">
|
||||||
|
select pter.manage_route_name,
|
||||||
|
pter.execute_time,
|
||||||
|
'出院后' as routeNodeName,
|
||||||
|
spmrn.route_node_day,
|
||||||
|
qi.questionnaire_name
|
||||||
|
from patient_task_execute_record pter
|
||||||
|
LEFT JOIN patient_info pi ON pi.id = pter.patient_id
|
||||||
|
LEFT JOIN resident_info ri on ri.id = pi.resident_id
|
||||||
|
LEFT JOIN sign_patient_manage_route_node spmrn ON spmrn.id = pter.manage_route_node_id
|
||||||
|
LEFT JOIN question_info qi ON spmrn.question_info_id = qi.id
|
||||||
|
where ri.id = #{residentId}
|
||||||
|
and pter.task_content = #{taskContent}
|
||||||
|
and qi.question_type = #{questionType}
|
||||||
|
and spmrn.route_node_name = #{routeNodeName}
|
||||||
|
Order BY pter.execute_time DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="incompleteSatisfactionQuestionnaire"
|
||||||
|
resultType="com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire">
|
||||||
|
select spmr.route_name,
|
||||||
|
'出院后' as routeNodeName,
|
||||||
|
spmrn.route_node_day,
|
||||||
|
qi.questionnaire_name,
|
||||||
|
pi.discharge_time
|
||||||
|
from sign_patient_manage_route spmr
|
||||||
|
LEFT JOIN patient_info pi ON pi.id = spmr.patient_id
|
||||||
|
LEFT JOIN resident_info ri on ri.id = pi.resident_id
|
||||||
|
LEFT JOIN sign_patient_manage_route_node spmrn ON spmrn.manage_route_id = spmr.id
|
||||||
|
LEFT JOIN question_info qi ON spmrn.question_info_id = qi.id
|
||||||
|
where ri.id = #{residentId}
|
||||||
|
and spmrn.task_type = #{taskContent}
|
||||||
|
and qi.question_type = #{questionType}
|
||||||
|
and spmrn.route_node_name = #{routeNodeName}
|
||||||
|
and spmrn.node_execute_status = #{nodeExecuteStatus}
|
||||||
|
and spmrn.route_check_status = #{routeCheckStatus}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Reference in New Issue
Block a user