liusheng
2024-07-02 0b02577ab12ac83a0530b7e0495b513dd0cdabca
代码提交
已删除6个文件
已添加19个文件
已修改29个文件
已重命名10个文件
4119 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/CommonTaskController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskRecordController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskAnswerController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTasksingledetailController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/test/DingTalkService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubTaskDetailReq.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskRecord.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTask.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyTaskTemplate.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/domain/SvyTaskTemplateVO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/IvrTaskSingleMapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceTaskMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/SvyTaskAnswerMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IIvrTaskService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceTaskService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyTaskAnswerService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyTaskService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyTaskAnswerServiceImpl.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyTaskServiceImpl.java 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyTaskAnswerMapper.xml 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -10,11 +10,12 @@
import com.smartor.common.SendService;
import com.smartor.config.RobotPhoneUtils;
import com.smartor.domain.*;
import com.smartor.mapper.IvrTaskMapper;
import com.smartor.mapper.IvrTaskSingleMapper;
import com.smartor.mapper.ServiceSubtaskMapper;
import com.smartor.mapper.ServiceTaskMapper;
import com.smartor.mapper.SvyTaskMapper;
import com.smartor.mapper.SvyTaskSingleMapper;
import com.smartor.service.IIvrTaskTemplateService;
import com.smartor.service.IServiceSubtaskRecordService;
import com.smartor.service.ISvyTaskTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -24,9 +25,7 @@
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -46,9 +45,9 @@
    private static IIvrTaskTemplateService ivrTaskTemplateService;
    private static IvrTaskSingleMapper ivrTaskcallMapper;
    private static ServiceSubtaskMapper ivrTaskcallMapper;
    private static IvrTaskMapper ivrTaskMapper;
    private static ServiceTaskMapper ivrTaskMapper;
    private static SendService sendService;
@@ -64,6 +63,9 @@
    @Autowired
    private ISvyTaskTemplateService iSvyTaskTemplateService;
    @Autowired
    private IServiceSubtaskRecordService serviceSubtaskRecordService;
    // åˆ›å»ºå›ºå®šå¤§å°çš„线程池
    private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
