liusheng
昨天 28446c1489c8977d634e7a39dbbc96967e22c6f1
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -230,11 +230,16 @@
    /**
     * HIS数据采集
     * 定时任务:采集患者信息、出院、门诊数据
     * todayZeroStr  当前的时间   例如:2026-05-06 00:00:00
     */
    public void dealHisData() {
    public void dealHisData(String todayZeroStr) {
        log.info("【dealHisData】开始执行HIS数据采集任务");
        // 获取昨天0点到今天0点的时间范围
        LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);
        if (StringUtils.isNotBlank(todayZeroStr)) {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            todayZero = LocalDateTime.parse(todayZeroStr, formatter);
        }
        LocalDateTime yesterdayZero = todayZero.minusDays(1);
        log.info("【dealHisData】采集时间范围:{} ~ {}", yesterdayZero, todayZero);
@@ -253,8 +258,7 @@
            } catch (Exception e) {
                log.error("【dealHisData】新华数据采集异常", e);
            }
        }
        else if (active.trim().equals("hn")) {
        } else if (active.trim().equals("hn")) {
            try {
                // 河南数据采集
                HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
@@ -269,8 +273,7 @@
            } catch (Exception e) {
                log.error("【dealHisData】河南数据采集异常", e);
            }
        }
        else if (active.trim().equals("sltd") || active.trim().equals("nhfy")) {
        } else if (active.trim().equals("sltd") || active.trim().equals("nhfy")) {
            //省立同德与华南附一用同一套采集方法(都是来未来提供)
            try {
@@ -322,14 +325,14 @@
                // 省立同德数据采集
                for (Long cid : campusidList) {
                    log.debug("【dealHisData】省立同德“预入院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“预入院”开始采集数据,院区:{}", cid);
                    String nowTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                    ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
                    serviceSLTDInhospReqVO.setOrgId("20001001");
                    serviceSLTDInhospReqVO.setCampusId(cid);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    if(active.trim().equals("nhfy")) {
                    if (active.trim().equals("nhfy")) {
                        serviceSLTDInhospReqVO.setEncounterTimeStart(yesterdayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                        serviceSLTDInhospReqVO.setEncounterTimeEnd(todayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    }
@@ -338,73 +341,75 @@
                    list.add("FH0109.23");
                    list.add("FH0109.53");
                    serviceSLTDInhospReqVO.setStatusList(list);
                    log.debug("【dealHisData】省立同德“预入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“预入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“预入院”結束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“预入院”結束采集数据,院区:{}", cid);
                    log.debug("【dealHisData】省立同德“入院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“入院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setOrgId("20001001");
                    serviceSLTDInhospReqVO.setCampusId(cid);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(null);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(null);
                    serviceSLTDInhospReqVO.setStartHeadTime(nowTime);
                    serviceSLTDInhospReqVO.setStartTailTime(nowTime);
                    if(active.trim().equals("nhfy")) {
                    if (active.trim().equals("nhfy")) {
                        serviceSLTDInhospReqVO.setStartHeadTime(yesterdayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                        serviceSLTDInhospReqVO.setStartTailTime(todayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    }
                    List<String> listStr = new ArrayList<>();
                    listStr.add("FH0109.26");
                    serviceSLTDInhospReqVO.setStatusList(listStr);
                    log.debug("【dealHisData】省立同德“入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“入院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“入院”結束采集数据,院区:{}", cid);
                    // 门急诊分页采集:每页1000条,直到无数据为止
                    log.debug("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                    if(active.trim().equals("nhfy")) {
                        serviceSLTDInhospReqVO.setEncounterTimeStart(yesterdayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                        serviceSLTDInhospReqVO.setEncounterTimeEnd(todayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    }
                    serviceSLTDInhospReqVO.setStatusList(null);
                    List<String> list1 = new ArrayList<>();
                    list1.add("FH0108.01");
                    list1.add("FH0108.03");
                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                    long outpPage = 1L;
                    final long OUTP_PAGE_SIZE = 1000L;
                    while (true) {
                        serviceSLTDInhospReqVO.setCurrent(outpPage);
                        serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
                        log.debug("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                        List<ServiceSLTDInhospResDTO> outpResult = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                        if (CollectionUtils.isEmpty(outpResult)) {
                            log.debug("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                            break;
                    // 门急诊分页采集:每页1000条,直到无数据为止(南华附一的先不采门急诊数据)
                    if (active.trim().equals("sltd")) {
                        log.info("【dealHisData】省立同德“门急诊”开始分页采集数据,院区:{}", cid);
                        serviceSLTDInhospReqVO.setStartHeadTime(null);
                        serviceSLTDInhospReqVO.setStartTailTime(null);
                        serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                        serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                        if (active.trim().equals("nhfy")) {
                            serviceSLTDInhospReqVO.setEncounterTimeStart(yesterdayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                            serviceSLTDInhospReqVO.setEncounterTimeEnd(todayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                        }
                        log.debug("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                        if (outpResult.size() < OUTP_PAGE_SIZE) {
                            break;
                        serviceSLTDInhospReqVO.setStatusList(null);
                        List<String> list1 = new ArrayList<>();
                        list1.add("FH0108.01");
                        list1.add("FH0108.03");
                        serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                        long outpPage = 1L;
                        final long OUTP_PAGE_SIZE = 1000L;
                        while (true) {
                            serviceSLTDInhospReqVO.setCurrent(outpPage);
                            serviceSLTDInhospReqVO.setSize(OUTP_PAGE_SIZE);
                            log.info("【dealHisData】省立同德“门急诊”采集第{}页数据,院区:{}", outpPage, cid);
                            List<ServiceSLTDInhospResDTO> outpResult = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                            if (CollectionUtils.isEmpty(outpResult)) {
                                log.info("【dealHisData】省立同德“门急诊”第{}页无数据,采集结束,院区:{}", outpPage, cid);
                                break;
                            }
                            log.info("【dealHisData】省立同德“门急诊”第{}页采集{}条,院区:{}", outpPage, outpResult.size(), cid);
                            if (outpResult.size() < OUTP_PAGE_SIZE) {
                                break;
                            }
                            outpPage++;
                        }
                        outpPage++;
                        // 清除分页参数,避免影响后续出入院查询
                        serviceSLTDInhospReqVO.setCurrent(null);
                        serviceSLTDInhospReqVO.setSize(null);
                        log.info("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                    }
                    // 清除分页参数,避免影响后续出入院查询
                    serviceSLTDInhospReqVO.setCurrent(null);
                    serviceSLTDInhospReqVO.setSize(null);
                    log.debug("【dealHisData】省立同德“门急诊”分页采集完成,院区:{}", cid);
                    log.debug("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“出院”开始采集数据,院区:{}", cid);
                    serviceSLTDInhospReqVO.setStartHeadTime(null);
                    serviceSLTDInhospReqVO.setStartTailTime(null);
                    serviceSLTDInhospReqVO.setEncounterTimeStart(null);
                    serviceSLTDInhospReqVO.setEncounterTimeEnd(null);
                    serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(nowTime);
                    serviceSLTDInhospReqVO.setPreOutHospitalTailDate(nowTime);
                    if(active.trim().equals("nhfy")) {
                    if (active.trim().equals("nhfy")) {
                        serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(yesterdayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                        serviceSLTDInhospReqVO.setPreOutHospitalTailDate(todayZero.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
                    }
@@ -413,9 +418,9 @@
//                    list2.add("FH0108.02");
                    list2.add("FH0109.27");
                    serviceSLTDInhospReqVO.setStatusList(list2);
                    log.debug("【dealHisData】省立同德“出院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    log.info("【dealHisData】省立同德“出院”采集数据入参:{}", serviceSLTDInhospReqVO);
                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                    log.debug("【dealHisData】省立同德“出院”束采集数据,院区:{}", cid);
                    log.info("【dealHisData】省立同德“出院”束采集数据,院区:{}", cid);
                }
            } catch (Exception e) {
@@ -438,7 +443,7 @@
                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
                serviceSLTDInhospReqVO.setOrgId("20001001");
                serviceSLTDInhospReqVO.setCampusId(30001002L);
                log.debug("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", "30001002");
                log.info("【dealHisData】省立同德“门急诊”开始采集数据,院区:{}", "30001002");
                serviceSLTDInhospReqVO.setStartHeadTime(null);
                serviceSLTDInhospReqVO.setStartTailTime(null);
                serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
@@ -448,15 +453,17 @@
                list1.add("FH0108.01");
                list1.add("FH0108.03");
                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
                log.debug("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
                log.info("【dealHisData】省立同德“门急诊”采集数据入参:{}", serviceSLTDInhospReqVO);
                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                log.debug("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", "30001002");
                log.info("【dealHisData】省立同德“门急诊”束采集数据,院区:{}", "30001002");
            }
        } catch (Exception e) {
            log.error("【dealHisData】省立同德数据采集异常", e);
        }
    }    /**
    }
    /**
     * 这个只是新华临时使用,平时用不到
     */
    public void dealHisData2() {
@@ -683,7 +690,8 @@
        if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
            //不需要发送
            serviceSubtask.setResult("患者不需要随访");
            serviceSubtask.setRemark("患者不需要随访," + patArchive.getNotrequiredreason());
            serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "患者不需要随访," + patArchive.getNotrequiredreason() : "患者不需要随访," + patArchive.getNotrequiredreason());
            serviceSubtask.setSendstate(4L);
            iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
            setSuccessPreachForm(serviceSubtask, "-1", "不需要执行", "6");
@@ -1064,11 +1072,11 @@
                    //说明全发送失败了
                    serviceSubtask.setSendstate(5L);
                    log.error("getSendPreachform方法 检查是否所有sendstate不等于9, 全失败了");
                    serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败");
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败" : "所有发送方式均未获取结果,任务失败");
                    //人工发送超时
                    if (ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtask.setSendstate(7L);
                        serviceSubtask.setRemark("人工发送超时");
                        serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "人工发送超时" : "人工发送超时");
                    }
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    //修改发送状态
@@ -1291,7 +1299,7 @@
                if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
                    serviceSubtask.setCurrentPreachform(preachform);
                    serviceSubtask.setSendstate(7L);
                    serviceSubtask.setRemark("人工发送超时");
                    serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "人工发送超时" : "人工发送超时");
                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                    return true;
                } else {
@@ -1299,7 +1307,7 @@
                        serviceSubtask.setCurrentPreachform(preachform);
                        serviceSubtask.setSendstate(5L);
                        log.error("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败");
                        serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "所有发送方式均未获取结果,任务失败" : "所有发送方式均未获取结果,任务失败");
                        //serviceSubtask.setRemark("setSuccessPreachForm方法,当前的preachform已经是最后一个了,全部执行失败");
                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                        return true;
@@ -1316,7 +1324,7 @@
        serviceSubtask.setCurrentPreachform(preachform);
        if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
            serviceSubtask.setSendstate(7L);
            serviceSubtask.setRemark("人工发送超时");
            serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ",人工发送超时" : "人工发送超时");
        } else {
            serviceSubtask.setSendstate(3L);
        }
@@ -1326,6 +1334,7 @@
                serviceSubtask.setSendstate(6L);
            }
        }
        serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
        return true;
    }