| | |
| | | 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; |
| | |
| | | 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.*; |
| | |
| | | |
| | | @Autowired |
| | | private IServiceSubtaskService iServiceSubtaskService; |
| | | |
| | | @Autowired |
| | | private IServicePatientTempService iServicePatientTempService; |
| | | |
| | | @Autowired |
| | | private PlatformTransactionManager transactionManager; |
| | |
| | | |
| | | @Autowired |
| | | ISvyTaskTemplateService svyTaskTemplateService; |
| | | |
| | | @Autowired |
| | | IIvrTaskTemplateService iIvrTaskTemplateService; |
| | | |
| | | @Value("${hosp_info_url}") |
| | | private String hospInfoUrl; |
| | |
| | | //将患者信息、出院、门诊数据全部采集 |
| | | // 获取当前日期和时间 |
| | | 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); |
| | | |
| | |
| | | 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() { |
| | | //获取任务信息 |
| | |
| | | // 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(); |
| | |
| | | //多媒体 |
| | | } 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); |
| | |
| | | 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)); |
| | |
| | | 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(); |
| | | } |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | // 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); |
| | | // } |
| | | } |