ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
@@ -10,6 +10,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.service.ISysConfigService; import com.smartor.domain.PatMedInhosp; import com.smartor.domain.PatMedInhospVO; import com.smartor.domain.PatMedReq; @@ -41,6 +42,10 @@ @Autowired private IPatMedOuthospService iPatMedOuthospService; //todo @Autowired private ISysConfigService configService; /** @@ -207,4 +212,11 @@ // } // } @ApiOperation("测试定时任务dealOutHospInfo") @PostMapping("/dealOutHospInfo") public void dealOutHospInfo() { String config = configService.selectConfigByKey("visit.early.day"); //出院表 patMedInhospService.dealOutHospInfo(config); } } smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -118,6 +118,18 @@ @Excel(name = " 首次随访失败 ") private Long followUpFail = 0L; @ApiModelProperty(value = "首次随访失败详情") private List<ServiceSubtask> followUpFailInfo; @ApiModelProperty(value = "首次应随访详情") private List<ServiceSubtask> needFollowUpInfo; @ApiModelProperty(value = "首次待随访详情") private List<ServiceSubtask> pendingFollowUpInfo; @ApiModelProperty(value = "首次随访成功详情") private List<ServiceSubtask> followUpSuccessInfo; @ApiModelProperty(value = "及时率") @Excel(name = " 及时率 ") private Double rate = 0.0; smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -544,25 +544,28 @@ st.setTaskid(taskid); st.setSendState(2L); List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st); if (CollectionUtils.isEmpty(serviceTasks) && type == 1) { log.info("该患者出院随访长期任务不存在,任务ID为:{}", taskid); patMedInhosp1.setDeptcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院科室长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; } else if (CollectionUtils.isEmpty(serviceTasks) && type == 2) { patMedInhosp1.setWardcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院病区长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; } else if (CollectionUtils.isEmpty(serviceTasks) && type == 3) { patMedInhosp1.setDiagcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者疾病长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; ServiceTask serviceTask = null; if(CollectionUtils.isEmpty(serviceTasks)){ if (type == 1) { log.info("该患者出院随访长期任务不存在,任务ID为:{}", taskid); patMedInhosp1.setDeptcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院科室长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; } else if (type == 2) { patMedInhosp1.setWardcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者离院病区长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; } else if (type == 3) { patMedInhosp1.setDiagcheckFlag("2"); patMedInhosp1.setLongTaskReason(longTaskReason + " & 该患者疾病长期任务不存在,任务ID为:" + taskid); patMedInhospMapper.updatePatMedInhosp(patMedInhosp1); return; } }else { serviceTask = serviceTasks.get(0); } ServiceTask serviceTask = serviceTasks.get(0); if (Objects.isNull(patMedInhosp1.getEndtime())) { return; } @@ -580,7 +583,7 @@ Integer i = 0; //先判断一下,是否需要校验 if (check && serviceSubtask.getTaskSituation() != 6) { if (check && (Objects.isNull(serviceSubtask.getTaskSituation()) || serviceSubtask.getTaskSituation() != 6)) { //在新增之前,先通过患者ID,sendstate=2查询一下,在所有长期任务中,是不是还有该患者待执行的任务,有的话,比较之前的endtime是否小于当前的endtaime,如果之前的小于现在的,则直接将之前的停掉(原因再入院) ServiceSubtaskVO subtask = new ServiceSubtaskVO(); subtask.setPatid(patArchive.getId()); @@ -596,7 +599,28 @@ } //type = 1或2 表示 ”科室、病区“ if (type == 1 || type == 2) { if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime()) && serviceSubtask1.getServiceType().equals("2")) { Date endTime = serviceSubtask.getEndtime(); Date endTime1 = serviceSubtask1.getEndtime(); //出院时间判空,如果为空跳过 if(Objects.isNull(endTime)){ serviceSubtask.setResult("error"); serviceSubtask.setRemark("出院时间为空,serviceSubtask的Id为" + serviceSubtask.getId()); serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); serviceSubtask.setUpdateTime(new Date()); Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); if (aBoolean) i = 1; continue; } if(Objects.isNull(endTime1)){ serviceSubtask1.setResult("error"); serviceSubtask1.setRemark("出院时间为空,serviceSubtask的Id为" + serviceSubtask1.getId()); serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy()); serviceSubtask1.setUpdateTime(new Date()); Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); if (aBoolean) i = 1; continue; } if (endTime1.before(endTime) && serviceSubtask1.getServiceType().equals("2")) { //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉 serviceSubtask1.setSendstate(4L); if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -14,6 +14,7 @@ import com.smartor.mapper.*; import com.smartor.service.*; import com.sun.org.apache.bcel.internal.generic.NEW; import io.swagger.annotations.ApiModelProperty; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -2431,6 +2432,15 @@ serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); //记录过滤患者详情 List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>(); //记录首次应随访详情 List<ServiceSubtask> needFollowUpInfo = new ArrayList<>(); //记录首次待随访详情 List<ServiceSubtask> pendingFollowUpInfo = new ArrayList<>(); //记录首次随访成功详情 List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>(); //记录首次随访失败详情 List<ServiceSubtask> followUpFailInfo = new ArrayList<>(); for (ServiceSubtask serviceSubtask : serviceSubtaskList) { //无需随访人次 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { @@ -2447,17 +2457,25 @@ //首次出院随访 if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) { //首次应随访 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L); needFollowUpInfo.add(serviceSubtask); } //首次待随访 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L); pendingFollowUpInfo.add(serviceSubtask); } //首次随访成功 if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) { serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); followUpSuccessInfo.add(serviceSubtask); } //首次随访失败 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) { serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); followUpFailInfo.add(serviceSubtask); } if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp(); @@ -2531,7 +2549,14 @@ } } serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks); //记录首次应随访详情 serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo); //记录首次待随访详情 serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo); //记录首次随访成功详情 serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo); //记录首次随访失败详情 serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo); return serviceSubtaskStatistic; }