liusheng
2025-03-26 fa132afa3a6942a48002c8e36e9ee47de13ee005
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -22,6 +22,7 @@
import com.smartor.mapper.ServiceTaskMapper;
import com.smartor.mapper.SysUserImportMapper;
import com.smartor.service.*;
import com.sun.org.apache.bcel.internal.generic.NEW;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -69,6 +70,9 @@
    @Autowired
    private IPatMedInhospService iPatMedInhospService;
    @Autowired
    private IPatMedOperationService iPatMedOperationService;
    @Autowired
    private IServiceSubtaskService iServiceSubtaskService;
@@ -216,7 +220,7 @@
    public void dealHisData2() {
        //将患者信息、出院、门诊数据全部采集
        // 指定的开始日期
        LocalDate endDate = LocalDate.of(2024, 9, 1);
        LocalDate endDate = LocalDate.of(2025, 3, 3);
        // 当前日期
        LocalDate currentDate = LocalDate.now();
        // 定义日期格式
@@ -236,6 +240,14 @@
     */
    public void dealOutHospInfo() {
        iPatMedInhospService.dealOutHospInfo();
    }
    /**
     * 处理手术信息,进入子任务表
     */
    public void dealOperationInfo() {
        iPatMedOperationService.dealOperationInfo();
    }
    /**
@@ -312,9 +324,7 @@
                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
                // 按照 endtime 离当前时间最近的排序
                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream()
                        .sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime())))
                        .collect(Collectors.toList());
                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());
                if (descByCode.equals("电话")) {
                    String value = "";
@@ -324,6 +334,14 @@
                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
                            //如何任务被“暂停”或“终止”
                            break;
                        }
                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
                            serviceSubtask.setRemark("手机号为空");
                            serviceSubtask.setSendstate(4L);
                            serviceSubtask.setResult("error");
                            serviceSubtask.setFinishtime(new Date());
                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                            continue;
                        }
                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
                        //说明是立即发送(先把消息放到cache-0中,   displayNo不知道怎么配置)
@@ -351,7 +369,8 @@
                    }
                    //将要执行的放到缓存中
                    if (list.size() > 0) {
                        redisCache.setCacheListLeft("cache-0", list);
//                        redisCache.setCacheListLeft("cache-0", list);
                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
                    }
                } else if (descByCode.equals("多媒体")) {
                    //多媒体
@@ -359,8 +378,46 @@
                    //纸质
                } else if (descByCode.equals("微信小程序")) {
                    //微信小程序
                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
                        log.error("微信小程序期任务发送---------进来了吗?{}", serviceSubtask);
                    log.error("ivrTask1的值为:{}", ivrTask1);
                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
                        //说明该任务的患者是循环执行的
                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());
                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
                        //这里需要根据身份证去重
                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
                        aa:
                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
                            for (ServiceSubtask ss : serviceSubtaskListFilter) {
                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
                                    continue aa;
                                }
                            }
                            serviceSubtaskListFilter.add(serviceSubtask);
                        }
                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {
                            //将子任务ID删除 、sendstate改成3
                            serviceSubtask.setSendstate(3L);
                            serviceSubtask.setId(null);
                            serviceSubtask.setFinishtime(null);
                            serviceSubtask.setCreateTime(new Date());
                            serviceSubtask.setUpdateTime(new Date());
                            //处理重复新增问题,先查一下今天是不是有新增过,新增过就不新增了
                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();
                            LocalDate today = LocalDate.now();
                            LocalTime startOfDay = LocalTime.of(0, 0, 0);
                            LocalTime endOfDay = LocalTime.of(23, 59, 59);
                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());
                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());
                            ssvo.setCreateStartTime(startOfDayDate);
                            ssvo.setCreateEndTime(endOfDayDate);
                            ssvo.setCreateBy(serviceSubtask.getCreateBy());
                            ssvo.setSendname(serviceSubtask.getSendname());
                            ssvo.setSfzh(serviceSubtask.getSfzh());
                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);
                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))
                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                        }
                    }
                } else if (descByCode.equals("短信")) {
                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
@@ -382,12 +439,14 @@
                                    continue;
                                }
                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
                                SendMagParam sendMagParam = new SendMagParam();
                                sendMagParam.setType("4");
                                ServiceOutPath serviceOutPath = new ServiceOutPath();
                                serviceOutPath.setParam1(taskId);
                                serviceOutPath.setParam2(patid);
                                serviceOutPath.setParam3(ivrTask1.getTaskName());
                                serviceOutPath.setParam6(subId);
                                serviceOutPath.setCreateTime(new Date());
                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
                                String format = String.format("%03X", serviceOutPath.getId());
@@ -541,7 +600,7 @@
        String filename = null;
        if (cry.equals("0")) filename = "入院信息" + System.currentTimeMillis();
        if (cry.equals("1")) filename = "出院信息" + System.currentTimeMillis();
        File file = new File("D:\\public\\华卓集成平台数据\\" + filename);
        File file = new File("D:\\public\\HIS数据采集\\" + filename);
        if (!file.exists()) {
            // 如果文件不存在,则创建新文件
            try {
@@ -591,7 +650,7 @@
                    patArchive.setSex(thiedInhospInfo.getPatiRecordGender().equals("男") ? 1L : 2L);
                    patArchive.setNation(thiedInhospInfo.getPatiNation());
                    patArchive.setNativePlace(thiedInhospInfo.getPatiNationality());
                    patArchive.setPlaceOfResidence(thiedInhospInfo.getPatiHomeAddr());
                    patArchive.setPlaceOfResidence(StringUtils.isNotEmpty(thiedInhospInfo.getPatiHomeAddr()) ? thiedInhospInfo.getPatiHomeAddr().replace("null", "") : "");
                    try {
                        if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday()))
                            patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getPatiBirthday()));
@@ -666,6 +725,7 @@
                patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId());
                patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName());
                patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptCode());
                patMedInhosp.setOrgid("1");
                //如果是出院,先通过患者编号和流水号去查一下,患者是否存在,如果存在,则进行修改
                PatMedInhosp inhosp = new PatMedInhosp();
                inhosp.setPatno(patArchive.getPatientno());