liusheng
2024-12-04 1ccb709f723a759597dcdc7239d8885cef84d3ce
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -24,6 +24,7 @@
import com.smartor.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -43,6 +44,7 @@
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -69,6 +71,9 @@
    @Autowired
    private IServiceSubtaskService iServiceSubtaskService;
    @Autowired
    private IServicePatientTempService iServicePatientTempService;
    @Autowired
    private PlatformTransactionManager transactionManager;
@@ -117,6 +122,9 @@
    @Autowired
    ISvyTaskTemplateService svyTaskTemplateService;
    @Autowired
    IIvrTaskTemplateService iIvrTaskTemplateService;
    @Value("${hosp_info_url}")
    private String hospInfoUrl;
@@ -187,8 +195,13 @@
        //将患者信息、出院、门诊数据全部采集
        // 获取当前日期和时间
        LocalDateTime endTime = LocalDateTime.now();
        endTime = endTime.with(LocalTime.MIN);
//        String dateStr = "2024/11/30 00:00:00";
//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
//        LocalDateTime endTime = LocalDateTime.parse(dateStr, formatter);
        // 获取前一天的日期和时间
        LocalDateTime startTime = endTime.minusDays(1);
        startTime = startTime.with(LocalTime.MIN);
        getInHospInfo("0", startTime, endTime);
        getInHospInfo("1", startTime, endTime);
@@ -224,8 +237,102 @@
        iPatMedInhospService.dealOutHospInfo();
    }
