陈昶聿
9 天以前 af6c73841b54f0c9002ce85b8c0d1679e25d5d7c
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -16,6 +16,7 @@
import com.ruoyi.system.mapper.SysConfigMapper;
import com.smartor.common.FtpService;
import com.smartor.common.MtSubmitSmUtil;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
import com.smartor.domain.*;
@@ -119,7 +120,7 @@
    private IServiceTaskScheduleService serviceTaskScheduleService;
    @Autowired
    private com.smartor.common.ScheduleSubtaskBuilder scheduleSubtaskBuilder;
    private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
    @Autowired
    private FtpService ftpService;
@@ -747,10 +748,14 @@
                    scheduleVO.setOrgid(serviceTask.getOrgid());
                    scheduleVO.setCampusid(serviceTask.getCampusid());
                    scheduleVO.setCreateBy(serviceTask.getCreateBy());
                    scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
                    scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
                    scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
                    scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
                    log.info("----serviceTaskSchedule的值为:{}", scheduleVO);
                    serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
                    // 绑定维度写条件表(供 HIS 自动纳入匹配,longtask 恒=1)
                    bindDimensionCondition(serviceTask, serviceTaskVO);
                } else {
                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                    serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -846,7 +851,7 @@
                        List<ServiceTaskScheduleDetail> detailList =
                                serviceTaskScheduleService.selectDetailByScheduleid(schedule.getId());
                        scheduleSubtaskBuilder.buildSubtasksForPatient(
                                serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask);
                                serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
                        continue;
                    }
@@ -1076,11 +1081,12 @@
                    scheduleVO.setTaskid(serviceTask.getTaskid());
                    scheduleVO.setOrgid(serviceTask.getOrgid());
                    scheduleVO.setCampusid(serviceTask.getCampusid());
                    scheduleVO.setDeptCodes(serviceTaskVO.getDeptcode());
                    scheduleVO.setWardCodes(serviceTaskVO.getLeavehospitaldistrictcode());
                    scheduleVO.setIcd10Codes(serviceTaskVO.getIcd10code());
                    scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
                    scheduleVO.setCreateBy(serviceTask.getUpdateBy());
                    serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
                    // 先清旧维度条件表,再按最新入参重写(防过期维度残留导致误纳入)
                    clearDimensionCondition(serviceTask.getTaskid());
                    bindDimensionCondition(serviceTask, serviceTaskVO);
                }
            }
            if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
@@ -1145,7 +1151,7 @@
                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
                            serviceSubtask.setCreateBy(serviceTask.getUpdateBy());
                            scheduleSubtaskBuilder.buildSubtasksForPatient(
                                    serviceTask, serviceTaskVO, schedule, detailList, patTaskRelevance, serviceSubtask);
                                    serviceTask, serviceTaskVO.getPreachformList(), schedule, detailList, patTaskRelevance, serviceSubtask);
                            continue;
                        }
                        if (patTaskRelevance.getIsoperation() == 2) {
@@ -1199,86 +1205,6 @@
        Map<String, Integer> map = new HashMap<>();
        map.put("taskId", serviceTask.getTaskid().intValue());
        return map;
    }
    /**
     * 任务组(appltype=5)绑定维度写条件表,供 HIS 自动纳入匹配。
     * longtask 恒=1(否则独立扫描/主扫描按 longtask=1 查不到)。
     * 复用现有 service_taskdept(科室deptType=1/病区deptType=2)、service_taskdiag(疾病)。
     * 手术维度本期不写(暂不支持自动纳入)。
     */
    private void bindDimensionCondition(ServiceTask serviceTask, ServiceTaskVO vo) {
        // 科室
        if (StringUtils.isNotEmpty(vo.getDeptcode())) {
            for (String deptCode : vo.getDeptcode().split(",")) {
                if (StringUtils.isEmpty(deptCode)) continue;
                ServiceTaskdept d = new ServiceTaskdept();
                d.setTaskId(serviceTask.getTaskid());
                d.setTaskName(serviceTask.getTaskName());
                d.setOrgid(serviceTask.getOrgid());
                d.setLongtask(1L);
                d.setDeptCode(deptCode);
                d.setDeptType("1");
                d.setServiceType(vo.getServiceType());
                serviceTaskdeptService.insertServiceTaskdept(d);
            }
        }
        // 病区
        if (StringUtils.isNotEmpty(vo.getLeavehospitaldistrictcode())) {
            for (String wardCode : vo.getLeavehospitaldistrictcode().split(",")) {
                if (StringUtils.isEmpty(wardCode)) continue;
                ServiceTaskdept d = new ServiceTaskdept();
                d.setTaskId(serviceTask.getTaskid());
                d.setTaskName(serviceTask.getTaskName());
                d.setOrgid(serviceTask.getOrgid());
                d.setLongtask(1L);
                d.setDeptCode(wardCode);
                d.setDeptType("2");
                d.setServiceType(vo.getServiceType());
                serviceTaskdeptService.insertServiceTaskdept(d);
            }
        }
        // 疾病(用 split(","),勿照抄 appltype=3 现网的 split("$") bug)
        if (StringUtils.isNotEmpty(vo.getIcd10code())) {
            String[] codes = vo.getIcd10code().split(",");
            String[] names = StringUtils.isNotEmpty(vo.getIcd10name()) ? vo.getIcd10name().split(",") : new String[0];
            for (int i = 0; i < codes.length; i++) {
                if (StringUtils.isEmpty(codes[i])) continue;
                ServiceTaskdiag dg = new ServiceTaskdiag();
                dg.setTaskId(serviceTask.getTaskid());
                dg.setTaskName(serviceTask.getTaskName());
                dg.setOrgid(serviceTask.getOrgid());
                dg.setLongtask(1L);
                dg.setServiceType(vo.getServiceType());
                dg.setIcd10code(codes[i]);
                dg.setIcd10name(i < names.length ? names[i] : null);
                dg.setGuid(serviceTask.getGuid());
                dg.setCreateTime(new Date());
                serviceTaskdiagService.insertServiceTaskdiag(dg);
            }
        }
    }
    /**
     * 任务组修改时,先软删该 task 旧的维度条件表记录(防过期维度残留导致误纳入)。
     */
    private void clearDimensionCondition(Long taskId) {
        ServiceTaskdept dq = new ServiceTaskdept();
        dq.setTaskId(taskId);
        List<ServiceTaskdept> depts = serviceTaskdeptService.selectServiceTaskdeptList(dq);
        if (CollectionUtils.isNotEmpty(depts)) {
            for (ServiceTaskdept d : depts) {
                serviceTaskdeptService.deleteServiceTaskdeptById(d.getId());
            }
        }
        ServiceTaskdiag gq = new ServiceTaskdiag();
        gq.setTaskId(taskId);
        List<ServiceTaskdiag> diags = serviceTaskdiagService.selectServiceTaskdiagList(gq);
        if (CollectionUtils.isNotEmpty(diags)) {
            for (ServiceTaskdiag g : diags) {
                serviceTaskdiagService.deleteServiceTaskdiagById(g.getId());
            }
        }
    }
    @Override