From 500130efe30180fe635ba4482e097e848d37c7e3 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 28 五月 2024 09:42:39 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateScriptServiceImpl.java                   |   90 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml                                    |  100 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java                    |  141 
 smartor/src/main/java/com/smartor/service/impl/AIRobotPhoneCallBackServiceImpl.java                    |   68 
 smartor/src/main/java/com/smartor/domain/IvrTaskcallMQ.java                                            |   16 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java                              |  239 ++
 smartor/src/main/java/com/smartor/domain/robot/RobotData.java                                          |   19 
 smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java                             |   45 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java              |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java                      |   39 
 ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java                                            |  158 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml                              |   39 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java                         |  265 ++
 smartor/src/main/java/com/smartor/domain/IvrTask.java                                                  |   97 
 smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateTargetoptionMapper.java                        |   63 
 smartor/src/main/java/com/smartor/config/PhoneUtils.java                                               |    2 
 smartor/src/main/java/com/smartor/domain/robot/RobotDataCustomVar.java                                 |   19 
 smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java                                         |   18 
 smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml                                    |  334 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java |   90 
 smartor/src/main/java/com/smartor/config/RobotPhoneUtils.java                                          |  136 +
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java                                    |  268 ++
 smartor/src/main/java/com/smartor/domain/robot/back/RobotAIDialogBack.java                             |  104 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java                                  |  282 ++
 smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateMapper.java                                    |   63 
 smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java                                          |   46 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java                                  |   48 
 smartor/src/main/java/com/smartor/domain/QuestionMessage.java                                          |    4 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml                        |   14 
 smartor/src/main/java/com/smartor/config/RabbitMqCallPhoneConfig.java                                  |    2 
 smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java                                   |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateTargetoptionController.java  |   96 
 smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml                                         |  116 
 smartor/src/main/java/com/smartor/domain/IvrTaskVO.java                                                |   26 
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java                           |    2 
 smartor/src/main/java/com/smartor/domain/SendTaskVO.java                                               |   32 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java                                        |  168 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateController.java              |  107 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java                              |   26 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java                                        |  399 +++
 smartor/src/main/java/com/smartor/service/IIvrTaskTemplateScriptService.java                           |   62 
 smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java                                            |   84 
 smartor/src/main/java/com/smartor/service/IIvrTaskTemplateService.java                                 |   76 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java                                          |  162 
 smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml                              |  236 ++
 smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java                                  |   18 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java                           |  211 +
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java                                    |   48 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateTargetoptionServiceImpl.java             |   97 
 smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml                        |  216 +
 smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml                                      |   77 
 smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml                                            |   70 
 smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateScriptMapper.java                              |   63 
 smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml                                  |  225 +
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java                                          |  382 +++
 smartor/src/main/java/com/smartor/domain/robot/RobotDataConfig.java                                    |   44 
 smartor/src/main/java/com/smartor/domain/robot/back/RobotCallBack.java                                 |   43 
 smartor/src/main/java/com/smartor/service/IIvrTaskTemplateTargetoptionService.java                     |   62 
 ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java                                 |   10 
 smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml                                  |  193 
 /dev/null                                                                                              |  225 -
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java                |   13 
 smartor/src/main/java/com/smartor/domain/robot/back/RobotcdrInfoBack.java                              |   69 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java                         |    3 
 ruoyi-admin/src/main/resources/application-druid.yml                                                   |   23 
 smartor/src/main/java/com/smartor/domain/robot/RobotScritpTemplateVO.java                              |  149 +
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java                                |   86 
 smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java                                  |   18 
 smartor/src/main/java/com/smartor/domain/robot/RobotIdlenumVO.java                                     |   67 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateScriptController.java        |  104 
 70 files changed, 5,598 insertions(+), 1,332 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java
index db62ae9..61396f7 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java
@@ -4,15 +4,17 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.rabbitmq.client.Channel;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.enums.ServiceFromEnum;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.web.task.PhoneTask;
 import com.smartor.common.SendService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.config.RabbitMqCallPhoneConfig;
+import com.smartor.config.RobotPhoneUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.IvrTaskMapper;
 import com.smartor.mapper.IvrTaskSingleMapper;
-import com.smartor.service.IIvrLibaTemplateService;
+import com.smartor.service.IIvrTaskTemplateService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -20,6 +22,7 @@
 import org.springframework.amqp.rabbit.connection.ConnectionFactory;
 import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
 
@@ -32,8 +35,10 @@
 @Component//鐩戝惉姝ら槦鍒�
 public class RabbitMqReceiver {
 
+    @Value("${phonePath}")
+    private String phonePath;
 
-    private static IIvrLibaTemplateService ivrLibaTemplateService;
+    private static IIvrTaskTemplateService ivrTaskTemplateService;
 
     private static IvrTaskSingleMapper ivrTaskcallMapper;
 
@@ -45,13 +50,19 @@
 
     private static RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig;
 
+    private static RobotPhoneUtils robotPhoneUtils;
+
     // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
     private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
 
+    @Autowired
+    public void setIIvrTaskTemplateService(IIvrTaskTemplateService ivrTaskTemplateService) {
+        RabbitMqReceiver.ivrTaskTemplateService = ivrTaskTemplateService;
+    }
 
     @Autowired
-    public void setIIvrLibaTemplateService(IIvrLibaTemplateService ivrLibaTemplateService) {
-        RabbitMqReceiver.ivrLibaTemplateService = ivrLibaTemplateService;
+    public void setRobotPhoneUtilsService(RobotPhoneUtils robotPhoneUtils) {
+        RabbitMqReceiver.robotPhoneUtils = robotPhoneUtils;
     }
 
     @Autowired
@@ -80,11 +91,12 @@
     }
 
     /**
-     * 鐢佃瘽闅忚
+     * 浠诲姟闅忚
      * concurrency = "50"  骞跺彂鏁颁负50
      */
-    @RabbitListener(queues = "phone_queue", concurrency = "50")
+    @RabbitListener(queues = "task_queue", concurrency = "50")
     public void phoneVisit(String content, Message message, Channel channel) throws IOException {
+
         try {
             IvrTaskcallMQ ivrTaskcallMQ = null;
 
@@ -98,32 +110,53 @@
             } catch (JsonProcessingException e) {
                 e.printStackTrace();
             }
-            //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂
-            IvrLibaTemplateVO ivrLibaTemplateVO = new IvrLibaTemplateVO();
-            ivrLibaTemplateVO.setID(Long.valueOf(ivrTaskcallMQ.getTemplateid()));
-            IvrLibaTemplateVO ivrLibaTemplateVO1 = ivrLibaTemplateService.selectInfoByCondition(ivrLibaTemplateVO);
-
-            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-            IvrTaskSingle ivrTaskcall = new IvrTaskSingle();
-            ivrTaskcall.setTaskid(ivrTaskcallMQ.getTaskid());
-            List<IvrTaskSingle> ivrTaskcalls = ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall);
-
-            for (IvrTaskSingle ivrTaskcall1 : ivrTaskcalls) {
-                IvrTask ivrTask = ivrTaskMapper.selectIvrTaskByTaskid(ivrTaskcall1.getTaskid());
-                if (StringUtils.isNotEmpty(ivrTask.getSendState()) && ivrTask.getSendState().equals(3) || StringUtils.isNotEmpty(ivrTask.getSendState()) && ivrTask.getSendState().equals(4)) {
-                    //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
-                    break;
-                }
-//                //閫氳繃澶氱嚎绋嬬殑鏂瑰紡鍘绘墦鐢佃瘽
-                executorService.submit(new PhoneTask(ivrTaskcall1, ivrLibaTemplateVO1, redisCache, rabbitMqCallPhoneConfig, message, sendService));
+            //鍒ゆ柇涓�涓媔vrTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
+            IvrTask ivrTask1 = ivrTaskMapper.selectIvrTaskByTaskid(ivrTaskcallMQ.getTaskid());
+            if (ivrTask1.getStopState() != ivrTaskcallMQ.getStopState()) {
+                //灏嗘秷鎭粠闃熷垪涓墧闄�
+                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+                return;
             }
-            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+
+            if (StringUtils.isNotEmpty(ivrTaskcallMQ.getServicefrom())) {
+                //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
+                String[] split = ivrTaskcallMQ.getServicefrom().split(",");
+                for (String serviceFrom : split) {
+                    String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
+                    //杩欓噷鍙互鑰冭檻鐢ㄧ瓥鐣ユā寮忎紭鍖栦竴涓嬶紝涓嶇劧澶毦鐪嬩簡
+                    if (descByCode.equals("鐢佃瘽")) {
+                        //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂
+                        IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO();
+                        ivrTaskTemplateVO.setID(Long.valueOf(ivrTaskcallMQ.getTemplateid()));
+                        IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
+
+                        //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
+                        IvrTaskSingle ivrTaskcall = new IvrTaskSingle();
+                        ivrTaskcall.setTaskid(ivrTaskcallMQ.getTaskid());
+                        List<IvrTaskSingle> ivrTaskcalls = ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall);
+
+                        for (IvrTaskSingle ivrTaskcall1 : ivrTaskcalls) {
+                            IvrTask ivrTask = ivrTaskMapper.selectIvrTaskByTaskid(ivrTaskcall1.getTaskid());
+                            if (StringUtils.isNotEmpty(ivrTask.getSendState()) && ivrTask.getSendState().equals(3) || StringUtils.isNotEmpty(ivrTask.getSendState()) && ivrTask.getSendState().equals(4)) {
+                                //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
+                                break;
+                            }
+                            //閫氳繃澶氱嚎绋嬬殑鏂瑰紡鍘绘墦鐢佃瘽
+                            executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, rabbitMqCallPhoneConfig, message, sendService, phonePath, robotPhoneUtils));
+                        }
+                    } else if (descByCode.equals("鍏紬鍙�")) {
+
+                    }
+                    //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
+                    channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+                }
+            }
         } catch (Exception e) {
             log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
             log.error(e.getMessage());
             channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
         }
+
     }
 
     /**
@@ -162,6 +195,7 @@
         }
     }
 
+
     @Bean
     public SimpleRabbitListenerContainerFactory jsonContainerFactory(ConnectionFactory connectionFactory) {
         SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
index d9fbf18..380915e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
@@ -8,6 +8,7 @@
 import com.smartor.domain.*;
 import com.smartor.mapper.IvrLibaExtemplatescriptMapper;
 import com.smartor.service.IIvrLibaTemplateService;
+import com.smartor.service.IIvrTaskTemplateService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -31,7 +32,7 @@
 
     private static RedisCache redisCache;
 
-    private static IIvrLibaTemplateService ivrLibaTemplateService;
+    private static IIvrTaskTemplateService ivrTaskTemplateService;
 
     private static IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
 
@@ -44,8 +45,8 @@
     }
 
     @Autowired
-    public void setTodayReaderService(IIvrLibaTemplateService ivrLibaTemplateService) {
-        ChatWebSocketHandler.ivrLibaTemplateService = ivrLibaTemplateService;
+    public void setTodayReaderService(IIvrTaskTemplateService ivrTaskTemplateService) {
+        ChatWebSocketHandler.ivrTaskTemplateService = ivrTaskTemplateService;
     }
 
     @Autowired
@@ -115,17 +116,17 @@
         if (session != null && session.isOpen()) {
             if (socketMessage.getTemplateId() != null) {
                 //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂
-                IvrLibaTemplateVO ivrLibaTemplateVO = new IvrLibaTemplateVO();
-                ivrLibaTemplateVO.setID(socketMessage.getTemplateId());
-                IvrLibaTemplateVO ivrLibaTemplateVO1 = ivrLibaTemplateService.selectInfoByCondition(ivrLibaTemplateVO);
-                redisCache.setCacheObject(userId + "ivrLibaTemplateVO1", ivrLibaTemplateVO1, 120, TimeUnit.MINUTES);
+                IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO();
+                ivrTaskTemplateVO.setID(socketMessage.getTemplateId());
+                IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
+                redisCache.setCacheObject(userId + "ivrTaskTemplateVO1", ivrTaskTemplateVO1, 120, TimeUnit.MINUTES);
                 //灏嗘煡鍑烘潵鐨勯棶棰�,鏀惧埌鍏ㄥ眬鍙橀噺涓幓
-                List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = ivrLibaTemplateVO1.getIvrLibaTemplateScriptVOList();
+                List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList = ivrTaskTemplateVO1.getIvrTaskTemplateScriptVOList();
                 //鏍规嵁搴忓彿杩涜鎺掑簭
-                Collections.sort(ivrLibaTemplateScriptVOList, Comparator.comparing(IvrLibaTemplateScriptVO::getTargetid));
+                Collections.sort(ivrTaskTemplateScriptVOList, Comparator.comparing(IvrTaskTemplateScriptVO::getTargetid));
 
                 //灏嗘煡鍑烘潵鐨勬暟鎹斁鍒皉edis涓�
-                redisCache.setCacheObject(userId + "ivrLibaTemplateScriptVOList", ivrLibaTemplateScriptVOList, 120, TimeUnit.MINUTES);
+                redisCache.setCacheObject(userId + "ivrTaskTemplateScriptVOList", ivrTaskTemplateScriptVOList, 120, TimeUnit.MINUTES);
                 //鐢ㄦ潵杩斿洖璋冩煡鐨勬�荤粨鏋�
                 redisCache.setCacheObject(userId + "backQuset", new ArrayList<>(), 120, TimeUnit.MINUTES);
                 //鐢ㄦ潵璁板綍鏃犲0鍝嶅簲娆℃暟
@@ -138,14 +139,14 @@
                 //鐢ㄦ潵杩斿洖褰撳墠闇�瑕侀棶鐨勯棶棰樹俊鎭�
                 QuestionMessage returnQues = new QuestionMessage();
 
-                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) {
-                    if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO1.getFirstQuestionNum().intValue())
+                for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOList) {
+                    if (ivrTaskTemplateScriptVO.getTargetid() == ivrTaskTemplateVO1.getFirstQuestionNum().intValue())
                         //鑾峰彇绗竴棰樼殑闂
-                        returnQues.setNowQuestion(ivrLibaTemplateScriptVO);
-//                        returnQues.setCode(ivrLibaTemplateScriptVO.getTargetid() + 1);
+                        returnQues.setNowQuestion(ivrTaskTemplateScriptVO);
+//                        returnQues.setCode(ivrTaskTemplateScriptVO.getTargetid() + 1);
                 }
 //              璁剧疆寮�鍦虹櫧
-                returnQues.setKcb(ivrLibaTemplateVO1.getRevisitBefore());
+                returnQues.setKcb(ivrTaskTemplateVO1.getRevisitBefore());
 
                 //璁板綍鍝嶅簲
                 redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
@@ -157,40 +158,40 @@
                 }
 
                 QuestionMessage questionMessage = socketMessage.getQuestionMessage();
-                List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = redisCache.getCacheObject(userId + "ivrLibaTemplateScriptVOList");
+                List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList = redisCache.getCacheObject(userId + "ivrTaskTemplateScriptVOList");
                 //鏍规嵁鍓嶇浼犲洖鐨勬潯浠讹紝鑾峰彇褰撳墠棰樼洰
-                IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = questionMessage.getNowQuestion();
-                if (ivrLibaTemplateScriptVO.getID() == null) {
+                IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = questionMessage.getNowQuestion();
+                if (ivrTaskTemplateScriptVO.getID() == null) {
                     QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
-                    ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
+                    ivrTaskTemplateScriptVO = returnQues.getNowQuestion();
                 }
                 //鑾峰彇妯℃澘淇℃伅
-                IvrLibaTemplateVO ivrLibaTemplateVO1 = redisCache.getCacheObject(userId + "ivrLibaTemplateVO1");
+                IvrTaskTemplateVO ivrTaskTemplateVO1 = redisCache.getCacheObject(userId + "ivrTaskTemplateVO1");
 
                 if (StringUtils.isEmpty(questionMessage.getContent())) {
-                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
+                    //璋冪敤ivrTaskTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
                     Integer noVoice = redisCache.getCacheObject(userId + "noVoice");
                     //瀹為檯闈欓粯娆℃暟鏄惁 绛変簬 妯℃澘涓厤缃殑娆℃暟
-                    if (noVoice == ivrLibaTemplateVO1.getNoVoiceNum().intValue()) {
+                    if (noVoice == ivrTaskTemplateVO1.getNoVoiceNum().intValue()) {
                         //鐢ㄦ潵杩斿洖璋冩煡鐨勬�荤粨鏋�
-                        List<IvrLibaTemplateScriptVO> backQuset = new ArrayList<>();
-                        backQuset.add(ivrLibaTemplateScriptVO);
+                        List<IvrTaskTemplateScriptVO> backQuset = new ArrayList<>();
+                        backQuset.add(ivrTaskTemplateScriptVO);
                         redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
 
                         //濡傛灉鍑犳閮芥病鍝嶅簲锛屽氨涓嬩竴棰橈紙闇�瑕佸厛鍒ゆ柇鏄惁鏈変笅涓�棰橈級
-                        if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateScriptVOList.size()) {
+                        if (ivrTaskTemplateScriptVO.getTargetid() == ivrTaskTemplateScriptVOList.size()) {
                             //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
                             QuestionMessage returnQues = new QuestionMessage();
 //                            returnQues.setCode(null);
-                            List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                             returnQues.setContent(JSON.toJSONString(backQusetRedis));
-                            returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
+                            returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
                             redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                             redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
 
                         } else {
                             //濡傛灉鏈変笅涓�棰橈紝灏辨牴鎹綋鍓峵eagetID+1 鑾峰彇涓嬩竴棰�
-                            QuestionMessage returnQues = getNextQuestion(ivrLibaTemplateScriptVOList, ivrLibaTemplateScriptVO);
+                            QuestionMessage returnQues = getNextQuestion(ivrTaskTemplateScriptVOList, ivrTaskTemplateScriptVO);
                             redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                             redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
                         }
@@ -206,27 +207,27 @@
                     }
                 } else {
                     //閫氳繃valueType鍒ゆ柇鏄粈涔堥鍨嬶紙鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級锛�
-                    if (ivrLibaTemplateScriptVO.getValueType() == 2 || ivrLibaTemplateScriptVO.getValueType() == 3) {
-                        ivrLibaTemplateScriptVO.setQuestionResult(questionMessage.getContent());
+                    if (ivrTaskTemplateScriptVO.getValueType() == 2 || ivrTaskTemplateScriptVO.getValueType() == 3) {
+                        ivrTaskTemplateScriptVO.setQuestionResult(questionMessage.getContent());
 
-                        List<IvrLibaTemplateScriptVO> backQusetList = redisCache.getCacheObject(userId + "backQuset");
+                        List<IvrTaskTemplateScriptVO> backQusetList = redisCache.getCacheObject(userId + "backQuset");
                         //鍖归厤瀹屾垚鍚�,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
-                        backQusetList.add(ivrLibaTemplateScriptVO);
+                        backQusetList.add(ivrTaskTemplateScriptVO);
                         redisCache.setCacheObject(userId + "backQuset", backQusetList, 120, TimeUnit.MINUTES);
                         //灏嗛潤榛樼疆涓�0
                         redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
                         //鑾峰彇涓嬩竴棰�
-                        Integer nextQuestion = ivrLibaTemplateScriptVO.getTargetid() + 1;
-                        if (nextQuestion > ivrLibaTemplateScriptVOList.size()) {
+                        Long nextQuestion = ivrTaskTemplateScriptVO.getTargetid() + 1;
+                        if (nextQuestion > ivrTaskTemplateScriptVOList.size()) {
                             //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
                             QuestionMessage returnQues = new QuestionMessage();
-                            List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                             returnQues.setContent(JSON.toJSONString(backQusetRedis));
-                            returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
+                            returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
                             redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                             redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
                         } else {
-                            for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOList) {
+                            for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOList) {
                                 if (script.getTargetid() == nextQuestion) {
                                     QuestionMessage returnQues = new QuestionMessage();
                                     returnQues.setNowQuestion(script);
@@ -235,46 +236,46 @@
                             }
                         }
 
-                    } else if (ivrLibaTemplateScriptVO.getValueType() == 1) {
+                    } else if (ivrTaskTemplateScriptVO.getValueType() == 1) {
 
                         //瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛墄
-                        for (int j = 0; j < ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().size(); j++) {
+                        for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
                             //鍖呭惈
                             Matcher matcher = null;
-                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
-                                Pattern pattern = Pattern.compile(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
+                                Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
                                 matcher = pattern.matcher(questionMessage.getContent());
                             }
                             //涓嶅寘鍚�
                             Matcher matcher2 = null;
-                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
-                                Pattern pattern2 = Pattern.compile(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
+                                Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
                                 matcher2 = pattern2.matcher(questionMessage.getContent());
                             }
-                            log.info("==============================Targetregex鐨勫�间负锛歿},   Targetregex2鐨勫�间负锛歿}", ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+                            log.info("==============================Targetregex鐨勫�间负锛歿},   Targetregex2鐨勫�间负锛歿}", ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex(), ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
 
-                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
 
                                 //璇存槑鍖归厤姝g‘浜�
-                                ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
-                                List<IvrLibaTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
+                                ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(true);
+                                List<IvrTaskTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
                                 //鍖归厤瀹屾垚鍚�,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
-                                backQuset.add(ivrLibaTemplateScriptVO);
+                                backQuset.add(ivrTaskTemplateScriptVO);
                                 redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
                                 //灏嗛潤榛樼疆涓�0
                                 redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
                                 //鑾峰彇涓嬩竴棰�
-                                Integer nextQuestion = ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
-                                if (nextQuestion > ivrLibaTemplateScriptVOList.size()) {
+                                Long nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
+                                if (nextQuestion > ivrTaskTemplateScriptVOList.size()) {
                                     //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
                                     QuestionMessage returnQues = new QuestionMessage();
-                                    List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                                    List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                                     returnQues.setContent(JSON.toJSONString(backQusetRedis));
-                                    returnQues.setJsy(ivrLibaTemplateVO1.getRevisitAfter());
+                                    returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
                                     redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                     redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
                                 } else {
-                                    for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOList) {
+                                    for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOList) {
                                         if (script.getTargetid() == nextQuestion) {
                                             QuestionMessage returnQues = new QuestionMessage();
                                             returnQues.setNowQuestion(script);
@@ -289,28 +290,28 @@
                                 Integer mateNum = redisCache.getCacheObject(userId + "mateNum");
 
                                 //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-                                if (mateNum == ivrLibaTemplateVO1.getMateNum().intValue() && j == ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().size() - 1) {
+                                if (mateNum == ivrTaskTemplateVO1.getMateNum().intValue() && j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1) {
                                     //闂簡鏈�澶ц闂鏁板悗锛岃繕鏄病鏈夊尮閰嶄笂,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
-                                    List<IvrLibaTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
-                                    backQuset.add(ivrLibaTemplateScriptVO);
+                                    List<IvrTaskTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
+                                    backQuset.add(ivrTaskTemplateScriptVO);
                                     redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
 
                                     //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-                                    if (ivrLibaTemplateScriptVO.getTargetid() < ivrLibaTemplateScriptVOList.size()) {
-                                        QuestionMessage returnQues = getNextQuestion(ivrLibaTemplateScriptVOList, ivrLibaTemplateScriptVO);
+                                    if (ivrTaskTemplateScriptVO.getTargetid() < ivrTaskTemplateScriptVOList.size()) {
+                                        QuestionMessage returnQues = getNextQuestion(ivrTaskTemplateScriptVOList, ivrTaskTemplateScriptVO);
                                         redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                         redisCache.setCacheObject(userId + "mateNum", 0, 120, TimeUnit.MINUTES);
                                     } else {
                                         QuestionMessage returnQues2 = new QuestionMessage();
 //                                    returnQues2.setCode(null);
-                                        List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                                        List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
                                         returnQues2.setQuestionList(backQusetRedis);
                                         returnQues2.setJsy("鎰熻阿鎮ㄧ殑鑰愬績鍥炵瓟锛屽啀瑙�");
                                         redisCache.setCacheObject(userId + "returnQues", returnQues2, 120, TimeUnit.MINUTES);
                                         redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
                                         break;
                                     }
-                                } else if (mateNum < ivrLibaTemplateVO1.getMateNum().intValue() && j == ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().size() - 1) {
+                                } else if (mateNum < ivrTaskTemplateVO1.getMateNum().intValue() && j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1) {
                                     //娌℃湁闂埌瑙勫畾娆℃暟
                                     mateNum = mateNum + 1;
                                     redisCache.setCacheObject(userId + "mateNum", mateNum, 120, TimeUnit.MINUTES);
@@ -319,7 +320,7 @@
                         }
                     }
                     //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-                    String extemplateID = ivrLibaTemplateVO1.getSubmoduleID();
+                    String extemplateID = ivrTaskTemplateVO1.getSubmoduleID();
                     String[] split = extemplateID.split(",");
                     List<String> list = Arrays.asList(split);
                     List<Long> list1 = new ArrayList<>();
@@ -344,13 +345,13 @@
 
                             if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
                                 QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
-                                IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
+                                IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
                                 nowQuestion.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
                                 nowQuestion.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
                                 redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
                                 if (ivrLibaExtemplatescript.getIsEnd() == 1) {
                                     //灏嗛棶棰樼疆绌�
-                                    IvrLibaTemplateScriptVO nowQuestion1 = returnQues.getNowQuestion();
+                                    IvrTaskTemplateScriptVO nowQuestion1 = returnQues.getNowQuestion();
                                     nowQuestion1.setQuestionText(null);
                                     nowQuestion1.setQuestionVoice(null);
                                     returnQues.setNowQuestion(nowQuestion1);
@@ -366,19 +367,19 @@
 
             }
             QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
-            List<IvrLibaTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
             returnQues.setQuestionList(backQusetRedis);
             session.sendMessage(new TextMessage(JSON.toJSONString(returnQues).getBytes(StandardCharsets.UTF_8)));
 
             //鏁翠釜娴佺▼鏄惁缁撴潫锛屽皢redis涓殑璇serId涓嬬殑鏁版嵁鍒犻櫎;
             Integer isOver = redisCache.getCacheObject(userId + "isOver");
             if (isOver == 1) {
-                redisCache.deleteObject(userId + "ivrLibaTemplateScriptVOList");
+                redisCache.deleteObject(userId + "ivrTaskTemplateScriptVOList");
                 redisCache.deleteObject(userId + "backQuset");
                 redisCache.deleteObject(userId + "noVoice");
                 redisCache.deleteObject(userId + "returnQues");
                 redisCache.deleteObject(userId + "isOver");
-                redisCache.deleteObject(userId + "ivrLibaTemplateVO1");
+                redisCache.deleteObject(userId + "ivrTaskTemplateVO1");
                 try {
                     //鏂紑閾炬帴
                     afterConnectionClosed(session, null);
@@ -390,12 +391,12 @@
     }
 
     //鑾峰彇涓嬩竴棰橈紙杩欎釜鏂规硶涓嶉�傚悎閫夐」涓殑nextQuestion锛�
-    private QuestionMessage getNextQuestion(List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO) {
+    private QuestionMessage getNextQuestion(List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO) {
         QuestionMessage returnQues = new QuestionMessage();
-        for (int j = 0; j < ivrLibaTemplateScriptVOList.size(); j++) {
-            if (ivrLibaTemplateScriptVOList.get(j).getTargetid() == ivrLibaTemplateScriptVO.getTargetid() + 1) {
+        for (int j = 0; j < ivrTaskTemplateScriptVOList.size(); j++) {
+            if (ivrTaskTemplateScriptVOList.get(j).getTargetid() == ivrTaskTemplateScriptVO.getTargetid() + 1) {
                 // 瀵硅鏉emplateScriptVO杩涜澶勭悊
-                returnQues.setNowQuestion(ivrLibaTemplateScriptVOList.get(j));
+                returnQues.setNowQuestion(ivrTaskTemplateScriptVOList.get(j));
             }
         }
         return returnQues;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java
new file mode 100644
index 0000000..ed5f7ec
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/AIRobot/AIRobotPhoneCallBackController.java
@@ -0,0 +1,90 @@
+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;
+
+/**
+ * 鍗曚竴浠诲姟锛堥殢璁匡級Controller
+ *
+ * @author ruoyi
+ * @date 2024-02-02
+ */
+@Slf4j
+@Api(description = "AIRobot鍥炶皟")
+@RestController
+@RequestMapping("/smartor/robot")
+public class AIRobotPhoneCallBackController extends BaseController {
+    @Autowired
+    private AIRobotPhoneCallBackService aiRobotPhoneCallBackService;
+
+    /**
+     * AIRobot鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�
+     */
+    @ApiOperation("AIRobot鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�")
+    @PostMapping("/callstatus")
+    public AjaxResult callstatus(@RequestBody RobotCallBack robotCallBack) {
+        log.error("AIRobot鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�---------{}", robotCallBack);
+        aiRobotPhoneCallBackService.callstatus(robotCallBack);
+        return success();
+    }
+
+    /**
+     * 鐢ㄦ埛 AI 浜や簰鏁版嵁杩斿洖鎺ュ彛(鍖呮嫭 n 绉嶈妭鐐圭殑杩斿洖鏁版嵁鍖�)
+     */
+    @ApiOperation("AIRobot鐢ㄦ埛 AI 浜や簰鏁版嵁杩斿洖鎺ュ彛(鍖呮嫭 n 绉嶈妭鐐圭殑杩斿洖鏁版嵁鍖�)")
+    @PostMapping("/aidialog")
+    public AjaxResult aidialog(@RequestBody RobotAIDialogBack robotAIDialogBack) {
+        log.error("鐢ㄦ埛 AI 浜や簰鏁版嵁杩斿洖鎺ュ彛(鍖呮嫭 n 绉嶈妭鐐圭殑杩斿洖鏁版嵁鍖�)-----------{}", robotAIDialogBack);
+        aiRobotPhoneCallBackService.aidialog(robotAIDialogBack);
+        return success();
+    }
+
+    /**
+     * 鎸傛満璁¤垂淇℃伅杩斿洖鏁版嵁鎺ュ彛
+     */
+    @ApiOperation("鎸傛満璁¤垂淇℃伅杩斿洖鏁版嵁鎺ュ彛")
+    @PostMapping("/cdrinfo")
+    public AjaxResult cdrinfo(@RequestBody RobotcdrInfoBack robotAIDialogBack) {
+        log.error("鎸傛満璁¤垂淇℃伅杩斿洖鏁版嵁鎺ュ彛-----------{}", robotAIDialogBack);
+        aiRobotPhoneCallBackService.cdrinfo(robotAIDialogBack);
+        return success();
+    }
+//
+//    /**
+//     * 澶栧懠鍙戣捣璇锋眰鎺ュ彛(妯℃澘鏁版嵁鎴栧姞瀵嗘ā鏉挎枃浠惰矾寰�)娴嬭瘯鐢ㄧ殑
+//     */
+//    @PostMapping("/outbound")
+//    public AjaxResult outbound(RobotScritpTemplateVO robotScritpTemplateVO) {
+//        RobotPhoneUtils robotPhoneUtils = new RobotPhoneUtils();
+//        robotPhoneUtils.outbound(new RobotScritpTemplateVO());
+//        return success();
+//    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
index 60a4739..a972bca 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.smartor;
 
 import com.alibaba.fastjson2.JSON;
+import com.github.pagehelper.util.StringUtil;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -134,8 +135,8 @@
     @ApiOperation("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢")
     @PostMapping("/selectInfoByCondition")
     public AjaxResult selectInfoByCondition(@RequestBody IvrLibaTemplateVO ivrLibaTemplateVO) {
-        if (ObjectUtils.isEmpty(ivrLibaTemplateVO)) {
-            throw new BaseException("鏌ヨ妯℃澘璇︽儏鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        if (ivrLibaTemplateVO.getID() == null) {
+            return success();
         }
         return success(ivrLibaTemplateService.selectInfoByCondition(ivrLibaTemplateVO));
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java
deleted file mode 100644
index 157d367..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-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.IvrLibaTemplateTarget;
-import com.smartor.service.IIvrLibaTemplateTargetService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-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;
-
-/**
- * 妯$増闂鎸囨爣搴揅ontroller
- *
- * @author ruoyi
- * @date 2023-12-23
- */
-@Api(description = " 妯$増闂鎸囨爣搴�")
-@RestController
-@RequestMapping("/smartor/templatetarget")
-public class IvrLibaTemplateTargetController extends BaseController {
-    @Autowired
-    private IIvrLibaTemplateTargetService ivrLibaTemplateTargetService;
-
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
-     */
-    @ApiOperation("鏌ヨ妯$増闂鎸囨爣搴撳垪琛�")
-    @PreAuthorize("@ss.hasPermi('system:target:list')")
-    @PostMapping("/list")
-    public TableDataInfo list(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        startPage();
-        List<IvrLibaTemplateTarget> list = ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭妯$増闂鎸囨爣搴撳垪琛�
-     */
-    @ApiOperation("瀵煎嚭妯$増闂鎸囨爣搴撳垪琛�")
-    @PreAuthorize("@ss.hasPermi('system:target:export')")
-    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        List<IvrLibaTemplateTarget> list = ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
-        ExcelUtil<IvrLibaTemplateTarget> util = new ExcelUtil<IvrLibaTemplateTarget>(IvrLibaTemplateTarget.class);
-        util.exportExcel(response, list, "妯$増闂鎸囨爣搴撴暟鎹�");
-    }
-
-    /**
-     * 鑾峰彇妯$増闂鎸囨爣搴撹缁嗕俊鎭�
-     */
-    @ApiOperation("鑾峰彇妯$増闂鎸囨爣搴撹缁嗕俊鎭�")
-    @PreAuthorize("@ss.hasPermi('system:target:query')")
-    @GetMapping(value = "/getInfo/{id}")
-    public AjaxResult getInfo(@PathVariable("ID") Long id) {
-        return success(ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetByID(id));
-    }
-
-    /**
-     * 鏂板妯$増闂鎸囨爣搴�
-     */
-    @ApiOperation("鏂板妯$増闂鎸囨爣搴�")
-    @PreAuthorize("@ss.hasPermi('system:target:add')")
-    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        return toAjax(ivrLibaTemplateTargetService.insertIvrLibaTemplateTarget(ivrLibaTemplateTarget));
-    }
-
-    /**
-     * 淇敼妯$増闂鎸囨爣搴�
-     */
-    @ApiOperation("淇敼妯$増闂鎸囨爣搴�")
-    @PreAuthorize("@ss.hasPermi('system:target:edit')")
-    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        return toAjax(ivrLibaTemplateTargetService.updateIvrLibaTemplateTarget(ivrLibaTemplateTarget));
-    }
-
-    /**
-     * 鍒犻櫎妯$増闂鎸囨爣搴�
-     */
-    @ApiOperation("鍒犻櫎妯$増闂鎸囨爣搴�")
-    @PreAuthorize("@ss.hasPermi('system:target:remove')")
-    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{IDs}")
-    public AjaxResult remove(@PathVariable Long[] IDs) {
-        return toAjax(ivrLibaTemplateTargetService.deleteIvrLibaTemplateTargetByIDs(IDs));
-    }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
index d201967..8143475 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
@@ -13,6 +13,9 @@
 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.service.IIvrTaskSingleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -98,16 +101,16 @@
     }
 
     /**
-     * 浠诲姟鍙戦�佹墽琛�
+     * 浠诲姟鐨勫彂閫佹墽琛屻�佹殏鍋溿�佺粓姝�
      */
-    @ApiOperation("浠诲姟鍙戦�佹墽琛�")
+    @ApiOperation("浠诲姟鐨勫彂閫佹墽琛屻�佹殏鍋溿�佺粓姝�")
     @PostMapping("/taskSend")
-    public AjaxResult heTaskSend(@RequestBody IvrTaskSingleVO ivrTaskcallVO) {
-        return toAjax(ivrTaskcallService.heTaskSend(ivrTaskcallVO));
+    public AjaxResult heTaskSend(@RequestBody SendTaskVO sendTaskVO) {
+        return toAjax(ivrTaskcallService.heTaskSend(sendTaskVO));
     }
 
     /**
-     * 鐢佃瘽鍥炶皟浠诲姟
+     * 鐢佃瘽鍥炶皟浠诲姟(涓婃捣)
      */
     @ApiOperation("鐢佃瘽鍥炶皟浠诲姟")
     @PostMapping("/phoneCallBack")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateController.java
new file mode 100644
index 0000000..18c0624
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateController.java
@@ -0,0 +1,107 @@
+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.IvrTaskTemplate;
+import com.smartor.domain.IvrTaskTemplateVO;
+import com.smartor.service.IIvrTaskTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+/**
+ * 闅忚浠诲姟闅忚妯℃澘搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Api(description = "闅忚浠诲姟闅忚妯℃澘搴揅ontroller")
+@RestController
+@RequestMapping("/smartor/ivrTaskTemplate")
+public class IvrTaskTemplateController extends BaseController {
+    @Autowired
+    private IIvrTaskTemplateService ivrTaskTemplateService;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ闅忚浠诲姟闅忚妯℃澘搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:template:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrTaskTemplate ivrTaskTemplate) {
+        startPage();
+        List<IvrTaskTemplate> list = ivrTaskTemplateService.selectIvrTaskTemplateList(ivrTaskTemplate);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闅忚浠诲姟闅忚妯℃澘搴撳垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:export')")
+    @ApiOperation("瀵煎嚭闅忚浠诲姟闅忚妯℃澘搴撳垪琛�")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskTemplate ivrTaskTemplate) {
+        List<IvrTaskTemplate> list = ivrTaskTemplateService.selectIvrTaskTemplateList(ivrTaskTemplate);
+        ExcelUtil<IvrTaskTemplate> util = new ExcelUtil<IvrTaskTemplate>(IvrTaskTemplate.class);
+        util.exportExcel(response, list, "闅忚浠诲姟闅忚妯℃澘搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇闅忚浠诲姟闅忚妯℃澘搴撹缁嗕俊鎭�
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:query')")
+    @ApiOperation("鑾峰彇闅忚浠诲姟闅忚妯℃澘搴撹缁嗕俊鎭�")
+    @GetMapping(value = "/getInfo/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") Long ID) {
+        return success(ivrTaskTemplateService.selectIvrTaskTemplateByID(ID));
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:add')")
+    @ApiOperation("鏂板闅忚浠诲姟闅忚妯℃澘搴�")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrTaskTemplate ivrTaskTemplate) {
+        return toAjax(ivrTaskTemplateService.insertIvrTaskTemplate(ivrTaskTemplate));
+    }
+
+    /**
+     * 鏂板鎴栦慨鏀归殢璁夸换鍔¢殢璁挎ā鏉垮簱
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:add')")
+    @ApiOperation("鏂板鎴栦慨鏀归殢璁夸换鍔¢殢璁挎ā鏉垮簱")
+    @PostMapping("/saveOrUpdateTempScript")
+    public AjaxResult saveOrUpdateTempScript(@RequestBody IvrTaskTemplateVO ivrTaskTemplateVO) {
+        return AjaxResult.success(ivrTaskTemplateService.saveOrUpdateTempScript(ivrTaskTemplateVO));
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:edit')")
+    @ApiOperation("淇敼闅忚浠诲姟闅忚妯℃澘搴�")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrTaskTemplate ivrTaskTemplate) {
+        return toAjax(ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate));
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:template:remove')")
+    @ApiOperation("鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�")
+    @GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable Long[] IDs) {
+        return toAjax(ivrTaskTemplateService.deleteIvrTaskTemplateByIDs(IDs));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateScriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateScriptController.java
new file mode 100644
index 0000000..aaedc0d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateScriptController.java
@@ -0,0 +1,104 @@
+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.IvrTaskTemplateScript;
+import com.smartor.service.IIvrTaskTemplateScriptService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+/**
+ * 闅忚浠诲姟妯$増闂璇濇湳搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Api(description = "闅忚浠诲姟妯$増闂璇濇湳搴揅ontroller")
+@RestController
+@RequestMapping("/smartor/taskTemplateScript")
+public class IvrTaskTemplateScriptController extends BaseController
+{
+    @Autowired
+    private IIvrTaskTemplateScriptService ivrTaskTemplateScriptService;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:script:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrTaskTemplateScript ivrTaskTemplateScript)
+    {
+        startPage();
+        List<IvrTaskTemplateScript> list = ivrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     */
+    @ApiOperation("瀵煎嚭闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:script:export')")
+    @Log(title = "闅忚浠诲姟妯$増闂璇濇湳搴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskTemplateScript ivrTaskTemplateScript)
+    {
+        List<IvrTaskTemplateScript> list = ivrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+        ExcelUtil<IvrTaskTemplateScript> util = new ExcelUtil<IvrTaskTemplateScript>(IvrTaskTemplateScript.class);
+        util.exportExcel(response, list, "闅忚浠诲姟妯$増闂璇濇湳搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇闅忚浠诲姟妯$増闂璇濇湳搴撹缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇闅忚浠诲姟妯$増闂璇濇湳搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:script:query')")
+    @GetMapping(value = "/getInfo/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") Long ID)
+    {
+        return success(ivrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(ID));
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:script:add')")
+    @ApiOperation("鏂板闅忚浠诲姟妯$増闂璇濇湳搴�")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrTaskTemplateScript ivrTaskTemplateScript)
+    {
+        return toAjax(ivrTaskTemplateScriptService.insertIvrTaskTemplateScript(ivrTaskTemplateScript));
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:script:edit')")
+    @ApiOperation("淇敼闅忚浠诲姟妯$増闂璇濇湳搴�")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrTaskTemplateScript ivrTaskTemplateScript)
+    {
+        return toAjax(ivrTaskTemplateScriptService.updateIvrTaskTemplateScript(ivrTaskTemplateScript));
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:script:remove')")
+    @ApiOperation("鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�")
+	@GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable Long[] IDs)
+    {
+        return toAjax(ivrTaskTemplateScriptService.deleteIvrTaskTemplateScriptByIDs(IDs));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateTargetoptionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateTargetoptionController.java
new file mode 100644
index 0000000..7071766
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskTemplateTargetoptionController.java
@@ -0,0 +1,96 @@
+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.IvrTaskTemplateTargetoption;
+import com.smartor.service.IIvrTaskTemplateTargetoptionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+/**
+ * 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Api(description = "闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴揅ontroller")
+@RestController
+@RequestMapping("/system/taskTemplateTargetoption")
+public class IvrTaskTemplateTargetoptionController extends BaseController {
+    @Autowired
+    private IIvrTaskTemplateTargetoptionService ivrTaskTemplateTargetoptionService;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption) {
+        startPage();
+        List<IvrTaskTemplateTargetoption> list = ivrTaskTemplateTargetoptionService.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('system:targetoption:export')")
+    @ApiOperation("瀵煎嚭闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption) {
+        List<IvrTaskTemplateTargetoption> list = ivrTaskTemplateTargetoptionService.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+        ExcelUtil<IvrTaskTemplateTargetoption> util = new ExcelUtil<IvrTaskTemplateTargetoption>(IvrTaskTemplateTargetoption.class);
+        util.exportExcel(response, list, "闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撹缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(ivrTaskTemplateTargetoptionService.selectIvrTaskTemplateTargetoptionById(id));
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:targetoption:add')")
+    @ApiOperation("鏂板闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption) {
+        return toAjax(ivrTaskTemplateTargetoptionService.insertIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption));
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:targetoption:edit')")
+    @ApiOperation("淇敼闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption) {
+        return toAjax(ivrTaskTemplateTargetoptionService.updateIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption));
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:targetoption:remove')")
+    @ApiOperation("鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�")
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(ivrTaskTemplateTargetoptionService.deleteIvrTaskTemplateTargetoptionByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index d959a17..f10a76b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -1,7 +1,9 @@
 package com.ruoyi.web.controller.system;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Set;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -17,14 +19,15 @@
 import com.ruoyi.framework.web.service.SysPermissionService;
 import com.ruoyi.system.service.ISysMenuService;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 鐧诲綍楠岃瘉
- * 
+ *
  * @author ruoyi
  */
 @RestController
-public class SysLoginController
-{
+public class SysLoginController {
     @Autowired
     private SysLoginService loginService;
 
@@ -36,29 +39,38 @@
 
     /**
      * 鐧诲綍鏂规硶
-     * 
+     *
      * @param loginBody 鐧诲綍淇℃伅
      * @return 缁撴灉
      */
     @PostMapping("/login")
-    public AjaxResult login(@RequestBody LoginBody loginBody)
-    {
+    public AjaxResult login(@RequestBody LoginBody loginBody) {
         AjaxResult ajax = AjaxResult.success();
         // 鐢熸垚浠ょ墝
-        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
-                loginBody.getUuid());
+        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid());
         ajax.put(Constants.TOKEN, token);
         return ajax;
     }
 
+    @GetMapping("/getToken")
+    public void getToken(HttpServletResponse response) throws IOException {
+        // 鐢熸垚鎴栬幏鍙杢oken
+        String token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjRiZGRkMTI0LTViNWMtNDhmMC05YjNkLTA0YjFiMzU0Nzg5NSJ9.16hHNas7jXTlHVrnlZgAJ-YViD44YkKFuoxJxMPm5QLPeSHn3wRyd9xE0Bi7YMdO3zKcZNo6ef5diZvDWN7ImA";
+        // 璁剧疆鍝嶅簲澶达紝鍓嶇鍙互浠庡搷搴斿ご鑾峰彇token
+        response.addHeader("Authorization", "Bearer " + token);
+
+        // 濡傛灉闇�瑕佽繘琛岄〉闈㈣烦杞紝鍙互璁剧疆鐘舵�佺爜涓�302锛屽苟璁剧疆Location澶撮儴
+        response.setStatus(302);
+        response.setHeader("Location", "http://localhost:8099/tool/module/classifythreea");
+    }
+
     /**
      * 鑾峰彇鐢ㄦ埛淇℃伅
-     * 
+     *
      * @return 鐢ㄦ埛淇℃伅
      */
     @GetMapping("getInfo")
-    public AjaxResult getInfo()
-    {
+    public AjaxResult getInfo() {
         SysUser user = SecurityUtils.getLoginUser().getUser();
         // 瑙掕壊闆嗗悎
         Set<String> roles = permissionService.getRolePermission(user);
@@ -73,12 +85,11 @@
 
     /**
      * 鑾峰彇璺敱淇℃伅
-     * 
+     *
      * @return 璺敱淇℃伅
      */
     @GetMapping("getRouters")
-    public AjaxResult getRouters()
-    {
+    public AjaxResult getRouters() {
         Long userId = SecurityUtils.getUserId();
         List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
         return AjaxResult.success(menuService.buildMenus(menus));
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
index 771d92a..f95bb97 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
@@ -8,91 +8,104 @@
 import com.smartor.common.SendService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.config.RabbitMqCallPhoneConfig;
+import com.smartor.config.RobotPhoneUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.robot.RobotData;
+import com.smartor.domain.robot.RobotDataConfig;
+import com.smartor.domain.robot.RobotIdlenumVO;
+import com.smartor.domain.robot.RobotScritpTemplateVO;
 import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.stereotype.Component;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 public class PhoneTask implements Runnable {
     private IvrTaskSingle ivrTaskSingle;
-    private List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVO;
+    private List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVO;
     private RedisCache redisCache;
-    private IvrLibaTemplateVO ivrLibaTemplateVO;
+    private IvrTaskTemplateVO ivrTaskTemplateVO;
     private RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig;
     private Message message;
     private SendService sendService;
+    private String phonePath;
+    private RobotPhoneUtils robotPhoneUtils;
 
 
-    public PhoneTask(IvrTaskSingle ivrTaskSingle, IvrLibaTemplateVO ivrLibaTemplateVO, RedisCache redisCache, RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig, Message message, SendService sendService) {
+    public PhoneTask(IvrTaskSingle ivrTaskSingle, IvrTaskTemplateVO ivrTaskTemplateVO, RedisCache redisCache, RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig, Message message, SendService sendService, String phonePath, RobotPhoneUtils robotPhoneUtils) {
         this.ivrTaskSingle = DtoConversionUtils.sourceToTarget(ivrTaskSingle, IvrTaskSingle.class);
-        this.ivrLibaTemplateScriptVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList(), IvrLibaTemplateScriptVO.class);
-        this.ivrLibaTemplateVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplateVO.class);
+        this.ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList(), IvrTaskTemplateScriptVO.class);
+        this.ivrTaskTemplateVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplateVO.class);
         this.redisCache = redisCache;
         this.rabbitMqCallPhoneConfig = rabbitMqCallPhoneConfig;
         this.message = message;
         this.sendService = sendService;
+        this.phonePath = phonePath;
+        this.robotPhoneUtils = robotPhoneUtils;
     }
 
     @Override
     public void run() {
-        try {
-            //鑾峰彇鐢佃瘽缁勶紝鏌ョ湅鍝簺鐢佃瘽鍙互浣跨敤
-            PhoneUtils phoneUtils = new PhoneUtils();
-            final String uuid = IdUtils.randomUUID();
-            //鑾峰彇鎵�鏈夌殑鈥滈�氶厤绗︹�濋敭鍊煎
-            ObjectMapper objectMapper = new ObjectMapper();
-            Map<String, Map<String, String>> ivrTaskSingleMmap = objectMapper.readValue(ivrTaskSingle.getTextParam(), Map.class);
-            List<Map<String, String>> mapList = new ArrayList<>();
-            if (!Objects.isNull(ivrTaskSingleMmap)) {
-                for (Map<String, String> map : ivrTaskSingleMmap.values()) {
-                    mapList.add(map);
-                }
-                //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
-                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
-                    for (Map<String, String> map : mapList) {
-                        for (String key : map.keySet()) {
-                            ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, map.get(key)));
+        if (phonePath.equals("1")) {
+            //涓婃捣鐨勭數璇濇嫧鎵�
+            try {
+                //鑾峰彇鐢佃瘽缁勶紝鏌ョ湅鍝簺鐢佃瘽鍙互浣跨敤
+                PhoneUtils phoneUtils = new PhoneUtils();
+                final String uuid = IdUtils.randomUUID();
+                //鑾峰彇鎵�鏈夌殑鈥滈�氶厤绗︹�濋敭鍊煎
+                ObjectMapper objectMapper = new ObjectMapper();
+                Map<String, Map<String, String>> ivrTaskSingleMmap = objectMapper.readValue(ivrTaskSingle.getTextParam(), Map.class);
+                List<Map<String, String>> mapList = new ArrayList<>();
+                if (!Objects.isNull(ivrTaskSingleMmap)) {
+                    for (Map<String, String> map : ivrTaskSingleMmap.values()) {
+                        mapList.add(map);
+                    }
+                    //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
+                    for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVO) {
+                        for (Map<String, String> map : mapList) {
+                            for (String key : map.keySet()) {
+                                ivrTaskTemplateScriptVO.setQuestionText(ivrTaskTemplateScriptVO.getQuestionText().replace(key, map.get(key)));
+                            }
                         }
                     }
                 }
-            }
-            Map<String, Object> objectMap = new HashMap<>();
-            objectMap.put("ivrTaskSingle", ivrTaskSingle);
-            objectMap.put("ivrLibaTemplateScriptVO", ivrLibaTemplateScriptVO);
-            //灏嗘暟鎹斁鍒皉edis涓紝鏂逛究鍦ㄥ洖璋冩柟娉曢噷鑾峰彇
-            redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES);
+                Map<String, Object> objectMap = new HashMap<>();
+                objectMap.put("ivrTaskSingle", ivrTaskSingle);
+                objectMap.put("ivrTaskTemplateScriptVO", ivrTaskTemplateScriptVO);
+                //灏嗘暟鎹斁鍒皉edis涓紝鏂逛究鍦ㄥ洖璋冩柟娉曢噷鑾峰彇
+                redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES);
 
-            //璁板綍棣栨闂
-            QuestionMessage returnQues = new QuestionMessage();
-            returnQues.setKcb(ivrLibaTemplateVO.getRevisitBefore());
-            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
-                if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO.getFirstQuestionNum().intValue()) {
-                    returnQues.setNowQuestion(ivrLibaTemplateScriptVO);
+                //璁板綍棣栨闂
+                QuestionMessage returnQues = new QuestionMessage();
+                returnQues.setKcb(ivrTaskTemplateVO.getRevisitBefore());
+                for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVO) {
+                    if (ivrTaskTemplateScriptVO.getTargetid() == ivrTaskTemplateVO.getFirstQuestionNum().intValue()) {
+                        returnQues.setNowQuestion(ivrTaskTemplateScriptVO);
+                    }
                 }
-            }
-            returnQues.setQuestionList(ivrLibaTemplateScriptVO);
-            //灏嗛棶棰橈紝鍜屾ā鏉夸俊鎭斁鍒皉edis涓�
-            redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES);
-            redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES);
+                returnQues.setQuestionList(ivrTaskTemplateScriptVO);
+                //灏嗛棶棰橈紝鍜屾ā鏉夸俊鎭斁鍒皉edis涓�
+                redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                redisCache.setCacheObject(uuid + "ivrTaskTemplateVO", ivrTaskTemplateVO, 120, TimeUnit.MINUTES);
 
-            System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone());
+                System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone());
 
-            //鍏堝皢璇濇湳鏀惧埌ob_queue闃熷垪涓�
-            IvrTaskcallPhoneMQ ivrTaskcallPhoneMQ = new IvrTaskcallPhoneMQ();
-            ivrTaskcallPhoneMQ.setScript(ivrLibaTemplateVO.getRevisitBefore() + returnQues.getNowQuestion().getQuestionText());
-            ivrTaskcallPhoneMQ.setType("1");
-            ivrTaskcallPhoneMQ.setUuid(uuid);
-            String data = JSON.toJSONString(ivrTaskcallPhoneMQ);
-            rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.ob1", data, 0L);
+                //鍏堝皢璇濇湳鏀惧埌ob_queue闃熷垪涓�
+                IvrTaskcallPhoneMQ ivrTaskcallPhoneMQ = new IvrTaskcallPhoneMQ();
+                ivrTaskcallPhoneMQ.setScript(ivrTaskTemplateVO.getRevisitBefore() + returnQues.getNowQuestion().getQuestionText());
+                ivrTaskcallPhoneMQ.setType("1");
+                ivrTaskcallPhoneMQ.setUuid(uuid);
+                String data = JSON.toJSONString(ivrTaskcallPhoneMQ);
+//            rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.ob1", data, 0L);
 
-            //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇�
-            String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskSingle.getPhone(), uuid, true);
-            System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone() + "----------宸茬粡鎷ㄦ墦");
-            Map<String, String> obMap = objectMapper.readValue(ob, Map.class);
-            Thread.sleep(1000);
-            redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
+                //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇�
+                String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskSingle.getPhone(), uuid, true);
+                System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone() + "----------宸茬粡鎷ㄦ墦");
+                Map<String, String> obMap = objectMapper.readValue(ob, Map.class);
+                Thread.sleep(1000);
+                redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
+                rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.ob1", data, 0L);
 //杩欓噷鍏堟敞閲婏紝state_id,鐢佃瘽閭h竟锛屽彧鑳借繑鍥�6锛屼笉鑳借繑鍥�0锛岃繕闇�瑕佺數璇濋偅杈硅繘琛屼慨鏀癸紝閭h竟淇敼涔嬪悗锛屼笂闈袱琛屽彲鍒犻櫎锛屽皢涓嬮潰鐨勮В寮�娉ㄩ噴
 //            if (obMap.get("state_id").equals("0")) {
 //                // 璇存槑鎵撻�氫簡
@@ -103,12 +116,39 @@
 //                    redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
 //                }
 //            }
+                System.out.println("OB鐨勫�间负锛�" + ob);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else if (phonePath.equals("2")) {
+            //鏉窞鐨勭數璇濇嫧鎵�
+            RobotScritpTemplateVO robotScritpTemplateVO = new RobotScritpTemplateVO();
+            robotScritpTemplateVO.setNotes("aa");
+            robotScritpTemplateVO.setBs_uuid(UUID.randomUUID().toString());
+            robotScritpTemplateVO.setDnis(ivrTaskSingle.getPhone());
+            robotScritpTemplateVO.setSpecify_ch(false);
+            robotScritpTemplateVO.setTime_stamp(1566227782278333L);
+            robotScritpTemplateVO.setEngine("ali");
+            robotScritpTemplateVO.setAsr_sample("8000");
+            robotScritpTemplateVO.setAsr_ent("ZurNHpaQLq6P55YS");
+            robotScritpTemplateVO.setTts_ent("ZurNHpaQLq6P55YS");
+            robotScritpTemplateVO.setTts_vcn("Aixia");
+            robotScritpTemplateVO.setTts_volume(100);
+            robotScritpTemplateVO.setTts_speed(-300);
+            robotScritpTemplateVO.setDial_mode("鍛煎彨瀵规帴鏂瑰紡锛孎S娉ㄥ唽鍒扮綉鍏炽�佺綉鍏虫敞鍐屽埌FS銆両P瀵规帴銆両P鏍¢獙璐﹀彿瀵规帴");
+            robotScritpTemplateVO.setDial_server("call_out_group,192.168.2.108:5060");
+            robotScritpTemplateVO.setOutbound_codes("PCMU,PCMA,OPUS,G722");
+            robotScritpTemplateVO.setAuto_test(true);
+            RobotData robotData = new RobotData();
+            RobotDataConfig robotDataConfig = new RobotDataConfig();
+            robotDataConfig.setTemplate_name("inbound_88008001_16k_utf8.json");
+            robotData.setConfig(robotDataConfig);
+            robotScritpTemplateVO.setData(robotData);
 
-
-            System.out.println("OB鐨勫�间负锛�" + ob);
-        } catch (Exception e) {
-            e.printStackTrace();
-
+            RobotIdlenumVO robotIdlenumVO = DtoConversionUtils.sourceToTarget(robotScritpTemplateVO, RobotIdlenumVO.class);
+//            String idlenum = robotPhoneUtils.idlenum(robotIdlenumVO);
+//            System.out.println(idlenum);
+            robotPhoneUtils.outbound(robotScritpTemplateVO);
         }
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask2.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask2.java
deleted file mode 100644
index 1daa520..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask2.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.ruoyi.web.task;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.rabbitmq.client.Channel;
-import com.ruoyi.common.core.redis.RedisCache;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.smartor.common.SendService;
-import com.smartor.config.PhoneUtils;
-import com.smartor.domain.IvrLibaTemplateScriptVO;
-import com.smartor.domain.IvrLibaTemplateVO;
-import com.smartor.domain.IvrTaskSingle;
-import com.smartor.domain.QuestionMessage;
-import org.springframework.amqp.core.Message;
-
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-public class PhoneTask2 {
-//    private IvrTaskSingle ivrTaskSingle;
-//    private List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVO;
-//    private RedisCache redisCache;
-//    private IvrLibaTemplateVO ivrLibaTemplateVO;
-//    private Channel channel;
-//    private Message message;
-//    private SendService sendService;
-
-
-    public void runPhone(IvrTaskSingle ivrTaskSingle, IvrLibaTemplateVO ivrLibaTemplateVO, RedisCache redisCache, Channel channel, Message message, SendService sendService) {
-
-        try {
-            //鑾峰彇鐢佃瘽缁勶紝鏌ョ湅鍝簺鐢佃瘽鍙互浣跨敤
-            PhoneUtils phoneUtils = new PhoneUtils();
-            String uuid = IdUtils.randomUUID();
-            //鑾峰彇鎵�鏈夌殑鈥滈�氶厤绗︹�濋敭鍊煎
-            ObjectMapper objectMapper = new ObjectMapper();
-            Map<String, Map<String, String>> ivrTaskSingleMmap = objectMapper.readValue(ivrTaskSingle.getTextParam(), Map.class);
-            List<Map<String, String>> mapList = new ArrayList<>();
-            if (!Objects.isNull(ivrTaskSingleMmap)) {
-                for (Map<String, String> map : ivrTaskSingleMmap.values()) {
-                    mapList.add(map);
-                }
-                //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
-                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
-                    for (Map<String, String> map : mapList) {
-                        for (String key : map.keySet()) {
-                            ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, map.get(key)));
-                        }
-                    }
-                }
-            }
-            Map<String, Object> objectMap = new HashMap<>();
-            objectMap.put("ivrTaskSingle", ivrTaskSingle);
-            objectMap.put("ivrLibaTemplateScriptVO", ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList());
-            //灏嗘暟鎹斁鍒皉edis涓紝鏂逛究鍦ㄥ洖璋冩柟娉曢噷鑾峰彇
-            redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES);
-
-            //璁板綍棣栨闂
-            QuestionMessage returnQues = new QuestionMessage();
-            returnQues.setKcb(ivrLibaTemplateVO.getRevisitBefore());
-            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
-                if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO.getFirstQuestionNum().intValue()) {
-                    returnQues.setNowQuestion(ivrLibaTemplateScriptVO);
-                }
-            }
-            returnQues.setQuestionList(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList());
-            //灏嗛棶棰橈紝鍜屾ā鏉夸俊鎭斁鍒皉edis涓�
-            redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES);
-            redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES);
-
-            System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone());
-
-            //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇濓紙闇�瑕佸皢鍥炶皟鏂规硶浼犲叆锛岃繖涓瓑鈥濈數璇濇柟鈥滃憡璇夋�庝箞浼狅紝鐜板湪鍏堢┖鐫�,杩樻湁绗竴鍙ラ棶棰樿瘽鏈級
-            String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskSingle.getPhone(), uuid, true);
-            System.out.println("OB鐨勫�间负锛�" + ob);
-            //閫氫簡涔嬪悗锛岀珛椹幓璋冨紑鍦虹櫧
-            System.out.println("闂鐨勫�间负锛�" + returnQues.getNowQuestion().getQuestionText() + "       " + uuid);
-            phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitBefore() + returnQues.getNowQuestion().getQuestionText(), uuid);
-
-//                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-    }
-}
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 02c2a31..d56ac53 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -1,13 +1,13 @@
 # 鏁版嵁婧愰厤缃�
 spring:
   rabbitmq:
-#    host: 116.62.18.175
-    host: 127.0.0.1
+    host: 116.62.18.175
+    #    host: 127.0.0.1
     password: guest
     port: 5672
     username: guest
     virtual-host: /
-     # 寮�鍚秷鎭彂閫佺‘璁�
+    # 寮�鍚秷鎭彂閫佺‘璁�
     publisher-confirms: true
     publisher-returns: true
     listener:
@@ -119,6 +119,21 @@
 accessKeySecret: 6EIRr9uZeRobvHBRqskyGwjTLKpHYv
 signName: 鏉窞鍒╂箹绉戞妧
 
-#鏅鸿兘鍛煎彨
+#鏅鸿兘鍛煎彨(涓婃捣)
 phoneIP: http://124.220.50.51
 phonePort: 8001
+#鏉窞
+hzphoneIP: http://121.43.112.160
+hzphonePort: 8088
+#鐢佃瘽绾胯矾锛�1 涓婃捣锛�2 鏉窞锛�
+phonePath: 2
+#鑷繁鐨勭數璇濆彿鐮�
+phoneMySelf: 83234089
+##鎺堟潈 id(鏉窞)
+#app_id: hzgs
+##鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)
+#app_key: 605453540c4a0a692fe07e1cae1162f3
+#鎺堟潈 id(鏉窞)
+app_id: hz_ali
+#鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)
+app_key: a2f3b5799d635216aa280362fafd8c35
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/SendTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java
similarity index 83%
rename from ruoyi-common/src/main/java/com/ruoyi/common/enums/SendTypeEnum.java
rename to ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java
index 62e3cd4..951f4fc 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/SendTypeEnum.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java
@@ -3,7 +3,7 @@
 /**
  * 鍙戦�佺被鍨嬫灇涓�
  */
-public enum SendTypeEnum {
+public enum ServiceFromEnum {
     DMT(1, "澶氬獟浣�"),
     ZZ(2, "绾歌川"),
     DH(3, "鐢佃瘽"),
@@ -18,15 +18,15 @@
     private Integer code;
     private String desc;
 
-    SendTypeEnum(Integer code, String desc) {
+    ServiceFromEnum(Integer code, String desc) {
         this.code = code;
         this.desc = desc;
     }
 
     public static String getDescByCode(Integer code) {
-        SendTypeEnum[] organEnums = values();
+        ServiceFromEnum[] organEnums = values();
         for (int i = 0; i < organEnums.length; i++) {
-            SendTypeEnum organEnum = organEnums[i];
+            ServiceFromEnum organEnum = organEnums[i];
             if (organEnum.getCode() == code) {
                 return organEnum.getDesc();
             }
@@ -50,4 +50,4 @@
     public void setDesc(String desc) {
         this.desc = desc;
     }
-}
\ No newline at end of file
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 75fa536..79645b1 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -108,7 +108,7 @@
                 // 杩囨护璇锋眰
                 .authorizeRequests()
                 // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
-                .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").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").permitAll()
                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
diff --git a/smartor/src/main/java/com/smartor/config/PhoneUtils.java b/smartor/src/main/java/com/smartor/config/PhoneUtils.java
index 07a7497..bb831a5 100644
--- a/smartor/src/main/java/com/smartor/config/PhoneUtils.java
+++ b/smartor/src/main/java/com/smartor/config/PhoneUtils.java
@@ -295,7 +295,7 @@
         String responseBody = null;
         try {
             responseBody = new String(stringHttpEntity.getBody().getBytes("ISO-8859-1"), "UTF-8");
-            System.out.println(responseBody);
+            System.out.println("鐢佃瘽淇℃伅杩斿洖 : " + responseBody);
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
diff --git a/smartor/src/main/java/com/smartor/config/RabbitMqCallPhoneConfig.java b/smartor/src/main/java/com/smartor/config/RabbitMqCallPhoneConfig.java
index de3d53a..e36bcd1 100644
--- a/smartor/src/main/java/com/smartor/config/RabbitMqCallPhoneConfig.java
+++ b/smartor/src/main/java/com/smartor/config/RabbitMqCallPhoneConfig.java
@@ -107,7 +107,7 @@
     @Bean
     public void createMq() {
         createRabbitMq("phone_exchange", "ob_queue", "phone.ob1");
-        createRabbitMq("phone_exchange", "phone_queue", "phone.123");
+        createRabbitMq("phone_exchange", "task_queue", "phone.123");
     }
 
 }
diff --git a/smartor/src/main/java/com/smartor/config/RobotPhoneUtils.java b/smartor/src/main/java/com/smartor/config/RobotPhoneUtils.java
new file mode 100644
index 0000000..f21ef80
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/config/RobotPhoneUtils.java
@@ -0,0 +1,136 @@
+package com.smartor.config;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.utils.HttpUtil;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpEntity;
+import com.ruoyi.common.utils.sign.Md5Utils;
+import com.smartor.domain.robot.RobotData;
+import com.smartor.domain.robot.RobotDataConfig;
+import com.smartor.domain.robot.RobotIdlenumVO;
+import com.smartor.domain.robot.RobotScritpTemplateVO;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import javax.mail.Multipart;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+@Configuration
+public class RobotPhoneUtils {
+
+    @Value("${hzphoneIP}")
+    private String hzphoneIP;
+
+    @Value("${hzphonePort}")
+    private String hzphonePort;
+
+    @Value("${phoneMySelf}")
+    private String phoneMySelf;
+
+    @Value("${app_id}")
+    private String app_id;
+
+    @Value(value = "${app_key}")
+    private String app_key;
+
+    /**
+     * 绾胯矾绌洪棽鏁伴噺鎺ュ彛
+     *
+     * @param robotIdlenumVO
+     * @return
+     */
+    public String idlenum(RobotIdlenumVO robotIdlenumVO) {
+        robotIdlenumVO.setAni(phoneMySelf);
+        robotIdlenumVO.setApp_key(app_key);
+        robotIdlenumVO.setApp_id(app_id);
+
+        //璁剧疆sign鐨勫��  md5(app_id+app_key+ani+special_ch+time_stamp) specify_ch md5 鏃� true 鐢� 1 鏇夸唬锛宖alse 鐢� 0 鏇夸唬
+        String signStr = robotIdlenumVO.getSpecify_ch() == true ? robotIdlenumVO.getApp_id() + robotIdlenumVO.getApp_key() + robotIdlenumVO.getAni() + 1 + robotIdlenumVO.getTime_stamp() : robotIdlenumVO.getApp_id() + robotIdlenumVO.getApp_key() + robotIdlenumVO.getAni() + 0 + robotIdlenumVO.getTime_stamp();
+        robotIdlenumVO.setSign(Md5Utils.hash(signStr));
+
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map<String, Object> map = null;
+        try {
+            map = objectMapper.readValue(JSON.toJSONString(robotIdlenumVO), Map.class);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+        return sendReq(map, "/aiengine/ai_api/idlenum");
+    }
+
+
+    /**
+     * 澶栧懠鍙戣捣璇锋眰鎺ュ彛
+     */
+    public String outbound(RobotScritpTemplateVO robotScritpTemplateVO) {
+        robotScritpTemplateVO.setAni(phoneMySelf);
+        robotScritpTemplateVO.setApp_key(app_key);
+        robotScritpTemplateVO.setApp_id(app_id);
+        String signStr = robotScritpTemplateVO.getSpecify_ch() == true ? robotScritpTemplateVO.getApp_id() + robotScritpTemplateVO.getApp_key() + robotScritpTemplateVO.getBs_uuid() + robotScritpTemplateVO.getAni() + 1 + robotScritpTemplateVO.getTime_stamp() : robotScritpTemplateVO.getApp_id() + robotScritpTemplateVO.getApp_key() + robotScritpTemplateVO.getBs_uuid() + robotScritpTemplateVO.getAni() + 0 + robotScritpTemplateVO.getTime_stamp();
+        robotScritpTemplateVO.setSign(Md5Utils.hash(signStr));
+        //涓嬮潰娉ㄩ噴鐨勮繖涓祴璇曠敤鐨�
+//        robotScritpTemplateVO.setNotes("aa");
+//        robotScritpTemplateVO.setApp_id("hz_ali");
+//        robotScritpTemplateVO.setApp_key("a2f3b5799d635216aa280362fafd8c35");
+//        robotScritpTemplateVO.setBs_uuid(UUID.randomUUID().toString());
+//        robotScritpTemplateVO.setAni("83234089");
+//        robotScritpTemplateVO.setDnis("1010");
+//        robotScritpTemplateVO.setSpecify_ch(false);
+//        robotScritpTemplateVO.setTime_stamp(1566227782278333L);
+//        robotScritpTemplateVO.setSign(null);
+//        robotScritpTemplateVO.setEngine("ali");
+//        robotScritpTemplateVO.setAsr_sample("8000");
+//        robotScritpTemplateVO.setAsr_ent("ZurNHpaQLq6P55YS");
+//        robotScritpTemplateVO.setTts_ent("ZurNHpaQLq6P55YS");
+//        robotScritpTemplateVO.setTts_vcn("Aixia");
+//        robotScritpTemplateVO.setTts_volume(100);
+//        robotScritpTemplateVO.setTts_speed(-300);
+//        robotScritpTemplateVO.setDial_mode("鍛煎彨瀵规帴鏂瑰紡锛孎S娉ㄥ唽鍒扮綉鍏炽�佺綉鍏虫敞鍐屽埌FS銆両P瀵规帴銆両P鏍¢獙璐﹀彿瀵规帴");
+//        robotScritpTemplateVO.setDial_server("call_out_group,192.168.2.108:5060");
+//        robotScritpTemplateVO.setOutbound_codes("PCMU,PCMA,OPUS,G722");
+//        robotScritpTemplateVO.setAuto_test(true);
+//        RobotData robotData = new RobotData();
+//        RobotDataConfig robotDataConfig = new RobotDataConfig();
+//        robotDataConfig.setTemplate_name("inbound_88008001_16k_utf8.json");
+//        robotData.setConfig(robotDataConfig);
+//        robotScritpTemplateVO.setData(robotData);
+//        md5(app_id+app_key+bs_uuid+ani+dnis+specify_ch+time_stamp)  specify_ch md5 鏃� true 鐢� 1 鏇夸唬锛宖alse 鐢� 0 鏇夸唬;
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map<String, Object> map = null;
+        try {
+            map = objectMapper.readValue(JSON.toJSONString(robotScritpTemplateVO), Map.class);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
+        return sendReq(map, "/aiengine/ai_api/outbound");
+    }
+
+
+    private String sendReq(Map<String, Object> map, String path) {
+        HttpEntity<Map<String, Object>> req = new HttpEntity<>(getHead(), map);
+        HttpEntity<String> stringHttpEntity = HttpUtil.postJsonRequestV2(hzphoneIP + ":" + hzphonePort + path, req, String.class);
+        String responseBody = null;
+        try {
+            responseBody = new String(stringHttpEntity.getBody().getBytes("ISO-8859-1"), "UTF-8");
+            System.out.println("鐢佃瘽淇℃伅杩斿洖 : " + responseBody);
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        return new String(stringHttpEntity.getBody().getBytes(StandardCharsets.UTF_8));
+    }
+
+    private Map<String, String> getHead() {
+        HashMap<String, String> header = new HashMap<>();
+        header.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
+        header.put("Content-Type", "application/json");
+        return header;
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
index 30c13bc..1d64e4a 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
@@ -30,19 +30,19 @@
     @ApiModelProperty(value = "涓婚敭")
     private Long ID;
 
-    /**
-     * 鎸囨爣id
-     */
-    @Excel(name = "鎸囨爣id")
-    @ApiModelProperty(value = "鎸囨爣id")
-    private Integer targetid;
-
-    /**
-     * 鎸囨爣鍚�
-     */
-    @Excel(name = "鎸囨爣鍚�")
-    @ApiModelProperty(value = "鎸囨爣鍚�")
-    private String targetname;
+//    /**
+//     * 鎸囨爣id
+//     */
+//    @Excel(name = "鎸囨爣id")
+//    @ApiModelProperty(value = "鎸囨爣id")
+//    private Integer targetid;
+//
+//    /**
+//     * 鎸囨爣鍚�
+//     */
+//    @Excel(name = "鎸囨爣鍚�")
+//    @ApiModelProperty(value = "鎸囨爣鍚�")
+//    private String targetname;
 
     /**
      * 妯℃澘鍚�
@@ -57,20 +57,20 @@
     @Excel(name = "娌夐粯鏃堕棿")
     @ApiModelProperty(value = "娌夐粯鏃堕棿")
     private Long silencetime;
-
-    /**
-     * 娌夐粯鎸佺画鏃堕棿
-     */
-    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
-    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
-    private Long slienceRepeatTimes;
-
-    /**
-     * 鏃犲尮閰嶆椂闂�
-     */
-    @Excel(name = "鏃犲尮閰嶆椂闂�")
-    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
-    private Long nomatchRepeatTimes;
+//
+//    /**
+//     * 娌夐粯鎸佺画鏃堕棿
+//     */
+//    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+//    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
+//    private Long slienceRepeatTimes;
+//
+//    /**
+//     * 鏃犲尮閰嶆椂闂�
+//     */
+//    @Excel(name = "鏃犲尮閰嶆椂闂�")
+//    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
+//    private Long nomatchRepeatTimes;
 
     /**
      * 绗竴娆¢棶棰樼紪鍙�
@@ -100,48 +100,48 @@
     @ApiModelProperty(value = "鎻忚堪")
     private String note;
 
-    /**
-     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
-     */
-    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
-    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=閫夐」,2=鏂囨湰,3=鏁板��")
-    private Long valueType;
-
-    /**
-     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�
-     */
-    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
-    private String reply;
-
-    /**
-     * 鏂板鐢ㄦ埛ID
-     */
-    @Excel(name = "鏂板鐢ㄦ埛ID")
-    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
-    private String addUserID;
-
-    /**
-     * 鏂板鏃堕棿
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
-    @ApiModelProperty(value = "鏂板鏃堕棿")
-    private Date addTime;
-
-    /**
-     * 淇敼鐢ㄦ埛ID
-     */
-    @Excel(name = "淇敼鐢ㄦ埛ID")
-    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
-    private String modifyUserID;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
-    @ApiModelProperty(value = "淇敼鏃堕棿")
-    private Date modifyTime;
+//    /**
+//     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+//     */
+//    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+//    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=閫夐」,2=鏂囨湰,3=鏁板��")
+//    private Long valueType;
+//
+//    /**
+//     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�
+//     */
+//    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
+//    private String reply;
+//
+//    /**
+//     * 鏂板鐢ㄦ埛ID
+//     */
+//    @Excel(name = "鏂板鐢ㄦ埛ID")
+//    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
+//    private String addUserID;
+//
+//    /**
+//     * 鏂板鏃堕棿
+//     */
+//    @JsonFormat(pattern = "yyyy-MM-dd")
+//    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+//    @ApiModelProperty(value = "鏂板鏃堕棿")
+//    private Date addTime;
+//
+//    /**
+//     * 淇敼鐢ㄦ埛ID
+//     */
+//    @Excel(name = "淇敼鐢ㄦ埛ID")
+//    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
+//    private String modifyUserID;
+//
+//    /**
+//     * 淇敼鏃堕棿
+//     */
+//    @JsonFormat(pattern = "yyyy-MM-dd")
+//    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+//    @ApiModelProperty(value = "淇敼鏃堕棿")
+//    private Date modifyTime;
 
     /**
      * 鍒嗙粍ID
@@ -206,12 +206,12 @@
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
     private String deptNames = "";
 
-    /**
-     * F_KSDM
-     */
-    @Excel(name = "F_KSDM")
-    @ApiModelProperty(value = "F_KSDM")
-    private String fKsdm;
+//    /**
+//     * F_KSDM
+//     */
+//    @Excel(name = "F_KSDM")
+//    @ApiModelProperty(value = "F_KSDM")
+//    private String fKsdm;
 
     /**
      * 鍒犻櫎鏍囪
@@ -320,12 +320,12 @@
     @ApiModelProperty(value = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
     private String suitway;
 
-    /**
-     * 鏍囩
-     */
-    @Excel(name = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
-    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
-    private String otherdata;
+//    /**
+//     * 鏍囩
+//     */
+//    @Excel(name = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+//    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+//    private String otherdata;
 
     /**
      * 闅忚鍓嶈瘽鏈紙寮�鍦虹櫧锛�
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
index a7cd97e..6b55c4b 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
@@ -132,19 +132,19 @@
     @ApiModelProperty(value = "绫诲埆鍚�")
     private String categoryName;
 
-    /**
-     * 鎸囨爣閫夐」
-     */
-    @Excel(name = "鎸囨爣閫夐」")
-    @ApiModelProperty(value = "鎸囨爣閫夐」")
-    private String targetOptions;
-
-    /**
-     * 璇█
-     */
-    @Excel(name = "璇█")
-    @ApiModelProperty(value = "璇█")
-    private String language;
+//    /**
+//     * 鎸囨爣閫夐」
+//     */
+//    @Excel(name = "鎸囨爣閫夐」")
+//    @ApiModelProperty(value = "鎸囨爣閫夐」")
+//    private String targetOptions;
+//
+//    /**
+//     * 璇█
+//     */
+//    @Excel(name = "璇█")
+//    @ApiModelProperty(value = "璇█")
+//    private String language;
 
     /**
      * 鍙兘鎾斁WAV绫诲瀷
@@ -215,11 +215,11 @@
     @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
     private Integer isoperation;
 
-    /**
-     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
-     */
-    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
-    private Integer targettype;
+//    /**
+//     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+//     */
+//    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
+//    private Integer targettype;
 
     /**
      * 涓嬩竴棰�
@@ -254,10 +254,10 @@
     @ApiModelProperty(value = "鏄惁蹇呭~锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�")
     private String isMust;
 
-    /**
-     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
-     */
-    @Excel(name = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
-    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
-    private String questionResult;
+//    /**
+//     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
+//     */
+//    @Excel(name = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+//    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+//    private String questionResult;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
index e06bab6..5f5197f 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
@@ -132,19 +132,19 @@
     @ApiModelProperty(value = "绫诲埆鍚�")
     private String categoryName;
 
-    /**
-     * 鎸囨爣閫夐」
-     */
-    @Excel(name = "鎸囨爣閫夐」")
-    @ApiModelProperty(value = "鎸囨爣閫夐」")
-    private String targetOptions;
-
-    /**
-     * 璇█
-     */
-    @Excel(name = "璇█")
-    @ApiModelProperty(value = "璇█")
-    private String language;
+//    /**
+//     * 鎸囨爣閫夐」
+//     */
+//    @Excel(name = "鎸囨爣閫夐」")
+//    @ApiModelProperty(value = "鎸囨爣閫夐」")
+//    private String targetOptions;
+//
+//    /**
+//     * 璇█
+//     */
+//    @Excel(name = "璇█")
+//    @ApiModelProperty(value = "璇█")
+//    private String language;
 
     /**
      * 鍙兘鎾斁WAV绫诲瀷
@@ -208,11 +208,11 @@
     @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
     private Integer isoperation;
 
-    /**
-     * 鍩虹鎸囨爣绫诲瀷
-     */
-    @ApiModelProperty(value = "鍩虹鎸囨爣绫诲瀷")
-    private Integer targetType;
+//    /**
+//     * 鍩虹鎸囨爣绫诲瀷
+//     */
+//    @ApiModelProperty(value = "鍩虹鎸囨爣绫诲瀷")
+//    private Integer targetType;
 
     /**
      * 鍩虹鎸囨爣id
@@ -254,12 +254,12 @@
     @ApiModelProperty(value = "鏄惁蹇呭~锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�")
     private String isMust;
 
-    /**
-     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
-     */
-    @Excel(name = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
-    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
-    private String questionResult;
+//    /**
+//     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
+//     */
+//    @Excel(name = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+//    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+//    private String questionResult;
 
     /**
      * 璇濇湳閫夐」
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java
deleted file mode 100644
index 94c842f..0000000
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java
+++ /dev/null
@@ -1,219 +0,0 @@
-package com.smartor.domain;
-
-import java.util.Date;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-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;
-
-/**
- * 妯$増闂鎸囨爣搴撳璞� ivr_liba_template_target
- *
- * @author ruoyi
- * @date 2023-12-23
- */
-@Data
-@ApiModel(value = "IvrLibaTemplateTarget", description = "妯$増闂鎸囨爣搴撳璞�")
-public class IvrLibaTemplateTarget extends BaseEntity {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 妯℃澘鎸囨爣ID
-     */
-    @ApiModelProperty(value = "妯℃澘鎸囨爣ID")
-    private Long id;
-
-    /**
-     * 妯℃澘璇濇湳ID
-     */
-    @Excel(name = "妯℃澘璇濇湳ID")
-    @ApiModelProperty(value = "妯℃澘璇濇湳ID")
-    private Long templateQuestionID;
-
-    /**
-     * 妯℃澘璇濇湳缂栧彿
-     */
-    @Excel(name = "妯℃澘璇濇湳缂栧彿")
-    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
-    private Long templateQuestionNum;
-
-    /**
-     * 涓嬩竴涓瘽鏈紪鍙�
-     */
-    @Excel(name = "涓嬩竴涓瘽鏈紪鍙�")
-    @ApiModelProperty(value = "涓嬩竴涓瘽鏈紪鍙�")
-    private Long nextQuestionNum;
-
-    /**
-     * 妯℃澘ID
-     */
-    @Excel(name = "妯℃澘ID")
-    @ApiModelProperty(value = "妯℃澘ID")
-    private Long templateID;
-
-    /**
-     * 鑺傜偣ID
-     */
-    @Excel(name = "鑺傜偣ID")
-    @ApiModelProperty(value = "鑺傜偣ID")
-    private Long switchID;
-
-    /**
-     * 鑺傜偣鎻忚堪
-     */
-    @Excel(name = "鑺傜偣鎻忚堪")
-    @ApiModelProperty(value = "鑺傜偣鎻忚堪")
-    private String switchDescription;
-
-    /**
-     * 鑺傜偣鍐呭
-     */
-    @Excel(name = "鑺傜偣鍐呭")
-    @ApiModelProperty(value = "鑺傜偣鍐呭")
-    private String switchText;
-
-    /**
-     * 鑺傜偣鐨刉AV鏍煎紡
-     */
-    @Excel(name = "鑺傜偣鐨刉AV鏍煎紡")
-    @ApiModelProperty(value = "鑺傜偣鐨刉AV鏍煎紡")
-    private String switchWav;
-
-    /**
-     * 鑺傜偣寰呭尮閰嶈闊�
-     */
-    @Excel(name = "鑺傜偣寰呭尮閰嶈闊�")
-    @ApiModelProperty(value = "鑺傜偣寰呭尮閰嶈闊�")
-    private String switchTempWav;
-
-    /**
-     * 鎸囨爣绫诲瀷
-     */
-    @Excel(name = "鎸囨爣绫诲瀷")
-    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
-    private String targetType;
-
-    /**
-     * 鍒嗙被鍚�
-     */
-    @Excel(name = "鍒嗙被鍚�")
-    @ApiModelProperty(value = "鍒嗙被鍚�")
-    private String categoryName;
-
-    /**
-     * 鎸囨爣鍊�
-     */
-    @Excel(name = "鎸囨爣鍊�")
-    @ApiModelProperty(value = "鎸囨爣鍊�")
-    private String targetValue;
-
-    /**
-     * 鎸囨爣ID
-     */
-    @Excel(name = "鎸囨爣ID")
-    @ApiModelProperty(value = "鎸囨爣ID")
-    private String targetid;
-
-    /**
-     * 璇濇湳鎸囨爣ID
-     */
-    @Excel(name = "璇濇湳鎸囨爣ID")
-    @ApiModelProperty(value = "璇濇湳鎸囨爣ID")
-    private String questionTargetid;
-
-    /**
-     * 鍩虹姝e垯
-     */
-    @Excel(name = "鍩虹姝e垯")
-    @ApiModelProperty(value = "鍩虹姝e垯")
-    private String basicRegex;
-
-    /**
-     * 鑷韩姝e垯
-     */
-    @Excel(name = "鑷韩姝e垯")
-    @ApiModelProperty(value = "鑷韩姝e垯")
-    private String selfRegex;
-
-    /**
-     * 姝e垯浣跨敤绫诲瀷
-     */
-    @Excel(name = "姝e垯浣跨敤绫诲瀷")
-    @ApiModelProperty(value = "姝e垯浣跨敤绫诲瀷")
-    private String regexUsedType;
-
-    /**
-     * 璇█
-     */
-    @Excel(name = "璇█")
-    @ApiModelProperty(value = "璇█")
-    private String language;
-
-    /**
-     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
-     */
-    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
-    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
-    private Long isEnable;
-
-    /**
-     * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
-     */
-    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
-    @ApiModelProperty(value = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
-    private Long playType;
-
-    /**
-     * 鍒犻櫎鏍囪
-     */
-    @ApiModelProperty(value = "鍒犻櫎鏍囪")
-    private String delFlag;
-
-    /**
-     * 涓婁紶鏍囪
-     */
-    @Excel(name = " 涓婁紶鏍囪 ")
-    @ApiModelProperty(value = "涓婁紶鏍囪")
-    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;
-
-    /**
-     * 鐖禝D
-     */
-    @Excel(name = "鐖禝D")
-    @ApiModelProperty(value = "鐖禝D")
-    private Long pid;
-
-    /**
-     * GUID
-     */
-    @Excel(name = "GUID")
-    @ApiModelProperty(value = "GUID")
-    private String guid;
-
-    /**
-     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
-     */
-    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
-    private Integer isoperation;
-
-}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
index c07d1f1..2658d6a 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
@@ -140,19 +140,19 @@
     @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
     private Long isabnormal;
 
-    /**
-     * 棰勮闃�鍊间笂闄�
-     */
-    @Excel(name = "棰勮闃�鍊间笂闄�")
-    @ApiModelProperty(value = "棰勮闃�鍊间笂闄�")
-    private Long warnup;
-
-    /**
-     * 棰勮闃�鍊间笅闄�
-     */
-    @Excel(name = "棰勮闃�鍊间笅闄�")
-    @ApiModelProperty(value = "棰勮闃�鍊间笅闄�")
-    private Long warndown;
+//    /**
+//     * 棰勮闃�鍊间笂闄�
+//     */
+//    @Excel(name = "棰勮闃�鍊间笂闄�")
+//    @ApiModelProperty(value = "棰勮闃�鍊间笂闄�")
+//    private Long warnup;
+//
+//    /**
+//     * 棰勮闃�鍊间笅闄�
+//     */
+//    @Excel(name = "棰勮闃�鍊间笅闄�")
+//    @ApiModelProperty(value = "棰勮闃�鍊间笅闄�")
+//    private Long warndown;
 
     /**
      * 鍒犻櫎鏍囪
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java
index fca400f..8f224d4 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java
@@ -36,19 +36,19 @@
     @ApiModelProperty(value = "妯℃澘鍚� ")
     private String templateName;
 
-    /**
-     * 鎸囨爣id
-     */
-    @Excel(name = "鎸囨爣id")
-    @ApiModelProperty(value = "鎸囨爣id")
-    private Integer targetid;
-
-    /**
-     * 鎸囨爣鍚�
-     */
-    @Excel(name = "鎸囨爣鍚�")
-    @ApiModelProperty(value = "鎸囨爣鍚�")
-    private Integer targetname;
+//    /**
+//     * 鎸囨爣id
+//     */
+//    @Excel(name = "鎸囨爣id")
+//    @ApiModelProperty(value = "鎸囨爣id")
+//    private Integer targetid;
+//
+//    /**
+//     * 鎸囨爣鍚�
+//     */
+//    @Excel(name = "鎸囨爣鍚�")
+//    @ApiModelProperty(value = "鎸囨爣鍚�")
+//    private Integer targetname;
 
     /**
      * 娌夐粯鏃堕棿
@@ -56,20 +56,20 @@
     @Excel(name = "娌夐粯鏃堕棿")
     @ApiModelProperty(value = "娌夐粯鏃堕棿")
     private Long silencetime;
+//
+//    /**
+//     * 娌夐粯鎸佺画鏃堕棿
+//     */
+//    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+//    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
+//    private Long slienceRepeatTimes;
 
-    /**
-     * 娌夐粯鎸佺画鏃堕棿
-     */
-    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
-    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
-    private Long slienceRepeatTimes;
-
-    /**
-     * 鏃犲尮閰嶆椂闂�
-     */
-    @Excel(name = "鏃犲尮閰嶆椂闂�")
-    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
-    private Long nomatchRepeatTimes;
+//    /**
+//     * 鏃犲尮閰嶆椂闂�
+//     */
+//    @Excel(name = "鏃犲尮閰嶆椂闂�")
+//    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
+//    private Long nomatchRepeatTimes;
 
     /**
      * 绗竴娆¢棶棰樼紪鍙�
@@ -99,46 +99,46 @@
     @ApiModelProperty(value = "鎻忚堪")
     private String note;
 
-    /**
-     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
-     */
-    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
-    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=閫夐」,2=鏂囨湰,3=鏁板��")
-    private Long valueType;
+//    /**
+//     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+//     */
+//    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+//    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=閫夐」,2=鏂囨湰,3=鏁板��")
+//    private Long valueType;
+//
+//
+//    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
+//    private String reply;
 
-
-    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
-    private String reply;
-
-    /**
-     * 鏂板鐢ㄦ埛ID
-     */
-    @Excel(name = "鏂板鐢ㄦ埛ID")
-    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
-    private String addUserID;
-
-    /**
-     * 鏂板鏃堕棿
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
-    @ApiModelProperty(value = "鏂板鏃堕棿")
-    private Date addTime;
-
-    /**
-     * 淇敼鐢ㄦ埛ID
-     */
-    @Excel(name = "淇敼鐢ㄦ埛ID")
-    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
-    private String modifyUserID;
-
-    /**
-     * 淇敼鏃堕棿
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
-    @ApiModelProperty(value = "淇敼鏃堕棿")
-    private Date modifyTime;
+//    /**
+//     * 鏂板鐢ㄦ埛ID
+//     */
+//    @Excel(name = "鏂板鐢ㄦ埛ID")
+//    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
+//    private String addUserID;
+//
+//    /**
+//     * 鏂板鏃堕棿
+//     */
+//    @JsonFormat(pattern = "yyyy-MM-dd")
+//    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+//    @ApiModelProperty(value = "鏂板鏃堕棿")
+//    private Date addTime;
+//
+//    /**
+//     * 淇敼鐢ㄦ埛ID
+//     */
+//    @Excel(name = "淇敼鐢ㄦ埛ID")
+//    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
+//    private String modifyUserID;
+//
+//    /**
+//     * 淇敼鏃堕棿
+//     */
+//    @JsonFormat(pattern = "yyyy-MM-dd")
+//    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+//    @ApiModelProperty(value = "淇敼鏃堕棿")
+//    private Date modifyTime;
 
     /**
      * 鍒嗙粍ID
@@ -181,13 +181,13 @@
     @Excel(name = "鐤剧梾鍏宠仈鍚嶇О")
     @ApiModelProperty(value = "鐤剧梾鍏宠仈鍚嶇О")
     private String icd10codename;
-
-    /**
-     * atuoTaskDayOffset
-     */
-    @Excel(name = "atuoTaskDayOffset")
-    @ApiModelProperty(value = "atuoTaskDayOffset")
-    private Long atuoTaskDayOffset;
+//
+//    /**
+//     * atuoTaskDayOffset
+//     */
+//    @Excel(name = "atuoTaskDayOffset")
+//    @ApiModelProperty(value = "atuoTaskDayOffset")
+//    private Long atuoTaskDayOffset;
 
     /**
      * 閮ㄩ棬ID
@@ -203,12 +203,12 @@
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
     private String deptNames = "";
 
-    /**
-     * F_KSDM
-     */
-    @Excel(name = "F_KSDM")
-    @ApiModelProperty(value = "F_KSDM")
-    private String fKsdm;
+//    /**
+//     * F_KSDM
+//     */
+//    @Excel(name = "F_KSDM")
+//    @ApiModelProperty(value = "F_KSDM")
+//    private String fKsdm;
 
     /**
      * 鍒犻櫎鏍囪
@@ -329,12 +329,12 @@
     @ApiModelProperty(value = "闈欓粯娆℃暟")
     private Long noVoiceNum = 0L;
 
-    /**
-     * 鏍囩
-     */
-    @Excel(name = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
-    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
-    private String otherdata;
+//    /**
+//     * 鏍囩
+//     */
+//    @Excel(name = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+//    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+//    private String otherdata;
 
     /**
      * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTask.java b/smartor/src/main/java/com/smartor/domain/IvrTask.java
index 9f014bb..20048e8 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTask.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTask.java
@@ -38,7 +38,19 @@
      */
     @Excel(name = "妯℃澘ID ")
     @ApiModelProperty(value = "妯℃澘ID")
-    private String templateid;
+    private Long templateid;
+
+    /**
+     * 妯℃澘搴撴ā鐗堝悕绉�
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
+    private String libtemplatename;
+
+    /**
+     * 妯℃澘搴撴ā鐗圛D
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗圛D")
+    private String libtemplateid;
 
     /**
      * 妯℃澘鍚嶇О
@@ -54,12 +66,12 @@
     @ApiModelProperty(value = "鏍囩淇℃伅")
     private String labelinfo;
 
-    /**
-     * 鐘舵��
-     */
-    @Excel(name = "鐘舵��")
-    @ApiModelProperty(value = "鐘舵��")
-    private Long state;
+//    /**
+//     * 鐘舵��
+//     */
+//    @Excel(name = "鐘舵��")
+//    @ApiModelProperty(value = "鐘舵��")
+//    private Long state;
 
     /**
      * 鏁伴噺
@@ -147,26 +159,34 @@
     @ApiModelProperty(value = "绫诲瀷鍚嶇О")
     private String typename;
 
-    /**
-     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊
-     */
-    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 ")
-    @ApiModelProperty(value = "绉戝鍚嶇О")
-    private Long usebqsms;
 
     /**
-     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊
+     * 绫诲瀷鍚嶇О
      */
-    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 ")
-    @ApiModelProperty(value = "0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 ")
-    private Long usebhsms;
+    @Excel(name = "鍙戦�佹椂闂存")
+    @ApiModelProperty(value = "鍙戦�佹椂闂存")
+    private String sendTimeSlot;
 
-    /**
-     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊
-     */
-    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 ")
-    @ApiModelProperty(value = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 ")
-    private Long usesendsms;
+//    /**
+//     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊
+//     */
+//    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 ")
+//    @ApiModelProperty(value = "绉戝鍚嶇О")
+//    private Long usebqsms;
+//
+//    /**
+//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊
+//     */
+//    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 ")
+//    @ApiModelProperty(value = "0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 ")
+//    private Long usebhsms;
+//
+//    /**
+//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊
+//     */
+//    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 ")
+//    @ApiModelProperty(value = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 ")
+//    private Long usesendsms;
 
     /**
      * 閮ㄩ棬code
@@ -238,12 +258,12 @@
     @ApiModelProperty(value = "鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 ")
     private String sendState;
 
-    /**
-     * 鏂囨湰鍙橀噺鍙傛暟
-     */
-    @Excel(name = " 鏂囨湰鍙橀噺鍙傛暟 ")
-    @ApiModelProperty(value = "鏂囨湰鍙橀噺鍙傛暟 ")
-    private String param;
+//    /**
+//     * 鏂囨湰鍙橀噺鍙傛暟
+//     */
+//    @Excel(name = " 鏂囨湰鍙橀噺鍙傛暟 ")
+//    @ApiModelProperty(value = "鏂囨湰鍙橀噺鍙傛暟 ")
+//    private String param;
 
     /**
      * pageNum
@@ -264,12 +284,12 @@
     @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛�")
     private String hospType;
 
-    /**
-     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
-     */
-    @Excel(name = "  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  ")
-    @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
-    private String hospno;
+//    /**
+//     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
+//     */
+//    @Excel(name = "  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  ")
+//    @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
+//    private String hospno;
 
     /**
      * 浠诲姟鎻忚堪
@@ -277,4 +297,11 @@
     @Excel(name = "浠诲姟鎻忚堪")
     @ApiModelProperty(value = "浠诲姟鎻忚堪")
     private String taskDesc;
+
+    /**
+     * 鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1
+     */
+    @Excel(name = "鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1")
+    @ApiModelProperty(value = "鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1")
+    private Long stopState = 0L;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java b/smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java
index 586d06c..b867392 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskSingle.java
@@ -3,6 +3,7 @@
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.ruoyi.common.annotation.Excel;
@@ -14,9 +15,9 @@
  * @author ruoyi
  * @date 2024-02-02
  */
+@ApiModel(value = "IvrTaskSingle", description = "鍗曚竴闅忚浠诲姟")
 @Data
 public class IvrTaskSingle extends BaseEntity {
-    @ApiModelProperty(value = "鍗曚竴浠诲姟锛堥殢璁匡級")
     private static final long serialVersionUID = 1L;
 
     /**
@@ -93,7 +94,7 @@
      */
     @Excel(name = "  妯℃澘ID")
     @ApiModelProperty(value = "妯℃澘ID")
-    private String templateid;
+    private Long templateid;
 
     /**
      * 妯℃澘鍚�
@@ -182,32 +183,11 @@
     private Date finishtime;
 
     /**
-     * 鐢ㄦ埛ID
-     */
-    @Excel(name = " 鐢ㄦ埛ID ")
-    @ApiModelProperty(value = "鐢ㄦ埛ID")
-    private String userid;
-
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    @Excel(name = " 鐢ㄦ埛鍚� ")
-    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
-    private String username;
-
-    /**
      * 灏辫瘖璁板綍缂栧彿
      */
     @Excel(name = " 灏辫瘖璁板綍缂栧彿 ")
     @ApiModelProperty(value = "灏辫瘖璁板綍缂栧彿")
     private Long recordid;
-
-    /**
-     * 閲嶆嫧鎬绘暟
-     */
-    @Excel(name = " 閲嶆嫧鎬绘暟 ")
-    @ApiModelProperty(value = "閲嶆嫧鎬绘暟")
-    private Long recallcount;
 
     /**
      * 褰撳墠閲嶆嫧娆℃暟
@@ -223,20 +203,6 @@
     @Excel(name = " 鎷夊彇鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "鎷夊彇鏃堕棿")
     private Date pulltime;
-
-    /**
-     * bqsms
-     */
-    @Excel(name = " bqsms ")
-    @ApiModelProperty(value = "bqsms")
-    private Long bqsms;
-
-    /**
-     * bhsms
-     */
-    @Excel(name = " bhsms ")
-    @ApiModelProperty(value = "bhsms")
-    private Long bhsms;
 
     /**
      * 閮ㄩ棬code
@@ -316,27 +282,6 @@
     private String bedNo;
 
     /**
-     * 鐤剧梾鍚嶇О
-     */
-    @Excel(name = "鐤剧梾鍚嶇О")
-    @ApiModelProperty(value = "鐤剧梾鍚嶇О")
-    private String icdName;
-
-    /**
-     * 鐥呭巻鍙�
-     */
-    @Excel(name = "鐥呭巻鍙�")
-    @ApiModelProperty(value = "鐥呭巻鍙�")
-    private String medicalRecordNo;
-
-    /**
-     * 瀹f暀鍐呭
-     */
-    @Excel(name = "瀹f暀鍐呭")
-    @ApiModelProperty(value = "瀹f暀鍐呭")
-    private String preachcontent;
-
-    /**
      * pageNum
      */
     @Excel(name = "pageNum")
@@ -356,14 +301,6 @@
      */
     @ApiModelProperty(value = "鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦��")
     private String sendType;
-
-
-    /**
-     * 鍙戦�佹椂闂存
-     */
-    @Excel(name = "鍙戦�佹椂闂存")
-    @ApiModelProperty(value = "鍙戦�佹椂闂存")
-    private String sendTimeSlot;
 
     /**
      * 浠诲姟鍚嶇О
@@ -444,4 +381,19 @@
     @ApiModelProperty(value = "鐥呮埧鍙�")
     private String roomno;
 
+    /**
+     * 妯℃澘搴撴ā鐗圛D
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗圛D")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗圛D")
+    private Long libtemplateid;
+
+    /**
+     * 妯℃澘搴撴ā鐗堝悕绉�
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗堝悕绉�")
+    private String libtemplatename;
+
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java
index 8801654..d57a4de 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskSingleVO.java
@@ -3,6 +3,7 @@
 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;
 
@@ -16,6 +17,7 @@
  * @author ruoyi
  * @date 2024-02-02
  */
+@ApiModel(value = "IvrTaskSingleVO", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
 @Data
 public class IvrTaskSingleVO extends BaseEntity {
     private static final long serialVersionUID = 1L;
@@ -94,7 +96,21 @@
      */
     @Excel(name = "  妯℃澘ID")
     @ApiModelProperty(value = "妯℃澘ID")
-    private String templateid;
+    private Long templateid;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "  妯$増搴撴ā鏉縄D")
+    @ApiModelProperty(value = "妯$増搴撴ā鏉縄D")
+    private Long libtemplateid;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "  妯℃澘搴撴ā鏉垮悕绉�")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鏉垮悕绉�")
+    private String libtemplatename;
 
     /**
      * 妯℃澘鍚�
@@ -163,15 +179,9 @@
      * 鍙戦�佺姸鎬�
      */
     @Excel(name = " 鍙戦�佺姸鎬� ")
-    @ApiModelProperty(value = "鍙戦�佺姸鎬� 锛�1 寮�濮�  2 涓  3 缁撴潫")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚")
     private Long sendstate;
 
-    /**
-     * 鍙戦�乁UID
-     */
-    @Excel(name = " 鍙戦�乁UID ")
-    @ApiModelProperty(value = "鍙戦�乁UID")
-    private String senduuid;
 
     /**
      * 缁撴灉
@@ -188,20 +198,6 @@
     @ApiModelProperty(value = "瀹屾垚鏃堕棿")
     private Date finishtime;
 
-    /**
-     * 鐢ㄦ埛ID
-     */
-    @Excel(name = " 鐢ㄦ埛ID ")
-    @ApiModelProperty(value = "鐢ㄦ埛ID")
-    private String userid;
-
-    /**
-     * 鐢ㄦ埛鍚�
-     */
-    @Excel(name = " 鐢ㄦ埛鍚� ")
-    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
-    private String username;
-
 
     /**
      * 灏辫瘖璁板綍缂栧彿
@@ -210,12 +206,6 @@
     @ApiModelProperty(value = "灏辫瘖璁板綍缂栧彿")
     private Long recordid;
 
-    /**
-     * 閲嶆嫧鎬绘暟
-     */
-    @Excel(name = " 閲嶆嫧鎬绘暟 ")
-    @ApiModelProperty(value = "閲嶆嫧鎬绘暟")
-    private Long recallcount;
 
     /**
      * 褰撳墠閲嶆嫧娆℃暟
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java
new file mode 100644
index 0000000..e5b8b60
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplate.java
@@ -0,0 +1,382 @@
+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_template
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Data
+@ApiModel(value = "IvrTaskTemplate", description = "闅忚浠诲姟闅忚妯℃澘搴撳璞�")
+public class IvrTaskTemplate extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 浠诲姟id
+     */
+    @Excel(name = "浠诲姟id")
+    @ApiModelProperty(value = "浠诲姟id")
+    private Long taskid;
+
+    /**
+     * 浠诲姟鍚嶇О
+     */
+    @Excel(name = "浠诲姟鍚嶇О")
+    @ApiModelProperty(value = "浠诲姟鍚嶇О")
+    private String taskname;
+
+    /**
+     * 鎸囨爣id
+     */
+    @Excel(name = "鎸囨爣id")
+    @ApiModelProperty(value = "鎸囨爣id")
+    private Long targetid;
+
+    /**
+     * 鎸囨爣鍚�
+     */
+    @Excel(name = "鎸囨爣鍚�")
+    @ApiModelProperty(value = "鎸囨爣鍚�")
+    private String targetname;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private String templateName;
+
+    /**
+     * 娌夐粯鏃堕棿
+     */
+    @Excel(name = "娌夐粯鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鏃堕棿")
+    private Long silencetime;
+
+    /**
+     * 鍏佽閲嶆嫧娆℃暟
+     */
+    @Excel(name = "鍏佽閲嶆嫧娆℃暟")
+    @ApiModelProperty(value = "鍏佽閲嶆嫧娆℃暟")
+    private Long recallcount;
+
+    /**
+     * 娌夐粯鎸佺画鏃堕棿
+     */
+    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
+    private Long slienceRepeatTimes;
+
+    /**
+     * 鏃犲尮閰嶆椂闂�
+     */
+    @Excel(name = "鏃犲尮閰嶆椂闂�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
+    private Long nomatchRepeatTimes;
+
+    /**
+     * 绗竴娆¢棶棰樼紪鍙�
+     */
+    @Excel(name = "绗竴娆¢棶棰樼紪鍙�")
+    @ApiModelProperty(value = "绗竴娆¢棶棰樼紪鍙�")
+    private Long firstQuestionNum;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳")
+    private String submodule;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鎻忚堪
+     */
+    @Excel(name = "鎻忚堪")
+    @ApiModelProperty(value = "鎻忚堪")
+    private String note;
+
+    /**
+     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�
+     */
+    @Excel(name = "鍥炲", readConverterExp = "鎸�=闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑")
+    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
+    private String reply;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long valueType;
+
+    /**
+     * 鏂板鐢ㄦ埛ID
+     */
+    @Excel(name = "鏂板鐢ㄦ埛ID")
+    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
+    private String addUserID;
+
+    /**
+     * 鏂板鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏂板鏃堕棿")
+    private Date addTime;
+
+    /**
+     * 淇敼鐢ㄦ埛ID
+     */
+    @Excel(name = "淇敼鐢ㄦ埛ID")
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
+    private String modifyUserID;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    private Date modifyTime;
+
+    /**
+     * 鍒嗙粍ID
+     */
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
+    private String groupID;
+
+    /**
+     * 鏍囩淇℃伅
+     */
+    @Excel(name = "鏍囩淇℃伅")
+    @ApiModelProperty(value = "鏍囩淇℃伅")
+    private String labelInfo;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳id锛堥�氱敤妯℃澘ID锛�
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳id", readConverterExp = "閫�=鐢ㄦā鏉縄D")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳id锛堥�氱敤妯℃澘ID锛�")
+    private String submoduleID;
+
+    /**
+     * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
+     */
+    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    @ApiModelProperty(value = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    private Long playType;
+
+    /**
+     * 鐤剧梾鍏宠仈
+     */
+    @Excel(name = "鐤剧梾鍏宠仈")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈")
+    private String icd10code;
+
+    /**
+     * 鐤剧梾鍏宠仈鍚嶇О
+     */
+    @Excel(name = "鐤剧梾鍏宠仈鍚嶇О")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈鍚嶇О")
+    private String icd10codename;
+
+    /**
+     * atuoTaskDayOffset
+     */
+    @Excel(name = "atuoTaskDayOffset")
+    @ApiModelProperty(value = "atuoTaskDayOffset")
+    private Long atuoTaskDayOffset;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private String deptIds;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
+    private String deptNames;
+
+    /**
+     * F_KSDM
+     */
+    @Excel(name = "F_KSDM")
+    @ApiModelProperty(value = "绉戝浠g爜")
+    private String fKsdm;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    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;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒嗙被id
+     */
+    @Excel(name = "鍒嗙被id")
+    @ApiModelProperty(value = "鍒嗙被id")
+    private Long assortid;
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty(value = "鍙傛暟鍙橀噺")
+    private String parameter;
+
+    /**
+     * 鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)
+     */
+    @Excel(name = "鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)")
+    @ApiModelProperty(value = "鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)")
+    private String usestate;
+
+    /**
+     * 鐗堟湰鍙�
+     */
+    @Excel(name = "鐗堟湰鍙�")
+    @ApiModelProperty(value = "鐗堟湰鍙�")
+    private String version;
+
+    /**
+     * 闄㈠尯
+     */
+    @Excel(name = "闄㈠尯")
+    @ApiModelProperty(value = "闄㈠尯")
+    private String campus;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @ApiModelProperty(value = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+    /**
+     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級
+     */
+    @Excel(name = "鍏跺畠鏁版嵁", readConverterExp = "瀛�=鍌ㄥ彉閲�")
+    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+    private String otherdata;
+
+    /**
+     * 鏃犲尮閰嶆鏁�
+     */
+    @Excel(name = "鏃犲尮閰嶆鏁�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆鏁�")
+    private Long mateNum;
+
+    /**
+     * 闅忚鍓�
+     */
+    @Excel(name = "闅忚鍓�")
+    @ApiModelProperty(value = "闅忚鍓�")
+    private String revisitBefore;
+
+    /**
+     * 闅忚鍚�
+     */
+    @Excel(name = "闅忚鍚�")
+    @ApiModelProperty(value = "闅忚鍚�")
+    private String revisitAfter;
+
+    /**
+     * 闈欓粯娆℃暟
+     */
+    @Excel(name = "闈欓粯娆℃暟")
+    @ApiModelProperty(value = "闈欓粯娆℃暟")
+    private Long noVoiceNum;
+
+    /**
+     * 寮�鍦虹櫧
+     */
+    @Excel(name = "寮�鍦虹櫧")
+    @ApiModelProperty(value = "寮�鍦虹櫧")
+    private String prologue;
+
+    /**
+     * 妯℃澘搴撴ā鐗圛D
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗圛D")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗圛D")
+    private String libtemplateid;
+
+    /**
+     * 妯℃澘搴撴ā鐗堝悕绉�
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗堝悕绉�")
+    private String libtemplatename;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
new file mode 100644
index 0000000..2f45668
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
@@ -0,0 +1,268 @@
+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_template_script
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Data
+@ApiModel(value = "IvrTaskTemplateScript", description = "闅忚浠诲姟妯$増闂璇濇湳搴撳璞�")
+public class IvrTaskTemplateScript extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 浠诲姟id
+     */
+    @Excel(name = "浠诲姟id")
+    @ApiModelProperty(value = "浠诲姟id")
+    private Long taskid;
+
+    /**
+     * 妯℃澘璇濇湳缂栧彿
+     */
+    @Excel(name = "妯℃澘璇濇湳缂栧彿")
+    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
+    private Long templateQuestionNum;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 璇濇湳ID
+     */
+    @Excel(name = "璇濇湳ID")
+    @ApiModelProperty(value = "璇濇湳ID")
+    private Long scriptID;
+
+    /**
+     * 闂鐐�
+     */
+    @Excel(name = "闂鐐�")
+    @ApiModelProperty(value = "闂鐐�")
+    private String questionPoint;
+
+    /**
+     * 璇濇湳鍐呭
+     */
+    @Excel(name = "璇濇湳鍐呭")
+    @ApiModelProperty(value = "璇濇湳鍐呭")
+    private String questionText;
+
+    /**
+     * 璇濇湳璇煶
+     */
+    @Excel(name = "璇濇湳璇煶")
+    @ApiModelProperty(value = "璇濇湳璇煶")
+    private String questionVoice;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈�")
+    private String noMatchText;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈闊�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈闊�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈闊�")
+    private String noMatchVoice;
+
+    /**
+     * 闈欓粯璇濇湳
+     */
+    @Excel(name = "闈欓粯璇濇湳")
+    @ApiModelProperty(value = "闈欓粯璇濇湳")
+    private String slienceText;
+
+    /**
+     * 闈欓粯璇濇湳璇煶
+     */
+    @Excel(name = "闈欓粯璇濇湳璇煶")
+    @ApiModelProperty(value = "闈欓粯璇濇湳璇煶")
+    private String slienceVoice;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    private String submoduleText;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    private String submoduleVoice;
+
+    /**
+     * 鍚笉娓呰瘽鏈�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈�")
+    private String noClearlyText;
+
+    /**
+     * 鍚笉娓呰瘽鏈闊�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈闊�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈闊�")
+    private String noClearlyVoice;
+
+    /**
+     * 绫诲埆鍚�
+     */
+    @Excel(name = "绫诲埆鍚�")
+    @ApiModelProperty(value = "绫诲埆鍚�")
+    private String categoryName;
+
+    /**
+     * 鎸囨爣閫夐」
+     */
+    @Excel(name = "鎸囨爣閫夐」")
+    @ApiModelProperty(value = "鎸囨爣閫夐」")
+    private String targetOptions;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鍙兘鎾斁WAV绫诲瀷
+     */
+    @Excel(name = "鍙兘鎾斁WAV绫诲瀷")
+    @ApiModelProperty(value = "鍙兘鎾斁WAV绫诲瀷")
+    private Long playWavOnly;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    @ApiModelProperty(value = "涓婚敭")
+    private Long valueType;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    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;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍩虹鎸囨爣绫诲瀷
+     */
+    @Excel(name = "鍩虹鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "鍩虹鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
+     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)
+     */
+    @Excel(name = "鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)")
+    @ApiModelProperty(value = "鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)")
+    private Long targetid;
+
+    /**
+     * 鍩虹鎸囨爣鍊�
+     */
+    @Excel(name = "鍩虹鎸囨爣鍊�")
+    @ApiModelProperty(value = "鍩虹鎸囨爣鍊�")
+    private String targetvalue;
+
+    /**
+     * 鏍囬
+     */
+    @Excel(name = "鏍囬")
+    @ApiModelProperty(value = "鏍囬")
+    private String questiontitle;
+
+    /**
+     * 涓嬩竴棰�
+     */
+    @Excel(name = "涓嬩竴棰�")
+    @ApiModelProperty(value = "涓嬩竴棰�")
+    private Long nextQuestion;
+
+    /**
+     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級
+     */
+    @Excel(name = "鍏跺畠鏁版嵁", readConverterExp = "瀛�=鍌ㄥ彉閲�")
+    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+    private String otherdata;
+
+    /**
+     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�
+     */
+    @Excel(name = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    ", readConverterExp = "缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧")
+    @ApiModelProperty(value = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�")
+    private String isMust;
+
+    /**
+     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
+     */
+    @Excel(name = "闂缁撴灉", readConverterExp = "缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
+    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+    private String questionResult;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
new file mode 100644
index 0000000..f967a45
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
@@ -0,0 +1,282 @@
+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;
+
+/**
+ * 闅忚浠诲姟妯$増闂璇濇湳搴撳璞� ivr_task_template_script
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Data
+@ApiModel(value = "IvrTaskTemplateScriptVO", description = "闅忚浠诲姟妯$増闂璇濇湳搴撳璞�")
+public class IvrTaskTemplateScriptVO extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 浠诲姟id
+     */
+    @Excel(name = "浠诲姟id")
+    @ApiModelProperty(value = "浠诲姟id")
+    private Long taskid;
+
+    /**
+     * 妯℃澘璇濇湳缂栧彿
+     */
+    @Excel(name = "妯℃澘璇濇湳缂栧彿")
+    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
+    private Long templateQuestionNum;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 璇濇湳ID
+     */
+    @Excel(name = "璇濇湳ID")
+    @ApiModelProperty(value = "璇濇湳ID")
+    private Long scriptID;
+
+    /**
+     * 闂鐐�
+     */
+    @Excel(name = "闂鐐�")
+    @ApiModelProperty(value = "闂鐐�")
+    private String questionPoint;
+
+    /**
+     * 璇濇湳鍐呭
+     */
+    @Excel(name = "璇濇湳鍐呭")
+    @ApiModelProperty(value = "璇濇湳鍐呭")
+    private String questionText;
+
+    /**
+     * 璇濇湳璇煶
+     */
+    @Excel(name = "璇濇湳璇煶")
+    @ApiModelProperty(value = "璇濇湳璇煶")
+    private String questionVoice;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈�")
+    private String noMatchText;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈闊�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈闊�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈闊�")
+    private String noMatchVoice;
+
+    /**
+     * 闈欓粯璇濇湳
+     */
+    @Excel(name = "闈欓粯璇濇湳")
+    @ApiModelProperty(value = "闈欓粯璇濇湳")
+    private String slienceText;
+
+    /**
+     * 闈欓粯璇濇湳璇煶
+     */
+    @Excel(name = "闈欓粯璇濇湳璇煶")
+    @ApiModelProperty(value = "闈欓粯璇濇湳璇煶")
+    private String slienceVoice;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    private String submoduleText;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    private String submoduleVoice;
+
+    /**
+     * 鍚笉娓呰瘽鏈�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈�")
+    private String noClearlyText;
+
+    /**
+     * 鍚笉娓呰瘽鏈闊�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈闊�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈闊�")
+    private String noClearlyVoice;
+
+    /**
+     * 绫诲埆鍚�
+     */
+    @Excel(name = "绫诲埆鍚�")
+    @ApiModelProperty(value = "绫诲埆鍚�")
+    private String categoryName;
+
+    /**
+     * 鎸囨爣閫夐」
+     */
+    @Excel(name = "鎸囨爣閫夐」")
+    @ApiModelProperty(value = "鎸囨爣閫夐」")
+    private String targetOptions;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鍙兘鎾斁WAV绫诲瀷
+     */
+    @Excel(name = "鍙兘鎾斁WAV绫诲瀷")
+    @ApiModelProperty(value = "鍙兘鎾斁WAV绫诲瀷")
+    private Long playWavOnly;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    @ApiModelProperty(value = "涓婚敭")
+    private Long valueType;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    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;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍩虹鎸囨爣绫诲瀷
+     */
+    @Excel(name = "鍩虹鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "鍩虹鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
+     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)
+     */
+    @Excel(name = "鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)")
+    @ApiModelProperty(value = "鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)")
+    private Long targetid;
+
+    /**
+     * 鍩虹鎸囨爣鍊�
+     */
+    @Excel(name = "鍩虹鎸囨爣鍊�")
+    @ApiModelProperty(value = "鍩虹鎸囨爣鍊�")
+    private String targetvalue;
+
+    /**
+     * 鏍囬
+     */
+    @Excel(name = "鏍囬")
+    @ApiModelProperty(value = "鏍囬")
+    private String questiontitle;
+
+    /**
+     * 涓嬩竴棰�
+     */
+    @Excel(name = "涓嬩竴棰�")
+    @ApiModelProperty(value = "涓嬩竴棰�")
+    private Long nextQuestion;
+
+    /**
+     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級
+     */
+    @Excel(name = "鍏跺畠鏁版嵁", readConverterExp = "瀛�=鍌ㄥ彉閲�")
+    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+    private String otherdata;
+
+    /**
+     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�
+     */
+    @Excel(name = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    ", readConverterExp = "缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧")
+    @ApiModelProperty(value = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�")
+    private String isMust;
+
+    /**
+     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
+     */
+    @Excel(name = "闂缁撴灉", readConverterExp = "缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
+    @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
+    private String questionResult;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+    /**
+     * 璇濇湳閫夐」
+     */
+    @ApiModelProperty(value = "璇濇湳閫夐」")
+    private List<IvrTaskTemplateTargetoption> ivrTaskScriptTargetoptionList = new ArrayList<>();
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java
new file mode 100644
index 0000000..c3b6cc7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java
@@ -0,0 +1,239 @@
+package com.smartor.domain;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+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 org.junit.Ignore;
+
+/**
+ * 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳璞� ivr_task_template_targetoption
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Data
+@ApiModel(value = "IvrTaskTemplateTargetoption", description = "闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳璞�")
+public class IvrTaskTemplateTargetoption extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 浠诲姟id
+     */
+    @Excel(name = "浠诲姟id")
+    @ApiModelProperty(value = "浠诲姟id")
+    private Long taskid;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 鎸囨爣ID
+     */
+    @Excel(name = "鎸囨爣ID")
+    @ApiModelProperty(value = "鎸囨爣ID")
+    private Long targetid;
+
+    /**
+     * 鎸囨爣鍚嶇О
+     */
+    @Excel(name = "鎸囨爣鍚嶇О")
+    @ApiModelProperty(value = "鎸囨爣鍚嶇О")
+    private String targetname;
+
+    /**
+     * 妯℃澘鎸囨爣绫诲瀷
+     */
+    @Excel(name = "妯℃澘鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
+     * 绫诲埆鍚嶇О
+     */
+    @Excel(name = "绫诲埆鍚嶇О")
+    @ApiModelProperty(value = "绫诲埆鍚嶇О")
+    private String categoryName;
+
+    /**
+     * 妯℃澘鎸囨爣鍊�
+     */
+    @Excel(name = "妯℃澘鎸囨爣鍊�")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣鍊�")
+    private String targetvalue;
+
+    /**
+     * 妯℃澘鎸囨爣姝e垯2
+     */
+    @Excel(name = "妯℃澘鎸囨爣姝e垯2")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣姝e垯2")
+    private String targetregex2;
+
+    /**
+     * 妯℃澘鎸囨爣姝e垯
+     */
+    @Excel(name = "妯℃澘鎸囨爣姝e垯")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣姝e垯")
+    private String targetregex;
+
+    /**
+     * 閫夐」鎻忚堪
+     */
+    @Excel(name = "閫夐」鎻忚堪")
+    @ApiModelProperty(value = "閫夐」鎻忚堪")
+    private String optiondesc;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鐗堟湰
+     */
+    @Excel(name = "鐗堟湰")
+    @ApiModelProperty(value = "鐗堟湰")
+    private String version;
+
+    /**
+     * 鍒嗙粍ID
+     */
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
+    private String groupid;
+
+    /**
+     * 鏄惁寮傚父鏍囪瘑
+     */
+    @Excel(name = "鏄惁寮傚父鏍囪瘑")
+    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
+    private Long isabnormal;
+
+    /**
+     * 棰勮闃�鍊间笂闄�
+     */
+    @Excel(name = "棰勮闃�鍊间笂闄�")
+    @ApiModelProperty(value = "棰勮闃�鍊间笂闄�")
+    private Long warnup;
+
+    /**
+     * 棰勮闃�鍊间笅闄�
+     */
+    @Excel(name = "棰勮闃�鍊间笅闄�")
+    @ApiModelProperty(value = "棰勮闃�鍊间笅闄�")
+    private Long warndown;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    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;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 闂id
+     */
+    @Excel(name = "闂id")
+    @ApiModelProperty(value = "闂id")
+    private Long scriptid;
+
+    /**
+     * 姝e垯鍏抽敭瀛�(鍚�)
+     */
+    @Excel(name = "姝e垯鍏抽敭瀛�(鍚�)")
+    @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(鍚�)")
+    private String nodynamiccruxsJson;
+
+
+    /**
+     * 姝e垯鍏抽敭瀛�(涓嶅惈)
+     */
+    @Excel(name = "姝e垯鍏抽敭瀛�(涓嶅惈)")
+    @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(涓嶅惈)")
+    private String dynamiccruxsJson;
+
+
+    @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(鍚�)")
+    @Excel(name = "姝e垯鍏抽敭瀛�(鍚�)")
+    private List<String> nodynamiccruxs = new ArrayList<>();
+
+    @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(涓嶅惈)")
+    @Excel(name = "姝e垯鍏抽敭瀛�(涓嶅惈)")
+    private List<String> dynamiccruxs= new ArrayList<>();
+
+    /**
+     * 涓嬩竴棰�
+     */
+    @Excel(name = "涓嬩竴棰�")
+    @ApiModelProperty(value = "涓嬩竴棰�")
+    private Long nextQuestion;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+    /**
+     * 鏄惁鏄敤鎴烽�夋嫨鐨勯�夐」
+     */
+    @ApiModelProperty(value = "鏄惁鏄敤鎴烽�夋嫨鐨勯�夐」")
+    private Boolean isUserOperation = false;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java
new file mode 100644
index 0000000..9bba1e6
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateVO.java
@@ -0,0 +1,399 @@
+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;
+
+/**
+ * 闅忚浠诲姟闅忚妯℃澘搴撳璞� ivr_task_template
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Data
+@ApiModel(value = "IvrTaskTemplateVO", description = "闅忚浠诲姟闅忚妯℃澘搴撳璞�")
+public class IvrTaskTemplateVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 浠诲姟id
+     */
+    @Excel(name = "浠诲姟id")
+    @ApiModelProperty(value = "浠诲姟id")
+    private Long taskid;
+
+    /**
+     * 浠诲姟鍚嶇О
+     */
+    @Excel(name = "浠诲姟鍚嶇О")
+    @ApiModelProperty(value = "浠诲姟鍚嶇О")
+    private String taskname;
+
+    /**
+     * 鎸囨爣id
+     */
+    @Excel(name = "鎸囨爣id")
+    @ApiModelProperty(value = "鎸囨爣id")
+    private Long targetid;
+
+    /**
+     * 鎸囨爣鍚�
+     */
+    @Excel(name = "鎸囨爣鍚�")
+    @ApiModelProperty(value = "鎸囨爣鍚�")
+    private String targetname;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private String templateName;
+
+    /**
+     * 娌夐粯鏃堕棿
+     */
+    @Excel(name = "娌夐粯鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鏃堕棿")
+    private Long silencetime;
+
+    /**
+     * 娌夐粯鎸佺画鏃堕棿
+     */
+    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
+    private Long slienceRepeatTimes;
+
+    /**
+     * 鏃犲尮閰嶆椂闂�
+     */
+    @Excel(name = "鏃犲尮閰嶆椂闂�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
+    private Long nomatchRepeatTimes;
+
+    /**
+     * 绗竴娆¢棶棰樼紪鍙�
+     */
+    @Excel(name = "绗竴娆¢棶棰樼紪鍙�")
+    @ApiModelProperty(value = "绗竴娆¢棶棰樼紪鍙�")
+    private Long firstQuestionNum;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳")
+    private String submodule;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鎻忚堪
+     */
+    @Excel(name = "鎻忚堪")
+    @ApiModelProperty(value = "鎻忚堪")
+    private String note;
+
+    /**
+     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�
+     */
+    @Excel(name = "鍥炲", readConverterExp = "鎸�=闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑")
+    @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
+    private String reply;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long valueType;
+
+    /**
+     * 鏂板鐢ㄦ埛ID
+     */
+    @Excel(name = "鏂板鐢ㄦ埛ID")
+    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
+    private String addUserID;
+
+    /**
+     * 鏂板鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏂板鏃堕棿")
+    private Date addTime;
+
+    /**
+     * 淇敼鐢ㄦ埛ID
+     */
+    @Excel(name = "淇敼鐢ㄦ埛ID")
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
+    private String modifyUserID;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    private Date modifyTime;
+
+    /**
+     * 鍒嗙粍ID
+     */
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
+    private String groupID;
+
+    /**
+     * 鏍囩淇℃伅
+     */
+    @Excel(name = "鏍囩淇℃伅")
+    @ApiModelProperty(value = "鏍囩淇℃伅")
+    private String labelInfo;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳id锛堥�氱敤妯℃澘ID锛�
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳id", readConverterExp = "閫�=鐢ㄦā鏉縄D")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳id锛堥�氱敤妯℃澘ID锛�")
+    private String submoduleID;
+
+    /**
+     * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
+     */
+    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    @ApiModelProperty(value = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    private Long playType;
+
+    /**
+     * 鐤剧梾鍏宠仈
+     */
+    @Excel(name = "鐤剧梾鍏宠仈")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈")
+    private String icd10code;
+
+    /**
+     * 鐤剧梾鍏宠仈鍚嶇О
+     */
+    @Excel(name = "鐤剧梾鍏宠仈鍚嶇О")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈鍚嶇О")
+    private String icd10codename;
+
+    /**
+     * atuoTaskDayOffset
+     */
+    @Excel(name = "atuoTaskDayOffset")
+    @ApiModelProperty(value = "atuoTaskDayOffset")
+    private Long atuoTaskDayOffset;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private String deptIds;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
+    private String deptNames;
+
+    /**
+     * F_KSDM
+     */
+    @Excel(name = "F_KSDM")
+    @ApiModelProperty(value = "绉戝浠g爜")
+    private String fKsdm;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    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;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒嗙被id
+     */
+    @Excel(name = "鍒嗙被id")
+    @ApiModelProperty(value = "鍒嗙被id")
+    private Long assortid;
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty(value = "鍙傛暟鍙橀噺")
+    private String parameter;
+
+    /**
+     * 鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)
+     */
+    @Excel(name = "鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)")
+    @ApiModelProperty(value = "鍙敤鐘舵��(0鍙敤   1涓嶅彲鐢�)")
+    private String usestate;
+
+    /**
+     * 鐗堟湰鍙�
+     */
+    @Excel(name = "鐗堟湰鍙�")
+    @ApiModelProperty(value = "鐗堟湰鍙�")
+    private String version;
+
+    /**
+     * 闄㈠尯
+     */
+    @Excel(name = "闄㈠尯")
+    @ApiModelProperty(value = "闄㈠尯")
+    private String campus;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @ApiModelProperty(value = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+    /**
+     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級
+     */
+    @Excel(name = "鍏跺畠鏁版嵁", readConverterExp = "瀛�=鍌ㄥ彉閲�")
+    @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
+    private String otherdata;
+
+    /**
+     * 鏃犲尮閰嶆鏁�
+     */
+    @Excel(name = "鏃犲尮閰嶆鏁�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆鏁�")
+    private Long mateNum;
+
+    /**
+     * 闅忚鍓�
+     */
+    @Excel(name = "闅忚鍓�")
+    @ApiModelProperty(value = "闅忚鍓�")
+    private String revisitBefore;
+
+    /**
+     * 闅忚鍚�
+     */
+    @Excel(name = "闅忚鍚�")
+    @ApiModelProperty(value = "闅忚鍚�")
+    private String revisitAfter;
+
+    /**
+     * 闈欓粯娆℃暟
+     */
+    @Excel(name = "闈欓粯娆℃暟")
+    @ApiModelProperty(value = "闈欓粯娆℃暟")
+    private Long noVoiceNum;
+
+    /**
+     * 寮�鍦虹櫧
+     */
+    @Excel(name = "寮�鍦虹櫧")
+    @ApiModelProperty(value = "寮�鍦虹櫧")
+    private String prologue;
+
+    /**
+     * 妯℃澘搴撴ā鐗圛D
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗圛D")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗圛D")
+    private String libtemplateid;
+
+    /**
+     * 妯℃澘搴撴ā鐗堝悕绉�
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗堝悕绉�")
+    private String libtemplatename;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+
+    /**
+     * 鍏佽閲嶆嫧娆℃暟
+     */
+    @Excel(name = "鍏佽閲嶆嫧娆℃暟")
+    @ApiModelProperty(value = "鍏佽閲嶆嫧娆℃暟")
+    private String recallcount;
+
+    @ApiModelProperty(value = "妯℃澘闂闆嗗悎")
+    private List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList = new ArrayList<>();
+//
+//    @ApiModelProperty(value = "妯℃澘鎸囨爣闆嗗悎")
+//    private List<IvrLibaTemplateTag> ivrLibaTemplateTagList = new ArrayList<>();
+//
+//    @ApiModelProperty(value = "妯℃澘绉戝鍏宠仈琛ㄩ泦鍚�")
+//    private List<TempDetpRelevance> tempDetpRelevances = new ArrayList<>();
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
index 385927d..aa62d2e 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
@@ -9,6 +9,7 @@
 import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 璇煶浠诲姟瀵硅薄 ivr_task
@@ -42,7 +43,17 @@
      *
      */
     @Excel(name = "  ")
-    private String templateid;
+    private Long templateid;
+    /**
+     *
+     */
+    @Excel(name = "  ")
+    private Long libtemplateid;
+    /**
+     *
+     */
+    @Excel(name = "  ")
+    private String libtemplatename;
 
     /**
      *
@@ -210,5 +221,18 @@
     @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
     private String hospno;
 
+    /**
+     * 鍙戦�佹椂闂存
+     */
+    @ApiModelProperty(value = "鍙戦�佹椂闂存 ")
+    private List<TaskSendTimeVO> sendTimeslot;
+
+    /**
+     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛
+     */
+    @Excel(name = " 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 ")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 ")
+    private String sendState;
+
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskcallMQ.java b/smartor/src/main/java/com/smartor/domain/IvrTaskcallMQ.java
index a638b83..34ffec6 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskcallMQ.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskcallMQ.java
@@ -3,6 +3,7 @@
 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 org.apache.commons.lang3.builder.ToStringBuilder;
@@ -18,6 +19,7 @@
  * @author ruoyi
  * @date 2024-02-02
  */
+@ApiModel(value = "IvrTaskcallMQ", description = "MQ浠诲姟")
 @Data
 public class IvrTaskcallMQ extends BaseEntity {
     private static final long serialVersionUID = 1L;
@@ -37,11 +39,11 @@
     private String templateid;
 
     /**
-     * 妯℃澘绫诲瀷
+     * 浠诲姟鍙戦�佹柟寮忥細鈥滅數璇濓紝鐭俊锛屽叕浼楀彿锛岄摼鎺�...鈥濅互閫楀彿鍒嗛殧
      */
-    @Excel(name = "  妯℃澘绫诲瀷")
-    @ApiModelProperty(value = "妯℃澘绫诲瀷")
-    private String templateType;
+    @Excel(name = "浠诲姟鍙戦�佹柟寮忥細鐢佃瘽锛岀煭淇★紝鍏紬鍙凤紝閾炬帴...")
+    @ApiModelProperty(value = "鍔″彂閫佹柟寮忥細鐢佃瘽锛岀煭淇★紝鍏紬鍙凤紝閾炬帴...   浠ラ�楀彿鍒嗛殧")
+    private String servicefrom;
 
 
     /**
@@ -50,6 +52,12 @@
     @ApiModelProperty(value = "鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦��")
     private String sendType;
 
+    /**
+     * 鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1
+     */
+    @ApiModelProperty(value = "鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1")
+    private Long stopState;
+
 
     /**
      * 鍙戦�佹椂闂存
diff --git a/smartor/src/main/java/com/smartor/domain/QuestionMessage.java b/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
index 71476b7..6efc218 100644
--- a/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
+++ b/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
@@ -19,10 +19,10 @@
     private String jsy = null;
 
     //褰撳墠闂
-    private IvrLibaTemplateScriptVO nowQuestion = new IvrLibaTemplateScriptVO();
+    private IvrTaskTemplateScriptVO nowQuestion = new IvrTaskTemplateScriptVO();
 
     //闂娓呭崟
-    private List<IvrLibaTemplateScriptVO> questionList = new ArrayList();
+    private List<IvrTaskTemplateScriptVO> questionList = new ArrayList();
 
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SendTaskVO.java b/smartor/src/main/java/com/smartor/domain/SendTaskVO.java
new file mode 100644
index 0000000..c1f3fc3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SendTaskVO.java
@@ -0,0 +1,32 @@
+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;
+
+/**
+ * 鍙戦�佺被鍨嬪叆鍙�
+ */
+@ApiModel(value = "SendTaskVO", description = "鍙戦�佷换鍔″叆鍙�")
+@Data
+public class SendTaskVO extends BaseEntity {
+
+    @ApiModelProperty(value = "浠诲姟ID")
+    private Long taskId;
+
+    @ApiModelProperty(value = "鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦��")
+    private String sendType;
+
+    /**
+     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛
+     */
+    @Excel(name = " 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 ")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 ")
+    private String sendState;
+
+
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/RobotData.java b/smartor/src/main/java/com/smartor/domain/robot/RobotData.java
new file mode 100644
index 0000000..effba03
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/RobotData.java
@@ -0,0 +1,19 @@
+package com.smartor.domain.robot;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RobotData {
+    @ApiModelProperty(value = "閰嶇疆淇℃伅")
+    private RobotDataConfig config;
+
+    @ApiModelProperty(value = "鐗堟湰")
+    private List<RobotDataCustomVar> custom_var;
+
+    @ApiModelProperty(value = "绗竴涓换鍔D")
+    private String first_task_id;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/RobotDataConfig.java b/smartor/src/main/java/com/smartor/domain/robot/RobotDataConfig.java
new file mode 100644
index 0000000..ebc1039
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/RobotDataConfig.java
@@ -0,0 +1,44 @@
+package com.smartor.domain.robot;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RobotDataConfig {
+    @ApiModelProperty(value = "妯℃澘鍚�")
+    private String template_name;
+
+    @ApiModelProperty(value = "鐗堟湰")
+    private String version;
+
+    @ApiModelProperty(value = "绗竴涓换鍔D")
+    private String first_task_id;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鏈�澶ч潤榛樻娴嬫椂闀匡紝鍗曚綅姣(ms)锛屽:5000")
+    private String silence_time;
+
+    @ApiModelProperty(value = "闈欓粯鎻愮ず鏈�澶ч噸澶嶆鏁�,濡�:3")
+    private String silence_count;
+
+    @ApiModelProperty(value = "鏃犲尮閰嶆彁绀烘渶澶ч噸澶嶆鏁帮紝濡�:3")
+    private String nomatch_count;
+
+    @ApiModelProperty(value = "鏄惁閲嶆柊鍔犺浇閫氱敤搴�,true銆乫alse")
+    private String reload_general_template;
+
+    @ApiModelProperty(value = "闇�鍔犺浇鐨勯�氱敤搴撴ā鏉�,濡�: 绯栧翱鐥呮ā鏉縚閫氱敤搴� 1.jkg;绯栧翱鐥呮ā + 鏉縚閫氱敤搴� 2.jkg, 鍙敤鍒嗗紑鍔犺浇澶氫釜")
+    private String general_template;
+
+
+    @ApiModelProperty(value = "")
+    private String file_type;
+
+    @ApiModelProperty(value = "璇ュ瓧娈垫殏鏃朵笉鐢紝鏂囨湰浜や簰妯″紡鐨勫紩瀵艰锛屽: 鎮ㄥソ锛屾垜鏄疿X 鍖婚櫌鐨勫尰鐢熷姪鎵嬶紝璇烽棶鏈変粈涔堝彲浠ュ府鍔╂偍鐨勫悧? ")
+    private String text_chat_guide;
+
+    @ApiModelProperty(value = "璇ュ瓧娈垫殏鏃朵笉鐢紝鏂囨湰浜や簰妯″紡鐨勫鑸殑鑿滃崟鏄剧ず鏍囬锛屽:  涔宠吅鐤剧梾")
+    private String text_chat_menu_title;
+
+    @ApiModelProperty(value = "")
+    private String hangup_action;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/RobotDataCustomVar.java b/smartor/src/main/java/com/smartor/domain/robot/RobotDataCustomVar.java
new file mode 100644
index 0000000..15322ca
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/RobotDataCustomVar.java
@@ -0,0 +1,19 @@
+package com.smartor.domain.robot;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RobotDataCustomVar {
+    @ApiModelProperty(value = "")
+    private String var_name;
+
+    @ApiModelProperty(value = "")
+    private String var_type;
+
+    @ApiModelProperty(value = "")
+    private String var_value;
+
+    @ApiModelProperty(value = "")
+    private String var_annotate;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/RobotIdlenumVO.java b/smartor/src/main/java/com/smartor/domain/robot/RobotIdlenumVO.java
new file mode 100644
index 0000000..eb914db
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/RobotIdlenumVO.java
@@ -0,0 +1,67 @@
+package com.smartor.domain.robot;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 鐢佃瘽璇濇湳妯℃澘鍥炲弬
+ *
+ * @author ruoyi
+ * @date 2024-05-23
+ */
+@ApiModel(value = "RobotScritpTemplateVO", description = "鐢佃瘽璇濇湳妯℃澘鍥炲弬")
+@Data
+public class RobotIdlenumVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "鎺堟潈 id")
+    private String app_id;
+
+    /**
+     * 鎺堟潈 key(宸插姞瀵嗚繃鐨� key)
+     */
+    @ApiModelProperty(value = "鎺堟潈 key(宸插姞瀵嗚繃鐨� key)")
+    private String app_key;
+
+
+    /**
+     * 涓诲彨鍙风爜鍗崇數璇濈嚎璺殑鍙风爜
+     */
+    @ApiModelProperty(value = "涓诲彨鍙风爜鍗崇數璇濈嚎璺殑鍙风爜")
+    private String ani;
+
+
+    /**
+     * 鏄惁鏄壒娈婇�氶亾鍛煎嚭锛屽�间负:true銆乫alse 1.妯℃嫙绾胯矾锛�
+     * special_ch=true 鍙細鎸囧畾绾胯矾鍙风爜涓� ani 鐨勪竴鏉$嚎璺懠鍑恒��
+     * special_ch=false 浼氫粠 app_id 涓嬮潰閫夊彇浠绘剰涓�鏉$┖闂茬殑妯℃嫙绾胯矾
+     * 鍛煎嚭銆傛鏃� ani 涓嶈捣浣滅敤銆傚疄闄呭鍛兼樉绀虹殑鍙风爜涓嶄竴瀹氭槸 ani銆�
+     * 2.鏁板瓧绾胯矾
+     * 璇ュ弬鏁板鏁板瓧绾胯矾涓嶈捣浣滅敤锛屾暟瀛楃嚎璺細浠� app_id 涓嬮潰閫夊彇浠�
+     * 鎰忛�氶亾锛屼互 ani 浣滀负涓诲彨鍙风爜鏉ュ鍛兼樉绀�
+     */
+    @ApiModelProperty(value = "鏄惁鏄壒娈婇�氶亾鍛煎嚭锛屽�间负:true銆乫alse")
+    private Boolean specify_ch;
+
+    /**
+     * 鏃堕棿鎴筹紝寰绾�
+     */
+    @ApiModelProperty(value = "鏃堕棿鎴筹紝寰绾�")
+    private Long time_stamp;
+
+    /**
+     * 鎸夐『搴忔嫾鎺ュ瓧绗︿覆鍚� md5 鍔犲瘑锛�
+     * md5(app_id+app_key+bs_uuid+ani+dnis+specify_ch+time_stamp) specify_ch md5 鏃� true 鐢� 1 鏇夸唬锛宖alse 鐢� 0 鏇夸唬
+     */
+    @ApiModelProperty(value = "鎸夐『搴忔嫾鎺ュ瓧绗︿覆鍚� md5 鍔犲瘑锛�")
+    private String sign;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/RobotScritpTemplateVO.java b/smartor/src/main/java/com/smartor/domain/robot/RobotScritpTemplateVO.java
new file mode 100644
index 0000000..cda08da
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/RobotScritpTemplateVO.java
@@ -0,0 +1,149 @@
+package com.smartor.domain.robot;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.smartor.domain.PatTaskRelevance;
+import com.smartor.domain.TaskSendTimeVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鐢佃瘽璇濇湳妯℃澘鍥炲弬
+ *
+ * @author ruoyi
+ * @date 2024-05-23
+ */
+@ApiModel(value = "RobotScritpTemplateVO", description = "鐢佃瘽璇濇湳妯℃澘鍥炲弬")
+@Data
+public class RobotScritpTemplateVO extends RobotIdlenumVO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "鎺堟潈 id")
+    private String notes;
+
+
+    /**
+     * 鎺ュ叆鍟嗚嚜瀹氫箟涓氬姟 uuid锛宐s_uuid 鐩稿悓涓哄悓涓�娆″懠鍙殑娑堟伅
+     */
+    @ApiModelProperty(value = "鎺ュ叆鍟嗚嚜瀹氫箟涓氬姟 uuid锛宐s_uuid 鐩稿悓涓哄悓涓�娆″懠鍙殑娑堟伅")
+    private String bs_uuid;
+
+
+    /**
+     * 琚彨鍙风爜鍗宠鍛煎彨鐨勭敤鎴风殑鍙风爜
+     */
+    @ApiModelProperty(value = "琚彨鍙风爜鍗宠鍛煎彨鐨勭敤鎴风殑鍙风爜")
+    private String dnis;
+
+
+    /**
+     * 璇煶寮曟搸锛歛li 銆乮fly銆乻ogou
+     */
+    @ApiModelProperty(value = "璇煶寮曟搸锛歛li 銆乮fly銆乻ogou")
+    private String engine;
+
+    /**
+     * 璇煶璇嗗埆鏂囦欢鐨勯噰鏍风巼锛�8000 鎴� 16000锛岄粯璁� 8000
+     */
+    @ApiModelProperty(value = "璇煶璇嗗埆鏂囦欢鐨勯噰鏍风巼锛�8000 鎴� 16000锛岄粯璁� 8000")
+    private String asr_sample;
+
+    /**
+     * 璇煶璇嗗埆寮曟搸锛�
+     * 1.ali
+     * 璇ュ�间负椤圭洰鐨� app_key锛屾帴鍏ュ晢鍙粠鑷繁鐨勯樋閲屼簯椤圭洰绠$悊
+     * 閲岄潰鑾峰彇锛屼緥锛歰XbXcninIlII***
+     * 2.Ifly
+     * 鏅�氳瘽:sms8k(瀵瑰簲 8000 閲囨牱鐜囧紩鎿�)鎴� sms16k(瀵瑰簲
+     * 16000 閲囨牱鐜囧紩鎿�)
+     * 涓婃捣璇濓細shanghainese8k,shanghainese16k
+     * 娌冲崡璇濓細henanese8k,henanese16k
+     * 鍥涘窛璇濓細lmz8k,lmz16k
+     * 绮よ锛歛utocant8k,autocant16k
+     * 鍗椾含璇濓細nankinese8k,nankinese16k
+     * 鑻辫锛歴ms-en8k,sms-en16k
+     * 榛樿閲囩敤 8K 鐨勫紩鎿庡弬鏁�
+     */
+    @ApiModelProperty(value = "璇煶璇嗗埆寮曟搸")
+    private String asr_ent;
+
+    /**
+     * ali
+     * 濡傦細oXbXcninIlII***
+     * ifly tts 澹版簮寮曟搸
+     * intp65:鏅�氳瘽
+     * intp65_en锛氳嫳璇�
+     */
+    @ApiModelProperty(value = "")
+    private String tts_ent;
+
+    /**
+     * ali
+     * 璇煶鍙戦煶浜猴細Aixia 绛夛紝鍏蜂綋鍙傝闃块噷 tts 鐩稿叧鏂囨。
+     * ifly
+     * 璇煶鍙戦煶浜�
+     * 涓枃锛歺iaoyan,x_xiaoyuan,jiuxu,xiaofeng,x_yifeng 绛�
+     * 鑻辨枃锛歺_catherine 绛�
+     */
+    @ApiModelProperty(value = "")
+    private String tts_vcn;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "")
+    private Integer tts_volume;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "")
+    private Integer tts_speed;
+
+    /**
+     * 鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�
+     */
+    @ApiModelProperty(value = "鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�")
+    private String dial_mode;
+
+    /**
+     * 鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�
+     */
+    @ApiModelProperty(value = "鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�")
+    private String dial_server;
+
+    /**
+     * 鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�
+     */
+    @ApiModelProperty(value = "鏄惁涓烘祴璇曟ā寮忥紝true銆乫alse 涓� true 鏃朵笉鏍¢獙 sign 鍊�")
+    private Boolean auto_test;
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "")
+    private String outbound_codes;
+
+
+    /**
+     * 鍙橀噺鍒楄〃锛屽彉閲忔暟閲� 0-n 涓�
+     */
+    @ApiModelProperty(value = "鍙橀噺鍒楄〃锛屽彉閲忔暟閲� 0-n 涓�")
+    private Map<String, String> var_params;
+
+    /**
+     * 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒�
+     */
+    @ApiModelProperty(value = "涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒�")
+    private RobotData data;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/back/RobotAIDialogBack.java b/smartor/src/main/java/com/smartor/domain/robot/back/RobotAIDialogBack.java
new file mode 100644
index 0000000..5e5bde2
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/back/RobotAIDialogBack.java
@@ -0,0 +1,104 @@
+package com.smartor.domain.robot.back;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RobotAIDialogBack {
+    @ApiModelProperty(value = "鏈閫氳瘽浜や簰淇℃伅鐨勫簭鍙� 0-n")
+    private String package_id;
+
+    @ApiModelProperty(value = "鎺堟潈 id")
+    private String app_id;
+
+    @ApiModelProperty(value = "鎺ュ叆鍟嗚嚜瀹氫箟涓氬姟 uuid锛宐s_uuid 鐩稿悓涓哄悓涓�娆″懠鍙殑娑堟伅")
+    private String bs_uuid;
+
+    @ApiModelProperty(value = "閫氳瘽 uuid")
+    private String call_uuid;
+
+    @ApiModelProperty(value = "鍛煎彨鏂瑰悜:1 鍛煎叆,2 鍛煎嚭")
+    private String call_direction;
+
+    @ApiModelProperty(value = "鑺傜偣绫诲瀷锛�1")
+    private String task_type;
+
+    /**
+     * 闂鐨勭被鍨嬶細
+     * 0锛氬彧鏀鹃煶锛屾棤闂
+     * 1锛氬父瑙勯棶棰橈紝涓嶄綔涓哄垽鏂剰鍚戠殑鏍囧噯
+     * 2锛氫笟鍔¢棶棰橈紝浣滀负鍒ゆ柇鎰忓悜鐨勬爣鍑�
+     */
+    @ApiModelProperty(value = "闂鐨勭被鍨�")
+    private String question_type;
+
+    @ApiModelProperty(value = "鑺傜偣缂栧彿")
+    private String task_id;
+
+    /**
+     * 鑺傜偣鎻愮ず闊筹細璇煶鎴栨枃鏈枃浠舵垨娣峰悎锛屽锛歜ye.wav;鍐嶈
+     */
+    @ApiModelProperty(value = "鑺傜偣鎻愮ず闊�")
+    private String task_voc;
+
+    @ApiModelProperty(value = "鑺傜偣鎻忚堪")
+    private String task_desc;
+
+    @ApiModelProperty(value = "鏀鹃煶鏄惁鍏佽鎵撴柇锛歵rue 鍏佽鎵撴柇锛宖alse 涓嶅厑璁告墦鏂�")
+    private String interrupt;
+
+    @ApiModelProperty(value = "tts 鏂囨湰瀵瑰簲鐨勮闊冲悎鎴愭枃浠惰矾寰�+鏂囦欢鍚�")
+    private String ai_audio;
+
+    @ApiModelProperty(value = "tts 鏂囨湰")
+    private String ai_tts;
+
+    @ApiModelProperty(value = "璇ユā鏉跨涓�涓妭鐐瑰紑濮嬬殑鏃ユ湡锛岄槻姝㈣法澶╂枃浠跺す瀵瑰簲涓嶄笂")
+    private String date_time;
+
+    @ApiModelProperty(value = "-1 鏃犲尮閰嶅鐞嗗垎鏀紝-2 鏃犲0澶勭悊鍒嗘敮锛�-3 閫氱敤搴撴湁鍖归厤澶勭悊鍒嗘敮,鍏朵粬鍒嗘敮瀹氫箟锛�1-n")
+    private String task_switch_type;
+
+    @ApiModelProperty(value = "閫氱敤搴撴湁杩斿洖缁撴灉鍒欎负閫氱敤搴撳悕绉帮紝鍚﹀垯涓衡��")
+    private String general_template_name;
+
+    @ApiModelProperty(value = "澶勭悊鍒嗘敮 id")
+    private String switch_id;
+
+    @ApiModelProperty(value = "澶勭悊鍒嗘敮鎻愮ず闊�")
+    private String switch_voc;
+
+    @ApiModelProperty(value = "澶勭悊鍒嗘敮鎻忚堪")
+    private String switch_desc;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍥炵瓟鐨勬枃浠剁浉瀵硅矾寰勫")
+    private String asr_audio;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍥炵瓟鐨勮闊宠瘑鍒粨鏋�")
+    private String asr_result;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍥炵瓟鐨勮闊抽暱搴�")
+    private String asr_audio_len;
+
+    @ApiModelProperty(value = "asr 璇嗗埆鎵�鑺辩殑鏃堕暱鍗曚綅锛氭绉�")
+    private String asr_duration_ms;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鎰忓浘鍚嶇О")
+    private String intention_name;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍥炵瓟鐨勬剰鍥惧��")
+    private String intention_value;
+
+    @ApiModelProperty(value = "鑺傜偣鍐呰烦杞殑涓嬩竴涓鐞嗗垎鏀殑 id 鎴�-10 鎴栧叾浠栦换鍔¤妭鐐圭殑 task_id")
+    private String next_switch_id;
+
+    @ApiModelProperty(value = "鎵ц璺宠浆鐨勪笅涓�涓妭鐐圭殑 id")
+    private String next_task_id;
+
+    @ApiModelProperty(value = "time_stamp 瀵瑰簲鐨勬椂闂�")
+    private String time;
+
+    @ApiModelProperty(value = "鏃堕棿鎴筹紝寰绾�")
+    private String time_stamp;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/back/RobotCallBack.java b/smartor/src/main/java/com/smartor/domain/robot/back/RobotCallBack.java
new file mode 100644
index 0000000..dd3a684
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/back/RobotCallBack.java
@@ -0,0 +1,43 @@
+package com.smartor.domain.robot.back;
+
+import com.smartor.domain.robot.RobotDataConfig;
+import com.smartor.domain.robot.RobotDataCustomVar;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class RobotCallBack {
+    @ApiModelProperty(value = "鎵�灞炵殑鐢ㄦ埛")
+    private String app_id;
+
+    @ApiModelProperty(value = "鎺ュ叆鍟嗚嚜瀹氫箟涓氬姟 uuid锛宐s_uuid 鐩稿悓涓哄悓涓�娆″懠鍙殑娑堟伅")
+    private String bs_uuid;
+
+    @ApiModelProperty(value = "閫氳瘽 uuid")
+    private String call_uuid;
+
+    @ApiModelProperty(value = "涓诲彨鍙风爜")
+    private String ani;
+
+    @ApiModelProperty(value = "琚彨鍙风爜")
+    private String dnis;
+
+    @ApiModelProperty(value = "鍛煎彨鏂瑰悜:1 鍛煎叆,2 鍛煎嚭")
+    private String call_direction;
+
+    @ApiModelProperty(value = "鏈閫氳瘽鐨勫綍闊虫枃浠惰矾寰�+鍚嶇О锛屼汉宸ユ墜鍔ㄥ鍛间笖鐢佃瘽鎺ラ�氱姸鎬佹椂鎵嶄細鏈夎鍙傛暟")
+    private String record_file;
+
+    @ApiModelProperty(value = "鍛煎彨鐘舵�� ID锛�0-n 鎸夐『搴忛�掑")
+    private String state_id;
+
+    @ApiModelProperty(value = "鍛煎彨鐘舵�佹弿杩�:")
+    private String state_desc;
+
+    @ApiModelProperty(value = "鏃堕棿鎴筹紝寰绾�")
+    private String time_stamp;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/robot/back/RobotcdrInfoBack.java b/smartor/src/main/java/com/smartor/domain/robot/back/RobotcdrInfoBack.java
new file mode 100644
index 0000000..6def2cb
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/robot/back/RobotcdrInfoBack.java
@@ -0,0 +1,69 @@
+package com.smartor.domain.robot.back;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RobotcdrInfoBack {
+
+    @ApiModelProperty(value = "鎺堟潈 id")
+    private String app_id;
+
+    @ApiModelProperty(value = "鎺ュ叆鍟嗚嚜瀹氫箟涓氬姟 uuid锛宐s_uuid 鐩稿悓涓哄悓涓�娆″懠鍙殑娑堟伅")
+    private String bs_uuid;
+
+    @ApiModelProperty(value = "閫氳瘽 uuid")
+    private String call_uuid;
+
+    @ApiModelProperty(value = "鍛煎彨鏂瑰悜:1 鍛煎叆,2 鍛煎嚭")
+    private String call_direction;
+
+    @ApiModelProperty(value = "涓诲彨鍙风爜")
+    private String ani;
+
+
+    @ApiModelProperty(value = " 琚彨鍙风爜")
+    private String dnis;
+
+    /**
+     * 鎸傛満鍘熷洜锛�
+     * NORMAL_CLEARING 绛夛紝浠呬緵璁板綍鐢�
+     */
+    @ApiModelProperty(value = "鎸傛満鍘熷洜")
+    private String hangup_cause;
+
+    /**
+     * 鎸傛満鏃剁粓绔墍澶勭殑鐘舵��
+     * EARLY MEDIA
+     * ANSWER
+     * DELAYED NEGOTIATION
+     * 绛夛紝浠呬緵璁板綍鐢�
+     */
+    @ApiModelProperty(value = "鎸傛満鏃剁粓绔墍澶勭殑鐘舵��")
+    private String endpoint_disposition;
+
+    @ApiModelProperty(value = "绛夊緟鏃堕棿")
+    private String wait_ms;
+
+    @ApiModelProperty(value = "鍛煎彨杩囩▼鑰楁椂(浠庡彂璧峰懠鍙埌缁撴潫鎵�鏈夌殑鏃堕棿)")
+    private String duration_ms;
+
+    @ApiModelProperty(value = "绛夊緟搴旂瓟鑰楁椂锛堝彂璧峰埌鎺ラ�氱殑鏃堕棿锛�")
+    private String answer_ms;
+
+    @ApiModelProperty(value = "璁¤垂鏃堕暱锛堢湡姝g殑閫氳瘽鏃堕暱锛�")
+    private String bill_ms;
+
+    @ApiModelProperty(value = "鍛煎彨寮�濮嬫椂闂�")
+    private String start_stamp;
+
+    @ApiModelProperty(value = "搴旂瓟寮�濮嬫椂闂� G")
+    private String answer_stamp;
+
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    private String end_stamp;
+
+    @ApiModelProperty(value = "鏃堕棿鎴筹紝寰绾�")
+    private String time_stamp;
+
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java
deleted file mode 100644
index 27a6eeb..0000000
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.smartor.mapper;
-
-import com.smartor.domain.IvrLibaTemplateTarget;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 妯$増闂鎸囨爣搴揗apper鎺ュ彛
- * 
- * @author ruoyi
- * @date 2023-12-23
- */
-@Mapper
-public interface IvrLibaTemplateTargetMapper 
-{
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴�
-     * 
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 妯$増闂鎸囨爣搴�
-     */
-    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long id);
-
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 妯$増闂鎸囨爣搴撻泦鍚�
-     */
-    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 鏂板妯$増闂鎸囨爣搴�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 淇敼妯$増闂鎸囨爣搴�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 鍒犻櫎妯$増闂鎸囨爣搴�
-     * 
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplateTargetByID(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
-     * 
-     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplateTargetByIDs(Long[] ids);
-}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateMapper.java
new file mode 100644
index 0000000..620a8ff
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrTaskTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟闅忚妯℃澘搴揗apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Mapper
+public interface IvrTaskTemplateMapper {
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    public IvrTaskTemplate selectIvrTaskTemplateByID(Long ID);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴撳垪琛�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴撻泦鍚�
+     */
+    public List<IvrTaskTemplate> selectIvrTaskTemplateList(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 鏂板闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 淇敼闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateByID(Long ID);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateByIDs(Long[] IDs);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateScriptMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateScriptMapper.java
new file mode 100644
index 0000000..099c13d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateScriptMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrTaskTemplateScript;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯$増闂璇濇湳搴揗apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Mapper
+public interface IvrTaskTemplateScriptMapper {
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    public IvrTaskTemplateScript selectIvrTaskTemplateScriptByID(Long ID);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴撻泦鍚�
+     */
+    public List<IvrTaskTemplateScript> selectIvrTaskTemplateScriptList(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 鏂板闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 淇敼闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateScriptByID(Long ID);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateScriptByIDs(Long[] IDs);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateTargetoptionMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateTargetoptionMapper.java
new file mode 100644
index 0000000..0028ccb
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskTemplateTargetoptionMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrTaskTemplateTargetoption;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴揗apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Mapper
+public interface IvrTaskTemplateTargetoptionMapper {
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    public IvrTaskTemplateTargetoption selectIvrTaskTemplateTargetoptionById(Long id);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撻泦鍚�
+     */
+    public List<IvrTaskTemplateTargetoption> selectIvrTaskTemplateTargetoptionList(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 鏂板闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 淇敼闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateTargetoptionById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateTargetoptionByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java
index e7b5154..5b06da0 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java
@@ -2,18 +2,20 @@
 
 import java.util.List;
 import com.smartor.domain.IvrTaskcalldetail;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 璇煶浠诲姟鍛煎彨鏄庣粏Mapper鎺ュ彛
- * 
+ *
  * @author smartor
  * @date 2023-03-24
  */
-public interface IvrTaskcalldetailMapper 
+@Mapper
+public interface IvrTaskcalldetailMapper
 {
     /**
      * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏
-     * 
+     *
      * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
      * @return 璇煶浠诲姟鍛煎彨鏄庣粏
      */
@@ -21,7 +23,7 @@
 
     /**
      * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
-     * 
+     *
      * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
      * @return 璇煶浠诲姟鍛煎彨鏄庣粏闆嗗悎
      */
@@ -29,7 +31,7 @@
 
     /**
      * 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
-     * 
+     *
      * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
      * @return 缁撴灉
      */
@@ -37,7 +39,7 @@
 
     /**
      * 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
-     * 
+     *
      * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
      * @return 缁撴灉
      */
@@ -45,7 +47,7 @@
 
     /**
      * 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
-     * 
+     *
      * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
      * @return 缁撴灉
      */
@@ -53,7 +55,7 @@
 
     /**
      * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
-     * 
+     *
      * @param calldetailids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java
index a41f207..32e31dd 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java
@@ -2,18 +2,20 @@
 
 import java.util.List;
 import com.smartor.domain.IvrTaskcallrecord;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 璇煶浠诲姟鍛煎彨璁板綍Mapper鎺ュ彛
- * 
+ *
  * @author smartor
  * @date 2023-03-24
  */
-public interface IvrTaskcallrecordMapper 
+@Mapper
+public interface IvrTaskcallrecordMapper
 {
     /**
      * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍
-     * 
+     *
      * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
      * @return 璇煶浠诲姟鍛煎彨璁板綍
      */
@@ -21,7 +23,7 @@
 
     /**
      * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
-     * 
+     *
      * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
      * @return 璇煶浠诲姟鍛煎彨璁板綍闆嗗悎
      */
@@ -29,7 +31,7 @@
 
     /**
      * 鏂板璇煶浠诲姟鍛煎彨璁板綍
-     * 
+     *
      * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
      * @return 缁撴灉
      */
@@ -37,7 +39,7 @@
 
     /**
      * 淇敼璇煶浠诲姟鍛煎彨璁板綍
-     * 
+     *
      * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
      * @return 缁撴灉
      */
@@ -45,7 +47,7 @@
 
     /**
      * 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
-     * 
+     *
      * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
      * @return 缁撴灉
      */
@@ -53,7 +55,7 @@
 
     /**
      * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
-     * 
+     *
      * @param uuids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java
index e8d4d19..6bfc972 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java
@@ -2,18 +2,20 @@
 
 import java.util.List;
 import com.smartor.domain.IvrTasksms;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * 璇煶浠诲姟鐭俊Mapper鎺ュ彛
- * 
+ *
  * @author smartor
  * @date 2023-03-24
  */
-public interface IvrTasksmsMapper 
+@Mapper
+public interface IvrTasksmsMapper
 {
     /**
      * 鏌ヨ璇煶浠诲姟鐭俊
-     * 
+     *
      * @param id 璇煶浠诲姟鐭俊涓婚敭
      * @return 璇煶浠诲姟鐭俊
      */
@@ -21,7 +23,7 @@
 
     /**
      * 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
-     * 
+     *
      * @param ivrTasksms 璇煶浠诲姟鐭俊
      * @return 璇煶浠诲姟鐭俊闆嗗悎
      */
@@ -29,7 +31,7 @@
 
     /**
      * 鏂板璇煶浠诲姟鐭俊
-     * 
+     *
      * @param ivrTasksms 璇煶浠诲姟鐭俊
      * @return 缁撴灉
      */
@@ -37,7 +39,7 @@
 
     /**
      * 淇敼璇煶浠诲姟鐭俊
-     * 
+     *
      * @param ivrTasksms 璇煶浠诲姟鐭俊
      * @return 缁撴灉
      */
@@ -45,7 +47,7 @@
 
     /**
      * 鍒犻櫎璇煶浠诲姟鐭俊
-     * 
+     *
      * @param id 璇煶浠诲姟鐭俊涓婚敭
      * @return 缁撴灉
      */
@@ -53,7 +55,7 @@
 
     /**
      * 鎵归噺鍒犻櫎璇煶浠诲姟鐭俊
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
diff --git a/smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java b/smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java
new file mode 100644
index 0000000..1bea79b
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/AIRobotPhoneCallBackService.java
@@ -0,0 +1,45 @@
+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鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-24
+ */
+public interface AIRobotPhoneCallBackService {
+
+
+    /**
+     * AIRobot鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�
+     *
+     * @param robotCallBack
+     * @return 缁撴灉
+     */
+    public String callstatus(RobotCallBack robotCallBack);
+
+    /**
+     * AIRobot鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�
+     *
+     * @param robotAIDialogBack
+     * @return 缁撴灉
+     */
+    public String aidialog(RobotAIDialogBack robotAIDialogBack);
+
+    /**
+     * 鎸傛満璁¤垂淇℃伅杩斿洖鏁版嵁鎺ュ彛
+     * @param robotcdrInfoBack
+     * @return
+     */
+    public String cdrinfo(RobotcdrInfoBack robotcdrInfoBack);
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java
deleted file mode 100644
index a6bcdd7..0000000
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.smartor.service;
-
-import com.smartor.domain.IvrLibaTemplateTarget;
-
-import java.util.List;
-
-/**
- * 妯$増闂鎸囨爣搴揝ervice鎺ュ彛
- * 
- * @author ruoyi
- * @date 2023-12-23
- */
-public interface IIvrLibaTemplateTargetService 
-{
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴�
-     * 
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 妯$増闂鎸囨爣搴�
-     */
-    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long ID);
-
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 妯$増闂鎸囨爣搴撻泦鍚�
-     */
-    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 鏂板妯$増闂鎸囨爣搴�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 淇敼妯$増闂鎸囨爣搴�
-     * 
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
-
-    /**
-     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
-     * 
-     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂鎸囨爣搴撲富閿泦鍚�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplateTargetByIDs(Long[] IDs);
-
-    /**
-     * 鍒犻櫎妯$増闂鎸囨爣搴撲俊鎭�
-     * 
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplateTargetByID(Long ID);
-}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
index 6294f39..e37c1f0 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
@@ -1,6 +1,8 @@
 package com.smartor.service;
 
 import com.smartor.domain.*;
+import com.smartor.domain.robot.back.RobotAIDialogBack;
+import com.smartor.domain.robot.back.RobotCallBack;
 
 import java.util.List;
 
@@ -75,13 +77,13 @@
     /**
      * 浠诲姟鍙戦�佹墽琛�
      *
-     * @param ivrTaskcallVO
+     * @param sendTaskVO
      * @return 缁撴灉
      */
-    public int heTaskSend(IvrTaskSingleVO ivrTaskcallVO);
+    public int heTaskSend(SendTaskVO sendTaskVO);
 
     /**
-     * 浠诲姟鍙戦�佹墽琛�
+     * 鐢佃瘽鍥炶皟浠诲姟
      *
      * @param phoneCallBackVO
      * @return 缁撴灉
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateScriptService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateScriptService.java
new file mode 100644
index 0000000..7a8b0e7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateScriptService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrTaskTemplateScript;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯$増闂璇濇湳搴揝ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+public interface IIvrTaskTemplateScriptService
+{
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    public IvrTaskTemplateScript selectIvrTaskTemplateScriptByID(Long ID);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴撻泦鍚�
+     */
+    public List<IvrTaskTemplateScript> selectIvrTaskTemplateScriptList(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 鏂板闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 淇敼闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑闅忚浠诲姟妯$増闂璇濇湳搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateScriptByIDs(Long[] IDs);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴撲俊鎭�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateScriptByID(Long ID);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateService.java
new file mode 100644
index 0000000..05e04fc
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateService.java
@@ -0,0 +1,76 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateVO;
+import com.smartor.domain.IvrTaskTemplate;
+import com.smartor.domain.IvrTaskTemplateVO;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟闅忚妯℃澘搴揝ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+public interface IIvrTaskTemplateService {
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    public IvrTaskTemplate selectIvrTaskTemplateByID(Long ID);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴撳垪琛�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴撻泦鍚�
+     */
+    public List<IvrTaskTemplate> selectIvrTaskTemplateList(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 鏂板闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 鏂板鎴栦慨鏀�
+     *
+     * @param ivrTaskTemplateVO
+     * @return
+     */
+    public int saveOrUpdateTempScript(IvrTaskTemplateVO ivrTaskTemplateVO);
+
+    /**
+     * 淇敼闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑闅忚浠诲姟闅忚妯℃澘搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateByIDs(Long[] IDs);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴撲俊鎭�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateByID(Long ID);
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    public IvrTaskTemplateVO selectInfoByCondition(IvrTaskTemplateVO ivrTaskTemplateVO);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateTargetoptionService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateTargetoptionService.java
new file mode 100644
index 0000000..22ec5fe
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskTemplateTargetoptionService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrTaskTemplateTargetoption;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴揝ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+public interface IIvrTaskTemplateTargetoptionService
+{
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    public IvrTaskTemplateTargetoption selectIvrTaskTemplateTargetoptionById(Long id);
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撻泦鍚�
+     */
+    public List<IvrTaskTemplateTargetoption> selectIvrTaskTemplateTargetoptionList(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 鏂板闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 淇敼闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption);
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateTargetoptionByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲俊鎭�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskTemplateTargetoptionById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/AIRobotPhoneCallBackServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/AIRobotPhoneCallBackServiceImpl.java
new file mode 100644
index 0000000..1738a67
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/AIRobotPhoneCallBackServiceImpl.java
@@ -0,0 +1,68 @@
+package com.smartor.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+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 com.smartor.config.PhoneUtils;
+import com.smartor.config.RabbitMqCallPhoneConfig;
+import com.smartor.domain.*;
+import com.smartor.domain.robot.back.RobotAIDialogBack;
+import com.smartor.domain.robot.back.RobotCallBack;
+import com.smartor.domain.robot.back.RobotcdrInfoBack;
+import com.smartor.mapper.*;
+import com.smartor.service.AIRobotPhoneCallBackService;
+import com.smartor.service.IIvrTaskService;
+import com.smartor.service.IIvrTaskSingleService;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-02-02
+ */
+@Slf4j
+@Service
+public class AIRobotPhoneCallBackServiceImpl implements AIRobotPhoneCallBackService {
+
+    /**
+     * 鍛煎彨鍒拌揪绾胯矾鍚庣殑鐘舵�佽繑鍥炴帴鍙�
+     *
+     * @param robotCallBack
+     * @return
+     */
+    @Override
+    public String callstatus(RobotCallBack robotCallBack) {
+
+        return null;
+    }
+
+    @Override
+    public String aidialog(RobotAIDialogBack robotAIDialogBack) {
+        return null;
+    }
+
+    @Override
+    public String cdrinfo(RobotcdrInfoBack robotcdrInfoBack) {
+        return null;
+    }
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
index e3957bc..dae637d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
@@ -34,9 +34,6 @@
     private IvrLibaTemplateTagMapper ivrLibaTemplateTagMapper;
 
     @Autowired
-    private IvrLibaTemplateTargetMapper ivrLibaTemplateTargetMapper;
-
-    @Autowired
     private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
 
     @Autowired
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java
deleted file mode 100644
index 0a4ebfd..0000000
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.smartor.service.impl;
-
-import com.ruoyi.common.utils.DateUtils;
-import com.smartor.domain.IvrLibaTemplateTarget;
-import com.smartor.mapper.IvrLibaTemplateTargetMapper;
-import com.smartor.service.IIvrLibaTemplateTargetService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-/**
- * 妯$増闂鎸囨爣搴揝ervice涓氬姟灞傚鐞�
- *
- * @author ruoyi
- * @date 2023-12-23
- */
-@Service
-public class IvrLibaTemplateTargetServiceImpl implements IIvrLibaTemplateTargetService {
-    @Autowired
-    private IvrLibaTemplateTargetMapper ivrLibaTemplateTargetMapper;
-
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴�
-     *
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 妯$増闂鎸囨爣搴�
-     */
-    @Override
-    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long id) {
-        return ivrLibaTemplateTargetMapper.selectIvrLibaTemplateTargetByID(id);
-    }
-
-    /**
-     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
-     *
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 妯$増闂鎸囨爣搴�
-     */
-    @Override
-    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        return ivrLibaTemplateTargetMapper.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
-    }
-
-    /**
-     * 鏂板妯$増闂鎸囨爣搴�
-     *
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        ivrLibaTemplateTarget.setCreateTime(DateUtils.getNowDate());
-        return ivrLibaTemplateTargetMapper.insertIvrLibaTemplateTarget(ivrLibaTemplateTarget);
-    }
-
-    /**
-     * 淇敼妯$増闂鎸囨爣搴�
-     *
-     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
-        ivrLibaTemplateTarget.setUpdateTime(DateUtils.getNowDate());
-        return ivrLibaTemplateTargetMapper.updateIvrLibaTemplateTarget(ivrLibaTemplateTarget);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
-     *
-     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂鎸囨爣搴撲富閿�
-     * @return 缁撴灉
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public int deleteIvrLibaTemplateTargetByIDs(Long[] ids) {
-        Integer i = null;
-        for (Long id : ids) {
-            i = ivrLibaTemplateTargetMapper.deleteIvrLibaTemplateTargetByID(id);
-        }
-        return i;
-    }
-
-    /**
-     * 鍒犻櫎妯$増闂鎸囨爣搴撲俊鎭�
-     *
-     * @param ID 妯$増闂鎸囨爣搴撲富閿�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplateTargetByID(Long id) {
-        return ivrLibaTemplateTargetMapper.deleteIvrLibaTemplateTargetByID(id);
-    }
-}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
index 1520c85..983c0a0 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
@@ -44,10 +44,10 @@
     private IIvrTaskService ivrTaskService;
 
     @Autowired
-    private IvrLibaTemplateTargetoptionMapper ivrLibaScriptTargetoptionMapper;
+    private IvrTaskTemplateTargetoptionMapper ivrTaskScriptTargetoptionMapper;
 
     @Autowired
-    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
+    private IvrLibaTemplateScriptMapper ivrTaskTemplateScriptMapper;
 
     @Autowired
     private IvrTaskVisitResultMapper ivrTaskVisitResultMapper;
@@ -92,20 +92,21 @@
         if (CollectionUtils.isEmpty(list)) {
             new BaseException("璇ヤ换鍔′笉瀛樺湪");
         }
-        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆IvrTaskcallVO涓�
-        IvrTaskSingleVO ivrTaskcallVO2 = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskSingleVO.class);
-        String sendTimeSlot = list.get(0).getSendTimeSlot();
+        IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(ivrTaskcall.getTaskid());
+        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ivrTasksingleVO涓�
+        IvrTaskSingleVO ivrTasksingleVO2 = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskSingleVO.class);
+        String sendTimeSlot = ivrTask.getSendTimeSlot();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
             //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎
             if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
                 List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
-                ivrTaskcallVO2.setSendTimeslot(taskSendTimeVOList);
+                ivrTasksingleVO2.setSendTimeslot(taskSendTimeVOList);
             }
             //鏂囨湰鍙橀噺鍙傛暟
             if (com.ruoyi.common.utils.StringUtils.isNotEmpty(list.get(0).getTextParam())) {
                 Map<String, Map<String, String>> textParam = objectMapper.readValue(list.get(0).getTextParam(), Map.class);
-                ivrTaskcallVO2.setTextParam(textParam);
+                ivrTasksingleVO2.setTextParam(textParam);
             }
         } catch (JsonProcessingException e) {
             e.printStackTrace();
@@ -138,8 +139,8 @@
             }
         }
 
-        ivrTaskcallVO2.setPatTaskRelevances(patTaskRelevances);
-        return ivrTaskcallVO2;
+        ivrTasksingleVO2.setPatTaskRelevances(patTaskRelevances);
+        return ivrTasksingleVO2;
     }
 
     @Override
@@ -194,23 +195,24 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public int insertOrUpdateTask(IvrTaskSingleVO ivrTaskcallVO) {
-        if (ObjectUtils.isEmpty(ivrTaskcallVO)) {
+    public int insertOrUpdateTask(IvrTaskSingleVO ivrTasksingleVO) {
+        if (ObjectUtils.isEmpty(ivrTasksingleVO)) {
             log.info("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
             throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
         Integer integer = 0;
-        if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 1) {
+        if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 1) {
             //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
-            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class);
+            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTask.class);
+            if (ObjectUtils.isNotEmpty(ivrTasksingleVO.getSendTimeslot()))
+                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTasksingleVO.getSendTimeslot()));
             ivrTaskService.insertIvrTask(ivrTask);
-
-            ivrTaskcallVO.setTaskid(ivrTask.getTaskid().longValue());
+            ivrTasksingleVO.setTaskid(ivrTask.getTaskid().longValue());
             //鏂板
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) {
-                    //灏嗕换鍔′俊鎭柊澧炲埌瀹f暀浠诲姟琛ㄤ腑
-                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class);
+            if (CollectionUtils.isNotEmpty(ivrTasksingleVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : ivrTasksingleVO.getPatTaskRelevances()) {
+                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑
+                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTaskSingle.class);
                     ivrTaskcall.setSendname(patTaskRelevance.getName());
                     ivrTaskcall.setAge(patTaskRelevance.getAge());
                     ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
@@ -218,43 +220,42 @@
                     ivrTaskcall.setAddr(patTaskRelevance.getAddr());
                     ivrTaskcall.setCreateTime(DateUtils.getNowDate());
                     ivrTaskcall.setTextParam(new Gson().toJson(patTaskRelevance.getTextParam()));
-                    if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                        ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString());
-                    }
                     ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
                     integer = ivrTaskcall.getId().intValue();
                 }
             }
 
-        } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 2) {
+        } else if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 2) {
             //浠诲姟淇敼
-            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class);
+            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTask.class);
+            if (ObjectUtils.isNotEmpty(ivrTasksingleVO.getSendTimeslot()))
+                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTasksingleVO.getSendTimeslot()));
+            //鑾峰彇琛ㄩ噷鐨剆topState鏁板��  + 1
+            IvrTask ivrTask1 = ivrTaskService.selectIvrTaskByTaskid(ivrTask.getTaskid());
+            ivrTask.setStopState(ivrTask1.getStopState() + 1);
             ivrTaskService.updateIvrTask(ivrTask);
 
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) {
+            if (CollectionUtils.isNotEmpty(ivrTasksingleVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : ivrTasksingleVO.getPatTaskRelevances()) {
 
-                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class);
+                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTasksingleVO, IvrTaskSingle.class);
                     ivrTaskcall.setSendname(patTaskRelevance.getName());
                     ivrTaskcall.setAge(patTaskRelevance.getAge());
                     ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
                     ivrTaskcall.setPhone(patTaskRelevance.getPhone());
                     ivrTaskcall.setAddr(patTaskRelevance.getAddr());
                     ivrTaskcall.setCreateTime(DateUtils.getNowDate());
-                    if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                        ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString());
-                    }
-                    ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskcallVO.getTextParam()));
+                    ivrTaskcall.setTextParam(new Gson().toJson(ivrTasksingleVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() == 2) ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
                     if (patTaskRelevance.getIsoperation() == 1) ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
                     integer = ivrTaskcall.getId().intValue();
                 }
             }
 
-        } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 3) {
-            ivrTaskSingleMapper.deleteIvrTaskcallById(ivrTaskcallVO.getId());
+        } else if (ivrTasksingleVO.getIsoperation() != null && ivrTasksingleVO.getIsoperation() == 3) {
+            ivrTaskSingleMapper.deleteIvrTaskcallById(ivrTasksingleVO.getId());
 
-            integer = ivrTaskcallVO.getId().intValue();
+            integer = ivrTasksingleVO.getId().intValue();
         }
         return integer;
     }
@@ -265,23 +266,54 @@
      * @return
      */
     @Override
-    public int heTaskSend(IvrTaskSingleVO ivrTaskcallVO) {
+    public int heTaskSend(SendTaskVO sendTaskVO) {
+        if (sendTaskVO.getTaskId() == null) throw new BaseException("浠诲姟ID涓嶈兘涓虹┖锛岃妫�鏌ュ悗锛屽啀杩涜鎵ц");
+        IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(sendTaskVO.getTaskId());
+        if (StringUtils.isNotEmpty(sendTaskVO.getSendState()) && sendTaskVO.getSendState().equals("3") || StringUtils.isNotEmpty(sendTaskVO.getSendState()) && sendTaskVO.getSendState().equals("4")) {
+            //浠诲姟鏆傚仠鎴栫粓姝�
+            IvrTask ivrTask3 = new IvrTask();
+            ivrTask3.setTaskid(sendTaskVO.getTaskId());
+            ivrTask3.setStopState(ivrTask.getStopState() + 1);
+            ivrTask3.setSendState(sendTaskVO.getSendState());
+            ivrTaskService.updateIvrTask(ivrTask3);
+            return 0;
+        }
+
+        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌�
+        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {
+            sendTaskVO.setSendType(ivrTask.getSendType().toString());
+        }
+
         //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫�
-        if (ivrTaskcallVO.getSendType().equals("2")) {
+        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
             IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ();
-            ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid());
-            ivrTaskcallMQ.setSendType("1");
-            ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid());
+            ivrTaskcallMQ.setTaskid(sendTaskVO.getTaskId());
+            ivrTaskcallMQ.setSendType(sendTaskVO.getSendType());
+            ivrTaskcallMQ.setTemplateid(ivrTask.getTemplateid().toString());
+            ivrTaskcallMQ.setStopState(ivrTask.getStopState());
 
             String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
             ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1);
             //绔嬪嵆鍙戦��
             rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, 0L);
 
-        } else if (ivrTaskcallVO.getSendType().equals("1")) {
+            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
+            IvrTask ivrTask2 = new IvrTask();
+            ivrTask2.setTaskid(ivrTask.getTaskid());
+            ivrTask2.setSendState("2");
+            ivrTask2.setStopState(ivrTask.getStopState() + 1);
+            ivrTaskService.updateIvrTask(ivrTask2);
+        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1")) {
             //鏃堕棿娈靛彂閫�
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                for (TaskSendTimeVO taskSendTimeVO : ivrTaskcallVO.getSendTimeslot()) {
+            ObjectMapper objectMapper = new ObjectMapper();
+            if (StringUtils.isNotEmpty(ivrTask.getSendTimeSlot())) {
+                List<TaskSendTimeVO> taskSendTimeVOList = null;
+                try {
+                    taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), List.class);
+                } catch (JsonProcessingException e) {
+                    log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
+                }
+                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
                     //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
                     List<TaskSendTimeVO> list = new ArrayList<>();
                     list.add(taskSendTimeVO);
@@ -299,10 +331,11 @@
                         e.printStackTrace();
                     }
                     IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ();
-                    ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid());
+                    ivrTaskcallMQ.setTaskid(sendTaskVO.getTaskId());
                     ivrTaskcallMQ.setSendType("1");
-                    ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid());
+                    ivrTaskcallMQ.setTemplateid(ivrTask.getTemplateid().toString());
                     ivrTaskcallMQ.setSendTimeslot(list);
+                    ivrTaskcallMQ.setStopState(ivrTask.getStopState());
 
                     Long finalMilliseconds = milliseconds;
                     String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
@@ -310,13 +343,13 @@
                     rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, 0L);
                 }
                 //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-                IvrTask ivrTask = new IvrTask();
-                ivrTask.setTaskid(ivrTaskcallVO.getTaskid());
-                ivrTask.setSendState("2");
-                ivrTaskService.updateIvrTask(ivrTask);
+                IvrTask ivrTask2 = new IvrTask();
+                ivrTask2.setTaskid(ivrTask.getTaskid());
+                ivrTask2.setSendState("2");
+                ivrTask2.setStopState(ivrTask.getStopState() + 1);
+                ivrTaskService.updateIvrTask(ivrTask2);
             }
         }
-
         return 0;
     }
 
@@ -343,13 +376,13 @@
 
         Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
         IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskSingle");
-        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
+        List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("ivrTaskTemplateScriptVO");
         //灏唘uid鏇存柊鍒版暟鎹簱涓�
         ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
         ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
 
         //鑾峰彇妯℃澘淇℃伅
-        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
+        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrTaskTemplateVO");
 
         //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
         Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
@@ -357,22 +390,22 @@
         //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓�
         returnQues.setContent(phoneCallBackVO.getTextResult());
 
-        IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
+        IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
 
         if (StringUtils.isEmpty(returnQues.getContent())) {
             //鏃犲洖璇�
             //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
-            if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
+            if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) {
                 //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
-                if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
+                if (nowQuestion.getTargetid() == ivrTaskTemplateScriptVOs.size()) {
                     //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
                     redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                    phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                    phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
                     return;
                 } else {
                     //鏈変笅涓�棰�
                     redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                    IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
+                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(ivrTaskTemplateScriptVOs, nowQuestion);
                     // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
                     String date = simpleDateFormat1.format(new Date());
                     log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
@@ -393,25 +426,25 @@
             //isppd鐢ㄦ潵璁板綍鏄惁鍖归厤鍒�
             Boolean isppd = false;
             //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
-            for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
+            for (int j = 0; j < nowQuestion.getIvrTaskScriptTargetoptionList().size(); j++) {
                 //鍖呭惈
                 Matcher matcher = null;
-                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
-                    Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
+                    Pattern pattern = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
                     matcher = pattern.matcher(phoneCallBackVO.getTextResult());
                 }
                 //涓嶅寘鍚�
                 Matcher matcher2 = null;
-                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
-                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
+                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
                     matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
                 }
                 log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
                     //璇存槑鍖归厤姝g‘浜�
                     //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-                    nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
-                    ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
+                    nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(true);
+                    ivrTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
 
                     //灏嗛潤榛樼疆涓�0
                     redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
@@ -423,34 +456,34 @@
                     ivrTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
                     ivrTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
                     ivrTaskVisitResult.setCreateTime(new Date());
-                    ivrTaskVisitResult.setOptionResult(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetvalue());
+                    ivrTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
                     ivrTaskVisitResultMapper.insertIvrTaskVisitResult(ivrTaskVisitResult);
 
                     //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue
                     isppd = true;
 
                     //鑾峰彇涓嬩竴棰�
-                    Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
-                    for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
+                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
+                    for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOs) {
                         if (script.getTargetid() == nextQuestion) {
                             QuestionMessage questionMessage = new QuestionMessage();
                             questionMessage.setNowQuestion(script);
-                            questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
+                            questionMessage.setQuestionList(ivrTaskTemplateScriptVOs);
                             redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
                             phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
                             return;
-                        } else if (nextQuestion > ivrLibaTemplateScriptVOs.size()) {
+                        } else if (nextQuestion > ivrTaskTemplateScriptVOs.size()) {
                             //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
                             String date = simpleDateFormat1.format(new Date());
                             log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
                             redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                            phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                            phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
                             try {
                                 Thread.sleep(3000);
                             } catch (InterruptedException e) {
                                 e.printStackTrace();
                             }
-                            phoneUtils.hangup("", "", ivrLibaTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
+                            phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
                             return;
                         }
                     }
@@ -467,12 +500,12 @@
                 Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
                 if (mateNum == null) mateNum = 0;
                 //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-                if (mateNum == ivrLibaTemplateVO.getMateNum().intValue()) {
+                if (mateNum == ivrTaskTemplateVO.getMateNum().intValue()) {
                     //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-                    if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
+                    if (nowQuestion.getTargetid() < ivrTaskTemplateScriptVOs.size()) {
                         QuestionMessage questionMessage = new QuestionMessage();
-                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-                        questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
+                        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);
@@ -485,23 +518,23 @@
                         String date = simpleDateFormat1.format(new Date());
                         log.info("灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
                         redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                        phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
                         try {
                             Thread.sleep(3000);
                         } catch (InterruptedException e) {
                             e.printStackTrace();
                         }
-                        phoneUtils.hangup("", "", ivrLibaTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
+                        phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
                         return;
                     }
-                } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue()) {
+                } else if (mateNum < ivrTaskTemplateVO.getMateNum().intValue()) {
                     //娌℃湁闂埌瑙勫畾娆℃暟
                     mateNum = mateNum + 1;
                     redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
                 }
             }
             //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-            String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
+            String extemplateID = ivrTaskTemplateVO.getSubmoduleID();
             String[] split = extemplateID.split(",");
             List<String> list = Arrays.asList(split);
             List<Long> list1 = new ArrayList<>();
@@ -525,13 +558,13 @@
                     log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
                     if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
                         QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-                        IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
-                        ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
-                        ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = returnQues.getNowQuestion();
+                        ivrTaskTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
+                        ivrTaskTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
                         redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
                         if (ivrLibaExtemplatescript.getIsEnd() == 1) {
                             //灏嗛棶棰樼疆绌�
-                            IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
+                            IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
                             nowQuestion1.setQuestionText(null);
                             nowQuestion1.setQuestionVoice(null);
                             questionMessage.setNowQuestion(nowQuestion1);
@@ -542,7 +575,7 @@
                         //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
                         String date = simpleDateFormat1.format(new Date());
                         log.info("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrLibaTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
+                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
                     }
                     break;
                 }
@@ -552,7 +585,6 @@
             }
         }
     }
-
 
     //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
 //    @Override
@@ -789,12 +821,13 @@
 //        return phoneCallBackVO;
 //    }
 
-    private IvrLibaTemplateScriptVO getNextQuestion(List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO) {
 
-        for (int j = 0; j < ivrLibaTemplateScriptVOList.size(); j++) {
-            if (ivrLibaTemplateScriptVOList.get(j).getTargetid() == ivrLibaTemplateScriptVO.getTargetid() + 1) {
+    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO) {
+
+        for (int j = 0; j < ivrTaskTemplateScriptVOList.size(); j++) {
+            if (ivrTaskTemplateScriptVOList.get(j).getTargetid() == ivrTaskTemplateScriptVO.getTargetid() + 1) {
                 // 瀵硅鏉emplateScriptVO杩涜澶勭悊
-                return ivrLibaTemplateScriptVOList.get(j);
+                return ivrTaskTemplateScriptVOList.get(j);
             }
         }
         return null;
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateScriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateScriptServiceImpl.java
new file mode 100644
index 0000000..d7b4a51
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateScriptServiceImpl.java
@@ -0,0 +1,90 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrTaskTemplateScript;
+import com.smartor.mapper.IvrTaskTemplateScriptMapper;
+import com.smartor.service.IIvrTaskTemplateScriptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯$増闂璇濇湳搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Service
+public class IvrTaskTemplateScriptServiceImpl implements IIvrTaskTemplateScriptService {
+    @Autowired
+    private IvrTaskTemplateScriptMapper ivrTaskTemplateScriptMapper;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    @Override
+    public IvrTaskTemplateScript selectIvrTaskTemplateScriptByID(Long ID) {
+        return ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptByID(ID);
+    }
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 闅忚浠诲姟妯$増闂璇濇湳搴�
+     */
+    @Override
+    public List<IvrTaskTemplateScript> selectIvrTaskTemplateScriptList(IvrTaskTemplateScript ivrTaskTemplateScript) {
+        return ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript) {
+        ivrTaskTemplateScript.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateScriptMapper.insertIvrTaskTemplateScript(ivrTaskTemplateScript);
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param ivrTaskTemplateScript 闅忚浠诲姟妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskTemplateScript(IvrTaskTemplateScript ivrTaskTemplateScript) {
+        ivrTaskTemplateScript.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateScriptMapper.updateIvrTaskTemplateScript(ivrTaskTemplateScript);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateScriptByIDs(Long[] IDs) {
+        return ivrTaskTemplateScriptMapper.deleteIvrTaskTemplateScriptByIDs(IDs);
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯$増闂璇濇湳搴撲俊鎭�
+     *
+     * @param ID 闅忚浠诲姟妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateScriptByID(Long ID) {
+        return ivrTaskTemplateScriptMapper.deleteIvrTaskTemplateScriptByID(ID);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java
new file mode 100644
index 0000000..bafffe3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateServiceImpl.java
@@ -0,0 +1,265 @@
+package com.smartor.service.impl;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.IvrTaskTemplateMapper;
+import com.smartor.mapper.IvrTaskTemplateScriptMapper;
+import com.smartor.mapper.IvrTaskTemplateTargetoptionMapper;
+import com.smartor.service.IIvrTaskTemplateService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟闅忚妯℃澘搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Slf4j
+@Service
+public class IvrTaskTemplateServiceImpl implements IIvrTaskTemplateService {
+    @Autowired
+    private IvrTaskTemplateMapper ivrTaskTemplateMapper;
+
+    @Autowired
+    private IvrTaskTemplateScriptMapper ivrTaskTemplateScriptMapper;
+
+    @Autowired
+    private IvrTaskTemplateTargetoptionMapper ivrTaskTemplateTargetoptionMapper;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    @Override
+    public IvrTaskTemplate selectIvrTaskTemplateByID(Long ID) {
+        return ivrTaskTemplateMapper.selectIvrTaskTemplateByID(ID);
+    }
+
+    /**
+     * 鏌ヨ闅忚浠诲姟闅忚妯℃澘搴撳垪琛�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 闅忚浠诲姟闅忚妯℃澘搴�
+     */
+    @Override
+    public List<IvrTaskTemplate> selectIvrTaskTemplateList(IvrTaskTemplate ivrTaskTemplate) {
+        return ivrTaskTemplateMapper.selectIvrTaskTemplateList(ivrTaskTemplate);
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate) {
+        ivrTaskTemplate.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateMapper.insertIvrTaskTemplate(ivrTaskTemplate);
+    }
+
+    @Override
+    public int saveOrUpdateTempScript(IvrTaskTemplateVO ivrTaskTemplateVO) {
+        Integer i = null;
+        IvrTaskTemplate ivrTaskTemplate = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplate.class);
+        if (ivrTaskTemplateVO.getIsoperation() != null && ivrTaskTemplateVO.getIsoperation() == 1) {
+            //鏂板
+            ivrTaskTemplate.setCreateTime(new Date());
+            insertIvrTaskTemplate(ivrTaskTemplate);
+            i = ivrTaskTemplate.getID().intValue();
+        } else if (ivrTaskTemplateVO.getIsoperation() != null && ivrTaskTemplateVO.getIsoperation() == 2) {
+            //淇敼
+            ivrTaskTemplate.setUpdateTime(new Date());
+            updateIvrTaskTemplate(ivrTaskTemplate);
+            i = ivrTaskTemplate.getID().intValue();
+        }
+        log.info("鏂板闅忚浠诲姟闅忚妯℃澘鐨刬d涓猴細{}", ivrTaskTemplate.getID());
+
+
+        //瀵规ā鏉胯瘽鏈拰閫夐」杩涜澶勭悊锛堣瘽鏈〃涓庢寚鏍囪〃杩涜鍚堝苟浜嗭紝锛�
+        if (CollectionUtils.isNotEmpty(ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList())) {
+            for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateVO.getIvrTaskTemplateScriptVOList()) {
+                if (ivrTaskTemplateScriptVO.getIsoperation() != null && ivrTaskTemplateScriptVO.getIsoperation() == 1) {
+                    //鏂板
+                    IvrTaskTemplateScript ivrTaskTemplateScript = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScriptVO, IvrTaskTemplateScript.class);
+                    ivrTaskTemplateScript.setTemplateID(ivrTaskTemplate.getID());
+                    ivrTaskTemplateScript.setCreateTime(new Date());
+                    ivrTaskTemplateScriptMapper.insertIvrTaskTemplateScript(ivrTaskTemplateScript);
+                    //瀵归�夐」鐩繘琛屽鐞�
+                    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);
+                    //瀵归�夐」鐩繘琛屽鐞�
+                    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());
+                    }
+                }
+            }
+        }
+
+        return ivrTaskTemplate.getID().intValue();
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param ivrTaskTemplate 闅忚浠诲姟闅忚妯℃澘搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskTemplate(IvrTaskTemplate ivrTaskTemplate) {
+        ivrTaskTemplate.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateMapper.updateIvrTaskTemplate(ivrTaskTemplate);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateByIDs(Long[] IDs) {
+        return ivrTaskTemplateMapper.deleteIvrTaskTemplateByIDs(IDs);
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟闅忚妯℃澘搴撲俊鎭�
+     *
+     * @param ID 闅忚浠诲姟闅忚妯℃澘搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateByID(Long ID) {
+        return ivrTaskTemplateMapper.deleteIvrTaskTemplateByID(ID);
+    }
+
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    @Override
+    public IvrTaskTemplateVO selectInfoByCondition(IvrTaskTemplateVO ivrTaskTemplateVO) {
+        log.info("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢鐨勫叆鍙備负 : {}", ivrTaskTemplateVO);
+        //鍏堟牴鎹潯浠舵煡璇㈤棶棰樿〃淇℃伅
+        IvrTaskTemplate ivrTaskTemplate = DtoConversionUtils.sourceToTarget(ivrTaskTemplateVO, IvrTaskTemplate.class);
+        List<IvrTaskTemplate> ivrTaskTemplates = selectIvrTaskTemplateList(ivrTaskTemplate);
+        if (CollectionUtils.isEmpty(ivrTaskTemplates)) {
+            log.info("鎻愪緵鐨勬潯浠�,鏌ヨ妯℃澘璇︽儏鏁版嵁涓虹┖锛歿}", ivrTaskTemplates);
+            throw new BaseException("鎻愪緵鐨勬潯浠�,鏌ヨ妯℃澘璇︽儏鏁版嵁涓虹┖");
+        }
+
+        log.info("ivrLibaTemplates鐨勬煡璇㈢粨鏋滀负:{},鏁伴噺涓� : {}", ivrTaskTemplates.get(0), ivrTaskTemplates.size());
+        //瀹氫箟IvrLibaTemplateVO 鐢ㄤ簬杩斿弬
+        IvrTaskTemplateVO templateVO = DtoConversionUtils.sourceToTarget(ivrTaskTemplates.get(0), IvrTaskTemplateVO.class);
+//
+//        //鑾峰彇tag淇℃伅
+//        IvrLibaTemplateTag ivrLibaTemplateTag = new IvrLibaTemplateTag();
+//        ivrLibaTemplateTag.setTemplateid(ivrTaskTemplates.get(0).getID());
+//        List<IvrLibaTemplateTag> ivrLibaTemplateTags = ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
+
+        //鏌ヨ璇濇湳
+        IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
+        ivrTaskTemplateScript.setTemplateID(ivrTaskTemplates.get(0).getID());
+        List<IvrTaskTemplateScript> ivrTaskTemplateScripts = ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
+        List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScripts, IvrTaskTemplateScriptVO.class);
+
+        //閫氳繃璇濇湳ID鑾峰彇閫夐」
+        for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
+            log.info("ivrLibaTemplateScriptVO鐨勪富閿甶d涓猴細{}", ivrTaskTemplateScriptVO.getID());
+            IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
+            ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScriptVO.getID());
+            List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = ivrTaskTemplateTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+            for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 : ivrTaskTemplateTargetoptions) {
+                ObjectMapper mapper = new ObjectMapper();
+                if (!StringUtils.isEmpty(ivrTaskTemplateTargetoption1.getDynamiccruxs())) {
+                    try {
+                        ivrTaskTemplateTargetoption1.setDynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoption1.getDynamiccruxsJson(), List.class));
+                    } catch (JsonProcessingException e) {
+                        e.printStackTrace();
+                    }
+                }
+
+                if (!StringUtils.isEmpty(ivrTaskTemplateTargetoption1.getNodynamiccruxs())) {
+                    try {
+                        ivrTaskTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(ivrTaskTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
+                    } catch (JsonProcessingException e) {
+                        e.printStackTrace();
+                    }
+                }
+
+            }
+            ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
+        }
+        Collections.sort(ivrTaskTemplateScriptVOS, Comparator.comparing(IvrTaskTemplateScriptVO::getTargetid));
+        //鏁版嵁缁勮
+//        templateVO.setIvrTaskTemplateTagList(ivrLibaTemplateTags);
+        templateVO.setIvrTaskTemplateScriptVOList(ivrTaskTemplateScriptVOS);
+        return templateVO;
+    }
+
+
+    private void dealOption(List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptionList, IvrTaskTemplateScript ivrTaskTemplateScript, Long tmpID) {
+        log.info("ivrLibaTemplateScript鐨勫�间负锛歿}", ivrTaskTemplateScript);
+        //瀵规ā鏉挎寚鏍囬�夐」杩涜澶勭悊
+        if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoptionList)) {
+            for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateTargetoptionList) {
+                if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 1) {
+                    //鏂板
+                    ivrTaskTemplateTargetoption.setTemplateID(tmpID);
+                    ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getID());
+                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getDynamiccruxs()))
+                        ivrTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getDynamiccruxs()));
+                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
+                        ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
+                    ivrTaskTemplateTargetoptionMapper.insertIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
+                } else if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 2) {
+                    //淇敼
+                    ivrTaskTemplateTargetoption.setTemplateID(tmpID);
+                    ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScript.getID());
+                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getDynamiccruxs()))
+                        ivrTaskTemplateTargetoption.setDynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getDynamiccruxs()));
+                    if (CollectionUtils.isNotEmpty(ivrTaskTemplateTargetoption.getNodynamiccruxs()))
+                        ivrTaskTemplateTargetoption.setNodynamiccruxsJson(JSON.toJSONString(ivrTaskTemplateTargetoption.getNodynamiccruxs()));
+                    ivrTaskTemplateTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
+                } else if (ivrTaskTemplateTargetoption.getIsoperation() != null && ivrTaskTemplateTargetoption.getIsoperation() == 3) {
+                    //鍒犻櫎
+                    if (ivrTaskTemplateTargetoption.getId() == null) {
+                        log.info("鍒犻櫎澶辫触,妯℃澘鎸囨爣閫夐」id涓虹┖");
+                    } else {
+                        ivrTaskTemplateTargetoptionMapper.deleteIvrTaskTemplateTargetoptionById(ivrTaskTemplateTargetoption.getId());
+                    }
+                }
+            }
+        }
+    }
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateTargetoptionServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateTargetoptionServiceImpl.java
new file mode 100644
index 0000000..34e93d4
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskTemplateTargetoptionServiceImpl.java
@@ -0,0 +1,97 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrTaskTemplateTargetoption;
+import com.smartor.mapper.IvrTaskTemplateTargetoptionMapper;
+import com.smartor.service.IIvrTaskTemplateTargetoptionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-05-13
+ */
+@Service
+public class IvrTaskTemplateTargetoptionServiceImpl implements IIvrTaskTemplateTargetoptionService
+{
+    @Autowired
+    private IvrTaskTemplateTargetoptionMapper ivrTaskTemplateTargetoptionMapper;
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    @Override
+    public IvrTaskTemplateTargetoption selectIvrTaskTemplateTargetoptionById(Long id)
+    {
+        return ivrTaskTemplateTargetoptionMapper.selectIvrTaskTemplateTargetoptionById(id);
+    }
+
+    /**
+     * 鏌ヨ闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     */
+    @Override
+    public List<IvrTaskTemplateTargetoption> selectIvrTaskTemplateTargetoptionList(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption)
+    {
+        return ivrTaskTemplateTargetoptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
+    }
+
+    /**
+     * 鏂板闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption)
+    {
+        ivrTaskTemplateTargetoption.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateTargetoptionMapper.insertIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
+    }
+
+    /**
+     * 淇敼闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrTaskTemplateTargetoption 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskTemplateTargetoption(IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption)
+    {
+        ivrTaskTemplateTargetoption.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskTemplateTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateTargetoption);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateTargetoptionByIds(Long[] ids)
+    {
+        return ivrTaskTemplateTargetoptionMapper.deleteIvrTaskTemplateTargetoptionByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲俊鎭�
+     *
+     * @param id 闅忚浠诲姟妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskTemplateTargetoptionById(Long id)
+    {
+        return ivrTaskTemplateTargetoptionMapper.deleteIvrTaskTemplateTargetoptionById(id);
+    }
+}
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
index 41c167d..43608c9 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
@@ -6,32 +6,19 @@
 
     <resultMap type="com.smartor.domain.IvrLibaTemplate" id="IvrLibaTemplateResult">
         <result property="ID" column="ID"/>
-        <result property="targetid" column="targetid"/>
-        <result property="targetname" column="targetname"/>
         <result property="templateName" column="templateName"/>
-        <result property="silencetime" column="silencetime"/>
-        <result property="slienceRepeatTimes" column="slienceRepeatTimes"/>
-        <result property="nomatchRepeatTimes" column="nomatchRepeatTimes"/>
         <result property="firstQuestionNum" column="firstQuestionNum"/>
         <result property="submodule" column="submodule"/>
         <result property="language" column="language"/>
         <result property="note" column="note"/>
-        <result property="valueType" column="value_type"/>
-        <result property="reply" column="reply"/>
-        <result property="addUserID" column="addUserID"/>
-        <result property="addTime" column="addTime"/>
-        <result property="modifyUserID" column="modifyUserID"/>
-        <result property="modifyTime" column="modifyTime"/>
         <result property="groupID" column="groupID"/>
         <result property="labelInfo" column="label_info"/>
         <result property="submoduleID" column="submoduleID"/>
         <result property="playType" column="playType"/>
         <result property="icd10code" column="icd10code"/>
         <result property="icd10codename" column="icd10codename"/>
-        <result property="atuoTaskDayOffset" column="atuoTaskDayOffset"/>
         <result property="deptIds" column="deptIds"/>
         <result property="deptNames" column="dept_names"/>
-        <result property="fKsdm" column="F_KSDM"/>
         <result property="delFlag" column="del_flag"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
@@ -49,35 +36,29 @@
         <result property="campus" column="campus"/>
         <result property="tag" column="tag"/>
         <result property="suitway" column="suitway"/>
-        <result property="otherdata" column="otherdata"/>
         <result property="mateNum" column="mate_num"/>
         <result property="revisitBefore" column="revisit_before"/>
         <result property="revisitAfter" column="revisit_after"/>
         <result property="noVoiceNum" column="no_voice_num"/>
+        <result property="silencetime" column="silencetime"/>
     </resultMap>
 
     <sql id="selectIvrLibaTemplateVo">
         select ID,
-               targetid,
-               value_type,
-               reply,
                revisit_before,
                revisit_after,
-               targetname,
                templateName,
-               silencetime,
-               slienceRepeatTimes,
-               nomatchRepeatTimes,
                firstQuestionNum,
                version,
+               silencetime,
                usestate,
                campus,
                tag,
-               otherdata,
                suitway,
                mate_num,
                no_voice_num,
-               submodule, language, note, addUserID, addTime, modifyUserID, modifyTime, groupID, label_info, submoduleID, playType, icd10code, icd10codename, atuoTaskDayOffset, deptIds, dept_names, F_KSDM, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, assortid, parameter
+               submodule, language, note,
+            groupID, label_info, submoduleID, playType, icd10code, icd10codename, deptIds, dept_names, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, assortid, parameter
         from ivr_liba_template
     </sql>
 
@@ -89,26 +70,16 @@
             <if test="templateName != null  and templateName != ''">and templateName like concat('%', #{templateName},
                 '%')
             </if>
-            <if test="targetid != null ">and targetid = #{targetid}</if>
             <if test="ID != null ">and id = #{ID}</if>
             <if test="revisitAfter != null ">and revisit_after = #{revisitAfter}</if>
             <if test="revisitBefore != null ">and revisit_before = #{revisitBefore}</if>
             <if test="mateNum != null and mateNum > 0">and mate_num = #{mateNum}</if>
             <if test="suitway != null ">and suitway = #{suitway}</if>
-            <if test="targetname != null and targetname !='' ">and targetname = #{targetname}</if>
             <if test="version != null and version !='' ">and version = #{version}</if>
-            <if test="usestate != null and usestate !='' ">and usestate = #{usestate}</if>
-            <if test="silencetime != null ">and silencetime = #{silencetime}</if>
-            <if test="slienceRepeatTimes != null ">and slienceRepeatTimes = #{slienceRepeatTimes}</if>
-            <if test="nomatchRepeatTimes != null ">and nomatchRepeatTimes = #{nomatchRepeatTimes}</if>
             <if test="firstQuestionNum != null ">and firstQuestionNum = #{firstQuestionNum}</if>
             <if test="submodule != null  and submodule != ''">and submodule = #{submodule}</if>
             <if test="language != null  and language != ''">and language = #{language}</if>
             <if test="note != null  and note != ''">and note = #{note}</if>
-            <if test="addUserID != null  and addUserID != ''">and addUserID = #{addUserID}</if>
-            <if test="addTime != null ">and addTime = #{addTime}</if>
-            <if test="modifyUserID != null  and modifyUserID != ''">and modifyUserID = #{modifyUserID}</if>
-            <if test="modifyTime != null ">and modifyTime = #{modifyTime}</if>
             <if test="groupID != null  and groupID != ''">and groupID = #{groupID}</if>
             <if test="labelInfo != null  and labelInfo != ''">and label_info = #{labelInfo}</if>
             <if test="submoduleID != null  and submoduleID != ''">and submoduleID = #{submoduleID}</if>
@@ -121,9 +92,7 @@
             <if test="deptNames != null  and deptNames != ''">and dept_names like concat('%',
                 #{deptNames}, '%')
             </if>
-            <if test="atuoTaskDayOffset != null ">and atuoTaskDayOffset = #{atuoTaskDayOffset}</if>
             <if test="deptIds != null  and deptIds != ''">and deptIds = #{deptIds}</if>
-            <if test="fKsdm != null  and fKsdm != ''">and F_KSDM = #{fKsdm}</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>
@@ -133,6 +102,7 @@
             <if test="parameter != null  and parameter != ''">and parameter = #{parameter}</if>
             <if test="tag != null  and tag != ''">and tag = #{tag}</if>
             <if test="noVoiceNum != null and noVoiceNum > 0">and no_voice_num = #{noVoiceNum}</if>
+            <if test="silencetime != null">and silencetime = #{silencetime}</if>
         </where>
     </select>
 
@@ -146,34 +116,21 @@
         insert into ivr_liba_template
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="templateName != null and templateName != ''">templateName,</if>
-            <if test="targetid != null">targetid,</if>
-            <if test="targetname != null and targetname != ''">targetname,</if>
             <if test="version != null and version != ''">version,</if>
             <if test="campus != null and campus != ''">campus,</if>
             <if test="usestate != null and usestate != ''">usestate,</if>
-            <if test="silencetime != null">silencetime,</if>
-            <if test="slienceRepeatTimes != null">slienceRepeatTimes,</if>
-            <if test="nomatchRepeatTimes != null">nomatchRepeatTimes,</if>
             <if test="firstQuestionNum != null">firstQuestionNum,</if>
             <if test="submodule != null">submodule,</if>
             <if test="language != null and language != ''">language,</if>
             <if test="note != null">note,</if>
-            <if test="valueType != null">value_type,</if>
-            <if test="reply != null">reply,</if>
-            <if test="addUserID != null">addUserID,</if>
-            <if test="addTime != null">addTime,</if>
-            <if test="modifyUserID != null">modifyUserID,</if>
-            <if test="modifyTime != null">modifyTime,</if>
             <if test="groupID != null">groupID,</if>
             <if test="labelInfo != null">label_info,</if>
             <if test="submoduleID != null">submoduleID,</if>
             <if test="playType != null">playType,</if>
             <if test="icd10code != null">icd10code,</if>
             <if test="icd10codename != null">icd10codename,</if>
-            <if test="atuoTaskDayOffset != null">atuoTaskDayOffset,</if>
             <if test="deptIds != null">deptIds,</if>
             <if test="deptNames != null">dept_names,</if>
-            <if test="fKsdm != null">F_KSDM,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
@@ -188,42 +145,29 @@
             <if test="parameter != null">parameter,</if>
             <if test="tag != null">tag,</if>
             <if test="suitway != null">suitway,</if>
-            <if test="otherdata != null">otherdata,</if>
-            <if test="mateNum != null ">mate_num</if>
-            <if test="revisitAfter != null ">revisit_after</if>
-            <if test="revisitBefore != null ">revisit_before</if>
-            <if test="noVoiceNum != null and noVoiceNum > 0 ">no_voice_num</if>
+            <if test="mateNum != null ">mate_num,</if>
+            <if test="revisitAfter != null ">revisit_after,</if>
+            <if test="revisitBefore != null ">revisit_before,</if>
+            <if test="noVoiceNum != null and noVoiceNum > 0 ">no_voice_num,</if>
+            <if test="silencetime != null  ">silencetime,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="templateName != null and templateName != ''">#{templateName},</if>
-            <if test="targetid != null ">#{targetid},</if>
-            <if test="targetname != null and targetname != ''">#{targetname},</if>
             <if test="version != null and version != ''">#{version},</if>
             <if test="campus != null and campus != ''">#{campus},</if>
             <if test="usestate != null and usestate != ''">#{usestate},</if>
-            <if test="silencetime != null">#{silencetime},</if>
-            <if test="slienceRepeatTimes != null">#{slienceRepeatTimes},</if>
-            <if test="nomatchRepeatTimes != null">#{nomatchRepeatTimes},</if>
             <if test="firstQuestionNum != null">#{firstQuestionNum},</if>
             <if test="submodule != null">#{submodule},</if>
             <if test="language != null and language != ''">#{language},</if>
             <if test="note != null">#{note},</if>
-            <if test="valueType != null">#{valueType},</if>
-            <if test="reply != null">#{reply},</if>
-            <if test="addUserID != null">#{addUserID},</if>
-            <if test="addTime != null">#{addTime},</if>
-            <if test="modifyUserID != null">#{modifyUserID},</if>
-            <if test="modifyTime != null">#{modifyTime},</if>
             <if test="groupID != null">#{groupID},</if>
             <if test="labelInfo != null">#{labelInfo},</if>
             <if test="submoduleID != null">#{submoduleID},</if>
             <if test="playType != null">#{playType},</if>
             <if test="icd10code != null">#{icd10code},</if>
             <if test="icd10codename != null">#{icd10codename},</if>
-            <if test="atuoTaskDayOffset != null">#{atuoTaskDayOffset},</if>
             <if test="deptIds != null">#{deptIds},</if>
             <if test="deptNames != null">#{deptNames},</if>
-            <if test="fKsdm != null">#{fKsdm},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
@@ -238,11 +182,11 @@
             <if test="parameter != null">#{parameter},</if>
             <if test="tag != null">#{tag},</if>
             <if test="suitway != null">#{suitway},</if>
-            <if test="otherdata != null">#{otherdata},</if>
-            <if test="mateNum != null ">#{mateNum}</if>
-            <if test="revisitAfter != null ">#{revisitAfter}</if>
-            <if test="revisitBefore != null ">#{revisitBefore}</if>
-            <if test="noVoiceNum != null and noVoiceNum > 0">#{noVoiceNum}</if>
+            <if test="mateNum != null ">#{mateNum},</if>
+            <if test="revisitAfter != null ">#{revisitAfter},</if>
+            <if test="revisitBefore != null ">#{revisitBefore},</if>
+            <if test="noVoiceNum != null and noVoiceNum > 0">#{noVoiceNum},</if>
+            <if test="silencetime != null ">#{silencetime},</if>
 
         </trim>
     </insert>
@@ -251,24 +195,13 @@
         update ivr_liba_template
         <trim prefix="SET" suffixOverrides=",">
             <if test="templateName != null and templateName != ''">templateName = #{templateName},</if>
-            <if test="targetid != null ">targetid = #{targetid},</if>
-            <if test="targetname != null and targetname != ''">targetname = #{targetname},</if>
             <if test="version != null and version != ''">version = #{version},</if>
             <if test="campus != null and campus != ''">campus = #{campus},</if>
             <if test="usestate != null and usestate != ''">usestate = #{usestate},</if>
-            <if test="silencetime != null">silencetime = #{silencetime},</if>
-            <if test="slienceRepeatTimes != null">slienceRepeatTimes = #{slienceRepeatTimes},</if>
-            <if test="nomatchRepeatTimes != null">nomatchRepeatTimes = #{nomatchRepeatTimes},</if>
             <if test="firstQuestionNum != null">firstQuestionNum = #{firstQuestionNum},</if>
             <if test="submodule != null">submodule = #{submodule},</if>
             <if test="language != null and language != ''">language = #{language},</if>
             <if test="note != null">note = #{note},</if>
-            <if test="valueType != null">value_type = #{valueType},</if>
-            <if test="reply != null">reply = #{reply},</if>
-            <if test="addUserID != null">addUserID = #{addUserID},</if>
-            <if test="addTime != null">addTime = #{addTime},</if>
-            <if test="modifyUserID != null">modifyUserID = #{modifyUserID},</if>
-            <if test="modifyTime != null">modifyTime = #{modifyTime},</if>
             <if test="groupID != null">groupID = #{groupID},</if>
             <if test="labelInfo != null">label_info = #{labelInfo},</if>
             <if test="submoduleID != null">submoduleID = #{submoduleID},</if>
@@ -278,7 +211,6 @@
             <if test="atuoTaskDayOffset != null">atuoTaskDayOffset = #{atuoTaskDayOffset},</if>
             <if test="deptIds != null">deptIds = #{deptIds},</if>
             <if test="deptNames != null">dept_names = #{deptNames},</if>
-            <if test="fKsdm != null">F_KSDM = #{fKsdm},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
@@ -293,11 +225,11 @@
             <if test="parameter != null">parameter = #{parameter},</if>
             <if test="tag != null">tag = #{tag},</if>
             <if test="suitway != null">suitway = #{suitway},</if>
-            <if test="otherdata != null">otherdata = #{otherdata},</if>
             <if test="mateNum != null ">mate_num = #{mateNum},</if>
             <if test="revisitAfter != null ">revisit_after = #{revisitAfter},</if>
             <if test="revisitBefore != null ">revisit_before = #{revisitBefore},</if>
             <if test="noVoiceNum != null and noVoiceNum > 0 ">no_voice_num = #{noVoiceNum}</if>
+            <if test="silencetime != null">silencetime = #{silencetime}</if>
         </trim>
         where ID = #{ID}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
index cfc7c3d..874b07a 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
@@ -21,8 +21,6 @@
         <result property="noClearlyText" column="noClearlyText"/>
         <result property="noClearlyVoice" column="noClearlyVoice"/>
         <result property="categoryName" column="categoryName"/>
-        <result property="targetOptions" column="targetOptions"/>
-        <result property="language" column="language"/>
         <result property="playWavOnly" column="playWavOnly"/>
         <result property="valueType" column="value_type"/>
         <result property="delFlag" column="del_flag"/>
@@ -36,13 +34,11 @@
         <result property="pid" column="pid"/>
         <result property="guid" column="guid"/>
         <result property="targetid" column="targetid"/>
-        <result property="targettype" column="targettype"/>
         <result property="targetvalue" column="targettalue"/>
         <result property="questiontitle" column="questiontitle"/>
         <result property="nextQuestion" column="next_question"/>
         <result property="otherdata" column="otherdata"/>
         <result property="isMust" column="is_must"/>
-        <result property="questionResult" column="question_result"/>
     </resultMap>
 
     <sql id="selectIvrLibaTemplateScriptVo">
@@ -63,14 +59,23 @@
                noClearlyVoice,
                categoryName,
                targetid,
-               targettype,
+               value_type,
                targetvalue,
                questiontitle,
                next_question,
                otherdata,
                is_must,
-               question_result,
-               targetOptions, language, playWavOnly, value_type, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+               playWavOnly,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               orgid,
+               pid,
+               guid
         from ivr_liba_template_script
     </sql>
 
@@ -93,15 +98,13 @@
             <if test="noClearlyText != null  and noClearlyText != ''">and noClearlyText = #{noClearlyText}</if>
             <if test="noClearlyVoice != null  and noClearlyVoice != ''">and noClearlyVoice = #{noClearlyVoice}</if>
             <if test="nextQuestion != null  and nextQuestion != ''">and next_question = #{nextQuestion}</if>
-            <if test="questionResult != null  and questionResult != ''">and question_result = #{questionResult}</if>
             <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
                 '%')
             </if>
-            <if test="questiontitle != null  and questiontitle != ''">and questiontitle like concat('%', #{questiontitle},
+            <if test="questiontitle != null  and questiontitle != ''">and questiontitle like concat('%',
+                #{questiontitle},
                 '%')
             </if>
-            <if test="targetOptions != null  and targetOptions != ''">and targetOptions = #{targetOptions}</if>
-            <if test="language != null  and language != ''">and language = #{language}</if>
             <if test="playWavOnly != null ">and playWavOnly = #{playWavOnly}</if>
             <if test="valueType != null ">and value_type = #{valueType}</if>
             <if test="isupload != null ">and isupload = #{isupload}</if>
@@ -110,7 +113,6 @@
             <if test="pid != null ">and pid = #{pid}</if>
             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
             <if test="targetid != null ">and targetid = #{targetid}</if>
-            <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
             <if test="targetvalue != null  and targetvalue != ''">and targetvalue = #{targetvalue}</if>
             <if test="isMust != null  and isMust != ''">and is_must = #{isMust}</if>
         </where>
@@ -141,8 +143,6 @@
             <if test="noClearlyText != null">noClearlyText,</if>
             <if test="noClearlyVoice != null">noClearlyVoice,</if>
             <if test="categoryName != null">categoryName,</if>
-            <if test="targetOptions != null">targetOptions,</if>
-            <if test="language != null and language != ''">language,</if>
             <if test="playWavOnly != null">playWavOnly,</if>
             <if test="valueType != null">value_type,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
@@ -156,13 +156,11 @@
             <if test="pid != null">pid,</if>
             <if test="guid != null">guid,</if>
             <if test="targetvalue != null">targetvalue,</if>
-            <if test="targettype != null">targettype,</if>
             <if test="targetid != null">targetid,</if>
             <if test="questiontitle != null">questiontitle,</if>
             <if test="nextQuestion != null">next_question,</if>
             <if test="otherdata != null">otherdata,</if>
             <if test="isMust != null  and isMust != ''">is_must,</if>
-            <if test="questionResult != null  and questionResult != ''">question_result,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
@@ -180,8 +178,6 @@
             <if test="noClearlyText != null">#{noClearlyText},</if>
             <if test="noClearlyVoice != null">#{noClearlyVoice},</if>
             <if test="categoryName != null">#{categoryName},</if>
-            <if test="targetOptions != null">#{targetOptions},</if>
-            <if test="language != null and language != ''">#{language},</if>
             <if test="playWavOnly != null">#{playWavOnly},</if>
             <if test="valueType != null">#{valueType},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
@@ -195,13 +191,11 @@
             <if test="pid != null">#{pid},</if>
             <if test="guid != null">#{guid},</if>
             <if test="targetvalue != null">#{targetvalue},</if>
-            <if test="targettype != null">#{targettype},</if>
             <if test="targetid != null">#{targetid},</if>
             <if test="questiontitle != null">#{questiontitle},</if>
             <if test="nextQuestion != null">#{nextQuestion},</if>
             <if test="otherdata != null">#{otherdata},</if>
             <if test="isMust != null  and isMust != ''">#{isMust},</if>
-            <if test="questionResult != null  and questionResult != ''">#{questionResult},</if>
         </trim>
     </insert>
 
@@ -223,8 +217,6 @@
             <if test="noClearlyText != null">noClearlyText = #{noClearlyText},</if>
             <if test="noClearlyVoice != null">noClearlyVoice = #{noClearlyVoice},</if>
             <if test="categoryName != null">categoryName = #{categoryName},</if>
-            <if test="targetOptions != null">targetOptions = #{targetOptions},</if>
-            <if test="language != null and language != ''">language = #{language},</if>
             <if test="playWavOnly != null">playWavOnly = #{playWavOnly},</if>
             <if test="valueType != null">value_type = #{valueType},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
@@ -237,14 +229,11 @@
             <if test="orgid != null">orgid = #{orgid},</if>
             <if test="pid != null">pid = #{pid},</if>
             <if test="guid != null">guid = #{guid},</if>
-            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
-            <if test="targettype != null">targettype = #{targettype},</if>
             <if test="targetid != null">targetid = #{targetid},</if>
             <if test="questiontitle != null">questiontitle = #{questiontitle},</if>
             <if test="nextQuestion != null">next_question = #{nextQuestion},</if>
             <if test="otherdata != null">otherdata = #{otherdata},</if>
             <if test="isMust != null  and isMust != ''">is_must = #{isMust}</if>
-            <if test="questionResult != null  and questionResult != ''">question_result = #{questionResult},</if>
         </trim>
         where ID = #{ID}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml
deleted file mode 100644
index 5f61611..0000000
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml
+++ /dev/null
@@ -1,225 +0,0 @@
-<?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.IvrLibaTemplateTargetMapper">
-
-    <resultMap type="com.smartor.domain.IvrLibaTemplateTarget" id="IvrLibaTemplateTargetResult">
-        <result property="id" column="id"/>
-        <result property="templateQuestionID" column="templateQuestionID"/>
-        <result property="templateQuestionNum" column="templateQuestionNum"/>
-        <result property="nextQuestionNum" column="nextQuestionNum"/>
-        <result property="templateID" column="templateID"/>
-        <result property="switchID" column="switchID"/>
-        <result property="switchDescription" column="switchDescription"/>
-        <result property="switchText" column="switchText"/>
-        <result property="switchWav" column="switchWav"/>
-        <result property="switchTempWav" column="switchTempWav"/>
-        <result property="targetType" column="targetType"/>
-        <result property="categoryName" column="categoryName"/>
-        <result property="targetValue" column="targetValue"/>
-        <result property="targetid" column="targetid"/>
-        <result property="questionTargetid" column="questionTargetid"/>
-        <result property="basicRegex" column="basicRegex"/>
-        <result property="selfRegex" column="selfRegex"/>
-        <result property="regexUsedType" column="regexUsedType"/>
-        <result property="language" column="language"/>
-        <result property="isEnable" column="isEnable"/>
-        <result property="playType" column="playType"/>
-        <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="selectIvrLibaTemplateTargetVo">
-        select id,
-               templateQuestionID,
-               templateQuestionNum,
-               nextQuestionNum,
-               templateID,
-               switchID,
-               switchDescription,
-               switchText,
-               switchWav,
-               switchTempWav,
-               targetType,
-               categoryName,
-               targetValue,
-               targetid,
-               questionTargetid,
-               basicRegex,
-               selfRegex,
-               regexUsedType, language, isEnable, playType, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
-        from ivr_liba_template_target
-    </sql>
-
-    <select id="selectIvrLibaTemplateTargetList" parameterType="com.smartor.domain.IvrLibaTemplateTarget"
-            resultMap="IvrLibaTemplateTargetResult">
-        <include refid="selectIvrLibaTemplateTargetVo"/>
-        <where>
-            <if test="templateQuestionID != null ">and templateQuestionID = #{templateQuestionID}</if>
-            <if test="templateQuestionNum != null ">and templateQuestionNum = #{templateQuestionNum}</if>
-            <if test="nextQuestionNum != null ">and nextQuestionNum = #{nextQuestionNum}</if>
-            <if test="templateID != null ">and templateID = #{templateID}</if>
-            <if test="switchID != null ">and switchID = #{switchID}</if>
-            <if test="switchDescription != null  and switchDescription != ''">and switchDescription =
-                #{switchDescription}
-            </if>
-            <if test="switchText != null  and switchText != ''">and switchText = #{switchText}</if>
-            <if test="switchWav != null  and switchWav != ''">and switchWav = #{switchWav}</if>
-            <if test="switchTempWav != null  and switchTempWav != ''">and switchTempWav = #{switchTempWav}</if>
-            <if test="targetType != null  and targetType != ''">and targetType = #{targetType}</if>
-            <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
-                '%')
-            </if>
-            <if test="targetValue != null  and targetValue != ''">and targetValue = #{targetValue}</if>
-            <if test="targetid != null  and targetid != ''">and targetid = #{targetid}</if>
-            <if test="questionTargetid != null  and questionTargetid != ''">and questionTargetid = #{questionTargetid}
-            </if>
-            <if test="basicRegex != null  and basicRegex != ''">and basicRegex = #{basicRegex}</if>
-            <if test="selfRegex != null  and selfRegex != ''">and selfRegex = #{selfRegex}</if>
-            <if test="regexUsedType != null  and regexUsedType != ''">and regexUsedType = #{regexUsedType}</if>
-            <if test="language != null  and language != ''">and language = #{language}</if>
-            <if test="isEnable != null ">and isEnable = #{isEnable}</if>
-            <if test="playType != null ">and playType = #{playType}</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="selectIvrLibaTemplateTargetByID" parameterType="Long" resultMap="IvrLibaTemplateTargetResult">
-        <include refid="selectIvrLibaTemplateTargetVo"/>
-        where id = #{id}
-    </select>
-
-    <insert id="insertIvrLibaTemplateTarget" parameterType="com.smartor.domain.IvrLibaTemplateTarget" useGeneratedKeys="true"
-            keyProperty="ID">
-        insert into ivr_liba_template_target
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="templateQuestionID != null">templateQuestionID,</if>
-            <if test="templateQuestionNum != null">templateQuestionNum,</if>
-            <if test="nextQuestionNum != null">nextQuestionNum,</if>
-            <if test="templateID != null">templateID,</if>
-            <if test="switchID != null">switchID,</if>
-            <if test="switchDescription != null">switchDescription,</if>
-            <if test="switchText != null">switchText,</if>
-            <if test="switchWav != null">switchWav,</if>
-            <if test="switchTempWav != null">switchTempWav,</if>
-            <if test="targetType != null">targetType,</if>
-            <if test="categoryName != null">categoryName,</if>
-            <if test="targetValue != null">targetValue,</if>
-            <if test="targetid != null">targetid,</if>
-            <if test="questionTargetid != null">questionTargetid,</if>
-            <if test="basicRegex != null">basicRegex,</if>
-            <if test="selfRegex != null">selfRegex,</if>
-            <if test="regexUsedType != null">regexUsedType,</if>
-            <if test="language != null">language,</if>
-            <if test="isEnable != null">isEnable,</if>
-            <if test="playType != null">playType,</if>
-            <if test="delFlag != null and delFlag != ''">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="templateQuestionID != null">#{templateQuestionID},</if>
-            <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
-            <if test="nextQuestionNum != null">#{nextQuestionNum},</if>
-            <if test="templateID != null">#{templateID},</if>
-            <if test="switchID != null">#{switchID},</if>
-            <if test="switchDescription != null">#{switchDescription},</if>
-            <if test="switchText != null">#{switchText},</if>
-            <if test="switchWav != null">#{switchWav},</if>
-            <if test="switchTempWav != null">#{switchTempWav},</if>
-            <if test="targetType != null">#{targetType},</if>
-            <if test="categoryName != null">#{categoryName},</if>
-            <if test="targetValue != null">#{targetValue},</if>
-            <if test="targetid != null">#{targetid},</if>
-            <if test="questionTargetid != null">#{questionTargetid},</if>
-            <if test="basicRegex != null">#{basicRegex},</if>
-            <if test="selfRegex != null">#{selfRegex},</if>
-            <if test="regexUsedType != null">#{regexUsedType},</if>
-            <if test="language != null">#{language},</if>
-            <if test="isEnable != null">#{isEnable},</if>
-            <if test="playType != null">#{playType},</if>
-            <if test="delFlag != null and delFlag != ''">#{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="updateIvrLibaTemplateTarget" parameterType="com.smartor.domain.IvrLibaTemplateTarget">
-        update ivr_liba_template_target
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="templateQuestionID != null">templateQuestionID = #{templateQuestionID},</if>
-            <if test="templateQuestionNum != null">templateQuestionNum = #{templateQuestionNum},</if>
-            <if test="nextQuestionNum != null">nextQuestionNum = #{nextQuestionNum},</if>
-            <if test="templateID != null">templateID = #{templateID},</if>
-            <if test="switchID != null">switchID = #{switchID},</if>
-            <if test="switchDescription != null">switchDescription = #{switchDescription},</if>
-            <if test="switchText != null">switchText = #{switchText},</if>
-            <if test="switchWav != null">switchWav = #{switchWav},</if>
-            <if test="switchTempWav != null">switchTempWav = #{switchTempWav},</if>
-            <if test="targetType != null">targetType = #{targetType},</if>
-            <if test="categoryName != null">categoryName = #{categoryName},</if>
-            <if test="targetValue != null">targetValue = #{targetValue},</if>
-            <if test="targetid != null">targetID = #{targetid},</if>
-            <if test="questionTargetid != null">questionTargetid = #{questionTargetid},</if>
-            <if test="basicRegex != null">basicRegex = #{basicRegex},</if>
-            <if test="selfRegex != null">selfRegex = #{selfRegex},</if>
-            <if test="regexUsedType != null">regexUsedType = #{regexUsedType},</if>
-            <if test="language != null">language = #{language},</if>
-            <if test="isEnable != null">isEnable = #{isEnable},</if>
-            <if test="playType != null">playType = #{playType},</if>
-            <if test="delFlag != null and delFlag != ''">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>
-
-    <update id="deleteIvrLibaTemplateTargetByID" parameterType="Long">
-        update ivr_liba_template_target
-        <trim prefix="SET" suffixOverrides=",">
-           del_flag = 1
-        </trim>
-        where id = #{id}
-    </update>
-
-    <delete id="deleteIvrLibaTemplateTargetByIDs" parameterType="String">
-        delete from ivr_liba_template_target where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
-    </delete>
-</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
index 1a9ba0b..c70050d 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
@@ -21,8 +21,6 @@
         <result property="version" column="version"/>
         <result property="groupid" column="groupid"/>
         <result property="isabnormal" column="isabnormal"/>
-        <result property="warnup" column="warnup"/>
-        <result property="warndown" column="warndown"/>
         <result property="delFlag" column="del_flag"/>
         <result property="updateBy" column="update_by"/>
         <result property="updateTime" column="update_time"/>
@@ -52,7 +50,7 @@
                dynamiccruxs,
                targetid,
                next_question,
-               optiondesc, language, version, groupid, isabnormal, warnup, warndown, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+               optiondesc, language, version, groupid, isabnormal,  del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
         from ivr_liba_template_targetoption
     </sql>
 
@@ -77,8 +75,6 @@
             <if test="version != null  and version != ''">and version = #{version}</if>
             <if test="groupid != null  and groupid != ''">and groupid = #{groupid}</if>
             <if test="isabnormal != null ">and isabnormal = #{isabnormal}</if>
-            <if test="warnup != null ">and warnup = #{warnup}</if>
-            <if test="warndown != null ">and warndown = #{warndown}</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>
@@ -113,8 +109,6 @@
             <if test="version != null and version != ''">version,</if>
             <if test="groupid != null">groupid,</if>
             <if test="isabnormal != null">isabnormal,</if>
-            <if test="warnup != null">warnup,</if>
-            <if test="warndown != null">warndown,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
@@ -144,8 +138,6 @@
             <if test="version != null and version != ''">#{version},</if>
             <if test="groupid != null">#{groupid},</if>
             <if test="isabnormal != null">#{isabnormal},</if>
-            <if test="warnup != null">#{warnup},</if>
-            <if test="warndown != null">#{warndown},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
@@ -179,8 +171,6 @@
             <if test="version != null and version != ''">version = #{version},</if>
             <if test="groupid != null">groupid = #{groupid},</if>
             <if test="isabnormal != null">isabnormal = #{isabnormal},</if>
-            <if test="warnup != null">warnup = #{warnup},</if>
-            <if test="warndown != null">warndown = #{warndown},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
@@ -212,4 +202,4 @@
             #{id}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
index c43c0a3..1dde1df 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
@@ -10,20 +10,15 @@
         <result property="templateid" column="templateid"/>
         <result property="templatename" column="templatename"/>
         <result property="labelinfo" column="labelinfo"/>
-        <result property="state" column="state"/>
         <result property="count" column="count"/>
         <result property="executed" column="executed"/>
         <result property="unexecuted" column="unexecuted"/>
         <result property="fail" column="fail"/>
-        <result property="addtime" column="addtime"/>
         <result property="checkuserid" column="checkuserid"/>
         <result property="checkusername" column="checkusername"/>
         <result property="checktime" column="checktime"/>
         <result property="type" column="type"/>
         <result property="typename" column="typename"/>
-        <result property="usebqsms" column="usebqsms"/>
-        <result property="usebhsms" column="usebhsms"/>
-        <result property="usesendsms" column="usesendsms"/>
         <result property="deptcode" column="deptcode"/>
         <result property="delFlag" column="del_flag"/>
         <result property="updateBy" column="update_by"/>
@@ -38,35 +33,36 @@
         <result property="preachform" column="preachform"/>
         <result property="sendType" column="send_type"/>
         <result property="sendState" column="send_state"/>
-        <result property="param" column="param"/>
         <result property="hospType" column="hosp_type"/>
-        <result property="hospno" column="hospno"/>
         <result property="taskDesc" column="task_desc"/>
+        <result property="libtemplateid" column="libtemplateid"/>
+        <result property="libtemplatename" column="libtemplatename"/>
+        <result property="sendTimeSlot" column="send_time_slot"/>
+        <result property="libtemplatename" column="libtemplatename"/>
+        <result property="libtemplatename" column="libtemplatename"/>
+        <result property="stopState" column="stop_state"/>
     </resultMap>
 
     <sql id="selectIvrTaskVo">
         select taskid,
                task_name,
+               libtemplateid,
+               libtemplatename,
+               stop_state,
                templateid,
                templatename,
                labelinfo,
-               state,
                count,
                executed,
                unexecuted,
                fail,
-               addtime,
                checkuserid,
                checkusername,
                checktime,
                type,
                task_desc,
                hosp_type,
-               hospno,
                typename,
-               usebqsms,
-               usebhsms,
-               usesendsms,
                deptcode,
                del_flag,
                update_by,
@@ -80,7 +76,7 @@
                preachform,
                send_type,
                send_state,
-               param,
+               send_time_slot,
                orgid
         from ivr_task
     </sql>
@@ -89,17 +85,18 @@
         <include refid="selectIvrTaskVo"/>
         <where>
             <if test="taskName != null  and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
+            <if test="sendTimeSlot != null  and sendTimeSlot != ''">and sendTimeSlot like concat('%', #{sendTimeSlot},
+                '%')
+            </if>
             <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
             <if test="templatename != null  and templatename != ''">and templatename like concat('%', #{templatename},
                 '%')
             </if>
             <if test="labelinfo != null  and labelinfo != ''">and labelinfo = #{labelinfo}</if>
-            <if test="state != null ">and state = #{state}</if>
             <if test="count != null ">and count = #{count}</if>
             <if test="executed != null ">and executed = #{executed}</if>
             <if test="unexecuted != null ">and unexecuted = #{unexecuted}</if>
             <if test="fail != null ">and fail = #{fail}</if>
-            <if test="addtime != null ">and addtime = #{addtime}</if>
             <if test="checkuserid != null  and checkuserid != ''">and checkuserid = #{checkuserid}</if>
             <if test="checkusername != null  and checkusername != ''">and checkusername like concat('%',
                 #{checkusername}, '%')
@@ -107,15 +104,14 @@
             <if test="checktime != null ">and checktime = #{checktime}</if>
             <if test="type != null  and type != ''">and type = #{type}</if>
             <if test="typename != null  and typename != ''">and typename like concat('%', #{typename}, '%')</if>
-            <if test="usebqsms != null ">and usebqsms = #{usebqsms}</if>
-            <if test="usebhsms != null ">and usebhsms = #{usebhsms}</if>
-            <if test="usesendsms != null ">and usesendsms = #{usesendsms}</if>
             <if test="deptcode != null  and deptcode != ''">and deptcode = #{deptcode}</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="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if>
-            <if test="hospno != null  and hospno != ''">and orgid = #{hospno}</if>
+            <if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
+            <if test="libtemplatename != null  and libtemplatename != ''">and libtemplatename = #{libtemplatename}</if>
+            <if test="stopState != null  ">and stop_state = #{stopState}</if>
         </where>
         order by update_time desc,taskid desc
     </select>
@@ -133,20 +129,15 @@
             <if test="templateid != null">templateid,</if>
             <if test="templatename != null">templatename,</if>
             <if test="labelinfo != null">labelinfo,</if>
-            <if test="state != null">state,</if>
             <if test="count != null">count,</if>
             <if test="executed != null">executed,</if>
             <if test="unexecuted != null">unexecuted,</if>
             <if test="fail != null">fail,</if>
-            <if test="addtime != null">addtime,</if>
             <if test="checkuserid != null">checkuserid,</if>
             <if test="checkusername != null">checkusername,</if>
             <if test="checktime != null">checktime,</if>
             <if test="type != null">type,</if>
             <if test="typename != null">typename,</if>
-            <if test="usebqsms != null">usebqsms,</if>
-            <if test="usebhsms != null">usebhsms,</if>
-            <if test="usesendsms != null">usesendsms,</if>
             <if test="deptcode != null">deptcode,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
@@ -161,30 +152,28 @@
             <if test="preachform != null">preachform,</if>
             <if test="sendType != null">send_type,</if>
             <if test="sendState != null">send_state,</if>
-            <if test="param != null">param,</if>
             <if test="hospType != null  and hospType != ''">hosp_type,</if>
-            <if test="hospno != null  and hospno != ''">hospno,</if>
+
             <if test="taskDesc != null  and taskDesc != ''">task_desc,</if>
+            <if test="libtemplateid != null ">libtemplateid,</if>
+            <if test="libtemplatename != null  and libtemplatename != ''">libtemplatename,</if>
+            <if test="sendTimeSlot != null  and sendTimeSlot != ''">sendTimeSlot,</if>
+            <if test="stopState != null">stop_state,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskName != null">#{taskName},</if>
             <if test="templateid != null">#{templateid},</if>
             <if test="templatename != null">#{templatename},</if>
             <if test="labelinfo != null">#{labelinfo},</if>
-            <if test="state != null">#{state},</if>
             <if test="count != null">#{count},</if>
             <if test="executed != null">#{executed},</if>
             <if test="unexecuted != null">#{unexecuted},</if>
             <if test="fail != null">#{fail},</if>
-            <if test="addtime != null">#{addtime},</if>
             <if test="checkuserid != null">#{checkuserid},</if>
             <if test="checkusername != null">#{checkusername},</if>
             <if test="checktime != null">#{checktime},</if>
             <if test="type != null">#{type},</if>
             <if test="typename != null">#{typename},</if>
-            <if test="usebqsms != null">#{usebqsms},</if>
-            <if test="usebhsms != null">#{usebhsms},</if>
-            <if test="usesendsms != null">#{usesendsms},</if>
             <if test="deptcode != null">#{deptcode},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -199,10 +188,12 @@
             <if test="preachform != null">#{preachform},</if>
             <if test="sendType != null">#{sendType},</if>
             <if test="sendState != null">#{sendState},</if>
-            <if test="param != null">#{param},</if>
             <if test="hospType != null  and hospType != ''">#{hospType},</if>
-            <if test="hospno != null  and hospno != ''">#{hospno},</if>
             <if test="taskDesc != null  and taskDesc != ''">#{taskDesc},</if>
+            <if test="libtemplateid != null ">#{libtemplateid},</if>
+            <if test="libtemplatename != null  and libtemplatename != ''">#{libtemplatename},</if>
+            <if test="sendTimeSlot != null  and sendTimeSlot != ''">#{sendTimeSlot},</if>
+            <if test="stopState != null">#{stopState},</if>
         </trim>
     </insert>
 
@@ -213,20 +204,15 @@
             <if test="templateid != null">templateid = #{templateid},</if>
             <if test="templatename != null">templatename = #{templatename},</if>
             <if test="labelinfo != null">labelinfo = #{labelinfo},</if>
-            <if test="state != null">state = #{state},</if>
             <if test="count != null">count = #{count},</if>
             <if test="executed != null">executed = #{executed},</if>
             <if test="unexecuted != null">unexecuted = #{unexecuted},</if>
             <if test="fail != null">fail = #{fail},</if>
-            <if test="addtime != null">addtime = #{addtime},</if>
             <if test="checkuserid != null">checkuserid = #{checkuserid},</if>
             <if test="checkusername != null">checkusername = #{checkusername},</if>
             <if test="checktime != null">checktime = #{checktime},</if>
             <if test="type != null">type = #{type},</if>
             <if test="typename != null">typename = #{typename},</if>
-            <if test="usebqsms != null">usebqsms = #{usebqsms},</if>
-            <if test="usebhsms != null">usebhsms = #{usebhsms},</if>
-            <if test="usesendsms != null">usesendsms = #{usesendsms},</if>
             <if test="deptcode != null">deptcode = #{deptcode},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
@@ -241,10 +227,12 @@
             <if test="preachform != null">preachform = #{preachform},</if>
             <if test="sendType != null">send_type = #{sendType},</if>
             <if test="sendState != null">send_state = #{sendState},</if>
-            <if test="param != null">param = #{param},</if>
             <if test="hospType != null  and hospType != ''">hosp_type = #{hospType},</if>
-            <if test="hospno != null  and hospno != ''">hospno = #{hospno},</if>
             <if test="taskDesc != null  and taskDesc != ''">task_desc= #{taskDesc},</if>
+            <if test="libtemplateid != null ">libtemplateid = #{libtemplateid},</if>
+            <if test="libtemplatename != null  and libtemplatename != ''">libtemplatename = #{libtemplatename},</if>
+            <if test="sendTimeSlot != null  and sendTimeSlot != ''">send_time_slot=#{sendTimeSlot},</if>
+            <if test="stopState != null ">stop_state=#{stopState},</if>
         </trim>
         where taskid = #{taskid}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
index e4e8855..73272b7 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
@@ -27,14 +27,9 @@
         <result property="senduuid" column="senduuid"/>
         <result property="result" column="result"/>
         <result property="finishtime" column="finishtime"/>
-        <result property="userid" column="userid"/>
-        <result property="username" column="username"/>
         <result property="recordid" column="recordid"/>
-        <result property="recallcount" column="recallcount"/>
         <result property="exrecallcount" column="exrecallcount"/>
         <result property="pulltime" column="pulltime"/>
-        <result property="bqsms" column="bqsms"/>
-        <result property="bhsms" column="bhsms"/>
         <result property="deptcode" column="deptcode"/>
         <result property="labelstatus" column="labelstatus"/>
         <result property="delFlag" column="del_flag"/>
@@ -50,11 +45,7 @@
         <result property="textParam" column="text_param"/>
         <result property="serviceform" column="serviceform"/>
         <result property="bedNo" column="bed_no"/>
-        <result property="icdName" column="icd_name"/>
-        <result property="medicalRecordNo" column="medical_record_no"/>
-        <result property="preachcontent" column="preachcontent"/>
         <result property="sendType" column="send_type"/>
-        <result property="sendTimeSlot" column="send_time_slot"/>
         <result property="taskName" column="task_name"/>
         <result property="taskDesc" column="task_desc"/>
         <result property="operator" column="operator"/>
@@ -66,11 +57,15 @@
         <result property="deptname" column="deptname"/>
         <result property="admindate" column="admindate"/>
         <result property="roomno" column="roomno"/>
+        <result property="libtemplatename" column="libtemplatename"/>
+        <result property="libtemplateid" column="libtemplateid"/>
     </resultMap>
 
     <sql id="selectIvrTaskcallVo">
         select id,
                hosp_type,
+               libtemplateid,
+               libtemplatename,
                hospno,
                phone,
                sex,
@@ -92,14 +87,9 @@
                senduuid,
                result,
                finishtime,
-               userid,
-               username,
                recordid,
-               recallcount,
                exrecallcount,
                pulltime,
-               bqsms,
-               bhsms,
                deptcode,
                labelstatus,
                del_flag,
@@ -115,10 +105,7 @@
                text_param,
                serviceform,
                bed_no,
-               icd_name,
                send_type,
-               medical_record_no,
-               send_time_slot,
                task_name,
                task_desc,
                operator_no,
@@ -128,8 +115,7 @@
                roomno,
                admindate,
                deptname,
-               diagname,
-               preachcontent
+               diagname
         from ivr_task_single
     </sql>
 
@@ -160,14 +146,9 @@
             <if test="senduuid != null  and senduuid != ''">and senduuid = #{senduuid}</if>
             <if test="result != null  and result != ''">and result = #{result}</if>
             <if test="finishtime != null ">and finishtime = #{finishtime}</if>
-            <if test="userid != null  and userid != ''">and userid = #{userid}</if>
-            <if test="username != null  and username != ''">and username like concat('%', #{username}, '%')</if>
             <if test="recordid != null ">and recordid = #{recordid}</if>
-            <if test="recallcount != null ">and recallcount = #{recallcount}</if>
             <if test="exrecallcount != null ">and exrecallcount = #{exrecallcount}</if>
             <if test="pulltime != null ">and pulltime = #{pulltime}</if>
-            <if test="bqsms != null ">and bqsms = #{bqsms}</if>
-            <if test="bhsms != null ">and bhsms = #{bhsms}</if>
             <if test="deptcode != null  and deptcode != ''">and deptcode = #{deptcode}</if>
             <if test="labelstatus != null ">and labelstatus = #{labelstatus}</if>
             <if test="isupload != null ">and isupload = #{isupload}</if>
@@ -178,15 +159,13 @@
             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
             <if test="textParam != null  and textParam != ''">and text_param = #{textParam}</if>
             <if test="bedNo != null">and bed_no = #{bedNo}</if>
-            <if test="icdName != null  and icdName != ''">and icd_name = #{icdName}</if>
-            <if test="medicalRecordNo != null  and medicalRecordNo != ''">and medical_record_no = #{medicalRecordNo}
-            </if>
-            <if test="preachcontent != null  and preachcontent != ''">and preachcontent = #{preachcontent}</if>
             <if test="sendType != null  and sendType != ''">and send_type = #{sendType}</if>
             <if test="operator != null  and operator != ''">and operator = #{operator}</if>
             <if test="operatorNo != null  and operatorNo != ''">and operator_no = #{operatorNo}</if>
             <if test="wechat != null  and wechat != ''">and wechat = #{wechat}</if>
             <if test="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if>
+            <if test="libtemplateid != null ">and libtemplateid = #{libtemplateid},</if>
+            <if test="libtemplatename != null ">and libtemplatename = #{libtemplatename},</if>
         </where>
         order by update_time desc,id desc
     </select>
@@ -221,14 +200,9 @@
             <if test="senduuid != null">senduuid,</if>
             <if test="result != null">result,</if>
             <if test="finishtime != null">finishtime,</if>
-            <if test="userid != null">userid,</if>
-            <if test="username != null">username,</if>
             <if test="recordid != null">recordid,</if>
-            <if test="recallcount != null">recallcount,</if>
             <if test="exrecallcount != null">exrecallcount,</if>
             <if test="pulltime != null">pulltime,</if>
-            <if test="bqsms != null">bqsms,</if>
-            <if test="bhsms != null">bhsms,</if>
             <if test="deptcode != null">deptcode,</if>
             <if test="labelstatus != null">labelstatus,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
@@ -244,9 +218,6 @@
             <if test="textParam != null">text_param,</if>
             <if test="serviceform != null">serviceform,</if>
             <if test="bedNo != null">bed_no,</if>
-            <if test="icdName != null  and icdName != ''">icd_name,</if>
-            <if test="medicalRecordNo != null  and medicalRecordNo != ''">medical_record_no,</if>
-            <if test="preachcontent != null  and preachcontent != ''">preachcontent,</if>
             <if test="sendType != null  and sendType != ''">send_type,</if>
             <if test="taskName != null  and taskName != ''">task_name,</if>
             <if test="taskDesc != null  and taskDesc != ''">task_desc,</if>
@@ -259,6 +230,8 @@
             <if test="admindate != null  and admindate != ''">admindate,</if>
             <if test="deptname != null  and deptname != ''">deptname,</if>
             <if test="diagname != null  and diagname != ''">diagname,</if>
+            <if test="libtemplateid != null ">libtemplateid,</if>
+            <if test="libtemplatename != null ">libtemplatename,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sendname != null">#{sendname},</if>
@@ -282,14 +255,9 @@
             <if test="senduuid != null">#{senduuid},</if>
             <if test="result != null">#{result},</if>
             <if test="finishtime != null">#{finishtime},</if>
-            <if test="userid != null">#{userid},</if>
-            <if test="username != null">#{username},</if>
             <if test="recordid != null">#{recordid},</if>
-            <if test="recallcount != null">#{recallcount},</if>
             <if test="exrecallcount != null">#{exrecallcount},</if>
             <if test="pulltime != null">#{pulltime},</if>
-            <if test="bqsms != null">#{bqsms},</if>
-            <if test="bhsms != null">#{bhsms},</if>
             <if test="deptcode != null">#{deptcode},</if>
             <if test="labelstatus != null">#{labelstatus},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
@@ -305,9 +273,6 @@
             <if test="textParam != null">#{textParam},</if>
             <if test="serviceform != null">#{serviceform},</if>
             <if test="bedNo != null">#{bedNo},</if>
-            <if test="icdName != null  and icdName != ''">#{icdName},</if>
-            <if test="medicalRecordNo != null  and medicalRecordNo != ''">#{medicalRecordNo},</if>
-            <if test="preachcontent != null  and preachcontent != ''">#{preachcontent},</if>
             <if test="sendType != null  and sendType != ''">#{sendType},</if>
             <if test="taskName != null  and taskName != ''">#{taskName},</if>
             <if test="taskDesc != null  and taskDesc != ''">#{taskDesc},</if>
@@ -320,6 +285,9 @@
             <if test="admindate != null  and admindate != ''">#{admindate},</if>
             <if test="deptname != null  and deptname != ''">#{deptname},</if>
             <if test="diagname != null  and diagname != ''">#{diagname},</if>
+            <if test="libtemplateid != null ">#{libtemplateid},</if>
+            <if test="libtemplatename != null ">#{libtemplatename},</if>
+            <if test="stopState != null ">#{stopState},</if>
         </trim>
     </insert>
 
@@ -347,14 +315,9 @@
             <if test="senduuid != null">senduuid = #{senduuid},</if>
             <if test="result != null">result = #{result},</if>
             <if test="finishtime != null">finishtime = #{finishtime},</if>
-            <if test="userid != null">userid = #{userid},</if>
-            <if test="username != null">username = #{username},</if>
             <if test="recordid != null">recordid = #{recordid},</if>
-            <if test="recallcount != null">recallcount = #{recallcount},</if>
             <if test="exrecallcount != null">exrecallcount = #{exrecallcount},</if>
             <if test="pulltime != null">pulltime = #{pulltime},</if>
-            <if test="bqsms != null">bqsms = #{bqsms},</if>
-            <if test="bhsms != null">bhsms = #{bhsms},</if>
             <if test="deptcode != null">deptcode = #{deptcode},</if>
             <if test="labelstatus != null">labelstatus = #{labelstatus},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
@@ -370,9 +333,6 @@
             <if test="textParam != null">text_param = #{textParam},</if>
             <if test="serviceform != null">serviceform = #{serviceform},</if>
             <if test="bedNo != null">bed_no = #{bedNo},</if>
-            <if test="icdName != null  and icdName != ''">icd_name = #{icdName},</if>
-            <if test="medicalRecordNo != null  and medicalRecordNo != ''">medical_record_no = #{medicalRecordNo},</if>
-            <if test="preachcontent != null  and preachcontent != ''">preachcontent = #{preachcontent},</if>
             <if test="sendType != null  and sendType != ''">send_type = #{sendType},</if>
             <if test="taskName != null  and taskName != ''">task_name = #{taskName},</if>
             <if test="taskDesc != null  and taskDesc != ''">task_desc = #{taskDesc},</if>
@@ -385,6 +345,8 @@
             <if test="admindate != null  and admindate != ''">admindate = #{admindate},</if>
             <if test="deptname != null  and deptname != ''">deptname = #{deptname},</if>
             <if test="diagname != null  and diagname != ''">diagname = #{diagname},</if>
+            <if test="libtemplateid != null ">libtemplateid = #{libtemplateid},</if>
+            <if test="libtemplatename != null ">libtemplatename = #{libtemplatename},</if>
         </trim>
         where id = #{id}
     </update>
@@ -421,14 +383,9 @@
                senduuid,
                result,
                finishtime,
-               userid,
-               username,
                recordid,
-               recallcount,
                exrecallcount,
                pulltime,
-               bqsms,
-               bhsms,
                deptcode,
                labelstatus,
                del_flag,
@@ -444,10 +401,7 @@
                text_param,
                serviceform,
                bed_no,
-               icd_name,
                send_type,
-               medical_record_no,
-               preachcontent,
                task_name,
                task_desc,
                operator_no,
@@ -458,8 +412,7 @@
                roomno,
                admindate,
                deptname,
-               diagname,
-               send_time_slot
+               diagname
         FROM ivr_task_single,
              JSON_TABLE(send_time_slot, '$[*]' COLUMNS (
         begantime DATETIME PATH '$.begantime',
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml
new file mode 100644
index 0000000..40d3f32
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateMapper.xml
@@ -0,0 +1,334 @@
+<?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.IvrTaskTemplateMapper">
+
+    <resultMap type="com.smartor.domain.IvrTaskTemplate" id="IvrTaskTemplateResult">
+        <result property="ID" column="ID"/>
+        <result property="taskid" column="taskid"/>
+        <result property="taskname" column="taskname"/>
+        <result property="targetid" column="targetid"/>
+        <result property="targetname" column="targetname"/>
+        <result property="templateName" column="templateName"/>
+        <result property="silencetime" column="silencetime"/>
+        <result property="slienceRepeatTimes" column="slienceRepeatTimes"/>
+        <result property="nomatchRepeatTimes" column="nomatchRepeatTimes"/>
+        <result property="firstQuestionNum" column="firstQuestionNum"/>
+        <result property="submodule" column="submodule"/>
+        <result property="language" column="language"/>
+        <result property="note" column="note"/>
+        <result property="reply" column="reply"/>
+        <result property="valueType" column="value_type"/>
+        <result property="addUserID" column="addUserID"/>
+        <result property="addTime" column="addTime"/>
+        <result property="modifyUserID" column="modifyUserID"/>
+        <result property="modifyTime" column="modifyTime"/>
+        <result property="groupID" column="groupID"/>
+        <result property="labelInfo" column="label_info"/>
+        <result property="submoduleID" column="submoduleID"/>
+        <result property="playType" column="playType"/>
+        <result property="icd10code" column="icd10code"/>
+        <result property="icd10codename" column="icd10codename"/>
+        <result property="atuoTaskDayOffset" column="atuoTaskDayOffset"/>
+        <result property="deptIds" column="deptIds"/>
+        <result property="deptNames" column="dept_names"/>
+        <result property="fKsdm" column="F_KSDM"/>
+        <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"/>
+        <result property="assortid" column="assortid"/>
+        <result property="parameter" column="parameter"/>
+        <result property="usestate" column="usestate"/>
+        <result property="version" column="version"/>
+        <result property="campus" column="campus"/>
+        <result property="tag" column="tag"/>
+        <result property="suitway" column="suitway"/>
+        <result property="otherdata" column="otherdata"/>
+        <result property="mateNum" column="mate_num"/>
+        <result property="revisitBefore" column="revisit_before"/>
+        <result property="revisitAfter" column="revisit_after"/>
+        <result property="noVoiceNum" column="no_voice_num"/>
+        <result property="libtemplateid" column="libtemplateid"/>
+        <result property="libtemplatename" column="libtemplatename"/>
+        <result property="recallcount" column="recallcount"/>
+    </resultMap>
+
+    <sql id="selectIvrTaskTemplateVo">
+        select ID,
+               taskid,
+               recallcount,
+               libtemplateid,
+               libtemplatename,
+               taskname,
+               targetid,
+               targetname,
+               templateName,
+               silencetime,
+               slienceRepeatTimes,
+               nomatchRepeatTimes,
+               firstQuestionNum,
+               submodule, language, note, reply, value_type, addUserID, addTime, modifyUserID, modifyTime, groupID, label_info, submoduleID, playType, icd10code, icd10codename, atuoTaskDayOffset, deptIds, dept_names, F_KSDM, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, assortid, parameter, usestate, version, campus, tag, suitway, otherdata, mate_num, revisit_before, revisit_after, no_voice_num
+        from ivr_task_template
+    </sql>
+
+    <select id="selectIvrTaskTemplateList" parameterType="com.smartor.domain.IvrTaskTemplate"
+            resultMap="IvrTaskTemplateResult">
+        <include refid="selectIvrTaskTemplateVo"/>
+        <where>
+            <if test="taskid != null ">and taskid = #{taskid}</if>
+            <if test="taskname != null  and taskname != ''">and taskname like concat('%', #{taskname}, '%')</if>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="targetname != null  and targetname != ''">and targetname like concat('%', #{targetname}, '%')</if>
+            <if test="templateName != null  and templateName != ''">and templateName like concat('%', #{templateName},
+                '%')
+            </if>
+            <if test="silencetime != null ">and silencetime = #{silencetime}</if>
+            <if test="recallcount != null ">and recallcount = #{recallcount}</if>
+            <if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
+            <if test="libtemplatename != null ">and libtemplatename = #{libtemplatename}</if>
+            <if test="slienceRepeatTimes != null ">and slienceRepeatTimes = #{slienceRepeatTimes}</if>
+            <if test="nomatchRepeatTimes != null ">and nomatchRepeatTimes = #{nomatchRepeatTimes}</if>
+            <if test="firstQuestionNum != null ">and firstQuestionNum = #{firstQuestionNum}</if>
+            <if test="submodule != null  and submodule != ''">and submodule = #{submodule}</if>
+            <if test="language != null  and language != ''">and language = #{language}</if>
+            <if test="note != null  and note != ''">and note = #{note}</if>
+            <if test="reply != null  and reply != ''">and reply = #{reply}</if>
+            <if test="valueType != null ">and value_type = #{valueType}</if>
+            <if test="addUserID != null  and addUserID != ''">and addUserID = #{addUserID}</if>
+            <if test="addTime != null ">and addTime = #{addTime}</if>
+            <if test="modifyUserID != null  and modifyUserID != ''">and modifyUserID = #{modifyUserID}</if>
+            <if test="modifyTime != null ">and modifyTime = #{modifyTime}</if>
+            <if test="groupID != null  and groupID != ''">and groupID = #{groupID}</if>
+            <if test="labelInfo != null  and labelInfo != ''">and label_info = #{labelInfo}</if>
+            <if test="submoduleID != null  and submoduleID != ''">and submoduleID = #{submoduleID}</if>
+            <if test="playType != null ">and playType = #{playType}</if>
+            <if test="icd10code != null  and icd10code != ''">and icd10code = #{icd10code}</if>
+            <if test="icd10codename != null  and icd10codename != ''">and icd10codename like concat('%',
+                #{icd10codename}, '%')
+            </if>
+            <if test="atuoTaskDayOffset != null ">and atuoTaskDayOffset = #{atuoTaskDayOffset}</if>
+            <if test="deptIds != null  and deptIds != ''">and deptIds = #{deptIds}</if>
+            <if test="deptNames != null  and deptNames != ''">and dept_names = #{deptNames}</if>
+            <if test="fKsdm != null  and fKsdm != ''">and F_KSDM = #{fKsdm}</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>
+            <if test="assortid != null ">and assortid = #{assortid}</if>
+            <if test="parameter != null  and parameter != ''">and parameter = #{parameter}</if>
+            <if test="usestate != null  and usestate != ''">and usestate = #{usestate}</if>
+            <if test="version != null  and version != ''">and version = #{version}</if>
+            <if test="campus != null  and campus != ''">and campus = #{campus}</if>
+            <if test="tag != null  and tag != ''">and tag = #{tag}</if>
+            <if test="suitway != null  and suitway != ''">and suitway = #{suitway}</if>
+            <if test="otherdata != null  and otherdata != ''">and otherdata = #{otherdata}</if>
+            <if test="mateNum != null ">and mate_num = #{mateNum}</if>
+            <if test="revisitBefore != null  and revisitBefore != ''">and revisit_before = #{revisitBefore}</if>
+            <if test="revisitAfter != null  and revisitAfter != ''">and revisit_after = #{revisitAfter}</if>
+            <if test="noVoiceNum != null ">and no_voice_num = #{noVoiceNum}</if>
+            <if test="recallcount != null">and recallcount = #{prologrecallcountue}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrTaskTemplateByID" parameterType="Long" resultMap="IvrTaskTemplateResult">
+        <include refid="selectIvrTaskTemplateVo"/>
+        where ID = #{ID}
+    </select>
+
+    <insert id="insertIvrTaskTemplate" parameterType="com.smartor.domain.IvrTaskTemplate" useGeneratedKeys="true"
+            keyProperty="ID">
+        insert into ivr_task_template
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">taskid,</if>
+            <if test="taskname != null">taskname,</if>
+            <if test="targetid != null">targetid,</if>
+            <if test="targetname != null">targetname,</if>
+            <if test="templateName != null and templateName != ''">templateName,</if>
+            <if test="silencetime != null">silencetime,</if>
+            <if test="slienceRepeatTimes != null">slienceRepeatTimes,</if>
+            <if test="nomatchRepeatTimes != null">nomatchRepeatTimes,</if>
+            <if test="firstQuestionNum != null">firstQuestionNum,</if>
+            <if test="submodule != null">submodule,</if>
+            <if test="language != null and language != ''">language,</if>
+            <if test="note != null">note,</if>
+            <if test="reply != null">reply,</if>
+            <if test="valueType != null">value_type,</if>
+            <if test="addUserID != null">addUserID,</if>
+            <if test="addTime != null">addTime,</if>
+            <if test="modifyUserID != null">modifyUserID,</if>
+            <if test="modifyTime != null">modifyTime,</if>
+            <if test="groupID != null">groupID,</if>
+            <if test="labelInfo != null">label_info,</if>
+            <if test="submoduleID != null">submoduleID,</if>
+            <if test="playType != null">playType,</if>
+            <if test="icd10code != null">icd10code,</if>
+            <if test="icd10codename != null">icd10codename,</if>
+            <if test="atuoTaskDayOffset != null">atuoTaskDayOffset,</if>
+            <if test="deptIds != null">deptIds,</if>
+            <if test="deptNames != null">dept_names,</if>
+            <if test="fKsdm != null">F_KSDM,</if>
+            <if test="delFlag != null and delFlag != ''">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>
+            <if test="assortid != null">assortid,</if>
+            <if test="parameter != null">parameter,</if>
+            <if test="usestate != null">usestate,</if>
+            <if test="version != null">version,</if>
+            <if test="campus != null">campus,</if>
+            <if test="tag != null">tag,</if>
+            <if test="suitway != null">suitway,</if>
+            <if test="otherdata != null">otherdata,</if>
+            <if test="mateNum != null">mate_num,</if>
+            <if test="revisitBefore != null">revisit_before,</if>
+            <if test="revisitAfter != null">revisit_after,</if>
+            <if test="noVoiceNum != null">no_voice_num,</if>
+            <if test="recallcount != null">recallcount,</if>
+            <if test="libtemplateid != null ">libtemplateid,</if>
+            <if test="libtemplatename != null ">libtemplatename,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">#{taskid},</if>
+            <if test="taskname != null">#{taskname},</if>
+            <if test="targetid != null">#{targetid},</if>
+            <if test="targetname != null">#{targetname},</if>
+            <if test="templateName != null and templateName != ''">#{templateName},</if>
+            <if test="silencetime != null">#{silencetime},</if>
+            <if test="slienceRepeatTimes != null">#{slienceRepeatTimes},</if>
+            <if test="nomatchRepeatTimes != null">#{nomatchRepeatTimes},</if>
+            <if test="firstQuestionNum != null">#{firstQuestionNum},</if>
+            <if test="submodule != null">#{submodule},</if>
+            <if test="language != null and language != ''">#{language},</if>
+            <if test="note != null">#{note},</if>
+            <if test="reply != null">#{reply},</if>
+            <if test="valueType != null">#{valueType},</if>
+            <if test="addUserID != null">#{addUserID},</if>
+            <if test="addTime != null">#{addTime},</if>
+            <if test="modifyUserID != null">#{modifyUserID},</if>
+            <if test="modifyTime != null">#{modifyTime},</if>
+            <if test="groupID != null">#{groupID},</if>
+            <if test="labelInfo != null">#{labelInfo},</if>
+            <if test="submoduleID != null">#{submoduleID},</if>
+            <if test="playType != null">#{playType},</if>
+            <if test="icd10code != null">#{icd10code},</if>
+            <if test="icd10codename != null">#{icd10codename},</if>
+            <if test="atuoTaskDayOffset != null">#{atuoTaskDayOffset},</if>
+            <if test="deptIds != null">#{deptIds},</if>
+            <if test="deptNames != null">#{deptNames},</if>
+            <if test="fKsdm != null">#{fKsdm},</if>
+            <if test="delFlag != null and delFlag != ''">#{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>
+            <if test="assortid != null">#{assortid},</if>
+            <if test="parameter != null">#{parameter},</if>
+            <if test="usestate != null">#{usestate},</if>
+            <if test="version != null">#{version},</if>
+            <if test="campus != null">#{campus},</if>
+            <if test="tag != null">#{tag},</if>
+            <if test="suitway != null">#{suitway},</if>
+            <if test="otherdata != null">#{otherdata},</if>
+            <if test="mateNum != null">#{mateNum},</if>
+            <if test="revisitBefore != null">#{revisitBefore},</if>
+            <if test="revisitAfter != null">#{revisitAfter},</if>
+            <if test="noVoiceNum != null">#{noVoiceNum},</if>
+            <if test="recallcount != null">#{recallcount},</if>
+            <if test="libtemplateid != null ">#{libtemplateid},</if>
+            <if test="libtemplatename != null ">#{libtemplatename},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrTaskTemplate" parameterType="com.smartor.domain.IvrTaskTemplate">
+        update ivr_task_template
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="taskname != null">taskname = #{taskname},</if>
+            <if test="targetid != null">targetid = #{targetid},</if>
+            <if test="targetname != null">targetname = #{targetname},</if>
+            <if test="templateName != null and templateName != ''">templateName = #{templateName},</if>
+            <if test="silencetime != null">silencetime = #{silencetime},</if>
+            <if test="slienceRepeatTimes != null">slienceRepeatTimes = #{slienceRepeatTimes},</if>
+            <if test="nomatchRepeatTimes != null">nomatchRepeatTimes = #{nomatchRepeatTimes},</if>
+            <if test="firstQuestionNum != null">firstQuestionNum = #{firstQuestionNum},</if>
+            <if test="submodule != null">submodule = #{submodule},</if>
+            <if test="language != null and language != ''">language = #{language},</if>
+            <if test="note != null">note = #{note},</if>
+            <if test="reply != null">reply = #{reply},</if>
+            <if test="valueType != null">value_type = #{valueType},</if>
+            <if test="addUserID != null">addUserID = #{addUserID},</if>
+            <if test="addTime != null">addTime = #{addTime},</if>
+            <if test="modifyUserID != null">modifyUserID = #{modifyUserID},</if>
+            <if test="modifyTime != null">modifyTime = #{modifyTime},</if>
+            <if test="groupID != null">groupID = #{groupID},</if>
+            <if test="labelInfo != null">label_info = #{labelInfo},</if>
+            <if test="submoduleID != null">submoduleID = #{submoduleID},</if>
+            <if test="playType != null">playType = #{playType},</if>
+            <if test="icd10code != null">icd10code = #{icd10code},</if>
+            <if test="icd10codename != null">icd10codename = #{icd10codename},</if>
+            <if test="atuoTaskDayOffset != null">atuoTaskDayOffset = #{atuoTaskDayOffset},</if>
+            <if test="deptIds != null">deptIds = #{deptIds},</if>
+            <if test="deptNames != null">dept_names = #{deptNames},</if>
+            <if test="fKsdm != null">F_KSDM = #{fKsdm},</if>
+            <if test="delFlag != null and delFlag != ''">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>
+            <if test="assortid != null">assortid = #{assortid},</if>
+            <if test="parameter != null">parameter = #{parameter},</if>
+            <if test="usestate != null">usestate = #{usestate},</if>
+            <if test="version != null">version = #{version},</if>
+            <if test="campus != null">campus = #{campus},</if>
+            <if test="tag != null">tag = #{tag},</if>
+            <if test="suitway != null">suitway = #{suitway},</if>
+            <if test="otherdata != null">otherdata = #{otherdata},</if>
+            <if test="mateNum != null">mate_num = #{mateNum},</if>
+            <if test="revisitBefore != null">revisit_before = #{revisitBefore},</if>
+            <if test="revisitAfter != null">revisit_after = #{revisitAfter},</if>
+            <if test="noVoiceNum != null">no_voice_num = #{noVoiceNum},</if>
+            <if test="recallcount != null">recallcount = #{recallcount},</if>
+            <if test="libtemplateid != null ">libtemplateid = #{libtemplateid},</if>
+            <if test="libtemplatename != null ">libtemplatename = #{libtemplatename},</if>
+        </trim>
+        where ID = #{ID}
+    </update>
+
+    <delete id="deleteIvrTaskTemplateByID" parameterType="Long">
+        delete
+        from ivr_task_template
+        where ID = #{ID}
+    </delete>
+
+    <delete id="deleteIvrTaskTemplateByIDs" parameterType="String">
+        delete from ivr_task_template where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
+        </foreach>
+    </delete>
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
new file mode 100644
index 0000000..d29bd98
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
@@ -0,0 +1,236 @@
+<?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.IvrTaskTemplateScriptMapper">
+
+    <resultMap type="com.smartor.domain.IvrTaskTemplateScript" id="IvrTaskTemplateScriptResult">
+        <result property="ID"    column="ID"    />
+        <result property="taskid"    column="taskid"    />
+        <result property="templateQuestionNum"    column="templateQuestionNum"    />
+        <result property="templateID"    column="templateID"    />
+        <result property="scriptID"    column="scriptID"    />
+        <result property="questionPoint"    column="questionPoint"    />
+        <result property="questionText"    column="questionText"    />
+        <result property="questionVoice"    column="questionVoice"    />
+        <result property="noMatchText"    column="noMatchText"    />
+        <result property="noMatchVoice"    column="noMatchVoice"    />
+        <result property="slienceText"    column="slienceText"    />
+        <result property="slienceVoice"    column="slienceVoice"    />
+        <result property="submoduleText"    column="submoduleText"    />
+        <result property="submoduleVoice"    column="submoduleVoice"    />
+        <result property="noClearlyText"    column="noClearlyText"    />
+        <result property="noClearlyVoice"    column="noClearlyVoice"    />
+        <result property="categoryName"    column="categoryName"    />
+        <result property="targetOptions"    column="targetOptions"    />
+        <result property="language"    column="language"    />
+        <result property="playWavOnly"    column="playWavOnly"    />
+        <result property="valueType"    column="value_type"    />
+        <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"    />
+        <result property="targettype"    column="targettype"    />
+        <result property="targetid"    column="targetid"    />
+        <result property="targetvalue"    column="targetvalue"    />
+        <result property="questiontitle"    column="questiontitle"    />
+        <result property="nextQuestion"    column="next_question"    />
+        <result property="otherdata"    column="otherdata"    />
+        <result property="isMust"    column="is_must"    />
+        <result property="questionResult"    column="question_result"    />
+    </resultMap>
+
+    <sql id="selectIvrTaskTemplateScriptVo">
+        select ID, taskid, templateQuestionNum, templateID, scriptID, questionPoint, questionText, questionVoice, noMatchText, noMatchVoice, slienceText, slienceVoice, submoduleText, submoduleVoice, noClearlyText, noClearlyVoice, categoryName, targetOptions, language, playWavOnly, value_type, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, targettype, targetid, targetvalue, questiontitle, next_question, otherdata, is_must, question_result from ivr_task_template_script
+    </sql>
+
+    <select id="selectIvrTaskTemplateScriptList" parameterType="com.smartor.domain.IvrTaskTemplateScript" resultMap="IvrTaskTemplateScriptResult">
+        <include refid="selectIvrTaskTemplateScriptVo"/>
+        <where>
+            <if test="taskid != null "> and taskid = #{taskid}</if>
+            <if test="templateQuestionNum != null "> and templateQuestionNum = #{templateQuestionNum}</if>
+            <if test="templateID != null "> and templateID = #{templateID}</if>
+            <if test="scriptID != null "> and scriptID = #{scriptID}</if>
+            <if test="questionPoint != null  and questionPoint != ''"> and questionPoint = #{questionPoint}</if>
+            <if test="questionText != null  and questionText != ''"> and questionText = #{questionText}</if>
+            <if test="questionVoice != null  and questionVoice != ''"> and questionVoice = #{questionVoice}</if>
+            <if test="noMatchText != null  and noMatchText != ''"> and noMatchText = #{noMatchText}</if>
+            <if test="noMatchVoice != null  and noMatchVoice != ''"> and noMatchVoice = #{noMatchVoice}</if>
+            <if test="slienceText != null  and slienceText != ''"> and slienceText = #{slienceText}</if>
+            <if test="slienceVoice != null  and slienceVoice != ''"> and slienceVoice = #{slienceVoice}</if>
+            <if test="submoduleText != null  and submoduleText != ''"> and submoduleText = #{submoduleText}</if>
+            <if test="submoduleVoice != null  and submoduleVoice != ''"> and submoduleVoice = #{submoduleVoice}</if>
+            <if test="noClearlyText != null  and noClearlyText != ''"> and noClearlyText = #{noClearlyText}</if>
+            <if test="noClearlyVoice != null  and noClearlyVoice != ''"> and noClearlyVoice = #{noClearlyVoice}</if>
+            <if test="categoryName != null  and categoryName != ''"> and categoryName like concat('%', #{categoryName}, '%')</if>
+            <if test="targetOptions != null  and targetOptions != ''"> and targetOptions = #{targetOptions}</if>
+            <if test="language != null  and language != ''"> and language = #{language}</if>
+            <if test="playWavOnly != null "> and playWavOnly = #{playWavOnly}</if>
+            <if test="valueType != null "> and value_type = #{valueType}</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>
+            <if test="targettype != null  and targettype != ''"> and targettype = #{targettype}</if>
+            <if test="targetid != null "> and targetid = #{targetid}</if>
+            <if test="targetvalue != null  and targetvalue != ''"> and targetvalue = #{targetvalue}</if>
+            <if test="questiontitle != null  and questiontitle != ''"> and questiontitle = #{questiontitle}</if>
+            <if test="nextQuestion != null "> and next_question = #{nextQuestion}</if>
+            <if test="otherdata != null  and otherdata != ''"> and otherdata = #{otherdata}</if>
+            <if test="isMust != null  and isMust != ''"> and is_must = #{isMust}</if>
+            <if test="questionResult != null  and questionResult != ''"> and question_result = #{questionResult}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrTaskTemplateScriptByID" parameterType="Long" resultMap="IvrTaskTemplateScriptResult">
+        <include refid="selectIvrTaskTemplateScriptVo"/>
+        where ID = #{ID}
+    </select>
+
+    <insert id="insertIvrTaskTemplateScript" parameterType="com.smartor.domain.IvrTaskTemplateScript" useGeneratedKeys="true" keyProperty="ID">
+        insert into ivr_task_template_script
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">taskid,</if>
+            <if test="templateQuestionNum != null">templateQuestionNum,</if>
+            <if test="templateID != null">templateID,</if>
+            <if test="scriptID != null">scriptID,</if>
+            <if test="questionPoint != null">questionPoint,</if>
+            <if test="questionText != null">questionText,</if>
+            <if test="questionVoice != null">questionVoice,</if>
+            <if test="noMatchText != null">noMatchText,</if>
+            <if test="noMatchVoice != null">noMatchVoice,</if>
+            <if test="slienceText != null">slienceText,</if>
+            <if test="slienceVoice != null">slienceVoice,</if>
+            <if test="submoduleText != null">submoduleText,</if>
+            <if test="submoduleVoice != null">submoduleVoice,</if>
+            <if test="noClearlyText != null">noClearlyText,</if>
+            <if test="noClearlyVoice != null">noClearlyVoice,</if>
+            <if test="categoryName != null">categoryName,</if>
+            <if test="targetOptions != null">targetOptions,</if>
+            <if test="language != null">language,</if>
+            <if test="playWavOnly != null">playWavOnly,</if>
+            <if test="valueType != null">value_type,</if>
+            <if test="delFlag != null and delFlag != ''">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>
+            <if test="targettype != null">targettype,</if>
+            <if test="targetid != null">targetid,</if>
+            <if test="targetvalue != null">targetvalue,</if>
+            <if test="questiontitle != null">questiontitle,</if>
+            <if test="nextQuestion != null">next_question,</if>
+            <if test="otherdata != null">otherdata,</if>
+            <if test="isMust != null">is_must,</if>
+            <if test="questionResult != null">question_result,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">#{taskid},</if>
+            <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
+            <if test="templateID != null">#{templateID},</if>
+            <if test="scriptID != null">#{scriptID},</if>
+            <if test="questionPoint != null">#{questionPoint},</if>
+            <if test="questionText != null">#{questionText},</if>
+            <if test="questionVoice != null">#{questionVoice},</if>
+            <if test="noMatchText != null">#{noMatchText},</if>
+            <if test="noMatchVoice != null">#{noMatchVoice},</if>
+            <if test="slienceText != null">#{slienceText},</if>
+            <if test="slienceVoice != null">#{slienceVoice},</if>
+            <if test="submoduleText != null">#{submoduleText},</if>
+            <if test="submoduleVoice != null">#{submoduleVoice},</if>
+            <if test="noClearlyText != null">#{noClearlyText},</if>
+            <if test="noClearlyVoice != null">#{noClearlyVoice},</if>
+            <if test="categoryName != null">#{categoryName},</if>
+            <if test="targetOptions != null">#{targetOptions},</if>
+            <if test="language != null">#{language},</if>
+            <if test="playWavOnly != null">#{playWavOnly},</if>
+            <if test="valueType != null">#{valueType},</if>
+            <if test="delFlag != null and delFlag != ''">#{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>
+            <if test="targettype != null">#{targettype},</if>
+            <if test="targetid != null">#{targetid},</if>
+            <if test="targetvalue != null">#{targetvalue},</if>
+            <if test="questiontitle != null">#{questiontitle},</if>
+            <if test="nextQuestion != null">#{nextQuestion},</if>
+            <if test="otherdata != null">#{otherdata},</if>
+            <if test="isMust != null">#{isMust},</if>
+            <if test="questionResult != null">#{questionResult},</if>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTaskTemplateScript" parameterType="com.smartor.domain.IvrTaskTemplateScript">
+        update ivr_task_template_script
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="templateQuestionNum != null">templateQuestionNum = #{templateQuestionNum},</if>
+            <if test="templateID != null">templateID = #{templateID},</if>
+            <if test="scriptID != null">scriptID = #{scriptID},</if>
+            <if test="questionPoint != null">questionPoint = #{questionPoint},</if>
+            <if test="questionText != null">questionText = #{questionText},</if>
+            <if test="questionVoice != null">questionVoice = #{questionVoice},</if>
+            <if test="noMatchText != null">noMatchText = #{noMatchText},</if>
+            <if test="noMatchVoice != null">noMatchVoice = #{noMatchVoice},</if>
+            <if test="slienceText != null">slienceText = #{slienceText},</if>
+            <if test="slienceVoice != null">slienceVoice = #{slienceVoice},</if>
+            <if test="submoduleText != null">submoduleText = #{submoduleText},</if>
+            <if test="submoduleVoice != null">submoduleVoice = #{submoduleVoice},</if>
+            <if test="noClearlyText != null">noClearlyText = #{noClearlyText},</if>
+            <if test="noClearlyVoice != null">noClearlyVoice = #{noClearlyVoice},</if>
+            <if test="categoryName != null">categoryName = #{categoryName},</if>
+            <if test="targetOptions != null">targetOptions = #{targetOptions},</if>
+            <if test="language != null">language = #{language},</if>
+            <if test="playWavOnly != null">playWavOnly = #{playWavOnly},</if>
+            <if test="valueType != null">value_type = #{valueType},</if>
+            <if test="delFlag != null and delFlag != ''">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>
+            <if test="targettype != null">targettype = #{targettype},</if>
+            <if test="targetid != null">targetid = #{targetid},</if>
+            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
+            <if test="questiontitle != null">questiontitle = #{questiontitle},</if>
+            <if test="nextQuestion != null">next_question = #{nextQuestion},</if>
+            <if test="otherdata != null">otherdata = #{otherdata},</if>
+            <if test="isMust != null">is_must = #{isMust},</if>
+            <if test="questionResult != null">question_result = #{questionResult},</if>
+        </trim>
+        where ID = #{ID}
+    </update>
+
+    <delete id="deleteIvrTaskTemplateScriptByID" parameterType="Long">
+        delete from ivr_task_template_script where ID = #{ID}
+    </delete>
+
+    <delete id="deleteIvrTaskTemplateScriptByIDs" parameterType="String">
+        delete from ivr_task_template_script where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
+        </foreach>
+    </delete>
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml
new file mode 100644
index 0000000..43939eb
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml
@@ -0,0 +1,216 @@
+<?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.IvrTaskTemplateTargetoptionMapper">
+
+    <resultMap type="com.smartor.domain.IvrTaskTemplateTargetoption" id="IvrTaskTemplateTargetoptionResult">
+        <result property="id" column="id"/>
+        <result property="taskid" column="taskid"/>
+        <result property="templateID" column="templateID"/>
+        <result property="targetid" column="targetid"/>
+        <result property="targetname" column="targetname"/>
+        <result property="targettype" column="targettype"/>
+        <result property="categoryName" column="categoryName"/>
+        <result property="targetvalue" column="targetvalue"/>
+        <result property="targetregex2" column="targetregex2"/>
+        <result property="targetregex" column="targetregex"/>
+        <result property="optiondesc" column="optiondesc"/>
+        <result property="language" column="language"/>
+        <result property="version" column="version"/>
+        <result property="groupid" column="groupid"/>
+        <result property="isabnormal" column="isabnormal"/>
+        <result property="warnup" column="warnup"/>
+        <result property="warndown" column="warndown"/>
+        <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"/>
+        <result property="scriptid" column="scriptid"/>
+        <result property="nodynamiccruxsJson" column="nodynamiccruxs"/>
+        <result property="dynamiccruxsJson" column="dynamiccruxs"/>
+        <result property="nextQuestion" column="next_question"/>
+    </resultMap>
+
+    <sql id="selectIvrTaskTemplateTargetoptionVo">
+        select id,
+               taskid,
+               templateID,
+               targetid,
+               targetname,
+               targettype,
+               categoryName,
+               targetvalue,
+               targetregex2,
+               targetregex,
+               optiondesc, language, version, groupid, isabnormal, warnup, warndown, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, scriptid, nodynamiccruxs, dynamiccruxs, next_question
+        from ivr_task_template_targetoption
+    </sql>
+
+    <select id="selectIvrTaskTemplateTargetoptionList" parameterType="com.smartor.domain.IvrTaskTemplateTargetoption"
+            resultMap="IvrTaskTemplateTargetoptionResult">
+        <include refid="selectIvrTaskTemplateTargetoptionVo"/>
+        <where>
+            <if test="taskid != null ">and taskid = #{taskid}</if>
+            <if test="templateID != null ">and templateID = #{templateID}</if>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="targetname != null  and targetname != ''">and targetname like concat('%', #{targetname}, '%')</if>
+            <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
+            <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
+                '%')
+            </if>
+            <if test="targetvalue != null  and targetvalue != ''">and targetvalue = #{targetvalue}</if>
+            <if test="targetregex2 != null  and targetregex2 != ''">and targetregex2 = #{targetregex2}</if>
+            <if test="targetregex != null  and targetregex != ''">and targetregex = #{targetregex}</if>
+            <if test="optiondesc != null  and optiondesc != ''">and optiondesc = #{optiondesc}</if>
+            <if test="language != null  and language != ''">and language = #{language}</if>
+            <if test="version != null  and version != ''">and version = #{version}</if>
+            <if test="groupid != null  and groupid != ''">and groupid = #{groupid}</if>
+            <if test="isabnormal != null ">and isabnormal = #{isabnormal}</if>
+            <if test="warnup != null ">and warnup = #{warnup}</if>
+            <if test="warndown != null ">and warndown = #{warndown}</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>
+            <if test="scriptid != null ">and scriptid = #{scriptid}</if>
+            <if test="nodynamiccruxsJson != null  and nodynamiccruxsJson != ''">and nodynamiccruxs =
+                #{nodynamiccruxsJson}
+            </if>
+            <if test="dynamiccruxsJson != null  and dynamiccruxsJson != ''">and dynamiccruxs = #{dynamiccruxsJson}</if>
+            <if test="nextQuestion != null ">and next_question = #{nextQuestion}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrTaskTemplateTargetoptionById" parameterType="Long"
+            resultMap="IvrTaskTemplateTargetoptionResult">
+        <include refid="selectIvrTaskTemplateTargetoptionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertIvrTaskTemplateTargetoption" parameterType="com.smartor.domain.IvrTaskTemplateTargetoption"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into ivr_task_template_targetoption
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">taskid,</if>
+            <if test="templateID != null">templateID,</if>
+            <if test="targetid != null">targetid,</if>
+            <if test="targetname != null">targetname,</if>
+            <if test="targettype != null">targettype,</if>
+            <if test="categoryName != null">categoryName,</if>
+            <if test="targetvalue != null">targetvalue,</if>
+            <if test="targetregex2 != null">targetregex2,</if>
+            <if test="targetregex != null">targetregex,</if>
+            <if test="optiondesc != null">optiondesc,</if>
+            <if test="language != null">language,</if>
+            <if test="version != null">version,</if>
+            <if test="groupid != null">groupid,</if>
+            <if test="isabnormal != null">isabnormal,</if>
+            <if test="warnup != null">warnup,</if>
+            <if test="warndown != null">warndown,</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>
+            <if test="scriptid != null">scriptid,</if>
+            <if test="nodynamiccruxsJson != null">nodynamiccruxs,</if>
+            <if test="dynamiccruxsJson != null">dynamiccruxs,</if>
+            <if test="nextQuestion != null">next_question,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">#{taskid},</if>
+            <if test="templateID != null">#{templateID},</if>
+            <if test="targetid != null">#{targetid},</if>
+            <if test="targetname != null">#{targetname},</if>
+            <if test="targettype != null">#{targettype},</if>
+            <if test="categoryName != null">#{categoryName},</if>
+            <if test="targetvalue != null">#{targetvalue},</if>
+            <if test="targetregex2 != null">#{targetregex2},</if>
+            <if test="targetregex != null">#{targetregex},</if>
+            <if test="optiondesc != null">#{optiondesc},</if>
+            <if test="language != null">#{language},</if>
+            <if test="version != null">#{version},</if>
+            <if test="groupid != null">#{groupid},</if>
+            <if test="isabnormal != null">#{isabnormal},</if>
+            <if test="warnup != null">#{warnup},</if>
+            <if test="warndown != null">#{warndown},</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>
+            <if test="scriptid != null">#{scriptid},</if>
+            <if test="nodynamiccruxsJson != null">#{nodynamiccruxsJson},</if>
+            <if test="dynamiccruxsJson != null">#{dynamiccruxsJson},</if>
+            <if test="nextQuestion != null">#{nextQuestion},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrTaskTemplateTargetoption" parameterType="com.smartor.domain.IvrTaskTemplateTargetoption">
+        update ivr_task_template_targetoption
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="templateID != null">templateID = #{templateID},</if>
+            <if test="targetid != null">targetid = #{targetid},</if>
+            <if test="targetname != null">targetname = #{targetname},</if>
+            <if test="targettype != null">targettype = #{targettype},</if>
+            <if test="categoryName != null">categoryName = #{categoryName},</if>
+            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
+            <if test="targetregex2 != null">targetregex2 = #{targetregex2},</if>
+            <if test="targetregex != null">targetregex = #{targetregex},</if>
+            <if test="optiondesc != null">optiondesc = #{optiondesc},</if>
+            <if test="language != null">language = #{language},</if>
+            <if test="version != null">version = #{version},</if>
+            <if test="groupid != null">groupid = #{groupid},</if>
+            <if test="isabnormal != null">isabnormal = #{isabnormal},</if>
+            <if test="warnup != null">warnup = #{warnup},</if>
+            <if test="warndown != null">warndown = #{warndown},</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>
+            <if test="scriptid != null">scriptid = #{scriptid},</if>
+            <if test="nodynamiccruxsJson != null">nodynamiccruxs = #{nodynamiccruxsJson},</if>
+            <if test="dynamiccruxsJson != null">dynamiccruxs = #{dynamiccruxsJson},</if>
+            <if test="nextQuestion != null">next_question = #{nextQuestion},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIvrTaskTemplateTargetoptionById" parameterType="Long">
+        delete
+        from ivr_task_template_targetoption
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteIvrTaskTemplateTargetoptionByIds" parameterType="String">
+        delete from ivr_task_template_targetoption where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml
index da577d2..d1fe163 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml
@@ -1,102 +1,145 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.IvrTaskcalldetailMapper">
-    
-    <resultMap type="IvrTaskcalldetail" id="IvrTaskcalldetailResult">
-        <result property="calldetailid"    column="calldetailid"    />
-        <result property="callid"    column="callid"    />
-        <result property="uuid"    column="uuid"    />
-        <result property="phone"    column="phone"    />
-        <result property="operate"    column="operate"    />
-        <result property="displayno"    column="displayno"    />
-        <result property="inbound"    column="inbound"    />
-        <result property="incoming"    column="incoming"    />
-        <result property="assigntime"    column="assigntime"    />
-        <result property="starttime"    column="starttime"    />
-        <result property="answertime"    column="answertime"    />
-        <result property="silent"    column="silent"    />
-        <result property="dtmfKey"    column="dtmf_key"    />
-        <result property="musicpath"    column="musicpath"    />
-        <result property="sentIndex"    column="sent_index"    />
-        <result property="sentBegin"    column="sent_begin"    />
-        <result property="asrtext"    column="asrtext"    />
-        <result property="beginTime"    column="begin_time"    />
-        <result property="endTime"    column="end_time"    />
-        <result property="sentEnd"    column="sent_end"    />
-        <result property="recordpath"    column="recordpath"    />
-        <result property="recordurl"    column="recordurl"    />
-        <result property="templateid"    column="templateid"    />
-        <result property="templatequestionnum"    column="templatequestionnum"    />
-        <result property="switchid"    column="switchid"    />
-        <result property="questiontext"    column="questiontext"    />
-        <result property="questionvoice"    column="questionvoice"    />
-        <result property="categoryname"    column="categoryname"    />
-        <result property="targetoptions"    column="targetoptions"    />
-        <result property="targetvalue"    column="targetvalue"    />
-        <result property="matchedtext"    column="matchedtext"    />
-        <result property="addtime"    column="addtime"    />
-        <result property="isupload"    column="isupload"    />
-        <result property="uploadTime"    column="upload_time"    />
-        <result property="orgid"    column="orgid"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
+
+    <resultMap type="com.smartor.domain.IvrTaskcalldetail" id="IvrTaskcalldetailResult">
+        <result property="calldetailid" column="calldetailid"/>
+        <result property="callid" column="callid"/>
+        <result property="uuid" column="uuid"/>
+        <result property="phone" column="phone"/>
+        <result property="operate" column="operate"/>
+        <result property="displayno" column="displayno"/>
+        <result property="inbound" column="inbound"/>
+        <result property="incoming" column="incoming"/>
+        <result property="assigntime" column="assigntime"/>
+        <result property="starttime" column="starttime"/>
+        <result property="answertime" column="answertime"/>
+        <result property="silent" column="silent"/>
+        <result property="dtmfKey" column="dtmf_key"/>
+        <result property="musicpath" column="musicpath"/>
+        <result property="sentIndex" column="sent_index"/>
+        <result property="sentBegin" column="sent_begin"/>
+        <result property="asrtext" column="asrtext"/>
+        <result property="beginTime" column="begin_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="sentEnd" column="sent_end"/>
+        <result property="recordpath" column="recordpath"/>
+        <result property="recordurl" column="recordurl"/>
+        <result property="templateid" column="templateid"/>
+        <result property="templatequestionnum" column="templatequestionnum"/>
+        <result property="switchid" column="switchid"/>
+        <result property="questiontext" column="questiontext"/>
+        <result property="questionvoice" column="questionvoice"/>
+        <result property="categoryname" column="categoryname"/>
+        <result property="targetoptions" column="targetoptions"/>
+        <result property="targetvalue" column="targetvalue"/>
+        <result property="matchedtext" column="matchedtext"/>
+        <result property="addtime" column="addtime"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="createTime" column="create_time"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
     </resultMap>
 
     <sql id="selectIvrTaskcalldetailVo">
-        select calldetailid, callid, uuid, phone, operate, displayno, inbound, incoming, assigntime, starttime, answertime, silent, dtmf_key, musicpath, sent_index, sent_begin, asrtext, begin_time, end_time, sent_end, recordpath, recordurl, templateid, templatequestionnum, switchid, questiontext, questionvoice, categoryname, targetoptions, targetvalue, matchedtext, addtime, isupload, upload_time, orgid, create_time, del_flag, update_by, update_time, create_by from ivr_taskcalldetail
+        select calldetailid,
+               callid,
+               uuid,
+               phone,
+               operate,
+               displayno,
+               inbound,
+               incoming,
+               assigntime,
+               starttime,
+               answertime,
+               silent,
+               dtmf_key,
+               musicpath,
+               sent_index,
+               sent_begin,
+               asrtext,
+               begin_time,
+               end_time,
+               sent_end,
+               recordpath,
+               recordurl,
+               templateid,
+               templatequestionnum,
+               switchid,
+               questiontext,
+               questionvoice,
+               categoryname,
+               targetoptions,
+               targetvalue,
+               matchedtext,
+               addtime,
+               isupload,
+               upload_time,
+               orgid,
+               create_time,
+               del_flag,
+               update_by,
+               update_time,
+               create_by
+        from ivr_taskcalldetail
     </sql>
 
-    <select id="selectIvrTaskcalldetailList" parameterType="IvrTaskcalldetail" resultMap="IvrTaskcalldetailResult">
+    <select id="selectIvrTaskcalldetailList" parameterType="com.smartor.domain.IvrTaskcalldetail"
+            resultMap="IvrTaskcalldetailResult">
         <include refid="selectIvrTaskcalldetailVo"/>
-        <where>  
-            <if test="callid != null  and callid != ''"> and callid = #{callid}</if>
-            <if test="uuid != null  and uuid != ''"> and uuid = #{uuid}</if>
-            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
-            <if test="operate != null  and operate != ''"> and operate = #{operate}</if>
-            <if test="displayno != null  and displayno != ''"> and displayno = #{displayno}</if>
-            <if test="inbound != null "> and inbound = #{inbound}</if>
-            <if test="incoming != null "> and incoming = #{incoming}</if>
-            <if test="assigntime != null "> and assigntime = #{assigntime}</if>
-            <if test="starttime != null "> and starttime = #{starttime}</if>
-            <if test="answertime != null "> and answertime = #{answertime}</if>
-            <if test="silent != null "> and silent = #{silent}</if>
-            <if test="dtmfKey != null  and dtmfKey != ''"> and dtmf_key = #{dtmfKey}</if>
-            <if test="musicpath != null  and musicpath != ''"> and musicpath = #{musicpath}</if>
-            <if test="sentIndex != null "> and sent_index = #{sentIndex}</if>
-            <if test="sentBegin != null "> and sent_begin = #{sentBegin}</if>
-            <if test="asrtext != null  and asrtext != ''"> and asrtext = #{asrtext}</if>
-            <if test="beginTime != null "> and begin_time = #{beginTime}</if>
-            <if test="endTime != null "> and end_time = #{endTime}</if>
-            <if test="sentEnd != null "> and sent_end = #{sentEnd}</if>
-            <if test="recordpath != null  and recordpath != ''"> and recordpath = #{recordpath}</if>
-            <if test="recordurl != null  and recordurl != ''"> and recordurl = #{recordurl}</if>
-            <if test="templateid != null  and templateid != ''"> and templateid = #{templateid}</if>
-            <if test="templatequestionnum != null "> and templatequestionnum = #{templatequestionnum}</if>
-            <if test="switchid != null "> and switchid = #{switchid}</if>
-            <if test="questiontext != null  and questiontext != ''"> and questiontext = #{questiontext}</if>
-            <if test="questionvoice != null  and questionvoice != ''"> and questionvoice = #{questionvoice}</if>
-            <if test="categoryname != null  and categoryname != ''"> and categoryname like concat('%', #{categoryname}, '%')</if>
-            <if test="targetoptions != null  and targetoptions != ''"> and targetoptions = #{targetoptions}</if>
-            <if test="targetvalue != null  and targetvalue != ''"> and targetvalue = #{targetvalue}</if>
-            <if test="matchedtext != null  and matchedtext != ''"> and matchedtext = #{matchedtext}</if>
-            <if test="addtime != null "> and addtime = #{addtime}</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>
+        <where>
+            <if test="callid != null  and callid != ''">and callid = #{callid}</if>
+            <if test="uuid != null  and uuid != ''">and uuid = #{uuid}</if>
+            <if test="phone != null  and phone != ''">and phone = #{phone}</if>
+            <if test="operate != null  and operate != ''">and operate = #{operate}</if>
+            <if test="displayno != null  and displayno != ''">and displayno = #{displayno}</if>
+            <if test="inbound != null ">and inbound = #{inbound}</if>
+            <if test="incoming != null ">and incoming = #{incoming}</if>
+            <if test="assigntime != null ">and assigntime = #{assigntime}</if>
+            <if test="starttime != null ">and starttime = #{starttime}</if>
+            <if test="answertime != null ">and answertime = #{answertime}</if>
+            <if test="silent != null ">and silent = #{silent}</if>
+            <if test="dtmfKey != null  and dtmfKey != ''">and dtmf_key = #{dtmfKey}</if>
+            <if test="musicpath != null  and musicpath != ''">and musicpath = #{musicpath}</if>
+            <if test="sentIndex != null ">and sent_index = #{sentIndex}</if>
+            <if test="sentBegin != null ">and sent_begin = #{sentBegin}</if>
+            <if test="asrtext != null  and asrtext != ''">and asrtext = #{asrtext}</if>
+            <if test="beginTime != null ">and begin_time = #{beginTime}</if>
+            <if test="endTime != null ">and end_time = #{endTime}</if>
+            <if test="sentEnd != null ">and sent_end = #{sentEnd}</if>
+            <if test="recordpath != null  and recordpath != ''">and recordpath = #{recordpath}</if>
+            <if test="recordurl != null  and recordurl != ''">and recordurl = #{recordurl}</if>
+            <if test="templateid != null  and templateid != ''">and templateid = #{templateid}</if>
+            <if test="templatequestionnum != null ">and templatequestionnum = #{templatequestionnum}</if>
+            <if test="switchid != null ">and switchid = #{switchid}</if>
+            <if test="questiontext != null  and questiontext != ''">and questiontext = #{questiontext}</if>
+            <if test="questionvoice != null  and questionvoice != ''">and questionvoice = #{questionvoice}</if>
+            <if test="categoryname != null  and categoryname != ''">and categoryname like concat('%', #{categoryname},
+                '%')
+            </if>
+            <if test="targetoptions != null  and targetoptions != ''">and targetoptions = #{targetoptions}</if>
+            <if test="targetvalue != null  and targetvalue != ''">and targetvalue = #{targetvalue}</if>
+            <if test="matchedtext != null  and matchedtext != ''">and matchedtext = #{matchedtext}</if>
+            <if test="addtime != null ">and addtime = #{addtime}</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>
         </where>
     </select>
-    
+
     <select id="selectIvrTaskcalldetailByCalldetailid" parameterType="String" resultMap="IvrTaskcalldetailResult">
         <include refid="selectIvrTaskcalldetailVo"/>
         where calldetailid = #{calldetailid}
     </select>
-        
-    <insert id="insertIvrTaskcalldetail" parameterType="IvrTaskcalldetail">
+
+    <insert id="insertIvrTaskcalldetail" parameterType="com.smartor.domain.IvrTaskcalldetail">
         insert into ivr_taskcalldetail
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="calldetailid != null">calldetailid,</if>
@@ -139,7 +182,7 @@
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="createBy != null">create_by,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="calldetailid != null">#{calldetailid},</if>
             <if test="callid != null">#{callid},</if>
@@ -181,10 +224,10 @@
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="createBy != null">#{createBy},</if>
-         </trim>
+        </trim>
     </insert>
 
-    <update id="updateIvrTaskcalldetail" parameterType="IvrTaskcalldetail">
+    <update id="updateIvrTaskcalldetail" parameterType="com.smartor.domain.IvrTaskcalldetail">
         update ivr_taskcalldetail
         <trim prefix="SET" suffixOverrides=",">
             <if test="callid != null">callid = #{callid},</if>
@@ -231,13 +274,15 @@
     </update>
 
     <delete id="deleteIvrTaskcalldetailByCalldetailid" parameterType="String">
-        delete from ivr_taskcalldetail where calldetailid = #{calldetailid}
+        delete
+        from ivr_taskcalldetail
+        where calldetailid = #{calldetailid}
     </delete>
 
     <delete id="deleteIvrTaskcalldetailByCalldetailids" parameterType="String">
-        delete from ivr_taskcalldetail where calldetailid in 
+        delete from ivr_taskcalldetail where calldetailid in
         <foreach item="calldetailid" collection="array" open="(" separator="," close=")">
             #{calldetailid}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml
index b07f965..6de2180 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml
@@ -1,90 +1,125 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.IvrTaskcallrecordMapper">
-    
-    <resultMap type="IvrTaskcallrecord" id="IvrTaskcallrecordResult">
-        <result property="uuid"    column="uuid"    />
-        <result property="displayno"    column="displayno"    />
-        <result property="phone"    column="phone"    />
-        <result property="taskid"    column="taskid"    />
-        <result property="extension"    column="extension"    />
-        <result property="inbound"    column="inbound"    />
-        <result property="direct"    column="direct"    />
-        <result property="answered"    column="answered"    />
-        <result property="assignTime"    column="assign_time"    />
-        <result property="startTime"    column="start_time"    />
-        <result property="answerTime"    column="answer_time"    />
-        <result property="hangupTime"    column="hangup_time"    />
-        <result property="endTime"    column="end_time"    />
-        <result property="recordPath"    column="record_path"    />
-        <result property="recordUrl"    column="record_url"    />
-        <result property="hangupSipcode"    column="hangup_sipcode"    />
-        <result property="hangupCause"    column="hangup_cause"    />
-        <result property="transfered"    column="transfered"    />
-        <result property="transUuid"    column="trans_uuid"    />
-        <result property="transPhone"    column="trans_phone"    />
-        <result property="transAnswered"    column="trans_answered"    />
-        <result property="transStartTime"    column="trans_start_time"    />
-        <result property="transAnswerTime"    column="trans_answer_time"    />
-        <result property="earlyAsrtext"    column="early_asrtext"    />
-        <result property="earlyPath"    column="early_path"    />
-        <result property="earlyUrl"    column="early_url"    />
-        <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"    />
+
+    <resultMap type="com.smartor.domain.IvrTaskcallrecord" id="IvrTaskcallrecordResult">
+        <result property="uuid" column="uuid"/>
+        <result property="displayno" column="displayno"/>
+        <result property="phone" column="phone"/>
+        <result property="taskid" column="taskid"/>
+        <result property="extension" column="extension"/>
+        <result property="inbound" column="inbound"/>
+        <result property="direct" column="direct"/>
+        <result property="answered" column="answered"/>
+        <result property="assignTime" column="assign_time"/>
+        <result property="startTime" column="start_time"/>
+        <result property="answerTime" column="answer_time"/>
+        <result property="hangupTime" column="hangup_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="recordPath" column="record_path"/>
+        <result property="recordUrl" column="record_url"/>
+        <result property="hangupSipcode" column="hangup_sipcode"/>
+        <result property="hangupCause" column="hangup_cause"/>
+        <result property="transfered" column="transfered"/>
+        <result property="transUuid" column="trans_uuid"/>
+        <result property="transPhone" column="trans_phone"/>
+        <result property="transAnswered" column="trans_answered"/>
+        <result property="transStartTime" column="trans_start_time"/>
+        <result property="transAnswerTime" column="trans_answer_time"/>
+        <result property="earlyAsrtext" column="early_asrtext"/>
+        <result property="earlyPath" column="early_path"/>
+        <result property="earlyUrl" column="early_url"/>
+        <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"/>
     </resultMap>
 
     <sql id="selectIvrTaskcallrecordVo">
-        select uuid, displayno, phone, taskid, extension, inbound, direct, answered, assign_time, start_time, answer_time, hangup_time, end_time, record_path, record_url, hangup_sipcode, hangup_cause, transfered, trans_uuid, trans_phone, trans_answered, trans_start_time, trans_answer_time, early_asrtext, early_path, early_url, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_taskcallrecord
+        select uuid,
+               displayno,
+               phone,
+               taskid,
+               extension,
+               inbound,
+               direct,
+               answered,
+               assign_time,
+               start_time,
+               answer_time,
+               hangup_time,
+               end_time,
+               record_path,
+               record_url,
+               hangup_sipcode,
+               hangup_cause,
+               transfered,
+               trans_uuid,
+               trans_phone,
+               trans_answered,
+               trans_start_time,
+               trans_answer_time,
+               early_asrtext,
+               early_path,
+               early_url,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               orgid
+        from ivr_taskcallrecord
     </sql>
 
-    <select id="selectIvrTaskcallrecordList" parameterType="IvrTaskcallrecord" resultMap="IvrTaskcallrecordResult">
+    <select id="selectIvrTaskcallrecordList" parameterType="com.smartor.domain.IvrTaskcallrecord"
+            resultMap="IvrTaskcallrecordResult">
         <include refid="selectIvrTaskcallrecordVo"/>
-        <where>  
-            <if test="displayno != null  and displayno != ''"> and displayno = #{displayno}</if>
-            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
-            <if test="taskid != null  and taskid != ''"> and taskid = #{taskid}</if>
-            <if test="extension != null  and extension != ''"> and extension = #{extension}</if>
-            <if test="inbound != null "> and inbound = #{inbound}</if>
-            <if test="direct != null "> and direct = #{direct}</if>
-            <if test="answered != null "> and answered = #{answered}</if>
-            <if test="assignTime != null "> and assign_time = #{assignTime}</if>
-            <if test="startTime != null "> and start_time = #{startTime}</if>
-            <if test="answerTime != null "> and answer_time = #{answerTime}</if>
-            <if test="hangupTime != null "> and hangup_time = #{hangupTime}</if>
-            <if test="endTime != null "> and end_time = #{endTime}</if>
-            <if test="recordPath != null  and recordPath != ''"> and record_path = #{recordPath}</if>
-            <if test="recordUrl != null  and recordUrl != ''"> and record_url = #{recordUrl}</if>
-            <if test="hangupSipcode != null "> and hangup_sipcode = #{hangupSipcode}</if>
-            <if test="hangupCause != null  and hangupCause != ''"> and hangup_cause = #{hangupCause}</if>
-            <if test="transfered != null "> and transfered = #{transfered}</if>
-            <if test="transUuid != null  and transUuid != ''"> and trans_uuid = #{transUuid}</if>
-            <if test="transPhone != null  and transPhone != ''"> and trans_phone = #{transPhone}</if>
-            <if test="transAnswered != null "> and trans_answered = #{transAnswered}</if>
-            <if test="transStartTime != null "> and trans_start_time = #{transStartTime}</if>
-            <if test="transAnswerTime != null "> and trans_answer_time = #{transAnswerTime}</if>
-            <if test="earlyAsrtext != null  and earlyAsrtext != ''"> and early_asrtext = #{earlyAsrtext}</if>
-            <if test="earlyPath != null  and earlyPath != ''"> and early_path = #{earlyPath}</if>
-            <if test="earlyUrl != null  and earlyUrl != ''"> and early_url = #{earlyUrl}</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>
+        <where>
+            <if test="displayno != null  and displayno != ''">and displayno = #{displayno}</if>
+            <if test="phone != null  and phone != ''">and phone = #{phone}</if>
+            <if test="taskid != null  and taskid != ''">and taskid = #{taskid}</if>
+            <if test="extension != null  and extension != ''">and extension = #{extension}</if>
+            <if test="inbound != null ">and inbound = #{inbound}</if>
+            <if test="direct != null ">and direct = #{direct}</if>
+            <if test="answered != null ">and answered = #{answered}</if>
+            <if test="assignTime != null ">and assign_time = #{assignTime}</if>
+            <if test="startTime != null ">and start_time = #{startTime}</if>
+            <if test="answerTime != null ">and answer_time = #{answerTime}</if>
+            <if test="hangupTime != null ">and hangup_time = #{hangupTime}</if>
+            <if test="endTime != null ">and end_time = #{endTime}</if>
+            <if test="recordPath != null  and recordPath != ''">and record_path = #{recordPath}</if>
+            <if test="recordUrl != null  and recordUrl != ''">and record_url = #{recordUrl}</if>
+            <if test="hangupSipcode != null ">and hangup_sipcode = #{hangupSipcode}</if>
+            <if test="hangupCause != null  and hangupCause != ''">and hangup_cause = #{hangupCause}</if>
+            <if test="transfered != null ">and transfered = #{transfered}</if>
+            <if test="transUuid != null  and transUuid != ''">and trans_uuid = #{transUuid}</if>
+            <if test="transPhone != null  and transPhone != ''">and trans_phone = #{transPhone}</if>
+            <if test="transAnswered != null ">and trans_answered = #{transAnswered}</if>
+            <if test="transStartTime != null ">and trans_start_time = #{transStartTime}</if>
+            <if test="transAnswerTime != null ">and trans_answer_time = #{transAnswerTime}</if>
+            <if test="earlyAsrtext != null  and earlyAsrtext != ''">and early_asrtext = #{earlyAsrtext}</if>
+            <if test="earlyPath != null  and earlyPath != ''">and early_path = #{earlyPath}</if>
+            <if test="earlyUrl != null  and earlyUrl != ''">and early_url = #{earlyUrl}</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>
         </where>
     </select>
-    
+
     <select id="selectIvrTaskcallrecordByUuid" parameterType="String" resultMap="IvrTaskcallrecordResult">
         <include refid="selectIvrTaskcallrecordVo"/>
         where uuid = #{uuid}
     </select>
-        
-    <insert id="insertIvrTaskcallrecord" parameterType="IvrTaskcallrecord">
+
+    <insert id="insertIvrTaskcallrecord" parameterType="com.smartor.domain.IvrTaskcallrecord">
         insert into ivr_taskcallrecord
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="uuid != null">uuid,</if>
@@ -121,7 +156,7 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="uuid != null">#{uuid},</if>
             <if test="displayno != null">#{displayno},</if>
@@ -157,10 +192,10 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
-         </trim>
+        </trim>
     </insert>
 
-    <update id="updateIvrTaskcallrecord" parameterType="IvrTaskcallrecord">
+    <update id="updateIvrTaskcallrecord" parameterType="com.smartor.domain.IvrTaskcallrecord">
         update ivr_taskcallrecord
         <trim prefix="SET" suffixOverrides=",">
             <if test="displayno != null">displayno = #{displayno},</if>
@@ -201,13 +236,15 @@
     </update>
 
     <delete id="deleteIvrTaskcallrecordByUuid" parameterType="String">
-        delete from ivr_taskcallrecord where uuid = #{uuid}
+        delete
+        from ivr_taskcallrecord
+        where uuid = #{uuid}
     </delete>
 
     <delete id="deleteIvrTaskcallrecordByUuids" parameterType="String">
-        delete from ivr_taskcallrecord where uuid in 
+        delete from ivr_taskcallrecord where uuid in
         <foreach item="uuid" collection="array" open="(" separator="," close=")">
             #{uuid}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml
index 6d162c9..8f76ee5 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml
@@ -1,58 +1,80 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.IvrTasksmsMapper">
-    
-    <resultMap type="IvrTasksms" id="IvrTasksmsResult">
-        <result property="id"    column="id"    />
-        <result property="taskid"    column="taskid"    />
-        <result property="type"    column="type"    />
-        <result property="smstemplateid"    column="smstemplateid"    />
-        <result property="phonestatusid"    column="phonestatusid"    />
-        <result property="smstemplatename"    column="smstemplatename"    />
-        <result property="phonestatusname"    column="phonestatusname"    />
-        <result property="isdel"    column="isdel"    />
-        <result property="content"    column="content"    />
-        <result property="tagid"    column="tagid"    />
-        <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"    />
+
+    <resultMap type="com.smartor.domain.IvrTasksms" id="IvrTasksmsResult">
+        <result property="id" column="id"/>
+        <result property="taskid" column="taskid"/>
+        <result property="type" column="type"/>
+        <result property="smstemplateid" column="smstemplateid"/>
+        <result property="phonestatusid" column="phonestatusid"/>
+        <result property="smstemplatename" column="smstemplatename"/>
+        <result property="phonestatusname" column="phonestatusname"/>
+        <result property="isdel" column="isdel"/>
+        <result property="content" column="content"/>
+        <result property="tagid" column="tagid"/>
+        <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"/>
     </resultMap>
 
     <sql id="selectIvrTasksmsVo">
-        select id, taskid, type, smstemplateid, phonestatusid, smstemplatename, phonestatusname, isdel, content, tagid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_tasksms
+        select id,
+               taskid,
+               type,
+               smstemplateid,
+               phonestatusid,
+               smstemplatename,
+               phonestatusname,
+               isdel,
+               content,
+               tagid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               orgid
+        from ivr_tasksms
     </sql>
 
-    <select id="selectIvrTasksmsList" parameterType="IvrTasksms" resultMap="IvrTasksmsResult">
+    <select id="selectIvrTasksmsList" parameterType="com.smartor.domain.IvrTasksms" resultMap="IvrTasksmsResult">
         <include refid="selectIvrTasksmsVo"/>
-        <where>  
-            <if test="taskid != null "> and taskid = #{taskid}</if>
-            <if test="type != null "> and type = #{type}</if>
-            <if test="smstemplateid != null "> and smstemplateid = #{smstemplateid}</if>
-            <if test="phonestatusid != null  and phonestatusid != ''"> and phonestatusid = #{phonestatusid}</if>
-            <if test="smstemplatename != null  and smstemplatename != ''"> and smstemplatename like concat('%', #{smstemplatename}, '%')</if>
-            <if test="phonestatusname != null  and phonestatusname != ''"> and phonestatusname like concat('%', #{phonestatusname}, '%')</if>
-            <if test="isdel != null "> and isdel = #{isdel}</if>
-            <if test="content != null  and content != ''"> and content = #{content}</if>
-            <if test="tagid != null "> and tagid = #{tagid}</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>
+        <where>
+            <if test="taskid != null ">and taskid = #{taskid}</if>
+            <if test="type != null ">and type = #{type}</if>
+            <if test="smstemplateid != null ">and smstemplateid = #{smstemplateid}</if>
+            <if test="phonestatusid != null  and phonestatusid != ''">and phonestatusid = #{phonestatusid}</if>
+            <if test="smstemplatename != null  and smstemplatename != ''">and smstemplatename like concat('%',
+                #{smstemplatename}, '%')
+            </if>
+            <if test="phonestatusname != null  and phonestatusname != ''">and phonestatusname like concat('%',
+                #{phonestatusname}, '%')
+            </if>
+            <if test="isdel != null ">and isdel = #{isdel}</if>
+            <if test="content != null  and content != ''">and content = #{content}</if>
+            <if test="tagid != null ">and tagid = #{tagid}</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>
         </where>
     </select>
-    
+
     <select id="selectIvrTasksmsById" parameterType="Long" resultMap="IvrTasksmsResult">
         <include refid="selectIvrTasksmsVo"/>
         where id = #{id}
     </select>
-        
-    <insert id="insertIvrTasksms" parameterType="IvrTasksms">
+
+    <insert id="insertIvrTasksms" parameterType="com.smartor.domain.IvrTasksms">
         insert into ivr_tasksms
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="id != null">id,</if>
@@ -73,7 +95,7 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
             <if test="taskid != null">#{taskid},</if>
@@ -93,10 +115,10 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
-         </trim>
+        </trim>
     </insert>
 
-    <update id="updateIvrTasksms" parameterType="IvrTasksms">
+    <update id="updateIvrTasksms" parameterType="com.smartor.domain.IvrTasksms">
         update ivr_tasksms
         <trim prefix="SET" suffixOverrides=",">
             <if test="taskid != null">taskid = #{taskid},</if>
@@ -121,13 +143,15 @@
     </update>
 
     <delete id="deleteIvrTasksmsById" parameterType="Long">
-        delete from ivr_tasksms where id = #{id}
+        delete
+        from ivr_tasksms
+        where id = #{id}
     </delete>
 
     <delete id="deleteIvrTasksmsByIds" parameterType="String">
-        delete from ivr_tasksms where id in 
+        delete from ivr_tasksms where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+</mapper>

--
Gitblit v1.9.3