ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -1766,4 +1766,55 @@ // 出院(发送)时间 + 本步补偿时间 小于当前时间 -> 超时 return deadline.getTime() < new Date().getTime(); } /** * 处理超时随访任务 * @return */ public void dealSubtaskDeadline(Integer deadlineDay){ Date deadline = DateUtils.addDays(new Date(), deadlineDay); //通过任务ID拿到患者信息,并且随访时间得是今天之前的 ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity(); serviceSubtaskVO.setSendstate(7L); serviceSubtaskVO.setVisitCount(1); serviceSubtaskVO.setEndOutHospTime(deadline); List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); log.info("【dealSubtaskDeadline】获取到{}个超时任务", serviceSubtaskList.size()); for (ServiceSubtask serviceSubtask : serviceSubtaskList) { PatMedInhosp patMedInhosp = new PatMedInhosp(); patMedInhosp.setInhospid(serviceSubtask.getInhospid()); List<PatMedInhosp> patMedInhospList = iPatMedInhospService.selectPatMedInhospList(patMedInhosp); if (patMedInhospList.size() > 0) { serviceSubtask.setIsVisitAgain(2); serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";患者再入院了" : "患者再入院了"); serviceSubtask.setSendstate(4L); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); //return "无需再次随访,患者再入院了"; }else { continue; } //新增再次随访任务 ServiceSubtask serviceSubtaskAgain = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class); serviceSubtaskAgain.setId(null); serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue()); serviceSubtaskAgain.setVisitCount(serviceSubtask.getVisitCount() + 1); serviceSubtaskAgain.setSendstate(2L); serviceSubtaskAgain.setCreateTime(new Date()); serviceSubtaskAgain.setUpdateTime(new Date()); serviceSubtaskAgain.setVisitType(serviceSubtask.getVisitType()); serviceSubtaskAgain.setVisitDeptCode(serviceSubtask.getVisitDeptCode()); serviceSubtaskAgain.setVisitDeptName(serviceSubtask.getVisitDeptName()); int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtaskAgain); if (i == 1) { //再次随访任务创建成功后,原任务改为失败状态 serviceSubtask.setIsVisitAgain(2); serviceSubtask.setSendstate(5L); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); } } } } smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -58,6 +58,8 @@ public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskEntity serviceSubtaskVO); public List<ServiceSubtask> selectServiceSubtaskListDeadLine(ServiceSubtaskEntity serviceSubtaskVO); public List<Integer> selectSendstateByCondition(ServiceSubtask serviceSubtask); /** smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
@@ -71,6 +71,25 @@ public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive); //门诊记录再次随访 public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Date adminDate, Integer visitTimeNum); /** * 门诊记录首次随访 * @param patMedOuthosp * @return */ public Integer followUpByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum); /** * 门诊记录再次随访 * @param patMedOuthosp * @return */ public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum); /** * 门诊记录处理 * @param patMedOuthosp * @return */ public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum); } smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -512,6 +512,7 @@ serviceSubtask.setVisitDeptCode(patMedOuthosp.getDeptcode()); serviceSubtask.setVisitDeptName(patMedOuthosp.getDeptname()); serviceSubtask.setUpdateTime(new Date()); serviceSubtask.setAdmindate(patMedOuthosp.getAdmitdate()); //设置发送时间 if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L); Date newDate = addDays(patMedOuthosp.getAdmitdate(), serviceTask.getSendDay().intValue()); @@ -536,15 +537,82 @@ /** * * @param patMedOuthosp * @param visitTimeNum * @return */ @Override public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Date adminDate, Integer visitTimeNum) { int hoursToAdd = visitTimeNum * 24; Calendar calendar = Calendar.getInstance(); calendar.setTime(adminDate); calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd); Date newDate = calendar.getTime(); public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum){ Integer num = 0; ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity(); serviceSubtask.setInhospid(patMedOuthosp.getId()); serviceSubtask.setServiceType("3"); serviceSubtask.setVisitCount(1); List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask); if(CollectionUtils.isEmpty(serviceSubtasks)){ num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum); }else { num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum); } return num; } /** * 门诊首次随访 * @param patMedOuthosp * @return */ @Override public Integer followUpByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) { // if(ObjectUtils.isEmpty(patMedOuthosp.getFudate())){ Date adminDate = patMedOuthosp.getAdmitdate(); Date fuDate = addDays(adminDate, visitTimeNum); patMedOuthosp.setFudate(fuDate); // } PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp.getPatid()); //根据患者科室,获取该疾病的长期任务 ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); serviceTaskdept.setLongtask(1L); serviceTaskdept.setDeptCode(patMedOuthosp.getDeptcode()); serviceTaskdept.setServiceType("3"); List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept); if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) { patMedOuthosp.setDeptcheckFlag("2"); patMedOuthosp.setRemark("通过部门,没有找到门诊随访任务ID"); updatePatMedOuthosp(patMedOuthosp); } else { for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) { writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 1); } } // 根据患者的疾病,获取该疾病的长期任务 // ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag(); // serviceTaskdiag.setLongtask(1L); // serviceTaskdiag.setIcd10code(patMedOuthosp.getIcd10code()); // List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag); // //如果部门模板为空(将deptIsNull设置为true) // if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) { // patMedOuthosp.setDiagcheckFlag("2"); // patMedOuthosp.setRemark("通过icd10,没有找到门诊随访任务ID"); // updatePatMedOuthosp(patMedOuthosp); // } else { // for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) { // writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 2); // } // } return 1; } /** * 门诊再次随访 * @param patMedOuthosp * @return */ @Override public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) { Date adminDate = patMedOuthosp.getAdmitdate(); Date newDate = addDays(adminDate, visitTimeNum); Integer i = 0; String deptcode = patMedOuthosp.getDeptcode(); @@ -564,10 +632,18 @@ serviceSubtask0.setFinishtime(adminDate); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0); ServiceSubtask serviceSubtask1 = serviceSubtaskList0.get(0); ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class); serviceSubtask1.setId(null); serviceSubtask1.setSendstate(2L); serviceSubtask1.setUpid(serviceSubtask0.getId().intValue()); serviceSubtask1.setVisitCount(serviceSubtask0.getVisitCount() + 1); serviceSubtask1.setVisitType(serviceSubtask0.getVisitType()); serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode()); serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName()); serviceSubtask1.setCreateTime(new Date()); serviceSubtask1.setUpdateTime(new Date()); serviceSubtask1.setFinishtime(null); serviceSubtask1.setAdmindate(adminDate); serviceSubtask1.setVisitTime(newDate); serviceSubtask1.setLongSendTime(newDate); smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1243,10 +1243,22 @@ i = patMedOuthospService.insertPatMedOuthosp(patMedOuthosp); } Date adminDate = externalJZInfo.getJiuZhenRQ(); Date adminDate = patMedOuthosp.getAdmitdate(); //完成接诊 已经完成任务再次随访 if(ObjectUtils.isNotEmpty(visitTimeNum) && ObjectUtils.isNotEmpty(adminDate)){ patMedOuthospService.followUpAgainByPatMedOuthosp(patMedOuthosp, adminDate, visitTimeNum); if(ObjectUtils.isNotEmpty(visitTimeNum) && ObjectUtils.isNotEmpty(adminDate) && StringUtils.isNotEmpty(patMedOuthosp.getFuflag()) && patMedOuthosp.getFuflag().equals("1")){ if(visitTimeUnit.equals("天")){ visitTimeNum = visitTimeNum; }else if(visitTimeUnit.equals("周")){ visitTimeNum = visitTimeNum * 7; }else if(visitTimeUnit.equals("月")){ visitTimeNum = visitTimeNum * 30; }else if(visitTimeUnit.equals("年")){ visitTimeNum = visitTimeNum * 365; } patMedOuthospService.dealPatMedOuthosp(patMedOuthosp, visitTimeNum); } if (i > 0) { smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -3089,5 +3089,14 @@ t.taskid </select> <select id="selectServiceSubtaskListDeadLine" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultMap="ServiceSubtaskResult"> <include refid="selectServiceSubtaskVo"/> where 1=1 and del_flag = 0 and visit_count = 1 and endtime </select> </mapper>