| | |
| | | private IServiceTaskdeptService serviceTaskdeptService; |
| | | |
| | | @Autowired |
| | | private IServiceTaskdiagService serviceTaskdiagService; |
| | | |
| | | @Autowired |
| | | private IServiceTaskoperService serviceTaskoperService; |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | @Autowired |
| | |
| | | patTaskRelevance.setPhone(serviceSubtask1.getPhone()); |
| | | patTaskRelevance.setTelcode(serviceSubtask1.getPhone()); |
| | | patTaskRelevance.setAddr(serviceSubtask1.getAddr()); |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getDiagname()); |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname()); |
| | | patTaskRelevance.setPatid(serviceSubtask1.getPatid()); |
| | | patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate()); |
| | | patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); |
| | |
| | | patTaskRelevance.setDeptName(serviceSubtask1.getDeptname()); |
| | | patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); |
| | | patTaskRelevance.setBedNo(serviceSubtask1.getBedNo()); |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getDiagname()); |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname()); |
| | | patTaskRelevance.setPatid(serviceSubtask1.getPatid()); |
| | | patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate()); |
| | | patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode()); |
| | |
| | | public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) { |
| | | List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO); |
| | | //根据出院 时间倒序 |
| | | // List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime).reversed()).collect(Collectors.toList()); |
| | | return selectServiceSubtaskList; |
| | | List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList()); |
| | | return sortedServiceSubtaskList; |
| | | } |
| | | |
| | | @Override |
| | |
| | | serviceTask.setTemplatename(tempName); |
| | | serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes()); |
| | | serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode()); |
| | | if (serviceTaskVO.getLongTask() == 1L) serviceTask.setSendState(2L); |
| | | serviceTaskService.insertServiceTask(serviceTask); |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(0L); |
| | | serviceTaskdept.setGuid(serviceTask.getGuid()); |
| | | serviceTaskdept.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskdept.setOrgid(serviceTask.getOrgid()); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) { |
| | | String[] deptcodes = serviceTaskVO.getDeptcode().split(","); |
| | | for (String deptCode : deptcodes) { |
| | | serviceTaskdept.setDeptCode(deptCode); |
| | | serviceTaskdept.setDeptType("1"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | if (serviceTaskVO.getLongTask() == 1L) { |
| | | serviceTask.setSendState(2L); |
| | | serviceTaskService.insertServiceTask(serviceTask); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) { |
| | | ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag(); |
| | | serviceTaskdiag.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdiag.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdiag.setLongtask(1L); |
| | | serviceTaskdiag.setGuid(serviceTask.getGuid()); |
| | | serviceTaskdiag.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskdiag.setCreateTime(new Date()); |
| | | serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag); |
| | | } else if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) { |
| | | ServiceTaskoper serviceTaskoper = new ServiceTaskoper(); |
| | | serviceTaskoper.setOpcode(serviceTaskVO.getOpcode()); |
| | | serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc()); |
| | | serviceTaskoper.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskoper.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskoper.setLongtask(1L); |
| | | serviceTaskoper.setGuid(serviceTask.getGuid()); |
| | | serviceTaskoper.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskoper.setCreateTime(new Date()); |
| | | serviceTaskoperService.insertServiceTaskoper(serviceTaskoper); |
| | | } else { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(1L); |
| | | serviceTaskdept.setGuid(serviceTask.getGuid()); |
| | | serviceTaskdept.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskdept.setOrgid(serviceTask.getOrgid()); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) { |
| | | String[] deptcodes = serviceTaskVO.getDeptcode().split(","); |
| | | for (String deptCode : deptcodes) { |
| | | serviceTaskdept.setDeptCode(deptCode); |
| | | serviceTaskdept.setDeptType("1"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } |
| | | } |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) { |
| | | String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(","); |
| | | for (String districtcode : leavehospitaldistrictcodes) { |
| | | serviceTaskdept.setDeptCode(districtcode); |
| | | serviceTaskdept.setDeptType("2"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) { |
| | | String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(","); |
| | | for (String districtcode : leavehospitaldistrictcodes) { |
| | | serviceTaskdept.setDeptCode(districtcode); |
| | | serviceTaskdept.setDeptType("2"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) { |
| | | Map<String, Integer> map = new HashMap<>(); |
| | | map.put("taskId", serviceTask.getTaskid().intValue()); |
| | | return map; |
| | | } |
| | | } |
| | | // |
| | | if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) { |
| | | Map<String, Integer> map = new HashMap<>(); |
| | | map.put("taskId", serviceTask.getTaskid().intValue()); |
| | | return map; |
| | | } else { |
| | | serviceTaskService.insertServiceTask(serviceTask); |
| | | } |
| | | |
| | | //将任务信息放到服务表中 |
| | |
| | | //无人接听 |
| | | getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid())); |
| | | redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup"); |
| | | redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid()); |
| | | } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) { |
| | | // if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) { |
| | | log.error("有人接电话了,并且完了"); |
| | |
| | | serviceSubtask.setRemark("电话拨打已完成"); |
| | | serviceSubtask.setSendstate(6L); |
| | | serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid())); |
| | | serviceSubtask.setFinishtime(new Date()); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | //下载文件 |
| | | ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString()); |
| | | redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup"); |
| | | } else { |
| | | //患者拒绝随访 |
| | | //先把该subId从cache_exist中剔除,只要有回调就剔除(目的是,尽快让cache-exist为空,去缓存下一批要打的电话;这里剔除不影响电话的正常业务) |
| | | redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid()); |
| | | ServiceSubtask serviceSubtask = new ServiceSubtask(); |
| | | serviceSubtask.setRemark("电话接通成功,患者拒绝随访"); |
| | | serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid())); |
| | | serviceSubtask.setSendstate(6L); |
| | | serviceSubtask.setFinishtime(new Date()); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 加1是跳过/符号 |
| | | int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/"); |
| | |
| | | public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) { |
| | | log.error("getSfStatistics的入参为:{}", serviceSubtaskCountReq); |
| | | List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); |
| | | Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(ServiceSubtask::getLeavehospitaldistrictname)); |
| | | Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); |
| | | for (List<ServiceSubtask> serviceSubtaskList : collect.values()) { |
| | | if (CollectionUtils.isEmpty(serviceSubtaskList)) { |
| | | continue; |