| | |
| | | private IServiceTaskdeptService serviceTaskdeptService; |
| | | |
| | | @Autowired |
| | | private IServiceTaskdiagService serviceTaskdiagService; |
| | | |
| | | @Autowired |
| | | private IServiceTaskoperService serviceTaskoperService; |
| | | |
| | | @Autowired |
| | | private RedisCache redisCache; |
| | | |
| | | @Autowired |
| | |
| | | |
| | | @Value("${phoneUpEveryHour}") |
| | | private Integer phoneUpEveryHour; |
| | | @Value("${phoneEndHour}") |
| | | private Integer phoneEndHour; |
| | | |
| | | /** |
| | | * 查询单一任务(随访) |
| | |
| | | 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()); |
| | |
| | | @Override |
| | | 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; |
| | | } |
| | | |
| | |
| | | if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1; |
| | | else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1; |
| | | if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1; |
| | | if (serviceSubtask.getSendstate() == 3L) yfs = yfs + 1; |
| | | if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1; |
| | | if (serviceSubtask.getSendstate() == 1L) blq = blq + 1; |
| | | if (serviceSubtask.getExcep().equals("1")) yc = yc + 1; |
| | | } |
| | |
| | | @Override |
| | | public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) { |
| | | serviceSubtask.setUpdateTime(DateUtils.getNowDate()); |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6) |
| | | serviceSubtask.setFinishtime(new Date()); |
| | | return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | } |
| | | |
| | |
| | | if (serviceTask.getSendState() == null) { |
| | | serviceTask.setSendState(1L); |
| | | serviceTaskVO.setSendState(1L); |
| | | }else { |
| | | serviceTask.setSendState(serviceTaskVO.getSendState()); |
| | | } |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) { |
| | | serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid()); |
| | | serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename()); |
| | | } |
| | | serviceTask.setTemplateid(tempid); |
| | | serviceTask.setTemplatename(tempName); |
| | | if (serviceTaskVO.getTemplateid() != null) { |
| | | serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); |
| | | serviceTask.setTemplatename(serviceTaskVO.getTemplatename()); |
| | | } else { |
| | | serviceTask.setTemplateid(tempid); |
| | | serviceTask.setTemplatename(tempName); |
| | | } |
| | | serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes()); |
| | | serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode()); |
| | | if (serviceTaskVO.getLongTask() == 1L) serviceTask.setSendState(2L); |
| | | serviceTask.setSendState(2L); |
| | | serviceTask.setCreateTime(new Date()); |
| | | serviceTask.setUpdateTime(new Date()); |
| | | 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); |
| | | log.error("----serviceTaskVO.getAppltype()的值为:{}", serviceTaskVO.getAppltype()); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) { |
| | | if (serviceTaskVO.getAppltype().equals("3")) { |
| | | ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag(); |
| | | serviceTaskdiag.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdiag.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdiag.setLongtask(0L); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L); |
| | | serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code()); |
| | | serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name()); |
| | | serviceTaskdiag.setGuid(serviceTask.getGuid()); |
| | | serviceTaskdiag.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskdiag.setCreateTime(new Date()); |
| | | log.error("----serviceTaskdiag的值为:{}", serviceTaskdiag); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) { |
| | | String[] Icd10codes = serviceTaskVO.getIcd10code().split(","); |
| | | for (String icd10code : Icd10codes) { |
| | | serviceTaskdiag.setIcd10code(icd10code); |
| | | serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag); |
| | | } |
| | | } |
| | | } else if (serviceTaskVO.getAppltype().equals("4")) { |
| | | ServiceTaskoper serviceTaskoper = new ServiceTaskoper(); |
| | | serviceTaskoper.setOpcode(serviceTaskVO.getOpcode()); |
| | | serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc()); |
| | | serviceTaskoper.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskoper.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskoper.setLongtask(0L); |
| | | serviceTaskoper.setGuid(serviceTask.getGuid()); |
| | | serviceTaskoper.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskoper.setCreateTime(new Date()); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) { |
| | | String[] opcodes = serviceTaskVO.getOpcode().split(","); |
| | | for (String opcode : opcodes) { |
| | | serviceTaskoper.setOpcode(opcode); |
| | | log.error("----serviceTaskoper的值为:{}", serviceTaskoper); |
| | | serviceTaskoperService.insertServiceTaskoper(serviceTaskoper); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(0L); |
| | | 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()); |
| | |
| | | serviceSubtask.setEndtime(patTaskRelevance.getEndtime()); |
| | | serviceSubtask.setNurseId(patTaskRelevance.getNurseId()); |
| | | serviceSubtask.setNurseName(patTaskRelevance.getNurseName()); |
| | | serviceSubtask.setCreateBy(serviceTask.getCreateBy()); |
| | | serviceSubtask.setUpdateBy(serviceTask.getCreateBy()); |
| | | if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) |
| | | serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime()); |
| | | serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); |
| | |
| | | serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot())); |
| | | //修改操作,需要将stopState状态+1 |
| | | ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid()); |
| | | long l = serviceTask1.getStopState() + 1; |
| | | serviceTask.setStopState(l); |
| | | // long l = serviceTask1.getStopState() + 1; |
| | | // serviceTask.setStopState(l); |
| | | //获取到该任务所有的服务,并从队列里删除 |
| | | ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO(); |
| | | serviceSubtaskVO.setTaskid(serviceTask1.getTaskid()); |
| | | serviceSubtaskVO.setSendstate(2L); |
| | | List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | serviceSubtaskVO.setSendstate(1L); |
| | | List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1); |
| | | } else { |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1; |
| | | } |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskList)) { |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | | log.error("insertOrUpdateTask需要移除的subId为:{}", serviceSubtask.getId().toString()); |
| | | serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId()); |
| | | redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString()); |
| | | redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString()); |
| | | } |
| | | } |
| | | |
| | | if (serviceTaskVO.getLibtemplateid() != null) |
| | | serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString()); |
| | | serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); |
| | | serviceTask.setLongTask(serviceTaskVO.getLongTask()); |
| | | serviceTask.setUpdateTime(new Date()); |
| | | serviceTaskService.updateServiceTask(serviceTask); |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(0L); |
| | | 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()); |
| | | if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) { |
| | | |
| | | ServiceTaskdept st = new ServiceTaskdept(); |
| | | st.setDeptCode(deptCode); |
| | | st.setTaskId(serviceTask.getTaskid()); |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st); |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts)) { |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } else { |
| | | serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept); |
| | | |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) { |
| | | String[] deptcodes = serviceTaskVO.getDeptcode().split(","); |
| | | for (String deptCode : deptcodes) { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(0L); |
| | | serviceTaskdept.setOrgid(serviceTaskVO.getOrgid()); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); |
| | | serviceTaskdept.setDeptCode(deptCode); |
| | | serviceTaskdept.setDeptType("1"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | ServiceTaskdept st = new ServiceTaskdept(); |
| | | st.setDeptCode(deptCode); |
| | | st.setTaskId(serviceTask.getTaskid()); |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st); |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts)) { |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } else { |
| | | serviceTaskdeptService.updateServiceTaskdept(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()); |
| | | //先通过任务ID、部门code,判断ServiceTaskdept是否存在,不存在则新增,存在则修改 |
| | | ServiceTaskdept st = new ServiceTaskdept(); |
| | | st.setDeptCode(districtcode); |
| | | st.setTaskId(serviceTask.getTaskid()); |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st); |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts)) { |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } else { |
| | | serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) { |
| | | String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(","); |
| | | for (String districtcode : leavehospitaldistrictcodes) { |
| | | ServiceTaskdept serviceTaskdept = new ServiceTaskdept(); |
| | | serviceTaskdept.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdept.setTaskName(serviceTask.getTaskName()); |
| | | serviceTaskdept.setLongtask(0L); |
| | | serviceTaskdept.setOrgid(serviceTaskVO.getOrgid()); |
| | | if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L); |
| | | serviceTaskdept.setDeptCode(districtcode); |
| | | serviceTaskdept.setDeptType("2"); |
| | | serviceTaskdept.setServiceType(serviceTaskVO.getServiceType()); |
| | | //先通过任务ID、部门code,判断ServiceTaskdept是否存在,不存在则新增,存在则修改 |
| | | ServiceTaskdept st = new ServiceTaskdept(); |
| | | st.setDeptCode(districtcode); |
| | | st.setTaskId(serviceTask.getTaskid()); |
| | | List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st); |
| | | if (CollectionUtils.isEmpty(serviceTaskdepts)) { |
| | | serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept); |
| | | } else { |
| | | serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept); |
| | | } |
| | | } |
| | | } |
| | | } else if (serviceTaskVO.getAppltype().equals("3")) { |
| | | ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag(); |
| | | serviceTaskdiag.setTaskId(serviceTask.getTaskid()); |
| | | serviceTaskdiag.setTaskName(serviceTask.getTaskName()); |
| | | if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) { |
| | | throw new BaseException("疾病编码为空"); |
| | | } |
| | | // serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code()); |
| | | |
| | | serviceTaskdiag.setLongtask(1L); |
| | | serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name()); |
| | | serviceTaskdiag.setGuid(serviceTask.getGuid()); |
| | | serviceTaskdiag.setOrgid(serviceTask.getOrgid()); |
| | | serviceTaskdiag.setUpdateTime(new Date()); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) { |
| | | String[] icd10codes = serviceTaskVO.getIcd10code().split(","); |
| | | for (String icdcode : icd10codes) { |
| | | //先查询一下是否存在 |
| | | ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag(); |
| | | serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid()); |
| | | serviceTaskdiag2.setIcd10code(icdcode); |
| | | List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2); |
| | | serviceTaskdiag.setIcd10code(icdcode); |
| | | log.error("----serviceTaskdiag更新的值为:{}", serviceTaskdiag); |
| | | if (CollectionUtils.isNotEmpty(serviceTaskdiags)) { |
| | | serviceTaskdiag.setId(serviceTaskdiags.get(0).getId()); |
| | | serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag); |
| | | } else { |
| | | serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } else if (serviceTaskVO.getAppltype().equals("4")) { |
| | | ServiceTaskoper serviceTaskoper = new ServiceTaskoper(); |
| | | if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) { |
| | | throw new BaseException("手术编码为空"); |
| | | } |
| | | // 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()); |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) { |
| | | String[] opcodes = serviceTaskVO.getOpcode().split(","); |
| | | for (String opcode : opcodes) { |
| | | //先查询一下是否存在 |
| | | ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper(); |
| | | serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid()); |
| | | serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode()); |
| | | List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2); |
| | | |
| | | serviceTaskoper.setOpcode(opcode); |
| | | log.error("----serviceTaskoper的值为:{}", serviceTaskoper); |
| | | if (CollectionUtils.isNotEmpty(serviceTaskopers)) { |
| | | serviceTaskoper.setId(serviceTaskopers.get(0).getId()); |
| | | serviceTaskoperService.updateServiceTaskoper(serviceTaskoper); |
| | | } else { |
| | | serviceTaskoperService.insertServiceTaskoper(serviceTaskoper); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) { |
| | | IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate(); |
| | |
| | | serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam())); |
| | | if (patTaskRelevance.getIsoperation() != null) { |
| | | if (patTaskRelevance.getIsoperation() == 2) |
| | | serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); |
| | | serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask); |
| | | if (patTaskRelevance.getIsoperation() == 1) { |
| | | serviceSubtask.setSendstate(1L); |
| | | serviceSubtask.setUpdateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtask.setCreateBy(serviceTask.getUpdateBy()); |
| | | serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); |
| | | } |
| | | if (patTaskRelevance.getIsoperation() == 3) |
| | |
| | | double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); |
| | | serviceSubtask.setScore(BigDecimal.valueOf(score)); |
| | | serviceSubtask.setFinishtime(new Date()); |
| | | serviceSubtask.setUpdateTime(new Date()); |
| | | log.error("先更新一下分数,电话的serviceSubtask的值为:{}", serviceSubtask); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | Map<String, String> map = delRedisValue(null, id.toString()); |
| | | if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val")); |
| | |
| | | //phoneCount() 通过给出的每个小时需要打出的电话量,算出到晚上8点一点能打出多少个电话,获取到总量 |
| | | //如果需要立即执行的数据量大于一天要执行的上限,则只取上限的数量,其它的则放回redis中 |
| | | count = Math.min(phoneCount(), (int) size); |
| | | cacheList = listOps.range("cache-0", 0, count - 1); |
| | | if (count != 0) { |
| | | cacheList = listOps.range("cache-0", 0, count - 1); |
| | | } |
| | | } |
| | | |
| | | log.error("任务拉取cache-0的值是多少:{}", cacheList); |
| | |
| | | } |
| | | } |
| | | if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList); |
| | | log.error("-----------实际拉取的电话数据量:{}", pullTaskVOList.size()); |
| | | log.error("-----------实际拉取的电话数据量:{}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null); |
| | | return pullTaskVOList; |
| | | } |
| | | |
| | |
| | | PullTaskVO pullTaskVO = new PullTaskVO(); |
| | | String subId = subIds.get(i).trim(); |
| | | ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId)); |
| | | if (ObjectUtils.isEmpty(serviceSubtask)) { |
| | | log.error("该subId有问题,在表中查询不到:{}", subId); |
| | | continue; |
| | | } |
| | | if (StringUtils.isEmpty(serviceSubtask.getPhone())) { |
| | | serviceSubtask.setRemark("手机号为空"); |
| | | serviceSubtask.setSendstate(4L); |
| | | serviceSubtask.setResult("error"); |
| | | serviceSubtask.setFinishtime(new Date()); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | continue; |
| | | } |
| | | ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); |
| | | IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid()); |
| | | if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue; |
| | |
| | | } |
| | | } |
| | | //如果ivrTaskTemplateScript为空,也就没有往下执行的必要了 |
| | | if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) return null; |
| | | if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) { |
| | | log.error("---------这个ivrTaskTemplate.getId()的问题为空:{}", ivrTaskTemplate.getId()); |
| | | continue; |
| | | } |
| | | //获取通配符匹配过后的问题 |
| | | String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext()); |
| | | String kcb = serviceTask.getKcb() + "," + scrContent; |
| | |
| | | //无人接听 |
| | | 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()); |
| | | serviceSubtask.setUpdateTime(new Date()); |
| | | log.error("电话拨打已完成serviceSubtask的值为:{}", serviceSubtask); |
| | | 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("/"); |
| | | String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex); |
| | | // int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 加1是跳过/符号 |
| | | // int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/"); |
| | | // String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex); |
| | | //下载文件 |
| | | ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString()); |
| | | redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup"); |
| | |
| | | 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; |
| | |
| | | serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L); |
| | | } |
| | | } |
| | | //随访完成率=已发送/随访数 |
| | | if (serviceSubtaskStatistic.getYfsCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) { |
| | | //随访完成率=已完成/应随访量 |
| | | if (serviceSubtaskStatistic.getYwcCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) { |
| | | serviceSubtaskStatistic.setSfwcl("0"); |
| | | } else { |
| | | // BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYfsCount().toString()).divide(new BigDecimal(serviceSubtaskList.size() + ""), 2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP); |
| | | serviceSubtaskStatistic.setSfwcl(multiply.toString()); |
| | | } |
| | | |
| | |
| | | serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid()); |
| | | serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid()); |
| | | } |
| | | serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null); |
| | | serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid()); |
| | | serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone()); |
| | | serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy()); |
| | |
| | | serviceSubtaskDetail.setEndTime(System.currentTimeMillis()); |
| | | serviceSubtaskDetail.setSentEnd(1L); |
| | | serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString()); |
| | | serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno()); |
| | | serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext()); |
| | | serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath()); |
| | | serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType()); |
| | | serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions()); |
| | | serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText()); |
| | | serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId()); |
| | | |
| | | int i = 1; |
| | | for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { |
| | |
| | | RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); |
| | | String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key); |
| | | String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key); |
| | | String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key); |
| | | ServiceOutPath serviceOutPath = new ServiceOutPath(); |
| | | serviceOutPath.setParam1(taskId); |
| | | serviceOutPath.setParam2(patid); |
| | | serviceOutPath.setCreateTime(new Date()); |
| | | serviceOutPath.setParam6(subId); |
| | | iServiceOutPathService.insertServiceOutPath(serviceOutPath); |
| | | //转成16进制 |
| | | String format = String.format("%03X", serviceOutPath.getId()); |
| | |
| | | // 当前时间 |
| | | LocalTime currentTime = LocalTime.now(); |
| | | // 目标时间(晚上 8 点) |
| | | LocalTime targetTime = LocalTime.of(20, 0); |
| | | LocalTime targetTime = LocalTime.of(phoneEndHour, 0); |
| | | // 计算当前时间到目标时间的时长 |
| | | Duration duration = Duration.between(currentTime, targetTime); |
| | | // 获取剩余时间的小时数 |
| | | long remainingHours = duration.toHours(); |
| | | long remainingHours = 0; |
| | | long remainingMinutes = duration.toMinutes(); |
| | | //如果超过8点,就设置为0 |
| | | if (remainingHours < 0) remainingHours = 0; |
| | | //距离结束时间小于20分钟,就不拉取了 |
| | | if (remainingMinutes < 20) remainingHours = 0; |
| | | else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1; |
| | | else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60; |
| | | // 计算剩余可以打的电话数 |
| | | int remainingCalls = (int) (remainingHours * phoneUpEveryHour); |
| | | return remainingCalls; |