liusheng
7 小时以前 141eef1ac1e9111fb33f96a95b59ba69422f8688
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -300,7 +300,7 @@
                } catch (Exception e) {
                    log.error("人员入院科室处理出异常了:{}", e.getMessage());
                    patMedInhosp1.setInDeptcheckFlag("2");
                    patMedInhosp1.setLongTaskReason("人员入院科室处理出异常了:" + e.getMessage());
                    patMedInhosp1.setLongTaskReason("人员入院科室处理出异常了");
                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                }
            }
@@ -727,7 +727,7 @@
                            //再入院逻辑
                            //景宁 出院首次(7天)随访一定要做
                            boolean firstVisit = false;
                            if (orgId.equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
                            if (orgId.equals("47255004333112711A1001")) {
                                firstVisit = true;
                            }
                            if (!firstVisit) {
@@ -865,8 +865,8 @@
        if (CollectionUtils.isEmpty(serviceTasks)) {
            log.info("该手术对应手术等级的长期任务不存在,任务ID为:{}", taskid);
            patMedOperationItem.setOpercheckFlag("2");
            patMedOperationItem.setLongTaskReason(longTaskReason + " & 该手术对应手术等级的长期任务不存在,任务ID为:" + taskid);
            patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
            patMedOperationItem.setLongTaskReason(" & 该手术对应手术等级的长期任务不存在,任务ID为:" + taskid +";");
            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
            return;
        } else {
            serviceTask = serviceTasks.get(0);
@@ -897,7 +897,7 @@
        //封装serviceSubtask
        ServiceSubtask serviceSubtask = boxedServiceSubtaskForOp(serviceTask, patMedInhospList.get(0), patMedOperationItem, patArchive, config);
        if (ObjectUtils.isEmpty(serviceSubtask)) {
        if (ObjectUtils.isEmpty(serviceSubtask) || Objects.isNull(serviceSubtask.getTaskid())) {
            return;
        }
        if (StringUtils.isNotEmpty(patMedOperationItem.getLeaveldeptcode())) {
@@ -971,17 +971,20 @@
                PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
                patMedOperationItem2.setId(patMedOperationItem.getId());
                patMedOperationItem2.setOpercheckFlag("2");
                patMedOperationItem2.setRemark("生成子任务失败 4");
                patMedOperationItem2.setLongTaskReason("生成子任务失败 4;");
                patMedOperationItem2.setUpdateTime(new Date());
                patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
            }
        } catch (Exception e) {
            //出错回滚事务
            log.info("生成子任务报错回滚sserviceSubtask的taskid为:{},patid为:{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
            log.error("生成子任务报错回滚sserviceSubtask的taskid为:{},patid为:{},手术详情ID为:{}",
                    serviceSubtask.getTaskid(), serviceSubtask.getPatid(), patMedOperationItem.getId(), e);
            PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
            patMedOperationItem2.setId(patMedOperationItem.getId());
            patMedOperationItem2.setOpercheckFlag("2");
            patMedOperationItem2.setRemark("生成子任务报错回滚 4");
            patMedOperationItem2.setUpdateTime(new Date());
            patMedOperationItem2.setLongTaskReason("生成子任务报错回滚 4;");
            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
            e.printStackTrace();
        }
@@ -990,6 +993,10 @@
    private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
        //将preachformDesc的json对象,放到list集合中
        ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
        if (Objects.isNull(serviceTask)) {
            log.error("addServiceSubtaskPreachform taskid={} 查不到任务,跳过preachform子表生成", serviceSubtask.getTaskid());
            return 0;
        }
        String preachformDesc = serviceTask.getPreachformDesc();
        ObjectMapper objectMapper = new ObjectMapper();
@@ -1000,6 +1007,11 @@
                });
            } catch (JsonProcessingException e) {
                log.error("preachform转List<ServiceSubtaskPreachform>报错了:{}", e.getMessage());
            }
            if (CollectionUtils.isEmpty(serviceSubtaskPreachformList)) {
                log.error("preachformDesc解析后为空,跳过preachform子表生成,taskid为:{},preachformDesc为:{}",
                        serviceSubtask.getTaskid(), preachformDesc);
                return 0;
            }
            for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) {
                serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
@@ -1145,13 +1157,15 @@
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
        serviceSubtask.setNurseId(patMedOperationItem.getNurseId());
        serviceSubtask.setNurseName(patMedOperationItem.getNurseName());
//        serviceSubtask.setInhospid(patMedInhosp.getInhospid());
        serviceSubtask.setDrcode(patMedOperationItem.getDrcode());
        serviceSubtask.setDrname(patMedOperationItem.getDrname());
        serviceSubtask.setDeptcode(patMedOperationItem.getDeptcode());
        serviceSubtask.setDeptname(patMedOperationItem.getDeptname());
        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());
        serviceSubtask.setInhospid(patMedInhosp1.getInhospid());
        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
        serviceSubtask.setDrname(patMedInhosp1.getDrname());
        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());
        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());
        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
@@ -1163,19 +1177,18 @@
        serviceSubtask.setSex(patArchive.getSex());
        serviceSubtask.setAge(patArchive.getAge());
        serviceSubtask.setSendstate(2L);
        serviceSubtask.setManagementDoctor(patMedOperationItem.getDrname());
        serviceSubtask.setManagementDoctorCode(patMedOperationItem.getDrcode());
