小程序满意度
This commit is contained in:
parent
5b8a78447b
commit
5aa0e7b730
@ -166,6 +166,8 @@ public class PatientQuestionSubmitResult extends BaseEntity {
|
||||
@Excel(name = "问卷总得分,根据患者提交问卷得出的分值")
|
||||
private BigDecimal totalScore;
|
||||
|
||||
private Long residentId;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
||||
@ -105,11 +105,17 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
log.info("新增问卷表失败," + questionInfo);
|
||||
throw new SecurityException("新增问卷失败!请联系管理员!");
|
||||
}
|
||||
if (CollectionUtils.isEmpty(question.getQuestionSubjectList())) {
|
||||
throw new SecurityException("请添加问卷信息!");
|
||||
}
|
||||
//新增题目表
|
||||
List<QuestionSubjectVO> questionSubjectList = question.getQuestionSubjectList();
|
||||
List<QuestionSubject> questionSubjects = new ArrayList<>();
|
||||
List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>();
|
||||
for (QuestionSubjectVO questionSubject : questionSubjectList) {
|
||||
if (StringUtils.isBlank(questionSubject.getQuestionName())) {
|
||||
throw new SecurityException("请添加完整问卷题目!");
|
||||
}
|
||||
QuestionSubject saveQuestionSubject = new QuestionSubject();
|
||||
BeanUtils.copyBeanProp(saveQuestionSubject, questionSubject);
|
||||
saveQuestionSubject.setQuestionInfoId(questionInfo.getId());
|
||||
@ -125,6 +131,9 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
log.info("新增问卷题目表失败," + questionSubjects);
|
||||
throw new SecurityException("新增问卷失败!请联系管理员!");
|
||||
}
|
||||
if (CollectionUtils.isEmpty(questionSubjectOptions)) {
|
||||
return AjaxResult.success();
|
||||
}
|
||||
//新增选项表
|
||||
List<QuestionSubjectOption> saveQuestionSubjectOptions = new ArrayList<>();
|
||||
for (QuestionSubjectOptionVO questionSubjectOption : questionSubjectOptions) {
|
||||
@ -183,6 +192,9 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
|
||||
List<QuestionSubject> questionSubjects = new ArrayList<>();
|
||||
List<QuestionSubjectOptionVO> questionSubjectOptions = new ArrayList<>();
|
||||
for (QuestionSubjectVO questionSubject : questionSubjectList) {
|
||||
if (StringUtils.isBlank(questionSubject.getQuestionName())) {
|
||||
throw new SecurityException("请添加完整问卷题目!");
|
||||
}
|
||||
QuestionSubject saveQuestionSubject = new QuestionSubject();
|
||||
BeanUtils.copyBeanProp(saveQuestionSubject, questionSubject);
|
||||
saveQuestionSubject.setQuestionInfoId(questionInfo.getId());
|
||||
|
||||
@ -219,6 +219,8 @@
|
||||
</if>
|
||||
<if test="totalScore != null">total_score,
|
||||
</if>
|
||||
<if test="residentId != null">resident_id,
|
||||
</if>
|
||||
<if test="remark != null">remark,
|
||||
</if>
|
||||
<if test="createBy != null">create_by,
|
||||
@ -269,6 +271,8 @@
|
||||
</if>
|
||||
<if test="totalScore != null">#{totalScore},
|
||||
</if>
|
||||
<if test="residentId != null">#{residentId},
|
||||
</if>
|
||||
<if test="remark != null">#{remark},
|
||||
</if>
|
||||
<if test="createBy != null">#{createBy},
|
||||
|
||||
@ -54,8 +54,8 @@ public class HomePageController extends BaseController {
|
||||
* 问卷记录信息
|
||||
*/
|
||||
@GetMapping("/selectQuestionSubmit")
|
||||
public AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId) {
|
||||
return homePageService.selectQuestionSubmit(patientTaskExecuteRecordId);
|
||||
public AjaxResult selectQuestionSubmit(Long patientQuestionSubmitResultId) {
|
||||
return homePageService.selectQuestionSubmit(patientQuestionSubmitResultId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,20 +77,12 @@ public class HomePageController extends BaseController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 已完成满意度问卷
|
||||
* 满意度问卷
|
||||
*/
|
||||
@GetMapping("/completedSatisfaction")
|
||||
private TableDataInfo completedSatisfactionQuestionnaire(Long residentId) {
|
||||
@GetMapping("/satisfactionQuestionnaire")
|
||||
private TableDataInfo satisfactionQuestionnaire(Long residentId) {
|
||||
startPage();
|
||||
List<SatisfactionQuestionnaire> list = homePageService.completedSatisfactionQuestionnaire(residentId);
|
||||
List<SatisfactionQuestionnaire> list = homePageService.satisfactionQuestionnaire(residentId);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 未执行满意度问卷
|
||||
*/
|
||||
@GetMapping("/incompleteSatisfaction")
|
||||
private TableDataInfo incompleteSatisfactionQuestionnaire(Long residentId, Integer pageNum, Integer pageSize) {
|
||||
return homePageService.incompleteSatisfactionQuestionnaire(residentId, pageNum, pageSize);
|
||||
}
|
||||
}
|
||||
@ -33,23 +33,10 @@ public interface HomePageMapper {
|
||||
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);
|
||||
|
||||
List<SatisfactionQuestionnaire> satisfactionQuestionnaireByResidentId(@Param("residentId") Long residentId, @Param("questionType") String questionType, @Param("questionnaireStatus") String questionnaireStatus);
|
||||
}
|
||||
@ -39,10 +39,10 @@ public interface HomePageService {
|
||||
/**
|
||||
* 问卷记录信息
|
||||
*
|
||||
* @param patientTaskExecuteRecordId 记录表id
|
||||
* @param patientQuestionSubmitResultId 记录表id
|
||||
* @return AjaxResult
|
||||
*/
|
||||
AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId);
|
||||
AjaxResult selectQuestionSubmit(Long patientQuestionSubmitResultId);
|
||||
|
||||
/**
|
||||
* 问卷提交
|
||||
@ -66,14 +66,5 @@ public interface HomePageService {
|
||||
* @param residentId 居民信息
|
||||
* @return SatisfactionQuestionnaire
|
||||
*/
|
||||
List<SatisfactionQuestionnaire> completedSatisfactionQuestionnaire(Long residentId);
|
||||
|
||||
/**
|
||||
* 未执行满意度问卷
|
||||
*
|
||||
* @param residentId 居民信息
|
||||
* @return SatisfactionQuestionnaire
|
||||
*/
|
||||
TableDataInfo incompleteSatisfactionQuestionnaire(Long residentId, Integer pageNum, Integer pageSize);
|
||||
|
||||
List<SatisfactionQuestionnaire> satisfactionQuestionnaire(Long residentId);
|
||||
}
|
||||
@ -3,7 +3,10 @@ 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.*;
|
||||
import com.xinelu.common.enums.NodeExecuteStatusEnum;
|
||||
import com.xinelu.common.enums.QuestionTypeEnum;
|
||||
import com.xinelu.common.enums.QuestionnaireStatusEnum;
|
||||
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;
|
||||
@ -153,12 +156,12 @@ public class HomePageServiceImpl implements HomePageService {
|
||||
/**
|
||||
* 问卷记录信息
|
||||
*
|
||||
* @param patientTaskExecuteRecordId 记录表id
|
||||
* @param patientQuestionSubmitResultId 记录表id
|
||||
* @return AjaxResult
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult selectQuestionSubmit(Long patientTaskExecuteRecordId) {
|
||||
return AjaxResult.success(submitResultMapper.selectResultByTaskExecuteRecordId(patientTaskExecuteRecordId, null));
|
||||
public AjaxResult selectQuestionSubmit(Long patientQuestionSubmitResultId) {
|
||||
return AjaxResult.success(submitResultMapper.selectResultByTaskExecuteRecordId(null, patientQuestionSubmitResultId));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,17 +173,10 @@ public class HomePageServiceImpl implements HomePageService {
|
||||
@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("新增患者问卷提交结果失败");
|
||||
@ -195,7 +191,6 @@ public class HomePageServiceImpl implements HomePageService {
|
||||
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())) {
|
||||
@ -218,7 +213,6 @@ public class HomePageServiceImpl implements HomePageService {
|
||||
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);
|
||||
}
|
||||
// 新增患者问卷题目选项提交结果
|
||||
@ -240,77 +234,13 @@ public class HomePageServiceImpl implements HomePageService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 已完成满意度问卷
|
||||
* 满意度问卷
|
||||
*
|
||||
* @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 TableDataInfo 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 pageServiceUtil.getDataTable(incompleteSatisfaction);
|
||||
}
|
||||
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 dataTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新节点任务表
|
||||
*/
|
||||
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("新增患者管理任务记录失败");
|
||||
}
|
||||
public List<SatisfactionQuestionnaire> satisfactionQuestionnaire(Long residentId) {
|
||||
return homePageMapper.satisfactionQuestionnaireByResidentId(residentId, QuestionTypeEnum.SATISFACTION_QUESTIONNAIRE.getInfo(), QuestionnaireStatusEnum.PUBLISHED.getInfo());
|
||||
}
|
||||
}
|
||||
@ -8,34 +8,26 @@ 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;
|
||||
|
||||
/**
|
||||
* 出院时间
|
||||
* 问卷id
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime dischargeTime;
|
||||
private Long templateId;
|
||||
|
||||
private String sign;
|
||||
|
||||
/***
|
||||
*
|
||||
*/
|
||||
private Long patientQuestionSubmitResultId;
|
||||
}
|
||||
@ -67,40 +67,23 @@
|
||||
|
||||
<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,
|
||||
SELECT qi.id templateId,
|
||||
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 id
|
||||
FROM patient_question_submit_result
|
||||
WHERE resident_id = #{residentId}
|
||||
AND question_info_id = templateId) patientQuestionSubmitResultId,
|
||||
pqsr.create_time executeTime,
|
||||
pqsr.resident_id,
|
||||
CASE
|
||||
WHEN pqsr.resident_id IS NULL THEN 'incomplete'
|
||||
WHEN pqsr.resident_id = #{residentId} THEN 'completed'
|
||||
END AS sign
|
||||
FROM question_info qi
|
||||
LEFT JOIN patient_question_submit_result pqsr ON pqsr.question_info_id = qi.id
|
||||
WHERE qi.question_type = #{questionType}
|
||||
and qi.questionnaire_status = #{questionnaireStatus}
|
||||
GROUP BY qi.id
|
||||
ORDER BY pqsr.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user