liusheng
2025-04-25 c987cc764e62a9080cc784604938a4ca58b2d235
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -256,9 +256,7 @@
    @Override
    public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
        //根据出院 时间倒序
        List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList());
        return sortedServiceSubtaskList;
        return selectServiceSubtaskList;
    }
    @Override
@@ -289,7 +287,7 @@
            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;
        }
@@ -324,6 +322,8 @@
    @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);
    }
@@ -374,46 +374,72 @@
            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);
                serviceTaskService.insertServiceTask(serviceTask);
                if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
            if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
            serviceTask.setCreateTime(new Date());
            serviceTask.setUpdateTime(new Date());
            serviceTaskService.insertServiceTask(serviceTask);
            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(1L);
                    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());
                    serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
                } else if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
                    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(1L);
                    serviceTaskoper.setLongtask(0L);
                    serviceTaskoper.setGuid(serviceTask.getGuid());
                    serviceTaskoper.setOrgid(serviceTask.getOrgid());
                    serviceTaskoper.setCreateTime(new Date());
                    serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                    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(1L);
                    serviceTaskdept.setGuid(serviceTask.getGuid());
                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
                    serviceTaskdept.setLongtask(0L);
                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
                    if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                        String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
@@ -433,15 +459,12 @@
                            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;
                }
            } else {
                serviceTaskService.insertServiceTask(serviceTask);
            }
            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
                Map<String, Integer> map = new HashMap<>();
                map.put("taskId", serviceTask.getTaskid().intValue());
                return map;
            }
            //将任务信息放到服务表中
@@ -477,6 +500,8 @@
                    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);
@@ -490,53 +515,156 @@
                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();
@@ -582,9 +710,12 @@
                    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)
@@ -999,6 +1130,8 @@
                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"));
@@ -1524,7 +1657,7 @@
            }
        }
        if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
        log.error("-----------实际拉取的电话数据量:{}", pullTaskVOList.size());
        log.error("-----------实际拉取的电话数据量:{}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
        return pullTaskVOList;
    }
@@ -1547,6 +1680,14 @@
                    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;
@@ -1563,7 +1704,10 @@
                    }
                }
                //如果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;
@@ -1903,6 +2047,8 @@
            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());
@@ -1917,9 +2063,9 @@
            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");
@@ -2021,12 +2167,12 @@
                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());
        }
@@ -2052,6 +2198,7 @@
            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());
@@ -2066,12 +2213,13 @@
        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()) {
@@ -2094,10 +2242,12 @@
        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());