diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java index 73d951b9..f69764aa 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java @@ -7,9 +7,10 @@ import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo; import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageNodeAuditVo; import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo; -import java.util.List; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 签约患者管理任务路径节点Mapper接口 * @@ -102,8 +103,12 @@ public interface SignPatientManageRouteNodeMapper { */ List selectManageRouteByResidentId(@Param("residentId") Long residentId, @Param("nodeExecuteStatus") String nodeExecuteStatus); - String selectNodeContent(Long manageRouteNodeId); - + /** + * 修改消息状态 + * + * @param signPatientManageRouteNode 节点信息 + * @return int + */ int updateMessageStatus(SignPatientManageRouteNode signPatientManageRouteNode); List selectByRouteId(Long manageRouteId); diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index 9716d592..52618356 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -777,17 +777,12 @@ LEFT JOIN patient_info pi on pi.id = spmr.patient_id where pi.resident_id = #{residentId} and spmrn.node_execute_status = #{nodeExecuteStatus} + and (spmrn.applet_push_sign = 1 or spmrn.official_push_sign = 1) and spmrn.del_flag = 0 and pi.del_flag = 0 Order BY spmrn.update_time DESC - - update sign_patient_manage_route_node set message_status = #{messageStatus} 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 b344f34c..974c2dbe 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 @@ -100,11 +100,17 @@ public class HomePageController extends BaseController { return homePageService.selectSignPatientManageRouteNode(residentId); } - @GetMapping("/selectNodeContent") - public AjaxResult selectNodeContent(Long manageRouteNodeId) { - return homePageService.selectNodeContent(manageRouteNodeId); + /** + * 消息推送内容 + */ + @GetMapping("/selectMessageContent") + public AjaxResult selectMessageContent(Long manageRouteNodeId) { + return homePageService.selectMessageContent(manageRouteNodeId); } + /** + * 修改消息状态 + */ @PostMapping("/updateMessageStatus") public AjaxResult updateMessageStatus(@RequestBody SignPatientManageRouteNode signPatientManageRouteNode) { return homePageService.updateMessageStatus(signPatientManageRouteNode); 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 1f890a24..c464d150 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 @@ -84,7 +84,19 @@ public interface HomePageService { */ AjaxResult selectSignPatientManageRouteNode(Long residentId); - AjaxResult selectNodeContent(Long manageRouteNodeId); + /** + * 消息推送内容 + * + * @param manageRouteNodeId 节点id + * @return AjaxResult + */ + AjaxResult selectMessageContent(Long manageRouteNodeId); + /** + * 修改消息状态 + * + * @param signPatientManageRouteNode 节点信息 + * @return int + */ AjaxResult updateMessageStatus(SignPatientManageRouteNode signPatientManageRouteNode); } \ 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 4f09131f..11912004 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,11 +1,9 @@ package com.xinelu.mobile.service.homepage.Impl; +import com.alibaba.fastjson2.JSONObject; 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.QuestionTypeEnum; -import com.xinelu.common.enums.QuestionnaireStatusEnum; -import com.xinelu.common.enums.RouteNodeNameEnum; +import com.xinelu.common.enums.*; import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.PageServiceUtil; import com.xinelu.common.utils.bean.BeanUtils; @@ -28,11 +26,14 @@ 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.service.propagandainfo.IPropagandaInfoService; +import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo; 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.homepage.MessageContentVO; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; import com.xinelu.mobile.vo.satisfactionquestionnaire.SatisfactionQuestionnaire; import lombok.extern.slf4j.Slf4j; @@ -75,6 +76,8 @@ public class HomePageServiceImpl implements HomePageService { private PatientQuestionOptionResultMapper patientQuestionOptionResultMapper; @Resource private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper; + @Resource + private IPropagandaInfoService propagandaInfoService; /** * 我的随访列表 @@ -277,18 +280,74 @@ public class HomePageServiceImpl implements HomePageService { return AjaxResult.success(new ArrayList<>()); } for (SignPatientManageRouteNode manageRouteNode : signPatientManageRouteNodes) { + if (Objects.isNull(manageRouteNode) || TaskContentEnum.PHONE_OUTBOUND.getInfo().equals(manageRouteNode.getTaskType())) { + signPatientManageRouteNodes.remove(manageRouteNode); + } if (Objects.nonNull(manageRouteNode) && StringUtils.isNotBlank(manageRouteNode.getManageRouteName()) && StringUtils.isNotBlank(manageRouteNode.getRouteNodeName()) && Objects.nonNull(manageRouteNode.getRouteNodeDay())) { - manageRouteNode.setRouteNodeName(manageRouteNode.getManageRouteName() + manageRouteNode.getRouteNodeName() + manageRouteNode.getRouteNodeDay() + "天"); + if (StringUtils.isNotBlank(manageRouteNode.getRouteNodeName())) { + manageRouteNode.setRouteNodeName(RouteNodeNameEnum.getNameByInfo(manageRouteNode.getRouteNodeName()).getName()); + } + manageRouteNode.setRouteNodeName(manageRouteNode.getManageRouteName() + manageRouteNode.getRouteNodeName() + "第" + manageRouteNode.getRouteNodeDay() + "天"); } } return AjaxResult.success(signPatientManageRouteNodes); } + /** + * 消息推送内容 + * + * @param manageRouteNodeId 节点id + * @return AjaxResult + */ @Override - public AjaxResult selectNodeContent(Long manageRouteNodeId) { - return AjaxResult.success(signPatientManageRouteNodeMapper.selectNodeContent(manageRouteNodeId)); + public AjaxResult selectMessageContent(Long manageRouteNodeId) { + SignPatientManageRouteNode signPatientManageRouteNode = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(manageRouteNodeId); + if (Objects.isNull(signPatientManageRouteNode)) { + return AjaxResult.error("该节点已删除!"); + } + MessageContentVO messageContentVO = new MessageContentVO(); + //问卷或人工随访塞值 + if (TaskContentEnum.QUESTIONNAIRE_SCALE.getInfo().equals(signPatientManageRouteNode.getTaskType()) || TaskContentEnum.ARTIFICIAL_FOLLOW_UP.getInfo().equals(signPatientManageRouteNode.getTaskType())) { + messageContentVO.setTaskType(signPatientManageRouteNode.getTaskType()); + //查询问卷 + QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(signPatientManageRouteNode.getQuestionInfoId()); + // 查询题目表 + if (Objects.nonNull(questionInfo)) { + BeanUtils.copyBeanProp(messageContentVO.getQuestion(), questionInfo); + List questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(signPatientManageRouteNode.getQuestionInfoId()); + if (CollectionUtils.isNotEmpty(questionSubjects)) { + List questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList()); + // 选项表 + List questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds); + for (QuestionSubjectVO questionSubject : questionSubjects) { + List collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList()); + questionSubject.setQuestionSubjectOptionList(collect); + } + messageContentVO.getQuestion().setQuestionSubjectList(questionSubjects); + } + } + } + //宣教塞值 + if (TaskContentEnum.PROPAGANDA_ARTICLE.getInfo().equals(signPatientManageRouteNode.getTaskType())) { + //查询宣教信息 + PropagandaMaterialsVo propagandaMaterialsVo = propagandaInfoService.selectPropagandaInfoById(signPatientManageRouteNode.getPropagandaInfoId()); + messageContentVO.setTaskType(messageContentVO.getTaskType()); + messageContentVO.setPropagandaContent(JSONObject.parseObject(JSONObject.toJSONString(propagandaMaterialsVo))); + } + //副文本塞值 + if (!TaskContentEnum.PROPAGANDA_ARTICLE.getInfo().equals(signPatientManageRouteNode.getTaskType()) || !TaskContentEnum.QUESTIONNAIRE_SCALE.getInfo().equals(signPatientManageRouteNode.getTaskType()) || !TaskContentEnum.ARTIFICIAL_FOLLOW_UP.getInfo().equals(signPatientManageRouteNode.getTaskType())) { + messageContentVO.setTaskType(TaskContentEnum.TEXT_REMIND.getInfo()); + messageContentVO.setNodeContent(signPatientManageRouteNode.getNodeContent()); + } + return AjaxResult.success(messageContentVO); } + /** + * 修改消息状态 + * + * @param signPatientManageRouteNode 节点信息 + * @return int + */ @Override public AjaxResult updateMessageStatus(SignPatientManageRouteNode signPatientManageRouteNode) { return AjaxResult.success(signPatientManageRouteNodeMapper.updateMessageStatus(signPatientManageRouteNode)); diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java index 03e96c03..31dc9cec 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/utils/WeChatOfficialAccountUtils.java @@ -209,7 +209,7 @@ public class WeChatOfficialAccountUtils { paramsMap.put("touser", patientVO.getOpenId()); paramsMap.put("template_id", weChatAppletChatConfig.getHealthyPropagandaId()); paramsMap.put("miniprogram_state", "developer");//todo - paramsMap.put("page", "pages/homepage/homepage"); + paramsMap.put("page", "/postDischarge/homePage/selectMessageContent?"+patientVO.getSignPatientManageRouteNodeId()); Map dataMap = new LinkedHashMap<>(); dataMap.put("thing5", new MessageValueEntity(thing5)); dataMap.put("thing4", new MessageValueEntity(patientVO.getHospitalAgencyName())); diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/MessageContentVO.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/MessageContentVO.java new file mode 100644 index 00000000..6a0af36e --- /dev/null +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/MessageContentVO.java @@ -0,0 +1,32 @@ +package com.xinelu.mobile.vo.homepage; + +import com.alibaba.fastjson2.JSONObject; +import com.xinelu.manage.vo.questionInfo.QuestionVO; +import lombok.Data; + +/** + * 消息内容返回实体类 + */ +@Data +public class MessageContentVO { + + /** + * 任务类型 + */ + private String taskType; + + /** + * 宣教信息 + */ + private JSONObject propagandaContent; + + /** + * 富文本 + */ + private String nodeContent; + + /** + * 问卷信息 + */ + private QuestionVO question; +}