//        serviceSubtask.setStarttime(patMedInhosp.getStarttime());
//        serviceSubtask.setEndtime(patMedInhosp.getEndtime());
        serviceSubtask.setManagementDoctor(patMedInhosp1.getDrname());
        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getDrcode());
        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
        serviceSubtask.setEndtime(patMedInhosp1.getEndtime());
        serviceSubtask.setServiceType(serviceTask.getServiceType());
        serviceSubtask.setPreachform(serviceTask.getPreachform());
        serviceSubtask.setHospType("2");
        serviceSubtask.setCreateTime(new Date());
        serviceSubtask.setUpdateTime(new Date());
        serviceSubtask.setCreateBy(patMedOperationItem.getNurseName());
//        serviceSubtask.setLeavehospitaldistrictcode(patArchive.getLeavehospitaldistrictcode());
//        serviceSubtask.setLeavehospitaldistrictname(patArchive.getLeavehospitaldistrictname());
        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
        serviceSubtask.setOperationItemId(patMedOperationItem.getId());
        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
        serviceSubtask.setUpdateTime(new Date());
@@ -1186,11 +1199,14 @@
        if (!Objects.isNull(patMedInhosp1.getEndtime())) {
            newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());
        } else {
            patMedInhosp1.setDeptcheckFlag("2");
            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者手术出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid());
            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            patMedOperationItem.setOpercheckFlag("2");
            patMedOperationItem.setLongTaskReason("该患者手术出院时间为空,手术详情ID为:" + patMedOperationItem.getId() + ";");
            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
//            patMedInhosp1.setDeptcheckFlag("2");
//            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 该患者手术出院时间为空,出院记录ID为:" + patMedInhosp1.getInhospid());
//            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
            //如果出院时间为空,则返回一个新对象
            return new ServiceSubtask();
            return null;
        }
        serviceSubtask.setLongSendTime(newDate);
        serviceSubtask.setVisitTime(newDate);
@@ -1247,7 +1263,7 @@
                        }
                        //景宁 出院首次(7天)随访一定要做
                        boolean firstVisit = false;
                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
                            firstVisit = true;
                        }
                        if (!firstVisit) {
@@ -1274,8 +1290,10 @@
    public void addOperationSubTask(String config) {
        //            手术随访
        PatMedOperationItem pmoi = new PatMedOperationItem();
        //获取需要出院疾病随访,未处理的数据
//        pmoi.setInhospstate("1");
        //获取需要出院手术随访,未处理的数据
        if(!active.equals("hzszlyy")){
            pmoi.setInhospstate("1");
        }
        pmoi.setOpercheckFlag("0");
        pmoi.setMainFlag("1");
@@ -1289,34 +1307,48 @@
                    continue;
                }
                // 根据患者的疾病,获取该疾病的长期任务
                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
                serviceTaskoper.setLongtask(1L);
                serviceTaskoper.setOrgid(opItem.getOrgid());
                serviceTaskoper.setOplevelcode(opItem.getOplevelcode());
                //根据科室、病区过滤
                List<ServiceTaskoper> serviceTaskopersDept = new ArrayList<>();
                if(StringUtils.isNotEmpty(opItem.getLeaveldeptcode())){
                    serviceTaskoper.setDeptCode(opItem.getLeaveldeptcode());
                }else {
                    serviceTaskoper.setWardCode(opItem.getLeavehospitaldistrictcode());
                    ServiceTaskoper serviceTaskoper1 = new ServiceTaskoper();
                    serviceTaskoper1.setLongtask(1L);
                    serviceTaskoper1.setOrgid(opItem.getOrgid());
                    serviceTaskoper1.setOplevelcode(opItem.getOplevelcode());
                    serviceTaskoper1.setDeptCode(opItem.getLeaveldeptcode());
                    serviceTaskopersDept = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper1);
                }
                List<ServiceTaskoper> serviceTaskopers = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper);
                List<ServiceTaskoper> serviceTaskopersWard = new ArrayList<>();
                if(StringUtils.isNotEmpty(opItem.getLeavehospitaldistrictcode())){
                    ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
                    serviceTaskoper2.setLongtask(1L);
                    serviceTaskoper2.setOrgid(opItem.getOrgid());
                    serviceTaskoper2.setOplevelcode(opItem.getOplevelcode());
                    serviceTaskoper2.setWardCode(opItem.getLeavehospitaldistrictcode());
                    serviceTaskopersWard = serviceTaskoperMapper.selectServiceTaskoperList(serviceTaskoper2);
                }
                List<ServiceTaskoper> serviceTaskopers = new ArrayList<>();
                serviceTaskopers.addAll(serviceTaskopersDept);
                serviceTaskopers.addAll(serviceTaskopersWard);
                //如果部门模板为空(将deptIsNull设置为true)
                if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
                    PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId());
                    patMedOperationItem.setOpercheckFlag("2");
                    patMedOperationItem.setLongTaskReason(patMedOperationItem.getLongTaskReason() + "所患的手术未配置长期任务;");
                    patMedOperationItem.setLongTaskReason("所患的手术未配置长期任务;");
                    patMedOperationItem.setUpdateTime(new Date());
                    patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
                } else {
                    for (ServiceTaskoper serviceTaskoper1 : serviceTaskopers) {
                        writeInSubTaskForOp(serviceTaskoper1.getTaskId(), true, opItem, config);
                    for (ServiceTaskoper serviceTaskoper : serviceTaskopers) {
                        writeInSubTaskForOp(serviceTaskoper.getTaskId(), true, opItem, config);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                log.error("人员手术处理出异常了:{}", e.getMessage());
                opItem.setUpdateTime(new Date());
                opItem.setOpercheckFlag("2");
                opItem.setLongTaskReason("人员手术处理异常");
                patMedOperationItemMapper.updatePatMedOperationItem(opItem);