陈昶聿
11 小时以前 fe65881855686cd33a81e864cefd0307bcdeac78
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -550,6 +550,7 @@
    //将患者放到subtask中
    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type, String config) {
        String longTaskReason = patMedInhosp1.getLongTaskReason();
        String orgId = patMedInhosp1.getOrgid();
        if (StringUtils.isEmpty(longTaskReason)) longTaskReason = "";
        ServiceTask st = new ServiceTask();
        st.setTaskid(taskid);
@@ -634,17 +635,28 @@
                                if (aBoolean) i = 1;
                                continue;
                            }
                            if (endTime1.before(endTime) && serviceSubtask1.getServiceType().equals("2")) {
                                //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉
                                serviceSubtask1.setSendstate(4L);
                                if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
                                    serviceSubtask.setRemark(serviceSubtask.getRemark() + ",科室/病区患者再入院");
                                else serviceSubtask.setRemark("科室/病区患者再入院");
                                serviceSubtask1.setResult("error");
                                serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
                                serviceSubtask1.setUpdateTime(new Date());
                                Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
                                if (aBoolean) i = 1;
                            //再入院逻辑
                            //景宁 出院首次(7天)随访一定要做
                            boolean firstVisit = false;
                            if (orgId.equals("47255004333112711A1001")
                                    && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1){
                                firstVisit = true;
                            }
                            if (endTime1.before(endTime) && serviceSubtask1.getServiceType().equals("2")
                            ) {
                                if(!firstVisit){
                                    //景宁的不需要将再入院的子任务停掉
                                    //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉
                                    serviceSubtask1.setSendstate(4L);
                                    if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
                                        serviceSubtask.setRemark(serviceSubtask.getRemark() + ",科室/病区患者再入院");
                                    else serviceSubtask.setRemark("科室/病区患者再入院");
                                    serviceSubtask1.setResult("error");
                                    serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
                                    serviceSubtask1.setUpdateTime(new Date());
                                    Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
                                    if (aBoolean) i = 1;
                                }
                            } else {
                                //相反,则将当有的数据停掉
                                serviceSubtask.setResult("error");
@@ -834,19 +846,21 @@
        //如果是通知的话,需要提前几天将通过短信发出去(具体几天,这个可以配置在sys_conf表中)
        if ("3".equals(serviceTask.getType())) {
            serviceSubtask.setVisitTime(minusDay(newDate, StringUtils.isNotEmpty(config) ? Integer.parseInt(config) : 0));
            //判断是不是景宁
            if (patMedInhosp1.getOrgid().equals("47255004333112711A1001"))
            {
                serviceSubtask.setVisitTime(null);
                //不执行
                serviceSubtask.setSendstate(4L);
                serviceSubtask.setRemark("景宁没有给随访时间,不发送通知短信");
            //如果该出院记录有随访时间,则用他自己的随访时间
            if (patMedInhosp1.getFudate() != null){
                serviceSubtask.setVisitTime(minusDay(patMedInhosp1.getFudate(),
                        StringUtils.isNotEmpty(config) ? Integer.parseInt(config) : 0));
            }else{
                //判断是不是景宁
                if (patMedInhosp1.getOrgid().equals("47255004333112711A1001"))
                {
                    serviceSubtask.setVisitTime(null);
                    //不执行
                    serviceSubtask.setSendstate(4L);
                    serviceSubtask.setRemark("景宁没有给随访时间,不发送通知短信");
                }
            }
            //如果该出院记录有随访时间,则用他自己的随访时间
            if (patMedInhosp1.getFudate() != null)
                serviceSubtask.setVisitTime(minusDay(patMedInhosp1.getFudate(), StringUtils.isNotEmpty(config) ? Integer.parseInt(config) : 0));
        }
        //患者发送时间