@@ -89,12 +91,12 @@
    }
    @Autowired
    public void setIvrTaskcallMapper(IvrTaskSingleMapper ivrTaskcallMapper) {
    public void setIvrTaskcallMapper(ServiceSubtaskMapper ivrTaskcallMapper) {
        RedisMqReceiver.ivrTaskcallMapper = ivrTaskcallMapper;
    }
    @Autowired
    public void setIvrTaskMapper(IvrTaskMapper ivrTaskMapper) {
    public void setIvrTaskMapper(ServiceTaskMapper ivrTaskMapper) {
        RedisMqReceiver.ivrTaskMapper = ivrTaskMapper;
    }
@@ -155,7 +157,7 @@
     */
    private void sfHandle(CommonTaskcallMQ commonTaskcallMQ) {
        //判断一下commonTaskcallMQ中的stopstate是否与ivr_task中的一致,不一致,则说明是暂停了
        IvrTask ivrTask1 = ivrTaskMapper.selectIvrTaskByTaskid(commonTaskcallMQ.getTaskid());
        ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
            //将消息从队列中剔除
            return;
@@ -175,16 +177,26 @@
                IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
                //通过任务ID拿到患者信息
                IvrTaskSingle ivrTaskcall = new IvrTaskSingle();
                ServiceSubtask ivrTaskcall = new ServiceSubtask();
                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
                List<IvrTaskSingle> ivrTaskcalls = ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall);
                List<ServiceSubtask> ivrTaskcalls = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
                if (descByCode.equals("电话")) {
                    for (IvrTaskSingle ivrTaskcall1 : ivrTaskcalls) {
                        IvrTask ivrTask = ivrTaskMapper.selectIvrTaskByTaskid(ivrTaskcall1.getTaskid());
                    for (ServiceSubtask ivrTaskcall1 : ivrTaskcalls) {
                        ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(ivrTaskcall1.getTaskid());
                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
                            //如何任务被“暂停”或“终止”
                            break;
                        }
                        //任务发送记录(这个代码应该写在phoneTask中,先写在这,后面再改)
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(ivrTaskcall1.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(ivrTaskcall1.getType());
                        serviceSubtaskRecord.setPreachform("3");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                        //通过多线程的方式去打电话
                        executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils));
                    }
@@ -200,18 +212,28 @@
                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
                    for (IvrTaskSingle ivrTaskSingle : ivrTaskcalls) {
                    for (ServiceSubtask ivrTaskSingle : ivrTaskcalls) {
                        String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("4");
                        sendMagParam.setUrl(req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid);
                        sendService.sendMsg(sendMagParam);
                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(ivrTaskSingle.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(ivrTaskSingle.getType());
                        serviceSubtaskRecord.setPreachform("4");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setResult(aBoolean == true ? "成功" : "失败");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                } else if (descByCode.equals("公众号")) {
                    //公众号
                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
                    for (IvrTaskSingle ivrTaskSingle : ivrTaskcalls) {
                    for (ServiceSubtask ivrTaskSingle : ivrTaskcalls) {
                        String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("5");
@@ -222,7 +244,17 @@
                        Map map = new HashMap();
                        map.put("first", ivrTask1.getTaskName());
                        sendMagParam.setContent(JSON.toJSONString(map));
                        sendService.sendMsg(sendMagParam);
                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(ivrTaskSingle.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(ivrTaskSingle.getType());
                        serviceSubtaskRecord.setPreachform("4");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setResult(aBoolean == true ? "成功" : "失败");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                }
                //通知 MQ æ¶ˆæ¯å·²è¢«æŽ¥æ”¶,可以ACK(从队列中删除)了   ï¼ˆè¿™ä¸ªéœ€è¦æ ¹æ®ä¸šåŠ¡å†åŽ»å¤„ç†ACK)
@@ -267,6 +299,15 @@
                            //如何任务被“暂停”或“终止”
                            break;
                        }
                        //任务发送记录(这个代码应该写在phoneTask中,先写在这,后面再改)
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(svyTaskSingle1.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(svyTaskSingle1.getType());
                        serviceSubtaskRecord.setPreachform("3");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                        //通过多线程的方式去打电话
//                        executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils));
                    }
@@ -291,7 +332,17 @@
                        Map map = new HashMap();
                        map.put("first", svyTask.getTaskName());
                        sendMagParam.setContent(JSON.toJSONString(map));
                        sendService.sendMsg(sendMagParam);
                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
                        //任务发送记录
                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                        serviceSubtaskRecord.setTaskid(svyTaskSingle1.getTaskid().toString());
                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                        serviceSubtaskRecord.setTasktype(svyTaskSingle1.getType());
                        serviceSubtaskRecord.setPreachform("4");
                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                        serviceSubtaskRecord.setResult(aBoolean == true ? "成功" : "失败");
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                }
                //通知 MQ æ¶ˆæ¯å·²è¢«æŽ¥æ”¶,可以ACK(从队列中删除)了   ï¼ˆè¿™ä¸ªéœ€è¦æ ¹æ®ä¸šåŠ¡å†åŽ»å¤„ç†ACK)
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java
@@ -1,35 +1,19 @@
package com.ruoyi.web.controller.smartor.AIRobot;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.config.RobotPhoneUtils;
import com.smartor.domain.IvrTaskSingle;
import com.smartor.domain.IvrTaskSingleVO;
import com.smartor.domain.PhoneCallBackVO;
import com.smartor.domain.SendTaskVO;
import com.smartor.domain.robot.RobotScritpTemplateVO;
import com.smartor.domain.robot.back.RobotAIDialogBack;
import com.smartor.domain.robot.back.RobotCallBack;
import com.smartor.domain.robot.back.RobotcdrInfoBack;
import com.smartor.service.AIRobotPhoneCallBackService;
import com.smartor.service.IIvrTaskSingleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * å•一任务(随访)Controller
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/CommonTaskController.java
@@ -23,9 +23,9 @@
 * @author ruoyi
 * @date 2023-06-26
 */
@Api(description = "CommonTaskController")
@Api(description = "通用任务Controller")
@RestController
@RequestMapping("/commonTask")
@RequestMapping("/smartor/commonTask")
public class CommonTaskController extends BaseController {
    @Autowired
    private IServiceThirdDataService iServiceThirdDataService;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java
ÎļþÒÑɾ³ý
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java
@@ -1,29 +1,19 @@
package com.smartor.controller;
package com.ruoyi.web.controller.smartor;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.smartor.domain.IvrTaskcalldetailReq;
import com.smartor.domain.PhoneCallBackVO;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.IvrTaskcalldetail;
import com.smartor.service.IIvrTaskcalldetailService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * è¯­éŸ³ä»»åŠ¡å‘¼å«æ˜Žç»†Controller
@@ -97,16 +87,6 @@
    @GetMapping("/remove/{calldetailids}")
    public AjaxResult remove(@PathVariable String[] calldetailids) {
        return toAjax(ivrTaskcalldetailService.deleteIvrTaskcalldetailByCalldetailids(calldetailids));
    }
    /**
     * æ‚£è€…问题结果记录
     */
    @ApiOperation("患者问题结果记录")
    @PostMapping("/saveQuestionAnswer")
    public AjaxResult saveQuestionAnswer(@RequestBody IvrTaskcalldetailReq ivrTaskcalldetailReq) {
        return toAjax(ivrTaskcalldetailService.saveQuestionAnswer(ivrTaskcalldetailReq));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
ÎļþÃû´Ó ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java ÐÞ¸Ä
@@ -11,9 +11,7 @@
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.*;
import com.smartor.domain.robot.back.RobotAIDialogBack;
import com.smartor.domain.robot.back.RobotCallBack;
import com.smartor.service.IIvrTaskSingleService;
import com.smartor.service.IServiceSubtaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -33,10 +31,10 @@
@Slf4j
@Api(description = "单一任务(随访宣教)")
@RestController
@RequestMapping("/smartor/tasksingle")
public class IvrTaskSingleController extends BaseController {
@RequestMapping("/smartor/serviceSubtask")
public class ServiceSubtaskController extends BaseController {
    @Autowired
    private IIvrTaskSingleService ivrTaskcallService;
    private IServiceSubtaskService serviceSubtaskService;
    /**
     * æŸ¥è¯¢æ‚£è€…随访信息
@@ -44,9 +42,9 @@
    @ApiOperation("查询患者随访信息")
    @PreAuthorize("@ss.hasPermi('system:taskcall:list')")
    @PostMapping("/patItem")
    public TableDataInfo patItem(@RequestBody IvrTaskSingle ivrTaskcall) {
    public TableDataInfo patItem(@RequestBody ServiceSubtask ivrTaskcall) {
        PageUtils.startPageByPost(ivrTaskcall.getPageNum(), ivrTaskcall.getPageSize());
        return getDataTable(ivrTaskcallService.patItem(ivrTaskcall));
        return getDataTable(serviceSubtaskService.patItem(ivrTaskcall));
    }
    /**
@@ -55,9 +53,9 @@
    @PreAuthorize("@ss.hasPermi('system:taskcall:export')")
    @Log(title = "单一任务(随访宣教)", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, IvrTaskSingle ivrTaskcall) {
        List<IvrTaskSingle> list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall);
        ExcelUtil<IvrTaskSingle> util = new ExcelUtil<IvrTaskSingle>(IvrTaskSingle.class);
    public void export(HttpServletResponse response, ServiceSubtask ivrTaskcall) {
        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
        util.exportExcel(response, list, "单一任务(随访)数据");
    }
@@ -67,7 +65,7 @@
    @PreAuthorize("@ss.hasPermi('system:taskcall:query')")
    @GetMapping(value = "/getInfo/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(ivrTaskcallService.selectIvrTaskcallById(id));
        return success(serviceSubtaskService.selectServiceSubtaskById(id));
    }
    /**
@@ -77,12 +75,12 @@
    @PreAuthorize("@ss.hasPermi('system:task:add')")
    @Log(title = "单一任务(随访)", businessType = BusinessType.INSERT)
    @PostMapping("/insertOrUpdateTask")
    public AjaxResult insertOrUpdateHeTask(@RequestBody IvrTaskVO ivrTaskVO) {
    public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) {
        LoginUser loginUser = getLoginUser();
        SysUser user = loginUser.getUser();
        ivrTaskVO.setCreateBy(user.getNickName());
        return toAjax(ivrTaskcallService.insertOrUpdateTask(ivrTaskVO));
        return toAjax(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));
    }
    /**
@@ -90,10 +88,10 @@
     */
    @ApiOperation("根据条件查询任务信息")
    @PostMapping("/queryTaskByCondition")
    public AjaxResult queryTaskByCondition(@RequestBody IvrTaskSingleVO ivrTaskcallVO) {
    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
        //根据入参查询信息
        IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class);
        IvrTaskVO ivrTaskVO = ivrTaskcallService.queryTaskByCondition(ivrTaskcall);
        ServiceSubtask ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);
        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(ivrTaskcall);
        return success(ivrTaskVO);
    }
@@ -104,8 +102,16 @@
    @PostMapping("/phoneCallBack")
    public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) {
//        log.error("电话回调任务成功了不?{}", phoneCallBackVO);
        ivrTaskcallService.phoneCallBack(phoneCallBackVO);
        serviceSubtaskService.phoneCallBack(phoneCallBackVO);
        return success();
    }
    /**
     * æ‚£è€…问题结果记录
     */
    @ApiOperation("患者问题结果记录")
    @PostMapping("/saveQuestionAnswer")
    public AjaxResult saveQuestionAnswer(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
        return toAjax(serviceSubtaskService.saveQuestionAnswer(serviceSubTaskDetailReq));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.web.controller.smartor;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.ServiceSubtaskRecord;
import com.smartor.service.IServiceSubtaskRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Controller
 *
 * @author ruoyi
 * @date 2024-07-01
 */
@RestController
@RequestMapping("/smartor/subTaskRecord")
public class ServiceSubtaskRecordController extends BaseController {
    @Autowired
    private IServiceSubtaskRecordService serviceSubtaskRecordService;
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘åˆ—è¡¨
     */
    @PreAuthorize("@ss.hasPermi('system:record:list')")
    @GetMapping("/list")
    public TableDataInfo list(ServiceSubtaskRecord serviceSubtaskRecord) {
        startPage();
        List<ServiceSubtaskRecord> list = serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘åˆ—è¡¨
     */
    @PreAuthorize("@ss.hasPermi('system:record:export')")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ServiceSubtaskRecord serviceSubtaskRecord) {
        List<ServiceSubtaskRecord> list = serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord);
        ExcelUtil<ServiceSubtaskRecord> util = new ExcelUtil<ServiceSubtaskRecord>(ServiceSubtaskRecord.class);
        util.exportExcel(response, list, "【请填写功能名称】数据");
    }
    /**
     * èŽ·å–ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('system:record:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(serviceSubtaskRecordService.selectServiceSubtaskRecordById(id));
    }
    /**
     * æ–°å¢žã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    @PreAuthorize("@ss.hasPermi('system:record:add')")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ServiceSubtaskRecord serviceSubtaskRecord) {
        return toAjax(serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord));
    }
    /**
     * ä¿®æ”¹ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    @PreAuthorize("@ss.hasPermi('system:record:edit')")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody ServiceSubtaskRecord serviceSubtaskRecord) {
        return toAjax(serviceSubtaskRecordService.updateServiceSubtaskRecord(serviceSubtaskRecord));
    }
    /**
     * åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    @PreAuthorize("@ss.hasPermi('system:record:remove')")
    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(serviceSubtaskRecordService.deleteServiceSubtaskRecordByIds(ids));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,176 @@
package com.ruoyi.web.controller.smartor;
import com.github.pagehelper.ISelect;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.*;
import com.smartor.service.IServiceSubtaskService;
import com.smartor.service.IServiceTaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.stream.Collectors;
/**
 * éšè®¿ä»»åŠ¡Controller
 *
 * @author smartor
 * @date 2023-03-24
 */
@Slf4j
@Api(description = "随访任务")
@RestController
@RequestMapping("/smartor/servicetask")
public class ServiceTaskController extends BaseController {
    @Autowired
    private IServiceTaskService serviceTaskService;
    @Autowired
    private IServiceSubtaskService iServiceTaskCallService;
    @Value("${pub_key}")
    private String pub_key;
    @Value("${pri_key}")
    private String pri_key;
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡åˆ—è¡¨
     */
    @ApiOperation("查询任务列表")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:list')")
    @PostMapping("/list")
    public TableDataInfo list(@RequestBody ServiceTask serviceTask) {
        PageUtils.startPageByPost(serviceTask.getPageNum(), serviceTask.getPageSize());
        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(serviceTask);
        List<ServiceTaskVO> ServiceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class);
        if (CollectionUtils.isNotEmpty(ServiceTaskVOS)) {
            for (ServiceTaskVO ServiceTaskVO : ServiceTaskVOS) {
                ServiceSubtask ServiceTaskcall = new ServiceSubtask();
                ServiceTaskcall.setTaskid(ServiceTaskVO.getTaskid());
                List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(ServiceTaskcall);
                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {
                    //已发送
                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 3L).collect(Collectors.toList()).stream().count();
                    //未发送
                    long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count();
                    ServiceTaskVO.setYfs(yfs);
                    ServiceTaskVO.setWfs(wfs);
                }
            }
            //获取total
            long total = PageUtils.count(new ISelect() {
                @Override
                public void doSelect() {
                    serviceTask.setPageNum(null);
                    serviceTask.setPageSize(null);
                    serviceTaskService.selectServiceTaskList(serviceTask);
                }
            });
            return getDataTable2(total, ServiceTaskVOS);
        }
        return getDataTable2(0, ServiceTaskVOS);
    }
    /**
     * å¯¼å‡ºä»»åŠ¡åˆ—è¡¨
     */
    @ApiOperation("导出任务列表")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:export')")
    @Log(title = "语音任务", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, ServiceTask ServiceTask) {
        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(ServiceTask);
        ExcelUtil<ServiceTask> util = new ExcelUtil<ServiceTask>(ServiceTask.class);
        util.exportExcel(response, list, "语音任务数据");
    }
    /**
     * èŽ·å–ä»»åŠ¡è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取任务详细信息")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:query')")
    @GetMapping(value = "/{taskid}")
    public AjaxResult getInfo(@PathVariable("taskid") Long taskid) {
        return success(serviceTaskService.selectServiceTaskByTaskid(taskid));
    }
    /**
     * æ–°å¢žä»»åŠ¡
     */
    @ApiOperation("新增任务")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:add')")
    @Log(title = "语音任务", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    public AjaxResult add(@RequestBody ServiceTask ServiceTask) {
        return toAjax(serviceTaskService.insertServiceTask(ServiceTask));
    }
    /**
     * ä¿®æ”¹è¯­éŸ³ä»»åŠ¡
     */
    @ApiOperation("修改任务")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:edit')")
    @Log(title = "任务", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    public AjaxResult edit(@RequestBody ServiceTask ServiceTask) {
        return toAjax(serviceTaskService.updateServiceTask(ServiceTask));
    }
//    /**
//     * åˆ é™¤è¯­éŸ³ä»»åŠ¡
//     */
//    @ApiOperation("删除任务")
//    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:remove')")
//    @Log(title = "语音任务", businessType = BusinessType.DELETE)
//    @GetMapping("/remove/{taskids}")
//    public AjaxResult remove(@PathVariable Long[] taskids) {
//        return toAjax(ServiceTaskService.deleteServiceTaskByTaskids(taskids));
//    }
//
    /**
     * åˆ é™¤ä»»åŠ¡(包括它对应的患者信息)
     */
    @ApiOperation("删除任务(包括它对应的患者信息)")
    @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:remove')")
    @Log(title = "语音任务", businessType = BusinessType.DELETE)
    @GetMapping("/remove/{removeTask}")
    public AjaxResult removeTask(@PathVariable Long taskId) {
        return toAjax(serviceTaskService.deleteServiceTaskByTaskid(taskId));
    }
    /**
     * é€šè¿‡ä»»åŠ¡ID和患者ID获取单个人的题目信息
     *
     * @return
     */
    @ApiOperation("通过任务ID和患者ID获取单个人的题目信息")
    @PostMapping("/getScriptInfoByCondition")
    public TableDataInfo getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));
        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key));
        log.info("tid和pid的值为:{},{}", tid, pid);
        return getDataTable(serviceTaskService.getScriptInfoByCondition(tid, pid));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskAnswerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.web.controller.smartor;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.SvyTaskAnswer;
import com.smartor.service.ISvyTaskAnswerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹Controller
 *
 * @author ruoyi
 * @date 2024-06-27
 */
@RestController
@RequestMapping("/system/answer")
public class SvyTaskAnswerController extends BaseController {
    @Autowired
    private ISvyTaskAnswerService svyTaskAnswerService;
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹åˆ—è¡¨
     */
    @PreAuthorize("@ss.hasPermi('system:answer:list')")
    @GetMapping("/list")
    public TableDataInfo list(SvyTaskAnswer svyTaskAnswer) {
        startPage();
        List<SvyTaskAnswer> list = svyTaskAnswerService.selectSvyTaskAnswerList(svyTaskAnswer);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹åˆ—è¡¨
     */
    @PreAuthorize("@ss.hasPermi('system:answer:export')")
    @Log(title = "任务问卷问题选项", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, SvyTaskAnswer svyTaskAnswer) {
        List<SvyTaskAnswer> list = svyTaskAnswerService.selectSvyTaskAnswerList(svyTaskAnswer);
        ExcelUtil<SvyTaskAnswer> util = new ExcelUtil<SvyTaskAnswer>(SvyTaskAnswer.class);
        util.exportExcel(response, list, "任务问卷问题选项数据");
    }
    /**
     * èŽ·å–ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹è¯¦ç»†ä¿¡æ¯
     */
    @PreAuthorize("@ss.hasPermi('system:answer:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        return success(svyTaskAnswerService.selectSvyTaskAnswerById(id));
    }
    /**
     * æ–°å¢žä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    @PreAuthorize("@ss.hasPermi('system:answer:add')")
    @Log(title = "任务问卷问题选项", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody SvyTaskAnswer svyTaskAnswer) {
        return toAjax(svyTaskAnswerService.insertSvyTaskAnswer(svyTaskAnswer));
    }
    /**
     * ä¿®æ”¹ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    @PreAuthorize("@ss.hasPermi('system:answer:edit')")
    @Log(title = "任务问卷问题选项", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody SvyTaskAnswer svyTaskAnswer) {
        return toAjax(svyTaskAnswerService.updateSvyTaskAnswer(svyTaskAnswer));
    }
    /**
     * åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    @PreAuthorize("@ss.hasPermi('system:answer:remove')")
    @Log(title = "任务问卷问题选项", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(svyTaskAnswerService.deleteSvyTaskAnswerByIds(ids));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java
@@ -8,14 +8,17 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.smartor.domain.*;
import com.smartor.service.ISvyTaskService;
import com.smartor.service.ISvyTaskSingleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -29,14 +32,22 @@
 * @author ruoyi
 * @date 2024-06-12
 */
@Slf4j
@Api(description = " é—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰")
@RestController
@RequestMapping("/smartor/svytask")
public class SvyTaskController extends BaseController {
    @Autowired
    private ISvyTaskService svyTaskService;
    @Autowired
    private ISvyTaskSingleService iSvyTaskSingleService;
    @Value("${pub_key}")
    private String pub_key;
    @Value("${pri_key}")
    private String pri_key;
    /**
     * æŸ¥è¯¢é—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰åˆ—è¡¨
@@ -135,4 +146,19 @@
    public AjaxResult remove(@PathVariable Long[] taskids) {
        return toAjax(svyTaskService.deleteSvyTaskByTaskids(taskids));
    }
    /**
     * é€šè¿‡ä»»åŠ¡ID和患者ID获取单个人的题目信息
     *
     * @return
     */
    @ApiOperation("通过任务ID和患者ID获取单个人的题目信息")
    @PostMapping("/getSvyScriptInfoByCondition")
    public TableDataInfo getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues ivrTaskScriptQues) {
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskScriptQues.getParam1(), pri_key));
        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskScriptQues.getParam2(), pri_key));
        log.info("tid和pid的值为:{},{}", tid, pid);
        return getDataTable(svyTaskService.getScriptInfoByCondition(tid, pid));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTasksingledetailController.java
@@ -95,4 +95,13 @@
    {
        return toAjax(svyTasksingledetailService.deleteSvyTasksingledetailByCalldetailids(calldetailids));
    }
//
//    /**
//     * æ‚£è€…问题结果记录
//     */
//    @ApiOperation("患者问题结果记录")
//    @PostMapping("/saveQuestionAnswer")
//    public AjaxResult saveQuestionAnswer(@RequestBody IvrTaskcalldetailReq ivrTaskcalldetailReq) {
//        return toAjax(ivrTaskcalldetailService.saveQuestionAnswer(ivrTaskcalldetailReq));
//    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
@@ -18,7 +18,7 @@
import java.util.concurrent.TimeUnit;
public class PhoneTask implements Runnable {
    private IvrTaskSingle ivrTaskSingle;
    private ServiceSubtask ivrTaskSingle;
    private List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVO;
    private RedisCache redisCache;
    private IvrTaskTemplateVO ivrTaskTemplateVO;
@@ -27,8 +27,8 @@
    private RobotPhoneUtils robotPhoneUtils;
    public PhoneTask(IvrTaskSingle ivrTaskSingle, IvrTaskTemplateVO ivrTaskTemplateVO, RedisCache redisCache, SendService sendService, String phonePath, RobotPhoneUtils robotPhoneUtils) {
        this.ivrTaskSingle = DtoConversionUtils.sourceToTarget(ivrTaskSingle, IvrTaskSingle.class);
    public PhoneTask(ServiceSubtask ivrTaskSingle, IvrTaskTemplateVO ivrTaskTemplateVO, RedisCache redisCache, SendService sendService, String phonePath, RobotPhoneUtils robotPhoneUtils) {
        this.ivrTaskSingle = DtoConversionUtils.sourceToTarget(ivrTaskSingle, ServiceSubtask.class);
        this.ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList(), IvrTaskTemplateScriptVO.class);
        this.ivrTaskTemplateVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplateVO.class);
        this.redisCache = redisCache;
ruoyi-admin/src/main/java/com/ruoyi/web/test/DingTalkService.java
@@ -7,16 +7,12 @@
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
import com.dingtalk.api.request.OapiUserListidRequest;
import com.dingtalk.api.response.*;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
import com.dingtalk.api.response.OapiUserListidResponse;
import com.taobao.api.ApiException;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -108,7 +108,7 @@
                // è¿‡æ»¤è¯·æ±‚
                .authorizeRequests()
                // å¯¹äºŽç™»å½•login æ³¨å†Œregister éªŒè¯ç captchaImage å…è®¸åŒ¿åè®¿é—®
                .antMatchers("/login", "/register", "/captchaImage", "/qrcode/generateStaticHtml", "/qrcode/getQRcode", "/qrcode/getFormDate", "/chat", "/system/file/admin/uploadFile", "/smartor/dingtalk/sendNotification", "/patient/read/patientInfo","/socket","/API_ESB_Service","/API_ESB_Service/Run","/magic/web/**","/smartor/tasksingle/phoneCallBack","/smartor/robot/callstatus","/smartor/robot/aidialog","/smartor/robot/cdrinfo","/getToken","/smartor/ivrtask/getScriptInfoByCondition","/smartor/ivrtaskcalldetail/saveQuestionAnswer").permitAll()
                .antMatchers("/login", "/register", "/captchaImage", "/qrcode/generateStaticHtml", "/qrcode/getQRcode", "/qrcode/getFormDate", "/chat", "/system/file/admin/uploadFile", "/smartor/dingtalk/sendNotification", "/patient/read/patientInfo", "/socket", "/API_ESB_Service", "/API_ESB_Service/Run", "/magic/web/**", "/smartor/tasksingle/phoneCallBack", "/smartor/robot/callstatus", "/smartor/robot/aidialog", "/smartor/robot/cdrinfo", "/getToken", "/smartor/serviceTask/getScriptInfoByCondition", "/smartor/ivrtaskcalldetail/saveQuestionAnswer").permitAll()
                // é™æ€èµ„源,可匿名访问
                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                // é™¤ä¸Šé¢å¤–的所有请求全部需要鉴权认证
smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java
@@ -358,13 +358,6 @@
    private Long noVoiceNum;
    /**
     * å¼€åœºç™½
     */
    @Excel(name = "开场白")
    @ApiModelProperty(value = "开场白")
    private String prologue;
    /**
     * æ¨¡æ¿åº“模版ID
     */
    @Excel(name = "模板库模版ID")
@@ -378,5 +371,10 @@
    @ApiModelProperty(value = "模板库模版名称")
    private String libtemplatename;
    /**
     * æŒ‡å¯¼è¯­
     */
    @ApiModelProperty(value = "指导语")
    private String instruction;
}
smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java
@@ -379,6 +379,11 @@
    @ApiModelProperty(value = "是否存在操作:1 æ–°å¢ž 2修改 3删除")
    private Integer isoperation;
    /**
     * æŒ‡å¯¼è¯­
     */
    @ApiModelProperty(value = "指导语")
    private String instruction;
    /**
     * å…è®¸é‡æ‹¨æ¬¡æ•°
smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
@@ -1,12 +1,10 @@
package com.smartor.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
@@ -123,7 +121,7 @@
     */
    @Excel(name = "发送状态 ï¼š1 è¢«é¢†å–  2 å¾…发送  3 å·²å‘送")
    @ApiModelProperty("发送状态 ï¼š1 è¢«é¢†å–  2 å¾…发送  3 å·²å‘送")
    private Integer sendStatus;
    private Long sendState;
    /**
@@ -155,6 +153,13 @@
    @ApiModelProperty("操作人")
    private String operatePerson;
    /**
     * å°±è¯Šç±»åž‹ï¼ˆ1门诊  2出院)
     */
    @Excel(name = "就诊类型(1门诊  2出院)")
    @ApiModelProperty("就诊类型(1门诊  2出院)")
    private String hospType;
    /**
     * æŽ¥æ”¶æ—¶é—´
smartor/src/main/java/com/smartor/domain/ServiceSubTaskDetailReq.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTaskcalldetailReq.java ÐÞ¸Ä
@@ -13,14 +13,14 @@
import java.util.List;
/**
 * é—®é¢˜å›žç­”明细 ivr_taskcalldetailReq
 * é—®é¢˜å›žç­”明细
 *
 * @author ls
 * @date 2023-06-05
 */
@ApiModel(value = "IvrTaskcalldetailReq", description = "问题回答明细")
@ApiModel(value = "ServiceSubTaskDetailReq", description = "问题回答明细")
@Data
public class IvrTaskcalldetailReq {
public class ServiceSubTaskDetailReq {
    @ApiModelProperty(value = "任务ID")
    private String param1;
@@ -28,7 +28,10 @@
    @ApiModelProperty(value = "患者ID")
    private String param2;
    @ApiModelProperty(value = "问题回答明细")
    @ApiModelProperty(value = "随访问题回答明细")
    private List<IvrTaskcalldetail> ivrTaskcalldetailList;
    @ApiModelProperty(value = "问卷问题回答明细")
    private List<SvyTasksingledetail> svyTasksingledetailList;
}
smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java ÐÞ¸Ä
@@ -15,9 +15,9 @@
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "IvrTaskSingle", description = "单一随访任务")
@ApiModel(value = "ServiceSubtask", description = "单一随访任务")
@Data
public class IvrTaskSingle extends BaseEntity {
public class ServiceSubtask extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
smartor/src/main/java/com/smartor/domain/ServiceSubtaskRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
package com.smartor.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘å¯¹è±¡ service_subtask_records
 *
 * @author ruoyi
 * @date 2024-07-01
 */
@Data
public class ServiceSubtaskRecord extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * ä»»åŠ¡æ‰§è¡Œè®°å½•ID
     */
    @ApiModelProperty(value = "主键")
    private Long id;
    /**
     * å­ä»»åŠ¡ID
     */
    @Excel(name = "子任务ID")
    @ApiModelProperty(value = "子任务ID")
    private String taskid;
    /**
     * ä»»åŠ¡UUID
     */
    @Excel(name = "任务UUID ")
    @ApiModelProperty(value = "任务UUID")
    private String uuid;
    /**
     * ä»»åŠ¡ç±»åž‹(0通知、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技……)
     */
    @Excel(name = "任务类型(0通知、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技……)")
    @ApiModelProperty(value = "任务类型(0通知、1宣教、2门诊、3出院、4复诊、5体检、6问卷、7医技……)")
    private String tasktype;
    /**
     * ä»»åŠ¡å½¢å¼ 1,多媒体 2,纸质  3,电话  4,短信  5.微信公众号 6.微信小程序 7.支付宝  8.智能小程序  9.钉钉
     */
    @Excel(name = "任务形式 1,多媒体 2,纸质  3,电话  4,短信  5.微信公众号 6.微信小程序 7.支付宝  8.智能小程序  9.钉钉")
    @ApiModelProperty(value = "任务形式 1,多媒体 2,纸质  3,电话  4,短信  5.微信公众号 6.微信小程序 7.支付宝  8.智能小程序  9.钉钉")
    private String preachform;
    /**
     * è®°å½•属性:0-最新记录,1-历史记录
     */
    @Excel(name = "记录属性:0-最新记录,1-历史记录")
    @ApiModelProperty(value = "记录属性:0-最新记录,1-历史记录")
    private String recordtype;
    /**
     * å¼€å§‹æ—¶é—´
     */
    @Excel(name = "开始时间")
    @ApiModelProperty(value = "开始时间")
    private Long startTime;
    /**
     * ç»“束时间
     */
    @Excel(name = "结束时间")
    @ApiModelProperty(value = "结束时间")
    private Long endTime;
    /**
     * æ‰§è¡Œç»“æžœ
     */
    @Excel(name = "执行结果")
    @ApiModelProperty(value = "执行结果")
    private String result;
    /**
     * åˆ é™¤æ ‡å¿—(0:未删除 1:已删除)
     */
    @ApiModelProperty(value = "删除标志(0:未删除 1:已删除)")
    private String delFlag;
    /**
     * ä¸Šä¼ æ ‡å¿—(0:未上传 1:已上传)
     */
    @Excel(name = "上传标志", readConverterExp = "0=:未上传,1=:已上传")
    @ApiModelProperty(value = "上传标志(0:未上传 1:已上传)")
    private Long isupload;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "上传时间")
    private Date uploadTime;
    /**
     * æœºæž„ID
     */
    @Excel(name = "机构ID")
    @ApiModelProperty(value = "机构ID")
    private String orgid;
    /**
     * çˆ¶ID
     */
    @Excel(name = "父ID")
    @ApiModelProperty(value = "父ID")
    private Long pid;
    /**
     * GUID
     */
    @Excel(name = "GUID")
    @ApiModelProperty(value = "GUID")
    private String guid;
}
smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java ÐÞ¸Ä
@@ -17,9 +17,9 @@
 * @author ruoyi
 * @date 2024-02-02
 */
@ApiModel(value = "IvrTaskSingleVO", description = "单一随访任务入参")
@ApiModel(value = "ServiceSubtaskVO", description = "单一随访任务入参")
@Data
public class IvrTaskSingleVO extends BaseEntity {
public class ServiceSubtaskVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
smartor/src/main/java/com/smartor/domain/ServiceTask.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTask.java ÐÞ¸Ä
@@ -15,9 +15,9 @@
 * @author smartor
 * @date 2023-03-24
 */
@ApiModel(value = "IvrTask", description = "任务对象")
@ApiModel(value = "ServiceTask", description = "任务对象")
@Data
public class IvrTask extends BaseEntity {
public class ServiceTask extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
@@ -146,10 +146,10 @@
    private Date checktime;
    /**
     * 1,出院随访;2,体检通知;3,满意度调查;4,宣教;
     * "1,随访;2,问卷;3.宣教;
     */
    @Excel(name = " 1,出院随访;2,体检通知;3,满意度调查;4,宣教; ")
    @ApiModelProperty(value = "1,出院随访;2,体检通知;3,满意度调查;4,宣教;")
    @Excel(name = "1,随访;2,问卷;3.宣教; ")
    @ApiModelProperty(value = "1,随访;2,问卷;3.宣教;")
    private String type;
    /**
smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTaskScriptQues.java ÐÞ¸Ä
@@ -1,23 +1,19 @@
package com.smartor.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * è¯­éŸ³ä»»åŠ¡å¯¹è±¡ ivr_task
 * è¯­éŸ³ä»»åŠ¡å¯¹è±¡ service_task
 *
 * @author smartor
 * @date 2023-03-24
 */
@ApiModel(value = "IvrTaskScriptQues", description = "任务对象")
@ApiModel(value = "ServiceTaskScriptQues", description = "任务对象")
@Data
public class IvrTaskScriptQues {
public class ServiceTaskScriptQues {
    /**
     * taskid
smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/domain/IvrTaskVO.java ÐÞ¸Ä
@@ -5,9 +5,8 @@
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -19,7 +18,7 @@
 * @date 2023-03-24
 */
@Data
public class IvrTaskVO extends BaseEntity {
public class ServiceTaskVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
@@ -249,7 +248,7 @@
     */
    @Excel(name = " å®£æ‚£è€…与单一任务关联表集合")
    @ApiModelProperty(value = "患者与单一任务关联表集合")
    private List<PatTaskRelevance> patTaskRelevances;
    private List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
    /**
     * æ˜¯å¦å­˜åœ¨æ“ä½œï¼š1 æ–°å¢ž 2修改 3删除
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java
@@ -39,8 +39,8 @@
    /**
     * é—®å·ID
     */
    @Excel(name = " é—®å·ID ")
    @ApiModelProperty("问卷ID")
    @Excel(name = " é—®å·æ¨¡æ¿ID ")
    @ApiModelProperty("问卷模板ID")
    private Long svyid;
    /**
@@ -55,7 +55,7 @@
     */
    @Excel(name = " é¢˜ç›®Code ")
    @ApiModelProperty("题目Code")
    private String scriptCode;
    private String seqno;
    /**
     * æ˜¯å¦å­˜åœ¨æ“ä½œï¼š1 æ–°å¢ž 2修改 3删除
@@ -68,7 +68,7 @@
     */
    @Excel(name = " é¢˜ç›® ")
    @ApiModelProperty("题目")
    private String script;
    private String scriptContent;
    /**
     * é¢˜ç›®æ ‡ç­¾
@@ -158,7 +158,7 @@
     */
    @Excel(name = "题目内容")
    @ApiModelProperty("题目描述")
    private String scriptContent;
    private String scriptDesc;
    /**
     * é¢˜ç›®å›¾ç‰‡
@@ -235,6 +235,6 @@
     */
    @Excel(name = "题目主题")
    @ApiModelProperty("题目主题")
    private String topic;
    private String scriptTopic;
}
smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,240 @@
package com.smartor.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * æ¨¡æ¿é—®å·é¢˜ç›®å¯¹è±¡ svy_lib_template_script
 *
 * @author ruoyi
 * @date 2024-06-18
 */
@Data
@ApiModel(value = "SvyLibTemplateScriptVO", description = "模板问卷题目对象")
public class SvyLibTemplateScriptVO extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * è‡ªå¢žID
     */
    @ApiModelProperty("自增ID")
    private Long id;
    /**
     * è€ç‰ˆæœ¬ID
     */
    @Excel(name = " è€ç‰ˆæœ¬ID ")
    @ApiModelProperty("老版本ID")
    private Long oldid;
    /**
     * é—®å·ID
     */
    @Excel(name = " é—®å·æ¨¡æ¿ID ")
    @ApiModelProperty("问卷模板ID")
    private Long svyid;
    /**
     * é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空 4其它
     */
    @Excel(name = " é¢˜ç›®ç±»åž‹;枚举 1.单选 2多选 3填空 4其它")
    @ApiModelProperty("题目类型;枚举 1.单选 2多选 3填空 4其它")
    private String scriptType;
    /**
     * é¢˜ç›®Code
     */
    @Excel(name = " é¢˜ç›®Code ")
    @ApiModelProperty("题目Code")
    private String seqno;
    /**
     * æ˜¯å¦å­˜åœ¨æ“ä½œï¼š1 æ–°å¢ž 2修改 3删除
     */
    @ApiModelProperty(value = "是否存在操作:1 æ–°å¢ž 2修改 3删除")
    private Integer isoperation;
    /**
     * é¢˜ç›®
     */
    @Excel(name = " é¢˜ç›® ")
    @ApiModelProperty("题目")
    private String scriptContent;
    /**
     * é¢˜ç›®æ ‡ç­¾
     */
    @Excel(name = "题目标签")
    @ApiModelProperty("题目标签")
    private String tag;
    /**
     * æŽ’序
     */
    @Excel(name = " æŽ’序 ")
    @ApiModelProperty("排序")
    private Long sort;
    /**
     * æ˜¯å¦å¿…å¡«   0必填   1不必填
     */
    @Excel(name = " æ˜¯å¦å¿…å¡«   0必填   1不必填")
    @ApiModelProperty("是否必填   0必填   1不必填")
    private String ismandatory;
    /**
     * æ˜¯å¦éšè—
     */
    @Excel(name = " æ˜¯å¦éšè— ")
    @ApiModelProperty("是否隐藏")
    private Long ishide;
    /**
     * åˆ é™¤æ ‡è®°
     */
    @ApiModelProperty("删除标记")
    private String delFlag;
    /**
     * æœºæž„ID
     */
    @Excel(name = " æœºæž„ID ")
    @ApiModelProperty("机构ID")
    private String orgid;
    /**
     * ä¸Šä¼ æ ‡è®°
     */
    @Excel(name = " ä¸Šä¼ æ ‡è®° ")
    @ApiModelProperty("上传标记")
    private Long isupload;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " ä¸Šä¼ æ—¶é—´ ", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("上传时间")
    private Date uploadTime;
    /**
     * åºŸå¼ƒ
     */
    @ApiModelProperty("(废弃)")
    private Long svyTopicid;
    /**
     * çˆ¶ID
     */
    @Excel(name = "父ID")
    @ApiModelProperty("父ID")
    private Long pid;
    /**
     * GUID
     */
    @Excel(name = "GUID")
    @ApiModelProperty("GUID")
    private String guid;
    /**
     * åˆ†ç±»id
     */
    @Excel(name = "分类id")
    @ApiModelProperty("分类id")
    private Long categoryid;
    /**
     * é¢˜ç›®å†…容
     */
    @Excel(name = "题目内容")
    @ApiModelProperty("题目描述")
    private String scriptDesc;
    /**
     * é¢˜ç›®å›¾ç‰‡
     */
    @Excel(name = "题目图片")
    @ApiModelProperty("题目图片")
    private String scriptPicture;
    /**
     * é€‚用方式:调查表1,智能语音2、人工3
     */
    @Excel(name = "适用方式:调查表1,智能语音2、人工3")
    @ApiModelProperty("适用方式:调查表1,智能语音2、人工3")
    private String suitway;
    /**
     * æ˜¯å¦å¯ç”¨ 0可用  1不可用
     */
    @Excel(name = "是否可用 0可用  1不可用")
    @ApiModelProperty("是否可用 0可用  1不可用")
    private String isavailable;
    /**
     * è¯­è¨€
     */
    @Excel(name = "语言")
    @ApiModelProperty("语言")
    private String language;
    /**
     * å…¶å®ƒæ•°æ®ï¼ˆå­˜å‚¨å˜é‡ï¼‰
     */
    @Excel(name = "其它数据", readConverterExp = "存=储变量")
    @ApiModelProperty("其它数据(存储变量)")
    private String otherdata;
    /**
     * å€¼ç±»åž‹ï¼ˆ1 é€‰é¡¹  2 æ–‡æœ¬  3 æ•°å€¼ï¼‰
     */
    @Excel(name = "值类型", readConverterExp = "1=,选=项,2=,文=本,3=,数=值")
    @ApiModelProperty("值类型(1 é€‰é¡¹  2 æ–‡æœ¬  3 æ•°å€¼ï¼‰")
    private String valueType;
    /**
     * å›žå¤ï¼ˆæŒ‡é—®é¢˜çš„回复,给问答题用的)
     */
    @Excel(name = "回复", readConverterExp = "指=问题的回复,给问答题用的")
    @ApiModelProperty("回复(指问题的回复,给问答题用的)")
    private String reply;
    /**
     * åˆ†å€¼ç±»åž‹ï¼š1:数字,2:等级
     */
    @Excel(name = "分值类型:1:数字,2:等级")
    @ApiModelProperty("分值类型:1:数字,2:等级")
    private String scoretype;
    /**
     * æ¨¡æ¿é—®é¢˜é€‰é¡¹é›†åˆ
     */
    @Excel(name = "模板问题选项集合")
    @ApiModelProperty("模板问题选项集合")
    private List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = new ArrayList<>();
    /**
     * é¢˜ç›®åˆ†å€¼ï¼šæ•°å­—1,2等;字母A、B,C,D等;
     */
    @Excel(name = "题目分值:数字1,2等;字母A、B,C,D等;")
    @ApiModelProperty("题目分值:数字1,2等;字母A、B,C,D等;")
    private String score;
    /**
     * é¢˜ç›®ä¸»é¢˜
     */
    @Excel(name = "题目主题")
    @ApiModelProperty("题目主题")
    private String scriptTopic;
}
smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,108 @@
package com.smartor.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹å¯¹è±¡ svy_task_answer
 *
 * @author ruoyi
 * @date 2024-06-27
 */
@Data
@ApiModel(value = "SvyTaskAnswer", description = "任务问卷问题选项对象")
public class SvyTaskAnswer extends BaseEntity {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "自增ID")
    private Long id;
    /**
     * ä»»åŠ¡ID
     */
    @ApiModelProperty(value = "任务ID")
    private Long taskid;
    /**
     * å­ä»»åŠ¡ID
     */
    @ApiModelProperty(value = "子任务ID")
    private Long singleid;
    /**
     * é¢˜ç›®ID
     */
    @ApiModelProperty(value = "题目ID")
    private Long scriptid;
    /**
     * é¢˜ç›®ç±»åž‹
     */
    @ApiModelProperty(value = "题目类型")
    private Long scriptType;
    /**
     * å¾—分(1、2、3,或A、B、C,或优、良、及格)
     */
    @ApiModelProperty(value = "得分   1=、2、3,或A、B、C,或优、良、及格")
    private String score;
    /**
     * å›žç­”(允许多选)
     */
    @ApiModelProperty(value = "回答  å…=许多选")
    private String answer;
    /**
     * è¯„语
     */
    @ApiModelProperty(value = "评语")
    private String comment;
    /**
     * éœ€è¦è·Ÿè¿›ï¼ˆæ˜¯ï¼š1、否:0)
     */
    @ApiModelProperty(value = "需要跟进  æ˜¯=:1、否:0")
    private String istrack;
    /**
     * å¼‚常预警(是:1、否:0)
     */
    @ApiModelProperty(value = "异常预警  æ˜¯=:1、否:0")
    private String isabnormal;
    /**
     * åˆ é™¤æ ‡å¿—(0:未删除 1:已删除)
     */
    private String delFlag;
    /**
     * ä¸Šä¼ æ ‡å¿—(0:未上传 1:已上传)
     */
    @ApiModelProperty(value = "上传标志   0=:未上传,1=:已上传")
    private Long isupload;
    /**
     * ä¸Šä¼ æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "上传时间")
    private Date uploadTime;
    /**
     * çˆ¶ID
     */
    @ApiModelProperty(value = "父ID")
    private String pid;
    /**
     * GUID
     */
    @ApiModelProperty(value = "GUID")
    private String guid;
}
smartor/src/main/java/com/smartor/domain/SvyTaskTemplate.java
@@ -223,5 +223,15 @@
    @ApiModelProperty(value = "任务ID")
    private Long taskid;
    @ApiModelProperty(value = "开场白")
    private String prologue;
    @ApiModelProperty(value = "指导语")
    private String instruction;
    @ApiModelProperty(value = "结束语")
    private String conclusion;
}
smartor/src/main/java/com/smartor/domain/SvyTaskTemplateVO.java
@@ -230,6 +230,15 @@
    @ApiModelProperty(value = "是否存在操作:1 æ–°å¢ž 2修改 3删除")
    private Integer isoperation;
    @ApiModelProperty(value = "开场白")
    private String prologue;
    @ApiModelProperty(value = "指导语")
    private String instruction;
    @ApiModelProperty(value = "结束语")
    private String conclusion;
    @ApiModelProperty(value = "模板问题集合")
    private List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOS = new ArrayList<>();
smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java
ÎļþÒÑɾ³ý
smartor/src/main/java/com/smartor/mapper/IvrTaskSingleMapper.java
ÎļþÒÑɾ³ý
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.smartor.mapper;
import com.smartor.domain.ServiceSubtask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * å•一任务(随访)Mapper接口
 *
 * @author ruoyi
 * @date 2024-02-02
 */
@Mapper
public interface ServiceSubtaskMapper {
    /**
     * æŸ¥è¯¢å•一任务(随访)
     *
     * @param id å•一任务(随访)主键
     * @return å•一任务(随访)
     */
    public ServiceSubtask selectServiceSubtaskById(Long id);
    /**
     * æŸ¥è¯¢å•一任务(随访)列表
     *
     * @param serviceSubtask å•一任务(随访)
     * @return å•一任务(随访)集合
     */
    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask serviceSubtask);
    /**
     * æ–°å¢žå•一任务(随访)
     *
     * @param ServiceSubtask å•一任务(随访)
     * @return ç»“æžœ
     */
    public int insertServiceSubtask(ServiceSubtask ServiceSubtask);
    /**
     * ä¿®æ”¹å•一任务(随访)
     *
     * @return ç»“æžœ
     */
    public Boolean updateServiceSubtask(ServiceSubtask ServiceSubtask);
    public Boolean updateServiceSubtaskByCondition(ServiceSubtask ServiceSubtask);
    /**
     * åˆ é™¤å•一任务(随访)
     *
     * @param id å•一任务(随访)主键
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskById(Long id);
    public int deleteServiceSubtaskByCondition(@Param("taskid") Long id, @Param("patid") Long patid);
    /**
     * åˆ é™¤å•一任务(随访)
     *
     * @return ç»“æžœ
     */
    public List<ServiceSubtask> getDataByTime(@Param("beganTime") String beganTime, @Param("endTime") String endTime);
}
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.smartor.mapper;
import com.smartor.domain.ServiceSubtaskRecord;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Mapper接口
 *
 * @author ruoyi
 * @date 2024-07-01
 */
@Mapper
public interface ServiceSubtaskRecordMapper {
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    public ServiceSubtaskRecord selectServiceSubtaskRecordById(Long id);
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘åˆ—è¡¨
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘é›†åˆ
     */
    public List<ServiceSubtaskRecord> selectServiceSubtaskRecordList(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * æ–°å¢žã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    public int insertServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * ä¿®æ”¹ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    public int updateServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskRecordById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskRecordByIds(Long[] ids);
}
smartor/src/main/java/com/smartor/mapper/ServiceTaskMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.smartor.mapper;
import java.util.List;
import com.smartor.domain.ServiceTask;
import org.apache.ibatis.annotations.Mapper;
/**
 * è¯­éŸ³ä»»åŠ¡Mapper接口
 *
 * @author smartor
 * @date 2023-03-24
 */
@Mapper
public interface ServiceTaskMapper
{
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return è¯­éŸ³ä»»åŠ¡
     */
    public ServiceTask selectServiceTaskByTaskid(Long taskid);
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡åˆ—è¡¨
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return è¯­éŸ³ä»»åŠ¡é›†åˆ
     */
    public List<ServiceTask> selectServiceTaskList(ServiceTask ServiceTask);
    /**
     * æ–°å¢žè¯­éŸ³ä»»åŠ¡
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    public int insertServiceTask(ServiceTask ServiceTask);
    /**
     * ä¿®æ”¹è¯­éŸ³ä»»åŠ¡
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    public int updateServiceTask(ServiceTask ServiceTask);
    /**
     * åˆ é™¤è¯­éŸ³ä»»åŠ¡
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return ç»“æžœ
     */
    public Boolean deleteServiceTaskByTaskid(Long taskid);
    /**
     * æ‰¹é‡åˆ é™¤è¯­éŸ³ä»»åŠ¡
     *
     * @param taskids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteServiceTaskByTaskids(Long[] taskids);
}
smartor/src/main/java/com/smartor/mapper/SvyTaskAnswerMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.smartor.mapper;
import com.smartor.domain.SvyTaskAnswer;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹Mapper接口
 *
 * @author ruoyi
 * @date 2024-06-27
 */
@Mapper
public interface SvyTaskAnswerMapper {
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    public SvyTaskAnswer selectSvyTaskAnswerById(Long id);
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹åˆ—è¡¨
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹é›†åˆ
     */
    public List<SvyTaskAnswer> selectSvyTaskAnswerList(SvyTaskAnswer svyTaskAnswer);
    /**
     * æ–°å¢žä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    public int insertSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer);
    /**
     * ä¿®æ”¹ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    public int updateSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer);
    /**
     * åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteSvyTaskAnswerById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteSvyTaskAnswerByIds(Long[] ids);
}
smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java
@@ -1,14 +1,8 @@
package com.smartor.service;
import com.smartor.domain.IvrTaskSingle;
import com.smartor.domain.IvrTaskSingleVO;
import com.smartor.domain.PhoneCallBackVO;
import com.smartor.domain.SendTaskVO;
import com.smartor.domain.robot.back.RobotAIDialogBack;
import com.smartor.domain.robot.back.RobotCallBack;
import com.smartor.domain.robot.back.RobotcdrInfoBack;
import java.util.List;
/**
 * æœåŠ¡å›žè°ƒService接口
@@ -37,6 +31,7 @@
    /**
     * æŒ‚机计费信息返回数据接口
     *
     * @param robotcdrInfoBack
     * @return
     */
smartor/src/main/java/com/smartor/service/IIvrTaskService.java
ÎļþÒÑɾ³ý
smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
ÎļþÒÑɾ³ý
smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java
@@ -1,9 +1,8 @@
package com.smartor.service;
import java.util.List;
import com.smartor.domain.IvrTaskcalldetail;
import com.smartor.domain.IvrTaskcalldetailReq;
import java.util.List;
/**
 * è¯­éŸ³ä»»åŠ¡å‘¼å«æ˜Žç»†Service接口
@@ -59,6 +58,4 @@
     * @return ç»“æžœ
     */
    public int deleteIvrTaskcalldetailByCalldetailid(String calldetailid);
    public Integer saveQuestionAnswer(IvrTaskcalldetailReq ivrTaskcalldetailReq);
}
smartor/src/main/java/com/smartor/service/IServiceSubtaskRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.smartor.service;
import com.smartor.domain.ServiceSubtaskRecord;
import java.util.List;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Service接口
 *
 * @author ruoyi
 * @date 2024-07-01
 */
public interface IServiceSubtaskRecordService
{
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    public ServiceSubtaskRecord selectServiceSubtaskRecordById(Long id);
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘åˆ—è¡¨
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘é›†åˆ
     */
    public List<ServiceSubtaskRecord> selectServiceSubtaskRecordList(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * æ–°å¢žã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    public int insertServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * ä¿®æ”¹ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    public int updateServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord);
    /**
     * æ‰¹é‡åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param ids éœ€è¦åˆ é™¤çš„【请填写功能名称】主键集合
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskRecordByIds(Long[] ids);
    /**
     * åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¿¡æ¯
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskRecordById(Long id);
}
smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.smartor.service;
import com.smartor.domain.*;
import com.smartor.domain.ServiceSubtask;
import java.util.List;
/**
 * å•一任务(随访)Service接口
 *
 * @author ruoyi
 * @date 2024-02-02
 */
public interface IServiceSubtaskService {
    /**
     * æŸ¥è¯¢å•一任务(随访)
     *
     * @param id å•一任务(随访)主键
     * @return å•一任务(随访)
     */
    public ServiceSubtask selectServiceSubtaskById(Long id);
    /**
     * æŸ¥è¯¢å•一任务(随访)列表
     *
     * @param ServiceSubtask å•一任务(随访)
     * @return å•一任务(随访)集合
     */
    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask);
    /**
     * æ ¹æ®æ¡ä»¶æŸ¥è¯¢ä»»åŠ¡ä¿¡æ¯
     *
     * @param ServiceSubtask
     * @return
     */
    public ServiceTaskVO queryTaskByCondition(ServiceSubtask ServiceSubtask);
    /**
     * æŸ¥è¯¢æ‚£è€…随访信息
     */
    public List<ServiceSubtask> patItem(ServiceSubtask ServiceSubtask);
    /**
     * æ–°å¢žå•一任务(随访)
     *
     * @param ServiceSubtask å•一任务(随访)
     * @return ç»“æžœ
     */
    public int insertServiceSubtask(ServiceSubtask ServiceSubtask);
    /**
     * ä¿®æ”¹å•一任务(随访)
     *
     * @param ServiceSubtask å•一任务(随访)
     * @return ç»“æžœ
     */
    public Boolean updateServiceSubtask(ServiceSubtask ServiceSubtask);
    /**
     * æ‰¹é‡åˆ é™¤å•一任务(随访)
     *
     * @param ids éœ€è¦åˆ é™¤çš„单一任务(随访)主键集合
     * @return ç»“æžœ
     */
    public int deleteServiceSubtaskByIds(Long[] ids);
    /**
     * æ–°å¢žå®£æ•™ä»»åŠ¡
     *
     * @param ivrTaskVO å•一任务
     * @return ç»“æžœ
     */
    public int insertOrUpdateTask(ServiceTaskVO ivrTaskVO);
    /**
     * ç”µè¯å›žè°ƒä»»åŠ¡
     *
     * @param phoneCallBackVO
     * @return ç»“æžœ
     */
    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO);
    public Integer saveQuestionAnswer(ServiceSubTaskDetailReq serviceSubTaskDetailReq);
}
smartor/src/main/java/com/smartor/service/IServiceTaskService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.smartor.service;
import java.util.List;
import com.smartor.domain.IvrLibaTemplateScriptVO;
import com.smartor.domain.ServiceTask;
import com.smartor.domain.SvyLibTemplateScriptVO;
/**
 * è¯­éŸ³ä»»åŠ¡Service接口
 *
 * @author smartor
 * @date 2023-03-24
 */
public interface IServiceTaskService {
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return è¯­éŸ³ä»»åŠ¡
     */
    public ServiceTask selectServiceTaskByTaskid(Long taskid);
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡åˆ—è¡¨
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return è¯­éŸ³ä»»åŠ¡é›†åˆ
     */
    public List<ServiceTask> selectServiceTaskList(ServiceTask ServiceTask);
    /**
     * æ–°å¢žè¯­éŸ³ä»»åŠ¡
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    public int insertServiceTask(ServiceTask ServiceTask);
    /**
     * ä¿®æ”¹è¯­éŸ³ä»»åŠ¡
     *
     * @param ServiceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    public int updateServiceTask(ServiceTask ServiceTask);
    /**
     * æ‰¹é‡åˆ é™¤è¯­éŸ³ä»»åŠ¡
     *
     * @param taskids éœ€è¦åˆ é™¤çš„语音任务主键集合
     * @return ç»“æžœ
     */
    public int deleteServiceTaskByTaskids(Long[] taskids);
    /**
     * åˆ é™¤è¯­éŸ³ä»»åŠ¡ä¿¡æ¯
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return ç»“æžœ
     */
    public Boolean deleteServiceTaskByTaskid(Long taskid);
    public List getScriptInfoByCondition(Long taskid, Long patid);
}
smartor/src/main/java/com/smartor/service/ISvyTaskAnswerService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.smartor.service;
import com.smartor.domain.SvyTaskAnswer;
import java.util.List;
/**
 * ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹Service接口
 *
 * @author ruoyi
 * @date 2024-06-27
 */
public interface ISvyTaskAnswerService
{
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    public SvyTaskAnswer selectSvyTaskAnswerById(Long id);
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹åˆ—è¡¨
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹é›†åˆ
     */
    public List<SvyTaskAnswer> selectSvyTaskAnswerList(SvyTaskAnswer svyTaskAnswer);
    /**
     * æ–°å¢žä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    public int insertSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer);
    /**
     * ä¿®æ”¹ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    public int updateSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer);
    /**
     * æ‰¹é‡åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param ids éœ€è¦åˆ é™¤çš„任务问卷问题选项主键集合
     * @return ç»“æžœ
     */
    public int deleteSvyTaskAnswerByIds(Long[] ids);
    /**
     * åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¿¡æ¯
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ç»“æžœ
     */
    public int deleteSvyTaskAnswerById(Long id);
}
smartor/src/main/java/com/smartor/service/ISvyTaskService.java
@@ -1,5 +1,7 @@
package com.smartor.service;
import com.smartor.domain.IvrLibaTemplateScriptVO;
import com.smartor.domain.SvyLibTemplateScriptVO;
import com.smartor.domain.SvyTask;
import java.util.List;
@@ -59,4 +61,6 @@
     * @return ç»“æžœ
     */
    public int deleteSvyTaskByTaskid(Long taskid);
    public  List<SvyLibTemplateScriptVO> getScriptInfoByCondition(Long taskid, Long patid);
}
smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java
@@ -1,7 +1,5 @@
package com.smartor.service;
import com.smartor.domain.IvrTaskSingle;
import com.smartor.domain.IvrTaskVO;
import com.smartor.domain.SvyTaskSingle;
import com.smartor.domain.SvyTaskVO;
smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
@@ -9,7 +9,7 @@
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.domain.*;
import com.smartor.service.CommonTaskService;
import com.smartor.service.IIvrTaskService;
import com.smartor.service.IServiceTaskService;
import com.smartor.service.ISvyTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -33,7 +33,7 @@
@Service
public class CommonTaskServiceImpl implements CommonTaskService {
    @Autowired
    private IIvrTaskService ivrTaskService;
    private IServiceTaskService ivrTaskService;
    @Autowired
    private ISvyTaskService iSvyTaskService;
@@ -60,14 +60,14 @@
    }
    public int sfSend(SendTaskVO sendTaskVO) {
        IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(sendTaskVO.getTaskId());
        ServiceTask ivrTask = ivrTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());
        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {
            //任务暂停或终止
            IvrTask ivrTask3 = new IvrTask();
            ivrTask3.setTaskid(sendTaskVO.getTaskId());
            ivrTask3.setStopState(ivrTask.getStopState() + 1);
            ivrTask3.setSendState(sendTaskVO.getSendState());
            ivrTaskService.updateIvrTask(ivrTask3);
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(sendTaskVO.getTaskId());
            serviceTask.setStopState(ivrTask.getStopState() + 1);
            serviceTask.setSendState(sendTaskVO.getSendState());
            ivrTaskService.updateServiceTask(serviceTask);
            return 0;
        }
@@ -82,10 +82,10 @@
            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
            //将任务状态修改成执行中
            IvrTask ivrTask2 = new IvrTask();
            ivrTask2.setTaskid(ivrTask.getTaskid());
            ivrTask2.setSendState(2);
            ivrTaskService.updateIvrTask(ivrTask2);
            ServiceTask serviceTask = new ServiceTask();
            serviceTask.setTaskid(ivrTask.getTaskid());
            serviceTask.setSendState(2);
            ivrTaskService.updateServiceTask(serviceTask);
        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
            //时间段发送
            ObjectMapper objectMapper = new ObjectMapper();
@@ -121,10 +121,10 @@
                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                }
                //将任务状态修改成执行中
                IvrTask ivrTask2 = new IvrTask();
                ivrTask2.setTaskid(ivrTask.getTaskid());
                ivrTask2.setSendState(2);
                ivrTaskService.updateIvrTask(ivrTask2);
                ServiceTask serviceTask = new ServiceTask();
                serviceTask.setTaskid(ivrTask.getTaskid());
                serviceTask.setSendState(2);
                ivrTaskService.updateServiceTask(serviceTask);
            }
        }
        return 1;
