| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | |
| | | import com.ruoyi.common.dx.MessageSend; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.*; |
| | | import com.ruoyi.common.core.service.IConfigService; |
| | | import com.ruoyi.common.utils.spring.SpringUtils; |
| | | import com.smartor.common.FtpService; |
| | | import com.smartor.config.PhoneUtils; |
| | | import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; |
| | | import com.smartor.domain.*; |
| | | import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO; |
| | | import com.smartor.domain.entity.ServiceSubtaskEntity; |
| | | import com.smartor.mapper.*; |
| | | import com.smartor.service.*; |
| | | import com.sun.org.apache.bcel.internal.generic.NEW; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.apache.commons.collections4.ListUtils; |
| | | import org.apache.commons.collections4.MapUtils; |
| | | import org.apache.commons.lang3.ObjectUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService; |
| | | |
| | | @Autowired |
| | | private IIvrTaskTemplateTargetoptionService iIvrTaskTemplateTargetoptionService; |
| | | |
| | | @Autowired |
| | | private IServiceOutPathService iServiceOutPathService; |
| | | |
| | | @Autowired |
| | | private IPatMedOuthospService iPatMedOuthospService; |
| | | private IServiceSubtaskDetailTraceService traceService; |
| | | |
| | | @Autowired |
| | | private FtpService ftpService; |
| | |
| | | |
| | | @Autowired |
| | | private PatArchiveMapper patArchiveMapper; |
| | | |
| | | @Autowired |
| | | private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper; |
| | | |
| | | @Value("${pri_key}") |
| | | private String pri_key; |
| | |
| | | try { |
| | | List<Map<String, Object>> mapList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class); |
| | | serviceTaskVO.setPreachformList(mapList); |
| | | if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){ |
| | | if (ObjectUtils.isNotEmpty(serviceTask.getTaskid())) { |
| | | ServiceTaskoper operVo = new ServiceTaskoper(); |
| | | operVo.setTaskId(serviceTask.getTaskid()); |
| | | operVo.setOrgid(serviceTask.getOrgid()); |
| | | List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo); |
| | | if(ObjectUtils.isNotEmpty(serviceTaskopers)){ |
| | | if (ObjectUtils.isNotEmpty(serviceTaskopers)) { |
| | | serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode()); |
| | | } |
| | | } |
| | |
| | | serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon()); |
| | | serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight()); |
| | | serviceTaskVO.setPreachform(serviceTask.getPreachform()); |
| | | if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){ |
| | | if (ObjectUtils.isNotEmpty(serviceTask.getTaskid())) { |
| | | ServiceTaskoper operVo = new ServiceTaskoper(); |
| | | operVo.setTaskId(serviceTask.getTaskid()); |
| | | operVo.setOrgid(serviceTask.getOrgid()); |
| | | List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo); |
| | | if(ObjectUtils.isNotEmpty(serviceTaskopers)){ |
| | | if (ObjectUtils.isNotEmpty(serviceTaskopers)) { |
| | | serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode()); |
| | | } |
| | | } |
| | |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname()); |
| | | patTaskRelevance.setPatid(serviceSubtask1.getPatid()); |
| | | patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate()); |
| | | patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); |
| | | patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode()); |
| | | patTaskRelevance.setDeptName(serviceSubtask1.getDeptname()); |
| | | patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode()); |
| | | patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname()); |
| | |
| | | patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime()); |
| | | patTaskRelevance.setAddr(serviceSubtask1.getAddr()); |
| | | patTaskRelevance.setDeptName(serviceSubtask1.getDeptname()); |
| | | patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode()); |
| | | patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode()); |
| | | patTaskRelevance.setBedNo(serviceSubtask1.getBedNo()); |
| | | patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname()); |
| | | patTaskRelevance.setPatid(serviceSubtask1.getPatid()); |
| | |
| | | // 处理空异常 |
| | | if (MapUtils.isEmpty(result)) { |
| | | result = new HashMap<>(); |
| | | // 确保所有 key 都有值,避免空指针异常 |
| | | // MyBatis 的 SUM 在没有匹配行时会返回 null |
| | | result.putIfAbsent("wzx", 0); |
| | | result.putIfAbsent("ysf", 0); |
| | | result.putIfAbsent("yc", 0); |
| | | result.putIfAbsent("jg", 0); |
| | | result.putIfAbsent("fssb", 0); |
| | | result.putIfAbsent("yfs", 0); |
| | | result.putIfAbsent("blq", 0); |
| | | result.putIfAbsent("dsf", 0); |
| | | result.putIfAbsent("total", 0); |
| | | } |
| | | // 确保所有 key 都有值,避免空指针异常 |
| | | // MyBatis 的 SUM 在没有匹配行时会返回 null |
| | | result.putIfAbsent("wzx", 0); |
| | | result.putIfAbsent("ysf", 0); |
| | | result.putIfAbsent("yc", 0); |
| | | result.putIfAbsent("jg", 0); |
| | | result.putIfAbsent("fssb", 0); |
| | | result.putIfAbsent("yfs", 0); |
| | | result.putIfAbsent("blq", 0); |
| | | result.putIfAbsent("dsf", 0); |
| | | |
| | | return result; |
| | | } |
| | | |
| | |
| | | |
| | | if (patMedInhospList.size() > 0) { |
| | | serviceSubtask1.setIsVisitAgain(2); |
| | | serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";患者再入院了"); |
| | | serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";患者再入院了" : "患者再入院了"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | | return "无需再次随访,患者再入院了"; |
| | | } else if (serviceSubtask1.getSendstate() == 4L) { |
| | | serviceSubtask1.setIsVisitAgain(2); |
| | | serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";无需再次随访,任务被标记不在执行"); |
| | | serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";无需再次随访,任务被标记不在执行" : "无需再次随访,任务被标记不在执行"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | | return "无需再次随访,任务被标记不在执行"; |
| | | } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) { |
| | | serviceSubtask1.setIsVisitAgain(2); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1); |
| | | serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";无需再次随访,患者被标记不需要被服务"); |
| | | serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";无需再次随访,患者被标记不需要被服务" : "无需再次随访,患者被标记不需要被服务"); |
| | | return "无需再次随访,患者被标记不需要被服务"; |
| | | } else if (ObjectUtils.isNotEmpty(serviceSubtask1.getIsVisitAgain()) && serviceSubtask1.getIsVisitAgain() == 2) { |
| | | return "无需再次随访,该任务已经再次随访过了"; |
| | |
| | | if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) { |
| | | serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid()); |
| | | serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename()); |
| | | } else { |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) { |
| | | serviceTask.setLibtemplateid("" + serviceTaskVO.getSvyTaskTemplateVO().getTemplateid()); |
| | | serviceTask.setLibtemplatename("" + serviceTaskVO.getLibtemplatename()); |
| | | } |
| | | if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) { |
| | | serviceTask.setLibtemplateid("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplateid()); |
| | | serviceTask.setLibtemplatename("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplatename()); |
| | | } |
| | | } |
| | | if (serviceTaskVO.getTemplateid() != null) { |
| | | serviceTask.setTemplateid(serviceTaskVO.getTemplateid()); |
| | |
| | | serviceSubtask.setTaskid(serviceTask.getTaskid().longValue()); |
| | | serviceSubtask.setTemplatename(tempName); |
| | | serviceSubtask.setTemplateid(tempid); |
| | | serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTaskVO.getLibtemplateid()) ? null : Long.valueOf(serviceTaskVO.getLibtemplateid())); |
| | | serviceSubtask.setLibtemplatename(serviceTaskVO.getLibtemplatename()); |
| | | serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTask.getLibtemplateid()) ? null : Long.valueOf(serviceTask.getLibtemplateid())); |
| | | serviceSubtask.setLibtemplatename(serviceTask.getLibtemplatename()); |
| | | //新增 |
| | | if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) { |
| | | for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) { |
| | |
| | | serviceSubtask.setSendstate(1L); |
| | | if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) |
| | | serviceSubtask.setSendstate(2L); |
| | | serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode()); |
| | | serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode()); |
| | | serviceSubtask.setDeptname(patTaskRelevance.getDeptName()); |
| | | serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); |
| | | serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname()); |
| | |
| | | serviceSubtask.setAddr(patTaskRelevance.getAddr()); |
| | | serviceSubtask.setPatid(patTaskRelevance.getPatid()); |
| | | serviceSubtask.setOpenid(patTaskRelevance.getOpenid()); |
| | | serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode()); |
| | | serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode()); |
| | | serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname()); |
| | | serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); |
| | | serviceSubtask.setDeptname(patTaskRelevance.getDeptName()); |
| | |
| | | ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid())); |
| | | //记录电话发送状态 |
| | | setFailPreachForm(serviceSubtask, "3", "通话正常结束", "9"); |
| | | //删除结束语的患存 |
| | | //删除结束语的缓存 |
| | | redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy"); |
| | | } else { |
| | | redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", true, 120, TimeUnit.MINUTES); |
| | |
| | | serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid()); |
| | | serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid()); |
| | | saveQuestionAnswerPhone(serviceSubTaskDetailReq); |
| | | |
| | | //判断一下当前的问题是不是满意度问题,并且dutyDeptCode是否有值,并且选项是不是异常选项,如果全符合,则往满意度问题异常表新增 |
| | | if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsabnormal()) { |
| | | ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace(); |
| | | //用taskid、subid和scriptid去获取detailid |
| | | ServiceSubtaskDetail ssd = new ServiceSubtaskDetail(); |
| | | ssd.setSubId(serviceSubtask.getId()); |
| | | ssd.setTaskid(serviceSubtask.getTaskid()); |
| | | ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null); |
| | | List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd); |
| | | subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null); |
| | | |
| | | subtaskDetailTrace.setSubId(serviceSubtask.getId()); |
| | | subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid()); |
| | | subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId()); |
| | | subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno()); |
| | | subtaskDetailTrace.setSwitchid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId()); |
| | | subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent()); |
| | | subtaskDetailTrace.setQuestionvoice(null); |
| | | subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname()); |
| | | subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid()); |
| | | //获取所有选项 |
| | | String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse(""); |
| | | subtaskDetailTrace.setTargetid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId()); |
| | | subtaskDetailTrace.setTargetvalue(optionDescStr); |
| | | subtaskDetailTrace.setMatchedtext(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc()); |
| | | subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType()); |
| | | subtaskDetailTrace.setTemplateType(1); |
| | | |
| | | SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid()); |
| | | subtaskDetailTrace.setType(svyLibScriptCategory.getType()); |
| | | subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId()); |
| | | subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext()); |
| | | subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath()); |
| | | subtaskDetailTrace.setPatid(serviceSubtask.getPatid()); |
| | | JSONObject patdescJson = new JSONObject(); |
| | | patdescJson.put("sendname", serviceSubtask.getSendname()); |
| | | patdescJson.put("phone", serviceSubtask.getPhone()); |
| | | patdescJson.put("age", serviceSubtask.getAge()); |
| | | patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "男" : "女" : null); |
| | | subtaskDetailTrace.setPatdesc(patdescJson.toJSONString()); |
| | | subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode()); |
| | | subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName()); |
| | | subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid()); |
| | | subtaskDetailTrace.setHandleFlag("0"); |
| | | subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid()); |
| | | subtaskDetailTrace.setCreateTime(new Date()); |
| | | subtaskDetailTrace.setUpdateTime(new Date()); |
| | | subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid()); |
| | | traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace); |
| | | } |
| | | |
| | | //判断一下,这个选项结果是不是还有继续问下去的必要,例如选项结果是别人不想继续回答问题,就要结束掉 |
| | | if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) { |
| | | redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); |
| | |
| | | // if (existSize > 0) return pullTaskVOList; |
| | | int count = 0; |
| | | long size = listOps.size("cache-0"); |
| | | log.error("---------打电话之前缓存中的数据量:{}", size); |
| | | log.info("---------打电话之前缓存中的数据量:{}", size); |
| | | if (size > 0) { |
| | | //phoneCount() 通过给出的每个小时需要打出的电话量,算出到晚上8点一点能打出多少个电话,获取到总量 |
| | | //如果需要立即执行的数据量大于一天要执行的上限,则只取上限的数量,其它的则放回redis中 |
| | |
| | | } |
| | | } |
| | | // if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList); |
| | | log.error("-----------实际拉取的电话数据量:{}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null); |
| | | log.info("-----------实际拉取的电话数据量:{}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null); |
| | | return pullTaskVOList; |
| | | } |
| | | |
| | |
| | | //设置一下问题分类 |
| | | IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid()); |
| | | if (ivrTaskTemplateScript != null) |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getAssortid()); |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid()); |
| | | } |
| | | |
| | | serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId()); |
| | |
| | | //设置一下问题分类 |
| | | IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid()); |
| | | if (ivrTaskTemplateScript != null) |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getAssortid()); |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid()); |
| | | } |
| | | serviceSubtaskDetail.setCreateTime(new Date()); |
| | | serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid()); |
| | |
| | | String deptcodes = CollectionUtils.isEmpty(request.getDeptcodes()) ? null : String.join(",", request.getDeptcodes()); |
| | | if (!request.getTimeType().equals("month")) { |
| | | req.setBeginAdmitdate(DateUtils.parseDate(serviceStatisticsResponse.getTimePeriod())); |
| | | req.setEndAdmitdate(DateUtils.parseDate(serviceStatisticsResponse.getTimePeriod())); |
| | | req.setEndAdmitdate(DateUtils.addDays(DateUtils.parseDate(serviceStatisticsResponse.getTimePeriod()), 1)); |
| | | } else { |
| | | // year 类型:timePeriod 格式为 "yyyy-MM",取当月第一天和最后一天 |
| | | java.time.YearMonth ym = java.time.YearMonth.parse(serviceStatisticsResponse.getTimePeriod()); |
| | |
| | | public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) { |
| | | log.info("getSfStatistics的入参为:{}", serviceSubtaskCountReq); |
| | | String groupKey = "drcode"; |
| | | if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && !serviceSubtaskCountReq.getLeavehospitaldistrictcodes().isEmpty()) { |
| | | if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 1) { |
| | | if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) { |
| | | groupKey = "drcode"; |
| | | } else { |
| | | groupKey = "leavehospitaldistrictcode"; |
| | | } |
| | | } else if (serviceSubtaskCountReq.getDeptcodes() != null && !serviceSubtaskCountReq.getDeptcodes().isEmpty()) { |
| | | } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2) { |
| | | if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) { |
| | | groupKey = "drcode"; |
| | | } else { |
| | |
| | | ivrTaskTemplateScript.setTemplateID(templateid); |
| | | ivrTaskTemplateScript.setOrgid(serviceTask.getOrgid()); |
| | | //先默认为1吧,assortid=1 代表是满意度 |
| | | ivrTaskTemplateScript.setAssortid(ivrCategoryid); |
| | | ivrTaskTemplateScript.setScriptAssortid(ivrCategoryid); |
| | | List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript); |
| | | if (CollectionUtils.isNotEmpty(ivrTaskTemplateScripts)) { |
| | | //需要先计算出发送量,再乘以单个问券满意度题目数量,得到满意度题目总量(包含了未做的) |
| | |
| | | |
| | | if (visitCount != null && visitCount > 1) { |
| | | serviceSubtaskStatistic = getStatisticAgain(serviceSubtaskList, followUpCountStyle); |
| | | }else if(visitCount != null && visitCount == 1){ |
| | | } else if (visitCount != null && visitCount == 1) { |
| | | serviceSubtaskStatistic = getStatisticFirst(serviceSubtaskList, followUpCountStyle); |
| | | }else { |
| | | } else { |
| | | //格式化为两位小数的百分比 |
| | | DecimalFormat percentFormat = new DecimalFormat("##.##%"); |
| | | serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname()); |
| | |
| | | serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname()); |
| | | //出院人次 |
| | | serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); |
| | | //无需随访详情 |
| | | List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>(); |
| | | //记录过滤患者详情 |
| | | List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>(); |
| | | //记录首次应随访详情 |
| | |
| | | //无需随访人次 |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { |
| | | serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); |
| | | nonFollowUpInfo.add(serviceSubtask); |
| | | if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) { |
| | | serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L); |
| | | filterServiceSubtasks.add(serviceSubtask); |
| | |
| | | } |
| | | } |
| | | serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks); |
| | | //记录无需随访详情 |
| | | serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo); |
| | | //记录首次应随访详情 |
| | | serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo); |
| | | //记录首次待随访详情 |
| | |
| | | |
| | | /** |
| | | * 首次随访统计 |
| | | * |
| | | * @param serviceSubtaskList |
| | | * @param followUpCountStyle |
| | | * @return |
| | |
| | | serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname()); |
| | | //出院人次 |
| | | serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); |
| | | //无需随访详情 |
| | | List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>(); |
| | | //记录过滤患者详情 |
| | | List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>(); |
| | | //记录首次应随访详情 |
| | |
| | | //无需随访人次 |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { |
| | | serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); |
| | | nonFollowUpInfo.add(serviceSubtask); |
| | | if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) { |
| | | serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L); |
| | | filterServiceSubtasks.add(serviceSubtask); |
| | |
| | | } |
| | | } |
| | | serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks); |
| | | //记录无需随访详情 |
| | | serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo); |
| | | //记录首次应随访详情 |
| | | serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo); |
| | | //记录首次待随访详情 |
| | |
| | | |
| | | /** |
| | | * 再次随访统计 |
| | | * |
| | | * @param serviceSubtaskList |
| | | * @param followUpCountStyle |
| | | * @return |
| | |
| | | serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname()); |
| | | //出院人次 |
| | | serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); |
| | | //无需随访详情 |
| | | List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>(); |
| | | //记录过滤患者详情 |
| | | List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>(); |
| | | |
| | |
| | | //无需随访人次 |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { |
| | | serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); |
| | | nonFollowUpInfo.add(serviceSubtask); |
| | | if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) { |
| | | serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L); |
| | | filterServiceSubtasks.add(serviceSubtask); |
| | |
| | | } |
| | | } |
| | | serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks); |
| | | //记录无需随访详情 |
| | | serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo); |
| | | //记录再次应随访详情 |
| | | serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo); |
| | | //记录再次待随访详情 |
| | |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) { |
| | | serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) { |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) { |
| | | serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); |
| | | } |
| | | if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { |
| | |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) { |
| | | serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) { |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) { |
| | | serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); |
| | | } |
| | | if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { |
| | |
| | | serviceSubtaskDetail.setAssigntime(System.currentTimeMillis()); |
| | | serviceSubtaskDetail.setStarttime(System.currentTimeMillis()); |
| | | serviceSubtaskDetail.setAnswertime(System.currentTimeMillis()); |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getAssortid()); |
| | | serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid()); |
| | | serviceSubtaskDetail.setAsrtext("无应答"); |
| | | if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext())) |
| | | serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext()); |
| | |
| | | serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions()); |
| | | serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText()); |
| | | serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null); |
| | | |
| | | int i = 1; |
| | | for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { |
| | | if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) { |
| | | serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | serviceSubtaskDetail.setScore(ivrTaskTemplateTargetoption.getScore() != null ? ivrTaskTemplateTargetoption.getScore().toString() : "0"); |
| | | } |
| | | serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | } |
| | |
| | | if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) { |
| | | serviceSubtask.setCurrentPreachform(preachform); |
| | | serviceSubtask.setSendstate(5L); |
| | | serviceSubtask.setRemark("setFailPreachForm方法 当前的preachform已经是最后一个了,全失败了"); |
| | | serviceSubtask.setRemark("所有发送方式均未获取结果,任务失败"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | //尽管失败,这里也将当前发送方式继续设置成“电话”,sendstate设置成3;因为ryTask里的补偿的定时任务运行时,会找到这条subtask,并进行处理 |
| | | serviceSubtask.setCurrentPreachform(preachform); |
| | | serviceSubtask.setSendstate(3L); |
| | | //如果等于9,则说明电话正常结束了 |
| | |
| | | }).collect(Collectors.toList()); |
| | | } |
| | | |
| | | public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity){ |
| | | public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity) { |
| | | return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> getContinueNurseCount(ServiceSubtaskCotinueCountVO vo) { |
| | | boolean hasDistrict = !CollectionUtils.isEmpty(vo.getLeavehospitaldistrictcodes()); |
| | | boolean hasDept = !CollectionUtils.isEmpty(vo.getDeptcodes()); |
| | | |
| | | List<Map<String, Object>> districtRows; |
| | | List<Map<String, Object>> deptRows; |
| | | |
| | | if (hasDistrict) { |
| | | // 只传了病区:仅按病区维度统计 |
| | | districtRows = serviceSubtaskMapper.getContinueNurseCount(vo); |
| | | deptRows = Collections.emptyList(); |
| | | } else if (hasDept) { |
| | | // 只传了科室:仅按科室维度统计 |
| | | districtRows = Collections.emptyList(); |
| | | deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo); |
| | | } else { |
| | | // 都未传:病区和科室各统计一遍 |
| | | districtRows = serviceSubtaskMapper.getContinueNurseCount(vo); |
| | | deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo); |
| | | } |
| | | |
| | | long totalNoContinue = 0L; |
| | | long totalContinue = 0L; |
| | | List<Map<String, Object>> detail = new ArrayList<>(); |
| | | |
| | | for (Map<String, Object> row : districtRows) { |
| | | String groupName = row.get("groupName") == null ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString()) : row.get("groupName").toString(); |
| | | long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString()); |
| | | long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString()); |
| | | totalNoContinue += noCnt; |
| | | totalContinue += yesCnt; |
| | | Map<String, Object> item = new LinkedHashMap<>(); |
| | | item.put("未延续_" + groupName, noCnt); |
| | | item.put("已延续_" + groupName, yesCnt); |
| | | detail.add(item); |
| | | } |
| | | |
| | | for (Map<String, Object> row : deptRows) { |
| | | String groupName = row.get("groupName") == null ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString()) : row.get("groupName").toString(); |
| | | long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString()); |
| | | long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString()); |
| | | totalNoContinue += noCnt; |
| | | totalContinue += yesCnt; |
| | | Map<String, Object> item = new LinkedHashMap<>(); |
| | | item.put("未延续_" + groupName, noCnt); |
| | | item.put("已延续_" + groupName, yesCnt); |
| | | detail.add(item); |
| | | } |
| | | |
| | | Map<String, Object> result = new LinkedHashMap<>(); |
| | | result.put("未延续总数量", totalNoContinue); |
| | | result.put("已延续总数量", totalContinue); |
| | | result.put("详情", detail); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 设置失败任务默认值,并将失败任务重新置为成功 |
| | | * |
| | | * @param failDay (失败天数:距离当前日期失败天数) |
| | | * @return |
| | | */ |
| | | @Override |
| | | public void setFailSubTaskDefalutVal(Long failDay) { |
| | | //1.先去sys_config中,获取哪些科室或病区需要默认问卷默认值 |
| | | IConfigService configService = SpringUtils.getBean(IConfigService.class); |
| | | String deptConfigValue = configService.selectConfigByKey("hosp.default.dept"); |
| | | String wardConfigValue = configService.selectConfigByKey("hosp.default.ward"); |
| | | List<String> leaveWard = null; |
| | | List<String> leaveDept = null; |
| | | if (deptConfigValue != null && !deptConfigValue.isEmpty()) { |
| | | leaveDept = Arrays.stream(deptConfigValue.split(",")).filter(s -> !s.trim().isEmpty()).collect(Collectors.toList()); |
| | | } |
| | | if (wardConfigValue != null && !wardConfigValue.isEmpty()) { |
| | | leaveWard = Arrays.stream(wardConfigValue.split(",")).filter(s -> !s.trim().isEmpty()).collect(Collectors.toList()); |
| | | } |
| | | log.info("离院病区leaveWard: {}, 离院科室leaveDept: {}", leaveWard, leaveDept); |
| | | if (leaveWard == null && leaveDept == null) return; |
| | | |
| | | //2.获取leaveWard,leaveDept中的servic_subtask表中sendstate=5的任务 |
| | | ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity(); |
| | | serviceSubtaskEntity.setSendstate(5L); |
| | | serviceSubtaskEntity.setLeavehospitaldistrictcodes(leaveWard); |
| | | serviceSubtaskEntity.setLeaveldeptcodes(leaveDept); |
| | | if (!Objects.isNull(leaveWard) && !Objects.isNull(leaveDept)) serviceSubtaskEntity.setDeptOrDistrict("2"); |
| | | List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity); |
| | | |
| | | if (CollectionUtils.isEmpty(serviceSubtasks)) return; |
| | | |
| | | //3.如果查出来的集合不为空,则进行循环 |
| | | for (ServiceSubtask serviceSubtask : serviceSubtasks) { |
| | | Integer preachformSize = 0; |
| | | Boolean flag = false; |
| | | ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform(); |
| | | serviceSubtaskPreachform.setSubid(serviceSubtask.getId()); |
| | | List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) |
| | | preachformSize = serviceSubtaskPreachforms.size(); |
| | | if (serviceSubtask.getUpdateTime() != null && DateUtils.differentDaysByMillisecond(new Date(), serviceSubtask.getUpdateTime()) >= failDay) { |
| | | //3.1 判断当前serviceSubtask的updateTime是不是为空,如果不为空,则判断当前时间是不是与updateTime差距大于等于failDay |
| | | flag = saveServiceSubtaskDetail(serviceSubtask); |
| | | } else if (serviceSubtask.getVisitTime() != null && DateUtils.differentDaysByMillisecond(new Date(), serviceSubtask.getVisitTime()) >= failDay + preachformSize) { |
| | | //3.2 如果当前serviceSubtask的updateTime为空,根据当前serviceSubtask的subid去查service_subtask_preachform得到size(如果size为空,则默认0),则根据当前时间是不是与当前serviceSubtask的visitTime差距大于等于failDay + size |
| | | flag = saveServiceSubtaskDetail(serviceSubtask); |
| | | } else { |
| | | //3.3 如果2.1且2.2都为false,则continue |
| | | continue; |
| | | } |
| | | |
| | | //4.如果flag为true,则更新service_subtask表中的sendstate为6,preachform为1 |
| | | if (flag) { |
| | | serviceSubtask.setSendstate(6L); |
| | | serviceSubtask.setPreachform("1"); |
| | | serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); |
| | | } else { |
| | | //删除误新增detail里的数据 |
| | | ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail(); |
| | | serviceSubtaskDetail.setSubId(serviceSubtask.getId()); |
| | | List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail); |
| | | if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) { |
| | | for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetails) { |
| | | serviceSubtaskDetail1.setDelFlag("1"); |
| | | serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail1); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) { |
| | | Boolean result = true; |
| | | //3.4 如果3.1或3.2为true的话,根据type判断什么类型 |
| | | if (serviceSubtask.getType().equals("1")) { |
| | | //3.3.1 如果type是 1 ,则用当前serviceSubtask的templateid去ivr_task_temaplate_script中获取问题和选项,将问题和选项的默认值放到service_detail中 |
| | | IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript(); |
| | | ivrTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid()); |
| | | List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript); |
| | | for (IvrTaskTemplateScript its : ivrTaskTemplateScripts) { |
| | | IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(its, IvrTaskTemplateScriptVO.class); |
| | | IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption(); |
| | | ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScriptVO.getId()); |
| | | List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = iIvrTaskTemplateTargetoptionService.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption); |
| | | ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions); |
| | | Integer integer = setSFDetailInfo(ivrTaskTemplateScriptVO, serviceSubtask); |
| | | if (Objects.isNull(integer) || integer == 0) result = false; |
| | | } |
| | | |
| | | } else if (serviceSubtask.getType().equals("2")) { |
| | | //3.3.2 如果type是 2,则用当前serviceSubtask的templateid去svy_task_temaplate_script中获取问题和选项,将问题和选项的默认值放到service_detail中 |
| | | SvyTaskTemplateScript svyTaskTemplateScript = new SvyTaskTemplateScript(); |
| | | svyTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid()); |
| | | List<SvyTaskTemplateScript> svyTaskTemplateScripts = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptList(svyTaskTemplateScript); |
| | | for (SvyTaskTemplateScript taskTemplateScript : svyTaskTemplateScripts) { |
| | | SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(taskTemplateScript, SvyTaskTemplateScriptVO.class); |
| | | SvyTaskTemplateScriptVO svyTaskTemplateScriptVO1 = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO); |
| | | Integer integer = setWJDetailInfo(svyTaskTemplateScriptVO1, serviceSubtask); |
| | | if (Objects.isNull(integer) || integer == 0) result = false; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private Integer setWJDetailInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, ServiceSubtask serviceSubtask) { |
| | | log.info("-----setWJDetailInfo的入参为:{}", svyTaskTemplateScriptVO); |
| | | |
| | | ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO(); |
| | | if (svyTaskTemplateScriptVO.getScriptType().equals("1") || svyTaskTemplateScriptVO.getScriptType().equals("2")) { |
| | | //1、2为单选或多选 |
| | | for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) { |
| | | //将问题选项记录下来 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) { |
| | | serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getOptioncontent()); |
| | | } else { |
| | | serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "&" + svyTaskTemplateTargetoption.getOptioncontent()); |
| | | } |
| | | if (svyTaskTemplateTargetoption.getDefaultValue() != null && svyTaskTemplateTargetoption.getDefaultValue() == 2) { |
| | | serviceSubtaskDetailVO.setAsrtext(StringUtils.isNotBlank(serviceSubtaskDetailVO.getAsrtext()) ? serviceSubtaskDetailVO.getAsrtext() + "&" + svyTaskTemplateTargetoption.getOptioncontent() : svyTaskTemplateTargetoption.getOptioncontent()); |
| | | serviceSubtaskDetailVO.setMatchedtext(StringUtils.isNotBlank(serviceSubtaskDetailVO.getMatchedtext()) ? serviceSubtaskDetailVO.getMatchedtext() + "&" + svyTaskTemplateTargetoption.getOptioncontent() : svyTaskTemplateTargetoption.getOptioncontent()); |
| | | } |
| | | |
| | | } |
| | | //如果asrtext和matchedtext都为空,则没有默认值,则不进行处理 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext()) && StringUtils.isEmpty(serviceSubtaskDetailVO.getMatchedtext())) { |
| | | return 0; |
| | | } |
| | | } |
| | | ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); |
| | | serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent()); |
| | | serviceSubtaskDetailVO.setCategoryid(svyTaskTemplateScriptVO.getCategoryid()); |
| | | serviceSubtaskDetailVO.setTaskid(serviceSubtask.getTaskid()); |
| | | serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null); |
| | | serviceSubtaskDetailVO.setPatid(serviceSubtask.getPatid()); |
| | | serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetailVO.setTemplatequestionnum(StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptno()) ? Long.valueOf(svyTaskTemplateScriptVO.getScriptno()) : null); |
| | | serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType()); |
| | | serviceSubtaskDetailVO.setComment(null); |
| | | serviceSubtaskDetailVO.setCreateTime(new Date()); |
| | | serviceSubtaskDetailVO.setUpdateTime(new Date()); |
| | | serviceSubtaskDetailVO.setTemplateType(2); |
| | | serviceSubtaskDetailVO.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null); |
| | | if (ObjectUtils.isNotEmpty(serviceTask)) { |
| | | serviceSubtaskDetailVO.setGuid(serviceTask.getGuid()); |
| | | serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid()); |
| | | } |
| | | serviceSubtaskDetailVO.setSubId(serviceSubtask.getId()); |
| | | serviceSubtaskDetailVO.setTemplatequestionnum(svyTaskTemplateScriptVO.getId()); |
| | | ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class); |
| | | |
| | | //先用subid和scriptid查询一下是否存在,如果存在则更新,不存在则插入 |
| | | ServiceSubtaskDetailDTO existServiceSubtaskDetail = serviceSubtaskDetailMapper.isExistServiceSubtaskDetail(serviceSubtaskDetailVO.getSubId(), serviceSubtaskDetailVO.getScriptid()); |
| | | if (ObjectUtils.isNotEmpty(existServiceSubtaskDetail)) { |
| | | serviceSubtaskDetail.setId(existServiceSubtaskDetail.getId()); |
| | | serviceSubtaskDetail.setUpdateTime(new Date()); |
| | | return serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail); |
| | | } else { |
| | | return serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); |
| | | } |
| | | } |
| | | |
| | | private Integer setSFDetailInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask) { |
| | | |
| | | ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO(); |
| | | if (ivrTaskTemplateScriptVO.getScriptType() != null && (ivrTaskTemplateScriptVO.getScriptType().equals("1") || ivrTaskTemplateScriptVO.getScriptType().equals("2"))) { |
| | | //1、2为单选或多选 |
| | | for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) { |
| | | //将问题选项记录下来 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) { |
| | | serviceSubtaskDetailVO.setTargetvalue(ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | } else { |
| | | serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | } |
| | | if (ivrTaskTemplateTargetoption.getDefaultValue() != null && ivrTaskTemplateTargetoption.getDefaultValue() == 2) { |
| | | //医生手动填报时,值是在ivrtext中 |
| | | serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetailVO.getAsrtext() + "&" + ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(serviceSubtaskDetailVO.getMatchedtext()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetailVO.getMatchedtext() + "&" + ivrTaskTemplateTargetoption.getTargetvalue()); |
| | | } |
| | | } |
| | | //如果asrtext和matchedtext都为空,则没有默认值,不进行处理 |
| | | if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext()) && StringUtils.isEmpty(serviceSubtaskDetailVO.getMatchedtext())) { |
| | | return 0; |
| | | } |
| | | } |
| | | |
| | | serviceSubtaskDetailVO.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null); |
| | | serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent()); |
| | | serviceSubtaskDetailVO.setTaskid(serviceSubtask.getTaskid()); |
| | | serviceSubtaskDetailVO.setPatid(serviceSubtask.getPatid()); |
| | | serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID() == null ? ivrTaskTemplateScriptVO.getId() : ivrTaskTemplateScriptVO.getScriptID()); |
| | | serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType()); |
| | | serviceSubtaskDetailVO.setComment(null); |
| | | serviceSubtaskDetailVO.setCreateTime(new Date()); |
| | | serviceSubtaskDetailVO.setGuid(ivrTaskTemplateScriptVO.getGuid()); |
| | | serviceSubtaskDetailVO.setOrgid(ivrTaskTemplateScriptVO.getOrgid()); |
| | | serviceSubtaskDetailVO.setUpdateTime(new Date()); |
| | | serviceSubtaskDetailVO.setSubId(serviceSubtask.getId()); |
| | | serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId()); |
| | | serviceSubtaskDetailVO.setTemplateType(1); |
| | | serviceSubtaskDetailVO.setTemplateid(ivrTaskTemplateScriptVO.getTemplateID() == null ? null : ivrTaskTemplateScriptVO.getTemplateID().toString()); |
| | | serviceSubtaskDetailVO.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null); |
| | | ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class); |
| | | //先用subid和scriptid查询一下是否存在,如果存在则更新,不存在则插入 |
| | | ServiceSubtaskDetailDTO existServiceSubtaskDetail = serviceSubtaskDetailMapper.isExistServiceSubtaskDetail(serviceSubtaskDetailVO.getSubId(), serviceSubtaskDetailVO.getScriptid()); |
| | | if (ObjectUtils.isNotEmpty(existServiceSubtaskDetail)) { |
| | | serviceSubtaskDetail.setId(existServiceSubtaskDetail.getId()); |
| | | serviceSubtaskDetail.setUpdateTime(new Date()); |
| | | return serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail); |
| | | } else { |
| | | return serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); |
| | | } |
| | | } |
| | | |
| | | } |