//    /**
//     * 处理患者信息,进入子任务表(微信小程序)
//     */
//    public void dealOutHospInfoXHC() {
//        PatMedInhosp patMedInhosp = new PatMedInhosp();
//        //获取未处理的数据
//        List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());
//
//        for (ServicePatientTemp servicePatientTemp : servicePatientTemps) {
//            Long tid = null;
//            if (servicePatientTemp.getType() != null && servicePatientTemp.getType() == 1) {
//                IvrTaskTemplate ivrTaskTemplate = iIvrTaskTemplateService.selectIvrTaskTemplateByID(servicePatientTemp.getTempId());
//                tid = ivrTaskTemplate.getTaskid();
//            } else if (servicePatientTemp.getType() != null && servicePatientTemp.getType() == 2) {
//                SvyTaskTemplate svyTaskTemplate = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(servicePatientTemp.getTempId());
//                tid = svyTaskTemplate.getTaskid();
//            }
//
//            ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(tid);
//            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
//            serviceSubtask.setTaskid(serviceTask.getTaskid());
//            serviceSubtask.setTemplateid(servicePatientTemp.getTempId());
//            serviceSubtask.setTemplatename(stt.getTemplateName());
//            serviceSubtask.setPatid(patArchive.getId());
//            serviceSubtask.setSendname(patArchive.getName());
//            serviceSubtask.setSfzh(patArchive.getIdcardno());
//            serviceSubtask.setPhone(patArchive.getTelcode());
//            serviceSubtask.setSex(patArchive.getSex());
//            serviceSubtask.setAge(patArchive.getAge());
//            serviceSubtask.setSendstate(2L);
//            serviceSubtask.setStarttime(patMedInhosp1.getStarttime());
//            serviceSubtask.setEndtime(patMedInhosp1.getEndtime());
//            serviceSubtask.setServiceType("2");
//            serviceSubtask.setPreachform(serviceTask.getPreachform());
//            serviceSubtask.setHospType("2");
//            serviceSubtask.setCreateTime(new Date());
//            serviceSubtask.setUpdateTime(new Date());
//            serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
//            serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
//            serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
//            //设置发送时间
//            Date newDate = addDays(patMedInhosp1.getEndtime(), stt.getSendDay());
//            serviceSubtask.setLongSendTime(newDate);
//            //患者发送时间
//            if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
//                remark = patArchive.getNotrequiredreason();
//                serviceSubtask.setRemark(remark);
//                serviceSubtask.setResult("error");
//                serviceSubtask.setFinishtime(new Date());
//                //不执行
//                serviceSubtask.setSendstate(4L);
//            }
//
//            //在新增之前,先通过患者ID,sendstate=2查询一下,在所有长期任务中,是不是还有该患者待执行的任务,有的话,比较之前的endtime是否小于当前的endtaime,如果之前的小于现在的,则直接将之前的停掉(原因再入院)
//            ServiceSubtaskVO subtask = new ServiceSubtaskVO();
//            subtask.setPatid(patArchive.getId());
//            subtask.setSendstate(2L);
//            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
//            log.error("该患者待执行的任务:{}", selectServiceSubtaskList);
//            if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {
//                for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {
//                    if (Objects.isNull(serviceSubtask1.getLongSendTime())) {
//                        //不是长期任务,不处理
//                        continue;
//                    }
//                    if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime())) {
//                        //如果当前循环的子任务的出院时间在“准备新增的子任务”的出院时间之前,则将循环的子任务停掉
//                        serviceSubtask1.setSendstate(4L);
//                        serviceSubtask1.setRemark("患者再入院");
//                        serviceSubtask1.setResult("error");
//                        serviceSubtask1.setFinishtime(new Date());
//                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
//                    } else {
//                        //相反,则将当有的数据停掉
//                        serviceSubtask.setResult("error");
//                        serviceSubtask.setFinishtime(new Date());
//                        serviceSubtask.setSendstate(4L);
//                        serviceSubtask.setRemark("患者再入院");
//                    }
//                }
//            }
//
//            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
//            //将check_flag改成1(已处理)
//            PatMedInhosp patMedInhosp2 = new PatMedInhosp();
//            patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());
//            patMedInhosp2.setCheckFlag("1");
//            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
//        }
//
//        return 1;
//    }
    /**
     * 长期任务执行
     * 长期任务执行(电话)
     */
    public void longTaskSend() {
        //获取任务信息
@@ -302,12 +409,12 @@
//                                serviceSubtask1.setTaskid(ivrTask.getTaskid());
//                                List<ServiceSubtask> selectServiceSubtaskList1 = iServiceSubtaskService.selectServiceSubtaskList(serviceSubtask1);
//                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
                                    if (StringUtils.isEmpty(value)) {
                                        value = "," + serviceSubtask.getId().toString() + ",";
                                    } else {
                                        if (!value.contains("," + serviceSubtask.getId().toString()))
                                            value = value + "," + serviceSubtask.getId().toString() + ",";
                                    }
                                if (StringUtils.isEmpty(value)) {
                                    value = "," + serviceSubtask.getId().toString() + ",";
                                } else {
                                    if (!value.contains("," + serviceSubtask.getId().toString()))
                                        value = value + "," + serviceSubtask.getId().toString() + ",";
                                }
//                                }
                            } catch (Exception e) {
                                String guid = UUID.randomUUID().toString();
@@ -355,6 +462,13 @@
                    //多媒体
                } else if (descByCode.equals("纸质")) {
                    //纸质
                } else if (descByCode.equals("微信小程序")) {
                    //微信小程序
                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
                        log.error("微信小程序期任务发送---------进来了吗?{}", serviceSubtask);
                    }
                } else if (descByCode.equals("短信")) {
                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
@@ -507,8 +621,8 @@
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
        Map<String, String> req = new HashMap<>();
        if (cry.equals("1")) {
            req.put("startTime", startTime.format(formatter));
            req.put("endTime", endTime.format(formatter));
            req.put("cashStartDate", startTime.format(formatter));
            req.put("cashEndDate", endTime.format(formatter));
            req.put("currStatus", "4");
        } else if (cry.equals("0")) {
            req.put("admissStartDate", startTime.format(formatter));
@@ -631,8 +745,8 @@
                    e.printStackTrace();
                }
                try {
                    if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate()))
                        patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate()));
                    if (StringUtils.isNotEmpty(thiedInhospInfo.getCashDate()))
                        patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getCashDate()));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
@@ -667,8 +781,10 @@
                log.error("是否需要更新:{}", patMedInhosps.size());
                if (CollectionUtils.isNotEmpty(patMedInhosps)) {
                    patMedInhosp.setInhospid(patMedInhosps.get(0).getInhospid());
                    log.error("------患者出入院修改信息:{}",patMedInhosp);
                    patMedInhospService.updatePatMedInhosp(patMedInhosp);
                } else {
                    log.error("----患者出入院新增信息:{}",patMedInhosp);
                    patMedInhospService.insertPatMedInhosp(patMedInhosp);
                }
@@ -720,4 +836,11 @@
//        String code = (String) jsonObject.get("code");
        return jsonObject.toString();
    }
//    public static void main(String[] args) {
//        LocalDateTime originalDateTime = LocalDateTime.now();
//        LocalDateTime startOfDay = originalDateTime.with(LocalTime.MIN);
//        System.out.println("Original DateTime: " + originalDateTime);
//        System.out.println("Start of Day: " + startOfDay);
//    }
}