@@ -134,11 +134,11 @@
        SvyTask svyTask = iSvyTaskService.selectSvyTaskByTaskid(sendTaskVO.getTaskId());
        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {
            //任务暂停或终止
            SvyTask svyTask1 = new SvyTask();
            svyTask1.setTaskid(sendTaskVO.getTaskId());
            svyTask1.setStopState(svyTask.getStopState() + 1);
            svyTask1.setSendState(sendTaskVO.getSendState().toString());
            iSvyTaskService.updateSvyTask(svyTask1);
            SvyTask serviceTask = new SvyTask();
            serviceTask.setTaskid(sendTaskVO.getTaskId());
            serviceTask.setStopState(svyTask.getStopState() + 1);
            serviceTask.setSendState(sendTaskVO.getSendState().toString());
            iSvyTaskService.updateSvyTask(serviceTask);
            return 0;
        }
@@ -154,10 +154,10 @@
            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
            //将任务状态修改成执行中
            SvyTask svyTask2 = new SvyTask();
            svyTask2.setTaskid(svyTask.getTaskid());
            svyTask2.setSendState("2");
            iSvyTaskService.updateSvyTask(svyTask2);
            SvyTask serviceTask = new SvyTask();
            serviceTask.setTaskid(svyTask.getTaskid());
            serviceTask.setSendState("2");
            iSvyTaskService.updateSvyTask(serviceTask);
        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
            //时间段发送
            ObjectMapper objectMapper = new ObjectMapper();
