已修改4个文件
115 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }