From 6476e6e201c459ecacfbe9338b0c794753b42036 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期五, 24 三月 2023 14:51:03 +0800
Subject: [PATCH] yxh

---
 smartor/src/main/java/com/smartor/domain/IvrTaskcallrecord.java                             |  449 +++++
 smartor/src/main/java/com/smartor/service/IIvrTaskcallrecordService.java                    |   61 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java |  104 +
 smartor/src/main/java/com/smartor/service/impl/IvrTaskcallServiceImpl.java                  |   96 +
 smartor/src/main/java/com/smartor/service/IIvrTaskService.java                              |   61 
 smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java                       |   61 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java                      |   96 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java           |  104 +
 smartor/src/main/java/com/smartor/domain/IvrTask.java                                       |  395 ++++
 smartor/src/main/java/com/smartor/domain/IvrTaskcalldetail.java                             |  534 ++++++
 smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java                              |   61 
 smartor/src/main/resources/mapper/smartor/IvrTaskcallMapper.xml                             |  263 +++
 smartor/src/main/java/com/smartor/domain/IvrTasksms.java                                    |  225 ++
 smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml                                 |  193 ++
 smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml                       |  243 +++
 smartor/src/main/java/com/smartor/mapper/IvrTaskcallMapper.java                             |   61 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskcallrecordServiceImpl.java            |   96 +
 smartor/src/main/java/com/smartor/domain/IvrTaskcall.java                                   |  571 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTasksmsController.java        |  104 +
 smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java            |   96 +
 smartor/src/main/java/com/smartor/service/IIvrTasksmsService.java                           |   61 
 smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml                       |  213 ++
 smartor/src/main/java/com/smartor/service/impl/IvrTasksmsServiceImpl.java                   |   96 +
 smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java                                 |   61 
 smartor/src/main/java/com/smartor/service/IIvrTaskcallService.java                          |   61 
 smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml                              |  133 +
 smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java                       |   61 
 smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java                    |   61 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallController.java       |  104 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallrecordController.java |  104 +
 30 files changed, 4,829 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java