@@ -193,10 +193,10 @@
                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
                }
                //将任务状态修改成执行中
                SvyTask svyTask3 = new SvyTask();
                svyTask3.setTaskid(svyTask.getTaskid());
                svyTask3.setSendState("2");
                iSvyTaskService.updateSvyTask(svyTask3);
                SvyTask serviceTask = new SvyTask();
                serviceTask.setTaskid(svyTask.getTaskid());
                serviceTask.setSendState("2");
                iSvyTaskService.updateSvyTask(serviceTask);
            }
        }
        return 1;
smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
@@ -165,32 +165,12 @@
        //对模板话术和选项进行处理(话术表与指标表进行合并了,)
        if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList())) {
            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
                if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 1) {
                    //新增
                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
                    ivrLibaTemplateScript.setCreateTime(new Date());
                    ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
                    //对选项目进行处理
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 2) {
                    //修改
                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
                    ivrLibaTemplateScript.setUpdateTime(new Date());
                    ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
                    //对选项目进行处理
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 3) {
                    //删除
                    if (ivrLibaTemplateScriptVO.getID() == null) {
                        log.info("删除失败,模板话术id为空");
                    } else {
                        ivrLibaTemplateScriptVO.setUpdateTime(new Date());
                        ivrLibaTemplateScriptMapper.deleteIvrLibaTemplateScriptByID(ivrLibaTemplateScriptVO.getID());
                    }
                if (ivrLibaTemplateScriptVO.getIsoperation() != null) {
                    IvrLibaTemplateScript ivrLibaTemplateScript = scriptHandle(ivrLibaTemplate, ivrLibaTemplateScriptVO, ivrLibaTemplateScriptVO.getIsoperation());
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID(),ivrLibaTemplateScriptVO.getIsoperation());
                } else {
                    IvrLibaTemplateScript ivrLibaTemplateScript = scriptHandle(ivrLibaTemplate, ivrLibaTemplateScriptVO, ivrLibaTemplateVO.getIsoperation());
                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID(),ivrLibaTemplateVO.getIsoperation());
                }
            }
        }
@@ -212,6 +192,36 @@
        return i;
    }
    private IvrLibaTemplateScript scriptHandle(IvrLibaTemplate ivrLibaTemplate, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO, Integer isoperation) {
        IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
        if (isoperation == 1) {
            //新增
            ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
            ivrLibaTemplateScript.setCreateTime(new Date());
            ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
            //对选项目进行处理
            dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID(),isoperation);
        } else if (isoperation == 2) {
            //修改
            ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
            ivrLibaTemplateScript.setUpdateTime(new Date());
            ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
            //对选项目进行处理
            dealOption(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID(), isoperation);
        } else if (isoperation == 3) {
            //删除
            if (ivrLibaTemplateScriptVO.getID() == null) {
                log.info("删除失败,模板话术id为空");
            } else {
                ivrLibaTemplateScriptVO.setUpdateTime(new Date());
                ivrLibaTemplateScriptMapper.deleteIvrLibaTemplateScriptByID(ivrLibaTemplateScriptVO.getID());
            }
        }
        return ivrLibaTemplateScript;
    }
    /**
     * é€‰é¡¹å¤„理
     *
@@ -219,12 +229,18 @@
     * @param ivrLibaTemplateScript
     * @param tmpID
     */
    private void dealOption(List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList, IvrLibaTemplateScript ivrLibaTemplateScript, Long tmpID) {
    private void dealOption(List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList, IvrLibaTemplateScript ivrLibaTemplateScript, Long tmpID, Integer isoperation) {
        log.info("ivrLibaTemplateScript的值为:{}", ivrLibaTemplateScript);
        //对模板指标选项进行处理
        Integer lsIsoperation = isoperation;
        if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoptionList)) {
            for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption : ivrLibaTemplateTargetoptionList) {
                if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 1) {
                if (ivrLibaTemplateTargetoption.getIsoperation() != null) {
                    isoperation = ivrLibaTemplateTargetoption.getIsoperation();
                } else {
                    isoperation = lsIsoperation;
                }
                if (isoperation == 1) {
                    //新增
                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getID());
@@ -233,7 +249,7 @@
                    if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getNodynamiccruxs()))
                        ivrLibaTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getNodynamiccruxs()));
                    ivrLibaTemplateTargetOptionMapper.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 2) {
                } else if (isoperation == 2) {
                    //修改
                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getID());
@@ -242,7 +258,7 @@
                    if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoption.getNodynamiccruxs()))
                        ivrLibaTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrLibaTemplateTargetoption.getNodynamiccruxs()));
                    ivrLibaTemplateTargetOptionMapper.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 3) {
                } else if (isoperation == 3) {
                    //删除
                    if (ivrLibaTemplateTargetoption.getId() == null) {
                        log.info("删除失败,模板指标选项id为空");
smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
ÎļþÒÑɾ³ý
smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java
@@ -91,45 +91,22 @@
        }
        log.info("新增随访任务随访模板的id为:{}", ivrTaskTemplate.getID());
        //对模板话术和选项进行处理(话术表与指标表进行合并了,)
        if (CollectionUtils.isNotEmpty(ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList())) {
            log.error("ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()是否有数据哈:{}", ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList());
            for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()) {
                if (ivrTaskTemplateScriptVO.getIsoperation() != null && ivrTaskTemplateScriptVO.getIsoperation() == 1 || ivrTaskTemplateScriptVO.getIsoperation() == null && ivrTaskTemplateVO.getIsoperation() == 1) {
                    //新增
                    IvrTaskTemplateScript ivrTaskTemplateScript = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVO, IvrTaskTemplateScript.class);
                    ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getID());
                    ivrTaskTemplateScript.setCreateTime(new Date());
                    ivrTaskTemplateScriptMapper.insertIvrTaskTemplateScript(ivrTaskTemplateScript);
                    ivrTaskTemplateScript.setIsoperation(1);
                    //对选项目进行处理
                    dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getID());
                } else if (ivrTaskTemplateScriptVO.getIsoperation() != null && ivrTaskTemplateScriptVO.getIsoperation() == 2) {
                    //修改
                    IvrTaskTemplateScript ivrTaskTemplateScript = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVO, IvrTaskTemplateScript.class);
                    ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getID());
                    ivrTaskTemplateScript.setUpdateTime(new Date());
                    ivrTaskTemplateScriptMapper.updateIvrTaskTemplateScript(ivrTaskTemplateScript);
                    ivrTaskTemplateScript.setIsoperation(2);
                    //对选项目进行处理
                    dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getID());
                } else if (ivrTaskTemplateScriptVO.getIsoperation() != null && ivrTaskTemplateScriptVO.getIsoperation() == 3) {
                    //删除
                    if (ivrTaskTemplateScriptVO.getID() == null) {
                        log.info("删除失败,模板话术id为空");
                    } else {
                        ivrTaskTemplateScriptVO.setUpdateTime(new Date());
                        ivrTaskTemplateScriptMapper.deleteIvrTaskTemplateScriptByID(ivrTaskTemplateScriptVO.getID());
                    }
                if (ivrTaskTemplateScriptVO.getIsoperation() != null) {
                    IvrTaskTemplateScript ivrTaskTemplateScript = scriptHandle(ivrTaskTemplate, ivrTaskTemplateScriptVO, ivrTaskTemplateScriptVO.getIsoperation());
                    dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getID(), ivrTaskTemplateScriptVO.getIsoperation());
                } else {
                    IvrTaskTemplateScript ivrTaskTemplateScript = scriptHandle(ivrTaskTemplate, ivrTaskTemplateScriptVO, ivrTaskTemplateVO.getIsoperation());
                    dealOption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), ivrTaskTemplateScript, ivrTaskTemplate.getID(), ivrTaskTemplateVO.getIsoperation());
                }
            }
        }
        return ivrTaskTemplate.getID().intValue();
    }
    /**
     * ä¿®æ”¹éšè®¿ä»»åŠ¡éšè®¿æ¨¡æ¿åº“
@@ -229,13 +206,46 @@
        return templateVO;
    }
    private IvrTaskTemplateScript scriptHandle(IvrTaskTemplate ivrTaskTemplate, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Integer isoperation) {
        IvrTaskTemplateScript ivrTaskTemplateScript = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVO, IvrTaskTemplateScript.class);
    private void dealOption(List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptionList, IvrTaskTemplateScript ivrTaskTemplateScript, Long tmpID) {
        if (isoperation == 1) {
            //新增
            ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getID());
            ivrTaskTemplateScript.setCreateTime(new Date());
            ivrTaskTemplateScriptMapper.insertIvrTaskTemplateScript(ivrTaskTemplateScript);
            ivrTaskTemplateScript.setIsoperation(1);
        } else if (isoperation == 2) {
            //修改
            ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getID());
            ivrTaskTemplateScript.setUpdateTime(new Date());
            ivrTaskTemplateScriptMapper.updateIvrTaskTemplateScript(ivrTaskTemplateScript);
            ivrTaskTemplateScript.setIsoperation(2);
        } else if (isoperation == 3) {
            //删除
            if (ivrTaskTemplateScriptVO.getID() == null) {
                log.info("删除失败,模板话术id为空");
            } else {
                ivrTaskTemplateScriptVO.setUpdateTime(new Date());
                ivrTaskTemplateScriptMapper.deleteIvrTaskTemplateScriptByID(ivrTaskTemplateScriptVO.getID());
            }
        }
        return ivrTaskTemplateScript;
    }
    private void dealOption(List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptionList, IvrTaskTemplateScript ivrTaskTemplateScript, Long tmpID, Integer isoperation) {
        log.info("ivrLibaTemplateScript的值为:{}", ivrTaskTemplateScript);
        Integer lsisoperation = isoperation;
        //对模板指标选项进行处理
        if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoptionList)) {
            for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateTargetoptionList) {
                if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 1 || ivrTaskTemplateTargetoption.getIsoperation() == null && ivrTaskTemplateScript.getIsoperation() == 1) {
                if (ivrTaskTemplateTargetoption.getIsoperation() != null) {
                    isoperation = ivrTaskTemplateTargetoption.getIsoperation();
                } else {
                    isoperation = lsisoperation;
                }
                if (isoperation == 1) {
                    //新增
                    ivrTaskTemplateTargetoption.setTemplateID(tmpID);
                    ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getID());
@@ -244,7 +254,7 @@
                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
                        ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
                    ivrTaskTemplateTargetoptionMapper.insertIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
                } else if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 2) {
                } else if (isoperation == 2) {
                    //修改
                    ivrTaskTemplateTargetoption.setTemplateID(tmpID);
                    ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getID());
@@ -253,7 +263,7 @@
                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
                        ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
                    ivrTaskTemplateTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
                } else if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 3) {
                } else if (isoperation == 3) {
                    //删除
                    if (ivrTaskTemplateTargetoption.getId() == null) {
                        log.info("删除失败,模板指标选项id为空");
smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java
@@ -1,22 +1,15 @@
package com.smartor.service.impl;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.smartor.domain.IvrTaskSingle;
import com.smartor.domain.IvrTaskcalldetailReq;
import com.smartor.mapper.IvrTaskSingleMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.smartor.mapper.IvrTaskcalldetailMapper;
import com.smartor.domain.IvrTaskcalldetail;
import com.smartor.mapper.IvrTaskcalldetailMapper;
import com.smartor.mapper.ServiceSubtaskMapper;
import com.smartor.service.IIvrTaskcalldetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * è¯­éŸ³ä»»åŠ¡å‘¼å«æ˜Žç»†Service业务层处理
@@ -31,10 +24,8 @@
    private IvrTaskcalldetailMapper ivrTaskcalldetailMapper;
    @Autowired
    private IvrTaskSingleMapper ivrTaskSingleMapper;
    private ServiceSubtaskMapper ivrTaskSingleMapper;
    @Value("${pri_key}")
    private String pri_key;
    /**
@@ -105,26 +96,4 @@
        return ivrTaskcalldetailMapper.deleteIvrTaskcalldetailByCalldetailid(calldetailid);
    }
    @Override
    public Integer saveQuestionAnswer(IvrTaskcalldetailReq ivrTaskcalldetailReq) {
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskcalldetailReq.getParam1(), pri_key));
        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(ivrTaskcalldetailReq.getParam2(), pri_key));
        IvrTaskSingle ivrTaskSingle = new IvrTaskSingle();
        ivrTaskSingle.setTaskid(tid);
        ivrTaskSingle.setPatid(pid);
        List<IvrTaskSingle> ivrTaskSingles = ivrTaskSingleMapper.selectIvrTaskcallList(ivrTaskSingle);
        if (CollectionUtils.isEmpty(ivrTaskSingles) || ivrTaskSingles.size() == 0) {
            log.error("报错了,ivrTaskSingles数据为空了:{}", ivrTaskSingle);
            return 0;
        }
        for (IvrTaskcalldetail ivrTaskcalldetail : ivrTaskcalldetailReq.getIvrTaskcalldetailList()) {
            ivrTaskcalldetail.setCallid(ivrTaskSingles.get(0).getId().toString());
            ivrTaskcalldetail.setCalldetailid(UUID.randomUUID().toString());
            ivrTaskcalldetail.setCreateTime(new Date());
            ivrTaskcalldetailMapper.insertIvrTaskcalldetail(ivrTaskcalldetail);
        }
        return 1;
    }
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.smartor.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.smartor.domain.ServiceSubtaskRecord;
import com.smartor.mapper.ServiceSubtaskRecordMapper;
import com.smartor.service.IServiceSubtaskRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘Service业务层处理
 *
 * @author ruoyi
 * @date 2024-07-01
 */
