liusheng
6 天以前 5c1f5dcc9dbea7478b1a9bd7c047a99a042e9d24
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -1,5 +1,8 @@
package com.smartor.service.impl;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
@@ -18,6 +21,7 @@
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
/**
 * 任务问卷问题选项Service业务层处理
@@ -198,7 +202,7 @@
                        }
                    } else {
                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO =cacheList.get(i);
                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = cacheList.get(i);
//                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), SvyTaskTemplateScriptVO.class);
                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = cacheList.get(i).getSvyTaskTemplateTargetoptions();
//                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getSvyTaskTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
@@ -271,13 +275,14 @@
            ServiceSubtaskVO ssVO = new ServiceSubtaskVO();
            ssVO.setTaskid(tid);
            ssVO.setPatid(pid);
            ssVO.setSendstate(3L);
//            ssVO.setSendstate(3L);
            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
            ServiceSubtask serviceSubtask = new ServiceSubtask();
            serviceSubtask.setTaskid(tid);
            serviceSubtask.setPatid(pid);
            serviceSubtask.setSubmit(1L);
            serviceSubtask.setIsabnormal(serviceSubTaskAnswerReq.getIsabnormal());
            serviceSubtask.setSendstate(6L);
            serviceSubtask.setExcep(serviceSubTaskAnswerReq.getExcep());
            serviceSubtask.setFinishtime(new Date());
@@ -367,7 +372,7 @@
                } else {
                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = svyTaskTemplateScriptVOS.get(i);
//                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i), SvyTaskTemplateScriptVO.class);
                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions =svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptVOS.get(i).getSvyTaskTemplateTargetoptions();
//                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
                    svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
@@ -665,10 +670,6 @@
            }
            serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
            serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
            //            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
//                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
//            }
//            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());
        } else {
            //非单多选
            if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {
@@ -699,11 +700,86 @@
        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);
        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
        //如何这需要服务补偿的服务ID不为空的话,则进行立即发送
        if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptVO.getSendTaskids()) && CollectionUtils.isNotEmpty(selectServiceSubtaskList)) {
            sendTaskIds(svyTaskTemplateScriptVO.getSendTaskids(), selectServiceSubtaskList.get(0));
        }
        Map<String, String> map = new HashMap<>();
        map.put("nextScriptNo", nextScriptNo);
        map.put("score", score);
        map.put("id", "" + serviceSubtaskDetail.getId());
        return map;
    }
    private Boolean sendTaskIds(List<Integer> sendTaskids, ServiceSubtask serviceSubtask) {
        for (Integer taskId : sendTaskids) {
            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(Long.valueOf(taskId));
            String content = sendMQContent(serviceTask, null);
            //先修改状态
            insertServiceSubtask(serviceTask, new Date(), serviceSubtask);
            //立即发送
            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
            serviceTask.setStopState(null);
            log.info("消息发送成功");
        }
        return null;
    }
    private void insertServiceSubtask(ServiceTask serviceTask, Date date, ServiceSubtask serviceSubtask) {
        //只要进入队列就算待发送
        serviceSubtask.setTaskid(serviceTask.getTaskid());
        serviceSubtask.setTaskName(serviceTask.getTaskName());
        serviceSubtask.setLibtemplateid(StringUtils.isNotEmpty(serviceTask.getLibtemplateid()) ? Long.valueOf(serviceTask.getLibtemplateid()) : null);
        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
        serviceSubtask.setSendstate(2L);
        serviceSubtask.setVisitTime(date);
        serviceSubtask.setId(null);
        serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
        //设置发送补偿方式(这个完全按照服务的发送方式来走)
        if (StringUtils.isNotEmpty(serviceTask.getPreachformDesc())) {
            ObjectMapper objectMapper = new ObjectMapper();
            try {
                List<Map<String, Object>> pfList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                for (Map<String, Object> map : pfList) {
                    ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
                    serviceSubtaskPreachform.setSort(ObjectUtils.isEmpty(map.get("sort")) ? 0 : Long.valueOf(map.get("sort").toString()));
                    serviceSubtaskPreachform.setPreachform(ObjectUtils.isEmpty(map.get("preachform")) ? "" : map.get("preachform").toString());
                    serviceSubtaskPreachform.setCompensateTime(ObjectUtils.isEmpty(map.get("compensateTime")) ? "" : map.get("compensateTime").toString());
                    serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
                    serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
                    //这个sendstate需要在数据库设置一个默认值为“1”
                    serviceSubtaskPreachform.setSendstate("1");
                    serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
                    serviceSubtaskPreachform.setCreateTime(new Date());
                    serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
                }
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        }
    }
    private String sendMQContent(ServiceTask serviceTask, TaskSendTimeVO sendTimeslot) {
        CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
        commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
        commonTaskcallMQ.setSendType("2");
        commonTaskcallMQ.setTemplateid(ObjectUtils.isNotEmpty(serviceTask.getTemplateid()) ? serviceTask.getTemplateid().toString() : null);
        commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
        commonTaskcallMQ.setStopState(serviceTask.getStopState());
        commonTaskcallMQ.setTaskType(StringUtils.isNotEmpty(serviceTask.getType()) ? Integer.valueOf(serviceTask.getType()) : null);
        commonTaskcallMQ.setSendTimeslot(sendTimeslot);
        commonTaskcallMQ.setUpdateSendstate(2);
        String commonTaskcallMQJson = JSON.toJSONString(commonTaskcallMQ);
        commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1);
        return commonTaskcallMQJson;
    }
    private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) {
@@ -764,6 +840,12 @@
        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);
        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
        //如何这需要服务补偿的服务ID不为空的话,则进行立即发送
        if (CollectionUtils.isNotEmpty(ivrTaskTemplateScriptVO.getSendTaskids()) && CollectionUtils.isNotEmpty(selectServiceSubtaskList)) {
            sendTaskIds(ivrTaskTemplateScriptVO.getSendTaskids(), selectServiceSubtaskList.get(0));
        }
        Map<String, String> map = new HashMap<>();
        map.put("nextScriptNo", nextScriptNo);
        map.put("score", score);