| | |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } |
| | | } |
| | | // 点位行(2026-11,appltype=7):科室 / 病区 / 点位在 service_taskdept 里是 |
| | | // **各自独立的行**,可以共存也可以不共存 —— 所以点位行是"额外追加", |
| | | // 不替换上面的科室/病区行。点位行的 dept_code/dept_name 留空,编码只落 point_location。 |
| | | if ("7".equals(serviceTaskVO.getAppltype())) { |
| | | String pointLocation = firstNonBlank(serviceTaskVO.getPointLocation(), |
| | | serviceTask.getPointLocation()); |
| | | if (StringUtils.isNotEmpty(pointLocation)) { |
| | | ServiceTaskdept pointDept = new ServiceTaskdept(); |
| | | pointDept.setTaskId(serviceTask.getTaskid()); |
| | | pointDept.setTaskName(serviceTask.getTaskName()); |
| | | pointDept.setOrgid(serviceTask.getOrgid()); |
| | | pointDept.setLongtask(serviceTask.getLongTask() == null ? null |
| | | : Long.valueOf(serviceTask.getLongTask())); |
| | | pointDept.setServiceType(serviceTaskVO.getServiceType()); |
| | | pointDept.setDeptType("3"); |
| | | pointDept.setPointLocation(pointLocation); |
| | | serviceTaskdeptService.insertServiceTaskdept(pointDept); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //长期任务,也允许加人了 |
| | |
| | | scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode()); |
| | | scheduleVO.setCreateBy(serviceTask.getUpdateBy()); |
| | | serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO); |
| | | } else if (serviceTaskVO.getAppltype().equals("7")) { |
| | | // 按点位(同德需求):先软删该任务旧的 dept_type='3' 行,再按入参重建 |
| | | // (与科室/病区「先删后插」同口径;点位行 dept_code/dept_name 留空) |
| | | ServiceTaskdept oldPoint = new ServiceTaskdept(); |
| | | oldPoint.setTaskId(serviceTask.getTaskid()); |
| | | oldPoint.setDeptType("3"); |
| | | serviceTaskdeptService.deleteServiceTaskdeptByTaskId(oldPoint); |
| | | String pointLocation = StringUtils.isNotEmpty(serviceTaskVO.getPointLocation()) |
| | | ? serviceTaskVO.getPointLocation() : serviceTask.getPointLocation(); |
| | | if (StringUtils.isNotEmpty(pointLocation)) { |
| | | ServiceTaskdept pointDept = new ServiceTaskdept(); |
| | | pointDept.setTaskId(serviceTask.getTaskid()); |
| | | pointDept.setTaskName(serviceTask.getTaskName()); |
| | | pointDept.setOrgid(serviceTaskVO.getOrgid()); |
| | | pointDept.setLongtask(serviceTask.getLongTask() == null ? null |
| | | : Long.valueOf(serviceTask.getLongTask())); |
| | | pointDept.setServiceType(serviceTaskVO.getServiceType()); |
| | | pointDept.setDeptType("3"); |
| | | pointDept.setPointLocation(pointLocation); |
| | | serviceTaskdeptService.insertServiceTaskdept(pointDept); |
| | | } |
| | | } |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) { |
| | |
| | | String ip = localIP; |
| | | ServiceTask serviceTask = new ServiceTask(); |
| | | serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceTaskVo.getTaskid()); |
| | | if (ObjectUtils.isEmpty(serviceTask)) { |
| | | // 任务不存在 → 不可能有 data,直接抛业务异常(接口层会转成 code=500) |
| | | throw new BaseException("扫码生成任务失败:任务不存在或已删除(taskid=" + serviceTaskVo.getTaskid() + ")"); |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTask)) { |
| | | try { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | // 维度(科室/病区/点位)由任务的 appltype 决定:1=科室、2=病区、7=点位。 |
| | | // 三种维度在 service_taskdept 里是**各自独立的行**(各自的列),可以共存、也可以不共存; |
| | | // 但查行时必须只带一个维度 —— 否则会用 A 维度的编码去撞 B 维度的行, |
| | | // 而点位行的 dept_code 本来就是空的。 |
| | | String appltype = serviceTask.getAppltype(); |
| | | if ("7".equals(appltype)) { |
| | | serviceTaskdept.setDeptType("3"); |
| | | serviceTaskdept.setPointLocation(firstNonBlank(serviceTaskVo.getPointLocation(), |
| | | serviceTask.getPointLocation())); |
| | | } else if ("2".equals(appltype)) { |
| | | serviceTaskdept.setDeptType("2"); |
| | | // 任务上的科室/病区可能是逗号多选,查 service_taskdept 要用单值(取第一个) |
| | | serviceTaskdept.setDeptCode(firstNonBlank(serviceTaskVo.getLeavehospitaldistrictcode(), |
| | | firstValue(serviceTask.getLeavehospitaldistrictcode()))); |
| | | } else if ("1".equals(appltype)) { |
| | | serviceTaskdept.setDeptType("1"); |
| | | serviceTaskdept.setDeptCode(firstNonBlank(serviceTaskVo.getDeptcode(), |
| | | firstValue(serviceTask.getDeptcode()))); |
| | | } else { |
| | | // appltype 为空的历史任务:沿用改造前的口径(科室 → 病区,后写的覆盖先写的), |
| | | // 点位作为第三维,只在传了点位时补上。 |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())) { |
| | | serviceTaskdept.setDeptType("1"); |
| | | serviceTaskdept.setDeptCode(serviceTaskVo.getDeptcode()); |
| | |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())) { |
| | | serviceTaskdept.setDeptType("2"); |
| | | serviceTaskdept.setDeptCode(serviceTaskVo.getLeavehospitaldistrictcode()); |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVo.getPointLocation())) { |
| | | serviceTaskdept.setDeptType("3"); |
| | | serviceTaskdept.setPointLocation(serviceTaskVo.getPointLocation()); |
| | | } |
| | | } |
| | | serviceTaskdept.setServiceType(serviceTask.getServiceType()); |
| | | serviceTaskdept.setOrgid(serviceTask.getOrgid()); |
| | |
| | | iServiceOutPathService.updateServiceOutPath(serviceOutPath); |
| | | |
| | | } |
| | | } else { |
| | | // 配置缺失属「业务可预期」情况:带上排查信息抛出去(不吞), |
| | | // 接口层据此返回 code=500 + 明确 msg,避免「200 + 空 data」。 |
| | | throw new BaseException("扫码生成任务失败:未匹配到任务维度配置(taskid=" + serviceTaskVo.getTaskid() |
| | | + ",appltype=" + appltype |
| | | + ",deptType=" + serviceTaskdept.getDeptType() |
| | | + ",deptCode=" + serviceTaskdept.getDeptCode() |
| | | + ",pointLocation=" + serviceTaskdept.getPointLocation() + ")"); |
| | | } |
| | | } catch (BaseException be) { |
| | | // ⚠️ 必须排在 catch (Exception) 之前:BaseException 是 RuntimeException, |
| | | // 否则刚抛出的业务异常会被下面整段吞掉,接口又变成 200 + 空 data。 |
| | | throw be; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("【扫码生成任务】处理异常:{}", e.getMessage()); |
| | | log.error("【扫码生成任务】处理异常:taskid={},{}", serviceTaskVo.getTaskid(), e.getMessage(), e); |
| | | } |
| | | } |
| | | return content; |
| | |
| | | if (StringUtils.isNotEmpty(serviceTaskdept.getDeptType()) && serviceTaskdept.getDeptType().equals("1")) { |
| | | serviceSubtask.setLeaveldeptcode(serviceTaskdept.getDeptCode()); |
| | | serviceSubtask.setLeaveldeptname(serviceTaskdept.getDeptName()); |
| | | } else if (StringUtils.isNotEmpty(serviceTaskdept.getDeptType()) && serviceTaskdept.getDeptType().equals("3")) { |
| | | // 点位行(dept_type='3'):dept_code/dept_name 为空,点位只落 point_location |
| | | serviceSubtask.setPointLocation(serviceTaskdept.getPointLocation()); |
| | | } else { |
| | | serviceSubtask.setLeavehospitaldistrictcode(serviceTaskdept.getDeptCode()); |
| | | serviceSubtask.setLeavehospitaldistrictname(serviceTaskdept.getDeptName()); |