@Service
public class ServiceSubtaskRecordServiceImpl implements IServiceSubtaskRecordService {
    @Autowired
    private ServiceSubtaskRecordMapper serviceSubtaskRecordMapper;
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    @Override
    public ServiceSubtaskRecord selectServiceSubtaskRecordById(Long id) {
        return serviceSubtaskRecordMapper.selectServiceSubtaskRecordById(id);
    }
    /**
     * æŸ¥è¯¢ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘åˆ—è¡¨
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     */
    @Override
    public List<ServiceSubtaskRecord> selectServiceSubtaskRecordList(ServiceSubtaskRecord serviceSubtaskRecord) {
        return serviceSubtaskRecordMapper.selectServiceSubtaskRecordList(serviceSubtaskRecord);
    }
    /**
     * æ–°å¢žã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    @Override
    public int insertServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord) {
        serviceSubtaskRecord.setCreateTime(DateUtils.getNowDate());
        return serviceSubtaskRecordMapper.insertServiceSubtaskRecord(serviceSubtaskRecord);
    }
    /**
     * ä¿®æ”¹ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param serviceSubtaskRecord ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     * @return ç»“æžœ
     */
    @Override
    public int updateServiceSubtaskRecord(ServiceSubtaskRecord serviceSubtaskRecord) {
        serviceSubtaskRecord.setUpdateTime(DateUtils.getNowDate());
        return serviceSubtaskRecordMapper.updateServiceSubtaskRecord(serviceSubtaskRecord);
    }
    /**
     * æ‰¹é‡åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘
     *
     * @param ids éœ€è¦åˆ é™¤çš„【请填写功能名称】主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteServiceSubtaskRecordByIds(Long[] ids) {
        return serviceSubtaskRecordMapper.deleteServiceSubtaskRecordByIds(ids);
    }
    /**
     * åˆ é™¤ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¿¡æ¯
     *
     * @param id ã€è¯·å¡«å†™åŠŸèƒ½åç§°ã€‘ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteServiceSubtaskRecordById(Long id) {
        return serviceSubtaskRecordMapper.deleteServiceSubtaskRecordById(id);
    }
}
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java ÐÞ¸Ä
@@ -8,16 +8,18 @@
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import com.smartor.service.IIvrTaskService;
import com.smartor.service.IIvrTaskSingleService;
import com.smartor.service.IServiceSubtaskService;
import com.smartor.service.IServiceTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -35,27 +37,35 @@
 */
@Slf4j
@Service
public class IvrTaskSingleServiceImpl implements IIvrTaskSingleService {
public class ServiceSubtaskServiceImpl implements IServiceSubtaskService {
    @Autowired
    private IvrTaskSingleMapper ivrTaskSingleMapper;
    private ServiceSubtaskMapper serviceSubtaskMapper;
    @Autowired
    private IIvrTaskService ivrTaskService;
    private IvrTaskcalldetailMapper ivrTaskcalldetailMapper;
    @Autowired
    private SvyTasksingledetailMapper svyTasksingledetailMapper;
    @Autowired
    private IvrTaskTemplateTargetoptionMapper ivrTaskScriptTargetoptionMapper;
    private IServiceTaskService serviceTaskService;
    @Autowired
    private IvrLibaTemplateScriptMapper ivrTaskTemplateScriptMapper;
    private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
    @Autowired
    private IvrTaskVisitResultMapper ivrTaskVisitResultMapper;
    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
    @Autowired
    private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
    @Autowired
    private RedisCache redisCache;
    @Autowired
    private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
    @Value("${pri_key}")
    private String pri_key;
    /**
@@ -65,117 +75,119 @@
     * @return å•一任务(随访)
     */
    @Override
    public IvrTaskSingle selectIvrTaskcallById(Long id) {
        return ivrTaskSingleMapper.selectIvrTaskcallById(id);
    public ServiceSubtask selectServiceSubtaskById(Long id) {
        return serviceSubtaskMapper.selectServiceSubtaskById(id);
    }
    /**
     * æŸ¥è¯¢å•一任务(随访)列表
     *
     * @param ivrTaskcall å•一任务(随访)
     * @param ServiceSubtask å•一任务(随访)
     * @return å•一任务(随访)
     */
    @Override
    public List<IvrTaskSingle> selectIvrTaskcallList(IvrTaskSingle ivrTaskcall) {
        return ivrTaskSingleMapper.selectIvrTaskcallList(ivrTaskcall);
    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask) {
        return serviceSubtaskMapper.selectServiceSubtaskList(ServiceSubtask);
    }
    @Override
    public IvrTaskVO queryTaskByCondition(IvrTaskSingle ivrTaskcall) {
    public ServiceTaskVO queryTaskByCondition(ServiceSubtask ServiceSubtask) {
        //定义患者与单一任务关联表集合
        List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
        List<IvrTaskSingle> list = selectIvrTaskcallList(ivrTaskcall);
        List<ServiceSubtask> list = selectServiceSubtaskList(ServiceSubtask);
        if (CollectionUtils.isEmpty(list) || list.size() == 0) {
            return new IvrTaskVO();
            return new ServiceTaskVO();
        }
        IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(ivrTaskcall.getTaskid());
        //将查出来的数据倒入ivrTasksingleVO中
        IvrTaskVO ivrTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskVO.class);
        ivrTaskVO.setShowDate(ivrTask.getShowDate());
        ivrTaskVO.setShowTimeMorn(ivrTask.getShowTimeMorn());
        ivrTaskVO.setShowTimeNoon(ivrTask.getShowTimeNoon());
        ivrTaskVO.setShowTimeNight(ivrTask.getShowTimeNight());
        ivrTaskVO.setPreachform(ivrTask.getPreachform());
        String sendTimeSlot = ivrTask.getSendTimeSlot();
        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(ServiceSubtask.getTaskid());
        //将查出来的数据倒入ServiceSubtaskVO中
        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), ServiceTaskVO.class);
        serviceTaskVO.setShowDate(serviceTask.getShowDate());
        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());
        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
        serviceTaskVO.setPreachform(serviceTask.getPreachform());
        String sendTimeSlot = serviceTask.getSendTimeSlot();
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            //获取到发送时间的集合
            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
                List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
                ivrTaskVO.setSendTimeslot(taskSendTimeVOList);
                ivrTaskVO.setSendType(ivrTask.getSendType());
                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);
                serviceTaskVO.setSendType(serviceTask.getSendType());
            }
            //文本变量参数
            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(ivrTask.getTextParam())) {
                Map<String, Map<String, String>> textParam = objectMapper.readValue(ivrTask.getTextParam(), Map.class);
                ivrTaskVO.setTextParam(textParam);
            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {
                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
                serviceTaskVO.setTextParam(textParam);
            }
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        for (IvrTaskSingle ivrTaskcall1 : list) {
        for (ServiceSubtask serviceSubtask1 : list) {
            PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
            if (!ivrTaskcall1.getHospType().equals("2")) {
                log.info("随访查询不为出院,{}", ivrTaskcall1.getHospType());
            if (!serviceSubtask1.getHospType().equals("2")) {
                log.info("随访查询不为出院,{}", serviceSubtask1.getHospType());
                //获取到患者信息,并放入到集合中
                patTaskRelevance.setName(ivrTaskcall1.getSendname());
                patTaskRelevance.setAge(ivrTaskcall1.getAge());
                patTaskRelevance.setSfzh(ivrTaskcall1.getSfzh());
                patTaskRelevance.setPhone(ivrTaskcall1.getPhone());
                patTaskRelevance.setAddr(ivrTaskcall1.getAddr());
                patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname());
                patTaskRelevance.setPatid(ivrTaskcall1.getPatid());
                patTaskRelevance.setName(serviceSubtask1.getSendname());
                patTaskRelevance.setAge(serviceSubtask1.getAge());
                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
                patTaskRelevance.setPhone(serviceSubtask1.getPhone());
                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
            }
            if (ivrTaskcall1.getHospType().equals("2")) {
                log.info("随访查询为出院,{}", ivrTaskcall1.getHospType());
                patTaskRelevance.setName(ivrTaskcall1.getSendname());
                patTaskRelevance.setAge(ivrTaskcall1.getAge());
                patTaskRelevance.setSfzh(ivrTaskcall1.getSfzh());
                patTaskRelevance.setPhone(ivrTaskcall1.getPhone());
                patTaskRelevance.setAddr(ivrTaskcall1.getAddr());
                patTaskRelevance.setDeptName(ivrTaskcall1.getDeptname());
                patTaskRelevance.setBedNo(ivrTaskcall1.getBedNo());
                patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname());
                patTaskRelevance.setPatid(ivrTaskcall1.getPatid());
            if (serviceSubtask1.getHospType().equals("2")) {
                log.info("随访查询为出院,{}", serviceSubtask1.getHospType());
                patTaskRelevance.setName(serviceSubtask1.getSendname());
                patTaskRelevance.setAge(serviceSubtask1.getAge());
                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
                patTaskRelevance.setPhone(serviceSubtask1.getPhone());
                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
            }
        }
        ivrTaskVO.setPatTaskRelevances(patTaskRelevances);
        return ivrTaskVO;
        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
        return serviceTaskVO;
    }
    @Override
    public List<IvrTaskSingle> patItem(IvrTaskSingle ivrTaskSingle) {
    public List<ServiceSubtask> patItem(ServiceSubtask serviceSubtask) {
        return this.selectIvrTaskcallList(ivrTaskSingle);
        return this.selectServiceSubtaskList(serviceSubtask);
    }
    /**
     * æ–°å¢žå•一任务(随访)
     *
     * @param ivrTaskcall å•一任务(随访)
     * @param serviceSubtask å•一任务(随访)
     * @return ç»“æžœ
     */
    @Override
    public int insertIvrTaskcall(IvrTaskSingle ivrTaskcall) {
        ivrTaskcall.setCreateTime(DateUtils.getNowDate());
        return ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
    public int insertServiceSubtask(ServiceSubtask serviceSubtask) {
        serviceSubtask.setCreateTime(DateUtils.getNowDate());
        return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
    }
    /**
     * ä¿®æ”¹å•一任务(随访)
     *
     * @param ivrTaskcall å•一任务(随访)
     * @param serviceSubtask å•一任务(随访)
     * @return ç»“æžœ
     */
    @Override
    public Boolean updateIvrTaskcall(IvrTaskSingle ivrTaskcall) {
        ivrTaskcall.setUpdateTime(DateUtils.getNowDate());
        return ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
    public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) {
        serviceSubtask.setUpdateTime(DateUtils.getNowDate());
        return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
    }
    /**
@@ -184,10 +196,10 @@
     * @return ç»“æžœ
     */
    @Override
    public int deleteIvrTaskcallByIds(Long[] ids) {
    public int deleteServiceSubtaskByIds(Long[] ids) {
        Integer i = 0;
        for (Long id : ids) {
            i = ivrTaskSingleMapper.deleteIvrTaskcallById(id);
            i = serviceSubtaskMapper.deleteServiceSubtaskById(id);
        }
        return i;
    }
@@ -199,84 +211,83 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public int insertOrUpdateTask(IvrTaskVO ivrTaskVO) {
        if (ObjectUtils.isEmpty(ivrTaskVO)) {
    public int insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {
        if (ObjectUtils.isEmpty(serviceTaskVO)) {
            log.info("任务入参为空,请检查入参");
            throw new BaseException("任务入参为空,请检查入参");
        }
        Integer integer = 1;
        IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTask.class);
        ivrTask.setTextParam(JSON.toJSONString(ivrTaskVO.getTextParam()));
        if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 1) {
        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
            //往任务表中,新增任务
            if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot()))
                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot()));
            if (ivrTask.getSendState() == null) ivrTask.setSendState(1);
            ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid());
            ivrTaskService.insertIvrTask(ivrTask);
            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
            if (serviceTask.getSendState() == null) serviceTask.setSendState(1);
            serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
            serviceTaskService.insertServiceTask(serviceTask);
            //将任务信息放到服务表中
            IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class);
            ivrTaskcall.setTaskid(ivrTask.getTaskid().longValue());
            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
            serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());
            //新增
            if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) {
            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
                    //将任务信息新增到随访服务表中
                    ivrTaskcall.setSendname(patTaskRelevance.getName());
                    ivrTaskcall.setAge(patTaskRelevance.getAge());
                    ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
                    ivrTaskcall.setPhone(patTaskRelevance.getPhone());
                    ivrTaskcall.setAddr(patTaskRelevance.getAddr());
                    ivrTaskcall.setPatid(patTaskRelevance.getPatid());
                    ivrTaskcall.setCreateTime(DateUtils.getNowDate());
                    ivrTaskcall.setSendstate(1L);
                    ivrTaskcall.setType(ivrTaskVO.getHospType());
                    ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
                    integer = ivrTaskcall.getId().intValue();
                    serviceSubtask.setSendname(patTaskRelevance.getName());
                    serviceSubtask.setAge(patTaskRelevance.getAge());
                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
                    serviceSubtask.setAddr(patTaskRelevance.getAddr());
                    serviceSubtask.setPatid(patTaskRelevance.getPatid());
                    serviceSubtask.setCreateTime(DateUtils.getNowDate());
                    serviceSubtask.setSendstate(1L);
                    serviceSubtask.setType(serviceTaskVO.getHospType());
                    serviceSubtask.setHospType(patTaskRelevance.getHospType());
                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                    integer = serviceSubtask.getId().intValue();
                }
            }
        } else if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 2) {
        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
            //任务修改
            if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot()))
                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot()));
            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
            //修改操作,需要将stopState状态+1
            IvrTask ivrTask1 = ivrTaskService.selectIvrTaskByTaskid(ivrTask.getTaskid());
            ivrTask.setStopState(ivrTask1.getStopState() + 1);
            ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid());
            ivrTaskService.updateIvrTask(ivrTask);
            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
            serviceTask.setStopState(serviceTask1.getStopState() + 1);
            serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
            serviceTaskService.updateServiceTask(serviceTask);
            if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) {
            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class);
                    ivrTaskcall.setSendname(patTaskRelevance.getName());
                    ivrTaskcall.setAge(patTaskRelevance.getAge());
                    ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
                    ivrTaskcall.setPhone(patTaskRelevance.getPhone());
                    ivrTaskcall.setAddr(patTaskRelevance.getAddr());
                    ivrTaskcall.setPatid(patTaskRelevance.getPatid());
                    ivrTaskcall.setType(ivrTaskVO.getHospType());
                    ivrTaskcall.setCreateTime(DateUtils.getNowDate());
                    ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskVO.getTextParam()));
                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
                    serviceSubtask.setSendname(patTaskRelevance.getName());
                    serviceSubtask.setAge(patTaskRelevance.getAge());
                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
                    serviceSubtask.setAddr(patTaskRelevance.getAddr());
                    serviceSubtask.setPatid(patTaskRelevance.getPatid());
                    serviceSubtask.setType(serviceTaskVO.getHospType());
                    serviceSubtask.setCreateTime(DateUtils.getNowDate());
                    serviceSubtask.setHospType(patTaskRelevance.getHospType());
                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                    if (patTaskRelevance.getIsoperation() != null) {
                        if (patTaskRelevance.getIsoperation() == 2)
                            ivrTaskSingleMapper.updateIvrTaskcallByCondition(ivrTaskcall);
                            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
                        if (patTaskRelevance.getIsoperation() == 1) {
                            ivrTaskcall.setSendstate(1L);
                            ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
                            serviceSubtask.setSendstate(1L);
                            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                        }
                        if (patTaskRelevance.getIsoperation() == 3)
                            //  é€šè¿‡taskid和patid去删除该条数据
                            ivrTaskSingleMapper.deleteIvrTaskcallByCondition(ivrTaskVO.getTaskid(), patTaskRelevance.getPatid());
                            serviceSubtaskMapper.deleteServiceSubtaskByCondition(serviceTaskVO.getTaskid(), patTaskRelevance.getPatid());
                    }
                    integer = ivrTaskcall.getTaskid().intValue();
                    integer = serviceSubtask.getTaskid().intValue();
                }
            }
        }
        return integer;
    }
