陈昶聿
5 天以前 74df9e81909e157ee184f5c1fe9799441c907492
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1312,6 +1312,20 @@
    }
    /**
     * 科室编码去重,保持原顺序,避免 service_task.deptcode 超长和 service_taskdept 重复绑定
     */
    private String normalizeDeptCodes(String deptCodes) {
        if (StringUtils.isEmpty(deptCodes)) {
            return deptCodes;
        }
        return Arrays.stream(deptCodes.split(","))
                .map(String::trim)
                .filter(code -> StringUtils.isNotEmpty(code))
                .distinct()
                .collect(Collectors.joining(","));
    }
    /**
     * 单一任务
     *
     * @return 结果
@@ -1323,6 +1337,8 @@
            log.info("任务入参为空,请检查入参");
            throw new BaseException("任务入参为空,请检查入参");
        }
        // 科室编码去重,避免 service_task.deptcode 超长及 service_taskdept 重复绑定
        serviceTaskVO.setDeptcode(normalizeDeptCodes(serviceTaskVO.getDeptcode()));
        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
        if (CollectionUtils.isEmpty(serviceTaskVO.getPreachformList())) throw new BaseException("任务的发送方式为空");
        //将preachfromList放到serviceTask中的preachfrom中
@@ -1557,7 +1573,12 @@
                    serviceSubtask.setInhospid(patTaskRelevance.getHospid());
                    //新建完成就是待发送状态
                    serviceSubtask.setSendstate(2L);
                    serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode()) ? patTaskRelevance.getDeptcode() : serviceTaskVO.getDeptcode());
                    String subtaskDeptCode = patTaskRelevance.getDeptcode();
                    if (StringUtils.isEmpty(subtaskDeptCode) && StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                        // service_subtask.deptcode 为单值字段,不能写入任务的多科室拼接串,取第一个科室兜底
                        subtaskDeptCode = serviceTaskVO.getDeptcode().split(",")[0].trim();
                    }
                    serviceSubtask.setDeptcode(subtaskDeptCode);
                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
@@ -1630,6 +1651,8 @@
            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
            //只删除首次随访未完成的
            serviceSubtaskVO.setVisitCount(1);
            serviceSubtaskVO.setSendstate(2L);
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
            serviceSubtaskVO.setSendstate(1L);
@@ -1695,6 +1718,11 @@
            if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {
                if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
                    if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                        // 修改任务时先软删除旧的科室绑定,避免旧科室残留
                        ServiceTaskdept oldDept = new ServiceTaskdept();
                        oldDept.setTaskId(serviceTask.getTaskid());
                        oldDept.setDeptType("1");
                        serviceTaskdeptService.deleteServiceTaskdeptByTaskId(oldDept);
                        String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
                        for (String deptCode : deptcodes) {
                            ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
@@ -5760,7 +5788,15 @@
                return resultMap;
            }
            if (StringUtils.isEmpty(serviceSubtask.getPatidHis())) {
            if (patArchive == null) {
                resultMap.put("code", -1);
                resultMap.put("message", "发送异常:" + "【公众号】未查询到患者档案信息,无法通过公众号发送");
                return resultMap;
            }
            // his系统的患者id取自患者档案pat_archive.patid_his,
            // service_subtask查询未关联该字段(serviceSubtask.getPatidHis()恒为空),不能用于校验
            if (StringUtils.isEmpty(patArchive.getPatidHis())) {
                resultMap.put("code", -1);
                resultMap.put("message", "发送异常:" + "【公众号】公众号发送失败,his系统的患者id为空");
                return resultMap;