new file mode 100644
index 0000000..981417c
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskController.java
@@ -0,0 +1,104 @@
+package com.smartor.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.smartor.domain.IvrTask;
+import com.smartor.service.IIvrTaskService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇煶浠诲姟Controller
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@RestController
+@RequestMapping("/smartor/ivrtask")
+public class IvrTaskController extends BaseController
+{
+    @Autowired
+    private IIvrTaskService ivrTaskService;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IvrTask ivrTask)
+    {
+        startPage();
+        List<IvrTask> list = ivrTaskService.selectIvrTaskList(ivrTask);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭璇煶浠诲姟鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:export')")
+    @Log(title = "璇煶浠诲姟", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTask ivrTask)
+    {
+        List<IvrTask> list = ivrTaskService.selectIvrTaskList(ivrTask);
+        ExcelUtil<IvrTask> util = new ExcelUtil<IvrTask>(IvrTask.class);
+        util.exportExcel(response, list, "璇煶浠诲姟鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇璇煶浠诲姟璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:query')")
+    @GetMapping(value = "/{taskid}")
+    public AjaxResult getInfo(@PathVariable("taskid") Long taskid)
+    {
+        return success(ivrTaskService.selectIvrTaskByTaskid(taskid));
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:add')")
+    @Log(title = "璇煶浠诲姟", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IvrTask ivrTask)
+    {
+        return toAjax(ivrTaskService.insertIvrTask(ivrTask));
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:edit')")
+    @Log(title = "璇煶浠诲姟", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IvrTask ivrTask)
+    {
+        return toAjax(ivrTaskService.updateIvrTask(ivrTask));
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtask:remove')")
+    @Log(title = "璇煶浠诲姟", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{taskids}")
+    public AjaxResult remove(@PathVariable Long[] taskids)
+    {
+        return toAjax(ivrTaskService.deleteIvrTaskByTaskids(taskids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallController.java
new file mode 100644
index 0000000..ba823e2
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallController.java
@@ -0,0 +1,104 @@
+package com.smartor.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.smartor.domain.IvrTaskcall;
+import com.smartor.service.IIvrTaskcallService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇煶浠诲姟鍛煎彨Controller
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@RestController
+@RequestMapping("/smartor/ivrtaskcall")
+public class IvrTaskcallController extends BaseController
+{
+    @Autowired
+    private IIvrTaskcallService ivrTaskcallService;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IvrTaskcall ivrTaskcall)
+    {
+        startPage();
+        List<IvrTaskcall> list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭璇煶浠诲姟鍛煎彨鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:export')")
+    @Log(title = "璇煶浠诲姟鍛煎彨", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskcall ivrTaskcall)
+    {
+        List<IvrTaskcall> list = ivrTaskcallService.selectIvrTaskcallList(ivrTaskcall);
+        ExcelUtil<IvrTaskcall> util = new ExcelUtil<IvrTaskcall>(IvrTaskcall.class);
+        util.exportExcel(response, list, "璇煶浠诲姟鍛煎彨鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇璇煶浠诲姟鍛煎彨璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:query')")
+    @GetMapping(value = "/{callid}")
+    public AjaxResult getInfo(@PathVariable("callid") Long callid)
+    {
+        return success(ivrTaskcallService.selectIvrTaskcallByCallid(callid));
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:add')")
+    @Log(title = "璇煶浠诲姟鍛煎彨", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IvrTaskcall ivrTaskcall)
+    {
+        return toAjax(ivrTaskcallService.insertIvrTaskcall(ivrTaskcall));
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:edit')")
+    @Log(title = "璇煶浠诲姟鍛煎彨", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IvrTaskcall ivrTaskcall)
+    {
+        return toAjax(ivrTaskcallService.updateIvrTaskcall(ivrTaskcall));
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcall:remove')")
+    @Log(title = "璇煶浠诲姟鍛煎彨", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{callids}")
+    public AjaxResult remove(@PathVariable Long[] callids)
+    {
+        return toAjax(ivrTaskcallService.deleteIvrTaskcallByCallids(callids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java
new file mode 100644
index 0000000..229039c
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcalldetailController.java
@@ -0,0 +1,104 @@
+package com.smartor.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.smartor.domain.IvrTaskcalldetail;
+import com.smartor.service.IIvrTaskcalldetailService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇煶浠诲姟鍛煎彨鏄庣粏Controller
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@RestController
+@RequestMapping("/smartor/ivrtaskcalldetail")
+public class IvrTaskcalldetailController extends BaseController
+{
+    @Autowired
+    private IIvrTaskcalldetailService ivrTaskcalldetailService;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        startPage();
+        List<IvrTaskcalldetail> list = ivrTaskcalldetailService.selectIvrTaskcalldetailList(ivrTaskcalldetail);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:export')")
+    @Log(title = "璇煶浠诲姟鍛煎彨鏄庣粏", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        List<IvrTaskcalldetail> list = ivrTaskcalldetailService.selectIvrTaskcalldetailList(ivrTaskcalldetail);
+        ExcelUtil<IvrTaskcalldetail> util = new ExcelUtil<IvrTaskcalldetail>(IvrTaskcalldetail.class);
+        util.exportExcel(response, list, "璇煶浠诲姟鍛煎彨鏄庣粏鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇璇煶浠诲姟鍛煎彨鏄庣粏璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:query')")
+    @GetMapping(value = "/{calldetailid}")
+    public AjaxResult getInfo(@PathVariable("calldetailid") String calldetailid)
+    {
+        return success(ivrTaskcalldetailService.selectIvrTaskcalldetailByCalldetailid(calldetailid));
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:add')")
+    @Log(title = "璇煶浠诲姟鍛煎彨鏄庣粏", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        return toAjax(ivrTaskcalldetailService.insertIvrTaskcalldetail(ivrTaskcalldetail));
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:edit')")
+    @Log(title = "璇煶浠诲姟鍛煎彨鏄庣粏", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        return toAjax(ivrTaskcalldetailService.updateIvrTaskcalldetail(ivrTaskcalldetail));
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcalldetail:remove')")
+    @Log(title = "璇煶浠诲姟鍛煎彨鏄庣粏", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{calldetailids}")
+    public AjaxResult remove(@PathVariable String[] calldetailids)
+    {
+        return toAjax(ivrTaskcalldetailService.deleteIvrTaskcalldetailByCalldetailids(calldetailids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallrecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallrecordController.java
new file mode 100644
index 0000000..73bf56f
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskcallrecordController.java
@@ -0,0 +1,104 @@
+package com.smartor.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.smartor.domain.IvrTaskcallrecord;
+import com.smartor.service.IIvrTaskcallrecordService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇煶浠诲姟鍛煎彨璁板綍Controller
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@RestController
+@RequestMapping("/smartor/ivrtaskcallrecord")
+public class IvrTaskcallrecordController extends BaseController
+{
+    @Autowired
+    private IIvrTaskcallrecordService ivrTaskcallrecordService;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        startPage();
+        List<IvrTaskcallrecord> list = ivrTaskcallrecordService.selectIvrTaskcallrecordList(ivrTaskcallrecord);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:export')")
+    @Log(title = "璇煶浠诲姟鍛煎彨璁板綍", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        List<IvrTaskcallrecord> list = ivrTaskcallrecordService.selectIvrTaskcallrecordList(ivrTaskcallrecord);
+        ExcelUtil<IvrTaskcallrecord> util = new ExcelUtil<IvrTaskcallrecord>(IvrTaskcallrecord.class);
+        util.exportExcel(response, list, "璇煶浠诲姟鍛煎彨璁板綍鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇璇煶浠诲姟鍛煎彨璁板綍璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:query')")
+    @GetMapping(value = "/{uuid}")
+    public AjaxResult getInfo(@PathVariable("uuid") String uuid)
+    {
+        return success(ivrTaskcallrecordService.selectIvrTaskcallrecordByUuid(uuid));
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨璁板綍
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:add')")
+    @Log(title = "璇煶浠诲姟鍛煎彨璁板綍", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        return toAjax(ivrTaskcallrecordService.insertIvrTaskcallrecord(ivrTaskcallrecord));
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨璁板綍
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:edit')")
+    @Log(title = "璇煶浠诲姟鍛煎彨璁板綍", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        return toAjax(ivrTaskcallrecordService.updateIvrTaskcallrecord(ivrTaskcallrecord));
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtaskcallrecord:remove')")
+    @Log(title = "璇煶浠诲姟鍛煎彨璁板綍", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{uuids}")
+    public AjaxResult remove(@PathVariable String[] uuids)
+    {
+        return toAjax(ivrTaskcallrecordService.deleteIvrTaskcallrecordByUuids(uuids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTasksmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTasksmsController.java
new file mode 100644
index 0000000..29f8f05
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTasksmsController.java
@@ -0,0 +1,104 @@
+package com.smartor.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.smartor.domain.IvrTasksms;
+import com.smartor.service.IIvrTasksmsService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 璇煶浠诲姟鐭俊Controller
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@RestController
+@RequestMapping("/smartor/ivrtasksms")
+public class IvrTasksmsController extends BaseController
+{
+    @Autowired
+    private IIvrTasksmsService ivrTasksmsService;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(IvrTasksms ivrTasksms)
+    {
+        startPage();
+        List<IvrTasksms> list = ivrTasksmsService.selectIvrTasksmsList(ivrTasksms);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭璇煶浠诲姟鐭俊鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:export')")
+    @Log(title = "璇煶浠诲姟鐭俊", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrTasksms ivrTasksms)
+    {
+        List<IvrTasksms> list = ivrTasksmsService.selectIvrTasksmsList(ivrTasksms);
+        ExcelUtil<IvrTasksms> util = new ExcelUtil<IvrTasksms>(IvrTasksms.class);
+        util.exportExcel(response, list, "璇煶浠诲姟鐭俊鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇璇煶浠诲姟鐭俊璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(ivrTasksmsService.selectIvrTasksmsById(id));
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鐭俊
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:add')")
+    @Log(title = "璇煶浠诲姟鐭俊", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody IvrTasksms ivrTasksms)
+    {
+        return toAjax(ivrTasksmsService.insertIvrTasksms(ivrTasksms));
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鐭俊
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:edit')")
+    @Log(title = "璇煶浠诲姟鐭俊", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody IvrTasksms ivrTasksms)
+    {
+        return toAjax(ivrTasksmsService.updateIvrTasksms(ivrTasksms));
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鐭俊
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:ivrtasksms:remove')")
+    @Log(title = "璇煶浠诲姟鐭俊", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(ivrTasksmsService.deleteIvrTasksmsByIds(ids));
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTask.java b/smartor/src/main/java/com/smartor/domain/IvrTask.java
new file mode 100644
index 0000000..4731f35
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTask.java
@@ -0,0 +1,395 @@
+package com.smartor.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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_task
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public class IvrTask extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**    */
+    private Long taskid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String taskname;
+
+    /**    */
+    @Excel(name = "  ")
+    private String templateid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String templatename;
+
+    /**    */
+    @Excel(name = "  ")
+    private String labelinfo;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long state;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long count;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long executed;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long unexecuted;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long fail;
+
+    /**    */
+    @Excel(name = "  ")
+    private String userid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String username;
+
+    /**    */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "  ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date addtime;
+
+    /**    */
+    @Excel(name = "  ")
+    private String checkuserid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String checkusername;
+
+    /**    */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "  ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date checktime;
+
+    /**  1锛屽嚭闄㈤殢璁匡紱2锛屼綋妫�閫氱煡锛�3锛屾弧鎰忓害璋冩煡锛�4锛屽鏁欙紱  */
+    @Excel(name = " 1锛屽嚭闄㈤殢璁匡紱2锛屼綋妫�閫氱煡锛�3锛屾弧鎰忓害璋冩煡锛�4锛屽鏁欙紱 ")
+    private String type;
+
+    /**    */
+    @Excel(name = "  ")
+    private String typename;
+
+    /**  0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊  */
+    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 ")
+    private Long usebqsms;
+
+    /**  0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊  */
+    @Excel(name = " 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 ")
+    private Long usebhsms;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long usesendsms;
+
+    /**    */
+    @Excel(name = "  ")
+    private String deptcode;
+
+    /**  鍒犻櫎鏍囪  */
+    private String delFlag;
+
+    /**  涓婁紶鏍囪  */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**  涓婁紶鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**  鏈烘瀯ID  */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    public void setTaskid(Long taskid) 
+    {
+        this.taskid = taskid;
+    }
+
+    public Long getTaskid() 
+    {
+        return taskid;
+    }
+    public void setTaskname(String taskname) 
+    {
+        this.taskname = taskname;
+    }
+
+    public String getTaskname() 
+    {
+        return taskname;
+    }
+    public void setTemplateid(String templateid) 
+    {
+        this.templateid = templateid;
+    }
+
+    public String getTemplateid() 
+    {
+        return templateid;
+    }
+    public void setTemplatename(String templatename) 
+    {
+        this.templatename = templatename;
+    }
+
+    public String getTemplatename() 
+    {
+        return templatename;
+    }
+    public void setLabelinfo(String labelinfo) 
+    {
+        this.labelinfo = labelinfo;
+    }
+
+    public String getLabelinfo() 
+    {
+        return labelinfo;
+    }
+    public void setState(Long state) 
+    {
+        this.state = state;
+    }
+
+    public Long getState() 
+    {
+        return state;
+    }
+    public void setCount(Long count) 
+    {
+        this.count = count;
+    }
+
+    public Long getCount() 
+    {
+        return count;
+    }
+    public void setExecuted(Long executed) 
+    {
+        this.executed = executed;
+    }
+
+    public Long getExecuted() 
+    {
+        return executed;
+    }
+    public void setUnexecuted(Long unexecuted) 
+    {
+        this.unexecuted = unexecuted;
+    }
+
+    public Long getUnexecuted() 
+    {
+        return unexecuted;
+    }
+    public void setFail(Long fail) 
+    {
+        this.fail = fail;
+    }
+
+    public Long getFail() 
+    {
+        return fail;
+    }
+    public void setUserid(String userid) 
+    {
+        this.userid = userid;
+    }
+
+    public String getUserid() 
+    {
+        return userid;
+    }
+    public void setUsername(String username) 
+    {
+        this.username = username;
+    }
+
+    public String getUsername() 
+    {
+        return username;
+    }
+    public void setAddtime(Date addtime) 
+    {
+        this.addtime = addtime;
+    }
+
+    public Date getAddtime() 
+    {
+        return addtime;
+    }
+    public void setCheckuserid(String checkuserid) 
+    {
+        this.checkuserid = checkuserid;
+    }
+
+    public String getCheckuserid() 
+    {
+        return checkuserid;
+    }
+    public void setCheckusername(String checkusername) 
+    {
+        this.checkusername = checkusername;
+    }
+
+    public String getCheckusername() 
+    {
+        return checkusername;
+    }
+    public void setChecktime(Date checktime) 
+    {
+        this.checktime = checktime;
+    }
+
+    public Date getChecktime() 
+    {
+        return checktime;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setTypename(String typename) 
+    {
+        this.typename = typename;
+    }
+
+    public String getTypename() 
+    {
+        return typename;
+    }
+    public void setUsebqsms(Long usebqsms) 
+    {
+        this.usebqsms = usebqsms;
+    }
+
+    public Long getUsebqsms() 
+    {
+        return usebqsms;
+    }
+    public void setUsebhsms(Long usebhsms) 
+    {
+        this.usebhsms = usebhsms;
+    }
+
+    public Long getUsebhsms() 
+    {
+        return usebhsms;
+    }
+    public void setUsesendsms(Long usesendsms) 
+    {
+        this.usesendsms = usesendsms;
+    }
+
+    public Long getUsesendsms() 
+    {
+        return usesendsms;
+    }
+    public void setDeptcode(String deptcode) 
+    {
+        this.deptcode = deptcode;
+    }
+
+    public String getDeptcode() 
+    {
+        return deptcode;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setIsupload(Long isupload) 
+    {
+        this.isupload = isupload;
+    }
+
+    public Long getIsupload() 
+    {
+        return isupload;
+    }
+    public void setUploadTime(Date uploadTime) 
+    {
+        this.uploadTime = uploadTime;
+    }
+
+    public Date getUploadTime() 
+    {
+        return uploadTime;
+    }
+    public void setOrgid(String orgid) 
+    {
+        this.orgid = orgid;
+    }
+
+    public String getOrgid() 
+    {
+        return orgid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("taskid", getTaskid())
+            .append("taskname", getTaskname())
+            .append("templateid", getTemplateid())
+            .append("templatename", getTemplatename())
+            .append("labelinfo", getLabelinfo())
+            .append("state", getState())
+            .append("count", getCount())
+            .append("executed", getExecuted())
+            .append("unexecuted", getUnexecuted())
+            .append("fail", getFail())
+            .append("userid", getUserid())
+            .append("username", getUsername())
+            .append("addtime", getAddtime())
+            .append("checkuserid", getCheckuserid())
+            .append("checkusername", getCheckusername())
+            .append("checktime", getChecktime())
+            .append("type", getType())
+            .append("typename", getTypename())
+            .append("usebqsms", getUsebqsms())
+            .append("usebhsms", getUsebhsms())
+            .append("usesendsms", getUsesendsms())
+            .append("deptcode", getDeptcode())
+            .append("delFlag", getDelFlag())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("isupload", getIsupload())
+            .append("uploadTime", getUploadTime())
+            .append("orgid", getOrgid())
+            .toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskcall.java b/smartor/src/main/java/com/smartor/domain/IvrTaskcall.java
new file mode 100644
index 0000000..8adcc21
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskcall.java
@@ -0,0 +1,571 @@
+package com.smartor.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
+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_taskcall
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public class IvrTaskcall extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**    */
+    private Long callid;
+
+    /**  鍙戦�佷汉  */
+    @Excel(name = " 鍙戦�佷汉 ")
+    private String sendname;
+
+    /**  鎵嬫満鍙�  */
+    @Excel(name = " 鎵嬫満鍙� ")
+    private String phone;
+
+    /**    */
+    @Excel(name = "  ")
+    private String sex;
+
+    /**  骞撮緞  */
+    @Excel(name = " 骞撮緞 ")
+    private Long age;
+
+    /**  韬唤璇佸彿  */
+    @Excel(name = " 韬唤璇佸彿 ")
+    private String sfzh;
+
+    /**  鍦板潃  */
+    @Excel(name = " 鍦板潃 ")
+    private String addr;
+
+    /**    */
+    @Excel(name = "  ")
+    private String senderdetail;
+
+    /**    */
+    @Excel(name = "  ")
+    private String inserttype;
+
+    /**  浠诲姟ID  */
+    @Excel(name = " 浠诲姟ID ")
+    private Long taskid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String templateid;
+
+    /**  妯℃澘鍚�  */
+    @Excel(name = " 妯℃澘鍚� ")
+    private String templatename;
+
+    /**  鍙戦�佹棩鏈�  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 鍙戦�佹棩鏈� ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date senddate;
+
+    /**  涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒�  */
+    @Excel(name = " 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� ")
+    private String sendlimitabegin;
+
+    /**  涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒�  */
+    @Excel(name = " 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� ")
+    private String sendlimitaend;
+
+    /**  涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒�  */
+    @Excel(name = " 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� ")
+    private String sendlimitpbegin;
+
+    /**  涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒�  */
+    @Excel(name = " 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� ")
+    private String sendlimitpend;
+
+    /**  鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒�  */
+    @Excel(name = " 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� ")
+    private String sendlimitnbegin;
+
+    /**  鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒�  */
+    @Excel(name = " 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� ")
+    private String sendlimitnend;
+
+    /**  鍙戦�佺姸鎬�  */
+    @Excel(name = " 鍙戦�佺姸鎬� ")
+    private Long sendstate;
+
+    /**  鍙戦�乁UID  */
+    @Excel(name = " 鍙戦�乁UID ")
+    private String senduuid;
+
+    /**  缁撴灉  */
+    @Excel(name = " 缁撴灉 ")
+    private String result;
+
+    /**  瀹屾垚鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 瀹屾垚鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date finishtime;
+
+    /**  鐢ㄦ埛ID  */
+    @Excel(name = " 鐢ㄦ埛ID ")
+    private String userid;
+
+    /**  鐢ㄦ埛鍚�  */
+    @Excel(name = " 鐢ㄦ埛鍚� ")
+    private String username;
+
+    /**  娣诲姞鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 娣诲姞鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date addtime;
+
+    /**    */
+    @Excel(name = "  ")
+    private String outbounduuid;
+
+    /**  灏辫瘖璁板綍缂栧彿  */
+    @Excel(name = " 灏辫瘖璁板綍缂栧彿 ")
+    private Long recordid;
+
+    /**  閲嶆嫧鎬绘暟  */
+    @Excel(name = " 閲嶆嫧鎬绘暟 ")
+    private Long recallcount;
+
+    /**  褰撳墠閲嶆嫧娆℃暟  */
+    @Excel(name = " 褰撳墠閲嶆嫧娆℃暟 ")
+    private Long exrecallcount;
+
+    /**  鎷夊彇鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 鎷夊彇鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date pulltime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long bqsms;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long bhsms;
+
+    /**    */
+    @Excel(name = "  ")
+    private String deptcode;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long labelstatus;
+
+    /**  鍒犻櫎鏍囪  */
+    private String delFlag;
+
+    /**  涓婁紶鏍囪  */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**  涓婁紶鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**  鏈烘瀯ID  */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    public void setCallid(Long callid) 
+    {
+        this.callid = callid;
+    }
+
+    public Long getCallid() 
+    {
+        return callid;
+    }
+    public void setSendname(String sendname) 
+    {
+        this.sendname = sendname;
+    }
+
+    public String getSendname() 
+    {
+        return sendname;
+    }
+    public void setPhone(String phone) 
+    {
+        this.phone = phone;
+    }
+
+    public String getPhone() 
+    {
+        return phone;
+    }
+    public void setSex(String sex) 
+    {
+        this.sex = sex;
+    }
+
+    public String getSex() 
+    {
+        return sex;
+    }
+    public void setAge(Long age) 
+    {
+        this.age = age;
+    }
+
+    public Long getAge() 
+    {
+        return age;
+    }
+    public void setSfzh(String sfzh) 
+    {
+        this.sfzh = sfzh;
+    }
+
+    public String getSfzh() 
+    {
+        return sfzh;
+    }
+    public void setAddr(String addr) 
+    {
+        this.addr = addr;
+    }
+
+    public String getAddr() 
+    {
+        return addr;
+    }
+    public void setSenderdetail(String senderdetail) 
+    {
+        this.senderdetail = senderdetail;
+    }
+
+    public String getSenderdetail() 
+    {
+        return senderdetail;
+    }
+    public void setInserttype(String inserttype) 
+    {
+        this.inserttype = inserttype;
+    }
+
+    public String getInserttype() 
+    {
+        return inserttype;
+    }
+    public void setTaskid(Long taskid) 
+    {
+        this.taskid = taskid;
+    }
+
+    public Long getTaskid() 
+    {
+        return taskid;
+    }
+    public void setTemplateid(String templateid) 
+    {
+        this.templateid = templateid;
+    }
+
+    public String getTemplateid() 
+    {
+        return templateid;
+    }
+    public void setTemplatename(String templatename) 
+    {
+        this.templatename = templatename;
+    }
+
+    public String getTemplatename() 
+    {
+        return templatename;
+    }
+    public void setSenddate(Date senddate) 
+    {
+        this.senddate = senddate;
+    }
+
+    public Date getSenddate() 
+    {
+        return senddate;
+    }
+    public void setSendlimitabegin(String sendlimitabegin) 
+    {
+        this.sendlimitabegin = sendlimitabegin;
+    }
+
+    public String getSendlimitabegin() 
+    {
+        return sendlimitabegin;
+    }
+    public void setSendlimitaend(String sendlimitaend) 
+    {
+        this.sendlimitaend = sendlimitaend;
+    }
+
+    public String getSendlimitaend() 
+    {
+        return sendlimitaend;
+    }
+    public void setSendlimitpbegin(String sendlimitpbegin) 
+    {
+        this.sendlimitpbegin = sendlimitpbegin;
+    }
+
+    public String getSendlimitpbegin() 
+    {
+        return sendlimitpbegin;
+    }
+    public void setSendlimitpend(String sendlimitpend) 
+    {
+        this.sendlimitpend = sendlimitpend;
+    }
+
+    public String getSendlimitpend() 
+    {
+        return sendlimitpend;
+    }
+    public void setSendlimitnbegin(String sendlimitnbegin) 
+    {
+        this.sendlimitnbegin = sendlimitnbegin;
+    }
+
+    public String getSendlimitnbegin() 
+    {
+        return sendlimitnbegin;
+    }
+    public void setSendlimitnend(String sendlimitnend) 
+    {
+        this.sendlimitnend = sendlimitnend;
+    }
+
+    public String getSendlimitnend() 
+    {
+        return sendlimitnend;
+    }
+    public void setSendstate(Long sendstate) 
+    {
+        this.sendstate = sendstate;
+    }
+
+    public Long getSendstate() 
+    {
+        return sendstate;
+    }
+    public void setSenduuid(String senduuid) 
+    {
+        this.senduuid = senduuid;
+    }
+
+    public String getSenduuid() 
+    {
+        return senduuid;
+    }
+    public void setResult(String result) 
+    {
+        this.result = result;
+    }
+
+    public String getResult() 
+    {
+        return result;
+    }
+    public void setFinishtime(Date finishtime) 
+    {
+        this.finishtime = finishtime;
+    }
+
+    public Date getFinishtime() 
+    {
+        return finishtime;
+    }
+    public void setUserid(String userid) 
+    {
+        this.userid = userid;
+    }
+
+    public String getUserid() 
+    {
+        return userid;
+    }
+    public void setUsername(String username) 
+    {
+        this.username = username;
+    }
+
+    public String getUsername() 
+    {
+        return username;
+    }
+
+    public void setOutbounduuid(String outbounduuid) 
+    {
+        this.outbounduuid = outbounduuid;
+    }
+
+    public String getOutbounduuid() 
+    {
+        return outbounduuid;
+    }
+    public void setRecordid(Long recordid) 
+    {
+        this.recordid = recordid;
+    }
+
+    public Long getRecordid() 
+    {
+        return recordid;
+    }
+    public void setRecallcount(Long recallcount) 
+    {
+        this.recallcount = recallcount;
+    }
+
+    public Long getRecallcount() 
+    {
+        return recallcount;
+    }
+    public void setExrecallcount(Long exrecallcount) 
+    {
+        this.exrecallcount = exrecallcount;
+    }
+
+    public Long getExrecallcount() 
+    {
+        return exrecallcount;
+    }
+    public void setPulltime(Date pulltime) 
+    {
+        this.pulltime = pulltime;
+    }
+
+    public Date getPulltime() 
+    {
+        return pulltime;
+    }
+    public void setBqsms(Long bqsms) 
+    {
+        this.bqsms = bqsms;
+    }
+
+    public Long getBqsms() 
+    {
+        return bqsms;
+    }
+    public void setBhsms(Long bhsms) 
+    {
+        this.bhsms = bhsms;
+    }
+
+    public Long getBhsms() 
+    {
+        return bhsms;
+    }
+    public void setDeptcode(String deptcode) 
+    {
+        this.deptcode = deptcode;
+    }
+
+    public String getDeptcode() 
+    {
+        return deptcode;
+    }
+    public void setLabelstatus(Long labelstatus) 
+    {
+        this.labelstatus = labelstatus;
+    }
+
+    public Long getLabelstatus() 
+    {
+        return labelstatus;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setIsupload(Long isupload) 
+    {
+        this.isupload = isupload;
+    }
+
+    public Long getIsupload() 
+    {
+        return isupload;
+    }
+    public void setUploadTime(Date uploadTime) 
+    {
+        this.uploadTime = uploadTime;
+    }
+
+    public Date getUploadTime() 
+    {
+        return uploadTime;
+    }
+    public void setOrgid(String orgid) 
+    {
+        this.orgid = orgid;
+    }
+
+    public String getOrgid() 
+    {
+        return orgid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("callid", getCallid())
+            .append("sendname", getSendname())
+            .append("phone", getPhone())
+            .append("sex", getSex())
+            .append("age", getAge())
+            .append("sfzh", getSfzh())
+            .append("addr", getAddr())
+            .append("senderdetail", getSenderdetail())
+            .append("inserttype", getInserttype())
+            .append("taskid", getTaskid())
+            .append("templateid", getTemplateid())
+            .append("templatename", getTemplatename())
+            .append("senddate", getSenddate())
+            .append("sendlimitabegin", getSendlimitabegin())
+            .append("sendlimitaend", getSendlimitaend())
+            .append("sendlimitpbegin", getSendlimitpbegin())
+            .append("sendlimitpend", getSendlimitpend())
+            .append("sendlimitnbegin", getSendlimitnbegin())
+            .append("sendlimitnend", getSendlimitnend())
+            .append("sendstate", getSendstate())
+            .append("senduuid", getSenduuid())
+            .append("result", getResult())
+            .append("finishtime", getFinishtime())
+            .append("userid", getUserid())
+            .append("username", getUsername())
+            .append("outbounduuid", getOutbounduuid())
+            .append("recordid", getRecordid())
+            .append("recallcount", getRecallcount())
+            .append("exrecallcount", getExrecallcount())
+            .append("pulltime", getPulltime())
+            .append("bqsms", getBqsms())
+            .append("bhsms", getBhsms())
+            .append("deptcode", getDeptcode())
+            .append("labelstatus", getLabelstatus())
+            .append("delFlag", getDelFlag())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("isupload", getIsupload())
+            .append("uploadTime", getUploadTime())
+            .append("orgid", getOrgid())
+            .toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskcalldetail.java b/smartor/src/main/java/com/smartor/domain/IvrTaskcalldetail.java
new file mode 100644
index 0000000..0b1dc3f
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskcalldetail.java
@@ -0,0 +1,534 @@
+package com.smartor.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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_taskcalldetail
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public class IvrTaskcalldetail extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**    */
+    private String calldetailid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String callid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String uuid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String phone;
+
+    /**    */
+    @Excel(name = "  ")
+    private String operate;
+
+    /**    */
+    @Excel(name = "  ")
+    private String displayno;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long inbound;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long incoming;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long assigntime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long starttime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long answertime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long silent;
+
+    /**    */
+    @Excel(name = "  ")
+    private String dtmfKey;
+
+    /**    */
+    @Excel(name = "  ")
+    private String musicpath;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long sentIndex;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long sentBegin;
+
+    /**    */
+    @Excel(name = "  ")
+    private String asrtext;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long beginTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long endTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long sentEnd;
+
+    /**    */
+    @Excel(name = "  ")
+    private String recordpath;
+
+    /**    */
+    @Excel(name = "  ")
+    private String recordurl;
+
+    /**    */
+    @Excel(name = "  ")
+    private String templateid;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long templatequestionnum;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long switchid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String questiontext;
+
+    /**    */
+    @Excel(name = "  ")
+    private String questionvoice;
+
+    /**    */
+    @Excel(name = "  ")
+    private String categoryname;
+
+    /**    */
+    @Excel(name = "  ")
+    private String targetoptions;
+
+    /**    */
+    @Excel(name = "  ")
+    private String targetvalue;
+
+    /**    */
+    @Excel(name = "  ")
+    private String matchedtext;
+
+    /**    */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "  ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date addtime;
+
+    /**  涓婁紶鏍囪  */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**  涓婁紶鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**  鏈烘瀯ID  */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    /**  鍒犻櫎鏍囪  */
+    private String delFlag;
+
+    public void setCalldetailid(String calldetailid) 
+    {
+        this.calldetailid = calldetailid;
+    }
+
+    public String getCalldetailid() 
+    {
+        return calldetailid;
+    }
+    public void setCallid(String callid) 
+    {
+        this.callid = callid;
+    }
+
+    public String getCallid() 
+    {
+        return callid;
+    }
+    public void setUuid(String uuid) 
+    {
+        this.uuid = uuid;
+    }
+
+    public String getUuid() 
+    {
+        return uuid;
+    }
+    public void setPhone(String phone) 
+    {
+        this.phone = phone;
+    }
+
+    public String getPhone() 
+    {
+        return phone;
+    }
+    public void setOperate(String operate) 
+    {
+        this.operate = operate;
+    }
+
+    public String getOperate() 
+    {
+        return operate;
+    }
+    public void setDisplayno(String displayno) 
+    {
+        this.displayno = displayno;
+    }
+
+    public String getDisplayno() 
+    {
+        return displayno;
+    }
+    public void setInbound(Long inbound) 
+    {
+        this.inbound = inbound;
+    }
+
+    public Long getInbound() 
+    {
+        return inbound;
+    }
+    public void setIncoming(Long incoming) 
+    {
+        this.incoming = incoming;
+    }
+
+    public Long getIncoming() 
+    {
+        return incoming;
+    }
+    public void setAssigntime(Long assigntime) 
+    {
+        this.assigntime = assigntime;
+    }
+
+    public Long getAssigntime() 
+    {
+        return assigntime;
+    }
+    public void setStarttime(Long starttime) 
+    {
+        this.starttime = starttime;
+    }
+
+    public Long getStarttime() 
+    {
+        return starttime;
+    }
+    public void setAnswertime(Long answertime) 
+    {
+        this.answertime = answertime;
+    }
+
+    public Long getAnswertime() 
+    {
+        return answertime;
+    }
+    public void setSilent(Long silent) 
+    {
+        this.silent = silent;
+    }
+
+    public Long getSilent() 
+    {
+        return silent;
+    }
+    public void setDtmfKey(String dtmfKey) 
+    {
+        this.dtmfKey = dtmfKey;
+    }
+
+    public String getDtmfKey() 
+    {
+        return dtmfKey;
+    }
+    public void setMusicpath(String musicpath) 
+    {
+        this.musicpath = musicpath;
+    }
+
+    public String getMusicpath() 
+    {
+        return musicpath;
+    }
+    public void setSentIndex(Long sentIndex) 
+    {
+        this.sentIndex = sentIndex;
+    }
+
+    public Long getSentIndex() 
+    {
+        return sentIndex;
+    }
+    public void setSentBegin(Long sentBegin) 
+    {
+        this.sentBegin = sentBegin;
+    }
+
+    public Long getSentBegin() 
+    {
+        return sentBegin;
+    }
+    public void setAsrtext(String asrtext) 
+    {
+        this.asrtext = asrtext;
+    }
+
+    public String getAsrtext() 
+    {
+        return asrtext;
+    }
+    public void setBeginTime(Long beginTime) 
+    {
+        this.beginTime = beginTime;
+    }
+
+    public Long getBeginTime() 
+    {
+        return beginTime;
+    }
+    public void setEndTime(Long endTime) 
+    {
+        this.endTime = endTime;
+    }
+
+    public Long getEndTime() 
+    {
+        return endTime;
+    }
+    public void setSentEnd(Long sentEnd) 
+    {
+        this.sentEnd = sentEnd;
+    }
+
+    public Long getSentEnd() 
+    {
+        return sentEnd;
+    }
+    public void setRecordpath(String recordpath) 
+    {
+        this.recordpath = recordpath;
+    }
+
+    public String getRecordpath() 
+    {
+        return recordpath;
+    }
+    public void setRecordurl(String recordurl) 
+    {
+        this.recordurl = recordurl;
+    }
+
+    public String getRecordurl() 
+    {
+        return recordurl;
+    }
+    public void setTemplateid(String templateid) 
+    {
+        this.templateid = templateid;
+    }
+
+    public String getTemplateid() 
+    {
+        return templateid;
+    }
+    public void setTemplatequestionnum(Long templatequestionnum) 
+    {
+        this.templatequestionnum = templatequestionnum;
+    }
+
+    public Long getTemplatequestionnum() 
+    {
+        return templatequestionnum;
+    }
+    public void setSwitchid(Long switchid) 
+    {
+        this.switchid = switchid;
+    }
+
+    public Long getSwitchid() 
+    {
+        return switchid;
+    }
+    public void setQuestiontext(String questiontext) 
+    {
+        this.questiontext = questiontext;
+    }
+
+    public String getQuestiontext() 
+    {
+        return questiontext;
+    }
+    public void setQuestionvoice(String questionvoice) 
+    {
+        this.questionvoice = questionvoice;
+    }
+
+    public String getQuestionvoice() 
+    {
+        return questionvoice;
+    }
+    public void setCategoryname(String categoryname) 
+    {
+        this.categoryname = categoryname;
+    }
+
+    public String getCategoryname() 
+    {
+        return categoryname;
+    }
+    public void setTargetoptions(String targetoptions) 
+    {
+        this.targetoptions = targetoptions;
+    }
+
+    public String getTargetoptions() 
+    {
+        return targetoptions;
+    }
+    public void setTargetvalue(String targetvalue) 
+    {
+        this.targetvalue = targetvalue;
+    }
+
+    public String getTargetvalue() 
+    {
+        return targetvalue;
+    }
+    public void setMatchedtext(String matchedtext) 
+    {
+        this.matchedtext = matchedtext;
+    }
+
+    public String getMatchedtext() 
+    {
+        return matchedtext;
+    }
+    public void setAddtime(Date addtime) 
+    {
+        this.addtime = addtime;
+    }
+
+    public Date getAddtime() 
+    {
+        return addtime;
+    }
+    public void setIsupload(Long isupload) 
+    {
+        this.isupload = isupload;
+    }
+
+    public Long getIsupload() 
+    {
+        return isupload;
+    }
+    public void setUploadTime(Date uploadTime) 
+    {
+        this.uploadTime = uploadTime;
+    }
+
+    public Date getUploadTime() 
+    {
+        return uploadTime;
+    }
+    public void setOrgid(String orgid) 
+    {
+        this.orgid = orgid;
+    }
+
+    public String getOrgid() 
+    {
+        return orgid;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("calldetailid", getCalldetailid())
+            .append("callid", getCallid())
+            .append("uuid", getUuid())
+            .append("phone", getPhone())
+            .append("operate", getOperate())
+            .append("displayno", getDisplayno())
+            .append("inbound", getInbound())
+            .append("incoming", getIncoming())
+            .append("assigntime", getAssigntime())
+            .append("starttime", getStarttime())
+            .append("answertime", getAnswertime())
+            .append("silent", getSilent())
+            .append("dtmfKey", getDtmfKey())
+            .append("musicpath", getMusicpath())
+            .append("sentIndex", getSentIndex())
+            .append("sentBegin", getSentBegin())
+            .append("asrtext", getAsrtext())
+            .append("beginTime", getBeginTime())
+            .append("endTime", getEndTime())
+            .append("sentEnd", getSentEnd())
+            .append("recordpath", getRecordpath())
+            .append("recordurl", getRecordurl())
+            .append("templateid", getTemplateid())
+            .append("templatequestionnum", getTemplatequestionnum())
+            .append("switchid", getSwitchid())
+            .append("questiontext", getQuestiontext())
+            .append("questionvoice", getQuestionvoice())
+            .append("categoryname", getCategoryname())
+            .append("targetoptions", getTargetoptions())
+            .append("targetvalue", getTargetvalue())
+            .append("matchedtext", getMatchedtext())
+            .append("addtime", getAddtime())
+            .append("isupload", getIsupload())
+            .append("uploadTime", getUploadTime())
+            .append("orgid", getOrgid())
+            .append("createTime", getCreateTime())
+            .append("delFlag", getDelFlag())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskcallrecord.java b/smartor/src/main/java/com/smartor/domain/IvrTaskcallrecord.java
new file mode 100644
index 0000000..b66ca05
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskcallrecord.java
@@ -0,0 +1,449 @@
+package com.smartor.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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_taskcallrecord
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public class IvrTaskcallrecord extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**    */
+    private String uuid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String displayno;
+
+    /**    */
+    @Excel(name = "  ")
+    private String phone;
+
+    /**    */
+    @Excel(name = "  ")
+    private String taskid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String extension;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long inbound;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long direct;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long answered;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long assignTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long startTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long answerTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long hangupTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long endTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private String recordPath;
+
+    /**    */
+    @Excel(name = "  ")
+    private String recordUrl;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long hangupSipcode;
+
+    /**    */
+    @Excel(name = "  ")
+    private String hangupCause;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long transfered;
+
+    /**    */
+    @Excel(name = "  ")
+    private String transUuid;
+
+    /**    */
+    @Excel(name = "  ")
+    private String transPhone;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long transAnswered;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long transStartTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long transAnswerTime;
+
+    /**    */
+    @Excel(name = "  ")
+    private String earlyAsrtext;
+
+    /**    */
+    @Excel(name = "  ")
+    private String earlyPath;
+
+    /**    */
+    @Excel(name = "  ")
+    private String earlyUrl;
+
+    /**  鍒犻櫎鏍囪  */
+    private String delFlag;
+
+    /**  涓婁紶鏍囪  */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**  涓婁紶鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**  鏈烘瀯ID  */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    public void setUuid(String uuid) 
+    {
+        this.uuid = uuid;
+    }
+
+    public String getUuid() 
+    {
+        return uuid;
+    }
+    public void setDisplayno(String displayno) 
+    {
+        this.displayno = displayno;
+    }
+
+    public String getDisplayno() 
+    {
+        return displayno;
+    }
+    public void setPhone(String phone) 
+    {
+        this.phone = phone;
+    }
+
+    public String getPhone() 
+    {
+        return phone;
+    }
+    public void setTaskid(String taskid) 
+    {
+        this.taskid = taskid;
+    }
+
+    public String getTaskid() 
+    {
+        return taskid;
+    }
+    public void setExtension(String extension) 
+    {
+        this.extension = extension;
+    }
+
+    public String getExtension() 
+    {
+        return extension;
+    }
+    public void setInbound(Long inbound) 
+    {
+        this.inbound = inbound;
+    }
+
+    public Long getInbound() 
+    {
+        return inbound;
+    }
+    public void setDirect(Long direct) 
+    {
+        this.direct = direct;
+    }
+
+    public Long getDirect() 
+    {
+        return direct;
+    }
+    public void setAnswered(Long answered) 
+    {
+        this.answered = answered;
+    }
+
+    public Long getAnswered() 
+    {
+        return answered;
+    }
+    public void setAssignTime(Long assignTime) 
+    {
+        this.assignTime = assignTime;
+    }
+
+    public Long getAssignTime() 
+    {
+        return assignTime;
+    }
+    public void setStartTime(Long startTime) 
+    {
+        this.startTime = startTime;
+    }
+
+    public Long getStartTime() 
+    {
+        return startTime;
+    }
+    public void setAnswerTime(Long answerTime) 
+    {
+        this.answerTime = answerTime;
+    }
+
+    public Long getAnswerTime() 
+    {
+        return answerTime;
+    }
+    public void setHangupTime(Long hangupTime) 
+    {
+        this.hangupTime = hangupTime;
+    }
+
+    public Long getHangupTime() 
+    {
+        return hangupTime;
+    }
+    public void setEndTime(Long endTime) 
+    {
+        this.endTime = endTime;
+    }
+
+    public Long getEndTime() 
+    {
+        return endTime;
+    }
+    public void setRecordPath(String recordPath) 
+    {
+        this.recordPath = recordPath;
+    }
+
+    public String getRecordPath() 
+    {
+        return recordPath;
+    }
+    public void setRecordUrl(String recordUrl) 
+    {
+        this.recordUrl = recordUrl;
+    }
+
+    public String getRecordUrl() 
+    {
+        return recordUrl;
+    }
+    public void setHangupSipcode(Long hangupSipcode) 
+    {
+        this.hangupSipcode = hangupSipcode;
+    }
+
+    public Long getHangupSipcode() 
+    {
+        return hangupSipcode;
+    }
+    public void setHangupCause(String hangupCause) 
+    {
+        this.hangupCause = hangupCause;
+    }
+
+    public String getHangupCause() 
+    {
+        return hangupCause;
+    }
+    public void setTransfered(Long transfered) 
+    {
+        this.transfered = transfered;
+    }
+
+    public Long getTransfered() 
+    {
+        return transfered;
+    }
+    public void setTransUuid(String transUuid) 
+    {
+        this.transUuid = transUuid;
+    }
+
+    public String getTransUuid() 
+    {
+        return transUuid;
+    }
+    public void setTransPhone(String transPhone) 
+    {
+        this.transPhone = transPhone;
+    }
+
+    public String getTransPhone() 
+    {
+        return transPhone;
+    }
+    public void setTransAnswered(Long transAnswered) 
+    {
+        this.transAnswered = transAnswered;
+    }
+
+    public Long getTransAnswered() 
+    {
+        return transAnswered;
+    }
+    public void setTransStartTime(Long transStartTime) 
+    {
+        this.transStartTime = transStartTime;
+    }
+
+    public Long getTransStartTime() 
+    {
+        return transStartTime;
+    }
+    public void setTransAnswerTime(Long transAnswerTime) 
+    {
+        this.transAnswerTime = transAnswerTime;
+    }
+
+    public Long getTransAnswerTime() 
+    {
+        return transAnswerTime;
+    }
+    public void setEarlyAsrtext(String earlyAsrtext) 
+    {
+        this.earlyAsrtext = earlyAsrtext;
+    }
+
+    public String getEarlyAsrtext() 
+    {
+        return earlyAsrtext;
+    }
+    public void setEarlyPath(String earlyPath) 
+    {
+        this.earlyPath = earlyPath;
+    }
+
+    public String getEarlyPath() 
+    {
+        return earlyPath;
+    }
+    public void setEarlyUrl(String earlyUrl) 
+    {
+        this.earlyUrl = earlyUrl;
+    }
+
+    public String getEarlyUrl() 
+    {
+        return earlyUrl;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setIsupload(Long isupload) 
+    {
+        this.isupload = isupload;
+    }
+
+    public Long getIsupload() 
+    {
+        return isupload;
+    }
+    public void setUploadTime(Date uploadTime) 
+    {
+        this.uploadTime = uploadTime;
+    }
+
+    public Date getUploadTime() 
+    {
+        return uploadTime;
+    }
+    public void setOrgid(String orgid) 
+    {
+        this.orgid = orgid;
+    }
+
+    public String getOrgid() 
+    {
+        return orgid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("uuid", getUuid())
+            .append("displayno", getDisplayno())
+            .append("phone", getPhone())
+            .append("taskid", getTaskid())
+            .append("extension", getExtension())
+            .append("inbound", getInbound())
+            .append("direct", getDirect())
+            .append("answered", getAnswered())
+            .append("assignTime", getAssignTime())
+            .append("startTime", getStartTime())
+            .append("answerTime", getAnswerTime())
+            .append("hangupTime", getHangupTime())
+            .append("endTime", getEndTime())
+            .append("recordPath", getRecordPath())
+            .append("recordUrl", getRecordUrl())
+            .append("hangupSipcode", getHangupSipcode())
+            .append("hangupCause", getHangupCause())
+            .append("transfered", getTransfered())
+            .append("transUuid", getTransUuid())
+            .append("transPhone", getTransPhone())
+            .append("transAnswered", getTransAnswered())
+            .append("transStartTime", getTransStartTime())
+            .append("transAnswerTime", getTransAnswerTime())
+            .append("earlyAsrtext", getEarlyAsrtext())
+            .append("earlyPath", getEarlyPath())
+            .append("earlyUrl", getEarlyUrl())
+            .append("delFlag", getDelFlag())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("isupload", getIsupload())
+            .append("uploadTime", getUploadTime())
+            .append("orgid", getOrgid())
+            .toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTasksms.java b/smartor/src/main/java/com/smartor/domain/IvrTasksms.java
new file mode 100644
index 0000000..1b3af08
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrTasksms.java
@@ -0,0 +1,225 @@
+package com.smartor.domain;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+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_tasksms
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public class IvrTasksms extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /**    */
+    private Long id;
+
+    /**  浠诲姟缂栧彿  */
+    @Excel(name = " 浠诲姟缂栧彿 ")
+    private Long taskid;
+
+    /**  绫诲瀷0.涓嶄娇鐢� 1.浠诲姟鍓� 2.浠诲姟鍚�  */
+    @Excel(name = " 绫诲瀷0.涓嶄娇鐢� 1.浠诲姟鍓� 2.浠诲姟鍚� ")
+    private Long type;
+
+    /**  鐭俊妯℃澘涓婚敭  */
+    @Excel(name = " 鐭俊妯℃澘涓婚敭 ")
+    private Long smstemplateid;
+
+    /**  鐢佃瘽鐘舵�佷富閿�  */
+    @Excel(name = " 鐢佃瘽鐘舵�佷富閿� ")
+    private String phonestatusid;
+
+    /**  鐭俊妯℃澘鍚嶇О  */
+    @Excel(name = " 鐭俊妯℃澘鍚嶇О ")
+    private String smstemplatename;
+
+    /**  鐢佃瘽鐘舵�佸悕绉�  */
+    @Excel(name = " 鐢佃瘽鐘舵�佸悕绉� ")
+    private String phonestatusname;
+
+    /**    */
+    @Excel(name = "  ")
+    private Long isdel;
+
+    /**    */
+    @Excel(name = "  ")
+    private String content;
+
+    /**  鏍囩缂栧彿  */
+    @Excel(name = " 鏍囩缂栧彿 ")
+    private Long tagid;
+
+    /**  鍒犻櫎鏍囪  */
+    private String delFlag;
+
+    /**  涓婁紶鏍囪  */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**  涓婁紶鏃堕棿  */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**  鏈烘瀯ID  */
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setTaskid(Long taskid) 
+    {
+        this.taskid = taskid;
+    }
+
+    public Long getTaskid() 
+    {
+        return taskid;
+    }
+    public void setType(Long type) 
+    {
+        this.type = type;
+    }
+
+    public Long getType() 
+    {
+        return type;
+    }
+    public void setSmstemplateid(Long smstemplateid) 
+    {
+        this.smstemplateid = smstemplateid;
+    }
+
+    public Long getSmstemplateid() 
+    {
+        return smstemplateid;
+    }
+    public void setPhonestatusid(String phonestatusid) 
+    {
+        this.phonestatusid = phonestatusid;
+    }
+
+    public String getPhonestatusid() 
+    {
+        return phonestatusid;
+    }
+    public void setSmstemplatename(String smstemplatename) 
+    {
+        this.smstemplatename = smstemplatename;
+    }
+
+    public String getSmstemplatename() 
+    {
+        return smstemplatename;
+    }
+    public void setPhonestatusname(String phonestatusname) 
+    {
+        this.phonestatusname = phonestatusname;
+    }
+
+    public String getPhonestatusname() 
+    {
+        return phonestatusname;
+    }
+    public void setIsdel(Long isdel) 
+    {
+        this.isdel = isdel;
+    }
+
+    public Long getIsdel() 
+    {
+        return isdel;
+    }
+    public void setContent(String content) 
+    {
+        this.content = content;
+    }
+
+    public String getContent() 
+    {
+        return content;
+    }
+    public void setTagid(Long tagid) 
+    {
+        this.tagid = tagid;
+    }
+
+    public Long getTagid() 
+    {
+        return tagid;
+    }
+    public void setDelFlag(String delFlag) 
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag() 
+    {
+        return delFlag;
+    }
+    public void setIsupload(Long isupload) 
+    {
+        this.isupload = isupload;
+    }
+
+    public Long getIsupload() 
+    {
+        return isupload;
+    }
+    public void setUploadTime(Date uploadTime) 
+    {
+        this.uploadTime = uploadTime;
+    }
+
+    public Date getUploadTime() 
+    {
+        return uploadTime;
+    }
+    public void setOrgid(String orgid) 
+    {
+        this.orgid = orgid;
+    }
+
+    public String getOrgid() 
+    {
+        return orgid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("taskid", getTaskid())
+            .append("type", getType())
+            .append("smstemplateid", getSmstemplateid())
+            .append("phonestatusid", getPhonestatusid())
+            .append("smstemplatename", getSmstemplatename())
+            .append("phonestatusname", getPhonestatusname())
+            .append("isdel", getIsdel())
+            .append("content", getContent())
+            .append("tagid", getTagid())
+            .append("delFlag", getDelFlag())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("isupload", getIsupload())
+            .append("uploadTime", getUploadTime())
+            .append("orgid", getOrgid())
+            .toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java
new file mode 100644
index 0000000..64cb9d9
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskMapper.java
@@ -0,0 +1,61 @@
+package com.smartor.mapper;
+
+import java.util.List;
+import com.smartor.domain.IvrTask;
+
+/**
+ * 璇煶浠诲姟Mapper鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IvrTaskMapper 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 璇煶浠诲姟
+     */
+    public IvrTask selectIvrTaskByTaskid(Long taskid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍒楄〃
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 璇煶浠诲姟闆嗗悎
+     */
+    public List<IvrTask> selectIvrTaskList(IvrTask ivrTask);
+
+    /**
+     * 鏂板璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    public int insertIvrTask(IvrTask ivrTask);
+
+    /**
+     * 淇敼璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    public int updateIvrTask(IvrTask ivrTask);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskByTaskid(Long taskid);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟
+     * 
+     * @param taskids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskByTaskids(Long[] taskids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskcallMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallMapper.java
new file mode 100644
index 0000000..11a4b4b
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallMapper.java
@@ -0,0 +1,61 @@
+package com.smartor.mapper;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcall;
+
+/**
+ * 璇煶浠诲姟鍛煎彨Mapper鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IvrTaskcallMapper 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨
+     */
+    public IvrTaskcall selectIvrTaskcallByCallid(Long callid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 璇煶浠诲姟鍛煎彨闆嗗悎
+     */
+    public List<IvrTaskcall> selectIvrTaskcallList(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcall(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcall(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallByCallid(Long callid);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨
+     * 
+     * @param callids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallByCallids(Long[] callids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java
new file mode 100644
index 0000000..e7b5154
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskcalldetailMapper.java
@@ -0,0 +1,61 @@
+package com.smartor.mapper;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcalldetail;
+
+/**
+ * 璇煶浠诲姟鍛煎彨鏄庣粏Mapper鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IvrTaskcalldetailMapper 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    public IvrTaskcalldetail selectIvrTaskcalldetailByCalldetailid(String calldetailid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏闆嗗悎
+     */
+    public List<IvrTaskcalldetail> selectIvrTaskcalldetailList(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcalldetailByCalldetailid(String calldetailid);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcalldetailByCalldetailids(String[] calldetailids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java
new file mode 100644
index 0000000..a41f207
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTaskcallrecordMapper.java
@@ -0,0 +1,61 @@
+package com.smartor.mapper;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcallrecord;
+
+/**
+ * 璇煶浠诲姟鍛煎彨璁板綍Mapper鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IvrTaskcallrecordMapper 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨璁板綍
+     */
+    public IvrTaskcallrecord selectIvrTaskcallrecordByUuid(String uuid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 璇煶浠诲姟鍛煎彨璁板綍闆嗗悎
+     */
+    public List<IvrTaskcallrecord> selectIvrTaskcallrecordList(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallrecordByUuid(String uuid);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallrecordByUuids(String[] uuids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java
new file mode 100644
index 0000000..e8d4d19
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrTasksmsMapper.java
@@ -0,0 +1,61 @@
+package com.smartor.mapper;
+
+import java.util.List;
+import com.smartor.domain.IvrTasksms;
+
+/**
+ * 璇煶浠诲姟鐭俊Mapper鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IvrTasksmsMapper 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 璇煶浠诲姟鐭俊
+     */
+    public IvrTasksms selectIvrTasksmsById(Long id);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 璇煶浠诲姟鐭俊闆嗗悎
+     */
+    public List<IvrTasksms> selectIvrTasksmsList(IvrTasksms ivrTasksms);
+
+    /**
+     * 鏂板璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    public int insertIvrTasksms(IvrTasksms ivrTasksms);
+
+    /**
+     * 淇敼璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    public int updateIvrTasksms(IvrTasksms ivrTasksms);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鐭俊
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTasksmsById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鐭俊
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTasksmsByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskService.java
new file mode 100644
index 0000000..1d7cc13
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+import com.smartor.domain.IvrTask;
+
+/**
+ * 璇煶浠诲姟Service鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IIvrTaskService 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 璇煶浠诲姟
+     */
+    public IvrTask selectIvrTaskByTaskid(Long taskid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍒楄〃
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 璇煶浠诲姟闆嗗悎
+     */
+    public List<IvrTask> selectIvrTaskList(IvrTask ivrTask);
+
+    /**
+     * 鏂板璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    public int insertIvrTask(IvrTask ivrTask);
+
+    /**
+     * 淇敼璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    public int updateIvrTask(IvrTask ivrTask);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟
+     * 
+     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskByTaskids(Long[] taskids);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟淇℃伅
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskByTaskid(Long taskid);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskcallService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskcallService.java
new file mode 100644
index 0000000..1a08897
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskcallService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcall;
+
+/**
+ * 璇煶浠诲姟鍛煎彨Service鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IIvrTaskcallService 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨
+     */
+    public IvrTaskcall selectIvrTaskcallByCallid(Long callid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 璇煶浠诲姟鍛煎彨闆嗗悎
+     */
+    public List<IvrTaskcall> selectIvrTaskcallList(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcall(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcall(IvrTaskcall ivrTaskcall);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨
+     * 
+     * @param callids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallByCallids(Long[] callids);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨淇℃伅
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallByCallid(Long callid);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java
new file mode 100644
index 0000000..7214ca8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskcalldetailService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcalldetail;
+
+/**
+ * 璇煶浠诲姟鍛煎彨鏄庣粏Service鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IIvrTaskcalldetailService 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    public IvrTaskcalldetail selectIvrTaskcalldetailByCalldetailid(String calldetailid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏闆嗗悎
+     */
+    public List<IvrTaskcalldetail> selectIvrTaskcalldetailList(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcalldetailByCalldetailids(String[] calldetailids);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏淇℃伅
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcalldetailByCalldetailid(String calldetailid);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskcallrecordService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskcallrecordService.java
new file mode 100644
index 0000000..dd02d16
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskcallrecordService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+import com.smartor.domain.IvrTaskcallrecord;
+
+/**
+ * 璇煶浠诲姟鍛煎彨璁板綍Service鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IIvrTaskcallrecordService 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨璁板綍
+     */
+    public IvrTaskcallrecord selectIvrTaskcallrecordByUuid(String uuid);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 璇煶浠诲姟鍛煎彨璁板綍闆嗗悎
+     */
+    public List<IvrTaskcallrecord> selectIvrTaskcallrecordList(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    public int insertIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    public int updateIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨璁板綍涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallrecordByUuids(String[] uuids);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍淇℃伅
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTaskcallrecordByUuid(String uuid);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTasksmsService.java b/smartor/src/main/java/com/smartor/service/IIvrTasksmsService.java
new file mode 100644
index 0000000..139589d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrTasksmsService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+import com.smartor.domain.IvrTasksms;
+
+/**
+ * 璇煶浠诲姟鐭俊Service鎺ュ彛
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+public interface IIvrTasksmsService 
+{
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 璇煶浠诲姟鐭俊
+     */
+    public IvrTasksms selectIvrTasksmsById(Long id);
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 璇煶浠诲姟鐭俊闆嗗悎
+     */
+    public List<IvrTasksms> selectIvrTasksmsList(IvrTasksms ivrTasksms);
+
+    /**
+     * 鏂板璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    public int insertIvrTasksms(IvrTasksms ivrTasksms);
+
+    /**
+     * 淇敼璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    public int updateIvrTasksms(IvrTasksms ivrTasksms);
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鐭俊
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鐭俊涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrTasksmsByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鐭俊淇℃伅
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrTasksmsById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
new file mode 100644
index 0000000..1001557
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.smartor.mapper.IvrTaskMapper;
+import com.smartor.domain.IvrTask;
+import com.smartor.service.IIvrTaskService;
+
+/**
+ * 璇煶浠诲姟Service涓氬姟灞傚鐞�
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Service
+public class IvrTaskServiceImpl implements IIvrTaskService 
+{
+    @Autowired
+    private IvrTaskMapper ivrTaskMapper;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 璇煶浠诲姟
+     */
+    @Override
+    public IvrTask selectIvrTaskByTaskid(Long taskid)
+    {
+        return ivrTaskMapper.selectIvrTaskByTaskid(taskid);
+    }
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍒楄〃
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 璇煶浠诲姟
+     */
+    @Override
+    public List<IvrTask> selectIvrTaskList(IvrTask ivrTask)
+    {
+        return ivrTaskMapper.selectIvrTaskList(ivrTask);
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTask(IvrTask ivrTask)
+    {
+        ivrTask.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskMapper.insertIvrTask(ivrTask);
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟
+     * 
+     * @param ivrTask 璇煶浠诲姟
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTask(IvrTask ivrTask)
+    {
+        ivrTask.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskMapper.updateIvrTask(ivrTask);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟
+     * 
+     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskByTaskids(Long[] taskids)
+    {
+        return ivrTaskMapper.deleteIvrTaskByTaskids(taskids);
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟淇℃伅
+     * 
+     * @param taskid 璇煶浠诲姟涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskByTaskid(Long taskid)
+    {
+        return ivrTaskMapper.deleteIvrTaskByTaskid(taskid);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallServiceImpl.java
new file mode 100644
index 0000000..3fd2bb2
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.smartor.mapper.IvrTaskcallMapper;
+import com.smartor.domain.IvrTaskcall;
+import com.smartor.service.IIvrTaskcallService;
+
+/**
+ * 璇煶浠诲姟鍛煎彨Service涓氬姟灞傚鐞�
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Service
+public class IvrTaskcallServiceImpl implements IIvrTaskcallService 
+{
+    @Autowired
+    private IvrTaskcallMapper ivrTaskcallMapper;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨
+     */
+    @Override
+    public IvrTaskcall selectIvrTaskcallByCallid(Long callid)
+    {
+        return ivrTaskcallMapper.selectIvrTaskcallByCallid(callid);
+    }
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鍒楄〃
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 璇煶浠诲姟鍛煎彨
+     */
+    @Override
+    public List<IvrTaskcall> selectIvrTaskcallList(IvrTaskcall ivrTaskcall)
+    {
+        return ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall);
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskcall(IvrTaskcall ivrTaskcall)
+    {
+        ivrTaskcall.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskcallMapper.insertIvrTaskcall(ivrTaskcall);
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨
+     * 
+     * @param ivrTaskcall 璇煶浠诲姟鍛煎彨
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskcall(IvrTaskcall ivrTaskcall)
+    {
+        ivrTaskcall.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨
+     * 
+     * @param callids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcallByCallids(Long[] callids)
+    {
+        return ivrTaskcallMapper.deleteIvrTaskcallByCallids(callids);
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨淇℃伅
+     * 
+     * @param callid 璇煶浠诲姟鍛煎彨涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcallByCallid(Long callid)
+    {
+        return ivrTaskcallMapper.deleteIvrTaskcallByCallid(callid);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java
new file mode 100644
index 0000000..6f27fa5
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcalldetailServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.smartor.mapper.IvrTaskcalldetailMapper;
+import com.smartor.domain.IvrTaskcalldetail;
+import com.smartor.service.IIvrTaskcalldetailService;
+
+/**
+ * 璇煶浠诲姟鍛煎彨鏄庣粏Service涓氬姟灞傚鐞�
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Service
+public class IvrTaskcalldetailServiceImpl implements IIvrTaskcalldetailService 
+{
+    @Autowired
+    private IvrTaskcalldetailMapper ivrTaskcalldetailMapper;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    @Override
+    public IvrTaskcalldetail selectIvrTaskcalldetailByCalldetailid(String calldetailid)
+    {
+        return ivrTaskcalldetailMapper.selectIvrTaskcalldetailByCalldetailid(calldetailid);
+    }
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨鏄庣粏鍒楄〃
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 璇煶浠诲姟鍛煎彨鏄庣粏
+     */
+    @Override
+    public List<IvrTaskcalldetail> selectIvrTaskcalldetailList(IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        return ivrTaskcalldetailMapper.selectIvrTaskcalldetailList(ivrTaskcalldetail);
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        ivrTaskcalldetail.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskcalldetailMapper.insertIvrTaskcalldetail(ivrTaskcalldetail);
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param ivrTaskcalldetail 璇煶浠诲姟鍛煎彨鏄庣粏
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskcalldetail(IvrTaskcalldetail ivrTaskcalldetail)
+    {
+        ivrTaskcalldetail.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskcalldetailMapper.updateIvrTaskcalldetail(ivrTaskcalldetail);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏
+     * 
+     * @param calldetailids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcalldetailByCalldetailids(String[] calldetailids)
+    {
+        return ivrTaskcalldetailMapper.deleteIvrTaskcalldetailByCalldetailids(calldetailids);
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨鏄庣粏淇℃伅
+     * 
+     * @param calldetailid 璇煶浠诲姟鍛煎彨鏄庣粏涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcalldetailByCalldetailid(String calldetailid)
+    {
+        return ivrTaskcalldetailMapper.deleteIvrTaskcalldetailByCalldetailid(calldetailid);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallrecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallrecordServiceImpl.java
new file mode 100644
index 0000000..ae0a8c7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskcallrecordServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.smartor.mapper.IvrTaskcallrecordMapper;
+import com.smartor.domain.IvrTaskcallrecord;
+import com.smartor.service.IIvrTaskcallrecordService;
+
+/**
+ * 璇煶浠诲姟鍛煎彨璁板綍Service涓氬姟灞傚鐞�
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Service
+public class IvrTaskcallrecordServiceImpl implements IIvrTaskcallrecordService 
+{
+    @Autowired
+    private IvrTaskcallrecordMapper ivrTaskcallrecordMapper;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 璇煶浠诲姟鍛煎彨璁板綍
+     */
+    @Override
+    public IvrTaskcallrecord selectIvrTaskcallrecordByUuid(String uuid)
+    {
+        return ivrTaskcallrecordMapper.selectIvrTaskcallrecordByUuid(uuid);
+    }
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鍛煎彨璁板綍鍒楄〃
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 璇煶浠诲姟鍛煎彨璁板綍
+     */
+    @Override
+    public List<IvrTaskcallrecord> selectIvrTaskcallrecordList(IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        return ivrTaskcallrecordMapper.selectIvrTaskcallrecordList(ivrTaskcallrecord);
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        ivrTaskcallrecord.setCreateTime(DateUtils.getNowDate());
+        return ivrTaskcallrecordMapper.insertIvrTaskcallrecord(ivrTaskcallrecord);
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param ivrTaskcallrecord 璇煶浠诲姟鍛煎彨璁板綍
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTaskcallrecord(IvrTaskcallrecord ivrTaskcallrecord)
+    {
+        ivrTaskcallrecord.setUpdateTime(DateUtils.getNowDate());
+        return ivrTaskcallrecordMapper.updateIvrTaskcallrecord(ivrTaskcallrecord);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍
+     * 
+     * @param uuids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcallrecordByUuids(String[] uuids)
+    {
+        return ivrTaskcallrecordMapper.deleteIvrTaskcallrecordByUuids(uuids);
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鍛煎彨璁板綍淇℃伅
+     * 
+     * @param uuid 璇煶浠诲姟鍛煎彨璁板綍涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTaskcallrecordByUuid(String uuid)
+    {
+        return ivrTaskcallrecordMapper.deleteIvrTaskcallrecordByUuid(uuid);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTasksmsServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTasksmsServiceImpl.java
new file mode 100644
index 0000000..c313746
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTasksmsServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.smartor.mapper.IvrTasksmsMapper;
+import com.smartor.domain.IvrTasksms;
+import com.smartor.service.IIvrTasksmsService;
+
+/**
+ * 璇煶浠诲姟鐭俊Service涓氬姟灞傚鐞�
+ * 
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Service
+public class IvrTasksmsServiceImpl implements IIvrTasksmsService 
+{
+    @Autowired
+    private IvrTasksmsMapper ivrTasksmsMapper;
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 璇煶浠诲姟鐭俊
+     */
+    @Override
+    public IvrTasksms selectIvrTasksmsById(Long id)
+    {
+        return ivrTasksmsMapper.selectIvrTasksmsById(id);
+    }
+
+    /**
+     * 鏌ヨ璇煶浠诲姟鐭俊鍒楄〃
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 璇煶浠诲姟鐭俊
+     */
+    @Override
+    public List<IvrTasksms> selectIvrTasksmsList(IvrTasksms ivrTasksms)
+    {
+        return ivrTasksmsMapper.selectIvrTasksmsList(ivrTasksms);
+    }
+
+    /**
+     * 鏂板璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrTasksms(IvrTasksms ivrTasksms)
+    {
+        ivrTasksms.setCreateTime(DateUtils.getNowDate());
+        return ivrTasksmsMapper.insertIvrTasksms(ivrTasksms);
+    }
+
+    /**
+     * 淇敼璇煶浠诲姟鐭俊
+     * 
+     * @param ivrTasksms 璇煶浠诲姟鐭俊
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrTasksms(IvrTasksms ivrTasksms)
+    {
+        ivrTasksms.setUpdateTime(DateUtils.getNowDate());
+        return ivrTasksmsMapper.updateIvrTasksms(ivrTasksms);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎璇煶浠诲姟鐭俊
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑璇煶浠诲姟鐭俊涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTasksmsByIds(Long[] ids)
+    {
+        return ivrTasksmsMapper.deleteIvrTasksmsByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎璇煶浠诲姟鐭俊淇℃伅
+     * 
+     * @param id 璇煶浠诲姟鐭俊涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrTasksmsById(Long id)
+    {
+        return ivrTasksmsMapper.deleteIvrTasksmsById(id);
+    }
+}
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
new file mode 100644
index 0000000..2926172
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
@@ -0,0 +1,193 @@
+<?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.IvrTaskMapper">
+    
+    <resultMap type="IvrTask" id="IvrTaskResult">
+        <result property="taskid"    column="taskid"    />
+        <result property="taskname"    column="taskname"    />
+        <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="userid"    column="userid"    />
+        <result property="username"    column="username"    />
+        <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"    />
+        <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="selectIvrTaskVo">
+        select taskid, taskname, templateid, templatename, labelinfo, state, count, executed, unexecuted, fail, userid, username, addtime, checkuserid, checkusername, checktime, type, typename, usebqsms, usebhsms, usesendsms, deptcode, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_task
+    </sql>
+
+    <select id="selectIvrTaskList" parameterType="IvrTask" resultMap="IvrTaskResult">
+        <include refid="selectIvrTaskVo"/>
+        <where>  
+            <if test="taskname != null  and taskname != ''"> and taskname like concat('%', #{taskname}, '%')</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="userid != null  and userid != ''"> and userid = #{userid}</if>
+            <if test="username != null  and username != ''"> and username like concat('%', #{username}, '%')</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}, '%')</if>
+            <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>
+        </where>
+    </select>
+    
+    <select id="selectIvrTaskByTaskid" parameterType="Long" resultMap="IvrTaskResult">
+        <include refid="selectIvrTaskVo"/>
+        where taskid = #{taskid}
+    </select>
+        
+    <insert id="insertIvrTask" parameterType="IvrTask">
+        insert into ivr_task
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">taskid,</if>
+            <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="userid != null">userid,</if>
+            <if test="username != null">username,</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>
+            <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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="taskid != null">#{taskid},</if>
+            <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="userid != null">#{userid},</if>
+            <if test="username != null">#{username},</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>
+            <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>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTask" parameterType="IvrTask">
+        update ivr_task
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskname != null">taskname = #{taskname},</if>
+            <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="userid != null">userid = #{userid},</if>
+            <if test="username != null">username = #{username},</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>
+            <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>
+        </trim>
+        where taskid = #{taskid}
+    </update>
+
+    <delete id="deleteIvrTaskByTaskid" parameterType="Long">
+        delete from ivr_task where taskid = #{taskid}
+    </delete>
+
+    <delete id="deleteIvrTaskByTaskids" parameterType="String">
+        delete from ivr_task where taskid in 
+        <foreach item="taskid" collection="array" open="(" separator="," close=")">
+            #{taskid}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskcallMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskcallMapper.xml
new file mode 100644
index 0000000..a090998
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskcallMapper.xml
@@ -0,0 +1,263 @@
+<?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.IvrTaskcallMapper">
+    
+    <resultMap type="IvrTaskcall" id="IvrTaskcallResult">
+        <result property="callid"    column="callid"    />
+        <result property="sendname"    column="sendname"    />
+        <result property="phone"    column="phone"    />
+        <result property="sex"    column="sex"    />
+        <result property="age"    column="age"    />
+        <result property="sfzh"    column="sfzh"    />
+        <result property="addr"    column="addr"    />
+        <result property="senderdetail"    column="senderdetail"    />
+        <result property="inserttype"    column="inserttype"    />
+        <result property="taskid"    column="taskid"    />
+        <result property="templateid"    column="templateid"    />
+        <result property="templatename"    column="templatename"    />
+        <result property="senddate"    column="senddate"    />
+        <result property="sendlimitabegin"    column="sendlimitabegin"    />
+        <result property="sendlimitaend"    column="sendlimitaend"    />
+        <result property="sendlimitpbegin"    column="sendlimitpbegin"    />
+        <result property="sendlimitpend"    column="sendlimitpend"    />
+        <result property="sendlimitnbegin"    column="sendlimitnbegin"    />
+        <result property="sendlimitnend"    column="sendlimitnend"    />
+        <result property="sendstate"    column="sendstate"    />
+        <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="addtime"    column="addtime"    />
+        <result property="updatetime"    column="updatetime"    />
+        <result property="outbounduuid"    column="outbounduuid"    />
+        <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"    />
+        <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="selectIvrTaskcallVo">
+        select callid, sendname, phone, sex, age, sfzh, addr, senderdetail, inserttype, taskid, templateid, templatename, senddate, sendlimitabegin, sendlimitaend, sendlimitpbegin, sendlimitpend, sendlimitnbegin, sendlimitnend, sendstate, senduuid, result, finishtime, userid, username, addtime, updatetime, outbounduuid, recordid, recallcount, exrecallcount, pulltime, bqsms, bhsms, deptcode, labelstatus, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_taskcall
+    </sql>
+
+    <select id="selectIvrTaskcallList" parameterType="IvrTaskcall" resultMap="IvrTaskcallResult">
+        <include refid="selectIvrTaskcallVo"/>
+        <where>  
+            <if test="sendname != null  and sendname != ''"> and sendname like concat('%', #{sendname}, '%')</if>
+            <if test="phone != null  and phone != ''"> and phone = #{phone}</if>
+            <if test="sex != null  and sex != ''"> and sex = #{sex}</if>
+            <if test="age != null "> and age = #{age}</if>
+            <if test="sfzh != null  and sfzh != ''"> and sfzh = #{sfzh}</if>
+            <if test="addr != null  and addr != ''"> and addr = #{addr}</if>
+            <if test="senderdetail != null  and senderdetail != ''"> and senderdetail = #{senderdetail}</if>
+            <if test="inserttype != null  and inserttype != ''"> and inserttype = #{inserttype}</if>
+            <if test="taskid != null "> and taskid = #{taskid}</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="senddate != null "> and senddate = #{senddate}</if>
+            <if test="sendlimitabegin != null  and sendlimitabegin != ''"> and sendlimitabegin = #{sendlimitabegin}</if>
+            <if test="sendlimitaend != null  and sendlimitaend != ''"> and sendlimitaend = #{sendlimitaend}</if>
+            <if test="sendlimitpbegin != null  and sendlimitpbegin != ''"> and sendlimitpbegin = #{sendlimitpbegin}</if>
+            <if test="sendlimitpend != null  and sendlimitpend != ''"> and sendlimitpend = #{sendlimitpend}</if>
+            <if test="sendlimitnbegin != null  and sendlimitnbegin != ''"> and sendlimitnbegin = #{sendlimitnbegin}</if>
+            <if test="sendlimitnend != null  and sendlimitnend != ''"> and sendlimitnend = #{sendlimitnend}</if>
+            <if test="sendstate != null "> and sendstate = #{sendstate}</if>
+            <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="addtime != null "> and addtime = #{addtime}</if>
+            <if test="updatetime != null "> and updatetime = #{updatetime}</if>
+            <if test="outbounduuid != null  and outbounduuid != ''"> and outbounduuid = #{outbounduuid}</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>
+            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
+            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+        </where>
+    </select>
+    
+    <select id="selectIvrTaskcallByCallid" parameterType="Long" resultMap="IvrTaskcallResult">
+        <include refid="selectIvrTaskcallVo"/>
+        where callid = #{callid}
+    </select>
+        
+    <insert id="insertIvrTaskcall" parameterType="IvrTaskcall">
+        insert into ivr_taskcall
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="callid != null">callid,</if>
+            <if test="sendname != null">sendname,</if>
+            <if test="phone != null">phone,</if>
+            <if test="sex != null">sex,</if>
+            <if test="age != null">age,</if>
+            <if test="sfzh != null">sfzh,</if>
+            <if test="addr != null">addr,</if>
+            <if test="senderdetail != null">senderdetail,</if>
+            <if test="inserttype != null">inserttype,</if>
+            <if test="taskid != null">taskid,</if>
+            <if test="templateid != null">templateid,</if>
+            <if test="templatename != null">templatename,</if>
+            <if test="senddate != null">senddate,</if>
+            <if test="sendlimitabegin != null">sendlimitabegin,</if>
+            <if test="sendlimitaend != null">sendlimitaend,</if>
+            <if test="sendlimitpbegin != null">sendlimitpbegin,</if>
+            <if test="sendlimitpend != null">sendlimitpend,</if>
+            <if test="sendlimitnbegin != null">sendlimitnbegin,</if>
+            <if test="sendlimitnend != null">sendlimitnend,</if>
+            <if test="sendstate != null">sendstate,</if>
+            <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="addtime != null">addtime,</if>
+            <if test="updatetime != null">updatetime,</if>
+            <if test="outbounduuid != null">outbounduuid,</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>
+            <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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="callid != null">#{callid},</if>
+            <if test="sendname != null">#{sendname},</if>
+            <if test="phone != null">#{phone},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="age != null">#{age},</if>
+            <if test="sfzh != null">#{sfzh},</if>
+            <if test="addr != null">#{addr},</if>
+            <if test="senderdetail != null">#{senderdetail},</if>
+            <if test="inserttype != null">#{inserttype},</if>
+            <if test="taskid != null">#{taskid},</if>
+            <if test="templateid != null">#{templateid},</if>
+            <if test="templatename != null">#{templatename},</if>
+            <if test="senddate != null">#{senddate},</if>
+            <if test="sendlimitabegin != null">#{sendlimitabegin},</if>
+            <if test="sendlimitaend != null">#{sendlimitaend},</if>
+            <if test="sendlimitpbegin != null">#{sendlimitpbegin},</if>
+            <if test="sendlimitpend != null">#{sendlimitpend},</if>
+            <if test="sendlimitnbegin != null">#{sendlimitnbegin},</if>
+            <if test="sendlimitnend != null">#{sendlimitnend},</if>
+            <if test="sendstate != null">#{sendstate},</if>
+            <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="addtime != null">#{addtime},</if>
+            <if test="updatetime != null">#{updatetime},</if>
+            <if test="outbounduuid != null">#{outbounduuid},</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>
+            <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>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTaskcall" parameterType="IvrTaskcall">
+        update ivr_taskcall
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sendname != null">sendname = #{sendname},</if>
+            <if test="phone != null">phone = #{phone},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="age != null">age = #{age},</if>
+            <if test="sfzh != null">sfzh = #{sfzh},</if>
+            <if test="addr != null">addr = #{addr},</if>
+            <if test="senderdetail != null">senderdetail = #{senderdetail},</if>
+            <if test="inserttype != null">inserttype = #{inserttype},</if>
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="templateid != null">templateid = #{templateid},</if>
+            <if test="templatename != null">templatename = #{templatename},</if>
+            <if test="senddate != null">senddate = #{senddate},</if>
+            <if test="sendlimitabegin != null">sendlimitabegin = #{sendlimitabegin},</if>
+            <if test="sendlimitaend != null">sendlimitaend = #{sendlimitaend},</if>
+            <if test="sendlimitpbegin != null">sendlimitpbegin = #{sendlimitpbegin},</if>
+            <if test="sendlimitpend != null">sendlimitpend = #{sendlimitpend},</if>
+            <if test="sendlimitnbegin != null">sendlimitnbegin = #{sendlimitnbegin},</if>
+            <if test="sendlimitnend != null">sendlimitnend = #{sendlimitnend},</if>
+            <if test="sendstate != null">sendstate = #{sendstate},</if>
+            <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="addtime != null">addtime = #{addtime},</if>
+            <if test="updatetime != null">updatetime = #{updatetime},</if>
+            <if test="outbounduuid != null">outbounduuid = #{outbounduuid},</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>
+            <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>
+        </trim>
+        where callid = #{callid}
+    </update>
+
+    <delete id="deleteIvrTaskcallByCallid" parameterType="Long">
+        delete from ivr_taskcall where callid = #{callid}
+    </delete>
+
+    <delete id="deleteIvrTaskcallByCallids" parameterType="String">
+        delete from ivr_taskcall where callid in 
+        <foreach item="callid" collection="array" open="(" separator="," close=")">
+            #{callid}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml
new file mode 100644
index 0000000..da577d2
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskcalldetailMapper.xml
@@ -0,0 +1,243 @@
+<?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.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>
+
+    <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
+    </sql>
+
+    <select id="selectIvrTaskcalldetailList" parameterType="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>
+    </select>
+    
+    <select id="selectIvrTaskcalldetailByCalldetailid" parameterType="String" resultMap="IvrTaskcalldetailResult">
+        <include refid="selectIvrTaskcalldetailVo"/>
+        where calldetailid = #{calldetailid}
+    </select>
+        
+    <insert id="insertIvrTaskcalldetail" parameterType="IvrTaskcalldetail">
+        insert into ivr_taskcalldetail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="calldetailid != null">calldetailid,</if>
+            <if test="callid != null">callid,</if>
+            <if test="uuid != null">uuid,</if>
+            <if test="phone != null">phone,</if>
+            <if test="operate != null">operate,</if>
+            <if test="displayno != null">displayno,</if>
+            <if test="inbound != null">inbound,</if>
+            <if test="incoming != null">incoming,</if>
+            <if test="assigntime != null">assigntime,</if>
+            <if test="starttime != null">starttime,</if>
+            <if test="answertime != null">answertime,</if>
+            <if test="silent != null">silent,</if>
+            <if test="dtmfKey != null">dtmf_key,</if>
+            <if test="musicpath != null">musicpath,</if>
+            <if test="sentIndex != null">sent_index,</if>
+            <if test="sentBegin != null">sent_begin,</if>
+            <if test="asrtext != null">asrtext,</if>
+            <if test="beginTime != null">begin_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="sentEnd != null">sent_end,</if>
+            <if test="recordpath != null">recordpath,</if>
+            <if test="recordurl != null">recordurl,</if>
+            <if test="templateid != null">templateid,</if>
+            <if test="templatequestionnum != null">templatequestionnum,</if>
+            <if test="switchid != null">switchid,</if>
+            <if test="questiontext != null">questiontext,</if>
+            <if test="questionvoice != null">questionvoice,</if>
+            <if test="categoryname != null">categoryname,</if>
+            <if test="targetoptions != null">targetoptions,</if>
+            <if test="targetvalue != null">targetvalue,</if>
+            <if test="matchedtext != null">matchedtext,</if>
+            <if test="addtime != null">addtime,</if>
+            <if test="isupload != null">isupload,</if>
+            <if test="uploadTime != null">upload_time,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="createTime != null">create_time,</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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="calldetailid != null">#{calldetailid},</if>
+            <if test="callid != null">#{callid},</if>
+            <if test="uuid != null">#{uuid},</if>
+            <if test="phone != null">#{phone},</if>
+            <if test="operate != null">#{operate},</if>
+            <if test="displayno != null">#{displayno},</if>
+            <if test="inbound != null">#{inbound},</if>
+            <if test="incoming != null">#{incoming},</if>
+            <if test="assigntime != null">#{assigntime},</if>
+            <if test="starttime != null">#{starttime},</if>
+            <if test="answertime != null">#{answertime},</if>
+            <if test="silent != null">#{silent},</if>
+            <if test="dtmfKey != null">#{dtmfKey},</if>
+            <if test="musicpath != null">#{musicpath},</if>
+            <if test="sentIndex != null">#{sentIndex},</if>
+            <if test="sentBegin != null">#{sentBegin},</if>
+            <if test="asrtext != null">#{asrtext},</if>
+            <if test="beginTime != null">#{beginTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="sentEnd != null">#{sentEnd},</if>
+            <if test="recordpath != null">#{recordpath},</if>
+            <if test="recordurl != null">#{recordurl},</if>
+            <if test="templateid != null">#{templateid},</if>
+            <if test="templatequestionnum != null">#{templatequestionnum},</if>
+            <if test="switchid != null">#{switchid},</if>
+            <if test="questiontext != null">#{questiontext},</if>
+            <if test="questionvoice != null">#{questionvoice},</if>
+            <if test="categoryname != null">#{categoryname},</if>
+            <if test="targetoptions != null">#{targetoptions},</if>
+            <if test="targetvalue != null">#{targetvalue},</if>
+            <if test="matchedtext != null">#{matchedtext},</if>
+            <if test="addtime != null">#{addtime},</if>
+            <if test="isupload != null">#{isupload},</if>
+            <if test="uploadTime != null">#{uploadTime},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="createTime != null">#{createTime},</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>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTaskcalldetail" parameterType="IvrTaskcalldetail">
+        update ivr_taskcalldetail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="callid != null">callid = #{callid},</if>
+            <if test="uuid != null">uuid = #{uuid},</if>
+            <if test="phone != null">phone = #{phone},</if>
+            <if test="operate != null">operate = #{operate},</if>
+            <if test="displayno != null">displayno = #{displayno},</if>
+            <if test="inbound != null">inbound = #{inbound},</if>
+            <if test="incoming != null">incoming = #{incoming},</if>
+            <if test="assigntime != null">assigntime = #{assigntime},</if>
+            <if test="starttime != null">starttime = #{starttime},</if>
+            <if test="answertime != null">answertime = #{answertime},</if>
+            <if test="silent != null">silent = #{silent},</if>
+            <if test="dtmfKey != null">dtmf_key = #{dtmfKey},</if>
+            <if test="musicpath != null">musicpath = #{musicpath},</if>
+            <if test="sentIndex != null">sent_index = #{sentIndex},</if>
+            <if test="sentBegin != null">sent_begin = #{sentBegin},</if>
+            <if test="asrtext != null">asrtext = #{asrtext},</if>
+            <if test="beginTime != null">begin_time = #{beginTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="sentEnd != null">sent_end = #{sentEnd},</if>
+            <if test="recordpath != null">recordpath = #{recordpath},</if>
+            <if test="recordurl != null">recordurl = #{recordurl},</if>
+            <if test="templateid != null">templateid = #{templateid},</if>
+            <if test="templatequestionnum != null">templatequestionnum = #{templatequestionnum},</if>
+            <if test="switchid != null">switchid = #{switchid},</if>
+            <if test="questiontext != null">questiontext = #{questiontext},</if>
+            <if test="questionvoice != null">questionvoice = #{questionvoice},</if>
+            <if test="categoryname != null">categoryname = #{categoryname},</if>
+            <if test="targetoptions != null">targetoptions = #{targetoptions},</if>
+            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
+            <if test="matchedtext != null">matchedtext = #{matchedtext},</if>
+            <if test="addtime != null">addtime = #{addtime},</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="createTime != null">create_time = #{createTime},</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>
+        </trim>
+        where calldetailid = #{calldetailid}
+    </update>
+
+    <delete id="deleteIvrTaskcalldetailByCalldetailid" parameterType="String">
+        delete from ivr_taskcalldetail where calldetailid = #{calldetailid}
+    </delete>
+
+    <delete id="deleteIvrTaskcalldetailByCalldetailids" parameterType="String">
+        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
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml
new file mode 100644
index 0000000..b07f965
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskcallrecordMapper.xml
@@ -0,0 +1,213 @@
+<?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.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>
+
+    <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
+    </sql>
+
+    <select id="selectIvrTaskcallrecordList" parameterType="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>
+    </select>
+    
+    <select id="selectIvrTaskcallrecordByUuid" parameterType="String" resultMap="IvrTaskcallrecordResult">
+        <include refid="selectIvrTaskcallrecordVo"/>
+        where uuid = #{uuid}
+    </select>
+        
+    <insert id="insertIvrTaskcallrecord" parameterType="IvrTaskcallrecord">
+        insert into ivr_taskcallrecord
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="uuid != null">uuid,</if>
+            <if test="displayno != null">displayno,</if>
+            <if test="phone != null">phone,</if>
+            <if test="taskid != null">taskid,</if>
+            <if test="extension != null">extension,</if>
+            <if test="inbound != null">inbound,</if>
+            <if test="direct != null">direct,</if>
+            <if test="answered != null">answered,</if>
+            <if test="assignTime != null">assign_time,</if>
+            <if test="startTime != null">start_time,</if>
+            <if test="answerTime != null">answer_time,</if>
+            <if test="hangupTime != null">hangup_time,</if>
+            <if test="endTime != null">end_time,</if>
+            <if test="recordPath != null">record_path,</if>
+            <if test="recordUrl != null">record_url,</if>
+            <if test="hangupSipcode != null">hangup_sipcode,</if>
+            <if test="hangupCause != null">hangup_cause,</if>
+            <if test="transfered != null">transfered,</if>
+            <if test="transUuid != null">trans_uuid,</if>
+            <if test="transPhone != null">trans_phone,</if>
+            <if test="transAnswered != null">trans_answered,</if>
+            <if test="transStartTime != null">trans_start_time,</if>
+            <if test="transAnswerTime != null">trans_answer_time,</if>
+            <if test="earlyAsrtext != null">early_asrtext,</if>
+            <if test="earlyPath != null">early_path,</if>
+            <if test="earlyUrl != null">early_url,</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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="uuid != null">#{uuid},</if>
+            <if test="displayno != null">#{displayno},</if>
+            <if test="phone != null">#{phone},</if>
+            <if test="taskid != null">#{taskid},</if>
+            <if test="extension != null">#{extension},</if>
+            <if test="inbound != null">#{inbound},</if>
+            <if test="direct != null">#{direct},</if>
+            <if test="answered != null">#{answered},</if>
+            <if test="assignTime != null">#{assignTime},</if>
+            <if test="startTime != null">#{startTime},</if>
+            <if test="answerTime != null">#{answerTime},</if>
+            <if test="hangupTime != null">#{hangupTime},</if>
+            <if test="endTime != null">#{endTime},</if>
+            <if test="recordPath != null">#{recordPath},</if>
+            <if test="recordUrl != null">#{recordUrl},</if>
+            <if test="hangupSipcode != null">#{hangupSipcode},</if>
+            <if test="hangupCause != null">#{hangupCause},</if>
+            <if test="transfered != null">#{transfered},</if>
+            <if test="transUuid != null">#{transUuid},</if>
+            <if test="transPhone != null">#{transPhone},</if>
+            <if test="transAnswered != null">#{transAnswered},</if>
+            <if test="transStartTime != null">#{transStartTime},</if>
+            <if test="transAnswerTime != null">#{transAnswerTime},</if>
+            <if test="earlyAsrtext != null">#{earlyAsrtext},</if>
+            <if test="earlyPath != null">#{earlyPath},</if>
+            <if test="earlyUrl != null">#{earlyUrl},</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>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTaskcallrecord" parameterType="IvrTaskcallrecord">
+        update ivr_taskcallrecord
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="displayno != null">displayno = #{displayno},</if>
+            <if test="phone != null">phone = #{phone},</if>
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="extension != null">extension = #{extension},</if>
+            <if test="inbound != null">inbound = #{inbound},</if>
+            <if test="direct != null">direct = #{direct},</if>
+            <if test="answered != null">answered = #{answered},</if>
+            <if test="assignTime != null">assign_time = #{assignTime},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="answerTime != null">answer_time = #{answerTime},</if>
+            <if test="hangupTime != null">hangup_time = #{hangupTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="recordPath != null">record_path = #{recordPath},</if>
+            <if test="recordUrl != null">record_url = #{recordUrl},</if>
+            <if test="hangupSipcode != null">hangup_sipcode = #{hangupSipcode},</if>
+            <if test="hangupCause != null">hangup_cause = #{hangupCause},</if>
+            <if test="transfered != null">transfered = #{transfered},</if>
+            <if test="transUuid != null">trans_uuid = #{transUuid},</if>
+            <if test="transPhone != null">trans_phone = #{transPhone},</if>
+            <if test="transAnswered != null">trans_answered = #{transAnswered},</if>
+            <if test="transStartTime != null">trans_start_time = #{transStartTime},</if>
+            <if test="transAnswerTime != null">trans_answer_time = #{transAnswerTime},</if>
+            <if test="earlyAsrtext != null">early_asrtext = #{earlyAsrtext},</if>
+            <if test="earlyPath != null">early_path = #{earlyPath},</if>
+            <if test="earlyUrl != null">early_url = #{earlyUrl},</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>
+        </trim>
+        where uuid = #{uuid}
+    </update>
+
+    <delete id="deleteIvrTaskcallrecordByUuid" parameterType="String">
+        delete from ivr_taskcallrecord where uuid = #{uuid}
+    </delete>
+
+    <delete id="deleteIvrTaskcallrecordByUuids" parameterType="String">
+        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
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml
new file mode 100644
index 0000000..6d162c9
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrTasksmsMapper.xml
@@ -0,0 +1,133 @@
+<?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.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>
+
+    <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
+    </sql>
+
+    <select id="selectIvrTasksmsList" parameterType="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>
+    </select>
+    
+    <select id="selectIvrTasksmsById" parameterType="Long" resultMap="IvrTasksmsResult">
+        <include refid="selectIvrTasksmsVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertIvrTasksms" parameterType="IvrTasksms">
+        insert into ivr_tasksms
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="taskid != null">taskid,</if>
+            <if test="type != null">type,</if>
+            <if test="smstemplateid != null">smstemplateid,</if>
+            <if test="phonestatusid != null">phonestatusid,</if>
+            <if test="smstemplatename != null">smstemplatename,</if>
+            <if test="phonestatusname != null">phonestatusname,</if>
+            <if test="isdel != null">isdel,</if>
+            <if test="content != null">content,</if>
+            <if test="tagid != null">tagid,</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>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="taskid != null">#{taskid},</if>
+            <if test="type != null">#{type},</if>
+            <if test="smstemplateid != null">#{smstemplateid},</if>
+            <if test="phonestatusid != null">#{phonestatusid},</if>
+            <if test="smstemplatename != null">#{smstemplatename},</if>
+            <if test="phonestatusname != null">#{phonestatusname},</if>
+            <if test="isdel != null">#{isdel},</if>
+            <if test="content != null">#{content},</if>
+            <if test="tagid != null">#{tagid},</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>
+         </trim>
+    </insert>
+
+    <update id="updateIvrTasksms" parameterType="IvrTasksms">
+        update ivr_tasksms
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="taskid != null">taskid = #{taskid},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="smstemplateid != null">smstemplateid = #{smstemplateid},</if>
+            <if test="phonestatusid != null">phonestatusid = #{phonestatusid},</if>
+            <if test="smstemplatename != null">smstemplatename = #{smstemplatename},</if>
+            <if test="phonestatusname != null">phonestatusname = #{phonestatusname},</if>
+            <if test="isdel != null">isdel = #{isdel},</if>
+            <if test="content != null">content = #{content},</if>
+            <if test="tagid != null">tagid = #{tagid},</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>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIvrTasksmsById" parameterType="Long">
+        delete from ivr_tasksms where id = #{id}
+    </delete>
+
+    <delete id="deleteIvrTasksmsByIds" parameterType="String">
+        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

--
Gitblit v1.9.3