@@ -303,14 +314,14 @@
        }
        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
        IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskSingle");
        List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("ivrTaskTemplateScriptVO");
        ServiceSubtask serviceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
        List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("IvrTaskTemplateScriptVO");
        //将uuid更新到数据库中
        ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
        ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
        serviceSubtask.setSenduuid(phoneCallBackVO.getUuid());
        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
        //获取模板信息
        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrTaskTemplateVO");
        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "IvrTaskTemplateVO");
        //语音识别结果上报接口: 3
        Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
@@ -325,7 +336,7 @@
            //判断noVoice是否已经到了最大值
            if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) {
                //已经问了对应的遍数,就判断是否还有下一题
                if (nowQuestion.getTargetid() == ivrTaskTemplateScriptVOs.size()) {
                if (nowQuestion.getTargetid() == IvrTaskTemplateScriptVOs.size()) {
                    //没有下一题了,就挂断电话,播放结束语
                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
                    phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
@@ -333,7 +344,7 @@
                } else {
                    //有下一题
                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(ivrTaskTemplateScriptVOs, nowQuestion);
                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);
                    // é—®é¢˜ï¼Œ  åŽ»è°ƒç”¨â€œtts合成和播放”接口
                    String date = simpleDateFormat1.format(new Date());
                    log.info("去调用tts合成和播放接口: {},uuid为:{}", date, phoneCallBackVO.getUuid());
@@ -372,35 +383,35 @@
                    //说明匹配正确了
                    //这里应该先判断类型,去再修改,设置IsUserOperation是单选题的改法
                    nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(true);
                    ivrTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
                    serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
                    //将静默置为0
                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
                    //将患者的回签写进表里
                    IvrTaskVisitResult ivrTaskVisitResult = DtoConversionUtils.sourceToTarget(ivrTaskcall, IvrTaskVisitResult.class);
                    ivrTaskVisitResult.setId(null);
                    ivrTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
                    ivrTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
                    ivrTaskVisitResult.setCreateTime(new Date());
                    ivrTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
                    ivrTaskVisitResultMapper.insertIvrTaskVisitResult(ivrTaskVisitResult);
                    IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);
                    serviceTaskVisitResult.setId(null);
                    serviceTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
                    serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
                    serviceTaskVisitResult.setCreateTime(new Date());
                    serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
                    serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);
                    //将匹配到的标识改成true
                    isppd = true;
                    //获取下一题
                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
                    for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOs) {
                    for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) {
                        if (script.getTargetid() == nextQuestion) {
                            QuestionMessage questionMessage = new QuestionMessage();
                            questionMessage.setNowQuestion(script);
                            questionMessage.setQuestionList(ivrTaskTemplateScriptVOs);
                            questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
                            phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
                            return;
                        } else if (nextQuestion > ivrTaskTemplateScriptVOs.size()) {
                        } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {
                            //没有下一题了,就结束了
                            String date = simpleDateFormat1.format(new Date());
                            log.error("没有下一题了,就结束了: {},uuid为:{}", date, phoneCallBackVO.getUuid());
@@ -430,10 +441,10 @@
                //无匹配次数去判断是否到最大询问次数,并且所有的选项都匹配完了
                if (mateNum == ivrTaskTemplateVO.getMateNum().intValue()) {
                    //如果下一题为空.则新的数据返回,并加上感谢语
                    if (nowQuestion.getTargetid() < ivrTaskTemplateScriptVOs.size()) {
                    if (nowQuestion.getTargetid() < IvrTaskTemplateScriptVOs.size()) {
                        QuestionMessage questionMessage = new QuestionMessage();
                        IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(ivrTaskTemplateScriptVOs, nowQuestion);
                        questionMessage.setQuestionList(ivrTaskTemplateScriptVOs);
                        IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);
                        questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
                        questionMessage.setNowQuestion(nextQuestion);
                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
@@ -540,11 +551,11 @@
////            e.printStackTrace();
////        }
//
//        IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskcall");
//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
//        //将uuid更新到数据库中
//        ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
//        ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());
//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
//
//        //获取模板信息
//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
@@ -562,16 +573,16 @@
//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
//                }
//
//                if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
//                    log.info("无人接听:{},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
//                    //连续打规定次,如果要没人接,那就结束
//                    ivrTaskcall.setResult(phoneCallBackVO.getErrResult());
//                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());
//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
//                } else if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
//                    //进行重拨
//                    PhoneUtils phoneUtils = new PhoneUtils();
//                    phoneUtils.ob(null, null, null, null, null, null, null, ivrTaskcall.getPhone(), phoneCallBackVO.getUuid(), true);
//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);
//                }
//            }
//
@@ -581,20 +592,20 @@
//                // 0-振铃
//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
//
//                if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
//                } else if (integer == null) {
//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
//                } else if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
//                    ivrTaskcall.setResult("无人接听");
//                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
//                    ServiceSubtask.setResult("无人接听");
//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
//                }
//            } else if (phoneCallBackVO.getEnumState() == 2) {
//                //患者挂断电话
//                log.info("患者挂断电话:{}", phoneCallBackVO.getUuid());
//                ivrTaskcall.setResult(phoneCallBackVO.getHangUpResult());
//                ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());
//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
//                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
//            }
//
@@ -749,13 +760,46 @@
//        return phoneCallBackVO;
//    }
    @Override
    public Integer saveQuestionAnswer(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
        ServiceSubtask ivrTaskSingle = new ServiceSubtask();
        ivrTaskSingle.setTaskid(tid);
        ivrTaskSingle.setPatid(pid);
        List<ServiceSubtask> ivrTaskSingles = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
        if (CollectionUtils.isEmpty(ivrTaskSingles) || ivrTaskSingles.size() == 0) {
            log.error("报错了,ivrTaskSingles数据为空了:{}", ivrTaskSingle);
            return 0;
        }
        int i = 0;
        if (CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getIvrTaskcalldetailList())) {
            //随访
            for (IvrTaskcalldetail ivrTaskcalldetail : serviceSubTaskDetailReq.getIvrTaskcalldetailList()) {
                ivrTaskcalldetail.setCallid(ivrTaskSingles.get(0).getId().toString());
                ivrTaskcalldetail.setCalldetailid(UUID.randomUUID().toString());
                ivrTaskcalldetail.setCreateTime(new Date());
                i = ivrTaskcalldetailMapper.insertIvrTaskcalldetail(ivrTaskcalldetail);
            }
        } else if (CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getSvyTasksingledetailList())) {
            //问卷
            for (SvyTasksingledetail svyTasksingledetail : serviceSubTaskDetailReq.getSvyTasksingledetailList()) {
                svyTasksingledetail.setCallid(ivrTaskSingles.get(0).getId().toString());
                svyTasksingledetail.setCalldetailid(UUID.randomUUID().toString());
                svyTasksingledetail.setCreateTime(new Date());
                i = svyTasksingledetailMapper.insertSvyTasksingledetail(svyTasksingledetail);
            }
        }
        return i;
    }
    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO) {
    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {
        for (int j = 0; j < ivrTaskTemplateScriptVOList.size(); j++) {
            if (ivrTaskTemplateScriptVOList.get(j).getTargetid() == ivrTaskTemplateScriptVO.getTargetid() + 1) {
        for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {
            if (IvrTaskTemplateScriptVOList.get(j).getTargetid() == IvrTaskTemplateScriptVO.getTargetid() + 1) {
                // å¯¹è¯¥æ¡templateScriptVO进行处理
                return ivrTaskTemplateScriptVOList.get(j);
                return IvrTaskTemplateScriptVOList.get(j);
            }
        }
        return null;
smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,278 @@
package com.smartor.service.impl;
import java.util.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.DtoConversionUtils;
import org.apache.commons.lang3.StringUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.smartor.service.IServiceTaskService;
import org.springframework.transaction.annotation.Transactional;
/**
 * è¯­éŸ³ä»»åŠ¡Service业务层处理
 *
 * @author smartor
 * @date 2023-03-24
 */
@Slf4j
@Service
public class ServiceTaskServiceImpl implements IServiceTaskService {
    @Autowired
    private ServiceTaskMapper serviceTaskMapper;
    @Autowired
    private ServiceSubtaskMapper serviceSubtaskMapper;
    @Autowired
    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
    @Autowired
    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
    @Autowired
    private PatArchiveMapper patArchiveMapper;
    @Autowired
    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
    @Autowired
    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
    @Autowired
    private RedisCache redisCache;
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return è¯­éŸ³ä»»åŠ¡
     */
    @Override
    public ServiceTask selectServiceTaskByTaskid(Long taskid) {
        return serviceTaskMapper.selectServiceTaskByTaskid(taskid);
    }
    /**
     * æŸ¥è¯¢è¯­éŸ³ä»»åŠ¡åˆ—è¡¨
     *
     * @param serviceTask è¯­éŸ³ä»»åŠ¡
     * @return è¯­éŸ³ä»»åŠ¡
     */
    @Override
    public List<ServiceTask> selectServiceTaskList(ServiceTask serviceTask) {
        return serviceTaskMapper.selectServiceTaskList(serviceTask);
    }
    /**
     * æ–°å¢žè¯­éŸ³ä»»åŠ¡
     *
     * @param serviceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    @Override
    public int insertServiceTask(ServiceTask serviceTask) {
        serviceTask.setCreateTime(DateUtils.getNowDate());
        return serviceTaskMapper.insertServiceTask(serviceTask);
    }
    /**
     * ä¿®æ”¹è¯­éŸ³ä»»åŠ¡
     *
     * @param serviceTask è¯­éŸ³ä»»åŠ¡
     * @return ç»“æžœ
     */
    @Override
    public int updateServiceTask(ServiceTask serviceTask) {
        serviceTask.setUpdateTime(DateUtils.getNowDate());
        return serviceTaskMapper.updateServiceTask(serviceTask);
    }
    /**
     * æ‰¹é‡åˆ é™¤è¯­éŸ³ä»»åŠ¡
     *
     * @param taskids éœ€è¦åˆ é™¤çš„语音任务主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteServiceTaskByTaskids(Long[] taskids) {
        return serviceTaskMapper.deleteServiceTaskByTaskids(taskids);
    }
    /**
     * åˆ é™¤è¯­éŸ³ä»»åŠ¡ä¿¡æ¯
     *
     * @param taskid è¯­éŸ³ä»»åС䏻键
     * @return ç»“æžœ
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean deleteServiceTaskByTaskid(Long taskid) {
        ServiceSubtask ServiceTaskcall = new ServiceSubtask();
        ServiceTaskcall.setTaskid(taskid);
        ServiceTaskcall.setDelFlag("1");
        Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(ServiceTaskcall);
        Boolean isSuccess = false;
        if (!aBoolean) {
            new BaseException("任务删除失败");
        }
        isSuccess = serviceTaskMapper.deleteServiceTaskByTaskid(taskid);
        return isSuccess;
    }
    @Override
    public List getScriptInfoByCondition(Long taskid, Long patid) {
        //通过任务ID获取模板ID
        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
        List info = new ArrayList();
        if (serviceTask.getType().equals("1")) {
            //随访
            info = sfInfo(serviceTask, patid);
        } else if (serviceTask.getType().equals("2")) {
            //问卷
            info = wjInfo(serviceTask, patid);
        } else {
            //宣教
        }
        //只要打开了页面,就算成功
        ServiceSubtask ServiceTaskSingle = new ServiceSubtask();
        ServiceTaskSingle.setTaskid(taskid);
        ServiceTaskSingle.setPatid(patid);
        ServiceTaskSingle.setResult("success");
        ServiceTaskSingle.setFinishtime(new Date());
        serviceSubtaskMapper.updateServiceSubtaskByCondition(ServiceTaskSingle);
        return info;
    }
    /**
     * éšè®¿ä¿¡æ¯
     *
     * @param serviceTask
     * @param patid
     * @return
     */
    public List sfInfo(ServiceTask serviceTask, Long patid) {
        //通过模板ID获取问题信息
        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
        ivrLibaTemplateScript.setTemplateID(serviceTask.getTemplateid());
        ivrLibaTemplateScript.setDelFlag("0");
        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {
            log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理");
            return new ArrayList<>();
        }
        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);
        //获取患者信息
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        //通过患者信息和任务信息中的textParam对问题中的变量进行填充
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Map<String, String>> serviceTaskMap = null;
        try {
            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        List<Map<String, String>> mapList = new ArrayList<>();
        for (Map<String, String> map : serviceTaskMap.values()) {
            mapList.add(map);
        }
        //将模板问题话术里的通配符替换
        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getQuestionText())) {
                for (Map<String, String> map : mapList) {
                    for (String key : map.keySet()) {
                        ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                //替换患者个人信息数据
                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                //获取问题选项
                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getID());
                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);
            }
        }
        return ivrLibaTemplateScriptVOS;
    }
    /**
     * é—®å·ä¿¡æ¯
     *
     * @param serviceTask
     * @param patid
     * @return
     */
    private List wjInfo(ServiceTask serviceTask, Long patid) {
        //通过模板ID获取问题信息
        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getTemplateid()));
        svyLibTemplateScript.setDelFlag("0");
        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
            log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理");
            return new ArrayList<>();
        }
        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
        //获取患者信息
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        //通过患者信息和任务信息中的textParam对问题中的变量进行填充
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Map<String, String>> ivrTaskMap = null;
        try {
            ivrTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        List<Map<String, String>> mapList = new ArrayList<>();
        for (Map<String, String> map : ivrTaskMap.values()) {
            mapList.add(map);
        }
        //将模板问题话术里的通配符替换
        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
                for (Map<String, String> map : mapList) {
                    for (String key : map.keySet()) {
                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                //替换患者个人信息数据
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                //获取问题选项
                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());
                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
            }
        }
        return svyLibTemplateScriptVOS;
    }
}
smartor/src/main/java/com/smartor/service/impl/SvyTaskAnswerServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.smartor.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.smartor.domain.SvyTaskAnswer;
import com.smartor.mapper.SvyTaskAnswerMapper;
import com.smartor.service.ISvyTaskAnswerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹Service业务层处理
 *
 * @author ruoyi
 * @date 2024-06-27
 */
