陈昶聿
2026-07-30 fe546224146c917c4a9730d3a46c214cd2ceda20
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -11,6 +11,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.smartor.common.ScheduleSubtaskBuilder;
import com.smartor.domain.*;
import com.smartor.domain.DTO.PatMedInhospDTO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatMedInhospService;
@@ -98,14 +99,18 @@
     */
    @Override
    public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
        if (patMedInhosp.getCry() == 0) {
        if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 0) {
            patMedInhosp.setDeptcodeList(patMedInhosp.getLeaveldeptcodes());
            patMedInhosp.setHospitaldistrictcodeList(patMedInhosp.getLeavehospitaldistrictcodes());
            patMedInhosp.setLeaveldeptcodes(null);
            patMedInhosp.setLeavehospitaldistrictcodes(null);
            patMedInhosp.setInhospstate("0");
        } else if (patMedInhosp.getCry() == 1) {
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 1) {
            patMedInhosp.setInhospstate("1");
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 2) {
            patMedInhosp.setInhospstate("2");
        } else if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 3) {
            patMedInhosp.setInhospstate("3");
        }
        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
@@ -114,6 +119,24 @@
            patMedInhosp1.setTagname(tagname);
        }
        return patMedInhospList;
    }
    @Override
    public List<PatMedInhospDTO> selectPatMedInhospByApplication(PatMedInhosp patMedInhosp) {
        List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);
        if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {
            return null;
        }
        List<PatMedInhospDTO> patMedInhospDTOList = DtoConversionUtils.sourceToTarget(patMedInhosps, PatMedInhospDTO.class);
        for (PatMedInhospDTO pmd : patMedInhospDTOList) {
            ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
            serviceSubtask.setServiceType("4");
            serviceSubtask.setInhospid(pmd.getInhospid());
            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
            if (CollectionUtils.isNotEmpty(serviceSubtasks)) pmd.setFinishFlag("1");
        }
        return patMedInhospDTOList;
    }
    @Override
@@ -349,7 +372,7 @@
        serviceTaskVo.setAppltype("5");
        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(serviceTaskVo);
        if (CollectionUtils.isEmpty(serviceTasks)) {
        if (CollectionUtils.isNotEmpty(serviceTasks)) {
            for (ServiceTask serviceTask : serviceTasks) {
                if(!ObjectUtils.isEmpty(serviceTask.getTaskid())){
                    ServiceTaskSchedule serviceTaskSchedule = new ServiceTaskSchedule();
@@ -394,7 +417,8 @@
                            patMedInhospVo.setScheduleCheckFlag("0");
                            patMedInhospVo.setInhospstate("1");
                            patMedInhospVo.setFuflag("1");
                            patMedInhospVo.setDeptcodeList(deptCodeList);
//                            patMedInhospVo.setDeptcodeList(deptCodeList);
                            patMedInhospVo.setLeaveldeptcodes(deptCodeList);
                            patMedInhospVo.setLeavehospitaldistrictcodes(wardCodeList);
                            patMedInhospVo.setIcd10codeList(icd10CodeList);
                            List<PatMedInhosp> patList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
@@ -408,9 +432,10 @@
                                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp.getPatid());
                                if (Objects.isNull(patArchive)) {
                                    break;
                                    continue;
                                }
                                //封装serviceSubtask
                                ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp, patArchive, config, type);
                                List<Map<String, Object>> preachformList = new ArrayList<>();
                                if(StringUtils.isNotEmpty(serviceTask.getPreachformDesc())){
@@ -418,28 +443,31 @@
                                        ObjectMapper objectMapper = new ObjectMapper();
                                        preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                                    }catch (Exception e){
                                        break;
                                        log.error("任务组preachformDesc解析失败,taskid={},inhospid={}", serviceTask.getTaskid(), patMedInhosp.getInhospid());
                                    }
                                }
                                scheduleSubtaskBuilder.buildSubtasksForPatient(serviceTask, serviceTaskSchedule, serviceTaskScheduleDetails, serviceSubtask, preachformList);
                                //置首轮纳入标记,避免下次扫描重复生成(后续轮次由 rollTaskGroupCycle 负责)
                                PatMedInhosp flagUpd = new PatMedInhosp();
                                flagUpd.setInhospid(patMedInhosp.getInhospid());
                                flagUpd.setScheduleCheckFlag("1");
                                patMedInhospMapper.updatePatMedInhosp(flagUpd);
                            }
                        }else {
                            //任务组 - 手术随访
                            if(CollectionUtils.isNotEmpty(opLevelCodeList)){
                                //目前仅限单一手术等级
                                String opLevelCode = opLevelCodeList.get(0);
                                PatMedOperationItem pmoi = new PatMedOperationItem();
                                //获取需要出院疾病随访,未处理的数据
                                pmoi.setOpercheckFlag("0");
                                pmoi.setMainFlag("1");
                                pmoi.setOplevelcode(opLevelCode);
                                pmoi.setDeptCodes(deptCodeList);
                                pmoi.setWardCodes(wardCodeList);
                                pmoi.setOpLevelCodes(opLevelCodeList);
                                List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
                                for(PatMedOperationItem patMedOperationItem : patMedOperationItems){
                                    PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid());
                                    if (Objects.isNull(patArchive)) {
                                        break;
                                        continue;
                                    }
                                    PatMedInhosp patMedInhospVo = new PatMedInhosp();
                                    patMedInhospVo.setPatid((patMedOperationItem.getPatid()));
@@ -460,10 +488,15 @@
                                                ObjectMapper objectMapper = new ObjectMapper();
                                                preachformList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                                            }catch (Exception e){
                                                break;
                                                log.error("任务组(手术)preachformDesc解析失败,taskid={}", serviceTask.getTaskid());
                                            }
                                        }
                                        scheduleSubtaskBuilder.buildSubtasksForPatient(serviceTask, serviceTaskSchedule, serviceTaskScheduleDetails, serviceSubtask, preachformList);
                                        //置首轮纳入标记,避免重复生成
                                        PatMedInhosp flagUpd = new PatMedInhosp();
                                        flagUpd.setInhospid(patMedInhospList.get(0).getInhospid());
                                        flagUpd.setScheduleCheckFlag("1");
                                        patMedInhospMapper.updatePatMedInhosp(flagUpd);
                                    }
                                }
                            }
@@ -818,10 +851,10 @@
        if (ObjectUtils.isEmpty(serviceSubtask)) {
            return;
        }
        if(StringUtils.isNotEmpty(patMedOperationItem.getDeptcode())){
        if (StringUtils.isNotEmpty(patMedOperationItem.getDeptcode())) {
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getDeptcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getDeptname());
        }else {
        } else {
            serviceSubtask.setVisitDeptCode(patMedOperationItem.getHospitaldistrictcode());
            serviceSubtask.setVisitDeptName(patMedOperationItem.getHospitaldistrictname());
        }
@@ -942,7 +975,8 @@
    //封装serviceSubtask
    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
    @Override
    public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, Integer type) {
        //增加serviceTask判空
//        if(Objects.isNull(serviceTask)){
//            return null;
@@ -980,6 +1014,7 @@
        serviceSubtask.setSex(patArchive.getSex());
        serviceSubtask.setAge(patArchive.getAge());
        serviceSubtask.setSendstate(2L);
        serviceSubtask.setCampusid(patMedInhosp1.getCampusid());
        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());
        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());
        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());