@Service
public class SvyTaskAnswerServiceImpl implements ISvyTaskAnswerService
{
    @Autowired
    private SvyTaskAnswerMapper svyTaskAnswerMapper;
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    @Override
    public SvyTaskAnswer selectSvyTaskAnswerById(Long id)
    {
        return svyTaskAnswerMapper.selectSvyTaskAnswerById(id);
    }
    /**
     * æŸ¥è¯¢ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹åˆ—è¡¨
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     */
    @Override
    public List<SvyTaskAnswer> selectSvyTaskAnswerList(SvyTaskAnswer svyTaskAnswer)
    {
        return svyTaskAnswerMapper.selectSvyTaskAnswerList(svyTaskAnswer);
    }
    /**
     * æ–°å¢žä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    @Override
    public int insertSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer)
    {
        svyTaskAnswer.setCreateTime(DateUtils.getNowDate());
        return svyTaskAnswerMapper.insertSvyTaskAnswer(svyTaskAnswer);
    }
    /**
     * ä¿®æ”¹ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param svyTaskAnswer ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     * @return ç»“æžœ
     */
    @Override
    public int updateSvyTaskAnswer(SvyTaskAnswer svyTaskAnswer)
    {
        svyTaskAnswer.setUpdateTime(DateUtils.getNowDate());
        return svyTaskAnswerMapper.updateSvyTaskAnswer(svyTaskAnswer);
    }
    /**
     * æ‰¹é‡åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹
     *
     * @param ids éœ€è¦åˆ é™¤çš„任务问卷问题选项主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyTaskAnswerByIds(Long[] ids)
    {
        return svyTaskAnswerMapper.deleteSvyTaskAnswerByIds(ids);
    }
    /**
     * åˆ é™¤ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¿¡æ¯
     *
     * @param id ä»»åŠ¡é—®å·é—®é¢˜é€‰é¡¹ä¸»é”®
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyTaskAnswerById(Long id)
    {
        return svyTaskAnswerMapper.deleteSvyTaskAnswerById(id);
    }
}
smartor/src/main/java/com/smartor/service/impl/SvyTaskServiceImpl.java
@@ -1,13 +1,22 @@
package com.smartor.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ruoyi.common.utils.DateUtils;
import com.smartor.domain.SvyTask;
import com.smartor.mapper.SvyTaskMapper;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
import com.smartor.service.ISvyTaskService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * ç»¼åˆé—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰Service业务层处理
@@ -15,11 +24,23 @@
 * @author ruoyi
 * @date 2024-06-12
 */
@Slf4j
@Service
public class SvyTaskServiceImpl implements ISvyTaskService
{
public class SvyTaskServiceImpl implements ISvyTaskService {
    @Autowired
    private SvyTaskMapper svyTaskMapper;
    @Autowired
    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
    @Autowired
    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
    @Autowired
    private SvyTaskSingleMapper svyTaskSingleMapper;
    @Autowired
    private PatArchiveMapper patArchiveMapper;
    /**
     * æŸ¥è¯¢ç»¼åˆé—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰
@@ -28,8 +49,7 @@
     * @return ç»¼åˆé—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰
     */
    @Override
    public SvyTask selectSvyTaskByTaskid(Long taskid)
    {
    public SvyTask selectSvyTaskByTaskid(Long taskid) {
        return svyTaskMapper.selectSvyTaskByTaskid(taskid);
    }
@@ -40,8 +60,7 @@
     * @return ç»¼åˆé—®å·ä»»åŠ¡ï¼ˆä»»åŠ¡ï¼‰
     */
    @Override
    public List<SvyTask> selectSvyTaskList(SvyTask svyTask)
    {
    public List<SvyTask> selectSvyTaskList(SvyTask svyTask) {
        return svyTaskMapper.selectSvyTaskList(svyTask);
    }
@@ -52,8 +71,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int insertSvyTask(SvyTask svyTask)
    {
    public int insertSvyTask(SvyTask svyTask) {
        svyTask.setCreateTime(DateUtils.getNowDate());
        return svyTaskMapper.insertSvyTask(svyTask);
    }
@@ -65,8 +83,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int updateSvyTask(SvyTask svyTask)
    {
    public int updateSvyTask(SvyTask svyTask) {
        svyTask.setUpdateTime(DateUtils.getNowDate());
        return svyTaskMapper.updateSvyTask(svyTask);
    }
@@ -78,8 +95,7 @@
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyTaskByTaskids(Long[] taskids)
    {
    public int deleteSvyTaskByTaskids(Long[] taskids) {
        return svyTaskMapper.deleteSvyTaskByTaskids(taskids);
    }
@@ -90,8 +106,73 @@
     * @return ç»“æžœ
     */
    @Override
    public int deleteSvyTaskByTaskid(Long taskid)
    {
    public int deleteSvyTaskByTaskid(Long taskid) {
        return svyTaskMapper.deleteSvyTaskByTaskid(taskid);
    }
    @Override
    public List<SvyLibTemplateScriptVO> getScriptInfoByCondition(Long taskid, Long patid) {
        //通过任务ID获取模板ID
        SvyTask svyTask = selectSvyTaskByTaskid(taskid);
        //通过模板ID获取问题信息
        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
        svyLibTemplateScript.setSvyid(Long.valueOf(svyTask.getTemplateid()));
        svyLibTemplateScript.setDelFlag("0");
        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
            log.info("ivrLibaTemplateScripts为空了,请尽快联系管理员处理");
            return new ArrayList<>();
        }
        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
        //获取患者信息
        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
        //通过患者信息和任务信息中的textParam对问题中的变量进行填充
        ObjectMapper objectMapper = new ObjectMapper();
        Map<String, Map<String, String>> ivrTaskMap = null;
        try {
            ivrTaskMap = objectMapper.readValue(svyTask.getTextParam(), Map.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        List<Map<String, String>> mapList = new ArrayList<>();
        for (Map<String, String> map : ivrTaskMap.values()) {
            mapList.add(map);
        }
        //将模板问题话术里的通配符替换
        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
                for (Map<String, String> map : mapList) {
                    for (String key : map.keySet()) {
                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
                    }
                }
                //替换患者个人信息数据
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
                svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
                //获取问题选项
                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());
                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
            }
        }
        //只要打开了页面就算成功
        SvyTaskSingle svyTaskSingle = new SvyTaskSingle();
        svyTaskSingle.setTaskid(taskid);
        svyTaskSingle.setPatid(patid);
        svyTaskSingle.setResult("success");
        svyTaskSingle.setFinishtime(new Date());
        svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
        return svyLibTemplateScriptVOS;
    }
}
smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
@@ -136,6 +136,7 @@
                    svyTaskSingle.setAddr(patTaskRelevance.getAddr());
                    svyTaskSingle.setPatid(patTaskRelevance.getPatid());
                    svyTaskSingle.setSendstate(1L);
                    svyTaskSingle.setHospType(patTaskRelevance.getHospType());
                    svyTaskSingle.setCreateTime(DateUtils.getNowDate());
                    svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
                    integer = svyTaskSingle.getId().intValue();
@@ -162,6 +163,7 @@
                    svyTaskSingle.setPhone(patTaskRelevance.getPhone());
                    svyTaskSingle.setAddr(patTaskRelevance.getAddr());
                    svyTaskSingle.setPatid(patTaskRelevance.getPatid());
                    svyTaskSingle.setHospType(patTaskRelevance.getHospType());
                    svyTaskSingle.setCreateTime(DateUtils.getNowDate());
                    svyTaskSingle.setTextParam(new Gson().toJson(svyTaskVO.getTextParamMap()));
                    if (patTaskRelevance.getIsoperation() != null) {
@@ -222,6 +224,7 @@
                patTaskRelevance.setAddr(svyTaskSingle1.getAddr());
                patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
                patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
                patTaskRelevance.setSendState(svyTaskSingle1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
            }
            if (svyTaskSingle1.getHospType().equals("2")) {
@@ -235,6 +238,7 @@
                patTaskRelevance.setBedNo(svyTaskSingle1.getBedno());
                patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
                patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
                patTaskRelevance.setSendState(svyTaskSingle1.getSendstate());
                patTaskRelevances.add(patTaskRelevance);
            }
        }
smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateServiceImpl.java
@@ -135,38 +135,15 @@
        if (CollectionUtils.isNotEmpty(svyTaskTemplateVO.getSvyTaskTemplateScriptVOS())) {
            log.error("ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()是否有数据哈:{}", svyTaskTemplateVO.getSvyTaskTemplateScriptVOS());
            for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateVO.getSvyTaskTemplateScriptVOS()) {
                if (svyTaskTemplateScriptVO.getIsoperation() != null && svyTaskTemplateScriptVO.getIsoperation() == 1 || svyTaskTemplateScriptVO.getIsoperation() == null && svyTaskTemplateScriptVO.getIsoperation() == 1) {
                    //新增
                    SvyTaskTemplateScript svyTaskTemplateScript = DtoConversionUtils.sourceToTarget(svyTaskTemplateScriptVO, SvyTaskTemplateScript.class);
                    svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
                    svyTaskTemplateScript.setCreateTime(new Date());
                    svyTaskTemplateScriptMapper.insertSvyTaskTemplateScript(svyTaskTemplateScript);
                    svyTaskTemplateScript.setIsoperation(1);
                    //对选项目进行处理
                    dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId());
                } else if (svyTaskTemplateScriptVO.getIsoperation() != null && svyTaskTemplateScriptVO.getIsoperation() == 2) {
                    //修改
                    SvyTaskTemplateScript svyTaskTemplateScript = DtoConversionUtils.sourceToTarget(svyTaskTemplateScriptVO, SvyTaskTemplateScript.class);
                    svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
                    svyTaskTemplateScript.setUpdateTime(new Date());
                    svyTaskTemplateScriptMapper.updateSvyTaskTemplateScript(svyTaskTemplateScript);
                    svyTaskTemplateScript.setIsoperation(2);
                    //对选项目进行处理
                    dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId());
                } else if (svyTaskTemplateScriptVO.getIsoperation() != null && svyTaskTemplateScriptVO.getIsoperation() == 3) {
                    //删除
                    if (svyTaskTemplateScriptVO.getID() == null) {
                        log.info("删除失败,模板话术id为空");
                    } else {
                        svyTaskTemplateScriptVO.setUpdateTime(new Date());
                        svyTaskTemplateScriptMapper.deleteSvyTaskTemplateScriptByID(svyTaskTemplateScriptVO.getID());
                    }
                if (svyTaskTemplateScriptVO.getIsoperation() != null) {
                    SvyTaskTemplateScript svyTaskTemplateScript = scriptHandle(svyTaskTemplate, svyTaskTemplateScriptVO, svyTaskTemplateScriptVO.getIsoperation());
                    dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId(), svyTaskTemplateScriptVO.getIsoperation());
                } else {
                    SvyTaskTemplateScript svyTaskTemplateScript = scriptHandle(svyTaskTemplate, svyTaskTemplateScriptVO, svyTaskTemplateVO.getIsoperation());
                    dealOption(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions(), svyTaskTemplateScript, svyTaskTemplate.getId(), svyTaskTemplateVO.getIsoperation());
                }
            }
        }
        return i;
    }
@@ -229,12 +206,44 @@
    }
    private void dealOption(List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions, SvyTaskTemplateScript svyTaskTemplateScript, Long tmpID) {
    private SvyTaskTemplateScript scriptHandle(SvyTaskTemplate svyTaskTemplate, SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Integer isoperation) {
        SvyTaskTemplateScript svyTaskTemplateScript = DtoConversionUtils.sourceToTarget(svyTaskTemplateScriptVO, SvyTaskTemplateScript.class);
        if (isoperation == 1) {
            //新增
            svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
            svyTaskTemplateScript.setCreateTime(new Date());
            svyTaskTemplateScriptMapper.insertSvyTaskTemplateScript(svyTaskTemplateScript);
            svyTaskTemplateScript.setIsoperation(1);
        } else if (isoperation == 2) {
            //修改
            svyTaskTemplateScript.setTemplateID(svyTaskTemplate.getId());
            svyTaskTemplateScript.setUpdateTime(new Date());
            svyTaskTemplateScriptMapper.updateSvyTaskTemplateScript(svyTaskTemplateScript);
            svyTaskTemplateScript.setIsoperation(2);
        } else if (isoperation == 3) {
            if (svyTaskTemplateScriptVO.getID() == null) {
                log.info("删除失败,模板话术id为空");
            } else {
                svyTaskTemplateScriptVO.setUpdateTime(new Date());
                svyTaskTemplateScriptMapper.deleteSvyTaskTemplateScriptByID(svyTaskTemplateScriptVO.getID());
            }
        }
        return svyTaskTemplateScript;
    }
    private void dealOption(List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions, SvyTaskTemplateScript svyTaskTemplateScript, Long tmpID, Integer isoperation) {
        log.info("svyTaskTemplateScript的值为:{}", svyTaskTemplateScript);
        Integer lsIsoperation = isoperation;
        //对模板指标选项进行处理
        if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoptions)) {
            for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateTargetoptions) {
                if (svyTaskTemplateTargetoption.getIsoperation() != null && svyTaskTemplateTargetoption.getIsoperation() == 1 || svyTaskTemplateTargetoption.getIsoperation() == null && svyTaskTemplateTargetoption.getIsoperation() == 1) {
                // å¦‚果选项本身的operation不为空,就用自己的;不然,就用传过来的
                if (svyTaskTemplateTargetoption.getIsoperation() != null) {
                    isoperation = svyTaskTemplateTargetoption.getIsoperation();
                } else {
                    isoperation = lsIsoperation;
                }
                if (isoperation == 1) {
                    //新增
                    svyTaskTemplateTargetoption.setTemplateID(tmpID);
                    svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScript.getID());
@@ -243,7 +252,7 @@
                    if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getNodynamiccruxs()))
                        svyTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getNodynamiccruxs()));
                    svyTaskTemplateTargetoptionMapper.insertSvyTaskTemplateTargetoption(svyTaskTemplateTargetoption);
                } else if (svyTaskTemplateTargetoption.getIsoperation() != null && svyTaskTemplateTargetoption.getIsoperation() == 2) {
                } else if (isoperation == 2) {
                    //修改
                    svyTaskTemplateTargetoption.setTemplateID(tmpID);
                    svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScript.getID());
@@ -252,7 +261,7 @@
                    if (CollectionUtils.isNotEmpty(svyTaskTemplateTargetoption.getNodynamiccruxs()))
                        svyTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(svyTaskTemplateTargetoption.getNodynamiccruxs()));
                    svyTaskTemplateTargetoptionMapper.updateSvyTaskTemplateTargetoption(svyTaskTemplateTargetoption);
                } else if (svyTaskTemplateTargetoption.getIsoperation() != null && svyTaskTemplateTargetoption.getIsoperation() == 3) {
                } else if (isoperation == 3) {
                    //删除
                    if (svyTaskTemplateTargetoption.getId() == null) {
                        log.info("删除失败,模板指标选项id为空");
smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml
@@ -59,12 +59,14 @@
        <result property="libtemplateid" column="libtemplateid"/>
        <result property="libtemplatename" column="libtemplatename"/>
        <result property="recallcount" column="recallcount"/>
        <result property="instruction" column="instruction"/>
    </resultMap>
    <sql id="selectIvrTaskTemplateVo">
        select ID,
               taskid,
               recallcount,
               instruction,
               libtemplateid,
               libtemplatename,
               taskname,
@@ -201,6 +203,7 @@
            <if test="recallcount != null">recallcount,</if>
            <if test="libtemplateid != null ">libtemplateid,</if>
            <if test="libtemplatename != null ">libtemplatename,</if>
            <if test="instruction != null ">instruction,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="taskid != null">#{taskid},</if>
@@ -256,6 +259,7 @@
            <if test="recallcount != null">#{recallcount},</if>
            <if test="libtemplateid != null ">#{libtemplateid},</if>
            <if test="libtemplatename != null ">#{libtemplatename},</if>
            <if test="instruction != null ">#{instruction},</if>
        </trim>
    </insert>
@@ -315,6 +319,7 @@
            <if test="recallcount != null">recallcount = #{recallcount},</if>
            <if test="libtemplateid != null ">libtemplateid = #{libtemplateid},</if>
            <if test="libtemplatename != null ">libtemplatename = #{libtemplatename},</if>
            <if test="instruction != null ">instruction = #{instruction},</if>
        </trim>
        where ID = #{ID}
    </update>
smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
ÎļþÃû´Ó smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml ÐÞ¸Ä
@@ -2,9 +2,9 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smartor.mapper.IvrTaskSingleMapper">
<mapper namespace="com.smartor.mapper.ServiceSubtaskMapper">
    <resultMap type="com.smartor.domain.IvrTaskSingle" id="IvrTaskcallResult">
    <resultMap type="com.smartor.domain.ServiceSubtask" id="ServiceSubtaskResult">
        <result property="id" column="id"/>
        <result property="sendname" column="sendname"/>
        <result property="phone" column="phone"/>
@@ -56,7 +56,7 @@
        <result property="libtemplateid" column="libtemplateid"/>
    </resultMap>
    <sql id="selectIvrTaskcallVo">
    <sql id="selectServiceSubtaskVo">
        select id,
               hosp_type,
               libtemplateid,
@@ -107,11 +107,11 @@
               deptname,
               stop_state,
               diagname
        from ivr_task_single
        from service_subtask
    </sql>
    <select id="selectIvrTaskcallList" parameterType="com.smartor.domain.IvrTaskSingle" resultMap="IvrTaskcallResult">
        <include refid="selectIvrTaskcallVo"/>
    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtask" resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        <where>
            del_flag=0
            <if test="sendname != null  and sendname != ''">and sendname like concat('%', #{sendname}, '%')</if>
@@ -156,14 +156,14 @@
        order by update_time desc,id desc
    </select>
    <select id="selectIvrTaskcallById" parameterType="Long" resultMap="IvrTaskcallResult">
        <include refid="selectIvrTaskcallVo"/>
    <select id="selectServiceSubtaskById" parameterType="Long" resultMap="ServiceSubtaskResult">
        <include refid="selectServiceSubtaskVo"/>
        where id = #{id}
    </select>
    <insert id="insertIvrTaskcall" parameterType="com.smartor.domain.IvrTaskSingle" useGeneratedKeys="true"
    <insert id="insertServiceSubtask" parameterType="com.smartor.domain.ServiceSubtask" useGeneratedKeys="true"
            keyProperty="id">
        insert into ivr_task_single
        insert into service_subtask
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="sendname != null">sendname,</if>
            <if test="phone != null">phone,</if>
@@ -266,8 +266,8 @@
        </trim>
    </insert>
    <update id="updateIvrTaskcall" parameterType="com.smartor.domain.IvrTaskSingle">
        update ivr_task_single
    <update id="updateServiceSubtask" parameterType="com.smartor.domain.ServiceSubtask">
        update service_subtask
        <trim prefix="SET" suffixOverrides=",">
            <if test="sendname != null">sendname = #{sendname},</if>
            <if test="phone != null">phone = #{phone},</if>
@@ -321,8 +321,8 @@
        where id = #{id}
    </update>
    <update id="updateIvrTaskcallByCondition" parameterType="com.smartor.domain.IvrTaskSingle">
        update ivr_task_single
    <update id="updateServiceSubtaskByCondition" parameterType="com.smartor.domain.ServiceSubtask">
        update service_subtask
        <trim prefix="SET" suffixOverrides=",">
            <if test="sendname != null">sendname = #{sendname},</if>
            <if test="phone != null">phone = #{phone},</if>
@@ -376,23 +376,23 @@
        where patid = #{patid} and taskid = #{taskid}
    </update>
    <update id="deleteIvrTaskcallById" parameterType="Long">
        update ivr_task_single
    <update id="deleteServiceSubtaskById" parameterType="Long">
        update service_subtask
        <trim prefix="SET" suffixOverrides=",">
            del_flag =1
        </trim>
        where id = #{id}
    </update>
    <update id="deleteIvrTaskcallByCondition" >
        update ivr_task_single
    <update id="deleteServiceSubtaskByCondition" >
        update service_subtask
        <trim prefix="SET" suffixOverrides=",">
            del_flag =1
        </trim>
        where patid = #{patid} and taskid = #{taskid}
    </update>
    <select id="getDataByTime" resultMap="IvrTaskcallResult">
    <select id="getDataByTime" resultMap="ServiceSubtaskResult">
        select id,
               sendname,
@@ -441,7 +441,7 @@
               patid,
               deptname,
               diagname
        FROM ivr_task_single,
        FROM service_subtask,
             JSON_TABLE(send_time_slot, '$[*]' COLUMNS (
        begantime DATETIME PATH '$.begantime',
        endtime DATETIME PATH '$.endtime'
smartor/src/main/resources/mapper/smartor/ServiceSubtaskRecordMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smartor.mapper.ServiceSubtaskRecordMapper">
    <resultMap type="com.smartor.domain.ServiceSubtaskRecord" id="ServiceSubtaskRecordResult">
        <result property="id" column="id"/>
        <result property="taskid" column="taskid"/>
        <result property="uuid" column="uuid"/>
        <result property="tasktype" column="tasktype"/>
        <result property="preachform" column="preachform"/>
        <result property="recordtype" column="recordtype"/>
        <result property="startTime" column="start_time"/>
        <result property="endTime" column="end_time"/>
        <result property="result" column="result"/>
        <result property="delFlag" column="del_flag"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="isupload" column="isupload"/>
        <result property="uploadTime" column="upload_time"/>
        <result property="orgid" column="orgid"/>
        <result property="pid" column="pid"/>
        <result property="guid" column="guid"/>
    </resultMap>
    <sql id="selectServiceSubtaskRecordVo">
        select id,
               taskid,
               uuid,
               tasktype,
               preachform,
               recordtype,
               start_time,
               end_time,
               result,
               del_flag,
               update_by,
               update_time,
               create_by,
               create_time,
               isupload,
               upload_time,
               orgid,
               pid,
               guid
        from service_subtask_record
    </sql>
    <select id="selectServiceSubtaskRecordList" parameterType="com.smartor.domain.ServiceSubtaskRecord"
            resultMap="ServiceSubtaskRecordResult">
        <include refid="selectServiceSubtaskRecordVo"/>
        <where>
            <if test="taskid != null  and taskid != ''">and taskid = #{taskid}</if>
            <if test="uuid != null  and uuid != ''">and uuid = #{uuid}</if>
            <if test="tasktype != null  and tasktype != ''">and tasktype = #{tasktype}</if>
            <if test="preachform != null  and preachform != ''">and preachform = #{preachform}</if>
            <if test="recordtype != null  and recordtype != ''">and recordtype = #{recordtype}</if>
            <if test="startTime != null ">and start_time = #{startTime}</if>
            <if test="endTime != null ">and end_time = #{endTime}</if>
            <if test="result != null  and result != ''">and result = #{result}</if>
            <if test="isupload != null ">and isupload = #{isupload}</if>
            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
            <if test="pid != null ">and pid = #{pid}</if>
            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
        </where>
    </select>
    <select id="selectServiceSubtaskRecordById" parameterType="Long" resultMap="ServiceSubtaskRecordResult">
        <include refid="selectServiceSubtaskRecordVo"/>
        where id = #{id}
    </select>
    <insert id="insertServiceSubtaskRecord" parameterType="com.smartor.domain.ServiceSubtaskRecord">
        insert into service_subtask_record
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="taskid != null">taskid,</if>
            <if test="uuid != null">uuid,</if>
            <if test="tasktype != null">tasktype,</if>
            <if test="preachform != null">preachform,</if>
            <if test="recordtype != null">recordtype,</if>
            <if test="startTime != null">start_time,</if>
            <if test="endTime != null">end_time,</if>
            <if test="result != null">result,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="isupload != null">isupload,</if>
            <if test="uploadTime != null">upload_time,</if>
            <if test="orgid != null">orgid,</if>
            <if test="pid != null">pid,</if>
            <if test="guid != null">guid,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="taskid != null">#{taskid},</if>
            <if test="uuid != null">#{uuid},</if>
            <if test="tasktype != null">#{tasktype},</if>
            <if test="preachform != null">#{preachform},</if>
            <if test="recordtype != null">#{recordtype},</if>
            <if test="startTime != null">#{startTime},</if>
            <if test="endTime != null">#{endTime},</if>
            <if test="result != null">#{result},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="isupload != null">#{isupload},</if>
            <if test="uploadTime != null">#{uploadTime},</if>
            <if test="orgid != null">#{orgid},</if>
            <if test="pid != null">#{pid},</if>
            <if test="guid != null">#{guid},</if>
        </trim>
    </insert>
    <update id="updateServiceSubtaskRecord" parameterType="com.smartor.domain.ServiceSubtaskRecord">
        update service_subtask_record
        <trim prefix="SET" suffixOverrides=",">
            <if test="taskid != null">taskid = #{taskid},</if>
            <if test="uuid != null">uuid = #{uuid},</if>
            <if test="tasktype != null">tasktype = #{tasktype},</if>
            <if test="preachform != null">preachform = #{preachform},</if>
            <if test="recordtype != null">recordtype = #{recordtype},</if>
            <if test="startTime != null">start_time = #{startTime},</if>
            <if test="endTime != null">end_time = #{endTime},</if>
            <if test="result != null">result = #{result},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="isupload != null">isupload = #{isupload},</if>
            <if test="uploadTime != null">upload_time = #{uploadTime},</if>
            <if test="orgid != null">orgid = #{orgid},</if>
            <if test="pid != null">pid = #{pid},</if>
            <if test="guid != null">guid = #{guid},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteServiceSubtaskRecordById" parameterType="Long">
        delete
        from service_subtask_record
        where id = #{id}
    </delete>
    <delete id="deleteServiceSubtaskRecordByIds" parameterType="String">
        delete from service_subtask_record where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
ÎļþÃû´Ó smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml ÐÞ¸Ä
@@ -2,9 +2,9 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smartor.mapper.IvrTaskMapper">
<mapper namespace="com.smartor.mapper.ServiceTaskMapper">
    <resultMap type="com.smartor.domain.IvrTask" id="IvrTaskResult">
    <resultMap type="com.smartor.domain.ServiceTask" id="ServiceTaskResult">
        <result property="taskid" column="taskid"/>
        <result property="taskName" column="task_name"/>
        <result property="templateid" column="templateid"/>
@@ -46,7 +46,7 @@
        <result property="textParam" column="text_param"/>
    </resultMap>
    <sql id="selectIvrTaskVo">
    <sql id="selectServiceTaskVo">
        select taskid,
               task_name,
               show_date,
@@ -86,11 +86,11 @@
               send_state,
               send_time_slot,
               orgid
        from ivr_task
        from service_task
    </sql>
    <select id="selectIvrTaskList" parameterType="com.smartor.domain.IvrTask" resultMap="IvrTaskResult">
        <include refid="selectIvrTaskVo"/>
    <select id="selectServiceTaskList" parameterType="com.smartor.domain.ServiceTask" resultMap="ServiceTaskResult">
        <include refid="selectServiceTaskVo"/>
        <where>
            <if test="taskName != null  and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
            <if test="sendTimeSlot != null  and sendTimeSlot != ''">and send_time_slot like concat('%', #{sendTimeSlot},
@@ -123,14 +123,14 @@
        order by update_time desc,taskid desc
    </select>
    <select id="selectIvrTaskByTaskid" parameterType="Long" resultMap="IvrTaskResult">
        <include refid="selectIvrTaskVo"/>
    <select id="selectServiceTaskByTaskid" parameterType="Long" resultMap="ServiceTaskResult">
        <include refid="selectServiceTaskVo"/>
        where taskid = #{taskid}
    </select>
    <insert id="insertIvrTask" parameterType="com.smartor.domain.IvrTask" useGeneratedKeys="true"
    <insert id="insertServiceTask" parameterType="com.smartor.domain.ServiceTask" useGeneratedKeys="true"
            keyProperty="taskid">
        insert into ivr_task
        insert into service_task
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="taskName != null">task_name,</if>
            <if test="templateid != null">templateid,</if>
@@ -214,8 +214,8 @@
        </trim>
    </insert>
    <update id="updateIvrTask" parameterType="com.smartor.domain.IvrTask">
        update ivr_task
    <update id="updateServiceTask" parameterType="com.smartor.domain.ServiceTask">
        update service_task
        <trim prefix="SET" suffixOverrides=",">
            <if test="taskName != null">task_name = #{taskName},</if>
            <if test="templateid != null">templateid = #{templateid},</if>
@@ -259,16 +259,16 @@
        where taskid = #{taskid}
    </update>
    <update id="deleteIvrTaskByTaskid" parameterType="Long">
        update ivr_task
    <update id="deleteServiceTaskByTaskid" parameterType="Long">
        update service_task
        <trim prefix="SET" suffixOverrides=",">
            del_flag =1
        </trim>
        where taskid = #{taskid}
    </update>
    <update id="deleteIvrTaskByTaskids" parameterType="String">
        update ivr_task
    <update id="deleteServiceTaskByTaskids" parameterType="String">
        update service_task
        <trim prefix="SET" suffixOverrides=",">
            del_flag =1
        </trim>
smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml
@@ -9,8 +9,8 @@
        <result property="oldid" column="oldid"/>
        <result property="svyid" column="svyid"/>
        <result property="scriptType" column="script_type"/>
        <result property="scriptCode" column="script_code"/>
        <result property="script" column="script"/>
        <result property="seqno" column="seqno"/>
        <result property="scriptDesc" column="script_desc"/>
        <result property="tag" column="tag"/>
        <result property="sort" column="sort"/>
        <result property="ismandatory" column="ismandatory"/>
@@ -37,7 +37,7 @@
        <result property="scoretype" column="scoretype"/>
        <result property="score" column="score"/>
        <result property="scriptPicture" column="script_picture"/>
        <result property="topic" column="topic"/>
        <result property="scriptTopic" column="script_topic"/>
    </resultMap>
    <sql id="selectSvyLibTemplateScriptVo">
@@ -45,8 +45,8 @@
               oldid,
               svyid,
               script_type,
               script_code,
               script,
               seqno,
               script_desc,
               tag,
               sort,
               ismandatory,
@@ -66,7 +66,7 @@
               script_content,
               suitway,
               script_picture,
               topic,
               script_topic,
               isavailable, language, otherdata, value_type, reply, scoretype, score
        from svy_lib_template_script
    </sql>
@@ -79,8 +79,8 @@
            <if test="oldid != null ">and oldid = #{oldid}</if>
            <if test="svyid != null ">and svyid = #{svyid}</if>
            <if test="scriptType != null  and scriptType != ''">and script_type = #{scriptType}</if>
            <if test="scriptCode != null  and scriptCode != ''">and script_code = #{scriptCode}</if>
            <if test="script != null  and script != ''">and script = #{script}</if>
            <if test="seqno != null  and seqno != ''">and seqno = #{seqno}</if>
            <if test="scriptDesc != null  and scriptDesc != ''">and script_desc = #{scriptDesc}</if>
            <if test="tag != null  and tag != ''">and tag = #{tag}</if>
            <if test="sort != null ">and sort = #{sort}</if>
            <if test="ismandatory != null  and ismandatory != ''">and ismandatory = #{ismandatory}</if>
@@ -101,7 +101,7 @@
            <if test="reply != null  and reply != ''">and reply = #{reply}</if>
            <if test="scoretype != null  and scoretype != ''">and scoretype = #{scoretype}</if>
            <if test="score != null  and score != ''">and score = #{score}</if>
            <if test="topic != null  and topic != ''">and topic = #{topic}</if>
            <if test="scriptTopic != null  and scriptTopic != ''">and script_topic = #{scriptTopic}</if>
        </where>
    </select>
@@ -117,8 +117,8 @@
            <if test="oldid != null">oldid,</if>
            <if test="svyid != null">svyid,</if>
            <if test="scriptType != null">script_type,</if>
            <if test="scriptCode != null">script_code,</if>
            <if test="script != null">script,</if>
            <if test="seqno != null">seqno,</if>
            <if test="scriptDesc != null">script_desc,</if>
            <if test="tag != null">tag,</if>
            <if test="sort != null">sort,</if>
            <if test="ismandatory != null">ismandatory,</if>
@@ -145,14 +145,14 @@
            <if test="scoretype != null">scoretype,</if>
            <if test="score != null">score,</if>
            <if test="scriptPicture != null">script_picture,</if>
            <if test="topic != null">topic,</if>
            <if test="scriptTopic != null">script_topic,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="oldid != null">#{oldid},</if>
            <if test="svyid != null">#{svyid},</if>
            <if test="scriptType != null">#{scriptType},</if>
            <if test="scriptCode != null">#{scriptCode},</if>
            <if test="script != null">#{script},</if>
            <if test="seqno != null">#{seqno},</if>
            <if test="scriptDesc != null">#{scriptDesc},</if>
            <if test="tag != null">#{tag},</if>
            <if test="sort != null">#{sort},</if>
            <if test="ismandatory != null">#{ismandatory},</if>
@@ -179,7 +179,7 @@
            <if test="scoretype != null">#{scoretype},</if>
            <if test="score != null">#{score},</if>
            <if test="scriptPicture != null">#{scriptPicture},</if>
            <if test="topic != null">#{topic},</if>
            <if test="scriptTopic != null">#{scriptTopic},</if>
        </trim>
    </insert>
@@ -189,8 +189,8 @@
            <if test="oldid != null">oldid = #{oldid},</if>
            <if test="svyid != null">svyid = #{svyid},</if>
            <if test="scriptType != null">script_type = #{scriptType},</if>
            <if test="scriptCode != null">script_code = #{scriptCode},</if>
            <if test="script != null">script = #{script},</if>
            <if test="seqno != null">seqno = #{seqno},</if>
            <if test="scriptDesc != null">script_desc = #{scriptDesc},</if>
            <if test="tag != null">tag = #{tag},</if>
            <if test="sort != null">sort = #{sort},</if>
            <if test="ismandatory != null">ismandatory = #{ismandatory},</if>
@@ -217,7 +217,7 @@
            <if test="scoretype != null">scoretype = #{scoretype},</if>
            <if test="score != null">score = #{score},</if>
            <if test="scriptPicture != null">script_picture = #{scriptPicture},</if>
            <if test="topic != null">topic = #{topic},</if>
            <if test="scriptTopic != null">script_topic = #{scriptTopic},</if>
        </trim>
        where id = #{id}
    </update>
smartor/src/main/resources/mapper/smartor/SvyTaskAnswerMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.smartor.mapper.SvyTaskAnswerMapper">
    <resultMap type="com.smartor.domain.SvyTaskAnswer" id="SvyTaskAnswerResult">
        <result property="id" column="id"/>
        <result property="taskid" column="taskid"/>
        <result property="singleid" column="singleid"/>
        <result property="scriptid" column="scriptid"/>
        <result property="scriptType" column="script_type"/>
        <result property="score" column="score"/>
        <result property="answer" column="answer"/>
        <result property="comment" column="comment"/>
        <result property="istrack" column="istrack"/>
        <result property="isabnormal" column="isabnormal"/>
        <result property="delFlag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="isupload" column="isupload"/>
        <result property="uploadTime" column="upload_time"/>
        <result property="pid" column="pid"/>
        <result property="guid" column="guid"/>
    </resultMap>
    <sql id="selectSvyTaskAnswerVo">
        select id,
               taskid,
               singleid,
               scriptid,
               script_type,
               score,
               answer,
               comment,
               istrack,
               isabnormal,
               del_flag,
               create_by,
               create_time,
               update_by,
               update_time,
               isupload,
               upload_time,
               pid,
               guid
        from svy_task_answer
    </sql>
    <select id="selectSvyTaskAnswerList" parameterType="com.smartor.domain.SvyTaskAnswer"
            resultMap="SvyTaskAnswerResult">
        <include refid="selectSvyTaskAnswerVo"/>
        <where>
            <if test="taskid != null ">and taskid = #{taskid}</if>
            <if test="singleid != null ">and singleid = #{singleid}</if>
            <if test="scriptid != null ">and scriptid = #{scriptid}</if>
            <if test="scriptType != null ">and script_type = #{scriptType}</if>
            <if test="score != null  and score != ''">and score = #{score}</if>
            <if test="answer != null  and answer != ''">and answer = #{answer}</if>
            <if test="comment != null  and comment != ''">and comment = #{comment}</if>
            <if test="istrack != null  and istrack != ''">and istrack = #{istrack}</if>
            <if test="isabnormal != null  and isabnormal != ''">and isabnormal = #{isabnormal}</if>
            <if test="isupload != null ">and isupload = #{isupload}</if>
            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
            <if test="pid != null  and pid != ''">and pid = #{pid}</if>
            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
        </where>
    </select>
    <select id="selectSvyTaskAnswerById" parameterType="Long" resultMap="SvyTaskAnswerResult">
        <include refid="selectSvyTaskAnswerVo"/>
        where id = #{id}
    </select>
    <insert id="insertSvyTaskAnswer" parameterType="com.smartor.domain.SvyTaskAnswer">
        insert into svy_task_answer
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">id,</if>
            <if test="taskid != null">taskid,</if>
            <if test="singleid != null">singleid,</if>
            <if test="scriptid != null">scriptid,</if>
            <if test="scriptType != null">script_type,</if>
            <if test="score != null">score,</if>
            <if test="answer != null">answer,</if>
            <if test="comment != null">comment,</if>
            <if test="istrack != null">istrack,</if>
            <if test="isabnormal != null">isabnormal,</if>
            <if test="delFlag != null">del_flag,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="isupload != null">isupload,</if>
            <if test="uploadTime != null">upload_time,</if>
            <if test="pid != null">pid,</if>
            <if test="guid != null">guid,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id},</if>
            <if test="taskid != null">#{taskid},</if>
            <if test="singleid != null">#{singleid},</if>
            <if test="scriptid != null">#{scriptid},</if>
            <if test="scriptType != null">#{scriptType},</if>
            <if test="score != null">#{score},</if>
            <if test="answer != null">#{answer},</if>
            <if test="comment != null">#{comment},</if>
            <if test="istrack != null">#{istrack},</if>
            <if test="isabnormal != null">#{isabnormal},</if>
            <if test="delFlag != null">#{delFlag},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="isupload != null">#{isupload},</if>
            <if test="uploadTime != null">#{uploadTime},</if>
            <if test="pid != null">#{pid},</if>
            <if test="guid != null">#{guid},</if>
        </trim>
    </insert>
    <update id="updateSvyTaskAnswer" parameterType="com.smartor.domain.SvyTaskAnswer">
        update svy_task_answer
        <trim prefix="SET" suffixOverrides=",">
            <if test="taskid != null">taskid = #{taskid},</if>
            <if test="singleid != null">singleid = #{singleid},</if>
            <if test="scriptid != null">scriptid = #{scriptid},</if>
            <if test="scriptType != null">script_type = #{scriptType},</if>
            <if test="score != null">score = #{score},</if>
            <if test="answer != null">answer = #{answer},</if>
            <if test="comment != null">comment = #{comment},</if>
            <if test="istrack != null">istrack = #{istrack},</if>
            <if test="isabnormal != null">isabnormal = #{isabnormal},</if>
            <if test="delFlag != null">del_flag = #{delFlag},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="isupload != null">isupload = #{isupload},</if>
            <if test="uploadTime != null">upload_time = #{uploadTime},</if>
            <if test="pid != null">pid = #{pid},</if>
            <if test="guid != null">guid = #{guid},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteSvyTaskAnswerById" parameterType="Long">
        delete
        from svy_task_answer
        where id = #{id}
    </delete>
    <delete id="deleteSvyTaskAnswerByIds" parameterType="String">
        delete from svy_task_answer where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
smartor/src/main/resources/mapper/smartor/SvyTaskTemplateMapper.xml
@@ -38,11 +38,17 @@
        <result property="valueType" column="value_type"/>
        <result property="reply" column="reply"/>
        <result property="taskid" column="taskid"/>
        <result property="prologue" column="prologue"/>
        <result property="instruction" column="instruction"/>
        <result property="conclusion" column="conclusion"/>
    </resultMap>
    <sql id="selectSvyTaskTemplateVo">
        select id,
               templateid,
               prologue,
               instruction,
               conclusion,
               categoryid,
               svycode,
               svyname,
@@ -154,6 +160,9 @@
            <if test="valueType != null">value_type,</if>
            <if test="reply != null">reply,</if>
            <if test="taskid != null">taskid,</if>
            <if test="prologue != null">prologue,</if>
            <if test="instruction != null">instruction,</if>
            <if test="conclusion != null">conclusion,</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="templateid != null">#{templateid},</if>
@@ -188,6 +197,9 @@
            <if test="valueType != null">#{valueType},</if>
            <if test="reply != null">#{reply},</if>
            <if test="taskid != null">#{taskid},</if>
            <if test="prologue != null">#{prologue},</if>
            <if test="instruction != null">#{instruction},</if>
            <if test="conclusion != null">#{conclusion},</if>
        </trim>
    </insert>
@@ -226,6 +238,9 @@
            <if test="valueType != null">value_type = #{valueType},</if>
            <if test="reply != null">reply = #{reply},</if>
            <if test="taskid != null">taskid = #{taskid},</if>
            <if test="prologue != null">prologue = #{prologue},</if>
            <if test="instruction != null">instruction = #{instruction},</if>
            <if test="conclusion != null">conclusion = #{conclusion},</if>
        </trim>
        where id = #{id}
    </update>