From ac79f032745c975eb77d6fb148ed390f2373559e Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 28 十二月 2023 17:58:52 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssortVO.java                                   |    3 
 smartor/src/main/java/com/smartor/service/IHeLibraryAssortService.java                                |   70 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicCategoryController.java         |  106 
 smartor/src/main/java/com/smartor/domain/IvrLibaExtemplateCategory.java                               |   88 
 smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssortVO.java                                   |    3 
 smartor/src/main/java/com/smartor/mapper/HeLibraryMapper.java                                         |   63 
 ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java                       |    4 
 smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateMapper.java                                 |   45 
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateService.java                                |   71 
 smartor/src/main/resources/mapper/smartor/HeLibraryAssortMapper.xml                                   |  132 
 smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateMapper.xml                                 |  154 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml                             |  233 +
 smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java                            |   57 
 smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java                                         |   61 
 smartor/src/main/java/com/smartor/mapper/SvyLibTopicCategoryMapper.java                               |   71 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetoptionServiceImpl.java            |   97 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateAssortMapper.xml                             |   93 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTagMapper.xml                                |  138 
 smartor/src/main/java/com/smartor/service/IHeLibraryService.java                                      |   72 
 smartor/src/main/java/com/smartor/service/IIvrLibaExtemplatescriptService.java                        |   43 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml                             |  100 
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateScriptMapper.java                             |   64 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyCategoryController.java                 |   23 
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetoptionService.java                    |   62 
 smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateCategoryMapper.xml                         |  136 
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateScriptService.java                          |   62 
 smartor/src/main/java/com/smartor/domain/IvrLibaTarget.java                                           |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTagController.java          |  100 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java                                 |  234 +
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTagService.java                             |   62 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java                 |   25 
 smartor/src/main/java/com/smartor/domain/SvyLibTopic.java                                             |   13 
 smartor/src/main/java/com/smartor/domain/SvyLibTitle.java                                             |    5 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryAssortController.java             |  119 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateScriptServiceImpl.java                  |   97 
 smartor/src/main/resources/mapper/smartor/IvrLibaExtemplatescriptMapper.xml                           |  137 
 smartor/src/main/java/com/smartor/domain/SvyLibTopicCategory.java                                     |   78 
 smartor/src/main/java/com/smartor/service/ISvyLibTopicCategoryService.java                            |   64 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java       |  100 
 smartor/src/main/java/com/smartor/service/impl/SvyLibTitleCategoryServiceImpl.java                    |  153 
 smartor/src/main/java/com/smartor/service/impl/HeLibraryAssortServiceImpl.java                        |  174 
 smartor/src/main/resources/mapper/smartor/IvrLibaTargetAssortMapper.xml                               |   29 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptServiceImpl.java                          |   55 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java                                         |   12 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetIcd10.java                                      |    6 
 smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml                                       |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryTagController.java                |  100 
 smartor/src/main/java/com/smartor/service/ISvyCategoryService.java                                    |    5 
 smartor/src/main/java/com/smartor/domain/SvyLibTitleCategory.java                                     |   70 
 smartor/src/main/java/com/smartor/mapper/IvrLibaScriptAssortMapper.java                               |    2 
 smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssort.java                                     |    7 
 smartor/src/main/java/com/smartor/mapper/HeLibraryTagMapper.java                                      |   63 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateCategoryServiceImpl.java              |  104 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java                        |  259 +
 smartor/src/main/resources/mapper/smartor/IvrLibaTargetMapper.xml                                     |   11 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaScriptAssortController.java         |   20 
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateAssortService.java                          |   70 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetargetAssort.java                             |    3 
 smartor/src/main/java/com/smartor/domain/HeLibraryVO.java                                             |  201 +
 smartor/src/main/resources/mapper/smartor/SvyLibTitleCategoryMapper.xml                               |  121 
 smartor/src/main/java/com/smartor/service/ISvyLibTitleService.java                                    |    9 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml                                   |  115 
 smartor/src/main/java/com/smartor/domain/SvyTopicoption.java                                          |    6 
 smartor/src/main/java/com/smartor/domain/IvrLibaScript.java                                           |   57 
 smartor/src/main/java/com/smartor/mapper/HeLibraryAssortMapper.java                                   |   70 
 smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateCategoryService.java                      |   55 
 smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java                                    |   12 
 smartor/src/main/java/com/smartor/service/impl/HeLibraryServiceImpl.java                              |  160 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java             |  140 
 smartor/src/main/java/com/smartor/domain/SvyCategory.java                                             |   13 
 smartor/src/main/java/com/smartor/domain/SvyLibTopicCategoryVO.java                                   |   76 
 smartor/src/main/java/com/smartor/service/IIvrLibaTargetAssortService.java                            |   29 
 smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplatescriptMapper.java                           |   45 
 smartor/src/main/java/com/smartor/service/IIvrLibaScriptAssortService.java                            |   50 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateServiceImpl.java                      |   84 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTagServiceImpl.java                     |   96 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssort.java                                     |    8 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssortVO.java                                 |   57 
 smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateCategoryMapper.java                         |   65 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateCategoryController.java   |  100 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateController.java           |   86 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateAssortServiceImpl.java                  |  159 
 smartor/src/main/resources/mapper/smartor/SvyCategoryMapper.xml                                       |   22 
 smartor/src/main/resources/mapper/smartor/HeLibraryTagMapper.xml                                      |  130 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetoptionController.java |  100 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplatescriptController.java     |  106 
 smartor/src/main/java/com/smartor/domain/HeLibraryAssortVO.java                                       |   95 
 smartor/src/main/java/com/smartor/service/impl/HeLibraryTagServiceImpl.java                           |   90 
 smartor/src/main/java/com/smartor/domain/HeLibraryTag.java                                            |   99 
 smartor/src/main/java/com/smartor/service/ISvyLibTitleCategoryService.java                            |   58 
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java                             |   64 
 smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java                            |  103 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml                       |  190 
 smartor/src/main/java/com/smartor/domain/IvrLibaExtemplatescript.java                                 |  232 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java                                   |  219 +
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTagMapper.java                                |   64 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java                  |   96 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeCategoryController.java                  |    8 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleCategoryController.java         |  107 
 smartor/src/main/resources/mapper/smartor/IvrLibaScriptTargetoptionMapper.xml                         |    6 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java                                       |  309 +
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateAssortMapper.java                             |   70 
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetoptionMapper.java                       |   63 
 smartor/src/main/java/com/smartor/domain/HeLibrary.java                                               |  194 +
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java                             |  183 
 smartor/src/main/java/com/smartor/domain/SvyLibTitleCategoryVO.java                                   |   64 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java                 |   36 
 smartor/src/main/resources/mapper/smartor/IvrLibaScriptAssortMapper.xml                               |   29 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java                                         |  214 
 smartor/src/main/java/com/smartor/mapper/SvyLibTitleCategoryMapper.java                               |   70 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryController.java                   |  131 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateAssortController.java       |  113 
 smartor/src/main/java/com/smartor/service/impl/SvyLibTopicCategoryServiceImpl.java                    |  159 
 smartor/src/main/java/com/smartor/domain/IvrLibaExtemplate.java                                       |  297 -
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java                                   |  229 +
 smartor/src/main/java/com/smartor/domain/SvyCategoryVO.java                                           |   79 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplatescriptServiceImpl.java                |   84 
 smartor/src/main/java/com/smartor/domain/IvrLibaScriptTargetoption.java                               |    7 
 smartor/src/main/resources/mapper/smartor/SvyLibTopicoptionMapper.xml                                 |    8 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTag.java                                      |  106 
 smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateService.java                              |   43 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssort.java                                   |   55 
 smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java                          |   62 
 smartor/src/main/java/com/smartor/service/IHeLibraryTagService.java                                   |   61 
 smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml                                     |   53 
 /dev/null                                                                                             |   82 
 smartor/src/main/java/com/smartor/mapper/IvrLibaTargetAssortMapper.java                               |   24 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetAssortServiceImpl.java                    |   60 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateScriptController.java       |  107 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java                    |   58 
 smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java                            |   76 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetAssortController.java         |   39 
 smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateMapper.java                                   |   45 
 smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java                                       |    5 
 smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml                               |  127 
 smartor/src/main/java/com/smartor/domain/HeLibraryAssort.java                                         |  155 
 smartor/src/main/resources/mapper/smartor/HeLibraryMapper.xml                                         |  182 
 137 files changed, 10,129 insertions(+), 1,395 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeCategoryController.java
index ef1546f..f36dcf4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeCategoryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeCategoryController.java
@@ -26,12 +26,12 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
- * 瀹f暀鍒嗙被Controller
+ * 瀹f暀鍒嗙被(琛ㄦ病浜嗭紝浣滃簾)Controller
  *
  * @author smartor
  * @date 2023-03-04
  */
-@Api("瀹f暀鍒嗙被(瀹f暀绫诲埆)")
+@Api("瀹f暀鍒嗙被(浣滃簾)")
 @RestController
 @RequestMapping("/smartor/hecategory")
 public class HeCategoryController extends BaseController {
@@ -44,8 +44,8 @@
     @ApiOperation("鏌ヨ瀹f暀鍒嗙被鍒楄〃")
     @PreAuthorize("@ss.hasPermi('smartor:hecategory:list')")
     @PostMapping("/selectHeCategoryList")
-    public TableDataInfo selectHeCategorylist(@RequestBody  HeCategory heCategory) {
-        startPage();
+    public TableDataInfo selectHeCategorylist(@RequestBody HeCategory heCategory) {
+        // startPage();
         List<HeCategoryVO> list = heCategoryService.selectHeCategoryList(heCategory);
         return getDataTable(list);
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryAssortController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryAssortController.java
new file mode 100644
index 0000000..403bfee
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryAssortController.java
@@ -0,0 +1,119 @@
+package com.ruoyi.web.controller.smartor;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.smartor.domain.HeLibraryAssort;
+import com.smartor.domain.HeLibraryAssortVO;
+import com.smartor.service.IHeLibraryAssortService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 瀹f暀鍒嗙被Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Api(description = "瀹f暀鍒嗙被")
+@RestController
+@RequestMapping("/smartor/heLibraryAssort")
+public class HeLibraryAssortController extends BaseController {
+    @Autowired
+    private IHeLibraryAssortService heLibraryAssortService;
+
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被鍒楄〃
+     */
+    @ApiOperation("鏌ヨ瀹f暀鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:list')")
+    @PostMapping("/selectHeLibraryAssortList")
+    public TableDataInfo list(@RequestBody HeLibraryAssort heLibraryAssort) {
+        startPage();
+        List<HeLibraryAssortVO> list = heLibraryAssortService.selectHeLibraryAssortList(heLibraryAssort);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭瀹f暀鍒嗙被鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭瀹f暀鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:export')")
+    @Log(title = "瀹f暀鍒嗙被", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HeLibraryAssort heLibraryAssort) {
+        List<HeLibraryAssortVO> list = heLibraryAssortService.selectHeLibraryAssortList(heLibraryAssort);
+        ExcelUtil<HeLibraryAssortVO> util = new ExcelUtil<HeLibraryAssortVO>(HeLibraryAssortVO.class);
+        util.exportExcel(response, list, "瀹f暀鍒嗙被鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇瀹f暀鍒嗙被璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇瀹f暀鍒嗙被璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(heLibraryAssortService.selectHeLibraryAssortById(id));
+    }
+
+    /**
+     * 鏂板瀹f暀鍒嗙被
+     */
+    @ApiOperation("鏂板瀹f暀鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "瀹f暀鍒嗙被", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody HeLibraryAssort heLibraryAssort) {
+        return toAjax(heLibraryAssortService.insertHeLibraryAssort(heLibraryAssort));
+    }
+
+    /**
+     * 鏂板瀹f暀鍒嗙被璇︽儏鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "瀹f暀鍒嗙被", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板瀹f暀鍒嗙被璇︽儏鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody HeLibraryAssortVO heLibraryAssortVO) {
+        return toAjax(heLibraryAssortService.insertHeLibraryAssortTree(heLibraryAssortVO));
+    }
+
+    /**
+     * 淇敼瀹f暀鍒嗙被
+     */
+    @ApiOperation("淇敼瀹f暀鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:edit')")
+    @Log(title = "瀹f暀鍒嗙被", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody HeLibraryAssort heLibraryAssort) {
+        return toAjax(heLibraryAssortService.updateHeLibraryAssort(heLibraryAssort));
+    }
+
+    /**
+     * 鍒犻櫎瀹f暀鍒嗙被
+     */
+    @ApiOperation("鍒犻櫎瀹f暀鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:remove')")
+    @Log(title = "瀹f暀鍒嗙被", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(heLibraryAssortService.deleteHeLibraryAssortByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryController.java
new file mode 100644
index 0000000..c52ad11
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryController.java
@@ -0,0 +1,131 @@
+package com.ruoyi.web.controller.smartor;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.smartor.domain.HeLibrary;
+import com.smartor.domain.HeLibraryVO;
+import com.smartor.domain.IvrLibaTemplateVO;
+import com.smartor.service.IHeLibraryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ObjectUtils;
+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.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 瀹f暀璧勬枡搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Api(description = "瀹f暀璧勬枡搴�")
+@RestController
+@RequestMapping("/smartor/library")
+public class HeLibraryController extends BaseController {
+    @Autowired
+    private IHeLibraryService heLibraryService;
+
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ瀹f暀璧勬枡搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:library:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody HeLibrary heLibrary) {
+        startPage();
+        List<HeLibrary> list = heLibraryService.selectHeLibraryList(heLibrary);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭瀹f暀璧勬枡搴撳垪琛�
+     */
+    @PreAuthorize("@ss.hasPermi('system:library:export')")
+    @Log(title = "瀹f暀璧勬枡搴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HeLibrary heLibrary) {
+        List<HeLibrary> list = heLibraryService.selectHeLibraryList(heLibrary);
+        ExcelUtil<HeLibrary> util = new ExcelUtil<HeLibrary>(HeLibrary.class);
+        util.exportExcel(response, list, "瀹f暀璧勬枡搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇瀹f暀璧勬枡搴撹缁嗕俊鎭�
+     */
+    @PreAuthorize("@ss.hasPermi('system:library:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(heLibraryService.selectHeLibraryById(id));
+    }
+
+    /**
+     * 鏂板瀹f暀璧勬枡搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:library:add')")
+    @Log(title = "瀹f暀璧勬枡搴�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody HeLibrary heLibrary) {
+        return toAjax(heLibraryService.insertHeLibrary(heLibrary));
+    }
+
+    /**
+     * 淇敼瀹f暀璧勬枡搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:library:edit')")
+    @Log(title = "瀹f暀璧勬枡搴�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody HeLibrary heLibrary) {
+        return toAjax(heLibraryService.updateHeLibrary(heLibrary));
+    }
+
+    /**
+     * 鍒犻櫎瀹f暀璧勬枡搴�
+     */
+    @PreAuthorize("@ss.hasPermi('system:library:remove')")
+    @Log(title = "瀹f暀璧勬枡搴�", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(heLibraryService.deleteHeLibraryByIds(ids));
+    }
+
+    /**
+     * 鏂板鎴栦慨鏀瑰鏁欒鎯�
+     */
+    @ApiOperation("鏂板鎴栦慨鏀瑰鏁欒鎯�")
+    @PreAuthorize("@ss.hasPermi('system:script:list')")
+    @PostMapping("/saveOrUpdateScript")
+    public AjaxResult saveOrUpdateScript(@RequestBody HeLibraryVO heLibraryVO) {
+        if (ObjectUtils.isEmpty(heLibraryVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(heLibraryService.saveOrUpdateScript(heLibraryVO));
+    }
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    @ApiOperation("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢")
+    @PostMapping("/selectInfoByCondition")
+    public AjaxResult selectInfoByCondition(@RequestBody HeLibrary heLibrary) {
+        if (ObjectUtils.isEmpty(heLibrary)) {
+            throw new BaseException("鏌ヨ妯℃澘璇︽儏鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(heLibraryService.selectInfoByCondition(heLibrary));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryTagController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryTagController.java
new file mode 100644
index 0000000..38ece5f
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/HeLibraryTagController.java
@@ -0,0 +1,100 @@
+package com.ruoyi.web.controller.smartor;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.smartor.domain.HeLibraryTag;
+import com.smartor.service.IHeLibraryTagService;
+import io.swagger.annotations.Api;
+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.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 鎸囨爣鏍囩Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Api(description = "鎸囨爣鏍囩")
+@RestController
+@RequestMapping("/smartor/heLibraryTag")
+public class HeLibraryTagController extends BaseController {
+    @Autowired
+    private IHeLibraryTagService heLibraryTagService;
+
+    /**
+     * 鏌ヨ鎸囨爣鏍囩鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(HeLibraryTag heLibraryTag) {
+        startPage();
+        List<HeLibraryTag> list = heLibraryTagService.selectHeLibraryTagList(heLibraryTag);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭鎸囨爣鏍囩鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:export')")
+    @Log(title = "鎸囨爣鏍囩", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HeLibraryTag heLibraryTag) {
+        List<HeLibraryTag> list = heLibraryTagService.selectHeLibraryTagList(heLibraryTag);
+        ExcelUtil<HeLibraryTag> util = new ExcelUtil<HeLibraryTag>(HeLibraryTag.class);
+        util.exportExcel(response, list, "鎸囨爣鏍囩鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇鎸囨爣鏍囩璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(heLibraryTagService.selectHeLibraryTagById(id));
+    }
+
+    /**
+     * 鏂板鎸囨爣鏍囩
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:add')")
+    @Log(title = "鎸囨爣鏍囩", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody HeLibraryTag heLibraryTag) {
+        return toAjax(heLibraryTagService.insertHeLibraryTag(heLibraryTag));
+    }
+
+    /**
+     * 淇敼鎸囨爣鏍囩
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:edit')")
+    @Log(title = "鎸囨爣鏍囩", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody HeLibraryTag heLibraryTag) {
+        return toAjax(heLibraryTagService.updateHeLibraryTag(heLibraryTag));
+    }
+
+    /**
+     * 鍒犻櫎鎸囨爣鏍囩
+     */
+    @PreAuthorize("@ss.hasPermi('system:tag:remove')")
+    @Log(title = "鎸囨爣鏍囩", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(heLibraryTagService.deleteHeLibraryTagByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateCategoryController.java
new file mode 100644
index 0000000..c9297a2
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateCategoryController.java
@@ -0,0 +1,100 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaExtemplateCategory;
+import com.smartor.service.IIvrLibaExtemplateCategoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 閫氱敤妯℃澘鍒嗙被Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Api(description = "閫氱敤妯℃澘鍒嗙被")
+@RestController
+@RequestMapping("/smartor/category")
+public class IvrLibaExtemplateCategoryController extends BaseController {
+    @Autowired
+    private IIvrLibaExtemplateCategoryService ivrLibaExtemplateCategoryService;
+
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被鍒楄〃
+     */
+    @ApiOperation("鏌ヨ閫氱敤妯℃澘鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:category:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        startPage();
+        List<IvrLibaExtemplateCategory> list = ivrLibaExtemplateCategoryService.selectIvrLibaExtemplateCategoryList(ivrLibaExtemplateCategory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭閫氱敤妯℃澘鍒嗙被鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭閫氱敤妯℃澘鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:category:export')")
+    @Log(title = "閫氱敤妯℃澘鍒嗙被", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        List<IvrLibaExtemplateCategory> list = ivrLibaExtemplateCategoryService.selectIvrLibaExtemplateCategoryList(ivrLibaExtemplateCategory);
+        ExcelUtil<IvrLibaExtemplateCategory> util = new ExcelUtil<IvrLibaExtemplateCategory>(IvrLibaExtemplateCategory.class);
+        util.exportExcel(response, list, "閫氱敤妯℃澘鍒嗙被鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇閫氱敤妯℃澘鍒嗙被璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇閫氱敤妯℃澘鍒嗙被璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:category:query')")
+    @GetMapping(value = "/getInfo/{intertcatid}")
+    public AjaxResult getInfo(@PathVariable("intertcatid") Long intertcatid) {
+        return success(ivrLibaExtemplateCategoryService.selectIvrLibaExtemplateCategoryByIntertcatid(intertcatid));
+    }
+
+    /**
+     * 鏂板閫氱敤妯℃澘鍒嗙被
+     */
+    @ApiOperation("鏂板閫氱敤妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:category:add')")
+    @Log(title = "閫氱敤妯℃澘鍒嗙被", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        return toAjax(ivrLibaExtemplateCategoryService.insertIvrLibaExtemplateCategory(ivrLibaExtemplateCategory));
+    }
+
+    /**
+     * 淇敼閫氱敤妯℃澘鍒嗙被
+     */
+    @ApiOperation("淇敼閫氱敤妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:category:edit')")
+    @Log(title = "閫氱敤妯℃澘鍒嗙被", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        return toAjax(ivrLibaExtemplateCategoryService.updateIvrLibaExtemplateCategory(ivrLibaExtemplateCategory));
+    }
+
+    /**
+     * 鍒犻櫎閫氱敤妯℃澘鍒嗙被
+     */
+    @ApiOperation("鍒犻櫎閫氱敤妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:category:remove')")
+    @Log(title = "閫氱敤妯℃澘鍒嗙被", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{intertcatids}")
+    public AjaxResult remove(@PathVariable Long[] intertcatids) {
+        return toAjax(ivrLibaExtemplateCategoryService.deleteIvrLibaExtemplateCategoryByIntertcatids(intertcatids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateController.java
index 160d7e3..1936d31 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplateController.java
@@ -1,43 +1,40 @@
 package com.ruoyi.web.controller.smartor;
 
-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.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.IvrLibaExtemplate;
 import com.smartor.service.IIvrLibaExtemplateService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴揅ontroller
+ * 閫氳繃妯℃澘Controller
  *
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-27
  */
+@Api(description = "閫氳繃妯℃澘")
 @RestController
-@RequestMapping("/smartor/ivrextemplate")
+@RequestMapping("/smartor/extemplate")
 public class IvrLibaExtemplateController extends BaseController {
     @Autowired
     private IIvrLibaExtemplateService ivrLibaExtemplateService;
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撳垪琛�
+     * 鏌ヨ閫氳繃妯℃澘鍒楄〃
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:list')")
+    @ApiOperation("鏌ヨ閫氳繃妯℃澘鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:list')")
     @PostMapping("/list")
     public TableDataInfo list(@RequestBody IvrLibaExtemplate ivrLibaExtemplate) {
         startPage();
@@ -46,53 +43,58 @@
     }
 
     /**
-     * 瀵煎嚭鎵╁睍璇濇湳妯℃澘搴撳垪琛�
+     * 瀵煎嚭閫氳繃妯℃澘鍒楄〃
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:export')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴�", businessType = BusinessType.EXPORT)
+    @ApiOperation("瀵煎嚭閫氳繃妯℃澘鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:export')")
+    @Log(title = "閫氳繃妯℃澘", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, IvrLibaExtemplate ivrLibaExtemplate) {
         List<IvrLibaExtemplate> list = ivrLibaExtemplateService.selectIvrLibaExtemplateList(ivrLibaExtemplate);
         ExcelUtil<IvrLibaExtemplate> util = new ExcelUtil<IvrLibaExtemplate>(IvrLibaExtemplate.class);
-        util.exportExcel(response, list, "鎵╁睍璇濇湳妯℃澘搴撴暟鎹�");
+        util.exportExcel(response, list, "閫氳繃妯℃澘鏁版嵁");
     }
 
     /**
-     * 鑾峰彇鎵╁睍璇濇湳妯℃澘搴撹缁嗕俊鎭�
+     * 鑾峰彇閫氳繃妯℃澘璇︾粏淇℃伅
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:query')")
-    @GetMapping(value = "/{subModuleID}")
-    public AjaxResult getInfo(@PathVariable("subModuleID") String subModuleID) {
-        return success(ivrLibaExtemplateService.selectIvrLibaExtemplateBySubModuleID(subModuleID));
+    @ApiOperation("鑾峰彇閫氳繃妯℃澘璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:query')")
+    @GetMapping(value = "/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") String ID) {
+        return success(ivrLibaExtemplateService.selectIvrLibaExtemplateByID(ID));
     }
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴�
+     * 鏂板閫氳繃妯℃澘
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:add')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴�", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板閫氳繃妯℃澘")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:add')")
+    @Log(title = "閫氳繃妯℃澘", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     public AjaxResult add(@RequestBody IvrLibaExtemplate ivrLibaExtemplate) {
         return toAjax(ivrLibaExtemplateService.insertIvrLibaExtemplate(ivrLibaExtemplate));
     }
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴�
+     * 淇敼閫氳繃妯℃澘
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:edit')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴�", businessType = BusinessType.UPDATE)
+    @ApiOperation("淇敼閫氳繃妯℃澘")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:edit')")
+    @Log(title = "閫氳繃妯℃澘", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     public AjaxResult edit(@RequestBody IvrLibaExtemplate ivrLibaExtemplate) {
         return toAjax(ivrLibaExtemplateService.updateIvrLibaExtemplate(ivrLibaExtemplate));
     }
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴�
+     * 鍒犻櫎閫氳繃妯℃澘
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplate:remove')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴�", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{subModuleIDs}")
-    public AjaxResult remove(@PathVariable String[] subModuleIDs) {
-        return toAjax(ivrLibaExtemplateService.deleteIvrLibaExtemplateBySubModuleIDs(subModuleIDs));
+    @ApiOperation("鍒犻櫎閫氳繃妯℃澘")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplate:remove')")
+    @Log(title = "閫氳繃妯℃澘", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable String[] IDs) {
+        return toAjax(ivrLibaExtemplateService.deleteIvrLibaExtemplateByIDs(IDs));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplatescriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplatescriptController.java
index c008137..ce6297b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplatescriptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaExtemplatescriptController.java
@@ -1,104 +1,100 @@
 package com.ruoyi.web.controller.smartor;
 
-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.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.IvrLibaExtemplatescript;
 import com.smartor.service.IIvrLibaExtemplatescriptService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈疌ontroller
- * 
- * @author smartor
- * @date 2023-03-22
+ * 閫氱敤妯℃澘璇濇湳Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-27
  */
+@Api(description = "閫氱敤妯℃澘璇濇湳")
 @RestController
-@RequestMapping("/smartor/ivrextemplatescript")
-public class IvrLibaExtemplatescriptController extends BaseController
-{
+@RequestMapping("/smartor/extemplatescript")
+public class IvrLibaExtemplatescriptController extends BaseController {
     @Autowired
     private IIvrLibaExtemplatescriptService ivrLibaExtemplatescriptService;
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈垪琛�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳鍒楄〃
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:list')")
-   @PostMapping("/list")
-    public TableDataInfo list(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    @ApiOperation("鏌ヨ閫氱敤妯℃澘璇濇湳鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         startPage();
         List<IvrLibaExtemplatescript> list = ivrLibaExtemplatescriptService.selectIvrLibaExtemplatescriptList(ivrLibaExtemplatescript);
         return getDataTable(list);
     }
 
     /**
-     * 瀵煎嚭鎵╁睍璇濇湳妯℃澘搴撹瘽鏈垪琛�
+     * 瀵煎嚭閫氱敤妯℃澘璇濇湳鍒楄〃
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:export')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.EXPORT)
+    @ApiOperation("瀵煎嚭閫氱敤妯℃澘璇濇湳鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:export')")
+    @Log(title = "閫氱敤妯℃澘璇濇湳", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public void export(HttpServletResponse response, IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         List<IvrLibaExtemplatescript> list = ivrLibaExtemplatescriptService.selectIvrLibaExtemplatescriptList(ivrLibaExtemplatescript);
         ExcelUtil<IvrLibaExtemplatescript> util = new ExcelUtil<IvrLibaExtemplatescript>(IvrLibaExtemplatescript.class);
-        util.exportExcel(response, list, "鎵╁睍璇濇湳妯℃澘搴撹瘽鏈暟鎹�");
+        util.exportExcel(response, list, "閫氱敤妯℃澘璇濇湳鏁版嵁");
     }
 
     /**
-     * 鑾峰彇鎵╁睍璇濇湳妯℃澘搴撹瘽鏈缁嗕俊鎭�
+     * 鑾峰彇閫氱敤妯℃澘璇濇湳璇︾粏淇℃伅
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:query')")
-    @GetMapping(value = "/{DetailID}")
-    public AjaxResult getInfo(@PathVariable("DetailID") String DetailID)
-    {
-        return success(ivrLibaExtemplatescriptService.selectIvrLibaExtemplatescriptByDetailID(DetailID));
+    @ApiOperation("鑾峰彇閫氱敤妯℃澘璇濇湳璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:query')")
+    @GetMapping(value = "/getInfo/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") String ID) {
+        return success(ivrLibaExtemplatescriptService.selectIvrLibaExtemplatescriptByID(ID));
     }
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏂板閫氱敤妯℃澘璇濇湳
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:add')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板閫氱敤妯℃澘璇濇湳")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:add')")
+    @Log(title = "閫氱敤妯℃澘璇濇湳", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public AjaxResult add(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         return toAjax(ivrLibaExtemplatescriptService.insertIvrLibaExtemplatescript(ivrLibaExtemplatescript));
     }
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 淇敼閫氱敤妯℃澘璇濇湳
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:edit')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.UPDATE)
+    @ApiOperation("淇敼閫氱敤妯℃澘璇濇湳")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:edit')")
+    @Log(title = "閫氱敤妯℃澘璇濇湳", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public AjaxResult edit(@RequestBody IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         return toAjax(ivrLibaExtemplatescriptService.updateIvrLibaExtemplatescript(ivrLibaExtemplatescript));
     }
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鍒犻櫎閫氱敤妯℃澘璇濇湳
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrextemplatescript:remove')")
-    @Log(title = "鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{DetailIDs}")
-    public AjaxResult remove(@PathVariable String[] DetailIDs)
-    {
-        return toAjax(ivrLibaExtemplatescriptService.deleteIvrLibaExtemplatescriptByDetailIDs(DetailIDs));
+    @ApiOperation("鍒犻櫎閫氱敤妯℃澘璇濇湳")
+    @PreAuthorize("@ss.hasPermi('smartor:extemplatescript:remove')")
+    @Log(title = "閫氱敤妯℃澘璇濇湳", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable String[] IDs) {
+        return toAjax(ivrLibaExtemplatescriptService.deleteIvrLibaExtemplatescriptByIDs(IDs));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaScriptAssortController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaScriptAssortController.java
index 895e517..9cdc026 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaScriptAssortController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaScriptAssortController.java
@@ -9,6 +9,8 @@
 import com.smartor.domain.IvrLibaScriptAssort;
 import com.smartor.domain.IvrLibaScriptAssortVO;
 import com.smartor.service.IIvrLibaScriptAssortService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -23,6 +25,7 @@
  * @author ruoyi
  * @date 2023-12-21
  */
+@Api(description = "闂璇濇湳鍒嗙被搴�")
 @RestController
 @RequestMapping("/smartor/scriptassort")
 public class IvrLibaScriptAssortController extends BaseController {
@@ -33,6 +36,7 @@
      * 鏌ヨ闂璇濇湳鍒嗙被搴�(鏍戠姸)
      * 鍒楄〃
      */
+    @ApiOperation("鏌ヨ闂璇濇湳鍒嗙被搴�(鏍戠姸)")
     @PreAuthorize("@ss.hasPermi('system:assort:list')")
     @PostMapping("/selectIvrLibaScriptAssortList")
     public TableDataInfo list(@RequestBody IvrLibaScriptAssort ivrLibaScriptAssort) {
@@ -44,6 +48,7 @@
      * 瀵煎嚭闂璇濇湳鍒嗙被搴�
      * 鍒楄〃
      */
+    @ApiOperation("瀵煎嚭闂璇濇湳鍒嗙被搴�")
     @PreAuthorize("@ss.hasPermi('system:assort:export')")
     @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
@@ -57,6 +62,7 @@
      * 鑾峰彇闂璇濇湳鍒嗙被搴�
      * 璇︾粏淇℃伅
      */
+    @ApiOperation("鑾峰彇闂璇濇湳鍒嗙被搴�")
     @PreAuthorize("@ss.hasPermi('system:assort:query')")
     @GetMapping(value = "/getInfo/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
@@ -66,6 +72,7 @@
     /**
      * 鏂板闂璇濇湳鍒嗙被搴�
      */
+    @ApiOperation("鏂板闂璇濇湳鍒嗙被搴�")
     @PreAuthorize("@ss.hasPermi('system:assort:add')")
     @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
@@ -74,8 +81,20 @@
     }
 
     /**
+     * 鏂板闂璇濇湳鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('system:assort:add')")
+    @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板闂璇濇湳鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody IvrLibaScriptAssortVO ivrLibaScriptAssortVO) {
+        return toAjax(ivrLibaScriptAssortService.insertIvrLibaScriptAssortTree(ivrLibaScriptAssortVO));
+    }
+
+    /**
      * 淇敼闂璇濇湳鍒嗙被搴�
      */
+    @ApiOperation("淇敼闂璇濇湳鍒嗙被搴�")
     @PreAuthorize("@ss.hasPermi('system:assort:edit')")
     @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -86,6 +105,7 @@
     /**
      * 鍒犻櫎闂璇濇湳鍒嗙被搴�
      */
+    @ApiOperation("鍒犻櫎闂璇濇湳鍒嗙被搴�")
     @PreAuthorize("@ss.hasPermi('system:assort:remove')")
     @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{ids}")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetAssortController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetAssortController.java
index 9ffa85a..2459efa 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetAssortController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetAssortController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaScriptAssortVO;
 import com.smartor.domain.IvrLibaTargetAssort;
 import com.smartor.domain.IvrLibaTargetAssortVO;
 import com.smartor.service.IIvrLibaTargetAssortService;
@@ -21,15 +22,14 @@
 
 /**
  * 鎸囨爣鍒嗙被Controller
- * 
+ *
  * @author ruoyi
  * @date 2023-12-14
  */
 @Api(description = "鎸囨爣鍒嗙被")
 @RestController
 @RequestMapping("/smartor/assort")
-public class IvrLibaTargetAssortController extends BaseController
-{
+public class IvrLibaTargetAssortController extends BaseController {
     @Autowired
     private IIvrLibaTargetAssortService ivrLibaTargetAssortService;
 
@@ -39,9 +39,8 @@
     @ApiOperation("鏌ヨ鎸囨爣鍒嗙被鍒楄〃")
     @PreAuthorize("@ss.hasPermi('system:assort:list')")
     @PostMapping("/selectIvrLibaTargetAssortList")
-    public TableDataInfo list(@RequestBody    IvrLibaTargetAssort ivrLibaTargetAssort)
-    {
-        PageUtils.startPageByPost(ivrLibaTargetAssort.getPageNum(),ivrLibaTargetAssort.getPageSize());
+    public TableDataInfo list(@RequestBody IvrLibaTargetAssort ivrLibaTargetAssort) {
+//        PageUtils.startPageByPost(ivrLibaTargetAssort.getPageNum(), ivrLibaTargetAssort.getPageSize());
         List<IvrLibaTargetAssortVO> ivrLibaTargetAssortVOS = ivrLibaTargetAssortService.selectIvrLibaTargetAssortList(ivrLibaTargetAssort);
         return getDataTable(ivrLibaTargetAssortVOS);
     }
@@ -53,8 +52,7 @@
     @PreAuthorize("@ss.hasPermi('system:assort:export')")
     @Log(title = "鎸囨爣鍒嗙被", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaTargetAssort ivrLibaTargetAssort)
-    {
+    public void export(HttpServletResponse response, IvrLibaTargetAssort ivrLibaTargetAssort) {
         List<IvrLibaTargetAssortVO> list = ivrLibaTargetAssortService.selectIvrLibaTargetAssortList(ivrLibaTargetAssort);
         ExcelUtil<IvrLibaTargetAssortVO> util = new ExcelUtil<IvrLibaTargetAssortVO>(IvrLibaTargetAssortVO.class);
         util.exportExcel(response, list, "鎸囨爣鍒嗙被鏁版嵁");
@@ -66,8 +64,7 @@
     @ApiOperation("鑾峰彇鎸囨爣鍒嗙被璇︾粏淇℃伅")
     @PreAuthorize("@ss.hasPermi('system:assort:query')")
     @GetMapping(value = "/getInfo/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(ivrLibaTargetAssortService.selectIvrLibaTargetAssortById(id));
     }
 
@@ -78,9 +75,19 @@
     @PreAuthorize("@ss.hasPermi('system:assort:add')")
     @Log(title = "鎸囨爣鍒嗙被", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTargetAssort ivrLibaTargetAssort)
-    {
+    public AjaxResult add(@RequestBody IvrLibaTargetAssort ivrLibaTargetAssort) {
         return toAjax(ivrLibaTargetAssortService.insertIvrLibaTargetAssort(ivrLibaTargetAssort));
+    }
+
+    /**
+     * 鏂板鎸囨爣鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('system:assort:add')")
+    @Log(title = "鎸囨爣鍒嗙被", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板鎸囨爣鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody IvrLibaTargetAssortVO ivrLibaTargetAssortVO) {
+        return toAjax(ivrLibaTargetAssortService.insertIvrLibaTargetAssortTree(ivrLibaTargetAssortVO));
     }
 
     /**
@@ -90,8 +97,7 @@
     @PreAuthorize("@ss.hasPermi('system:assort:edit')")
     @Log(title = "鎸囨爣鍒嗙被", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTargetAssort ivrLibaTargetAssort)
-    {
+    public AjaxResult edit(@RequestBody IvrLibaTargetAssort ivrLibaTargetAssort) {
         return toAjax(ivrLibaTargetAssortService.updateIvrLibaTargetAssort(ivrLibaTargetAssort));
     }
 
@@ -101,9 +107,8 @@
     @ApiOperation("鍒犻櫎鎸囨爣鍒嗙被")
     @PreAuthorize("@ss.hasPermi('system:assort:remove')")
     @Log(title = "鎸囨爣鍒嗙被", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(ivrLibaTargetAssortService.deleteIvrLibaTargetAssortByIds(ids));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateAssortController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateAssortController.java
new file mode 100644
index 0000000..4b2a373
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateAssortController.java
@@ -0,0 +1,113 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.HeLibraryAssortVO;
+import com.smartor.domain.IvrLibaTemplateAssort;
+import com.smartor.domain.IvrLibaTemplateAssortVO;
+import com.smartor.service.IIvrLibaTemplateAssortService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 妯℃澘鍒嗙被Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Api(description = "妯℃澘鍒嗙被")
+@RestController
+@RequestMapping("/smartor/templateassort")
+public class IvrLibaTemplateAssortController extends BaseController {
+    @Autowired
+    private IIvrLibaTemplateAssortService ivrLibaTemplateAssortService;
+
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被鍒楄〃
+     */
+    @ApiOperation("鏌ヨ妯℃澘鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:list')")
+    @PostMapping("/selectIvrLibaTemplateAssortList")
+    public TableDataInfo selectIvrLibaTemplateAssortList(@RequestBody IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+//        startPage();
+        List<IvrLibaTemplateAssortVO> list = ivrLibaTemplateAssortService.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭妯℃澘鍒嗙被鍒楄〃
+     */
+    @ApiOperation("瀵煎嚭妯℃澘鍒嗙被鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:export')")
+    @Log(title = "妯℃澘鍒嗙被", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+        List<IvrLibaTemplateAssortVO> list = ivrLibaTemplateAssortService.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort);
+        ExcelUtil<IvrLibaTemplateAssortVO> util = new ExcelUtil<IvrLibaTemplateAssortVO>(IvrLibaTemplateAssortVO.class);
+        util.exportExcel(response, list, "妯℃澘鍒嗙被鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇妯℃澘鍒嗙被璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇妯℃澘鍒嗙被璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(ivrLibaTemplateAssortService.selectIvrLibaTemplateAssortById(id));
+    }
+
+    /**
+     * 鏂板妯℃澘鍒嗙被
+     */
+    @ApiOperation("鏂板妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "妯℃澘鍒嗙被", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+        return toAjax(ivrLibaTemplateAssortService.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort));
+    }
+
+    /**
+     * 鏂板妯℃澘鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "妯℃澘鍒嗙被", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板妯℃澘鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO) {
+        return toAjax(ivrLibaTemplateAssortService.insertIvrLibaTemplateAssortTree(ivrLibaTemplateAssortVO));
+    }
+
+    /**
+     * 淇敼妯℃澘鍒嗙被
+     */
+    @ApiOperation("淇敼妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:edit')")
+    @Log(title = "妯℃澘鍒嗙被", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+        return toAjax(ivrLibaTemplateAssortService.updateIvrLibaTemplateAssort(ivrLibaTemplateAssort));
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鍒嗙被
+     */
+    @ApiOperation("鍒犻櫎妯℃澘鍒嗙被")
+    @PreAuthorize("@ss.hasPermi('smartor:assort:remove')")
+    @Log(title = "妯℃澘鍒嗙被", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(ivrLibaTemplateAssortService.deleteIvrLibaTemplateAssortByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
index 1527e9f..00e60fb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateController.java
@@ -1,104 +1,128 @@
-package com.smartor.controller;
+package com.ruoyi.web.controller.smartor;
 
-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.IvrLibaTemplate;
-import com.smartor.service.IIvrLibaTemplateService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaTemplate;
+import com.smartor.domain.IvrLibaTemplateVO;
+import com.smartor.service.IIvrLibaTemplateService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
- * 璇濇湳妯℃澘搴揅ontroller
- * 
- * @author smartor
- * @date 2023-03-22
+ * 闅忚妯℃澘搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2023-12-23
  */
+@Api(description = "闅忚妯℃澘搴�")
 @RestController
-@RequestMapping("/smartor/ivrtemplate")
-public class IvrLibaTemplateController extends BaseController
-{
+@RequestMapping("/smartor/template")
+public class IvrLibaTemplateController extends BaseController {
     @Autowired
     private IIvrLibaTemplateService ivrLibaTemplateService;
 
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴撳垪琛�
+     * 鏌ヨ妯℃澘搴撳垪琛�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:list')")
-   @PostMapping("/list")
-    public TableDataInfo list(@RequestBody IvrLibaTemplate ivrLibaTemplate)
-    {
+    @ApiOperation("鏌ヨ闅忚妯℃澘搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaTemplate ivrLibaTemplate) {
         startPage();
         List<IvrLibaTemplate> list = ivrLibaTemplateService.selectIvrLibaTemplateList(ivrLibaTemplate);
         return getDataTable(list);
     }
 
     /**
-     * 瀵煎嚭璇濇湳妯℃澘搴撳垪琛�
+     * 瀵煎嚭妯℃澘搴撳垪琛�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:export')")
-    @Log(title = "璇濇湳妯℃澘搴�", businessType = BusinessType.EXPORT)
+    @ApiOperation("瀵煎嚭闅忚妯℃澘搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:export')")
+    @Log(title = "妯℃澘搴�", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaTemplate ivrLibaTemplate)
-    {
+    public void export(HttpServletResponse response, IvrLibaTemplate ivrLibaTemplate) {
         List<IvrLibaTemplate> list = ivrLibaTemplateService.selectIvrLibaTemplateList(ivrLibaTemplate);
         ExcelUtil<IvrLibaTemplate> util = new ExcelUtil<IvrLibaTemplate>(IvrLibaTemplate.class);
-        util.exportExcel(response, list, "璇濇湳妯℃澘搴撴暟鎹�");
+        util.exportExcel(response, list, "妯℃澘搴撴暟鎹�");
     }
 
     /**
-     * 鑾峰彇璇濇湳妯℃澘搴撹缁嗕俊鎭�
+     * 鑾峰彇妯℃澘搴撹缁嗕俊鎭�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:query')")
-    @GetMapping(value = "/{templateID}")
-    public AjaxResult getInfo(@PathVariable("templateID") String templateID)
-    {
-        return success(ivrLibaTemplateService.selectIvrLibaTemplateByTemplateID(templateID));
+    @ApiOperation("鑾峰彇闅忚妯℃澘搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:query')")
+    @GetMapping(value = "/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") Long ID) {
+        return success(ivrLibaTemplateService.selectIvrLibaTemplateByID(ID));
     }
 
     /**
-     * 鏂板璇濇湳妯℃澘搴�
+     * 鏂板妯℃澘搴�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:add')")
-    @Log(title = "璇濇湳妯℃澘搴�", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板闅忚妯℃澘搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:add')")
+    @Log(title = "妯℃澘搴�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTemplate ivrLibaTemplate)
-    {
+    public AjaxResult add(@RequestBody IvrLibaTemplate ivrLibaTemplate) {
         return toAjax(ivrLibaTemplateService.insertIvrLibaTemplate(ivrLibaTemplate));
     }
 
     /**
-     * 淇敼璇濇湳妯℃澘搴�
+     * 淇敼妯℃澘搴�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:edit')")
-    @Log(title = "璇濇湳妯℃澘搴�", businessType = BusinessType.UPDATE)
+    @ApiOperation("淇敼闅忚妯℃澘搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:edit')")
+    @Log(title = "妯℃澘搴�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTemplate ivrLibaTemplate)
-    {
+    public AjaxResult edit(@RequestBody IvrLibaTemplate ivrLibaTemplate) {
         return toAjax(ivrLibaTemplateService.updateIvrLibaTemplate(ivrLibaTemplate));
     }
 
     /**
-     * 鍒犻櫎璇濇湳妯℃澘搴�
+     * 鍒犻櫎妯℃澘搴�
      */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplate:remove')")
-    @Log(title = "璇濇湳妯℃澘搴�", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{templateIDs}")
-    public AjaxResult remove(@PathVariable String[] templateIDs)
-    {
-        return toAjax(ivrLibaTemplateService.deleteIvrLibaTemplateByTemplateIDs(templateIDs));
+    @ApiOperation("鍒犻櫎闅忚妯℃澘搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:template:remove')")
+    @Log(title = "妯℃澘搴�", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable Long[] IDs) {
+        return toAjax(ivrLibaTemplateService.deleteIvrLibaTemplateByIDs(IDs));
+    }
+
+    /**
+     * 鏂板鎴栦慨鏀归棶棰樿鎯�
+     */
+    @ApiOperation("鏂板鎴栦慨鏀归殢璁挎ā鏉垮簱璇︽儏")
+    @PreAuthorize("@ss.hasPermi('smartor:script:list')")
+    @PostMapping("/saveOrUpdateScript")
+    public AjaxResult saveOrUpdateScript(@RequestBody IvrLibaTemplateVO ivrLibaTemplateVO) {
+        if (ObjectUtils.isEmpty(ivrLibaTemplateVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(ivrLibaTemplateService.saveOrUpdateTemplate(ivrLibaTemplateVO));
+    }
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    @ApiOperation("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢")
+    @PostMapping("/selectInfoByCondition")
+    public AjaxResult selectInfoByCondition(IvrLibaTemplateVO ivrLibaTemplateVO) {
+        if (ObjectUtils.isEmpty(ivrLibaTemplateVO)) {
+            throw new BaseException("鏌ヨ妯℃澘璇︽儏鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(ivrLibaTemplateService.selectInfoByCondition(ivrLibaTemplateVO));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateScriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateScriptController.java
new file mode 100644
index 0000000..ea0c6bd
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateScriptController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaTemplateScript;
+import com.smartor.service.IIvrLibaTemplateScriptService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 妯$増闂璇濇湳搴揅ontroller
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Api(description = "妯$増闂璇濇湳搴�")
+@RestController
+@RequestMapping("/smartor/templatescript")
+public class IvrLibaTemplateScriptController extends BaseController
+{
+    @Autowired
+    private IIvrLibaTemplateScriptService ivrLibaTemplateScriptService;
+
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ妯$増闂璇濇湳搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaTemplateScript ivrLibaTemplateScript)
+    {
+        startPage();
+        List<IvrLibaTemplateScript> list = ivrLibaTemplateScriptService.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭妯$増闂璇濇湳搴撳垪琛�
+     */
+    @ApiOperation("瀵煎嚭妯$増闂璇濇湳搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:export')")
+    @Log(title = "妯$増闂璇濇湳搴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaTemplateScript ivrLibaTemplateScript)
+    {
+        List<IvrLibaTemplateScript> list = ivrLibaTemplateScriptService.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+        ExcelUtil<IvrLibaTemplateScript> util = new ExcelUtil<IvrLibaTemplateScript>(IvrLibaTemplateScript.class);
+        util.exportExcel(response, list, "妯$増闂璇濇湳搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇妯$増闂璇濇湳搴撹缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇妯$増闂璇濇湳搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:query')")
+    @GetMapping(value = "/getInfo/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") Long ID)
+    {
+        return success(ivrLibaTemplateScriptService.selectIvrLibaTemplateScriptByID(ID));
+    }
+
+    /**
+     * 鏂板妯$増闂璇濇湳搴�
+     */
+    @ApiOperation("鏂板妯$増闂璇濇湳搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:add')")
+    @Log(title = "妯$増闂璇濇湳搴�", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaTemplateScript ivrLibaTemplateScript)
+    {
+        return toAjax(ivrLibaTemplateScriptService.insertIvrLibaTemplateScript(ivrLibaTemplateScript));
+    }
+
+    /**
+     * 淇敼妯$増闂璇濇湳搴�
+     */
+    @ApiOperation("淇敼妯$増闂璇濇湳搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:edit')")
+    @Log(title = "妯$増闂璇濇湳搴�", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaTemplateScript ivrLibaTemplateScript)
+    {
+        return toAjax(ivrLibaTemplateScriptService.updateIvrLibaTemplateScript(ivrLibaTemplateScript));
+    }
+
+    /**
+     * 鍒犻櫎妯$増闂璇濇湳搴�
+     */
+    @ApiOperation("鍒犻櫎妯$増闂璇濇湳搴�")
+    @PreAuthorize("@ss.hasPermi('smartor:script:remove')")
+    @Log(title = "妯$増闂璇濇湳搴�", businessType = BusinessType.DELETE)
+	@GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable Long[] IDs)
+    {
+        return toAjax(ivrLibaTemplateScriptService.deleteIvrLibaTemplateScriptByIDs(IDs));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTagController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTagController.java
new file mode 100644
index 0000000..efe7911
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTagController.java
@@ -0,0 +1,100 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaTemplateTag;
+import com.smartor.service.IIvrLibaTemplateTagService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 妯℃澘鏍囩Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+//@Api(description = " * 妯℃澘鏍囩")
+@RestController
+@RequestMapping("/smartor/templatetag")
+public class IvrLibaTemplateTagController extends BaseController {
+    @Autowired
+    private IIvrLibaTemplateTagService ivrLibaTemplateTagService;
+
+    /**
+     * 鏌ヨ妯℃澘鏍囩鍒楄〃
+     */
+//    @ApiOperation("鏌ヨ妯℃澘鏍囩鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaTemplateTag ivrLibaTemplateTag) {
+        startPage();
+        List<IvrLibaTemplateTag> list = ivrLibaTemplateTagService.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭妯℃澘鏍囩鍒楄〃
+     */
+//    @ApiOperation("瀵煎嚭妯℃澘鏍囩鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:export')")
+    @Log(title = "妯℃澘鏍囩", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaTemplateTag ivrLibaTemplateTag) {
+        List<IvrLibaTemplateTag> list = ivrLibaTemplateTagService.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
+        ExcelUtil<IvrLibaTemplateTag> util = new ExcelUtil<IvrLibaTemplateTag>(IvrLibaTemplateTag.class);
+        util.exportExcel(response, list, "妯℃澘鏍囩鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇妯℃澘鏍囩璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇妯℃澘鏍囩璇︾粏淇℃伅")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(ivrLibaTemplateTagService.selectIvrLibaTemplateTagById(id));
+    }
+
+    /**
+     * 鏂板妯℃澘鏍囩
+     */
+    @ApiOperation("鏂板妯℃澘鏍囩")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:add')")
+    @Log(title = "妯℃澘鏍囩", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaTemplateTag ivrLibaTemplateTag) {
+        return toAjax(ivrLibaTemplateTagService.insertIvrLibaTemplateTag(ivrLibaTemplateTag));
+    }
+
+    /**
+     * 淇敼妯℃澘鏍囩
+     */
+    @ApiOperation("淇敼妯℃澘鏍囩")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:edit')")
+    @Log(title = "妯℃澘鏍囩", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaTemplateTag ivrLibaTemplateTag) {
+        return toAjax(ivrLibaTemplateTagService.updateIvrLibaTemplateTag(ivrLibaTemplateTag));
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鏍囩
+     */
+    @ApiOperation("鍒犻櫎妯℃澘鏍囩")
+    @PreAuthorize("@ss.hasPermi('smartor:tag:remove')")
+    @Log(title = "妯℃澘鏍囩", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(ivrLibaTemplateTagService.deleteIvrLibaTemplateTagByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java
new file mode 100644
index 0000000..7019856
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetController.java
@@ -0,0 +1,100 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaTemplateTarget;
+import com.smartor.service.IIvrLibaTemplateTargetService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 妯$増闂鎸囨爣搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Api(description = " 妯$増闂鎸囨爣搴�")
+@RestController
+@RequestMapping("/smartor/templatetarget")
+public class IvrLibaTemplateTargetController extends BaseController {
+    @Autowired
+    private IIvrLibaTemplateTargetService ivrLibaTemplateTargetService;
+
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ妯$増闂鎸囨爣搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:target:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        startPage();
+        List<IvrLibaTemplateTarget> list = ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭妯$増闂鎸囨爣搴撳垪琛�
+     */
+    @ApiOperation("瀵煎嚭妯$増闂鎸囨爣搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:target:export')")
+    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        List<IvrLibaTemplateTarget> list = ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
+        ExcelUtil<IvrLibaTemplateTarget> util = new ExcelUtil<IvrLibaTemplateTarget>(IvrLibaTemplateTarget.class);
+        util.exportExcel(response, list, "妯$増闂鎸囨爣搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇妯$増闂鎸囨爣搴撹缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇妯$増闂鎸囨爣搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:target:query')")
+    @GetMapping(value = "/getInfo/{ID}")
+    public AjaxResult getInfo(@PathVariable("ID") Long ID) {
+        return success(ivrLibaTemplateTargetService.selectIvrLibaTemplateTargetByID(ID));
+    }
+
+    /**
+     * 鏂板妯$増闂鎸囨爣搴�
+     */
+    @ApiOperation("鏂板妯$増闂鎸囨爣搴�")
+    @PreAuthorize("@ss.hasPermi('system:target:add')")
+    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        return toAjax(ivrLibaTemplateTargetService.insertIvrLibaTemplateTarget(ivrLibaTemplateTarget));
+    }
+
+    /**
+     * 淇敼妯$増闂鎸囨爣搴�
+     */
+    @ApiOperation("淇敼妯$増闂鎸囨爣搴�")
+    @PreAuthorize("@ss.hasPermi('system:target:edit')")
+    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        return toAjax(ivrLibaTemplateTargetService.updateIvrLibaTemplateTarget(ivrLibaTemplateTarget));
+    }
+
+    /**
+     * 鍒犻櫎妯$増闂鎸囨爣搴�
+     */
+    @ApiOperation("鍒犻櫎妯$増闂鎸囨爣搴�")
+    @PreAuthorize("@ss.hasPermi('system:target:remove')")
+    @Log(title = "妯$増闂鎸囨爣搴�", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{IDs}")
+    public AjaxResult remove(@PathVariable Long[] IDs) {
+        return toAjax(ivrLibaTemplateTargetService.deleteIvrLibaTemplateTargetByIDs(IDs));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetoptionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetoptionController.java
new file mode 100644
index 0000000..be42374
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplateTargetoptionController.java
@@ -0,0 +1,100 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.IvrLibaTemplateTargetoption;
+import com.smartor.service.IIvrLibaTemplateTargetoptionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 妯℃澘鎸囨爣閫夐」搴揅ontroller
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Api(description = " 妯℃澘鎸囨爣閫夐」搴�")
+@RestController
+@RequestMapping("/smartor/templatetargetoption")
+public class IvrLibaTemplateTargetoptionController extends BaseController {
+    @Autowired
+    private IIvrLibaTemplateTargetoptionService ivrLibaTemplateTargetoptionService;
+
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     */
+    @ApiOperation("鏌ヨ妯℃澘鎸囨爣閫夐」搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        startPage();
+        List<IvrLibaTemplateTargetoption> list = ivrLibaTemplateTargetoptionService.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     */
+    @ApiOperation("瀵煎嚭妯℃澘鎸囨爣閫夐」搴撳垪琛�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:export')")
+    @Log(title = "妯℃澘鎸囨爣閫夐」搴�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        List<IvrLibaTemplateTargetoption> list = ivrLibaTemplateTargetoptionService.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
+        ExcelUtil<IvrLibaTemplateTargetoption> util = new ExcelUtil<IvrLibaTemplateTargetoption>(IvrLibaTemplateTargetoption.class);
+        util.exportExcel(response, list, "妯℃澘鎸囨爣閫夐」搴撴暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇妯℃澘鎸囨爣閫夐」搴撹缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇妯℃澘鎸囨爣閫夐」搴撹缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(ivrLibaTemplateTargetoptionService.selectIvrLibaTemplateTargetoptionById(id));
+    }
+
+    /**
+     * 鏂板妯℃澘鎸囨爣閫夐」搴�
+     */
+    @ApiOperation("鏂板妯℃澘鎸囨爣閫夐」搴�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:add')")
+    @Log(title = "妯℃澘鎸囨爣閫夐」搴�", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        return toAjax(ivrLibaTemplateTargetoptionService.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption));
+    }
+
+    /**
+     * 淇敼妯℃澘鎸囨爣閫夐」搴�
+     */
+    @ApiOperation("淇敼妯℃澘鎸囨爣閫夐」搴�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:edit')")
+    @Log(title = "妯℃澘鎸囨爣閫夐」搴�", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        return toAjax(ivrLibaTemplateTargetoptionService.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption));
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鎸囨爣閫夐」搴�
+     */
+    @ApiOperation("鍒犻櫎妯℃澘鎸囨爣閫夐」搴�")
+    @PreAuthorize("@ss.hasPermi('system:targetoption:remove')")
+    @Log(title = "妯℃澘鎸囨爣閫夐」搴�", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(ivrLibaTemplateTargetoptionService.deleteIvrLibaTemplateTargetoptionByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatescriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatescriptController.java
deleted file mode 100644
index 3bc794d..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatescriptController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-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.IvrLibaTemplatescript;
-import com.smartor.service.IIvrLibaTemplatescriptService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈疌ontroller
- * 
- * @author smartor
- * @date 2023-03-22
- */
-@RestController
-@RequestMapping("/smartor/ivrtemplatescript")
-public class IvrLibaTemplatescriptController extends BaseController
-{
-    @Autowired
-    private IIvrLibaTemplatescriptService ivrLibaTemplatescriptService;
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:list')")
-   @PostMapping("/list")
-    public TableDataInfo list(@RequestBody IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        startPage();
-        List<IvrLibaTemplatescript> list = ivrLibaTemplatescriptService.selectIvrLibaTemplatescriptList(ivrLibaTemplatescript);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:export')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        List<IvrLibaTemplatescript> list = ivrLibaTemplatescriptService.selectIvrLibaTemplatescriptList(ivrLibaTemplatescript);
-        ExcelUtil<IvrLibaTemplatescript> util = new ExcelUtil<IvrLibaTemplatescript>(IvrLibaTemplatescript.class);
-        util.exportExcel(response, list, "璇濇湳妯℃澘搴撹瘽鏈暟鎹�");
-    }
-
-    /**
-     * 鑾峰彇璇濇湳妯℃澘搴撹瘽鏈缁嗕俊鎭�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:query')")
-    @GetMapping(value = "/{templateQuestionID}")
-    public AjaxResult getInfo(@PathVariable("templateQuestionID") String templateQuestionID)
-    {
-        return success(ivrLibaTemplatescriptService.selectIvrLibaTemplatescriptByTemplateQuestionID(templateQuestionID));
-    }
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:add')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        return toAjax(ivrLibaTemplatescriptService.insertIvrLibaTemplatescript(ivrLibaTemplatescript));
-    }
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:edit')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        return toAjax(ivrLibaTemplatescriptService.updateIvrLibaTemplatescript(ivrLibaTemplatescript));
-    }
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatescript:remove')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈�", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{templateQuestionIDs}")
-    public AjaxResult remove(@PathVariable String[] templateQuestionIDs)
-    {
-        return toAjax(ivrLibaTemplatescriptService.deleteIvrLibaTemplatescriptByTemplateQuestionIDs(templateQuestionIDs));
-    }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetAssortController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetAssortController.java
deleted file mode 100644
index 8e19ac5..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetAssortController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.ruoyi.web.controller.smartor;
-
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.smartor.domain.IvrLibaTemplatetargetAssort;
-import com.smartor.service.IIvrLibaTemplatetargetAssortService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * 鎸囨爣妯℃澘鍒嗙被Controller
- *
- * @author ruoyi
- * @date 2023-12-18
- */
-@Api(description = "鎸囨爣妯℃澘鍒嗙被")
-@RestController
-@RequestMapping("/templatetarget/assort")
-public class IvrLibaTemplatetargetAssortController extends BaseController {
-    @Autowired
-    private IIvrLibaTemplatetargetAssortService ivrLibaTemplatetargetAssortService;
-
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被鍒楄〃
-     */
-    @PreAuthorize("@ss.hasPermi('system:assort:list')")
-    @PostMapping("/list")
-    @ApiOperation("鏌ヨ鎸囨爣妯℃澘鍒嗙被鍒楄〃")
-    public TableDataInfo list(@RequestBody IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        startPage();
-        List<IvrLibaTemplatetargetAssort> list = ivrLibaTemplatetargetAssortService.selectIvrLibaTemplatetargetAssortList(ivrLibaTemplatetargetAssort);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭鎸囨爣妯℃澘鍒嗙被鍒楄〃
-     */
-    @PreAuthorize("@ss.hasPermi('system:assort:export')")
-    @Log(title = "鎸囨爣妯℃澘鍒嗙被", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    @ApiOperation("瀵煎嚭鎸囨爣妯℃澘鍒嗙被鍒楄〃")
-    public void export(HttpServletResponse response, IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        List<IvrLibaTemplatetargetAssort> list = ivrLibaTemplatetargetAssortService.selectIvrLibaTemplatetargetAssortList(ivrLibaTemplatetargetAssort);
-        ExcelUtil<IvrLibaTemplatetargetAssort> util = new ExcelUtil<IvrLibaTemplatetargetAssort>(IvrLibaTemplatetargetAssort.class);
-        util.exportExcel(response, list, "鎸囨爣妯℃澘鍒嗙被鏁版嵁");
-    }
-
-    /**
-     * 鑾峰彇鎸囨爣妯℃澘鍒嗙被璇︾粏淇℃伅
-     */
-    @ApiOperation("鑾峰彇鎸囨爣妯℃澘鍒嗙被璇︾粏淇℃伅")
-    @PreAuthorize("@ss.hasPermi('system:assort:query')")
-    @GetMapping(value = "/getInfo/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id) {
-        return success(ivrLibaTemplatetargetAssortService.selectIvrLibaTemplatetargetAssortById(id));
-    }
-
-    /**
-     * 鏂板鎸囨爣妯℃澘鍒嗙被
-     */
-    @ApiOperation("鏂板鎸囨爣妯℃澘鍒嗙被")
-    @PreAuthorize("@ss.hasPermi('system:assort:add')")
-    @Log(title = "鎸囨爣妯℃澘鍒嗙被", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        return toAjax(ivrLibaTemplatetargetAssortService.insertIvrLibaTemplatetargetAssort(ivrLibaTemplatetargetAssort));
-    }
-
-    /**
-     * 淇敼鎸囨爣妯℃澘鍒嗙被
-     */
-    @ApiOperation("淇敼鎸囨爣妯℃澘鍒嗙被")
-    @PreAuthorize("@ss.hasPermi('system:assort:edit')")
-    @Log(title = "鎸囨爣妯℃澘鍒嗙被", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        return toAjax(ivrLibaTemplatetargetAssortService.updateIvrLibaTemplatetargetAssort(ivrLibaTemplatetargetAssort));
-    }
-
-    /**
-     * 鍒犻櫎鎸囨爣妯℃澘鍒嗙被
-     */
-    @ApiOperation("鍒犻櫎鎸囨爣妯℃澘鍒嗙被")
-    @PreAuthorize("@ss.hasPermi('system:assort:remove')")
-    @Log(title = "鎸囨爣妯℃澘鍒嗙被", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids) {
-        return toAjax(ivrLibaTemplatetargetAssortService.deleteIvrLibaTemplatetargetAssortByIds(ids));
-    }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetController.java
deleted file mode 100644
index 3895eb0..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTemplatetargetController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-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.IvrLibaTemplatetarget;
-import com.smartor.service.IIvrLibaTemplatetargetService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈寚鏍嘋ontroller
- * 
- * @author smartor
- * @date 2023-03-22
- */
-@RestController
-@RequestMapping("/smartor/ivrtemplatetarget")
-public class IvrLibaTemplatetargetController extends BaseController
-{
-    @Autowired
-    private IIvrLibaTemplatetargetService ivrLibaTemplatetargetService;
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍囧垪琛�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:list')")
-   @PostMapping("/list")
-    public TableDataInfo list(@RequestBody IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        startPage();
-        List<IvrLibaTemplatetarget> list = ivrLibaTemplatetargetService.selectIvrLibaTemplatetargetList(ivrLibaTemplatetarget);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭璇濇湳妯℃澘搴撹瘽鏈寚鏍囧垪琛�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:export')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈寚鏍�", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        List<IvrLibaTemplatetarget> list = ivrLibaTemplatetargetService.selectIvrLibaTemplatetargetList(ivrLibaTemplatetarget);
-        ExcelUtil<IvrLibaTemplatetarget> util = new ExcelUtil<IvrLibaTemplatetarget>(IvrLibaTemplatetarget.class);
-        util.exportExcel(response, list, "璇濇湳妯℃澘搴撹瘽鏈寚鏍囨暟鎹�");
-    }
-
-    /**
-     * 鑾峰彇璇濇湳妯℃澘搴撹瘽鏈寚鏍囪缁嗕俊鎭�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:query')")
-    @GetMapping(value = "/{templateTargetID}")
-    public AjaxResult getInfo(@PathVariable("templateTargetID") String templateTargetID)
-    {
-        return success(ivrLibaTemplatetargetService.selectIvrLibaTemplatetargetByTemplateTargetID(templateTargetID));
-    }
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:add')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈寚鏍�", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@RequestBody IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        return toAjax(ivrLibaTemplatetargetService.insertIvrLibaTemplatetarget(ivrLibaTemplatetarget));
-    }
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:edit')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈寚鏍�", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        return toAjax(ivrLibaTemplatetargetService.updateIvrLibaTemplatetarget(ivrLibaTemplatetarget));
-    }
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    @PreAuthorize("@ss.hasPermi('smartor:ivrtemplatetarget:remove')")
-    @Log(title = "璇濇湳妯℃澘搴撹瘽鏈寚鏍�", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{templateTargetIDs}")
-    public AjaxResult remove(@PathVariable String[] templateTargetIDs)
-    {
-        return toAjax(ivrLibaTemplatetargetService.deleteIvrLibaTemplatetargetByTemplateTargetIDs(templateTargetIDs));
-    }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyCategoryController.java
index ef6e573..340cf00 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyCategoryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyCategoryController.java
@@ -3,6 +3,8 @@
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.smartor.domain.IvrLibaScriptAssortVO;
+import com.smartor.domain.SvyCategoryVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -36,10 +38,10 @@
      * 鏌ヨ闂嵎鍒嗙被鍒楄〃
      */
     @PreAuthorize("@ss.hasPermi('smartor:svycategory:list')")
-   @PostMapping("/list")
+    @PostMapping("/list")
     public TableDataInfo list(@RequestBody SvyCategory svyCategory) {
-        startPage();
-        List<SvyCategory> list = svyCategoryService.selectSvyCategoryList(svyCategory);
+//        startPage();
+        List<SvyCategoryVO> list = svyCategoryService.selectSvyCategoryList(svyCategory);
         return getDataTable(list);
     }
 
@@ -50,8 +52,8 @@
     @Log(title = "闂嵎鍒嗙被", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, SvyCategory svyCategory) {
-        List<SvyCategory> list = svyCategoryService.selectSvyCategoryList(svyCategory);
-        ExcelUtil<SvyCategory> util = new ExcelUtil<SvyCategory>(SvyCategory.class);
+        List<SvyCategoryVO> list = svyCategoryService.selectSvyCategoryList(svyCategory);
+        ExcelUtil<SvyCategoryVO> util = new ExcelUtil<SvyCategoryVO>(SvyCategoryVO.class);
         util.exportExcel(response, list, "闂嵎鍒嗙被鏁版嵁");
     }
 
@@ -77,6 +79,17 @@
     }
 
     /**
+     * 鏂板闂嵎鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('system:assort:add')")
+    @Log(title = "闂璇濇湳鍒嗙被搴�", businessType = BusinessType.INSERT)
+    @ApiOperation("鏂板闂嵎鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody SvyCategoryVO svyCategoryVO) {
+        return toAjax(svyCategoryService.insertSvyCategoryTree(svyCategoryVO));
+    }
+
+    /**
      * 淇敼闂嵎鍒嗙被
      */
     @PreAuthorize("@ss.hasPermi('smartor:svycategory:edit')")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleCategoryController.java
new file mode 100644
index 0000000..0c19e37
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleCategoryController.java
@@ -0,0 +1,107 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.SvyLibTitleCategory;
+import com.smartor.domain.SvyLibTitleCategoryVO;
+import com.smartor.service.ISvyLibTitleCategoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Api(description = "闂嵎妯℃澘鍒嗙被")
+@RestController
+@RequestMapping("/smartor/svyLibTitleCategory")
+public class SvyLibTitleCategoryController extends BaseController {
+    @Autowired
+    private ISvyLibTitleCategoryService svyLibTitleCategoryService;
+
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody SvyLibTitleCategory svyLibTitleCategory) {
+        startPage();
+        List<SvyLibTitleCategoryVO> list = svyLibTitleCategoryService.selectSvyLibTitleCategoryList(svyLibTitleCategory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闂嵎妯℃澘鍒嗙被鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:export')")
+    @Log(title = "闂嵎妯℃澘鍒嗙被", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SvyLibTitleCategory svyLibTitleCategory) {
+        List<SvyLibTitleCategoryVO> list = svyLibTitleCategoryService.selectSvyLibTitleCategoryList(svyLibTitleCategory);
+        ExcelUtil<SvyLibTitleCategoryVO> util = new ExcelUtil<SvyLibTitleCategoryVO>(SvyLibTitleCategoryVO.class);
+        util.exportExcel(response, list, "闂嵎妯℃澘鍒嗙被鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇闂嵎妯℃澘鍒嗙被璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(svyLibTitleCategoryService.selectSvyLibTitleCategoryById(id));
+    }
+
+    /**
+     * 鏂板闂嵎妯℃澘鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:add')")
+    @Log(title = "闂嵎妯℃澘鍒嗙被", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody SvyLibTitleCategory svyLibTitleCategory) {
+        return toAjax(svyLibTitleCategoryService.insertSvyLibTitleCategory(svyLibTitleCategory));
+    }
+
+    /**
+     * 淇敼闂嵎妯℃澘鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:edit')")
+    @Log(title = "闂嵎妯℃澘鍒嗙被", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody SvyLibTitleCategory svyLibTitleCategory) {
+        return toAjax(svyLibTitleCategoryService.updateSvyLibTitleCategory(svyLibTitleCategory));
+    }
+
+    /**
+     * 鍒犻櫎闂嵎妯℃澘鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:remove')")
+    @Log(title = "闂嵎妯℃澘鍒嗙被", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(svyLibTitleCategoryService.deleteSvyLibTitleCategoryByIds(ids));
+    }
+
+
+    /**
+     * 闂嵎妯℃澘鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "闂嵎妯℃澘鍒嗙被鏍�", businessType = BusinessType.INSERT)
+    @ApiOperation("闂嵎妯℃澘鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody SvyLibTitleCategoryVO svyLibTitleCategoryVO) {
+        return toAjax(svyLibTitleCategoryService.insertSvyLibTitleCategoryTree(svyLibTitleCategoryVO));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java
index d7b5fa1..472dbdb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTitleController.java
@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.smartor;
 
-import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
 import com.aliyun.teaopenapi.models.Config;
 import com.ruoyi.common.annotation.Log;
@@ -8,11 +7,13 @@
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.base.BaseException;
 import com.smartor.domain.SvyLibTitle;
 import com.smartor.domain.SvyLibTitleReq;
 import com.smartor.service.ISvyLibTitleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -20,12 +21,12 @@
 import java.util.List;
 
 /**
- * 闂嵎Controller
+ * 闂嵎妯℃澘Controller
  *
  * @author ruoyi
  * @date 2023-03-02
  */
-@Api(description = "闂嵎")
+@Api(description = "闂嵎妯℃澘")
 @RestController
 @RequestMapping("/smartor/svytitle")
 public class SvyLibTitleController extends BaseController {
@@ -37,7 +38,7 @@
      */
     @ApiOperation("鏌ヨ闂嵎鍒楄〃")
     @PostMapping("/selectSvyLibTitlelist")
-    public TableDataInfo selectSvyLibTitlelist(@RequestBody  SvyLibTitleReq svyLibTitleReq) {
+    public TableDataInfo selectSvyLibTitlelist(@RequestBody SvyLibTitleReq svyLibTitleReq) {
         startPage();
         List<SvyLibTitle> list = svyLibTitleService.selectSvyLibTitleList(svyLibTitleReq);
         return getDataTable(list);
@@ -47,6 +48,7 @@
     /**
      * 鑾峰彇闂嵎璇︾粏淇℃伅
      */
+    @ApiOperation("鑾峰彇闂嵎璇︾粏淇℃伅")
     @PreAuthorize("@ss.hasPermi('smartor:svytitle:query')")
     @GetMapping(value = "/{svyid}")
     public AjaxResult getInfo(@PathVariable("svyid") Long svyid) {
@@ -63,8 +65,22 @@
     }
 
     /**
+     * 鏂板鎴栦慨鏀归棶鍗锋ā鏉夸俊鎭�
+     */
+    @ApiOperation("鏂板鎴栦慨鏀归棶鍗锋ā鏉夸俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:script:list')")
+    @PostMapping("/saveOrUpdateTitle")
+    public AjaxResult saveOrUpdateTitle(@RequestBody SvyLibTitle svyLibTitle) {
+        if (ObjectUtils.isEmpty(svyLibTitle)) {
+            throw new BaseException("鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(svyLibTitleService.saveOrUpdateTitle(svyLibTitle));
+    }
+
+    /**
      * 淇敼闂嵎
      */
+    @ApiOperation("淇敼闂嵎")
     @PreAuthorize("@ss.hasPermi('smartor:svytitle:edit')")
     @Log(title = "闂嵎", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
@@ -75,6 +91,7 @@
     /**
      * 鍒犻櫎闂嵎
      */
+    @ApiOperation("鍒犻櫎闂嵎")
     @PreAuthorize("@ss.hasPermi('smartor:svytitle:remove')")
     @Log(title = "闂嵎", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{svyids}")
@@ -85,6 +102,7 @@
     /**
      * 鍙戦�佺煭淇�
      */
+    @ApiOperation("鍙戦�佺煭淇�")
     @PreAuthorize("@ss.hasPermi('smartor:svytitle:remove')")
     @Log(title = "闂嵎", businessType = BusinessType.DELETE)
     @PostMapping("/sendMessage")
@@ -93,16 +111,10 @@
         String accessKeySecret = "your_access_key_secret";
 
         // 鍒涘缓Config瀵硅薄锛岄厤缃樋閲屼簯SDK
-        Config config = new Config()
-                .setAccessKeyId(accessKeyId)
-                .setAccessKeySecret(accessKeySecret);
+        Config config = new Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);
 
         // 鍒涘缓SendSmsRequest瀵硅薄锛岃缃煭淇$浉鍏冲弬鏁�
-        SendSmsRequest request = new SendSmsRequest()
-                .setPhoneNumbers("鎵嬫満鍙风爜")
-                .setSignName("鐭俊绛惧悕")
-                .setTemplateCode("鐭俊妯℃澘Code")
-                .setTemplateParam("{\"code\":\"123456\"}"); // 璁剧疆鐭俊妯℃澘涓殑鍙傛暟鍊�
+        SendSmsRequest request = new SendSmsRequest().setPhoneNumbers("鎵嬫満鍙风爜").setSignName("鐭俊绛惧悕").setTemplateCode("鐭俊妯℃澘Code").setTemplateParam("{\"code\":\"123456\"}"); // 璁剧疆鐭俊妯℃澘涓殑鍙傛暟鍊�
 
 //        try {
 //            // 璋冪敤闃块噷浜慡DK鍙戦�佺煭淇�
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicCategoryController.java
new file mode 100644
index 0000000..def7df7
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicCategoryController.java
@@ -0,0 +1,106 @@
+package com.ruoyi.web.controller.smartor;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.smartor.domain.SvyLibTopicCategory;
+import com.smartor.domain.SvyLibTopicCategoryVO;
+import com.smartor.service.ISvyLibTopicCategoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被Controller
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Api(description = "闂嵎棰樺簱鍒嗙被")
+@RestController
+@RequestMapping("/smartor/svyLibTopicCategory")
+public class SvyLibTopicCategoryController extends BaseController {
+    @Autowired
+    private ISvyLibTopicCategoryService svyLibTopicCategoryService;
+
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:list')")
+    @PostMapping("/list")
+    public TableDataInfo list(@RequestBody SvyLibTopicCategory svyLibTopicCategory) {
+        startPage();
+        List<SvyLibTopicCategoryVO> list = svyLibTopicCategoryService.selectSvyLibTopicCategoryList(svyLibTopicCategory);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭闂嵎棰樼洰鍒嗙被鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:export')")
+    @Log(title = "闂嵎棰樼洰鍒嗙被", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SvyLibTopicCategory svyLibTopicCategory) {
+        List<SvyLibTopicCategoryVO> list = svyLibTopicCategoryService.selectSvyLibTopicCategoryList(svyLibTopicCategory);
+        ExcelUtil<SvyLibTopicCategoryVO> util = new ExcelUtil<SvyLibTopicCategoryVO>(SvyLibTopicCategoryVO.class);
+        util.exportExcel(response, list, "闂嵎棰樼洰鍒嗙被鏁版嵁");
+    }
+
+    /**
+     * 鑾峰彇闂嵎棰樼洰鍒嗙被璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(svyLibTopicCategoryService.selectSvyLibTopicCategoryById(id));
+    }
+
+    /**
+     * 鏂板闂嵎棰樼洰鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:add')")
+    @Log(title = "闂嵎棰樼洰鍒嗙被", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody SvyLibTopicCategory svyLibTopicCategory) {
+        return toAjax(svyLibTopicCategoryService.insertSvyLibTopicCategory(svyLibTopicCategory));
+    }
+
+    /**
+     * 淇敼闂嵎棰樼洰鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:edit')")
+    @Log(title = "闂嵎棰樼洰鍒嗙被", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody SvyLibTopicCategory svyLibTopicCategory) {
+        return toAjax(svyLibTopicCategoryService.updateSvyLibTopicCategory(svyLibTopicCategory));
+    }
+
+    /**
+     * 鍒犻櫎闂嵎棰樼洰鍒嗙被
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:category:remove')")
+    @Log(title = "闂嵎棰樼洰鍒嗙被", businessType = BusinessType.DELETE)
+    @GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(svyLibTopicCategoryService.deleteSvyLibTopicCategoryByIds(ids));
+    }
+
+    /**
+     * 闂嵎棰樼洰鍒嗙被鏍�
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:assort:add')")
+    @Log(title = "闂嵎棰樼洰鍒嗙被鏍�", businessType = BusinessType.INSERT)
+    @ApiOperation("闂嵎棰樼洰鍒嗙被鏍�")
+    @PostMapping("/addtree")
+    public AjaxResult addtree(@RequestBody SvyLibTopicCategoryVO svyLibTopicCategoryVO) {
+        return toAjax(svyLibTopicCategoryService.insertSvyLibTopicCategoryTree(svyLibTopicCategoryVO));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java
index 17d6c4d..0d3bc93 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyLibTopicController.java
@@ -5,11 +5,11 @@
 
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
-import com.smartor.domain.PatImportInfoVO;
-import com.smartor.domain.SvyLibTopicRes;
-import com.smartor.domain.SvyTopicReq;
+import com.ruoyi.common.exception.base.BaseException;
+import com.smartor.domain.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -24,7 +24,6 @@
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.BusinessType;
-import com.smartor.domain.SvyLibTopic;
 import com.smartor.service.ISvyLibTopicService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -46,8 +45,9 @@
     /**
      * 鏌ヨ闂嵎棰樼洰鍒楄〃
      */
+    @ApiOperation("鏌ヨ闂嵎棰樼洰鍒楄〃")
     @PreAuthorize("@ss.hasPermi('smartor:svytopic:list')")
-   @PostMapping("/list")
+    @PostMapping("/list")
     public TableDataInfo list(@RequestBody SvyLibTopic svyLibTopic) {
         startPage();
         List<SvyLibTopic> list = svyLibTopicService.selectSvyLibTopicList(svyLibTopic);
@@ -72,7 +72,7 @@
      */
     @ApiOperation("鑾峰彇闂嵎棰樼洰璇︾粏淇℃伅")
     @PreAuthorize("@ss.hasPermi('smartor:svytopic:query')")
-    @GetMapping(value = "/{topicid}")
+    @GetMapping(value = "/getInfo/{topicid}")
     public AjaxResult getInfo(@PathVariable("topicid") Long topicid) {
         return success(svyLibTopicService.selectSvyLibTopicByTopicid(topicid));
     }
@@ -89,6 +89,19 @@
     }
 
     /**
+     * 鏂板鎴栦慨鏀归棶鍗疯鎯呬俊鎭�
+     */
+    @ApiOperation("鏂板鎴栦慨鏀归棶鍗疯鎯呬俊鎭�")
+    @PreAuthorize("@ss.hasPermi('system:script:list')")
+    @PostMapping("/saveOrUpdateTopic")
+    public AjaxResult saveOrUpdateTopic(@RequestBody SvyLibTopic svyLibTopic) {
+        if (ObjectUtils.isEmpty(svyLibTopic)) {
+            throw new BaseException("鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
+        }
+        return success(svyLibTopicService.saveOrUpdateTopic(svyLibTopic));
+    }
+
+    /**
      * 淇敼闂嵎棰樼洰
      */
     @ApiOperation("淇敼闂嵎棰樼洰")
diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
index 2aed686..23b1a21 100644
--- a/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
+++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
@@ -118,7 +118,7 @@
      */
     @PreAuthorize("@ss.hasPermi('tool:gen:edit')")
     @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.UPDATE)
-    @PutMapping
+    @PostMapping
     public AjaxResult editSave(@Validated @RequestBody GenTable genTable)
     {
         genTableService.validateEdit(genTable);
@@ -131,7 +131,7 @@
      */
     @PreAuthorize("@ss.hasPermi('tool:gen:remove')")
     @Log(title = "浠g爜鐢熸垚", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{tableIds}")
+    @GetMapping("/remove/{tableIds}")
     public AjaxResult remove(@PathVariable Long[] tableIds)
     {
         genTableService.deleteGenTableByIds(tableIds);
diff --git a/smartor/src/main/java/com/smartor/domain/HeLibrary.java b/smartor/src/main/java/com/smartor/domain/HeLibrary.java
new file mode 100644
index 0000000..5e3bff8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/HeLibrary.java
@@ -0,0 +1,194 @@
+package com.smartor.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 瀹f暀璧勬枡搴撳璞� he_library
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Data
+@ApiModel(value = "HeLibrary", description = "瀹f暀璧勬枡搴撳璞�")
+public class HeLibrary extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long id;
+
+    /**
+     * 瀹f暀鍒嗙被
+     */
+    @Excel(name = " 瀹f暀鍒嗙被 ")
+    @ApiModelProperty("瀹f暀鍒嗙被")
+    private String classification;
+
+    /**
+     * 瀹f暀鍒嗙被
+     */
+    @Excel(name = " 瀹f暀鍒嗙被 ")
+    @ApiModelProperty("鍒嗙被id")
+    private Long assortid;
+
+    /**
+     * 瀹f暀鍚嶇О
+     */
+    @Excel(name = " 瀹f暀鍚嶇О ")
+    @ApiModelProperty("瀹f暀鍚嶇О")
+    private String preachname;
+
+    /**
+     * 鐗堟湰
+     */
+    @Excel(name = " 鐗堟湰 ")
+    @ApiModelProperty("鐗堟湰")
+    private BigDecimal version;
+
+    /**
+     * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�
+     */
+    @Excel(name = " 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�")
+    @ApiModelProperty("瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎")
+    private Long preachform;
+
+    /**
+     * 瀹f暀鎻忚堪
+     */
+    @Excel(name = " 瀹f暀鎻忚堪 ")
+    @ApiModelProperty("瀹f暀鎻忚堪")
+    private String preachdescription;
+
+    /**
+     * 瀹f暀鍐呭
+     */
+    @Excel(name = " 瀹f暀鍐呭 ")
+    @ApiModelProperty("瀹f暀鍐呭")
+    private String preachcontent;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = " 妯℃澘ID ")
+    @ApiModelProperty("妯℃澘ID")
+    private Long templateid;
+
+    /**
+     * 瀹f暀浠g爜
+     */
+    @Excel(name = " 瀹f暀浠g爜 ")
+    @ApiModelProperty("瀹f暀浠g爜")
+    private String preachcode;
+
+    /**
+     * 涓績搴揑D
+     */
+    @Excel(name = " 涓績搴揑D ")
+    @ApiModelProperty("涓績搴揑D")
+    private Long centerlibraryid;
+
+    /**
+     * 鏄惁鍚敤
+     */
+    @Excel(name = " 鏄惁鍚敤 ")
+    @ApiModelProperty("鏄惁鍚敤")
+    private Long isenable;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏄惁鏈湴
+     */
+    @Excel(name = " 鏄惁鏈湴 ")
+    @ApiModelProperty("鏄惁鏈湴")
+    private Long islocal;
+
+    /**
+     * 涓績搴撲唬鐮�
+     */
+    @Excel(name = " 涓績搴撲唬鐮� ")
+    @ApiModelProperty("涓績搴撲唬鐮�")
+    private String centerlibrarycode;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    private String parameter;
+
+    /**
+     * 鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�
+     */
+    @Excel(name = "鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    @ApiModelProperty("鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    private String isavailable;
+
+    /**
+     * 閫傜敤鐤剧梾
+     */
+    @Excel(name = "閫傜敤鐤剧梾")
+    @ApiModelProperty("閫傜敤鐤剧梾")
+    private String suitdisease;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @ApiModelProperty("閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/HeLibraryAssort.java b/smartor/src/main/java/com/smartor/domain/HeLibraryAssort.java
new file mode 100644
index 0000000..7831463
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/HeLibraryAssort.java
@@ -0,0 +1,155 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 瀹f暀鍒嗙被瀵硅薄 he_library_assort
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Data
+@ApiModel(value = "HeLibraryAssort", description = "瀹f暀鍒嗙被瀵硅薄")
+public class HeLibraryAssort extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = " 鍒嗙被鍚嶇О ")
+    @ApiModelProperty("鍒嗙被鍚嶇О")
+    private String assortname;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**
+     * 鐖禝D
+     */
+    @ApiModelProperty("鐖禝D")
+    @Excel(name = "鐖禝D")
+    private Long pid;
+
+    /**
+     * 搴忓彿
+     */
+    @ApiModelProperty("搴忓彿")
+    @Excel(name = "搴忓彿")
+    private Long seqno;
+
+    /**
+     * GUID
+     */
+    @ApiModelProperty("GUID")
+    @Excel(name = "GUID")
+    private String guid;
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setAssortname(String assortname) {
+        this.assortname = assortname;
+    }
+
+    public String getAssortname() {
+        return assortname;
+    }
+
+    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;
+    }
+
+    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 setPid(Long pid) {
+        this.pid = pid;
+    }
+
+    public Long getPid() {
+        return pid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", getId()).append("assortname", getAssortname()).append("orgid", getOrgid()).append("delFlag", getDelFlag()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).append("pid", getPid()).append("guid", getGuid()).toString();
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/HeLibraryAssortVO.java b/smartor/src/main/java/com/smartor/domain/HeLibraryAssortVO.java
new file mode 100644
index 0000000..9bf849c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/HeLibraryAssortVO.java
@@ -0,0 +1,95 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瀹f暀鍒嗙被杩斿弬瀵硅薄 he_library_assort
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Data
+@ApiModel(value = "HeLibraryAssortVO", description = "瀹f暀鍒嗙被杩斿弬瀵硅薄")
+public class HeLibraryAssortVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = " 鍒嗙被鍚嶇О ")
+    @ApiModelProperty("鍒嗙被鍚嶇О")
+    private String assortname;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**
+     * 鐖禝D
+     */
+    @ApiModelProperty("鐖禝D")
+    @Excel(name = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @ApiModelProperty("GUID")
+    @Excel(name = "GUID")
+    private String guid;
+
+    /**
+     * 搴忓彿
+     */
+    @ApiModelProperty("搴忓彿")
+    @Excel(name = "搴忓彿")
+    private Long seqno;
+
+    /**
+     * 瀛愭暟鎹�
+     */
+    @ApiModelProperty("瀛愭暟鎹�")
+    @Excel(name = "瀛愭暟鎹�")
+    private List<HeLibraryAssort> heLibraryAssortList = new ArrayList<>();
+}
diff --git a/smartor/src/main/java/com/smartor/domain/HeLibraryTag.java b/smartor/src/main/java/com/smartor/domain/HeLibraryTag.java
new file mode 100644
index 0000000..5b7eec0
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/HeLibraryTag.java
@@ -0,0 +1,99 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 鎸囨爣鏍囩瀵硅薄 he_library_tag
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Data
+@ApiModel(value = "HeLibraryTag", description = "鎸囨爣鏍囩瀵硅薄")
+public class HeLibraryTag extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long id;
+
+    /**
+     * 鏍囩鍒嗙被ID
+     */
+    @ApiModelProperty("鏍囩鍒嗙被ID")
+    @Excel(name = " 鏍囩鍒嗙被ID ")
+    private Long tagcategoryid;
+
+    /**
+     * 鏍囩ID
+     */
+    @ApiModelProperty("鏍囩ID")
+    @Excel(name = " 鏍囩ID ")
+    private Long tagid;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @ApiModelProperty("鏈烘瀯ID")
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @ApiModelProperty("涓婁紶鏍囪")
+    @Excel(name = " 涓婁紶鏍囪 ")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date uploadTime;
+
+    /**
+     * 瀹f暀ID
+     */
+    @Excel(name = "瀹f暀ID ")
+    @ApiModelProperty("瀹f暀ID")
+    private Long heid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/HeLibraryVO.java b/smartor/src/main/java/com/smartor/domain/HeLibraryVO.java
new file mode 100644
index 0000000..c75bd27
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/HeLibraryVO.java
@@ -0,0 +1,201 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 瀹f暀璧勬枡搴撳璞� he_library
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Data
+@ApiModel(value = "HeLibrary", description = "瀹f暀璧勬枡搴撳璞�")
+public class HeLibraryVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long id;
+
+    /**
+     * 瀹f暀鍒嗙被
+     */
+    @Excel(name = " 瀹f暀鍒嗙被 ")
+    @ApiModelProperty("瀹f暀鍒嗙被")
+    private String classification;
+
+    /**
+     * 瀹f暀鍒嗙被
+     */
+    @Excel(name = " 瀹f暀鍒嗙被 ")
+    @ApiModelProperty("鍒嗙被id")
+    private Long assortid;
+
+    /**
+     * 瀹f暀鍚嶇О
+     */
+    @Excel(name = " 瀹f暀鍚嶇О ")
+    @ApiModelProperty("瀹f暀鍚嶇О")
+    private String preachname;
+
+    /**
+     * 鐗堟湰
+     */
+    @Excel(name = " 鐗堟湰 ")
+    @ApiModelProperty("鐗堟湰")
+    private BigDecimal version;
+
+    /**
+     * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�
+     */
+    @Excel(name = " 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�")
+    @ApiModelProperty("瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎")
+    private Long preachform;
+
+    /**
+     * 瀹f暀鎻忚堪
+     */
+    @Excel(name = " 瀹f暀鎻忚堪 ")
+    @ApiModelProperty("瀹f暀鎻忚堪")
+    private String preachdescription;
+
+    /**
+     * 瀹f暀鍐呭
+     */
+    @Excel(name = " 瀹f暀鍐呭 ")
+    @ApiModelProperty("瀹f暀鍐呭")
+    private String preachcontent;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = " 妯℃澘ID ")
+    @ApiModelProperty("妯℃澘ID")
+    private Long templateid;
+
+    /**
+     * 瀹f暀浠g爜
+     */
+    @Excel(name = " 瀹f暀浠g爜 ")
+    @ApiModelProperty("瀹f暀浠g爜")
+    private String preachcode;
+
+    /**
+     * 涓績搴揑D
+     */
+    @Excel(name = " 涓績搴揑D ")
+    @ApiModelProperty("涓績搴揑D")
+    private Long centerlibraryid;
+
+    /**
+     * 鏄惁鍚敤
+     */
+    @Excel(name = " 鏄惁鍚敤 ")
+    @ApiModelProperty("鏄惁鍚敤")
+    private Long isenable;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏄惁鏈湴
+     */
+    @Excel(name = " 鏄惁鏈湴 ")
+    @ApiModelProperty("鏄惁鏈湴")
+    private Long islocal;
+
+    /**
+     * 涓績搴撲唬鐮�
+     */
+    @Excel(name = " 涓績搴撲唬鐮� ")
+    @ApiModelProperty("涓績搴撲唬鐮�")
+    private String centerlibrarycode;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    private String parameter;
+
+    /**
+     * 鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�
+     */
+    @Excel(name = "鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    @ApiModelProperty("鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    private String isavailable;
+
+    /**
+     * 閫傜敤鐤剧梾
+     */
+    @Excel(name = "閫傜敤鐤剧梾")
+    @ApiModelProperty("閫傜敤鐤剧梾")
+    private String suitdisease;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @ApiModelProperty("閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+    @ApiModelProperty("鎸囨爣鏍囩瀵硅薄闆嗗悎")
+    private List<HeLibraryTag> heLibraryTagList;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplate.java b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplate.java
index c918337..e662939 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplate.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplate.java
@@ -1,251 +1,116 @@
 package com.smartor.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撳璞� ivr_liba_extemplate
- * 
- * @author smartor
- * @date 2023-03-22
+ * 閫氳繃妯℃澘瀵硅薄 ivr_liba_extemplate
+ *
+ * @author ruoyi
+ * @date 2023-12-27
  */
-public class IvrLibaExtemplate extends BaseEntity
-{
+@Data
+@ApiModel(value = "HeLibrary", description = "閫氳繃妯℃澘瀵硅薄")
+public class IvrLibaExtemplate extends BaseEntity {
+
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
-    private String subModuleID;
+    /**
+     * 涓婚敭id
+     */
+    @ApiModelProperty("涓婚敭id")
+    private String ID;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String subModuleName;
+    /**
+     * 妯$増鍚嶅瓧
+     */
+    @Excel(name = "妯$増鍚嶅瓧")
+    @ApiModelProperty("妯$増鍚嶅瓧")
+    private String extName;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty("璇█")
     private String language;
-    /** $column.columnComment */
-    @Excel(name = "${note}", readConverterExp = "$column.readConverterExp()")
-    private String note;
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long version;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 绠�浠�
+     */
+    @Excel(name = "绠�浠�")
+    @ApiModelProperty("绠�浠�")
+    private String note;
+
+    /**
+     * 鐗堟湰
+     */
+    @Excel(name = "鐗堟湰")
+    @ApiModelProperty("鐗堟湰")
+    private String version;
+
+    /**
+     * 鍚敤
+     */
+    @Excel(name = "鍚敤")
+    @ApiModelProperty("鍚敤")
     private Long isEnable;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long isDel;
+    /**
+     * 绫诲埆
+     */
+    @Excel(name = "绫诲埆")
+    @ApiModelProperty("绫诲埆")
+    private Long groupID;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String addUserID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Date addTime;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String modifyUserID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Date modifyTime;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long GroupID;
-
-    /**  鍒犻櫎鏍囪  */
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
     private String delFlag;
 
-    /**  涓婁紶鏍囪  */
+    /**
+     * 涓婁紶鏍囪
+     */
     @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
     private Long isupload;
 
-    /**  涓婁紶鏃堕棿  */
+    /**
+     * 涓婁紶鏃堕棿
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("涓婁紶鏃堕棿")
     private Date uploadTime;
 
-    /**  鏈烘瀯ID  */
+    /**
+     * 鏈烘瀯ID
+     */
     @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
     private String orgid;
 
-    public void setSubModuleID(String subModuleID) 
-    {
-        this.subModuleID = subModuleID;
-    }
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
 
-    public String getSubModuleID() 
-    {
-        return subModuleID;
-    }
-    public void setSubModuleName(String subModuleName) 
-    {
-        this.subModuleName = subModuleName;
-    }
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
 
-    public String getSubModuleName() 
-    {
-        return subModuleName;
-    }
-    public void setLanguage(String language) 
-    {
-        this.language = language;
-    }
-
-    public String getLanguage() 
-    {
-        return language;
-    }
-    public void setNote(String note)
-    {
-        this.note = note;
-    }
-
-    public String getNote()
-    {
-        return note;
-    }
-    public void setVersion(Long version) 
-    {
-        this.version = version;
-    }
-
-    public Long getVersion() 
-    {
-        return version;
-    }
-    public void setIsEnable(Long isEnable) 
-    {
-        this.isEnable = isEnable;
-    }
-
-    public Long getIsEnable() 
-    {
-        return isEnable;
-    }
-    public void setIsDel(Long isDel) 
-    {
-        this.isDel = isDel;
-    }
-
-    public Long getIsDel() 
-    {
-        return isDel;
-    }
-    public void setAddUserID(String addUserID) 
-    {
-        this.addUserID = addUserID;
-    }
-
-    public String getAddUserID() 
-    {
-        return addUserID;
-    }
-    public void setAddTime(Date addTime) 
-    {
-        this.addTime = addTime;
-    }
-
-    public Date getAddTime() 
-    {
-        return addTime;
-    }
-    public void setModifyUserID(String modifyUserID) 
-    {
-        this.modifyUserID = modifyUserID;
-    }
-
-    public String getModifyUserID() 
-    {
-        return modifyUserID;
-    }
-    public void setModifyTime(Date modifyTime) 
-    {
-        this.modifyTime = modifyTime;
-    }
-
-    public Date getModifyTime() 
-    {
-        return modifyTime;
-    }
-    public void setGroupID(Long GroupID) 
-    {
-        this.GroupID = GroupID;
-    }
-
-    public Long getGroupID() 
-    {
-        return GroupID;
-    }
-    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("subModuleID", getSubModuleID())
-            .append("subModuleName", getSubModuleName())
-            .append("language", getLanguage())
-            .append("note", getNote())
-            .append("version", getVersion())
-            .append("isEnable", getIsEnable())
-            .append("isDel", getIsDel())
-            .append("addUserID", getAddUserID())
-            .append("addTime", getAddTime())
-            .append("modifyUserID", getModifyUserID())
-            .append("modifyTime", getModifyTime())
-            .append("GroupID", getGroupID())
-            .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/IvrLibaExtemplateCategory.java b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplateCategory.java
new file mode 100644
index 0000000..844fe8f
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplateCategory.java
@@ -0,0 +1,88 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 閫氱敤妯℃澘鍒嗙被瀵硅薄 ivr_liba_extemplate_category
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Data
+@ApiModel(value = "IvrLibaExtemplateCategory", description = "閫氱敤妯℃澘鍒嗙被瀵硅薄")
+public class IvrLibaExtemplateCategory extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("鑷ID锛堜富閿級")
+    private Long intertcatid;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = " 鍒嗙被鍚嶇О ")
+    @ApiModelProperty("鍒嗙被鍚嶇О")
+    private String categoryname;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 搴忓彿
+     */
+    @Excel(name = "搴忓彿")
+    @ApiModelProperty("搴忓彿")
+    private Integer seqno;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplatescript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplatescript.java
index c5d0a3c..0bbc10d 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplatescript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaExtemplatescript.java
@@ -1,197 +1,115 @@
 package com.smartor.domain;
 
 import java.util.Date;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈璞� ivr_liba_extemplatescript
- * 
- * @author smartor
- * @date 2023-03-22
+ * 閫氱敤妯℃澘璇濇湳瀵硅薄 ivr_liba_extemplatescript
+ *
+ * @author ruoyi
+ * @date 2023-12-27
  */
-public class IvrLibaExtemplatescript extends BaseEntity
-{
+@Data
+@ApiModel(value = "IvrLibaExtemplatescript", description = "閫氱敤妯℃澘璇濇湳瀵硅薄")
+public class IvrLibaExtemplatescript extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** $column.columnComment */
-    private String DetailID;
+    /**
+     * 涓婚敭id
+     */
+    @ApiModelProperty("涓婚敭id")
+    private String ID;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String subModuleID;
+    /**
+     * 妯$増搴搃d
+     */
+    @Excel(name = "妯$増搴搃d")
+    @ApiModelProperty("妯$増搴搃d")
+    private String extID;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 搴忓彿id
+     */
+    @Excel(name = "搴忓彿id")
+    @ApiModelProperty("搴忓彿id")
     private Long switchID;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 璇濇湳鏂囧瓧
+     */
+    @Excel(name = "璇濇湳鏂囧瓧")
+    @ApiModelProperty("璇濇湳鏂囧瓧")
     private String switchText;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 璇濇湳璇煶
+     */
+    @Excel(name = "璇濇湳璇煶")
+    @ApiModelProperty("璇濇湳璇煶")
     private String switchWav;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 鍖归厤瑙勫垯
+     */
+    @Excel(name = "鍖归厤瑙勫垯")
+    @ApiModelProperty("鍖归厤瑙勫垯")
     private String selfRegex;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    /**
+     * 鍚敤
+     */
+    @Excel(name = "鍚敤")
+    @ApiModelProperty("鍚敤")
     private Long isEnable;
 
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long isDel;
-
-    /**  鍒犻櫎鏍囪  */
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
     private String delFlag;
 
-    /**  涓婁紶鏍囪  */
+    /**
+     * 涓婁紶鏍囪
+     */
     @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty("涓婁紶鏍囪")
     private Long isupload;
 
-    /**  涓婁紶鏃堕棿  */
+    /**
+     * 涓婁紶鏃堕棿
+     */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("涓婁紶鏃堕棿")
     private Date uploadTime;
 
-    /**  鏈烘瀯ID  */
+    /**
+     * 鏈烘瀯ID
+     */
     @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
     private String orgid;
 
-    public void setDetailID(String DetailID) 
-    {
-        this.DetailID = DetailID;
-    }
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
 
-    public String getDetailID() 
-    {
-        return DetailID;
-    }
-    public void setSubModuleID(String subModuleID) 
-    {
-        this.subModuleID = subModuleID;
-    }
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
 
-    public String getSubModuleID() 
-    {
-        return subModuleID;
-    }
-    public void setSwitchID(Long switchID) 
-    {
-        this.switchID = switchID;
-    }
-
-    public Long getSwitchID() 
-    {
-        return switchID;
-    }
-    public void setSwitchText(String switchText) 
-    {
-        this.switchText = switchText;
-    }
-
-    public String getSwitchText() 
-    {
-        return switchText;
-    }
-    public void setSwitchWav(String switchWav) 
-    {
-        this.switchWav = switchWav;
-    }
-
-    public String getSwitchWav() 
-    {
-        return switchWav;
-    }
-    public void setSelfRegex(String selfRegex) 
-    {
-        this.selfRegex = selfRegex;
-    }
-
-    public String getSelfRegex() 
-    {
-        return selfRegex;
-    }
-    public void setIsEnable(Long isEnable) 
-    {
-        this.isEnable = isEnable;
-    }
-
-    public Long getIsEnable() 
-    {
-        return isEnable;
-    }
-    public void setIsDel(Long isDel) 
-    {
-        this.isDel = isDel;
-    }
-
-    public Long getIsDel() 
-    {
-        return isDel;
-    }
-    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("DetailID", getDetailID())
-            .append("subModuleID", getSubModuleID())
-            .append("switchID", getSwitchID())
-            .append("switchText", getSwitchText())
-            .append("switchWav", getSwitchWav())
-            .append("selfRegex", getSelfRegex())
-            .append("isEnable", getIsEnable())
-            .append("isDel", getIsDel())
-            .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/IvrLibaScript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
index b352175..dd8ff03 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
@@ -120,6 +120,13 @@
     private Long targetid;
 
     /**
+     * 鎸囨爣绫诲瀷
+     */
+    @Excel(name = "鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
      * 鎸囨爣鍚嶇О
      */
     @ApiModelProperty("鎸囨爣鍚嶇О")
@@ -227,6 +234,13 @@
     private String orgid;
 
     /**
+     * 鍙傛暟鍙橀噺
+     */
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    @Excel(name = " 鍙傛暟鍙橀噺 ")
+    private String parameter;
+
+    /**
      * 鐖禝D
      */
     @ApiModelProperty("鐖禝D")
@@ -240,4 +254,47 @@
     @Excel(name = "GUID")
     private String guid;
 
+    /**
+     * 鏄惁鍙敤
+     */
+    @Excel(name = "鏄惁鍙敤")
+    @ApiModelProperty(value = "鏄惁鍙敤")
+    private String isAvailable;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @ApiModelProperty("閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+    /**
+     * 鍖婚櫌闄㈠尯
+     */
+    @Excel(name = "鍖婚櫌闄㈠尯")
+    @ApiModelProperty(value = "鍖婚櫌闄㈠尯")
+    private String campus;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private String deptIds;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
+    private String deptNames;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
+
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssort.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssort.java
index 9f2de25..0dcc174 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssort.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssort.java
@@ -46,5 +46,12 @@
     @Excel(name = "鐖秈d")
     private Long pid;
 
+    /**
+     * 搴忓彿
+     */
+    @ApiModelProperty("搴忓彿")
+    @Excel(name = "搴忓彿")
+    private Integer seqno;
+
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssortVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssortVO.java
index 1c457d3..7fdf1d8 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssortVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptAssortVO.java
@@ -6,6 +6,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -51,6 +52,6 @@
      * 瀛愭暟鎹�
      */
     @ApiModelProperty(value = "瀛愭暟鎹�")
-    private List<IvrLibaScriptAssort> ivrLibaScriptAssortList;
+    private List<IvrLibaScriptAssort> ivrLibaScriptAssortList = new ArrayList<>();
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptTargetoption.java
index 65fd160..0289583 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptTargetoption.java
@@ -38,6 +38,13 @@
     /**
      * $column.columnComment
      */
+    @ApiModelProperty("鎸囨爣鍚嶇О")
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String targetname;
+
+    /**
+     * $column.columnComment
+     */
     @ApiModelProperty("闂ID")
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private Long scriptid;
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
index 88ad61a..03b56dd 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
@@ -127,6 +127,13 @@
     private Long targetid;
 
     /**
+     * 鎸囨爣绫诲瀷
+     */
+    @Excel(name = "鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
      * 鎸囨爣鍚嶇О
      */
     @ApiModelProperty("鎸囨爣鍚嶇О")
@@ -227,10 +234,16 @@
     private String orgid;
 
     /**
-     * 鎸囨爣闆嗗悎
+     * 鍙傛暟鍙橀噺
      */
-    @ApiModelProperty("鎸囨爣闆嗗悎")
-    private List<IvrLibaScriptTarget> ivrLibaScriptTargetList;
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    @Excel(name = " 鍙傛暟鍙橀噺 ")
+    private String parameter;
+//    /**
+//     * 鎸囨爣闆嗗悎
+//     */
+//    @ApiModelProperty("鎸囨爣闆嗗悎")
+//    private List<IvrLibaScriptTarget> ivrLibaScriptTargetList;
 
 
     /**
@@ -251,4 +264,46 @@
     @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
     private Integer isoperation;
 
+    /**
+     * 鏄惁鍙敤
+     */
+    @Excel(name = "鏄惁鍙敤")
+    @ApiModelProperty(value = "鏄惁鍙敤")
+    private String isAvailable;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @ApiModelProperty("閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+    /**
+     * 鍖婚櫌闄㈠尯
+     */
+    @Excel(name = "鍖婚櫌闄㈠尯")
+    @ApiModelProperty(value = "鍖婚櫌闄㈠尯")
+    private String campus;
+
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private String deptIds;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
+    private String deptNames;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTarget.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTarget.java
index 4b1ec9c..a615732 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTarget.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTarget.java
@@ -169,6 +169,14 @@
     @ApiModelProperty(value = "閫傜敤鏂瑰紡")
     private String suitWay;
 
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    @Excel(name = "鍙傛暟鍙橀噺")
+    private String parameter;
+
     /**
      * pageNum
      */
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssort.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssort.java
index e6ad094..7545bd0 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssort.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssort.java
@@ -46,6 +46,13 @@
     private Long pid;
 
     /**
+     * 搴忓彿
+     */
+    @ApiModelProperty(value = "搴忓彿")
+    @Excel(name = "搴忓彿")
+    private Integer seqno;
+
+    /**
      * pageNum
      */
     @ApiModelProperty(value = "pageNum")
@@ -58,7 +65,6 @@
     @ApiModelProperty(value = "pageSize")
     @Excel(name = "pageSize")
     private Integer pageSize;
-
 
 
     @Override
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssortVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssortVO.java
index cc89dd7..d4e465b 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssortVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetAssortVO.java
@@ -8,6 +8,7 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -65,7 +66,7 @@
      * 瀛愭暟鎹�
      */
     @ApiModelProperty(value = "瀛愭暟鎹�")
-    private List<IvrLibaTargetAssort> ivrLibaTargetAssortList;
+    private List<IvrLibaTargetAssort> ivrLibaTargetAssortList = new ArrayList<>();
 
     @Override
     public String toString() {
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetIcd10.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetIcd10.java
index 92eb67b..ce8fc99 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetIcd10.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetIcd10.java
@@ -86,10 +86,10 @@
     private Long outid;
 
     /**
-     * 1 鎸囨爣   2瀹f暀   3闂
+     * 1,鎸囨爣 2,闅忚璇濇湳 3,闅忚妯$増  4,闂嵎璇濇湳 锛�5,闂嵎妯$増 6,瀹f暀
      */
-    @ApiModelProperty(value = "1 鎸囨爣   2瀹f暀   3闂")
-    @Excel(name = "1 鎸囨爣   2瀹f暀   3闂 ")
+    @ApiModelProperty(value = "1,鎸囨爣 2,闅忚璇濇湳 3,闅忚妯$増  4,闂嵎璇濇湳 锛�5,闂嵎妯$増 6,瀹f暀")
+    @Excel(name = "1,鎸囨爣 2,闅忚璇濇湳 3,闅忚妯$増  4,闂嵎璇濇湳 锛�5,闂嵎妯$増 6,瀹f暀")
     private Long type;
 
     /**
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
index 7abfdb2..cb9f855 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
@@ -9,6 +9,7 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -186,10 +187,17 @@
     @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
     private Integer isoperation;
 
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @ApiModelProperty("鍙傛暟鍙橀噺")
+    @Excel(name = "鍙傛暟鍙橀噺")
+    private String parameter;
+
     @ApiModelProperty(value = "鎸囨爣閫夐」闆嗗悎")
-    private List<IvrLibaTargetoption> targetoptionList;
+    private List<IvrLibaTargetoption> targetoptionList = new ArrayList<>();
 
     @ApiModelProperty(value = "鏍囩闆嗗悎")
-    private List<BaseTag> baseTagList;
+    private List<BaseTag> baseTagList = new ArrayList<>();
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
index 32a9d64..224a2b4 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplate.java
@@ -12,179 +12,197 @@
 import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
- * 璇濇湳妯℃澘搴撳璞� ivr_liba_template
+ * 妯℃澘搴撳璞� ivr_liba_template
  *
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-23
  */
 @Data
-@ApiModel(value = "IvrLibaTemplate", description = "璇濇湳妯℃澘搴撳璞�")
+@ApiModel(value = "IvrLibaTemplate", description = "妯℃澘搴撳璞�")
 public class IvrLibaTemplate extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
-     * $column.columnComment
+     * 涓婚敭
      */
-    @ApiModelProperty(value = "妯℃澘id")
-    private String templateID;
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
 
     /**
-     * $column.columnComment
+     * 鎸囨爣id
      */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    @ApiModelProperty(value = "妯℃澘鍚嶇О")
+    @Excel(name = "鎸囨爣id")
+    @ApiModelProperty(value = "鎸囨爣id")
+    private Integer targetid;
+
+    /**
+     * 鎸囨爣鍚�
+     */
+    @Excel(name = "鎸囨爣鍚�")
+    @ApiModelProperty(value = "鎸囨爣鍚�")
+    private String targetname;
+
+    /**
+     * 妯℃澘鍚�
+     */
+    @Excel(name = "妯℃澘鍚�")
+    @ApiModelProperty(value = "妯℃澘鍚�")
     private String templateName;
 
     /**
-     * $column.columnComment
+     * 娌夐粯鏃堕棿
      */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    @ApiModelProperty(value = "silencetime")
+    @Excel(name = "娌夐粯鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鏃堕棿")
     private Long silencetime;
 
     /**
-     * $column.columnComment
+     * 娌夐粯鎸佺画鏃堕棿
      */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    @ApiModelProperty(value = "slienceRepeatTimes")
+    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
     private Long slienceRepeatTimes;
 
     /**
-     * $column.columnComment
+     * 鏃犲尮閰嶆椂闂�
      */
-    @ApiModelProperty(value = "nomatchRepeatTimes")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鏃犲尮閰嶆椂闂�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
     private Long nomatchRepeatTimes;
 
     /**
-     * $column.columnComment
+     * 绗竴娆¢棶棰樼紪鍙�
      */
-    @ApiModelProperty(value = "firstQuestionNum")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "绗竴娆¢棶棰樼紪鍙�")
+    @ApiModelProperty(value = "绗竴娆¢棶棰樼紪鍙�")
     private Long firstQuestionNum;
 
     /**
-     * $column.columnComment
+     * 閫氱敤鍖归厤璇濇湳
      */
-    @ApiModelProperty(value = "瀛愮粍浠�")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "閫氱敤鍖归厤璇濇湳")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳")
     private String submodule;
 
     /**
-     * $column.columnComment
+     * 璇█
      */
+    @Excel(name = "璇█")
     @ApiModelProperty(value = "璇█")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String language;
+
     /**
-     * $column.columnComment
+     * 鎻忚堪
      */
+    @Excel(name = "鎻忚堪")
     @ApiModelProperty(value = "鎻忚堪")
-    @Excel(name = "${note}", readConverterExp = "$column.readConverterExp()")
     private String note;
+
     /**
-     * $column.columnComment
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
      */
-    @ApiModelProperty(value = "isEnable")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
     private Long isEnable;
 
     /**
-     * $column.columnComment
+     * 鏂板鐢ㄦ埛ID
      */
-    @ApiModelProperty(value = "娣诲姞浜�")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鏂板鐢ㄦ埛ID")
+    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
     private String addUserID;
 
     /**
-     * $column.columnComment
+     * 鏂板鏃堕棿
      */
-    @ApiModelProperty(value = "娣诲姞鏃堕棿")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏂板鏃堕棿")
     private Date addTime;
 
     /**
-     * $column.columnComment
+     * 淇敼鐢ㄦ埛ID
      */
-    @ApiModelProperty(value = "淇敼浜篿d")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "淇敼鐢ㄦ埛ID")
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
     private String modifyUserID;
 
     /**
-     * $column.columnComment
+     * 淇敼鏃堕棿
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "淇敼鏃堕棿")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private Date modifyTime;
 
     /**
-     * $column.columnComment
+     * 鍒嗙粍ID
      */
-    @ApiModelProperty(value = "鍒嗙粍id")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
     private String groupID;
 
     /**
-     * $column.columnComment
+     * 鏍囩淇℃伅
      */
+    @Excel(name = "鏍囩淇℃伅")
     @ApiModelProperty(value = "鏍囩淇℃伅")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String labelInfo;
 
     /**
-     * $column.columnComment
+     * 閫氱敤鍖归厤璇濇湳id
      */
-    @ApiModelProperty(value = "妯℃澘id")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "閫氱敤鍖归厤璇濇湳id")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳id")
     private String submoduleID;
 
     /**
      * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
      */
-    @ApiModelProperty(value = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
     @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    @ApiModelProperty(value = " 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
     private Long playType;
 
     /**
-     * $column.columnComment
+     * 鐤剧梾鍏宠仈
      */
-    @ApiModelProperty(value = "icd10code")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鐤剧梾鍏宠仈")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈")
     private String icd10code;
 
     /**
-     * $column.columnComment
+     * 鐤剧梾鍏宠仈鍚嶇О
      */
-    @ApiModelProperty(value = "icd10codename")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "鐤剧梾鍏宠仈鍚嶇О")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈鍚嶇О")
     private String icd10codename;
 
     /**
-     * $column.columnComment
+     * atuoTaskDayOffset
      */
+    @Excel(name = "atuoTaskDayOffset")
     @ApiModelProperty(value = "atuoTaskDayOffset")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private Long atuoTaskDayOffset;
 
     /**
-     * $column.columnComment
+     * 閮ㄩ棬ID
      */
-    @ApiModelProperty(value = "閮ㄩ棬id")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
     private String deptIds;
 
     /**
-     * $column.columnComment
+     * 閮ㄩ棬鍚嶇О
      */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String deptNames;
 
     /**
-     * $column.columnComment
+     * F_KSDM
      */
-    @ApiModelProperty(value = "fKsdm")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @Excel(name = "F_KSDM")
+    @ApiModelProperty(value = "F_KSDM")
     private String fKsdm;
 
     /**
@@ -196,31 +214,81 @@
     /**
      * 涓婁紶鏍囪
      */
-    @ApiModelProperty(value = "涓婁紶鏍囪")
     @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
     private Long isupload;
 
     /**
      * 涓婁紶鏃堕棿
      */
-    @ApiModelProperty(value = "涓婁紶鏃堕棿")
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
     private Date uploadTime;
 
     /**
      * 鏈烘瀯ID
      */
-    @ApiModelProperty(value = "鏈烘瀯ID")
     @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
     private String orgid;
 
     /**
-     * 涓婁紶鏍囪
+     * 鐖禝D
      */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒嗙被id
+     */
+    @Excel(name = "鍒嗙被id")
     @ApiModelProperty(value = "鍒嗙被id")
-    @Excel(name = " 鍒嗙被id ")
     private Long assortid;
 
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty(value = "鍙傛暟鍙橀噺")
+    private String parameter;
+
+
+    /**
+     * 鐗堟湰鍙�
+     */
+    @Excel(name = "鐗堟湰鍙�")
+    @ApiModelProperty(value = "鐗堟湰鍙�")
+    private String version;
+
+
+    /**
+     * 鍙敤鐘舵��
+     */
+    @Excel(name = "鍙敤鐘舵��")
+    @ApiModelProperty(value = "鍙敤鐘舵��")
+    private String usestate;
+
+    /**
+     * 鍙敤鐘舵��
+     */
+    @Excel(name = "鍖婚櫌闄㈠尯")
+    @ApiModelProperty(value = "鍖婚櫌闄㈠尯")
+    private String campus;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssort.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssort.java
new file mode 100644
index 0000000..881f229
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssort.java
@@ -0,0 +1,55 @@
+package com.smartor.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 妯℃澘鍒嗙被瀵硅薄 ivr_liba_template_assort
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateAssort", description = "妯℃澘鍒嗙被瀵硅薄")
+public class IvrLibaTemplateAssort extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 鎸囨爣鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鎸囨爣鍒嗙被鍚嶇О")
+    @ApiModelProperty(value = "鎸囨爣鍒嗙被鍚嶇О")
+    private String indexAssortName;
+
+    /**
+     * 鍒犻櫎
+     */
+    @ApiModelProperty(value = "鍒犻櫎")
+    private String delFlag;
+
+    /**
+     * 鐖秈d
+     */
+    @Excel(name = "鐖秈d")
+    @ApiModelProperty(value = "鐖秈d")
+    private Long pid;
+
+    /**
+     * 搴忓彿
+     */
+    @Excel(name = "搴忓彿")
+    @ApiModelProperty(value = "搴忓彿")
+    private Integer seqno;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssortVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssortVO.java
new file mode 100644
index 0000000..e9d64cd
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateAssortVO.java
@@ -0,0 +1,57 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 妯℃澘鍒嗙被杩斿弬瀵硅薄 ivr_liba_template_assort
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateAssortVO", description = "妯℃澘鍒嗙被瀵硅薄")
+public class IvrLibaTemplateAssortVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 鎸囨爣鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鎸囨爣鍒嗙被鍚嶇О")
+    @ApiModelProperty(value = "鎸囨爣鍒嗙被鍚嶇О")
+    private String indexAssortName;
+
+    /**
+     * 鍒犻櫎
+     */
+    @ApiModelProperty(value = "鍒犻櫎")
+    private String delFlag;
+
+    /**
+     * 鐖秈d
+     */
+    @Excel(name = "鐖秈d")
+    @ApiModelProperty(value = "鐖秈d")
+    private Long pid;
+
+    /**
+     * 瀛愭暟鎹�
+     */
+    @Excel(name = "瀛愭暟鎹�")
+    @ApiModelProperty(value = "瀛愭暟鎹�")
+    private List<IvrLibaTemplateAssort> ivrLibaTemplateAssortList = new ArrayList<>();
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
new file mode 100644
index 0000000..d22e722
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
@@ -0,0 +1,229 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 妯$増闂璇濇湳搴撳璞� ivr_liba_template_script
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateAssort", description = "妯℃澘鍒嗙被瀵硅薄")
+public class IvrLibaTemplateScript extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 妯℃澘璇濇湳缂栧彿
+     */
+    @Excel(name = "妯℃澘璇濇湳缂栧彿")
+    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
+    private Long templateQuestionNum;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 璇濇湳ID
+     */
+    @ApiModelProperty(value = "璇濇湳ID")
+    private Long scriptid;
+
+    /**
+     * 闂鐐�
+     */
+    @Excel(name = "闂鐐�")
+    @ApiModelProperty(value = "闂鐐�")
+    private String questionPoint;
+
+    /**
+     * 璇濇湳鍐呭
+     */
+    @Excel(name = "璇濇湳鍐呭")
+    @ApiModelProperty(value = "璇濇湳鍐呭")
+    private String questionText;
+
+    /**
+     * 璇濇湳璇煶
+     */
+    @Excel(name = "璇濇湳璇煶")
+    @ApiModelProperty(value = "璇濇湳璇煶")
+    private String questionVoice;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈�")
+    private String noMatchText;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈闊�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈闊�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈闊�")
+    private String noMatchVoice;
+
+    /**
+     * 闈欓粯璇濇湳
+     */
+    @Excel(name = "闈欓粯璇濇湳")
+    @ApiModelProperty(value = "闈欓粯璇濇湳")
+    private String slienceText;
+
+    /**
+     * 闈欓粯璇濇湳璇煶
+     */
+    @Excel(name = "闈欓粯璇濇湳璇煶")
+    @ApiModelProperty(value = "闈欓粯璇濇湳璇煶")
+    private String slienceVoice;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    private String submoduleText;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    private String submoduleVoice;
+
+    /**
+     * 鍚笉娓呰瘽鏈�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈�")
+    private String noClearlyText;
+
+    /**
+     * 鍚笉娓呰瘽鏈闊�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈闊�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈闊�")
+    private String noClearlyVoice;
+
+    /**
+     * 绫诲埆鍚�
+     */
+    @Excel(name = "绫诲埆鍚�")
+    @ApiModelProperty(value = "绫诲埆鍚�")
+    private String categoryName;
+
+    /**
+     * 鎸囨爣閫夐」
+     */
+    @Excel(name = "鎸囨爣閫夐」")
+    @ApiModelProperty(value = "鎸囨爣閫夐」")
+    private String targetOptions;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鍙兘鎾斁WAV绫诲瀷
+     */
+    @Excel(name = "鍙兘鎾斁WAV绫诲瀷")
+    @ApiModelProperty(value = "鍙兘鎾斁WAV绫诲瀷")
+    private Long playWavOnly;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long isEnable;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer targettype;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Long targetid;
+
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer targetvalue;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
new file mode 100644
index 0000000..d3f17d1
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
@@ -0,0 +1,234 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 妯$増闂璇濇湳搴撳璞″弬鏁� ivr_liba_template_script
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateScriptVO", description = "妯$増闂璇濇湳搴撳璞″弬鏁�")
+public class IvrLibaTemplateScriptVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 妯℃澘璇濇湳缂栧彿
+     */
+    @Excel(name = "妯℃澘璇濇湳缂栧彿")
+    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
+    private Long templateQuestionNum;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 鍩虹璇濇湳ID
+     */
+    @ApiModelProperty(value = "鍩虹璇濇湳ID")
+    private Long scriptID;
+
+    /**
+     * 闂鐐�
+     */
+    @Excel(name = "闂鐐�")
+    @ApiModelProperty(value = "闂鐐�")
+    private String questionPoint;
+
+    /**
+     * 璇濇湳鍐呭
+     */
+    @Excel(name = "璇濇湳鍐呭")
+    @ApiModelProperty(value = "璇濇湳鍐呭")
+    private String questionText;
+
+    /**
+     * 璇濇湳璇煶
+     */
+    @Excel(name = "璇濇湳璇煶")
+    @ApiModelProperty(value = "璇濇湳璇煶")
+    private String questionVoice;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈�")
+    private String noMatchText;
+
+    /**
+     * 鏃犲尮閰嶈瘽鏈闊�
+     */
+    @Excel(name = "鏃犲尮閰嶈瘽鏈闊�")
+    @ApiModelProperty(value = "鏃犲尮閰嶈瘽鏈闊�")
+    private String noMatchVoice;
+
+    /**
+     * 闈欓粯璇濇湳
+     */
+    @Excel(name = "闈欓粯璇濇湳")
+    @ApiModelProperty(value = "闈欓粯璇濇湳")
+    private String slienceText;
+
+    /**
+     * 闈欓粯璇濇湳璇煶
+     */
+    @Excel(name = "闈欓粯璇濇湳璇煶")
+    @ApiModelProperty(value = "闈欓粯璇濇湳璇煶")
+    private String slienceVoice;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳")
+    private String submoduleText;
+
+    /**
+     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶
+     */
+    @Excel(name = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    @ApiModelProperty(value = "閫氱敤搴撳尮閰嶅悗璇濇湳璇煶")
+    private String submoduleVoice;
+
+    /**
+     * 鍚笉娓呰瘽鏈�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈�")
+    private String noClearlyText;
+
+    /**
+     * 鍚笉娓呰瘽鏈闊�
+     */
+    @Excel(name = "鍚笉娓呰瘽鏈闊�")
+    @ApiModelProperty(value = "鍚笉娓呰瘽鏈闊�")
+    private String noClearlyVoice;
+
+    /**
+     * 绫诲埆鍚�
+     */
+    @Excel(name = "绫诲埆鍚�")
+    @ApiModelProperty(value = "绫诲埆鍚�")
+    private String categoryName;
+
+    /**
+     * 鎸囨爣閫夐」
+     */
+    @Excel(name = "鎸囨爣閫夐」")
+    @ApiModelProperty(value = "鎸囨爣閫夐」")
+    private String targetOptions;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鍙兘鎾斁WAV绫诲瀷
+     */
+    @Excel(name = "鍙兘鎾斁WAV绫诲瀷")
+    @ApiModelProperty(value = "鍙兘鎾斁WAV绫诲瀷")
+    private Long playWavOnly;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long isEnable;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+    /**
+     * 鍩虹鎸囨爣绫诲瀷
+     */
+    @ApiModelProperty(value = "鍩虹鎸囨爣绫诲瀷")
+    private Integer targetType;
+
+    /**
+     * 鍩虹鎸囨爣id
+     */
+    @ApiModelProperty(value = "鍩虹鎸囨爣id")
+    private Integer targetid;
+
+
+    /**
+     * 鍩虹鎸囨爣鍊�
+     */
+    @ApiModelProperty(value = "鍩虹鎸囨爣鍊�")
+    private Integer targetValue;
+
+    /**
+     * 璇濇湳閫夐」
+     */
+    @ApiModelProperty(value = "璇濇湳閫夐」")
+    private List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTag.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTag.java
new file mode 100644
index 0000000..bcbe8b3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTag.java
@@ -0,0 +1,106 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 妯℃澘鏍囩瀵硅薄 ivr_liba_template_tag
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateTag", description = "妯℃澘鏍囩瀵硅薄")
+public class IvrLibaTemplateTag extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 鏍囩鍒嗙被ID
+     */
+    @Excel(name = " 鏍囩鍒嗙被ID ")
+    @ApiModelProperty(value = "鏍囩鍒嗙被ID")
+    private Long tagcategoryid;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = " 妯℃澘ID ")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateid;
+
+    /**
+     * 鏍囩ID
+     */
+    @Excel(name = " 鏍囩ID ")
+    @ApiModelProperty(value = "鏍囩ID")
+    private Long tagid;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏍囩ID
+     */
+    @Excel(name = "鏍囩ID ")
+    @ApiModelProperty(value = "鏍囩ID")
+    private Long targetid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java
new file mode 100644
index 0000000..a415fc7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTarget.java
@@ -0,0 +1,219 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 妯$増闂鎸囨爣搴撳璞� ivr_liba_template_target
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateTarget", description = "妯$増闂鎸囨爣搴撳璞�")
+public class IvrLibaTemplateTarget extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 妯℃澘鎸囨爣ID
+     */
+    @ApiModelProperty(value = "妯℃澘鎸囨爣ID")
+    private Long ID;
+
+    /**
+     * 妯℃澘璇濇湳ID
+     */
+    @Excel(name = "妯℃澘璇濇湳ID")
+    @ApiModelProperty(value = "妯℃澘璇濇湳ID")
+    private Long templateQuestionID;
+
+    /**
+     * 妯℃澘璇濇湳缂栧彿
+     */
+    @Excel(name = "妯℃澘璇濇湳缂栧彿")
+    @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
+    private Long templateQuestionNum;
+
+    /**
+     * 涓嬩竴涓瘽鏈紪鍙�
+     */
+    @Excel(name = "涓嬩竴涓瘽鏈紪鍙�")
+    @ApiModelProperty(value = "涓嬩竴涓瘽鏈紪鍙�")
+    private Long nextQuestionNum;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 鑺傜偣ID
+     */
+    @Excel(name = "鑺傜偣ID")
+    @ApiModelProperty(value = "鑺傜偣ID")
+    private Long switchID;
+
+    /**
+     * 鑺傜偣鎻忚堪
+     */
+    @Excel(name = "鑺傜偣鎻忚堪")
+    @ApiModelProperty(value = "鑺傜偣鎻忚堪")
+    private String switchDescription;
+
+    /**
+     * 鑺傜偣鍐呭
+     */
+    @Excel(name = "鑺傜偣鍐呭")
+    @ApiModelProperty(value = "鑺傜偣鍐呭")
+    private String switchText;
+
+    /**
+     * 鑺傜偣鐨刉AV鏍煎紡
+     */
+    @Excel(name = "鑺傜偣鐨刉AV鏍煎紡")
+    @ApiModelProperty(value = "鑺傜偣鐨刉AV鏍煎紡")
+    private String switchWav;
+
+    /**
+     * 鑺傜偣寰呭尮閰嶈闊�
+     */
+    @Excel(name = "鑺傜偣寰呭尮閰嶈闊�")
+    @ApiModelProperty(value = "鑺傜偣寰呭尮閰嶈闊�")
+    private String switchTempWav;
+
+    /**
+     * 鎸囨爣绫诲瀷
+     */
+    @Excel(name = "鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "鎸囨爣绫诲瀷")
+    private String targetType;
+
+    /**
+     * 鍒嗙被鍚�
+     */
+    @Excel(name = "鍒嗙被鍚�")
+    @ApiModelProperty(value = "鍒嗙被鍚�")
+    private String categoryName;
+
+    /**
+     * 鎸囨爣鍊�
+     */
+    @Excel(name = "鎸囨爣鍊�")
+    @ApiModelProperty(value = "鎸囨爣鍊�")
+    private String targetValue;
+
+    /**
+     * 鎸囨爣ID
+     */
+    @Excel(name = "鎸囨爣ID")
+    @ApiModelProperty(value = "鎸囨爣ID")
+    private String targetID;
+
+    /**
+     * 璇濇湳鎸囨爣ID
+     */
+    @Excel(name = "璇濇湳鎸囨爣ID")
+    @ApiModelProperty(value = "璇濇湳鎸囨爣ID")
+    private String questionTargetID;
+
+    /**
+     * 鍩虹姝e垯
+     */
+    @Excel(name = "鍩虹姝e垯")
+    @ApiModelProperty(value = "鍩虹姝e垯")
+    private String basicRegex;
+
+    /**
+     * 鑷韩姝e垯
+     */
+    @Excel(name = "鑷韩姝e垯")
+    @ApiModelProperty(value = "鑷韩姝e垯")
+    private String selfRegex;
+
+    /**
+     * 姝e垯浣跨敤绫诲瀷
+     */
+    @Excel(name = "姝e垯浣跨敤绫诲瀷")
+    @ApiModelProperty(value = "姝e垯浣跨敤绫诲瀷")
+    private String regexUsedType;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long isEnable;
+
+    /**
+     * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
+     */
+    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    @ApiModelProperty(value = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    private Long playType;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
new file mode 100644
index 0000000..2855ff3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
@@ -0,0 +1,183 @@
+package com.smartor.domain;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 妯℃澘鎸囨爣閫夐」搴撳璞� ivr_liba_template_targetoption
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateTargetoption", description = "妯℃澘鎸囨爣閫夐」搴撳璞�")
+public class IvrLibaTemplateTargetoption extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
+
+    /**
+     * 妯℃澘鎸囨爣ID
+     */
+    @Excel(name = "妯℃澘鎸囨爣ID")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣ID")
+    private Long targetid;
+
+    /**
+     * 鎸囨爣鍚嶇О
+     */
+    @Excel(name = "鎸囨爣鍚嶇О")
+    @ApiModelProperty(value = "鎸囨爣鍚嶇О")
+    private String targetname;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘ID")
+    @ApiModelProperty(value = "妯℃澘ID")
+    private Long templateID;
+
+    /**
+     * 璇濇湳ID
+     */
+    @Excel(name = "璇濇湳ID")
+    @ApiModelProperty(value = "璇濇湳ID")
+    private Long scriptid;
+
+    /**
+     * 妯℃澘鎸囨爣绫诲瀷
+     */
+    @Excel(name = "妯℃澘鎸囨爣绫诲瀷")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣绫诲瀷")
+    private String targettype;
+
+    /**
+     * 绫诲埆鍚嶇О
+     */
+    @Excel(name = "绫诲埆鍚嶇О")
+    @ApiModelProperty(value = "绫诲埆鍚嶇О")
+    private String categoryName;
+
+    /**
+     * 妯℃澘鎸囨爣鍊�
+     */
+    @Excel(name = "妯℃澘鎸囨爣鍊�")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣鍊�")
+    private String targetvalue;
+
+    /**
+     * 妯℃澘鎸囨爣姝e垯
+     */
+    @Excel(name = "妯℃澘鎸囨爣姝e垯")
+    @ApiModelProperty(value = "妯℃澘鎸囨爣姝e垯")
+    private String targetregex;
+
+    /**
+     * 閫夐」鎻忚堪
+     */
+    @Excel(name = "閫夐」鎻忚堪")
+    @ApiModelProperty(value = "閫夐」鎻忚堪")
+    private String optiondesc;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鐗堟湰
+     */
+    @Excel(name = "鐗堟湰")
+    @ApiModelProperty(value = "鐗堟湰")
+    private String version;
+
+    /**
+     * 鍒嗙粍ID
+     */
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
+    private String groupid;
+
+    /**
+     * 鏄惁寮傚父鏍囪瘑
+     */
+    @Excel(name = "鏄惁寮傚父鏍囪瘑")
+    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
+    private Long isabnormal;
+
+    /**
+     * 棰勮闃�鍊间笂闄�
+     */
+    @Excel(name = "棰勮闃�鍊间笂闄�")
+    @ApiModelProperty(value = "棰勮闃�鍊间笂闄�")
+    private Long warnup;
+
+    /**
+     * 棰勮闃�鍊间笅闄�
+     */
+    @Excel(name = "棰勮闃�鍊间笅闄�")
+    @ApiModelProperty(value = "棰勮闃�鍊间笅闄�")
+    private Long warndown;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java
new file mode 100644
index 0000000..0f4ed1c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateVO.java
@@ -0,0 +1,309 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 妯℃澘搴撹繑鍙傚璞� ivr_liba_template
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Data
+@ApiModel(value = "IvrLibaTemplateVO", description = "妯℃澘搴撹繑鍙傚璞�")
+public class IvrLibaTemplateVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @ApiModelProperty(value = "涓婚敭")
+    private Long ID;
+
+    /**
+     * 妯℃澘ID
+     */
+    @Excel(name = "妯℃澘鍚�")
+    @ApiModelProperty(value = "妯℃澘鍚� ")
+    private String templateName;
+
+    /**
+     * 鎸囨爣id
+     */
+    @Excel(name = "鎸囨爣id")
+    @ApiModelProperty(value = "鎸囨爣id")
+    private Integer targetid;
+
+    /**
+     * 鎸囨爣鍚�
+     */
+    @Excel(name = "鎸囨爣鍚�")
+    @ApiModelProperty(value = "鎸囨爣鍚�")
+    private Integer targetname;
+
+    /**
+     * 娌夐粯鏃堕棿
+     */
+    @Excel(name = "娌夐粯鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鏃堕棿")
+    private Long silencetime;
+
+    /**
+     * 娌夐粯鎸佺画鏃堕棿
+     */
+    @Excel(name = "娌夐粯鎸佺画鏃堕棿")
+    @ApiModelProperty(value = "娌夐粯鎸佺画鏃堕棿")
+    private Long slienceRepeatTimes;
+
+    /**
+     * 鏃犲尮閰嶆椂闂�
+     */
+    @Excel(name = "鏃犲尮閰嶆椂闂�")
+    @ApiModelProperty(value = "鏃犲尮閰嶆椂闂�")
+    private Long nomatchRepeatTimes;
+
+    /**
+     * 绗竴娆¢棶棰樼紪鍙�
+     */
+    @Excel(name = "绗竴娆¢棶棰樼紪鍙�")
+    @ApiModelProperty(value = "绗竴娆¢棶棰樼紪鍙�")
+    private Long firstQuestionNum;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳")
+    private String submodule;
+
+    /**
+     * 璇█
+     */
+    @Excel(name = "璇█")
+    @ApiModelProperty(value = "璇█")
+    private String language;
+
+    /**
+     * 鎻忚堪
+     */
+    @Excel(name = "鎻忚堪")
+    @ApiModelProperty(value = "鎻忚堪")
+    private String note;
+
+    /**
+     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
+     */
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "1=,閫�=椤�,2=,鏂�=鏈�,3=,鏁�=鍊�")
+    @ApiModelProperty(value = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    private Long isEnable;
+
+    /**
+     * 鏂板鐢ㄦ埛ID
+     */
+    @Excel(name = "鏂板鐢ㄦ埛ID")
+    @ApiModelProperty(value = "鏂板鐢ㄦ埛ID")
+    private String addUserID;
+
+    /**
+     * 鏂板鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鏂板鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏂板鏃堕棿")
+    private Date addTime;
+
+    /**
+     * 淇敼鐢ㄦ埛ID
+     */
+    @Excel(name = "淇敼鐢ㄦ埛ID")
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛ID")
+    private String modifyUserID;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "淇敼鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    private Date modifyTime;
+
+    /**
+     * 鍒嗙粍ID
+     */
+    @Excel(name = "鍒嗙粍ID")
+    @ApiModelProperty(value = "鍒嗙粍ID")
+    private String groupID;
+
+    /**
+     * 鏍囩淇℃伅
+     */
+    @Excel(name = "鏍囩淇℃伅")
+    @ApiModelProperty(value = "鏍囩淇℃伅")
+    private String labelInfo;
+
+    /**
+     * 閫氱敤鍖归厤璇濇湳id
+     */
+    @Excel(name = "閫氱敤鍖归厤璇濇湳id")
+    @ApiModelProperty(value = "閫氱敤鍖归厤璇濇湳id")
+    private String submoduleID;
+
+    /**
+     * 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛
+     */
+    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    @ApiModelProperty(value = " 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
+    private Long playType;
+
+    /**
+     * 鐤剧梾鍏宠仈
+     */
+    @Excel(name = "鐤剧梾鍏宠仈")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈")
+    private String icd10code;
+
+    /**
+     * 鐤剧梾鍏宠仈鍚嶇О
+     */
+    @Excel(name = "鐤剧梾鍏宠仈鍚嶇О")
+    @ApiModelProperty(value = "鐤剧梾鍏宠仈鍚嶇О")
+    private String icd10codename;
+
+    /**
+     * atuoTaskDayOffset
+     */
+    @Excel(name = "atuoTaskDayOffset")
+    @ApiModelProperty(value = "atuoTaskDayOffset")
+    private Long atuoTaskDayOffset;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @Excel(name = "閮ㄩ棬ID")
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private String deptIds;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @Excel(name = "閮ㄩ棬鍚嶇О")
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О")
+    private String deptNames;
+
+    /**
+     * F_KSDM
+     */
+    @Excel(name = "F_KSDM")
+    @ApiModelProperty(value = "F_KSDM")
+    private String fKsdm;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @Excel(name = " 涓婁紶鏍囪 ")
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = " 鏈烘瀯ID ")
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒嗙被id
+     */
+    @Excel(name = "鍒嗙被id")
+    @ApiModelProperty(value = "鍒嗙被id")
+    private Long assortid;
+
+    /**
+     * 鍙傛暟鍙橀噺
+     */
+    @Excel(name = "鍙傛暟鍙橀噺")
+    @ApiModelProperty(value = "鍙傛暟鍙橀噺")
+    private String parameter;
+
+    /**
+     * 鐗堟湰鍙�
+     */
+    @Excel(name = "鐗堟湰鍙�")
+    @ApiModelProperty(value = "鐗堟湰鍙�")
+    private String version;
+
+    /**
+     * 鍙敤鐘舵��
+     */
+    @Excel(name = "鍙敤鐘舵��")
+    @ApiModelProperty(value = "鍙敤鐘舵��")
+    private String usestate;
+
+    /**
+     * 鍖婚櫌闄㈠尯
+     */
+    @Excel(name = "鍖婚櫌闄㈠尯")
+    @ApiModelProperty(value = "鍖婚櫌闄㈠尯")
+    private String campus;
+
+    /**
+     * 鏍囩
+     */
+    @Excel(name = "鏍囩")
+    @ApiModelProperty(value = "鏍囩")
+    private String tag;
+
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+//
+//    @ApiModelProperty(value = "妯℃澘鏍囩闆嗗悎")
+//    private List<IvrLibaTemplateTarget> ivrLibaTemplateTargetList;
+
+    @ApiModelProperty(value = "妯℃澘闂闆嗗悎")
+    private List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList;
+
+    @ApiModelProperty(value = "妯℃澘鎸囨爣闆嗗悎")
+    private List<IvrLibaTemplateTag> ivrLibaTemplateTagList;
+//
+//    @ApiModelProperty(value = "妯℃澘閫夐」闆嗗悎")
+//    private List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatescript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatescript.java
deleted file mode 100644
index 090d2af..0000000
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatescript.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.smartor.domain;
-
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈璞� ivr_liba_templatescript
- * 
- * @author smartor
- * @date 2023-03-22
- */
-@Data
-@ApiModel(value = "IvrLibaTemplatescript", description = "璇濇湳妯℃澘搴撹瘽鏈璞�")
-public class IvrLibaTemplatescript extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "templateQuestionID")
-    private String templateQuestionID;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "templateQuestionNum")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long templateQuestionNum;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "templateID")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String templateID;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "questionID")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String questionID;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "questionPoint")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String questionPoint;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "questionText")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String questionText;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "questionVoice")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String questionVoice;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "noMatchText")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String noMatchText;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "noMatchVoice")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String noMatchVoice;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "slienceText")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String slienceText;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "slienceVoice")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String slienceVoice;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "submoduleText")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String submoduleText;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "submoduleVoice")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String submoduleVoice;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "noClearlyText")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String noClearlyText;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "noClearlyVoice")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String noClearlyVoice;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "绫诲埆鍚�")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String categoryName;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "鎸囨爣閫夐」")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String targetOptions;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "璇█")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String language;
-
-    /** $column.columnComment */
-    @ApiModelProperty(value = "playWavOnly")
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long playWavOnly;
-
-
-}
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetarget.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetarget.java
deleted file mode 100644
index bef91a6..0000000
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetarget.java
+++ /dev/null
@@ -1,393 +0,0 @@
-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_liba_templatetarget
- * 
- * @author smartor
- * @date 2023-03-22
- */
-public class IvrLibaTemplatetarget extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    /** $column.columnComment */
-    private String templateTargetID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String templateQuestionID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long templateQuestionNum;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long nextQuestionNum;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String templateID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long switchID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String switchDescription;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String switchText;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String switchWav;
-
-    /** 鑺傜偣寰呭尮閰嶈闊� */
-    @Excel(name = "鑺傜偣寰呭尮閰嶈闊�")
-    private String switchTempWav;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String targetType;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String categoryName;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String targetValue;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String targetID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String questionTargetID;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String basicRegex;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String selfRegex;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String regexUsedType;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private String language;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long isEnable;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-    private Long isDel;
-
-    /** 鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛 */
-    @Excel(name = "鎾姤绫诲瀷 0.璇煶浼樺厛 1.鏂囧瓧浼樺厛")
-    private Long playType;
-
-    /**  鍒犻櫎鏍囪  */
-    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 setTemplateTargetID(String templateTargetID) 
-    {
-        this.templateTargetID = templateTargetID;
-    }
-
-    public String getTemplateTargetID() 
-    {
-        return templateTargetID;
-    }
-    public void setTemplateQuestionID(String templateQuestionID) 
-    {
-        this.templateQuestionID = templateQuestionID;
-    }
-
-    public String getTemplateQuestionID() 
-    {
-        return templateQuestionID;
-    }
-    public void setTemplateQuestionNum(Long templateQuestionNum) 
-    {
-        this.templateQuestionNum = templateQuestionNum;
-    }
-
-    public Long getTemplateQuestionNum() 
-    {
-        return templateQuestionNum;
-    }
-    public void setNextQuestionNum(Long nextQuestionNum) 
-    {
-        this.nextQuestionNum = nextQuestionNum;
-    }
-
-    public Long getNextQuestionNum() 
-    {
-        return nextQuestionNum;
-    }
-    public void setTemplateID(String templateID) 
-    {
-        this.templateID = templateID;
-    }
-
-    public String getTemplateID() 
-    {
-        return templateID;
-    }
-    public void setSwitchID(Long switchID) 
-    {
-        this.switchID = switchID;
-    }
-
-    public Long getSwitchID() 
-    {
-        return switchID;
-    }
-    public void setSwitchDescription(String switchDescription) 
-    {
-        this.switchDescription = switchDescription;
-    }
-
-    public String getSwitchDescription() 
-    {
-        return switchDescription;
-    }
-    public void setSwitchText(String switchText) 
-    {
-        this.switchText = switchText;
-    }
-
-    public String getSwitchText() 
-    {
-        return switchText;
-    }
-    public void setSwitchWav(String switchWav) 
-    {
-        this.switchWav = switchWav;
-    }
-
-    public String getSwitchWav() 
-    {
-        return switchWav;
-    }
-    public void setSwitchTempWav(String switchTempWav) 
-    {
-        this.switchTempWav = switchTempWav;
-    }
-
-    public String getSwitchTempWav() 
-    {
-        return switchTempWav;
-    }
-    public void setTargetType(String targetType) 
-    {
-        this.targetType = targetType;
-    }
-
-    public String getTargetType() 
-    {
-        return targetType;
-    }
-    public void setCategoryName(String categoryName) 
-    {
-        this.categoryName = categoryName;
-    }
-
-    public String getCategoryName() 
-    {
-        return categoryName;
-    }
-    public void setTargetValue(String targetValue) 
-    {
-        this.targetValue = targetValue;
-    }
-
-    public String getTargetValue() 
-    {
-        return targetValue;
-    }
-    public void setTargetID(String targetID) 
-    {
-        this.targetID = targetID;
-    }
-
-    public String getTargetID() 
-    {
-        return targetID;
-    }
-    public void setQuestionTargetID(String questionTargetID) 
-    {
-        this.questionTargetID = questionTargetID;
-    }
-
-    public String getQuestionTargetID() 
-    {
-        return questionTargetID;
-    }
-    public void setBasicRegex(String basicRegex) 
-    {
-        this.basicRegex = basicRegex;
-    }
-
-    public String getBasicRegex() 
-    {
-        return basicRegex;
-    }
-    public void setSelfRegex(String selfRegex) 
-    {
-        this.selfRegex = selfRegex;
-    }
-
-    public String getSelfRegex() 
-    {
-        return selfRegex;
-    }
-    public void setRegexUsedType(String regexUsedType) 
-    {
-        this.regexUsedType = regexUsedType;
-    }
-
-    public String getRegexUsedType() 
-    {
-        return regexUsedType;
-    }
-    public void setLanguage(String language) 
-    {
-        this.language = language;
-    }
-
-    public String getLanguage() 
-    {
-        return language;
-    }
-    public void setIsEnable(Long isEnable) 
-    {
-        this.isEnable = isEnable;
-    }
-
-    public Long getIsEnable() 
-    {
-        return isEnable;
-    }
-    public void setIsDel(Long isDel) 
-    {
-        this.isDel = isDel;
-    }
-
-    public Long getIsDel() 
-    {
-        return isDel;
-    }
-    public void setPlayType(Long playType) 
-    {
-        this.playType = playType;
-    }
-
-    public Long getPlayType() 
-    {
-        return playType;
-    }
-    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("templateTargetID", getTemplateTargetID())
-            .append("templateQuestionID", getTemplateQuestionID())
-            .append("templateQuestionNum", getTemplateQuestionNum())
-            .append("nextQuestionNum", getNextQuestionNum())
-            .append("templateID", getTemplateID())
-            .append("switchID", getSwitchID())
-            .append("switchDescription", getSwitchDescription())
-            .append("switchText", getSwitchText())
-            .append("switchWav", getSwitchWav())
-            .append("switchTempWav", getSwitchTempWav())
-            .append("targetType", getTargetType())
-            .append("categoryName", getCategoryName())
-            .append("targetValue", getTargetValue())
-            .append("targetID", getTargetID())
-            .append("questionTargetID", getQuestionTargetID())
-            .append("basicRegex", getBasicRegex())
-            .append("selfRegex", getSelfRegex())
-            .append("regexUsedType", getRegexUsedType())
-            .append("language", getLanguage())
-            .append("isEnable", getIsEnable())
-            .append("isDel", getIsDel())
-            .append("playType", getPlayType())
-            .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/IvrLibaTemplatetargetAssort.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetargetAssort.java
index fe57253..399a9c2 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetargetAssort.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplatetargetAssort.java
@@ -12,7 +12,7 @@
  * 鎸囨爣妯℃澘鍒嗙被瀵硅薄 ivr_liba_templatetarget_assort
  *
  * @author ruoyi
- * @date 2023-12-18
+ * @date 2023-12-23
  */
 @Data
 @ApiModel(value = "IvrLibaTemplatetargetAssort", description = "鎸囨爣妯℃澘鍒嗙被瀵硅薄")
@@ -44,6 +44,5 @@
     @Excel(name = "鐖秈d")
     @ApiModelProperty(value = "鐖秈d")
     private Long pid;
-
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyCategory.java b/smartor/src/main/java/com/smartor/domain/SvyCategory.java
index 4ac4511..96dca8a 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyCategory.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyCategory.java
@@ -2,6 +2,7 @@
 
 import java.util.Date;
 
+import afu.org.checkerframework.checker.igj.qual.I;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -61,10 +62,16 @@
     private Date uploadTime;
 
     /**
-     * 闂嵎鏁伴噺
+     * 鐖禝D
      */
-    @ApiModelProperty(value = "闂嵎鏁伴噺")
-    private String svyNum;
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * guid
+     */
+    @ApiModelProperty(value = "guid")
+    private String guid;
 
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyCategoryVO.java b/smartor/src/main/java/com/smartor/domain/SvyCategoryVO.java
new file mode 100644
index 0000000..8c2ee99
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SvyCategoryVO.java
@@ -0,0 +1,79 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 闂嵎鍒嗙被瀵硅薄 svy_category
+ *
+ * @author ruoyi
+ * @date 2023-03-02
+ */
+@ApiModel(value = "SvyCategory", description = "闂嵎鍒嗙被瀵硅薄")
+@Data
+public class SvyCategoryVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty(value = "鑷ID")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @ApiModelProperty(value = "闂嵎鍒嗙被鍚嶇О")
+    @Excel(name = " 鍒嗙被鍚嶇О ")
+    private String categoryname;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @ApiModelProperty(value = "鏈烘瀯ID")
+    @Excel(name = " 鏈烘瀯ID ")
+    private String orgid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @ApiModelProperty(value = "涓婁紶鏍囪")
+    private Long isupload;
+
+    /**
+     * 涓婁紶鏃堕棿
+     */
+    @ApiModelProperty(value = "涓婁紶鏃堕棿")
+    private Date uploadTime;
+
+    /**
+     * 鐖禝D
+     */
+    @ApiModelProperty(value = "鐖禝D")
+    private Integer pid;
+
+    /**
+     * guid
+     */
+    @ApiModelProperty(value = "guid")
+    private String guid;
+
+    /**
+     * 浜岀骇鍒嗙被
+     */
+    @ApiModelProperty(value = "浜岀骇鍒嗙被")
+    private List<SvyCategory> svyCategoryList;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTitle.java b/smartor/src/main/java/com/smartor/domain/SvyLibTitle.java
index 2bc21b6..a55af9a 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTitle.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTitle.java
@@ -160,6 +160,11 @@
     @ApiModelProperty(value = "闂嵎棰樼洰闆嗗悎")
     private List<SvyLibTopic> svyLibTopics;
 
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
 
     public SvyLibTitle() {
     }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategory.java b/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategory.java
new file mode 100644
index 0000000..84982e1
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategory.java
@@ -0,0 +1,70 @@
+package com.smartor.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被瀵硅薄 svy_lib_title_category
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Data
+@ApiModel(value = "SvyLibTitleCategory", description = "闂嵎妯℃澘鍒嗙被瀵硅薄")
+public class SvyLibTitleCategory extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty(value = "鑷ID")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鍒嗙被鍚嶇О")
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О")
+    private String name;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private Long delFlag;
+
+    /**
+     * 鍖婚櫌鏈烘瀯id
+     */
+    @Excel(name = "鍖婚櫌鏈烘瀯id")
+    @ApiModelProperty(value = "鍖婚櫌鏈烘瀯id")
+    private Long orgid;
+
+    /**
+     * 鍖婚櫌鏈烘瀯id
+     */
+    @Excel(name = "鍖婚櫌鏈烘瀯id")
+    @ApiModelProperty(value = "鍖婚櫌鏈烘瀯id")
+    private Integer seqno;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategoryVO.java b/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategoryVO.java
new file mode 100644
index 0000000..3dcc0a8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTitleCategoryVO.java
@@ -0,0 +1,64 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被瀵硅薄 svy_lib_title_category
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Data
+@ApiModel(value = "SvyLibTitleCategory", description = "闂嵎妯℃澘鍒嗙被瀵硅薄")
+public class SvyLibTitleCategoryVO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty(value = "鑷ID")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鍒嗙被鍚嶇О")
+    @ApiModelProperty(value = "鍒嗙被鍚嶇О")
+    private String name;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty(value = "GUID")
+    private String guid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    private Long delFlag;
+
+    /**
+     * 鍖婚櫌鏈烘瀯id
+     */
+    @Excel(name = "鍖婚櫌鏈烘瀯id")
+    @ApiModelProperty(value = "鍖婚櫌鏈烘瀯id")
+    private Long orgid;
+
+    @ApiModelProperty(value = "鏍戠殑瀛愬璞¢泦鍚�")
+    private List<SvyLibTitleCategory> svyLibTitleCategoryList;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTopic.java b/smartor/src/main/java/com/smartor/domain/SvyLibTopic.java
index e808487..13f419b 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTopic.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTopic.java
@@ -36,6 +36,12 @@
     private Long oldid;
 
     /**
+     * 闂埜棰樼洰鍒嗙被ID
+     */
+    @ApiModelProperty("鑰佺増鏈琁D")
+    private Long categoryid;
+
+    /**
      * 闂嵎ID
      */
     @Excel(name = " 闂嵎ID ")
@@ -120,7 +126,12 @@
     @ApiModelProperty("棰樼洰琛ㄧ殑涓婚敭ID")
     private Long svyTopicId;
 
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
 
     @ApiModelProperty("闂閫夐」")
-    private List<SvyTopicoption> svyTopicoptions;
+    private List<SvyLibTopicoption> svyLibTopicoptions;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategory.java b/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategory.java
new file mode 100644
index 0000000..f8ae75d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategory.java
@@ -0,0 +1,78 @@
+package com.smartor.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被瀵硅薄 svy_lib_topic_category
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Data
+@ApiModel(value = "SvyLibTopicCategory", description = "闂嵎棰樼洰鍒嗙被瀵硅薄")
+public class SvyLibTopicCategory extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty("鑷ID")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鍒嗙被鍚嶇О")
+    @ApiModelProperty("鍒嗙被鍚嶇О")
+    private String name;
+
+    /**
+     * 闂嵎棰樼洰id
+     */
+    @Excel(name = "闂嵎棰樼洰id")
+    @ApiModelProperty("闂嵎棰樼洰id")
+    private Long topicid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private Long delFlag;
+
+    /**
+     * 鍖婚櫌鏈烘瀯id
+     */
+    @Excel(name = "鍖婚櫌鏈烘瀯id")
+    @ApiModelProperty("鍖婚櫌鏈烘瀯id")
+    private Long orgid;
+
+
+    /**
+     * 搴忓彿
+     */
+    @Excel(name = "搴忓彿")
+    @ApiModelProperty("搴忓彿")
+    private Integer seqno;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategoryVO.java b/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategoryVO.java
new file mode 100644
index 0000000..fc39918
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTopicCategoryVO.java
@@ -0,0 +1,76 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被鍙傛暟瀵硅薄 SvyLibTopicCategoryVO
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Data
+@ApiModel(value = "SvyLibTopicCategoryVO", description = "闂嵎棰樼洰鍒嗙被瀵硅薄")
+public class SvyLibTopicCategoryVO extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty("鑷ID")
+    private Long id;
+
+    /**
+     * 鍒嗙被鍚嶇О
+     */
+    @Excel(name = "鍒嗙被鍚嶇О")
+    @ApiModelProperty("鍒嗙被鍚嶇О")
+    private String name;
+
+    /**
+     * 闂嵎棰樼洰id
+     */
+    @Excel(name = "闂嵎棰樼洰id")
+    @ApiModelProperty("闂嵎棰樼洰id")
+    private Long topicid;
+
+    /**
+     * 鐖禝D
+     */
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @Excel(name = "GUID")
+    @ApiModelProperty("GUID")
+    private String guid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private Long delFlag;
+
+    /**
+     * 鍖婚櫌鏈烘瀯id
+     */
+    @Excel(name = "鍖婚櫌鏈烘瀯id")
+    @ApiModelProperty("鍖婚櫌鏈烘瀯id")
+    private Long orgid;
+
+    /**
+     * 瀛愬璞�
+     */
+    @ApiModelProperty("瀛愬璞¢泦")
+    private List<SvyLibTopicCategory> svyLibTopicCategoryList;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java b/smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java
index 4e2eaac..84fdfde 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTopicoption.java
@@ -185,5 +185,10 @@
     @ApiModelProperty(value = "涓婁紶鏃堕棿")
     private Date uploadTime;
 
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
 }
 
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTopicoption.java b/smartor/src/main/java/com/smartor/domain/SvyTopicoption.java
index be6559d..fac77a9 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTopicoption.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTopicoption.java
@@ -183,5 +183,11 @@
     @ApiModelProperty(value = "涓婁紶鏃堕棿")
     private Date uploadTime;
 
+    /**
+     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
+     */
+    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
+    private Integer isoperation;
+
 }
 
diff --git a/smartor/src/main/java/com/smartor/mapper/HeLibraryAssortMapper.java b/smartor/src/main/java/com/smartor/mapper/HeLibraryAssortMapper.java
new file mode 100644
index 0000000..b0a7a62
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/HeLibraryAssortMapper.java
@@ -0,0 +1,70 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.HeLibraryAssort;
+import com.smartor.domain.HeLibraryAssortVO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 瀹f暀鍒嗙被Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Mapper
+public interface HeLibraryAssortMapper {
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 瀹f暀鍒嗙被
+     */
+    public HeLibraryAssort selectHeLibraryAssortById(Long id);
+
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被鍒楄〃
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 瀹f暀鍒嗙被闆嗗悎
+     */
+    public List<HeLibraryAssort> selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 鑾峰彇seqno鐨勬渶澶у��
+     * @return
+     */
+    public Integer selectSeqMax();
+
+    /**
+     * 鏂板瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertHeLibraryAssort(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 淇敼瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateHeLibraryAssort(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 鍒犻櫎瀹f暀鍒嗙被
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryAssortById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryAssortByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/HeLibraryMapper.java b/smartor/src/main/java/com/smartor/mapper/HeLibraryMapper.java
new file mode 100644
index 0000000..0317586
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/HeLibraryMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import java.util.List;
+
+import com.smartor.domain.HeLibrary;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 瀹f暀璧勬枡搴揗apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Mapper
+public interface HeLibraryMapper {
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 瀹f暀璧勬枡搴�
+     */
+    public HeLibrary selectHeLibraryById(Long id);
+
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴撳垪琛�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 瀹f暀璧勬枡搴撻泦鍚�
+     */
+    public List<HeLibrary> selectHeLibraryList(HeLibrary heLibrary);
+
+    /**
+     * 鏂板瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    public int insertHeLibrary(HeLibrary heLibrary);
+
+    /**
+     * 淇敼瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    public int updateHeLibrary(HeLibrary heLibrary);
+
+    /**
+     * 鍒犻櫎瀹f暀璧勬枡搴�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀璧勬枡搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/HeLibraryTagMapper.java b/smartor/src/main/java/com/smartor/mapper/HeLibraryTagMapper.java
new file mode 100644
index 0000000..b979aea
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/HeLibraryTagMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import java.util.List;
+
+import com.smartor.domain.HeLibraryTag;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鎸囨爣鏍囩Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Mapper
+public interface HeLibraryTagMapper {
+    /**
+     * 鏌ヨ鎸囨爣鏍囩
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 鎸囨爣鏍囩
+     */
+    public HeLibraryTag selectHeLibraryTagById(Long id);
+
+    /**
+     * 鏌ヨ鎸囨爣鏍囩鍒楄〃
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 鎸囨爣鏍囩闆嗗悎
+     */
+    public List<HeLibraryTag> selectHeLibraryTagList(HeLibraryTag heLibraryTag);
+
+    /**
+     * 鏂板鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    public int insertHeLibraryTag(HeLibraryTag heLibraryTag);
+
+    /**
+     * 淇敼鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    public int updateHeLibraryTag(HeLibraryTag heLibraryTag);
+
+    /**
+     * 鍒犻櫎鎸囨爣鏍囩
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryTagById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎鎸囨爣鏍囩
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryTagByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateCategoryMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateCategoryMapper.java
new file mode 100644
index 0000000..4053301
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateCategoryMapper.java
@@ -0,0 +1,65 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaExtemplateCategory;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 閫氱敤妯℃澘鍒嗙被Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Mapper
+public interface IvrLibaExtemplateCategoryMapper {
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被
+     *
+     * @param intertcatid 閫氱敤妯℃澘鍒嗙被涓婚敭
+     * @return 閫氱敤妯℃澘鍒嗙被
+     */
+    public IvrLibaExtemplateCategory selectIvrLibaExtemplateCategoryByIntertcatid(Long intertcatid);
+
+    public Integer selectSeqMax();
+
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 閫氱敤妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<IvrLibaExtemplateCategory> selectIvrLibaExtemplateCategoryList(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 鏂板閫氱敤妯℃澘鍒嗙被
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 淇敼閫氱敤妯℃澘鍒嗙被
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 鍒犻櫎閫氱敤妯℃澘鍒嗙被
+     *
+     * @param intertcatid 閫氱敤妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaExtemplateCategoryByIntertcatid(Long intertcatid);
+
+    /**
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘鍒嗙被
+     *
+     * @param intertcatids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaExtemplateCategoryByIntertcatids(Long[] intertcatids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateMapper.java
index 0a732d1..e9fc21a 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplateMapper.java
@@ -1,61 +1,64 @@
 package com.smartor.mapper;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaExtemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴揗apper鎺ュ彛
+ * 閫氳繃妯℃澘Mapper鎺ュ彛
  * 
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-27
  */
+@Mapper
 public interface IvrLibaExtemplateMapper 
 {
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴�
+     * 鏌ヨ閫氳繃妯℃澘
      * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ID 閫氳繃妯℃澘涓婚敭
+     * @return 閫氳繃妯℃澘
      */
-    public IvrLibaExtemplate selectIvrLibaExtemplateBySubModuleID(String subModuleID);
+    public IvrLibaExtemplate selectIvrLibaExtemplateByID(String ID);
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撳垪琛�
+     * 鏌ヨ閫氳繃妯℃澘鍒楄〃
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撻泦鍚�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
+     * @return 閫氳繃妯℃澘闆嗗悎
      */
     public List<IvrLibaExtemplate> selectIvrLibaExtemplateList(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴�
+     * 鏂板閫氳繃妯℃澘
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     public int insertIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴�
+     * 淇敼閫氳繃妯℃澘
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     public int updateIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴�
+     * 鍒犻櫎閫氳繃妯℃澘
      * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
+     * @param ID 閫氳繃妯℃澘涓婚敭
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplateBySubModuleID(String subModuleID);
+    public int deleteIvrLibaExtemplateByID(String ID);
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴�
+     * 鎵归噺鍒犻櫎閫氳繃妯℃澘
      * 
-     * @param subModuleIDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplateBySubModuleIDs(String[] subModuleIDs);
+    public int deleteIvrLibaExtemplateByIDs(String[] IDs);
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplatescriptMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplatescriptMapper.java
index 58c00b7..a2478e1 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplatescriptMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaExtemplatescriptMapper.java
@@ -1,61 +1,64 @@
 package com.smartor.mapper;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaExtemplatescript;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈疢apper鎺ュ彛
+ * 閫氱敤妯℃澘璇濇湳Mapper鎺ュ彛
  * 
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-27
  */
+@Mapper
 public interface IvrLibaExtemplatescriptMapper 
 {
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳
      * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
+     * @return 閫氱敤妯℃澘璇濇湳
      */
-    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByDetailID(String DetailID);
+    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByID(String ID);
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈垪琛�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳鍒楄〃
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈泦鍚�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
+     * @return 閫氱敤妯℃澘璇濇湳闆嗗悎
      */
     public List<IvrLibaExtemplatescript> selectIvrLibaExtemplatescriptList(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏂板閫氱敤妯℃澘璇濇湳
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     public int insertIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 淇敼閫氱敤妯℃澘璇濇湳
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     public int updateIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鍒犻櫎閫氱敤妯℃澘璇濇湳
      * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplatescriptByDetailID(String DetailID);
+    public int deleteIvrLibaExtemplatescriptByID(String ID);
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘璇濇湳
      * 
-     * @param DetailIDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplatescriptByDetailIDs(String[] DetailIDs);
+    public int deleteIvrLibaExtemplatescriptByIDs(String[] IDs);
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaScriptAssortMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaScriptAssortMapper.java
index 91d35d9..ee3f8f5 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaScriptAssortMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaScriptAssortMapper.java
@@ -23,6 +23,8 @@
      */
     public IvrLibaScriptAssort selectIvrLibaScriptAssortById(Long id);
 
+    public Integer selectSeqMax();
+
     /**
      * 鏌ヨ闂璇濇湳鍒嗙被搴�
      * 鍒楄〃
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTargetAssortMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTargetAssortMapper.java
index da14cc5..6deab7b 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTargetAssortMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTargetAssortMapper.java
@@ -7,16 +7,15 @@
 
 /**
  * 鎸囨爣鍒嗙被Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-12-14
  */
 @Mapper
-public interface IvrLibaTargetAssortMapper 
-{
+public interface IvrLibaTargetAssortMapper {
     /**
      * 鏌ヨ鎸囨爣鍒嗙被
-     * 
+     *
      * @param id 鎸囨爣鍒嗙被涓婚敭
      * @return 鎸囨爣鍒嗙被
      */
@@ -24,7 +23,7 @@
 
     /**
      * 鏌ヨ鎸囨爣鍒嗙被鍒楄〃
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 鎸囨爣鍒嗙被闆嗗悎
      */
@@ -32,7 +31,7 @@
 
     /**
      * 鏂板鎸囨爣鍒嗙被
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 缁撴灉
      */
@@ -40,7 +39,7 @@
 
     /**
      * 淇敼鎸囨爣鍒嗙被
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 缁撴灉
      */
@@ -48,7 +47,7 @@
 
     /**
      * 鍒犻櫎鎸囨爣鍒嗙被
-     * 
+     *
      * @param id 鎸囨爣鍒嗙被涓婚敭
      * @return 缁撴灉
      */
@@ -56,9 +55,16 @@
 
     /**
      * 鎵归噺鍒犻櫎鎸囨爣鍒嗙被
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
     public int deleteIvrLibaTargetAssortByIds(Long[] ids);
+
+    /**
+     * 鑾峰彇搴忓彿鏈�澶у��
+     *
+     * @return
+     */
+    public int selectSeqMax();
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateAssortMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateAssortMapper.java
new file mode 100644
index 0000000..5c9551a
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateAssortMapper.java
@@ -0,0 +1,70 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaTemplateAssort;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鍒嗙被Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Mapper
+public interface IvrLibaTemplateAssortMapper {
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 妯℃澘鍒嗙被
+     */
+    public IvrLibaTemplateAssort selectIvrLibaTemplateAssortById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<IvrLibaTemplateAssort> selectIvrLibaTemplateAssortList(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 鏂板妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 淇敼妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 鍒犻櫎妯℃澘鍒嗙被
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateAssortById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateAssortByIds(Long[] ids);
+
+    /**
+     * 鑾峰彇搴忓彿鏈�澶у��
+     *
+     * @return
+     */
+    public int selectSeqMax();
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateMapper.java
index a828fe2..2e070df 100644
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateMapper.java
@@ -1,61 +1,64 @@
 package com.smartor.mapper;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 /**
- * 璇濇湳妯℃澘搴揗apper鎺ュ彛
+ * 妯℃澘搴揗apper鎺ュ彛
  * 
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-23
  */
+@Mapper
 public interface IvrLibaTemplateMapper 
 {
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴�
+     * 鏌ヨ妯℃澘搴�
      * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
-     * @return 璇濇湳妯℃澘搴�
+     * @param ID 妯℃澘搴撲富閿�
+     * @return 妯℃澘搴�
      */
-    public IvrLibaTemplate selectIvrLibaTemplateByTemplateID(String templateID);
+    public IvrLibaTemplate selectIvrLibaTemplateByID(Long ID);
 
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴撳垪琛�
+     * 鏌ヨ妯℃澘搴撳垪琛�
      * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
-     * @return 璇濇湳妯℃澘搴撻泦鍚�
+     * @param ivrLibaTemplate 妯℃澘搴�
+     * @return 妯℃澘搴撻泦鍚�
      */
     public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 鏂板璇濇湳妯℃澘搴�
+     * 鏂板妯℃澘搴�
      * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 淇敼璇濇湳妯℃澘搴�
+     * 淇敼妯℃澘搴�
      * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 鍒犻櫎璇濇湳妯℃澘搴�
+     * 鍒犻櫎妯℃澘搴�
      * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
+     * @param ID 妯℃澘搴撲富閿�
      * @return 缁撴灉
      */
-    public int deleteIvrLibaTemplateByTemplateID(String templateID);
+    public int deleteIvrLibaTemplateByID(Long ID);
 
     /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴�
+     * 鎵归噺鍒犻櫎妯℃澘搴�
      * 
-     * @param templateIDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaTemplateByTemplateIDs(String[] templateIDs);
+    public int deleteIvrLibaTemplateByIDs(Long[] IDs);
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateScriptMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateScriptMapper.java
new file mode 100644
index 0000000..9068a42
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateScriptMapper.java
@@ -0,0 +1,64 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaTemplateScript;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 妯$増闂璇濇湳搴揗apper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Mapper
+public interface IvrLibaTemplateScriptMapper 
+{
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴�
+     * 
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 妯$増闂璇濇湳搴�
+     */
+    public IvrLibaTemplateScript selectIvrLibaTemplateScriptByID(Long ID);
+
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴撳垪琛�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 妯$増闂璇濇湳搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateScript> selectIvrLibaTemplateScriptList(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 鏂板妯$増闂璇濇湳搴�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 淇敼妯$増闂璇濇湳搴�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 鍒犻櫎妯$増闂璇濇湳搴�
+     * 
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateScriptByID(Long ID);
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂璇濇湳搴�
+     * 
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateScriptByIDs(Long[] IDs);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTagMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTagMapper.java
new file mode 100644
index 0000000..caade60
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTagMapper.java
@@ -0,0 +1,64 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaTemplateTag;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鏍囩Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Mapper
+public interface IvrLibaTemplateTagMapper 
+{
+    /**
+     * 鏌ヨ妯℃澘鏍囩
+     * 
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 妯℃澘鏍囩
+     */
+    public IvrLibaTemplateTag selectIvrLibaTemplateTagById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鏍囩鍒楄〃
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 妯℃澘鏍囩闆嗗悎
+     */
+    public List<IvrLibaTemplateTag> selectIvrLibaTemplateTagList(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 鏂板妯℃澘鏍囩
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 淇敼妯℃澘鏍囩
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 鍒犻櫎妯℃澘鏍囩
+     * 
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTagById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鏍囩
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTagByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java
new file mode 100644
index 0000000..51f9090
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetMapper.java
@@ -0,0 +1,64 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaTemplateTarget;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 妯$増闂鎸囨爣搴揗apper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Mapper
+public interface IvrLibaTemplateTargetMapper 
+{
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴�
+     * 
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 妯$増闂鎸囨爣搴�
+     */
+    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long ID);
+
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 妯$増闂鎸囨爣搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 鏂板妯$増闂鎸囨爣搴�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 淇敼妯$増闂鎸囨爣搴�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 鍒犻櫎妯$増闂鎸囨爣搴�
+     * 
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetByID(Long ID);
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
+     * 
+     * @param IDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetByIDs(Long[] IDs);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetoptionMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetoptionMapper.java
new file mode 100644
index 0000000..626e634
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplateTargetoptionMapper.java
@@ -0,0 +1,63 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.IvrLibaTemplateTargetoption;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鎸囨爣閫夐」搴揗apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Mapper
+public interface IvrLibaTemplateTargetoptionMapper {
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 妯℃澘鎸囨爣閫夐」搴�
+     */
+    public IvrLibaTemplateTargetoption selectIvrLibaTemplateTargetoptionById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 妯℃澘鎸囨爣閫夐」搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateTargetoption> selectIvrLibaTemplateTargetoptionList(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 鏂板妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 淇敼妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 鍒犻櫎妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetoptionById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetoptionByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatescriptMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatescriptMapper.java
deleted file mode 100644
index 70a66e8..0000000
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatescriptMapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.smartor.mapper;
-
-import java.util.List;
-import com.smartor.domain.IvrLibaTemplatescript;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈疢apper鎺ュ彛
- * 
- * @author smartor
- * @date 2023-03-22
- */
-public interface IvrLibaTemplatescriptMapper 
-{
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    public IvrLibaTemplatescript selectIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID);
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈泦鍚�
-     */
-    public List<IvrLibaTemplatescript> selectIvrLibaTemplatescriptList(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID);
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionIDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionIDs(String[] templateQuestionIDs);
-}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetAssortMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetAssortMapper.java
deleted file mode 100644
index 7315768..0000000
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetAssortMapper.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.smartor.mapper;
-
-import com.smartor.domain.IvrLibaTemplatetargetAssort;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 鎸囨爣妯℃澘鍒嗙被Mapper鎺ュ彛
- * 
- * @author ruoyi
- * @date 2023-12-18
- */
-@Mapper
-public interface IvrLibaTemplatetargetAssortMapper 
-{
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 鎸囨爣妯℃澘鍒嗙被
-     */
-    public IvrLibaTemplatetargetAssort selectIvrLibaTemplatetargetAssortById(Long id);
-
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被鍒楄〃
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 鎸囨爣妯℃澘鍒嗙被闆嗗悎
-     */
-    public List<IvrLibaTemplatetargetAssort> selectIvrLibaTemplatetargetAssortList(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 鏂板鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 淇敼鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 鍒犻櫎鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetAssortById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetAssortByIds(Long[] ids);
-}
diff --git a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetMapper.java b/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetMapper.java
deleted file mode 100644
index 4d96eef..0000000
--- a/smartor/src/main/java/com/smartor/mapper/IvrLibaTemplatetargetMapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.smartor.mapper;
-
-import java.util.List;
-import com.smartor.domain.IvrLibaTemplatetarget;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈寚鏍嘙apper鎺ュ彛
- * 
- * @author smartor
- * @date 2023-03-22
- */
-public interface IvrLibaTemplatetargetMapper 
-{
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    public IvrLibaTemplatetarget selectIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID);
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍囧垪琛�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍囬泦鍚�
-     */
-    public List<IvrLibaTemplatetarget> selectIvrLibaTemplatetargetList(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID);
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetIDs 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetByTemplateTargetIDs(String[] templateTargetIDs);
-}
diff --git a/smartor/src/main/java/com/smartor/mapper/SvyLibTitleCategoryMapper.java b/smartor/src/main/java/com/smartor/mapper/SvyLibTitleCategoryMapper.java
new file mode 100644
index 0000000..7ab2be3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/SvyLibTitleCategoryMapper.java
@@ -0,0 +1,70 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.SvyLibTitleCategory;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Mapper
+public interface SvyLibTitleCategoryMapper {
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被
+     *
+     * @param id 闂嵎妯℃澘鍒嗙被涓婚敭
+     * @return 闂嵎妯℃澘鍒嗙被
+     */
+    public SvyLibTitleCategory selectSvyLibTitleCategoryById(Long id);
+
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 闂嵎妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<SvyLibTitleCategory> selectSvyLibTitleCategoryList(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 鏂板闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 淇敼闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 鍒犻櫎闂嵎妯℃澘鍒嗙被
+     *
+     * @param id 闂嵎妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTitleCategoryById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTitleCategoryByIds(Long[] ids);
+
+    /**
+     * 鑾峰彇搴忓彿鏈�澶у��
+     *
+     * @return
+     */
+    public int selectSeqMax();
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/SvyLibTopicCategoryMapper.java b/smartor/src/main/java/com/smartor/mapper/SvyLibTopicCategoryMapper.java
new file mode 100644
index 0000000..3517d0c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/SvyLibTopicCategoryMapper.java
@@ -0,0 +1,71 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.SvyLibTopicCategory;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Mapper
+public interface SvyLibTopicCategoryMapper {
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 闂嵎棰樼洰鍒嗙被
+     */
+    public SvyLibTopicCategory selectSvyLibTopicCategoryById(Long id);
+
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被鍒楄〃
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 闂嵎棰樼洰鍒嗙被闆嗗悎
+     */
+    public List<SvyLibTopicCategory> selectSvyLibTopicCategoryList(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 鏂板闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 淇敼闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 鍒犻櫎闂嵎棰樼洰鍒嗙被
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTopicCategoryById(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎棰樼洰鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTopicCategoryByIds(Long[] ids);
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎棰樼洰鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int selectSeqMax();
+}
diff --git a/smartor/src/main/java/com/smartor/service/IHeLibraryAssortService.java b/smartor/src/main/java/com/smartor/service/IHeLibraryAssortService.java
new file mode 100644
index 0000000..1606f48
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IHeLibraryAssortService.java
@@ -0,0 +1,70 @@
+package com.smartor.service;
+
+import java.util.List;
+
+import com.smartor.domain.HeLibraryAssort;
+import com.smartor.domain.HeLibraryAssortVO;
+
+/**
+ * 瀹f暀鍒嗙被Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+public interface IHeLibraryAssortService {
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 瀹f暀鍒嗙被
+     */
+    public HeLibraryAssort selectHeLibraryAssortById(Long id);
+
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被鍒楄〃
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 瀹f暀鍒嗙被闆嗗悎
+     */
+    public List<HeLibraryAssortVO> selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 鏂板瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertHeLibraryAssort(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 鏂板瀹f暀鍒嗙被鏍�
+     *
+     * @param heLibraryAssortVO 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertHeLibraryAssortTree(HeLibraryAssortVO heLibraryAssortVO);
+
+    /**
+     * 淇敼瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateHeLibraryAssort(HeLibraryAssort heLibraryAssort);
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑瀹f暀鍒嗙被涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public Integer deleteHeLibraryAssortByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎瀹f暀鍒嗙被淇℃伅
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryAssortById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IHeLibraryService.java b/smartor/src/main/java/com/smartor/service/IHeLibraryService.java
new file mode 100644
index 0000000..3d1fb8e
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IHeLibraryService.java
@@ -0,0 +1,72 @@
+package com.smartor.service;
+
+import com.smartor.domain.HeLibrary;
+import com.smartor.domain.HeLibraryVO;
+
+import java.util.List;
+
+/**
+ * 瀹f暀璧勬枡搴揝ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+public interface IHeLibraryService {
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 瀹f暀璧勬枡搴�
+     */
+    public HeLibrary selectHeLibraryById(Long id);
+
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴撳垪琛�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 瀹f暀璧勬枡搴撻泦鍚�
+     */
+    public List<HeLibrary> selectHeLibraryList(HeLibrary heLibrary);
+
+    /**
+     * 鏂板瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    public int insertHeLibrary(HeLibrary heLibrary);
+
+    /**
+     * 淇敼瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    public int updateHeLibrary(HeLibrary heLibrary);
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀璧勬枡搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑瀹f暀璧勬枡搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎瀹f暀璧勬枡搴撲俊鎭�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryById(Long id);
+
+    /**
+     * 鏂板鎴栦慨鏀瑰鏁欒鎯�
+     */
+    public Integer saveOrUpdateScript(HeLibraryVO heLibraryVO);
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    public HeLibraryVO selectInfoByCondition(HeLibrary heLibrary);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IHeLibraryTagService.java b/smartor/src/main/java/com/smartor/service/IHeLibraryTagService.java
new file mode 100644
index 0000000..3a3958c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IHeLibraryTagService.java
@@ -0,0 +1,61 @@
+package com.smartor.service;
+
+import java.util.List;
+
+import com.smartor.domain.HeLibraryTag;
+
+/**
+ * 鎸囨爣鏍囩Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+public interface IHeLibraryTagService {
+    /**
+     * 鏌ヨ鎸囨爣鏍囩
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 鎸囨爣鏍囩
+     */
+    public HeLibraryTag selectHeLibraryTagById(Long id);
+
+    /**
+     * 鏌ヨ鎸囨爣鏍囩鍒楄〃
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 鎸囨爣鏍囩闆嗗悎
+     */
+    public List<HeLibraryTag> selectHeLibraryTagList(HeLibraryTag heLibraryTag);
+
+    /**
+     * 鏂板鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    public int insertHeLibraryTag(HeLibraryTag heLibraryTag);
+
+    /**
+     * 淇敼鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    public int updateHeLibraryTag(HeLibraryTag heLibraryTag);
+
+    /**
+     * 鎵归噺鍒犻櫎鎸囨爣鏍囩
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣鏍囩涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryTagByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎鎸囨爣鏍囩淇℃伅
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteHeLibraryTagById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateCategoryService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateCategoryService.java
new file mode 100644
index 0000000..2b18de3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateCategoryService.java
@@ -0,0 +1,55 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaExtemplateCategory;
+
+import java.util.List;
+
+/**
+ * 閫氱敤妯℃澘鍒嗙被Service鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+public interface IIvrLibaExtemplateCategoryService 
+{
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被
+     * 
+     * @param intertcatid 閫氱敤妯℃澘鍒嗙被涓婚敭
+     * @return 閫氱敤妯℃澘鍒嗙被
+     */
+    public IvrLibaExtemplateCategory selectIvrLibaExtemplateCategoryByIntertcatid(Long intertcatid);
+
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被鍒楄〃
+     * 
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 閫氱敤妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<IvrLibaExtemplateCategory> selectIvrLibaExtemplateCategoryList(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 鏂板閫氱敤妯℃澘鍒嗙被
+     * 
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 淇敼閫氱敤妯℃澘鍒嗙被
+     * 
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory);
+
+    /**
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘鍒嗙被
+     * 
+     * @param intertcatids 闇�瑕佸垹闄ょ殑閫氱敤妯℃澘鍒嗙被涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaExtemplateCategoryByIntertcatids(Long[] intertcatids);
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateService.java
index fa1cb18..34b2627 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplateService.java
@@ -1,61 +1,62 @@
 package com.smartor.service;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaExtemplate;
 
+import java.util.List;
+
 /**
- * 鎵╁睍璇濇湳妯℃澘搴揝ervice鎺ュ彛
+ * 閫氳繃妯℃澘Service鎺ュ彛
  * 
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-27
  */
 public interface IIvrLibaExtemplateService 
 {
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴�
+     * 鏌ヨ閫氳繃妯℃澘
      * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ID 閫氳繃妯℃澘涓婚敭
+     * @return 閫氳繃妯℃澘
      */
-    public IvrLibaExtemplate selectIvrLibaExtemplateBySubModuleID(String subModuleID);
+    public IvrLibaExtemplate selectIvrLibaExtemplateByID(String ID);
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撳垪琛�
+     * 鏌ヨ閫氳繃妯℃澘鍒楄〃
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撻泦鍚�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
+     * @return 閫氳繃妯℃澘闆嗗悎
      */
     public List<IvrLibaExtemplate> selectIvrLibaExtemplateList(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴�
+     * 鏂板閫氳繃妯℃澘
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     public int insertIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴�
+     * 淇敼閫氳繃妯℃澘
      * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     public int updateIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate);
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴�
+     * 鎵归噺鍒犻櫎閫氳繃妯℃澘
      * 
-     * @param subModuleIDs 闇�瑕佸垹闄ょ殑鎵╁睍璇濇湳妯℃澘搴撲富閿泦鍚�
+     * @param IDs 闇�瑕佸垹闄ょ殑閫氳繃妯℃澘涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplateBySubModuleIDs(String[] subModuleIDs);
+    public int deleteIvrLibaExtemplateByIDs(String[] IDs);
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撲俊鎭�
+     * 鍒犻櫎閫氳繃妯℃澘淇℃伅
      * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
+     * @param ID 閫氳繃妯℃澘涓婚敭
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplateBySubModuleID(String subModuleID);
+    public int deleteIvrLibaExtemplateByID(String ID);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplatescriptService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplatescriptService.java
index 882210d..d5794a8 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplatescriptService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaExtemplatescriptService.java
@@ -1,61 +1,62 @@
 package com.smartor.service;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaExtemplatescript;
 
+import java.util.List;
+
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈疭ervice鎺ュ彛
+ * 閫氱敤妯℃澘璇濇湳Service鎺ュ彛
  * 
- * @author smartor
- * @date 2023-03-22
+ * @author ruoyi
+ * @date 2023-12-27
  */
 public interface IIvrLibaExtemplatescriptService 
 {
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳
      * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
+     * @return 閫氱敤妯℃澘璇濇湳
      */
-    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByDetailID(String DetailID);
+    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByID(String ID);
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈垪琛�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳鍒楄〃
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈泦鍚�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
+     * @return 閫氱敤妯℃澘璇濇湳闆嗗悎
      */
     public List<IvrLibaExtemplatescript> selectIvrLibaExtemplatescriptList(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏂板閫氱敤妯℃澘璇濇湳
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     public int insertIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 淇敼閫氱敤妯℃澘璇濇湳
      * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     public int updateIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript);
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘璇濇湳
      * 
-     * @param DetailIDs 闇�瑕佸垹闄ょ殑鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿泦鍚�
+     * @param IDs 闇�瑕佸垹闄ょ殑閫氱敤妯℃澘璇濇湳涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplatescriptByDetailIDs(String[] DetailIDs);
+    public int deleteIvrLibaExtemplatescriptByIDs(String[] IDs);
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈俊鎭�
+     * 鍒犻櫎閫氱敤妯℃澘璇濇湳淇℃伅
      * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
      * @return 缁撴灉
      */
-    public int deleteIvrLibaExtemplatescriptByDetailID(String DetailID);
+    public int deleteIvrLibaExtemplatescriptByID(String ID);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaScriptAssortService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaScriptAssortService.java
index aa040ef..2b28500 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaScriptAssortService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaScriptAssortService.java
@@ -7,72 +7,72 @@
 
 /**
  * 闂璇濇湳鍒嗙被搴�
-Service鎺ュ彛
- * 
+ * Service鎺ュ彛
+ *
  * @author ruoyi
  * @date 2023-12-21
  */
-public interface IIvrLibaScriptAssortService 
-{
+public interface IIvrLibaScriptAssortService {
     /**
      * 鏌ヨ闂璇濇湳鍒嗙被搴�
-
-     * 
+     *
      * @param id 闂璇濇湳鍒嗙被搴�
-涓婚敭
+     *           涓婚敭
      * @return 闂璇濇湳鍒嗙被搴�
-
      */
     public IvrLibaScriptAssort selectIvrLibaScriptAssortById(Long id);
 
     /**
      * 鏌ヨ闂璇濇湳鍒嗙被搴�
-鍒楄〃
-     * 
+     * 鍒楄〃
+     *
      * @param ivrLibaScriptAssort 闂璇濇湳鍒嗙被搴�
-
      * @return 闂璇濇湳鍒嗙被搴�
-闆嗗悎
+     * 闆嗗悎
      */
     public List<IvrLibaScriptAssortVO> selectIvrLibaScriptAssortList(IvrLibaScriptAssort ivrLibaScriptAssort);
 
 
     /**
      * 鏂板闂璇濇湳鍒嗙被搴�
-
-     * 
+     *
      * @param ivrLibaScriptAssort 闂璇濇湳鍒嗙被搴�
-
      * @return 缁撴灉
      */
     public int insertIvrLibaScriptAssort(IvrLibaScriptAssort ivrLibaScriptAssort);
 
+
+    /**
+     * 鏂板闂璇濇湳鍒嗙被鏍�
+     *
+     * @param ivrLibaScriptAssortVO 闂璇濇湳鍒嗙被鏍�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaScriptAssortTree(IvrLibaScriptAssortVO ivrLibaScriptAssortVO);
+
     /**
      * 淇敼闂璇濇湳鍒嗙被搴�
-
-     * 
+     *
      * @param ivrLibaScriptAssort 闂璇濇湳鍒嗙被搴�
-
      * @return 缁撴灉
      */
     public int updateIvrLibaScriptAssort(IvrLibaScriptAssort ivrLibaScriptAssort);
 
     /**
      * 鎵归噺鍒犻櫎闂璇濇湳鍒嗙被搴�
-
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑闂璇濇湳鍒嗙被搴�
-涓婚敭闆嗗悎
+     *            涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaScriptAssortByIds(Long[] ids);
+    public Integer deleteIvrLibaScriptAssortByIds(Long[] ids);
 
     /**
      * 鍒犻櫎闂璇濇湳鍒嗙被搴�
-淇℃伅
-     * 
+     * 淇℃伅
+     *
      * @param id 闂璇濇湳鍒嗙被搴�
-涓婚敭
+     *           涓婚敭
      * @return 缁撴灉
      */
     public int deleteIvrLibaScriptAssortById(Long id);
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTargetAssortService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTargetAssortService.java
index 3533b90..a0c8424 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTargetAssortService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTargetAssortService.java
@@ -7,15 +7,14 @@
 
 /**
  * 鎸囨爣鍒嗙被Service鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2023-12-14
  */
-public interface IIvrLibaTargetAssortService 
-{
+public interface IIvrLibaTargetAssortService {
     /**
      * 鏌ヨ鎸囨爣鍒嗙被
-     * 
+     *
      * @param id 鎸囨爣鍒嗙被涓婚敭
      * @return 鎸囨爣鍒嗙被
      */
@@ -23,23 +22,31 @@
 
     /**
      * 鏌ヨ鎸囨爣鍒嗙被鍒楄〃
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 鎸囨爣鍒嗙被闆嗗悎
      */
-    public  List<IvrLibaTargetAssortVO> selectIvrLibaTargetAssortList(IvrLibaTargetAssort ivrLibaTargetAssort);
+    public List<IvrLibaTargetAssortVO> selectIvrLibaTargetAssortList(IvrLibaTargetAssort ivrLibaTargetAssort);
 
     /**
      * 鏂板鎸囨爣鍒嗙被
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 缁撴灉
      */
     public int insertIvrLibaTargetAssort(IvrLibaTargetAssort ivrLibaTargetAssort);
 
     /**
+     * 鏂板鎸囨爣鍒嗙被鏍�
+     *
+     * @param ivrLibaTargetAssortVO 鎸囨爣鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTargetAssortTree(IvrLibaTargetAssortVO ivrLibaTargetAssortVO);
+
+    /**
      * 淇敼鎸囨爣鍒嗙被
-     * 
+     *
      * @param ivrLibaTargetAssort 鎸囨爣鍒嗙被
      * @return 缁撴灉
      */
@@ -47,15 +54,15 @@
 
     /**
      * 鎵归噺鍒犻櫎鎸囨爣鍒嗙被
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣鍒嗙被涓婚敭闆嗗悎
      * @return 缁撴灉
      */
-    public int deleteIvrLibaTargetAssortByIds(Long[] ids);
+    public Integer deleteIvrLibaTargetAssortByIds(Long[] ids);
 
     /**
      * 鍒犻櫎鎸囨爣鍒嗙被淇℃伅
-     * 
+     *
      * @param id 鎸囨爣鍒嗙被涓婚敭
      * @return 缁撴灉
      */
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateAssortService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateAssortService.java
new file mode 100644
index 0000000..e3ffd82
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateAssortService.java
@@ -0,0 +1,70 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateAssort;
+import com.smartor.domain.IvrLibaTemplateAssortVO;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鍒嗙被Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+public interface IIvrLibaTemplateAssortService {
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 妯℃澘鍒嗙被
+     */
+    public IvrLibaTemplateAssort selectIvrLibaTemplateAssortById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<IvrLibaTemplateAssortVO> selectIvrLibaTemplateAssortList(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 鏂板妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 鏂板妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateAssortTree(IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO);
+
+    /**
+     * 淇敼妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鍒嗙被涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public Integer deleteIvrLibaTemplateAssortByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎妯℃澘鍒嗙被淇℃伅
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateAssortById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateScriptService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateScriptService.java
new file mode 100644
index 0000000..1d1d55d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateScriptService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateScript;
+
+import java.util.List;
+
+/**
+ * 妯$増闂璇濇湳搴揝ervice鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+public interface IIvrLibaTemplateScriptService 
+{
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴�
+     * 
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 妯$増闂璇濇湳搴�
+     */
+    public IvrLibaTemplateScript selectIvrLibaTemplateScriptByID(Long ID);
+
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴撳垪琛�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 妯$増闂璇濇湳搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateScript> selectIvrLibaTemplateScriptList(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 鏂板妯$増闂璇濇湳搴�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 淇敼妯$増闂璇濇湳搴�
+     * 
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript);
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂璇濇湳搴�
+     * 
+     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂璇濇湳搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateScriptByIDs(Long[] IDs);
+
+    /**
+     * 鍒犻櫎妯$増闂璇濇湳搴撲俊鎭�
+     * 
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateScriptByID(Long ID);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateService.java
index dc7fe48..9fd9e6b 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateService.java
@@ -1,61 +1,72 @@
 package com.smartor.service;
 
-import java.util.List;
 import com.smartor.domain.IvrLibaTemplate;
+import com.smartor.domain.IvrLibaTemplateVO;
+
+import java.util.List;
 
 /**
- * 璇濇湳妯℃澘搴揝ervice鎺ュ彛
- * 
- * @author smartor
- * @date 2023-03-22
+ * 妯℃澘搴揝ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-23
  */
-public interface IIvrLibaTemplateService 
-{
+public interface IIvrLibaTemplateService {
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴�
-     * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
-     * @return 璇濇湳妯℃澘搴�
+     * 鏌ヨ妯℃澘搴�
+     *
+     * @param ID 妯℃澘搴撲富閿�
+     * @return 妯℃澘搴�
      */
-    public IvrLibaTemplate selectIvrLibaTemplateByTemplateID(String templateID);
+    public IvrLibaTemplate selectIvrLibaTemplateByID(Long ID);
 
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴撳垪琛�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
-     * @return 璇濇湳妯℃澘搴撻泦鍚�
+     * 鏌ヨ妯℃澘搴撳垪琛�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
+     * @return 妯℃澘搴撻泦鍚�
      */
     public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 鏂板璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * 鏂板妯℃澘搴�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 淇敼璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * 淇敼妯℃澘搴�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate);
 
     /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴�
-     * 
-     * @param templateIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撲富閿泦鍚�
+     * 鎵归噺鍒犻櫎妯℃澘搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑妯℃澘搴撲富閿泦鍚�
      * @return 缁撴灉
      */
-    public int deleteIvrLibaTemplateByTemplateIDs(String[] templateIDs);
+    public int deleteIvrLibaTemplateByIDs(Long[] IDs);
 
     /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撲俊鎭�
-     * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
+     * 鍒犻櫎妯℃澘搴撲俊鎭�
+     *
+     * @param ID 妯℃澘搴撲富閿�
      * @return 缁撴灉
      */
-    public int deleteIvrLibaTemplateByTemplateID(String templateID);
+    public int deleteIvrLibaTemplateByID(Long ID);
+
+    /**
+     * 鏂板鎴栦慨鏀归棶棰樿鎯�
+     */
+    public Integer saveOrUpdateTemplate(IvrLibaTemplateVO ivrLibaTemplateVO);
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    public IvrLibaTemplateVO selectInfoByCondition(IvrLibaTemplateVO ivrLibaTemplateVO);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTagService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTagService.java
new file mode 100644
index 0000000..1db933a
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTagService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateTag;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鏍囩Service鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+public interface IIvrLibaTemplateTagService 
+{
+    /**
+     * 鏌ヨ妯℃澘鏍囩
+     * 
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 妯℃澘鏍囩
+     */
+    public IvrLibaTemplateTag selectIvrLibaTemplateTagById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鏍囩鍒楄〃
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 妯℃澘鏍囩闆嗗悎
+     */
+    public List<IvrLibaTemplateTag> selectIvrLibaTemplateTagList(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 鏂板妯℃澘鏍囩
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 淇敼妯℃澘鏍囩
+     * 
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鏍囩
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鏍囩涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTagByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎妯℃澘鏍囩淇℃伅
+     * 
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTagById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java
new file mode 100644
index 0000000..a6bcdd7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateTarget;
+
+import java.util.List;
+
+/**
+ * 妯$増闂鎸囨爣搴揝ervice鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+public interface IIvrLibaTemplateTargetService 
+{
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴�
+     * 
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 妯$増闂鎸囨爣搴�
+     */
+    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long ID);
+
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 妯$増闂鎸囨爣搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 鏂板妯$増闂鎸囨爣搴�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 淇敼妯$増闂鎸囨爣搴�
+     * 
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget);
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
+     * 
+     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂鎸囨爣搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetByIDs(Long[] IDs);
+
+    /**
+     * 鍒犻櫎妯$増闂鎸囨爣搴撲俊鎭�
+     * 
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetByID(Long ID);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetoptionService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetoptionService.java
new file mode 100644
index 0000000..44d6fc9
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplateTargetoptionService.java
@@ -0,0 +1,62 @@
+package com.smartor.service;
+
+import com.smartor.domain.IvrLibaTemplateTargetoption;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鎸囨爣閫夐」搴揝ervice鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+public interface IIvrLibaTemplateTargetoptionService 
+{
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴�
+     * 
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 妯℃澘鎸囨爣閫夐」搴�
+     */
+    public IvrLibaTemplateTargetoption selectIvrLibaTemplateTargetoptionById(Long id);
+
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     * 
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 妯℃澘鎸囨爣閫夐」搴撻泦鍚�
+     */
+    public List<IvrLibaTemplateTargetoption> selectIvrLibaTemplateTargetoptionList(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 鏂板妯℃澘鎸囨爣閫夐」搴�
+     * 
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int insertIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 淇敼妯℃澘鎸囨爣閫夐」搴�
+     * 
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    public int updateIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption);
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鎸囨爣閫夐」搴�
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鎸囨爣閫夐」搴撲富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetoptionByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎妯℃澘鎸囨爣閫夐」搴撲俊鎭�
+     * 
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    public int deleteIvrLibaTemplateTargetoptionById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatescriptService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatescriptService.java
deleted file mode 100644
index afb4136..0000000
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatescriptService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.smartor.service;
-
-import java.util.List;
-import com.smartor.domain.IvrLibaTemplatescript;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈疭ervice鎺ュ彛
- * 
- * @author smartor
- * @date 2023-03-22
- */
-public interface IIvrLibaTemplatescriptService 
-{
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    public IvrLibaTemplatescript selectIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID);
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈泦鍚�
-     */
-    public List<IvrLibaTemplatescript> selectIvrLibaTemplatescriptList(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript);
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撹瘽鏈富閿泦鍚�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionIDs(String[] templateQuestionIDs);
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈俊鎭�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID);
-}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetAssortService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetAssortService.java
deleted file mode 100644
index b0c3520..0000000
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetAssortService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.smartor.service;
-
-import com.smartor.domain.IvrLibaTemplatetargetAssort;
-
-import java.util.List;
-
-/**
- * 鎸囨爣妯℃澘鍒嗙被Service鎺ュ彛
- * 
- * @author ruoyi
- * @date 2023-12-18
- */
-public interface IIvrLibaTemplatetargetAssortService 
-{
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 鎸囨爣妯℃澘鍒嗙被
-     */
-    public IvrLibaTemplatetargetAssort selectIvrLibaTemplatetargetAssortById(Long id);
-
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被鍒楄〃
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 鎸囨爣妯℃澘鍒嗙被闆嗗悎
-     */
-    public List<IvrLibaTemplatetargetAssort> selectIvrLibaTemplatetargetAssortList(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 鏂板鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 淇敼鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort);
-
-    /**
-     * 鎵归噺鍒犻櫎鎸囨爣妯℃澘鍒嗙被
-     * 
-     * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣妯℃澘鍒嗙被涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetAssortByIds(Long[] ids);
-
-    /**
-     * 鍒犻櫎鎸囨爣妯℃澘鍒嗙被淇℃伅
-     * 
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetAssortById(Long id);
-}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetService.java
deleted file mode 100644
index 44839fd..0000000
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTemplatetargetService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.smartor.service;
-
-import java.util.List;
-import com.smartor.domain.IvrLibaTemplatetarget;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈寚鏍嘢ervice鎺ュ彛
- * 
- * @author smartor
- * @date 2023-03-22
- */
-public interface IIvrLibaTemplatetargetService 
-{
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    public IvrLibaTemplatetarget selectIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID);
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍囧垪琛�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍囬泦鍚�
-     */
-    public List<IvrLibaTemplatetarget> selectIvrLibaTemplatetargetList(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    public int insertIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    public int updateIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget);
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿泦鍚�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetByTemplateTargetIDs(String[] templateTargetIDs);
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍囦俊鎭�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 缁撴灉
-     */
-    public int deleteIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID);
-}
diff --git a/smartor/src/main/java/com/smartor/service/ISvyCategoryService.java b/smartor/src/main/java/com/smartor/service/ISvyCategoryService.java
index e457705..f95ee4f 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyCategoryService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyCategoryService.java
@@ -3,6 +3,7 @@
 import java.util.List;
 
 import com.smartor.domain.SvyCategory;
+import com.smartor.domain.SvyCategoryVO;
 
 /**
  * 闂嵎鍒嗙被Service鎺ュ彛
@@ -25,7 +26,7 @@
      * @param svyCategory 闂嵎鍒嗙被
      * @return 闂嵎鍒嗙被闆嗗悎
      */
-    public List<SvyCategory> selectSvyCategoryList(SvyCategory svyCategory);
+    public List<SvyCategoryVO> selectSvyCategoryList(SvyCategory svyCategory);
 
     /**
      * 鏂板闂嵎鍒嗙被
@@ -35,6 +36,8 @@
      */
     public int insertSvyCategory(SvyCategory svyCategory);
 
+    public int insertSvyCategoryTree(SvyCategoryVO svyCategoryVO);
+
     /**
      * 淇敼闂嵎鍒嗙被
      *
diff --git a/smartor/src/main/java/com/smartor/service/ISvyLibTitleCategoryService.java b/smartor/src/main/java/com/smartor/service/ISvyLibTitleCategoryService.java
new file mode 100644
index 0000000..263e051
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/ISvyLibTitleCategoryService.java
@@ -0,0 +1,58 @@
+package com.smartor.service;
+
+import com.smartor.domain.SvyLibTitleCategory;
+import com.smartor.domain.SvyLibTitleCategoryVO;
+
+import java.util.List;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+public interface ISvyLibTitleCategoryService {
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被
+     *
+     * @param id 闂嵎妯℃澘鍒嗙被涓婚敭
+     * @return 闂嵎妯℃澘鍒嗙被
+     */
+    public SvyLibTitleCategory selectSvyLibTitleCategoryById(Long id);
+
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 闂嵎妯℃澘鍒嗙被闆嗗悎
+     */
+    public List<SvyLibTitleCategoryVO> selectSvyLibTitleCategoryList(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 鏂板闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 淇敼闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory);
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闂嵎妯℃澘鍒嗙被涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTitleCategoryByIds(Long[] ids);
+
+    public int insertSvyLibTitleCategoryTree(SvyLibTitleCategoryVO svyLibTitleCategoryVO);
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/ISvyLibTitleService.java b/smartor/src/main/java/com/smartor/service/ISvyLibTitleService.java
index 0323f15..baeab91 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyLibTitleService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyLibTitleService.java
@@ -2,8 +2,10 @@
 
 import java.util.List;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.smartor.domain.SvyLibTitle;
 import com.smartor.domain.SvyLibTitleReq;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * 闂嵎Service鎺ュ彛
@@ -37,6 +39,13 @@
     public int insertSvyLibTitle(SvyLibTitle svyLibTitle);
 
     /**
+     * 鏂板鎴栦慨鏀归棶鍗锋ā鏉夸俊鎭�
+     * @param svyLibTitle
+     * @return
+     */
+    public Integer saveOrUpdateTitle(@RequestBody SvyLibTitle svyLibTitle);
+
+    /**
      * 淇敼闂嵎
      *
      * @param svyLibTitle 闂嵎
diff --git a/smartor/src/main/java/com/smartor/service/ISvyLibTopicCategoryService.java b/smartor/src/main/java/com/smartor/service/ISvyLibTopicCategoryService.java
new file mode 100644
index 0000000..2392b8f
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/ISvyLibTopicCategoryService.java
@@ -0,0 +1,64 @@
+package com.smartor.service;
+
+import com.smartor.domain.SvyLibTopicCategory;
+import com.smartor.domain.SvyLibTopicCategoryVO;
+
+import java.util.List;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+public interface ISvyLibTopicCategoryService {
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 闂嵎棰樼洰鍒嗙被
+     */
+    public SvyLibTopicCategory selectSvyLibTopicCategoryById(Long id);
+
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被鍒楄〃
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 闂嵎棰樼洰鍒嗙被闆嗗悎
+     */
+    public List<SvyLibTopicCategoryVO> selectSvyLibTopicCategoryList(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 鏂板闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    public int insertSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 淇敼闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    public int updateSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory);
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎棰樼洰鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闂嵎棰樼洰鍒嗙被涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTopicCategoryByIds(Long[] ids);
+
+    public int insertSvyLibTopicCategoryTree(SvyLibTopicCategoryVO svyLibTopicCategoryVO);
+
+    /**
+     * 鍒犻櫎闂嵎棰樼洰鍒嗙被淇℃伅
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    public int deleteSvyLibTopicCategoryById(Long id);
+}
diff --git a/smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java b/smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java
index 8cdd5ac..a480e4e 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyLibTopicService.java
@@ -1,14 +1,8 @@
 package com.smartor.service;
 
-import java.util.List;
-
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
 import com.smartor.domain.SvyLibTopic;
-import com.smartor.domain.SvyLibTopicRes;
-import com.smartor.domain.SvyTopicReq;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 /**
  * 闂嵎棰樼洰Service鎺ュ彛
@@ -41,6 +35,8 @@
      */
     public int insertSvyLibTopic(SvyLibTopic svyLibTopic);
 
+    public Integer saveOrUpdateTopic(SvyLibTopic svyLibTopic);
+
     /**
      * 淇敼闂嵎棰樼洰
      *
diff --git a/smartor/src/main/java/com/smartor/service/impl/HeLibraryAssortServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HeLibraryAssortServiceImpl.java
new file mode 100644
index 0000000..08e13d9
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/HeLibraryAssortServiceImpl.java
@@ -0,0 +1,174 @@
+package com.smartor.service.impl;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.HeLibraryAssortMapper;
+import com.smartor.service.IHeLibraryAssortService;
+import io.jsonwebtoken.lang.Collections;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 瀹f暀鍒嗙被Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Service
+public class HeLibraryAssortServiceImpl implements IHeLibraryAssortService {
+    @Autowired
+    private HeLibraryAssortMapper heLibraryAssortMapper;
+
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 瀹f暀鍒嗙被
+     */
+    @Override
+    public HeLibraryAssort selectHeLibraryAssortById(Long id) {
+        return heLibraryAssortMapper.selectHeLibraryAssortById(id);
+    }
+
+    /**
+     * 鏌ヨ瀹f暀鍒嗙被鍒楄〃
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 瀹f暀鍒嗙被
+     */
+    @Override
+    public List<HeLibraryAssortVO> selectHeLibraryAssortList(HeLibraryAssort heLibraryAssort) {
+        List<HeLibraryAssort> heLibraryAssorts = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort);
+        //灏唒id涓虹┖鐨勶紝杩囨护鎺�
+        heLibraryAssorts = heLibraryAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
+
+        List<HeLibraryAssortVO> heLibraryAssortVOS = DtoConversionUtils.sourceToTarget(heLibraryAssorts, HeLibraryAssortVO.class);
+        //閬嶅巻鏌ュ嚭鏉ョ殑鏁版嵁锛岄�氳繃 id=pid 鑾峰彇浠栦滑鐨勫瓙鏁版嵁
+        for (HeLibraryAssortVO heLibraryAssortVO : heLibraryAssortVOS) {
+            if (heLibraryAssortVO.getPid() != null) {
+                continue;
+            }
+            HeLibraryAssort heLibraryAssort1 = new HeLibraryAssort();
+            heLibraryAssort1.setPid(heLibraryAssortVO.getId());
+            List<HeLibraryAssort> heLibraryAssortList = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort1);
+
+            if (!Collections.isEmpty(heLibraryAssortList)) {
+                heLibraryAssortVO.setHeLibraryAssortList(heLibraryAssortList);
+            }
+        }
+        return heLibraryAssortVOS;
+    }
+
+    /**
+     * 鏂板瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertHeLibraryAssort(HeLibraryAssort heLibraryAssort) {
+        heLibraryAssort.setCreateTime(DateUtils.getNowDate());
+        return heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort);
+    }
+
+    /**
+     * 鏂板瀹f暀鍒嗙被鏍�
+     *
+     * @param heLibraryAssortVO 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertHeLibraryAssortTree(HeLibraryAssortVO heLibraryAssortVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(heLibraryAssortVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+
+        HeLibraryAssort heLibraryAssort = DtoConversionUtils.sourceToTarget(heLibraryAssortVO, HeLibraryAssort.class);
+        Integer integer = heLibraryAssortMapper.selectSeqMax();
+        if (integer != null) {
+            heLibraryAssort.setSeqno(integer.longValue() + 1);
+        } else {
+            heLibraryAssort.setSeqno(1L);
+        }
+
+        if (heLibraryAssort.getId() == null) {
+            i = heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort);
+        }
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(heLibraryAssortVO.getHeLibraryAssortList())) {
+            for (HeLibraryAssort heLibraryAssort1 : heLibraryAssortVO.getHeLibraryAssortList()) {
+                heLibraryAssort1.setPid(heLibraryAssort.getId());
+                Integer seqMax = heLibraryAssortMapper.selectSeqMax();
+                if (seqMax != null) {
+                    heLibraryAssort1.setSeqno(seqMax.longValue() + 1);
+                } else {
+                    heLibraryAssort1.setSeqno(1L);
+                }
+                heLibraryAssortMapper.insertHeLibraryAssort(heLibraryAssort1);
+            }
+        }
+
+        return i;
+    }
+
+    /**
+     * 淇敼瀹f暀鍒嗙被
+     *
+     * @param heLibraryAssort 瀹f暀鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateHeLibraryAssort(HeLibraryAssort heLibraryAssort) {
+        heLibraryAssort.setUpdateTime(DateUtils.getNowDate());
+        return heLibraryAssortMapper.updateHeLibraryAssort(heLibraryAssort);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑瀹f暀鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Integer deleteHeLibraryAssortByIds(Long[] ids) {
+        Integer i = null;
+
+        for (Long id : ids) {
+            i = heLibraryAssortMapper.deleteHeLibraryAssortById(id);
+            //鍒犻櫎鎴愬姛鍚庯紝濡傛灉璇ュ垹闄ょ殑ID涓嬫湁瀛愭暟鎹紝鍒欏皢瀛愭暟鎹斁鍒版湭鍒嗛厤涓嬮潰
+            HeLibraryAssort heLibraryAssort = new HeLibraryAssort();
+            heLibraryAssort.setPid(id);
+            List<HeLibraryAssort> heLibraryAssortList1 = heLibraryAssortMapper.selectHeLibraryAssortList(heLibraryAssort);
+            if (CollectionUtils.isNotEmpty(heLibraryAssortList1)) {
+                for (HeLibraryAssort heLibraryAssort1 : heLibraryAssortList1) {
+                    //璁剧疆鏈垎閰岻D
+                    heLibraryAssort1.setPid(999999999L);
+                    heLibraryAssortMapper.updateHeLibraryAssort(heLibraryAssort1);
+                }
+            }
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎瀹f暀鍒嗙被淇℃伅
+     *
+     * @param id 瀹f暀鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteHeLibraryAssortById(Long id) {
+        return heLibraryAssortMapper.deleteHeLibraryAssortById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/HeLibraryServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HeLibraryServiceImpl.java
new file mode 100644
index 0000000..df6385a
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/HeLibraryServiceImpl.java
@@ -0,0 +1,160 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.HeLibrary;
+import com.smartor.domain.HeLibraryTag;
+import com.smartor.domain.HeLibraryVO;
+import com.smartor.mapper.HeLibraryMapper;
+import com.smartor.mapper.HeLibraryTagMapper;
+import com.smartor.service.IHeLibraryService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 瀹f暀璧勬枡搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Slf4j
+@Service
+public class HeLibraryServiceImpl implements IHeLibraryService {
+    @Autowired
+    private HeLibraryMapper heLibraryMapper;
+
+    @Autowired
+    private HeLibraryTagMapper heLibraryTagMapper;
+
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 瀹f暀璧勬枡搴�
+     */
+    @Override
+    public HeLibrary selectHeLibraryById(Long id) {
+        return heLibraryMapper.selectHeLibraryById(id);
+    }
+
+    /**
+     * 鏌ヨ瀹f暀璧勬枡搴撳垪琛�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 瀹f暀璧勬枡搴�
+     */
+    @Override
+    public List<HeLibrary> selectHeLibraryList(HeLibrary heLibrary) {
+        return heLibraryMapper.selectHeLibraryList(heLibrary);
+    }
+
+    /**
+     * 鏂板瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertHeLibrary(HeLibrary heLibrary) {
+        heLibrary.setCreateTime(DateUtils.getNowDate());
+        return heLibraryMapper.insertHeLibrary(heLibrary);
+    }
+
+    /**
+     * 淇敼瀹f暀璧勬枡搴�
+     *
+     * @param heLibrary 瀹f暀璧勬枡搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateHeLibrary(HeLibrary heLibrary) {
+        heLibrary.setUpdateTime(DateUtils.getNowDate());
+        return heLibraryMapper.updateHeLibrary(heLibrary);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎瀹f暀璧勬枡搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑瀹f暀璧勬枡搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteHeLibraryByIds(Long[] ids) {
+        return heLibraryMapper.deleteHeLibraryByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎瀹f暀璧勬枡搴撲俊鎭�
+     *
+     * @param id 瀹f暀璧勬枡搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteHeLibraryById(Long id) {
+        return heLibraryMapper.deleteHeLibraryById(id);
+    }
+
+    /**
+     * 鏂板鎴栦慨鏀瑰鏁欒鎯�
+     */
+    @Override
+    public Integer saveOrUpdateScript(HeLibraryVO heLibraryVO) {
+        Integer i = null;
+        HeLibrary heLibrary = DtoConversionUtils.sourceToTarget(heLibraryVO, HeLibrary.class);
+        if (heLibraryVO.getIsoperation() != null && heLibraryVO.getIsoperation() == 1) {
+            //鏂板
+            i = heLibraryMapper.insertHeLibrary(heLibrary);
+        } else if (heLibraryVO.getIsoperation() != null && heLibraryVO.getIsoperation() == 2) {
+            //淇敼
+            i = heLibraryMapper.updateHeLibrary(heLibrary);
+        }
+        log.info("鏂板鎴栦慨鏀瑰鏁欒鎯呯殑id涓猴細{}", heLibrary.getId());
+
+        //瀵规爣绛捐繘琛屽鐞�
+        for (HeLibraryTag heLibraryTag : heLibraryVO.getHeLibraryTagList()) {
+            if (heLibraryTag.getIsoperation() != null && heLibraryTag.getIsoperation() == 1) {
+                //鏂板
+                heLibraryTag.setHeid(heLibrary.getId());
+                heLibraryTagMapper.insertHeLibraryTag(heLibraryTag);
+            } else if (heLibraryTag.getIsoperation() != null && heLibraryTag.getIsoperation() == 2) {
+                //淇敼
+                heLibraryTag.setHeid(heLibrary.getId());
+                heLibraryTagMapper.updateHeLibraryTag(heLibraryTag);
+            } else if (heLibraryTag.getIsoperation() != null && heLibraryTag.getIsoperation() == 3) {
+                //鍒犻櫎
+                if (heLibraryTag.getId() == null) {
+                    log.info("鍒犻櫎澶辫触,妯℃澘鎸囨爣id涓虹┖");
+                } else {
+                    heLibraryTagMapper.deleteHeLibraryTagById(heLibraryTag.getId());
+                }
+            }
+        }
+
+        return i;
+    }
+
+    @Override
+    public HeLibraryVO selectInfoByCondition(HeLibrary heLibrary) {
+        log.info("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢鐨勫叆鍙備负锛歿}", heLibrary);
+        List<HeLibrary> heLibraries = selectHeLibraryList(heLibrary);
+        if (CollectionUtils.isEmpty(heLibraries)) {
+            log.info("鎻愪緵鐨勬潯浠�,鏌ヨ瀹f暀鏁版嵁涓虹┖锛歿}", heLibraries);
+            throw new BaseException("鎻愪緵鐨勬潯浠�,鏌ヨ瀹f暀鏁版嵁涓虹┖");
+        }
+
+        //鐢ㄤ簬杩斿弬
+        HeLibraryVO heLibraryVO = DtoConversionUtils.sourceToTarget(heLibraries.get(0), HeLibraryVO.class);
+        //鏍规嵁瀹f暀ID鏌ヨ瀹f暀鎸囨爣闆嗗悎
+        HeLibraryTag heLibraryTag = new HeLibraryTag();
+        heLibraryTag.setHeid(heLibraryVO.getId());
+        List<HeLibraryTag> heLibraryTags = heLibraryTagMapper.selectHeLibraryTagList(heLibraryTag);
+        heLibraryVO.setHeLibraryTagList(heLibraryTags);
+
+        return heLibraryVO;
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/HeLibraryTagServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HeLibraryTagServiceImpl.java
new file mode 100644
index 0000000..d3883f7
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/HeLibraryTagServiceImpl.java
@@ -0,0 +1,90 @@
+package com.smartor.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.HeLibraryTag;
+import com.smartor.mapper.HeLibraryTagMapper;
+import com.smartor.service.IHeLibraryTagService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 鎸囨爣鏍囩Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-24
+ */
+@Service
+public class HeLibraryTagServiceImpl implements IHeLibraryTagService {
+    @Autowired
+    private HeLibraryTagMapper heLibraryTagMapper;
+
+    /**
+     * 鏌ヨ鎸囨爣鏍囩
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 鎸囨爣鏍囩
+     */
+    @Override
+    public HeLibraryTag selectHeLibraryTagById(Long id) {
+        return heLibraryTagMapper.selectHeLibraryTagById(id);
+    }
+
+    /**
+     * 鏌ヨ鎸囨爣鏍囩鍒楄〃
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 鎸囨爣鏍囩
+     */
+    @Override
+    public List<HeLibraryTag> selectHeLibraryTagList(HeLibraryTag heLibraryTag) {
+        return heLibraryTagMapper.selectHeLibraryTagList(heLibraryTag);
+    }
+
+    /**
+     * 鏂板鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertHeLibraryTag(HeLibraryTag heLibraryTag) {
+        heLibraryTag.setCreateTime(DateUtils.getNowDate());
+        return heLibraryTagMapper.insertHeLibraryTag(heLibraryTag);
+    }
+
+    /**
+     * 淇敼鎸囨爣鏍囩
+     *
+     * @param heLibraryTag 鎸囨爣鏍囩
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateHeLibraryTag(HeLibraryTag heLibraryTag) {
+        heLibraryTag.setUpdateTime(DateUtils.getNowDate());
+        return heLibraryTagMapper.updateHeLibraryTag(heLibraryTag);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎鎸囨爣鏍囩
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteHeLibraryTagByIds(Long[] ids) {
+        return heLibraryTagMapper.deleteHeLibraryTagByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎鎸囨爣鏍囩淇℃伅
+     *
+     * @param id 鎸囨爣鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteHeLibraryTagById(Long id) {
+        return heLibraryTagMapper.deleteHeLibraryTagById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateCategoryServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateCategoryServiceImpl.java
new file mode 100644
index 0000000..77f161a
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateCategoryServiceImpl.java
@@ -0,0 +1,104 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.HeLibraryAssort;
+import com.smartor.domain.IvrLibaExtemplateCategory;
+import com.smartor.mapper.IvrLibaExtemplateCategoryMapper;
+import com.smartor.service.IIvrLibaExtemplateCategoryService;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 閫氱敤妯℃澘鍒嗙被Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Service
+public class IvrLibaExtemplateCategoryServiceImpl implements IIvrLibaExtemplateCategoryService {
+    @Autowired
+    private IvrLibaExtemplateCategoryMapper ivrLibaExtemplateCategoryMapper;
+
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被
+     *
+     * @param intertcatid 閫氱敤妯℃澘鍒嗙被涓婚敭
+     * @return 閫氱敤妯℃澘鍒嗙被
+     */
+    @Override
+    public IvrLibaExtemplateCategory selectIvrLibaExtemplateCategoryByIntertcatid(Long intertcatid) {
+        return ivrLibaExtemplateCategoryMapper.selectIvrLibaExtemplateCategoryByIntertcatid(intertcatid);
+    }
+
+    /**
+     * 鏌ヨ閫氱敤妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 閫氱敤妯℃澘鍒嗙被
+     */
+    @Override
+    public List<IvrLibaExtemplateCategory> selectIvrLibaExtemplateCategoryList(IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        return ivrLibaExtemplateCategoryMapper.selectIvrLibaExtemplateCategoryList(ivrLibaExtemplateCategory);
+    }
+
+    /**
+     * 鏂板閫氱敤妯℃澘鍒嗙被
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        ivrLibaExtemplateCategory.setCreateTime(DateUtils.getNowDate());
+        //鑾峰彇搴忓彿鏈�澶у��
+        Integer seqMax = ivrLibaExtemplateCategoryMapper.selectSeqMax();
+        if (seqMax != null) {
+            ivrLibaExtemplateCategory.setSeqno(seqMax + 1);
+        } else {
+            ivrLibaExtemplateCategory.setSeqno(1);
+        }
+        return ivrLibaExtemplateCategoryMapper.insertIvrLibaExtemplateCategory(ivrLibaExtemplateCategory);
+    }
+
+    /**
+     * 淇敼閫氱敤妯℃澘鍒嗙被
+     *
+     * @param ivrLibaExtemplateCategory 閫氱敤妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaExtemplateCategory(IvrLibaExtemplateCategory ivrLibaExtemplateCategory) {
+        ivrLibaExtemplateCategory.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaExtemplateCategoryMapper.updateIvrLibaExtemplateCategory(ivrLibaExtemplateCategory);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘鍒嗙被
+     *
+     * @param intertcatids 闇�瑕佸垹闄ょ殑閫氱敤妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrLibaExtemplateCategoryByIntertcatids(Long[] intertcatids) {
+        Integer i = null;
+        for (Long intertcatid : intertcatids) {
+            i = ivrLibaExtemplateCategoryMapper.deleteIvrLibaExtemplateCategoryByIntertcatid(intertcatid);
+            //鍒犻櫎鎴愬姛鍚庯紝濡傛灉璇ュ垹闄ょ殑ID涓嬫湁瀛愭暟鎹紝鍒欏皢瀛愭暟鎹斁鍒版湭鍒嗛厤涓嬮潰
+            IvrLibaExtemplateCategory ivrLibaExtemplateCategory = new IvrLibaExtemplateCategory();
+            ivrLibaExtemplateCategory.setPid(intertcatid);
+            List<IvrLibaExtemplateCategory> ivrLibaExtemplateCategories = ivrLibaExtemplateCategoryMapper.selectIvrLibaExtemplateCategoryList(ivrLibaExtemplateCategory);
+            if (CollectionUtils.isNotEmpty(ivrLibaExtemplateCategories)) {
+                for (IvrLibaExtemplateCategory ivrLibaExtemplateCategory1 : ivrLibaExtemplateCategories) {
+                    //璁剧疆鏈垎閰岻D
+                    ivrLibaExtemplateCategory1.setPid(999999999L);
+                    ivrLibaExtemplateCategoryMapper.updateIvrLibaExtemplateCategory(ivrLibaExtemplateCategory1);
+                }
+            }
+        }
+        return i;
+    }
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateServiceImpl.java
index 736cfe9..a880710 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplateServiceImpl.java
@@ -1,96 +1,90 @@
 package com.smartor.service.impl;
 
-import java.util.List;
 import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaExtemplate;
+import com.smartor.mapper.IvrLibaExtemplateMapper;
+import com.smartor.service.IIvrLibaExtemplateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.IvrLibaExtemplateMapper;
-import com.smartor.domain.IvrLibaExtemplate;
-import com.smartor.service.IIvrLibaExtemplateService;
+
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴揝ervice涓氬姟灞傚鐞�
- * 
- * @author smartor
- * @date 2023-03-22
+ * 閫氳繃妯℃澘Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-27
  */
 @Service
-public class IvrLibaExtemplateServiceImpl implements IIvrLibaExtemplateService 
-{
+public class IvrLibaExtemplateServiceImpl implements IIvrLibaExtemplateService {
     @Autowired
     private IvrLibaExtemplateMapper ivrLibaExtemplateMapper;
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴�
-     * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴�
+     * 鏌ヨ閫氳繃妯℃澘
+     *
+     * @param ID 閫氳繃妯℃澘涓婚敭
+     * @return 閫氳繃妯℃澘
      */
     @Override
-    public IvrLibaExtemplate selectIvrLibaExtemplateBySubModuleID(String subModuleID)
-    {
-        return ivrLibaExtemplateMapper.selectIvrLibaExtemplateBySubModuleID(subModuleID);
+    public IvrLibaExtemplate selectIvrLibaExtemplateByID(String ID) {
+        return ivrLibaExtemplateMapper.selectIvrLibaExtemplateByID(ID);
     }
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撳垪琛�
-     * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
-     * @return 鎵╁睍璇濇湳妯℃澘搴�
+     * 鏌ヨ閫氳繃妯℃澘鍒楄〃
+     *
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
+     * @return 閫氳繃妯℃澘
      */
     @Override
-    public List<IvrLibaExtemplate> selectIvrLibaExtemplateList(IvrLibaExtemplate ivrLibaExtemplate)
-    {
+    public List<IvrLibaExtemplate> selectIvrLibaExtemplateList(IvrLibaExtemplate ivrLibaExtemplate) {
         return ivrLibaExtemplateMapper.selectIvrLibaExtemplateList(ivrLibaExtemplate);
     }
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * 鏂板閫氳繃妯℃澘
+     *
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     @Override
-    public int insertIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate)
-    {
+    public int insertIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate) {
         ivrLibaExtemplate.setCreateTime(DateUtils.getNowDate());
         return ivrLibaExtemplateMapper.insertIvrLibaExtemplate(ivrLibaExtemplate);
     }
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaExtemplate 鎵╁睍璇濇湳妯℃澘搴�
+     * 淇敼閫氳繃妯℃澘
+     *
+     * @param ivrLibaExtemplate 閫氳繃妯℃澘
      * @return 缁撴灉
      */
     @Override
-    public int updateIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate)
-    {
+    public int updateIvrLibaExtemplate(IvrLibaExtemplate ivrLibaExtemplate) {
         ivrLibaExtemplate.setUpdateTime(DateUtils.getNowDate());
         return ivrLibaExtemplateMapper.updateIvrLibaExtemplate(ivrLibaExtemplate);
     }
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴�
-     * 
-     * @param subModuleIDs 闇�瑕佸垹闄ょ殑鎵╁睍璇濇湳妯℃澘搴撲富閿�
+     * 鎵归噺鍒犻櫎閫氳繃妯℃澘
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑閫氳繃妯℃澘涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaExtemplateBySubModuleIDs(String[] subModuleIDs)
-    {
-        return ivrLibaExtemplateMapper.deleteIvrLibaExtemplateBySubModuleIDs(subModuleIDs);
+    public int deleteIvrLibaExtemplateByIDs(String[] IDs) {
+        return ivrLibaExtemplateMapper.deleteIvrLibaExtemplateByIDs(IDs);
     }
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撲俊鎭�
-     * 
-     * @param subModuleID 鎵╁睍璇濇湳妯℃澘搴撲富閿�
+     * 鍒犻櫎閫氳繃妯℃澘淇℃伅
+     *
+     * @param ID 閫氳繃妯℃澘涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaExtemplateBySubModuleID(String subModuleID)
-    {
-        return ivrLibaExtemplateMapper.deleteIvrLibaExtemplateBySubModuleID(subModuleID);
+    public int deleteIvrLibaExtemplateByID(String ID) {
+        return ivrLibaExtemplateMapper.deleteIvrLibaExtemplateByID(ID);
     }
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplatescriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplatescriptServiceImpl.java
index 70da213..70f4adb 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplatescriptServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaExtemplatescriptServiceImpl.java
@@ -1,96 +1,90 @@
 package com.smartor.service.impl;
 
-import java.util.List;
 import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaExtemplatescript;
+import com.smartor.mapper.IvrLibaExtemplatescriptMapper;
+import com.smartor.service.IIvrLibaExtemplatescriptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.IvrLibaExtemplatescriptMapper;
-import com.smartor.domain.IvrLibaExtemplatescript;
-import com.smartor.service.IIvrLibaExtemplatescriptService;
+
+import java.util.List;
 
 /**
- * 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈疭ervice涓氬姟灞傚鐞�
- * 
- * @author smartor
- * @date 2023-03-22
+ * 閫氱敤妯℃澘璇濇湳Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-27
  */
 @Service
-public class IvrLibaExtemplatescriptServiceImpl implements IIvrLibaExtemplatescriptService 
-{
+public class IvrLibaExtemplatescriptServiceImpl implements IIvrLibaExtemplatescriptService {
     @Autowired
     private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳
+     *
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
+     * @return 閫氱敤妯℃澘璇濇湳
      */
     @Override
-    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByDetailID(String DetailID)
-    {
-        return ivrLibaExtemplatescriptMapper.selectIvrLibaExtemplatescriptByDetailID(DetailID);
+    public IvrLibaExtemplatescript selectIvrLibaExtemplatescriptByID(String ID) {
+        return ivrLibaExtemplatescriptMapper.selectIvrLibaExtemplatescriptByID(ID);
     }
 
     /**
-     * 鏌ヨ鎵╁睍璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏌ヨ閫氱敤妯℃澘璇濇湳鍒楄〃
+     *
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
+     * @return 閫氱敤妯℃澘璇濇湳
      */
     @Override
-    public List<IvrLibaExtemplatescript> selectIvrLibaExtemplatescriptList(IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public List<IvrLibaExtemplatescript> selectIvrLibaExtemplatescriptList(IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         return ivrLibaExtemplatescriptMapper.selectIvrLibaExtemplatescriptList(ivrLibaExtemplatescript);
     }
 
     /**
-     * 鏂板鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 鏂板閫氱敤妯℃澘璇濇湳
+     *
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     @Override
-    public int insertIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public int insertIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         ivrLibaExtemplatescript.setCreateTime(DateUtils.getNowDate());
         return ivrLibaExtemplatescriptMapper.insertIvrLibaExtemplatescript(ivrLibaExtemplatescript);
     }
 
     /**
-     * 淇敼鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaExtemplatescript 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
+     * 淇敼閫氱敤妯℃澘璇濇湳
+     *
+     * @param ivrLibaExtemplatescript 閫氱敤妯℃澘璇濇湳
      * @return 缁撴灉
      */
     @Override
-    public int updateIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript)
-    {
+    public int updateIvrLibaExtemplatescript(IvrLibaExtemplatescript ivrLibaExtemplatescript) {
         ivrLibaExtemplatescript.setUpdateTime(DateUtils.getNowDate());
         return ivrLibaExtemplatescriptMapper.updateIvrLibaExtemplatescript(ivrLibaExtemplatescript);
     }
 
     /**
-     * 鎵归噺鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param DetailIDs 闇�瑕佸垹闄ょ殑鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
+     * 鎵归噺鍒犻櫎閫氱敤妯℃澘璇濇湳
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑閫氱敤妯℃澘璇濇湳涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaExtemplatescriptByDetailIDs(String[] DetailIDs)
-    {
-        return ivrLibaExtemplatescriptMapper.deleteIvrLibaExtemplatescriptByDetailIDs(DetailIDs);
+    public int deleteIvrLibaExtemplatescriptByIDs(String[] IDs) {
+        return ivrLibaExtemplatescriptMapper.deleteIvrLibaExtemplatescriptByIDs(IDs);
     }
 
     /**
-     * 鍒犻櫎鎵╁睍璇濇湳妯℃澘搴撹瘽鏈俊鎭�
-     * 
-     * @param DetailID 鎵╁睍璇濇湳妯℃澘搴撹瘽鏈富閿�
+     * 鍒犻櫎閫氱敤妯℃澘璇濇湳淇℃伅
+     *
+     * @param ID 閫氱敤妯℃澘璇濇湳涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaExtemplatescriptByDetailID(String DetailID)
-    {
-        return ivrLibaExtemplatescriptMapper.deleteIvrLibaExtemplatescriptByDetailID(DetailID);
+    public int deleteIvrLibaExtemplatescriptByID(String ID) {
+        return ivrLibaExtemplatescriptMapper.deleteIvrLibaExtemplatescriptByID(ID);
     }
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java
index 890caf6..7d1db16 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java
@@ -1,11 +1,15 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.IvrLibaScriptAssortMapper;
 import com.smartor.service.IIvrLibaScriptAssortService;
 import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -19,6 +23,7 @@
  * @author ruoyi
  * @date 2023-12-21
  */
+@Slf4j
 @Service
 public class IvrLibaScriptAssortServiceImpl implements IIvrLibaScriptAssortService {
     @Autowired
@@ -60,6 +65,40 @@
         return ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort);
     }
 
+    @Override
+    public int insertIvrLibaScriptAssortTree(IvrLibaScriptAssortVO ivrLibaScriptAssortVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(ivrLibaScriptAssortVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        Integer seqMax = ivrLibaScriptAssortMapper.selectSeqMax();
+        IvrLibaScriptAssort ivrLibaScriptAssort = DtoConversionUtils.sourceToTarget(ivrLibaScriptAssortVO, IvrLibaScriptAssort.class);
+        if (seqMax == null) {
+            ivrLibaScriptAssort.setSeqno(1);
+        } else {
+            ivrLibaScriptAssort.setSeqno(seqMax + 1);
+        }
+        i = ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort);
+        log.info("闂璇濇湳鍒嗙被搴撲竴绾ф爲鐨勪富閿�:{}", ivrLibaScriptAssort.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(ivrLibaScriptAssortVO.getIvrLibaScriptAssortList())) {
+            for (IvrLibaScriptAssort ivrLibaScriptAssort1 : ivrLibaScriptAssortVO.getIvrLibaScriptAssortList()) {
+                Integer seqMax1 = ivrLibaScriptAssortMapper.selectSeqMax();
+                ivrLibaScriptAssort1.setPid(ivrLibaScriptAssort.getId());
+                if (seqMax == null) {
+                    ivrLibaScriptAssort1.setSeqno(1);
+                } else {
+                    ivrLibaScriptAssort1.setSeqno(seqMax1 + 1);
+                }
+
+                ivrLibaScriptAssortMapper.insertIvrLibaScriptAssort(ivrLibaScriptAssort1);
+            }
+        }
+
+        return i;
+    }
+
     /**
      * 淇敼闂璇濇湳鍒嗙被搴�
      *
@@ -80,8 +119,23 @@
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaScriptAssortByIds(Long[] ids) {
-        return ivrLibaScriptAssortMapper.deleteIvrLibaScriptAssortByIds(ids);
+    public Integer deleteIvrLibaScriptAssortByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = ivrLibaScriptAssortMapper.deleteIvrLibaScriptAssortById(id);
+            //鏌ヨ鍒犻櫎id鎵�瀵瑰氨鐨勫瓙鏁版嵁
+            IvrLibaScriptAssort ivrLibaScriptAssort = new IvrLibaScriptAssort();
+            ivrLibaScriptAssort.setPid(id);
+            List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort);
+
+            if (CollectionUtils.isNotEmpty(ivrLibaScriptAssorts)) {
+                for (IvrLibaScriptAssort ivrLibaScriptAssort1 : ivrLibaScriptAssorts) {
+                    ivrLibaScriptAssort1.setPid(999999999L);
+                    ivrLibaScriptAssortMapper.updateIvrLibaScriptAssort(ivrLibaScriptAssort1);
+                }
+            }
+        }
+        return i;
     }
 
     /**
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptServiceImpl.java
index f0e42de..81ab2cc 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptServiceImpl.java
@@ -1,5 +1,6 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.smartor.domain.*;
@@ -88,11 +89,11 @@
         List<IvrLibaScriptTargetoption> ivrLibaScriptTargetoptions = ivrLibaScriptTargetoptionMapper.selectIvrLibaScriptTargetoptionList(ivrLibaScriptTargetoption);
         scriptVO.setIvrLibaScriptTargetoptionList(ivrLibaScriptTargetoptions);
 
-        //鏌ヨ闂鎸囨爣鎺ュ彛
-        IvrLibaScriptTarget ivrLibaScriptTarget = new IvrLibaScriptTarget();
-        ivrLibaScriptTarget.setScriptid(ivrLibaScripts.get(0).getId());
-        List<IvrLibaScriptTarget> ivrLibaScriptTargets = ivrLibaScriptTargetMapper.selectIvrLibaScriptTargetList(ivrLibaScriptTarget);
-        scriptVO.setIvrLibaScriptTargetList(ivrLibaScriptTargets);
+//        //鏌ヨ闂鎸囨爣鎺ュ彛
+//        IvrLibaScriptTarget ivrLibaScriptTarget = new IvrLibaScriptTarget();
+//        ivrLibaScriptTarget.setScriptid(ivrLibaScripts.get(0).getId());
+//        List<IvrLibaScriptTarget> ivrLibaScriptTargets = ivrLibaScriptTargetMapper.selectIvrLibaScriptTargetList(ivrLibaScriptTarget);
+//        scriptVO.setIvrLibaScriptTargetList(ivrLibaScriptTargets);
 
         return scriptVO;
     }
@@ -115,28 +116,30 @@
             i = ivrLibaScriptMapper.updateIvrLibaScript(ivrLibaScript);
         }
         log.info("闂琛ㄥ搴旂殑id涓猴細{}", ivrLibaScript.getId());
-
-        //瀵归棶棰樻寚鏍囪繘琛屽鐞�
-        if (CollectionUtils.isNotEmpty(ivrLibaScriptVO.getIvrLibaScriptTargetList())) {
-            for (IvrLibaScriptTarget ivrLibaScriptTarget : ivrLibaScriptVO.getIvrLibaScriptTargetList()) {
-                if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 1) {
-                    //鏂板
-                    ivrLibaScriptTarget.setScriptid(ivrLibaScript.getId());
-                    ivrLibaScriptTargetMapper.insertIvrLibaScriptTarget(ivrLibaScriptTarget);
-                } else if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 2) {
-                    //淇敼
-                    ivrLibaScriptTarget.setScriptid(ivrLibaScript.getId());
-                    ivrLibaScriptTargetMapper.updateIvrLibaScriptTarget(ivrLibaScriptTarget);
-                } else if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 3) {
-                    //鍒犻櫎
-                    if (ivrLibaScriptTarget.getId() == null) {
-                        log.info("鍒犻櫎澶辫触,闂鎸囨爣id涓虹┖");
-                    } else {
-                        ivrLibaScriptTargetMapper.deleteIvrLibaScriptTargetByQuestionTargetID(ivrLibaScriptTarget.getId());
-                    }
-                }
-            }
+        if (ivrLibaScript.getId() == null) {
+            throw new BaseException("璇濇湳ID涓虹┖,璇锋鏌ヨ瘽鏈叆鍙備俊鎭槸鍚﹀畬鏁�");
         }
+//        //瀵归棶棰樻寚鏍囪繘琛屽鐞�
+//        if (CollectionUtils.isNotEmpty(ivrLibaScriptVO.getIvrLibaScriptTargetList())) {
+//            for (IvrLibaScriptTarget ivrLibaScriptTarget : ivrLibaScriptVO.getIvrLibaScriptTargetList()) {
+//                if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 1) {
+//                    //鏂板
+//                    ivrLibaScriptTarget.setScriptid(ivrLibaScript.getId());
+//                    ivrLibaScriptTargetMapper.insertIvrLibaScriptTarget(ivrLibaScriptTarget);
+//                } else if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 2) {
+//                    //淇敼
+//                    ivrLibaScriptTarget.setScriptid(ivrLibaScript.getId());
+//                    ivrLibaScriptTargetMapper.updateIvrLibaScriptTarget(ivrLibaScriptTarget);
+//                } else if (ivrLibaScriptTarget.getIsoperation() != null && ivrLibaScriptTarget.getIsoperation() == 3) {
+//                    //鍒犻櫎
+//                    if (ivrLibaScriptTarget.getId() == null) {
+//                        log.info("鍒犻櫎澶辫触,闂鎸囨爣id涓虹┖");
+//                    } else {
+//                        ivrLibaScriptTargetMapper.deleteIvrLibaScriptTargetByQuestionTargetID(ivrLibaScriptTarget.getId());
+//                    }
+//                }
+//            }
+//        }
 
         //瀵归棶棰樻寚鏍囬�夐」杩涜澶勭悊
         if (CollectionUtils.isNotEmpty(ivrLibaScriptVO.getIvrLibaScriptTargetoptionList())) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetAssortServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetAssortServiceImpl.java
index ff8edb2..ab5b489 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetAssortServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetAssortServiceImpl.java
@@ -1,14 +1,15 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
-import com.smartor.domain.HeCategory;
-import com.smartor.domain.HeCategoryVO;
-import com.smartor.domain.IvrLibaTargetAssort;
-import com.smartor.domain.IvrLibaTargetAssortVO;
+import com.smartor.domain.*;
 import com.smartor.mapper.IvrLibaTargetAssortMapper;
 import com.smartor.service.IIvrLibaTargetAssortService;
 import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +22,7 @@
  * @author ruoyi
  * @date 2023-12-14
  */
+@Slf4j
 @Service
 public class IvrLibaTargetAssortServiceImpl implements IIvrLibaTargetAssortService {
     @Autowired
@@ -77,6 +79,37 @@
         return ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort);
     }
 
+    @Override
+    public int insertIvrLibaTargetAssortTree(IvrLibaTargetAssortVO ivrLibaTargetAssortVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(ivrLibaTargetAssortVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        Integer seqMax = ivrLibaTargetAssortMapper.selectSeqMax();
+        IvrLibaTargetAssort ivrLibaTargetAssort = DtoConversionUtils.sourceToTarget(ivrLibaTargetAssortVO, IvrLibaTargetAssort.class);
+        ivrLibaTargetAssort.setSeqno(1);
+        if (seqMax != null) {
+            ivrLibaTargetAssort.setSeqno(seqMax + 1);
+        }
+        i = ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort);
+        log.info("鎸囨爣鍒嗙被涓�绾ф爲鐨勪富閿�:{}", ivrLibaTargetAssort.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(ivrLibaTargetAssortVO.getIvrLibaTargetAssortList())) {
+            for (IvrLibaTargetAssort ivrLibaTargetAssort1 : ivrLibaTargetAssortVO.getIvrLibaTargetAssortList()) {
+                int seqMax1 = ivrLibaTargetAssortMapper.selectSeqMax();
+                ivrLibaTargetAssort1.setPid(ivrLibaTargetAssort.getId());
+                ivrLibaTargetAssort1.setSeqno(1);
+                if (seqMax != null) {
+                    ivrLibaTargetAssort1.setSeqno(seqMax1 + 1);
+                }
+
+                ivrLibaTargetAssortMapper.insertIvrLibaTargetAssort(ivrLibaTargetAssort1);
+            }
+        }
+        return i;
+    }
+
     /**
      * 淇敼鎸囨爣鍒嗙被
      *
@@ -96,8 +129,23 @@
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaTargetAssortByIds(Long[] ids) {
-        return ivrLibaTargetAssortMapper.deleteIvrLibaTargetAssortByIds(ids);
+    public Integer deleteIvrLibaTargetAssortByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = ivrLibaTargetAssortMapper.deleteIvrLibaTargetAssortById(id);
+            IvrLibaTargetAssort ivrLibaTargetAssort = new IvrLibaTargetAssort();
+            ivrLibaTargetAssort.setPid(id);
+
+            //灏嗗垹闄ょ殑id鐨勪簩绾ц彍鍗曪紝鏀惧埌鏈垎绫讳腑
+            List<IvrLibaTargetAssort> ivrLibaTargetAssorts = ivrLibaTargetAssortMapper.selectIvrLibaTargetAssortList(ivrLibaTargetAssort);
+            if (CollectionUtils.isNotEmpty(ivrLibaTargetAssorts)) {
+                for (IvrLibaTargetAssort ivrLibaTargetAssort1 : ivrLibaTargetAssorts) {
+                    ivrLibaTargetAssort1.setPid(999999999L);
+                    ivrLibaTargetAssortMapper.updateIvrLibaTargetAssort(ivrLibaTargetAssort1);
+                }
+            }
+        }
+        return i;
     }
 
     /**
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateAssortServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateAssortServiceImpl.java
new file mode 100644
index 0000000..96960fe
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateAssortServiceImpl.java
@@ -0,0 +1,159 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.IvrLibaTemplateAssort;
+import com.smartor.domain.IvrLibaTemplateAssortVO;
+import com.smartor.mapper.IvrLibaTemplateAssortMapper;
+import com.smartor.service.IIvrLibaTemplateAssortService;
+import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 妯℃澘鍒嗙被Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Slf4j
+@Service
+public class IvrLibaTemplateAssortServiceImpl implements IIvrLibaTemplateAssortService {
+    @Autowired
+    private IvrLibaTemplateAssortMapper ivrLibaTemplateAssortMapper;
+
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 妯℃澘鍒嗙被
+     */
+    @Override
+    public IvrLibaTemplateAssort selectIvrLibaTemplateAssortById(Long id) {
+        return ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortById(id);
+    }
+
+    /**
+     * 鏌ヨ妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param ivrLibaScriptAssort 妯℃澘鍒嗙被
+     * @return 妯℃澘鍒嗙被
+     */
+    @Override
+    public List<IvrLibaTemplateAssortVO> selectIvrLibaTemplateAssortList(IvrLibaTemplateAssort ivrLibaScriptAssort) {
+        List<IvrLibaTemplateAssort> ivrLibaTemplateAssorts = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaScriptAssort);
+        //灏唒id涓虹┖鐨勶紝杩囨护鎺�
+        ivrLibaTemplateAssorts = ivrLibaTemplateAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
+
+        List<IvrLibaTemplateAssortVO> ivrLibaTemplateAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateAssorts, IvrLibaTemplateAssortVO.class);
+        //閬嶅巻鏌ュ嚭鏉ョ殑鏁版嵁锛岄�氳繃 id=pid 鑾峰彇浠栦滑鐨勫瓙鏁版嵁
+        for (IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO : ivrLibaTemplateAssortVOS) {
+            if (ivrLibaTemplateAssortVO.getPid() != null) {
+                continue;
+            }
+            IvrLibaTemplateAssort ivrLibaTemplateAssort = new IvrLibaTemplateAssort();
+            ivrLibaTemplateAssort.setPid(ivrLibaTemplateAssortVO.getId());
+            List<IvrLibaTemplateAssort> ivrLibaTemplateAssorts1 = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort);
+            if (!Collections.isEmpty(ivrLibaTemplateAssorts1)) {
+                ivrLibaTemplateAssortVO.setIvrLibaTemplateAssortList(ivrLibaTemplateAssorts1);
+            }
+        }
+        return ivrLibaTemplateAssortVOS;
+    }
+
+    /**
+     * 鏂板妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+        ivrLibaTemplateAssort.setCreateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort);
+    }
+
+    @Override
+    public int insertIvrLibaTemplateAssortTree(IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(ivrLibaTemplateAssortVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        Integer seqMax = ivrLibaTemplateAssortMapper.selectSeqMax();
+        IvrLibaTemplateAssort ivrLibaTemplateAssort = DtoConversionUtils.sourceToTarget(ivrLibaTemplateAssortVO, IvrLibaTemplateAssort.class);
+        ivrLibaTemplateAssort.setSeqno(1);
+        if (seqMax != null) {
+            ivrLibaTemplateAssort.setSeqno(seqMax + 1);
+        }
+        i = ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort);
+        log.info("闂ā鏉垮垎绫讳竴绾ф爲鐨勪富閿�:{}", ivrLibaTemplateAssort.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(ivrLibaTemplateAssortVO.getIvrLibaTemplateAssortList())) {
+            for (IvrLibaTemplateAssort ivrLibaTemplateAssort1 : ivrLibaTemplateAssortVO.getIvrLibaTemplateAssortList()) {
+                int seqMax1 = ivrLibaTemplateAssortMapper.selectSeqMax();
+                ivrLibaTemplateAssort1.setPid(ivrLibaTemplateAssort.getId());
+                ivrLibaTemplateAssort1.setSeqno(seqMax1 + 1);
+                ivrLibaTemplateAssortMapper.insertIvrLibaTemplateAssort(ivrLibaTemplateAssort1);
+            }
+        }
+
+        return i;
+    }
+
+    /**
+     * 淇敼妯℃澘鍒嗙被
+     *
+     * @param ivrLibaTemplateAssort 妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaTemplateAssort(IvrLibaTemplateAssort ivrLibaTemplateAssort) {
+        ivrLibaTemplateAssort.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateAssortMapper.updateIvrLibaTemplateAssort(ivrLibaTemplateAssort);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public Integer deleteIvrLibaTemplateAssortByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = ivrLibaTemplateAssortMapper.deleteIvrLibaTemplateAssortById(id);
+            IvrLibaTemplateAssort ivrLibaTemplateAssort = new IvrLibaTemplateAssort();
+            ivrLibaTemplateAssort.setPid(id);
+            List<IvrLibaTemplateAssort> ivrLibaTemplateAssorts = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort);
+            if (CollectionUtils.isNotEmpty(ivrLibaTemplateAssorts)) {
+                for (IvrLibaTemplateAssort ivrLibaTemplateAssort1 : ivrLibaTemplateAssorts) {
+                    ivrLibaTemplateAssort1.setPid(999999999L);
+                    ivrLibaTemplateAssortMapper.updateIvrLibaTemplateAssort(ivrLibaTemplateAssort1);
+                }
+            }
+
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鍒嗙被淇℃伅
+     *
+     * @param id 妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrLibaTemplateAssortById(Long id) {
+        return ivrLibaTemplateAssortMapper.deleteIvrLibaTemplateAssortById(id);
+    }
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateScriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateScriptServiceImpl.java
new file mode 100644
index 0000000..d238a9d
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateScriptServiceImpl.java
@@ -0,0 +1,97 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaTemplateScript;
+import com.smartor.mapper.IvrLibaTemplateScriptMapper;
+import com.smartor.service.IIvrLibaTemplateScriptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 妯$増闂璇濇湳搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Service
+public class IvrLibaTemplateScriptServiceImpl implements IIvrLibaTemplateScriptService {
+    @Autowired
+    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
+
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴�
+     *
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 妯$増闂璇濇湳搴�
+     */
+    @Override
+    public IvrLibaTemplateScript selectIvrLibaTemplateScriptByID(Long ID) {
+        return ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptByID(ID);
+    }
+
+    /**
+     * 鏌ヨ妯$増闂璇濇湳搴撳垪琛�
+     *
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 妯$増闂璇濇湳搴�
+     */
+    @Override
+    public List<IvrLibaTemplateScript> selectIvrLibaTemplateScriptList(IvrLibaTemplateScript ivrLibaTemplateScript) {
+        return ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+    }
+
+    /**
+     * 鏂板妯$増闂璇濇湳搴�
+     *
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript) {
+        ivrLibaTemplateScript.setCreateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
+    }
+
+    /**
+     * 淇敼妯$増闂璇濇湳搴�
+     *
+     * @param ivrLibaTemplateScript 妯$増闂璇濇湳搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaTemplateScript(IvrLibaTemplateScript ivrLibaTemplateScript) {
+        ivrLibaTemplateScript.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂璇濇湳搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public int deleteIvrLibaTemplateScriptByIDs(Long[] IDs) {
+        Integer i = null;
+        for (Long id : IDs) {
+            i = ivrLibaTemplateScriptMapper.deleteIvrLibaTemplateScriptByID(id);
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎妯$増闂璇濇湳搴撲俊鎭�
+     *
+     * @param ID 妯$増闂璇濇湳搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public int deleteIvrLibaTemplateScriptByID(Long ID) {
+        return ivrLibaTemplateScriptMapper.deleteIvrLibaTemplateScriptByID(ID);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
index c6ccb10..3487f55 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateServiceImpl.java
@@ -1,96 +1,265 @@
 package com.smartor.service.impl;
 
-import java.util.List;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.*;
+import com.smartor.service.IIvrLibaTemplateService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.IvrLibaTemplateMapper;
-import com.smartor.domain.IvrLibaTemplate;
-import com.smartor.service.IIvrLibaTemplateService;
+
+import java.util.List;
 
 /**
- * 璇濇湳妯℃澘搴揝ervice涓氬姟灞傚鐞�
- * 
- * @author smartor
- * @date 2023-03-22
+ * 妯℃澘搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
  */
+@Slf4j
 @Service
-public class IvrLibaTemplateServiceImpl implements IIvrLibaTemplateService 
-{
+public class IvrLibaTemplateServiceImpl implements IIvrLibaTemplateService {
     @Autowired
     private IvrLibaTemplateMapper ivrLibaTemplateMapper;
 
+    @Autowired
+    private IvrLibaTemplateTagMapper ivrLibaTemplateTagMapper;
+
+    @Autowired
+    private IvrLibaTemplateTargetMapper ivrLibaTemplateTargetMapper;
+
+    @Autowired
+    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
+
+    @Autowired
+    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
+
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴�
-     * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
-     * @return 璇濇湳妯℃澘搴�
+     * 鏌ヨ妯℃澘搴�
+     *
+     * @param ID 妯℃澘搴撲富閿�
+     * @return 妯℃澘搴�
      */
     @Override
-    public IvrLibaTemplate selectIvrLibaTemplateByTemplateID(String templateID)
-    {
-        return ivrLibaTemplateMapper.selectIvrLibaTemplateByTemplateID(templateID);
+    public IvrLibaTemplate selectIvrLibaTemplateByID(Long ID) {
+        return ivrLibaTemplateMapper.selectIvrLibaTemplateByID(ID);
     }
 
     /**
-     * 鏌ヨ璇濇湳妯℃澘搴撳垪琛�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
-     * @return 璇濇湳妯℃澘搴�
+     * 鏌ヨ妯℃澘搴撳垪琛�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
+     * @return 妯℃澘搴�
      */
     @Override
-    public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate)
-    {
+    public List<IvrLibaTemplate> selectIvrLibaTemplateList(IvrLibaTemplate ivrLibaTemplate) {
         return ivrLibaTemplateMapper.selectIvrLibaTemplateList(ivrLibaTemplate);
     }
 
     /**
-     * 鏂板璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * 鏂板妯℃澘搴�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     @Override
-    public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate)
-    {
+    public int insertIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
         ivrLibaTemplate.setCreateTime(DateUtils.getNowDate());
         return ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
     }
 
     /**
-     * 淇敼璇濇湳妯℃澘搴�
-     * 
-     * @param ivrLibaTemplate 璇濇湳妯℃澘搴�
+     * 淇敼妯℃澘搴�
+     *
+     * @param ivrLibaTemplate 妯℃澘搴�
      * @return 缁撴灉
      */
     @Override
-    public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate)
-    {
+    public int updateIvrLibaTemplate(IvrLibaTemplate ivrLibaTemplate) {
         ivrLibaTemplate.setUpdateTime(DateUtils.getNowDate());
         return ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
     }
 
     /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴�
-     * 
-     * @param templateIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撲富閿�
+     * 鎵归噺鍒犻櫎妯℃澘搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑妯℃澘搴撲富閿�
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaTemplateByTemplateIDs(String[] templateIDs)
-    {
-        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByTemplateIDs(templateIDs);
+    public int deleteIvrLibaTemplateByIDs(Long[] IDs) {
+        Integer i = null;
+        for (Long id : IDs) {
+            i = ivrLibaTemplateMapper.deleteIvrLibaTemplateByID(id);
+        }
+        return i;
     }
 
     /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撲俊鎭�
-     * 
-     * @param templateID 璇濇湳妯℃澘搴撲富閿�
+     * 鍒犻櫎妯℃澘搴撲俊鎭�
+     *
+     * @param ID 妯℃澘搴撲富閿�
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrLibaTemplateByTemplateID(String templateID)
-    {
-        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByTemplateID(templateID);
+    public int deleteIvrLibaTemplateByID(Long ID) {
+        return ivrLibaTemplateMapper.deleteIvrLibaTemplateByID(ID);
     }
+
+    /**
+     * 鏂板鎴栦慨鏀归棶棰樿鎯�
+     *
+     * @param ivrLibaTemplateVO
+     * @return
+     */
+    @Override
+    public Integer saveOrUpdateTemplate(IvrLibaTemplateVO ivrLibaTemplateVO) {
+        Integer i = null;
+        IvrLibaTemplate ivrLibaTemplate = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplate.class);
+        if (ivrLibaTemplateVO.getIsoperation() != null && ivrLibaTemplateVO.getIsoperation() == 1) {
+            //鏂板
+            i = ivrLibaTemplateMapper.insertIvrLibaTemplate(ivrLibaTemplate);
+        } else if (ivrLibaTemplateVO.getIsoperation() != null && ivrLibaTemplateVO.getIsoperation() == 2) {
+            //淇敼
+            i = ivrLibaTemplateMapper.updateIvrLibaTemplate(ivrLibaTemplate);
+        }
+        log.info("鏂板鎴栦慨鏀规ā鏉胯鎯呯殑id涓猴細{}", ivrLibaTemplate.getID());
+
+        //瀵规ā鏉挎爣绛捐繘琛屽鐞�
+        if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateTagList())) {
+            for (IvrLibaTemplateTag ivrLibaTemplateTag : ivrLibaTemplateVO.getIvrLibaTemplateTagList()) {
+                if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 1) {
+                    //鏂板
+                    ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getID());
+                    ivrLibaTemplateTagMapper.insertIvrLibaTemplateTag(ivrLibaTemplateTag);
+                } else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 2) {
+                    //淇敼
+                    ivrLibaTemplateTag.setTemplateid(ivrLibaTemplate.getID());
+                    ivrLibaTemplateTagMapper.updateIvrLibaTemplateTag(ivrLibaTemplateTag);
+                } else if (ivrLibaTemplateTag.getIsoperation() != null && ivrLibaTemplateTag.getIsoperation() == 3) {
+                    //鍒犻櫎
+                    if (ivrLibaTemplateTag.getId() == null) {
+                        log.info("鍒犻櫎澶辫触,妯℃澘鎸囨爣id涓虹┖");
+                    } else {
+                        ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(ivrLibaTemplateTag.getId());
+                    }
+                }
+            }
+        }
+
+        //瀵规ā鏉胯瘽鏈拰閫夐」杩涜澶勭悊锛堣瘽鏈〃涓庢寚鏍囪〃杩涜鍚堝苟浜嗭紝锛�
+        if (CollectionUtils.isNotEmpty(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList())) {
+            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList()) {
+                if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 1) {
+                    //鏂板
+                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
+                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
+                    ivrLibaTemplateScriptMapper.insertIvrLibaTemplateScript(ivrLibaTemplateScript);
+                    //瀵归�夐」鐩繘琛屽鐞�
+                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaTemplateTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
+
+                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 2) {
+                    //淇敼
+                    IvrLibaTemplateScript ivrLibaTemplateScript = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScriptVO, IvrLibaTemplateScript.class);
+                    ivrLibaTemplateScript.setTemplateID(ivrLibaTemplate.getID());
+                    ivrLibaTemplateScriptMapper.updateIvrLibaTemplateScript(ivrLibaTemplateScript);
+                    //瀵归�夐」鐩繘琛屽鐞�
+                    dealOption(ivrLibaTemplateScriptVO.getIvrLibaTemplateTargetoptionList(), ivrLibaTemplateScript, ivrLibaTemplate.getID());
+
+                } else if (ivrLibaTemplateScriptVO.getIsoperation() != null && ivrLibaTemplateScriptVO.getIsoperation() == 3) {
+                    //鍒犻櫎
+                    if (ivrLibaTemplateScriptVO.getID() == null) {
+                        log.info("鍒犻櫎澶辫触,妯℃澘璇濇湳id涓虹┖");
+                    } else {
+                        ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(ivrLibaTemplateScriptVO.getID());
+                    }
+                }
+            }
+        }
+
+        return i;
+    }
+
+    /**
+     * 閫夐」澶勭悊
+     *
+     * @param ivrLibaTemplateTargetoptionList
+     * @param ivrLibaTemplateScript
+     * @param tmpID
+     */
+    private void dealOption(List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptionList, IvrLibaTemplateScript ivrLibaTemplateScript, Long tmpID) {
+        //瀵规ā鏉挎寚鏍囬�夐」杩涜澶勭悊
+        if (CollectionUtils.isNotEmpty(ivrLibaTemplateTargetoptionList)) {
+            for (IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption : ivrLibaTemplateTargetoptionList) {
+                if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 1) {
+                    //鏂板
+                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
+                    ivrLibaTemplateTargetoption.setTargetid(ivrLibaTemplateScript.getTargetid());
+                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getScriptid());
+                    ivrLibaTemplateTargetOptionMapper.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
+                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 2) {
+                    //淇敼
+                    ivrLibaTemplateTargetoption.setTemplateID(tmpID);
+                    ivrLibaTemplateTargetoption.setTargetid(ivrLibaTemplateScript.getTargetid());
+                    ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScript.getScriptid());
+                    ivrLibaTemplateTargetOptionMapper.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
+                } else if (ivrLibaTemplateTargetoption.getIsoperation() != null && ivrLibaTemplateTargetoption.getIsoperation() == 3) {
+                    //鍒犻櫎
+                    if (ivrLibaTemplateTargetoption.getId() == null) {
+                        log.info("鍒犻櫎澶辫触,妯℃澘鎸囨爣閫夐」id涓虹┖");
+                    } else {
+                        ivrLibaTemplateTargetOptionMapper.deleteIvrLibaTemplateTargetoptionById(ivrLibaTemplateTargetoption.getId());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     */
+    @Override
+    public IvrLibaTemplateVO selectInfoByCondition(IvrLibaTemplateVO ivrLibaTemplateVO) {
+        log.info("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢鐨勫叆鍙備负 : {}", ivrLibaTemplateVO);
+        //鍏堟牴鎹潯浠舵煡璇㈤棶棰樿〃淇℃伅
+        IvrLibaTemplate ivrLibaTemplate = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplate.class);
+        List<IvrLibaTemplate> ivrLibaTemplates = selectIvrLibaTemplateList(ivrLibaTemplate);
+        if (CollectionUtils.isEmpty(ivrLibaTemplates)) {
+            log.info("鎻愪緵鐨勬潯浠�,鏌ヨ妯℃澘璇︽儏鏁版嵁涓虹┖锛歿}", ivrLibaTemplates);
+            throw new BaseException("鎻愪緵鐨勬潯浠�,鏌ヨ妯℃澘璇︽儏鏁版嵁涓虹┖");
+        }
+
+        log.info("ivrLibaTemplates鐨勬煡璇㈢粨鏋滀负:{},鏁伴噺涓� : {}", ivrLibaTemplates.get(0), ivrLibaTemplates.size());
+        //瀹氫箟IvrLibaTemplateVO 鐢ㄤ簬杩斿弬
+        IvrLibaTemplateVO templateVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplates.get(0), IvrLibaTemplateVO.class);
+
+        //鑾峰彇tag淇℃伅
+        IvrLibaTemplateTag ivrLibaTemplateTag = new IvrLibaTemplateTag();
+        ivrLibaTemplateTag.setTemplateid(ivrLibaTemplates.get(0).getID());
+        List<IvrLibaTemplateTag> ivrLibaTemplateTags = ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
+
+        //鏌ヨ璇濇湳
+        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
+        ivrLibaTemplateScript.setTemplateID(ivrLibaTemplates.get(0).getID());
+        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);
+
+        //閫氳繃璇濇湳ID鑾峰彇閫夐」
+        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
+            log.info("ivrLibaTemplateScriptVO鐨勪富閿甶d涓猴細{}", ivrLibaTemplateScriptVO.getID());
+            IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
+            ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getID());
+            List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
+            ivrLibaTemplateScriptVO.setIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoptions);
+        }
+
+        //鏁版嵁缁勮
+        templateVO.setIvrLibaTemplateTagList(ivrLibaTemplateTags);
+        templateVO.setIvrLibaTemplateScriptVOList(ivrLibaTemplateScriptVOS);
+        return templateVO;
+    }
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTagServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTagServiceImpl.java
new file mode 100644
index 0000000..02b9cc1
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTagServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaTemplateTag;
+import com.smartor.mapper.IvrLibaTemplateTagMapper;
+import com.smartor.service.IIvrLibaTemplateTagService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鏍囩Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Service
+public class IvrLibaTemplateTagServiceImpl implements IIvrLibaTemplateTagService {
+    @Autowired
+    private IvrLibaTemplateTagMapper ivrLibaTemplateTagMapper;
+
+    /**
+     * 鏌ヨ妯℃澘鏍囩
+     *
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 妯℃澘鏍囩
+     */
+    @Override
+    public IvrLibaTemplateTag selectIvrLibaTemplateTagById(Long id) {
+        return ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagById(id);
+    }
+
+    /**
+     * 鏌ヨ妯℃澘鏍囩鍒楄〃
+     *
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 妯℃澘鏍囩
+     */
+    @Override
+    public List<IvrLibaTemplateTag> selectIvrLibaTemplateTagList(IvrLibaTemplateTag ivrLibaTemplateTag) {
+        return ivrLibaTemplateTagMapper.selectIvrLibaTemplateTagList(ivrLibaTemplateTag);
+    }
+
+    /**
+     * 鏂板妯℃澘鏍囩
+     *
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag) {
+        ivrLibaTemplateTag.setCreateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTagMapper.insertIvrLibaTemplateTag(ivrLibaTemplateTag);
+    }
+
+    /**
+     * 淇敼妯℃澘鏍囩
+     *
+     * @param ivrLibaTemplateTag 妯℃澘鏍囩
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaTemplateTag(IvrLibaTemplateTag ivrLibaTemplateTag) {
+        ivrLibaTemplateTag.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTagMapper.updateIvrLibaTemplateTag(ivrLibaTemplateTag);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鏍囩
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public int deleteIvrLibaTemplateTagByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(id);
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鏍囩淇℃伅
+     *
+     * @param id 妯℃澘鏍囩涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrLibaTemplateTagById(Long id) {
+        return ivrLibaTemplateTagMapper.deleteIvrLibaTemplateTagById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java
new file mode 100644
index 0000000..f894cf8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetServiceImpl.java
@@ -0,0 +1,96 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaTemplateTarget;
+import com.smartor.mapper.IvrLibaTemplateTargetMapper;
+import com.smartor.service.IIvrLibaTemplateTargetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 妯$増闂鎸囨爣搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Service
+public class IvrLibaTemplateTargetServiceImpl implements IIvrLibaTemplateTargetService {
+    @Autowired
+    private IvrLibaTemplateTargetMapper ivrLibaTemplateTargetMapper;
+
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴�
+     *
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 妯$増闂鎸囨爣搴�
+     */
+    @Override
+    public IvrLibaTemplateTarget selectIvrLibaTemplateTargetByID(Long ID) {
+        return ivrLibaTemplateTargetMapper.selectIvrLibaTemplateTargetByID(ID);
+    }
+
+    /**
+     * 鏌ヨ妯$増闂鎸囨爣搴撳垪琛�
+     *
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 妯$増闂鎸囨爣搴�
+     */
+    @Override
+    public List<IvrLibaTemplateTarget> selectIvrLibaTemplateTargetList(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        return ivrLibaTemplateTargetMapper.selectIvrLibaTemplateTargetList(ivrLibaTemplateTarget);
+    }
+
+    /**
+     * 鏂板妯$増闂鎸囨爣搴�
+     *
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        ivrLibaTemplateTarget.setCreateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTargetMapper.insertIvrLibaTemplateTarget(ivrLibaTemplateTarget);
+    }
+
+    /**
+     * 淇敼妯$増闂鎸囨爣搴�
+     *
+     * @param ivrLibaTemplateTarget 妯$増闂鎸囨爣搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaTemplateTarget(IvrLibaTemplateTarget ivrLibaTemplateTarget) {
+        ivrLibaTemplateTarget.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTargetMapper.updateIvrLibaTemplateTarget(ivrLibaTemplateTarget);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎妯$増闂鎸囨爣搴�
+     *
+     * @param IDs 闇�瑕佸垹闄ょ殑妯$増闂鎸囨爣搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public int deleteIvrLibaTemplateTargetByIDs(Long[] IDs) {
+        Integer i = null;
+        for (Long id : IDs) {
+            i = ivrLibaTemplateTargetMapper.deleteIvrLibaTemplateTargetByID(id);
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎妯$増闂鎸囨爣搴撲俊鎭�
+     *
+     * @param ID 妯$増闂鎸囨爣搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteIvrLibaTemplateTargetByID(Long ID) {
+        return ivrLibaTemplateTargetMapper.deleteIvrLibaTemplateTargetByID(ID);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetoptionServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetoptionServiceImpl.java
new file mode 100644
index 0000000..8d8af2f
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateTargetoptionServiceImpl.java
@@ -0,0 +1,97 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.IvrLibaTemplateTargetoption;
+import com.smartor.mapper.IvrLibaTemplateTargetoptionMapper;
+import com.smartor.service.IIvrLibaTemplateTargetoptionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 妯℃澘鎸囨爣閫夐」搴揝ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-23
+ */
+@Service
+public class IvrLibaTemplateTargetoptionServiceImpl implements IIvrLibaTemplateTargetoptionService {
+    @Autowired
+    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetoptionMapper;
+
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 妯℃澘鎸囨爣閫夐」搴�
+     */
+    @Override
+    public IvrLibaTemplateTargetoption selectIvrLibaTemplateTargetoptionById(Long id) {
+        return ivrLibaTemplateTargetoptionMapper.selectIvrLibaTemplateTargetoptionById(id);
+    }
+
+    /**
+     * 鏌ヨ妯℃澘鎸囨爣閫夐」搴撳垪琛�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 妯℃澘鎸囨爣閫夐」搴�
+     */
+    @Override
+    public List<IvrLibaTemplateTargetoption> selectIvrLibaTemplateTargetoptionList(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        return ivrLibaTemplateTargetoptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
+    }
+
+    /**
+     * 鏂板妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        ivrLibaTemplateTargetoption.setCreateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTargetoptionMapper.insertIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
+    }
+
+    /**
+     * 淇敼妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ivrLibaTemplateTargetoption 妯℃澘鎸囨爣閫夐」搴�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateIvrLibaTemplateTargetoption(IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption) {
+        ivrLibaTemplateTargetoption.setUpdateTime(DateUtils.getNowDate());
+        return ivrLibaTemplateTargetoptionMapper.updateIvrLibaTemplateTargetoption(ivrLibaTemplateTargetoption);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎妯℃澘鎸囨爣閫夐」搴�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteIvrLibaTemplateTargetoptionByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = ivrLibaTemplateTargetoptionMapper.deleteIvrLibaTemplateTargetoptionById(id);
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎妯℃澘鎸囨爣閫夐」搴撲俊鎭�
+     *
+     * @param id 妯℃澘鎸囨爣閫夐」搴撲富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int deleteIvrLibaTemplateTargetoptionById(Long id) {
+        return ivrLibaTemplateTargetoptionMapper.deleteIvrLibaTemplateTargetoptionById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatescriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatescriptServiceImpl.java
deleted file mode 100644
index 910b2ba..0000000
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatescriptServiceImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-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.IvrLibaTemplatescriptMapper;
-import com.smartor.domain.IvrLibaTemplatescript;
-import com.smartor.service.IIvrLibaTemplatescriptService;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈疭ervice涓氬姟灞傚鐞�
- * 
- * @author smartor
- * @date 2023-03-22
- */
-@Service
-public class IvrLibaTemplatescriptServiceImpl implements IIvrLibaTemplatescriptService 
-{
-    @Autowired
-    private IvrLibaTemplatescriptMapper ivrLibaTemplatescriptMapper;
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    @Override
-    public IvrLibaTemplatescript selectIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID)
-    {
-        return ivrLibaTemplatescriptMapper.selectIvrLibaTemplatescriptByTemplateQuestionID(templateQuestionID);
-    }
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈垪琛�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈�
-     */
-    @Override
-    public List<IvrLibaTemplatescript> selectIvrLibaTemplatescriptList(IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        return ivrLibaTemplatescriptMapper.selectIvrLibaTemplatescriptList(ivrLibaTemplatescript);
-    }
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        ivrLibaTemplatescript.setCreateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatescriptMapper.insertIvrLibaTemplatescript(ivrLibaTemplatescript);
-    }
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param ivrLibaTemplatescript 璇濇湳妯℃澘搴撹瘽鏈�
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateIvrLibaTemplatescript(IvrLibaTemplatescript ivrLibaTemplatescript)
-    {
-        ivrLibaTemplatescript.setUpdateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatescriptMapper.updateIvrLibaTemplatescript(ivrLibaTemplatescript);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈�
-     * 
-     * @param templateQuestionIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionIDs(String[] templateQuestionIDs)
-    {
-        return ivrLibaTemplatescriptMapper.deleteIvrLibaTemplatescriptByTemplateQuestionIDs(templateQuestionIDs);
-    }
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈俊鎭�
-     * 
-     * @param templateQuestionID 璇濇湳妯℃澘搴撹瘽鏈富閿�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatescriptByTemplateQuestionID(String templateQuestionID)
-    {
-        return ivrLibaTemplatescriptMapper.deleteIvrLibaTemplatescriptByTemplateQuestionID(templateQuestionID);
-    }
-}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetAssortServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetAssortServiceImpl.java
deleted file mode 100644
index 8595be8..0000000
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetAssortServiceImpl.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.smartor.service.impl;
-
-import com.ruoyi.common.utils.DateUtils;
-import com.smartor.domain.IvrLibaTemplatetargetAssort;
-import com.smartor.mapper.IvrLibaTemplatetargetAssortMapper;
-import com.smartor.service.IIvrLibaTemplatetargetAssortService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 鎸囨爣妯℃澘鍒嗙被Service涓氬姟灞傚鐞�
- *
- * @author ruoyi
- * @date 2023-12-18
- */
-@Service
-public class IvrLibaTemplatetargetAssortServiceImpl implements IIvrLibaTemplatetargetAssortService {
-    @Autowired
-    private IvrLibaTemplatetargetAssortMapper ivrLibaTemplatetargetAssortMapper;
-
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被
-     *
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 鎸囨爣妯℃澘鍒嗙被
-     */
-    @Override
-    public IvrLibaTemplatetargetAssort selectIvrLibaTemplatetargetAssortById(Long id) {
-        return ivrLibaTemplatetargetAssortMapper.selectIvrLibaTemplatetargetAssortById(id);
-    }
-
-    /**
-     * 鏌ヨ鎸囨爣妯℃澘鍒嗙被鍒楄〃
-     *
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 鎸囨爣妯℃澘鍒嗙被
-     */
-    @Override
-    public List<IvrLibaTemplatetargetAssort> selectIvrLibaTemplatetargetAssortList(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        return ivrLibaTemplatetargetAssortMapper.selectIvrLibaTemplatetargetAssortList(ivrLibaTemplatetargetAssort);
-    }
-
-    /**
-     * 鏂板鎸囨爣妯℃澘鍒嗙被
-     *
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        ivrLibaTemplatetargetAssort.setCreateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatetargetAssortMapper.insertIvrLibaTemplatetargetAssort(ivrLibaTemplatetargetAssort);
-    }
-
-    /**
-     * 淇敼鎸囨爣妯℃澘鍒嗙被
-     *
-     * @param ivrLibaTemplatetargetAssort 鎸囨爣妯℃澘鍒嗙被
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateIvrLibaTemplatetargetAssort(IvrLibaTemplatetargetAssort ivrLibaTemplatetargetAssort) {
-        ivrLibaTemplatetargetAssort.setUpdateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatetargetAssortMapper.updateIvrLibaTemplatetargetAssort(ivrLibaTemplatetargetAssort);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎鎸囨爣妯℃澘鍒嗙被
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatetargetAssortByIds(Long[] ids) {
-        return ivrLibaTemplatetargetAssortMapper.deleteIvrLibaTemplatetargetAssortByIds(ids);
-    }
-
-    /**
-     * 鍒犻櫎鎸囨爣妯℃澘鍒嗙被淇℃伅
-     *
-     * @param id 鎸囨爣妯℃澘鍒嗙被涓婚敭
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatetargetAssortById(Long id) {
-        return ivrLibaTemplatetargetAssortMapper.deleteIvrLibaTemplatetargetAssortById(id);
-    }
-}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetServiceImpl.java
deleted file mode 100644
index 410dacb..0000000
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplatetargetServiceImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-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.IvrLibaTemplatetargetMapper;
-import com.smartor.domain.IvrLibaTemplatetarget;
-import com.smartor.service.IIvrLibaTemplatetargetService;
-
-/**
- * 璇濇湳妯℃澘搴撹瘽鏈寚鏍嘢ervice涓氬姟灞傚鐞�
- * 
- * @author smartor
- * @date 2023-03-22
- */
-@Service
-public class IvrLibaTemplatetargetServiceImpl implements IIvrLibaTemplatetargetService 
-{
-    @Autowired
-    private IvrLibaTemplatetargetMapper ivrLibaTemplatetargetMapper;
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    @Override
-    public IvrLibaTemplatetarget selectIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID)
-    {
-        return ivrLibaTemplatetargetMapper.selectIvrLibaTemplatetargetByTemplateTargetID(templateTargetID);
-    }
-
-    /**
-     * 鏌ヨ璇濇湳妯℃澘搴撹瘽鏈寚鏍囧垪琛�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     */
-    @Override
-    public List<IvrLibaTemplatetarget> selectIvrLibaTemplatetargetList(IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        return ivrLibaTemplatetargetMapper.selectIvrLibaTemplatetargetList(ivrLibaTemplatetarget);
-    }
-
-    /**
-     * 鏂板璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        ivrLibaTemplatetarget.setCreateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatetargetMapper.insertIvrLibaTemplatetarget(ivrLibaTemplatetarget);
-    }
-
-    /**
-     * 淇敼璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param ivrLibaTemplatetarget 璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateIvrLibaTemplatetarget(IvrLibaTemplatetarget ivrLibaTemplatetarget)
-    {
-        ivrLibaTemplatetarget.setUpdateTime(DateUtils.getNowDate());
-        return ivrLibaTemplatetargetMapper.updateIvrLibaTemplatetarget(ivrLibaTemplatetarget);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍�
-     * 
-     * @param templateTargetIDs 闇�瑕佸垹闄ょ殑璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatetargetByTemplateTargetIDs(String[] templateTargetIDs)
-    {
-        return ivrLibaTemplatetargetMapper.deleteIvrLibaTemplatetargetByTemplateTargetIDs(templateTargetIDs);
-    }
-
-    /**
-     * 鍒犻櫎璇濇湳妯℃澘搴撹瘽鏈寚鏍囦俊鎭�
-     * 
-     * @param templateTargetID 璇濇湳妯℃澘搴撹瘽鏈寚鏍囦富閿�
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteIvrLibaTemplatetargetByTemplateTargetID(String templateTargetID)
-    {
-        return ivrLibaTemplatetargetMapper.deleteIvrLibaTemplatetargetByTemplateTargetID(templateTargetID);
-    }
-}
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java
index d67c134..5088e4d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyCategoryServiceImpl.java
@@ -1,96 +1,143 @@
 package com.smartor.service.impl;
 
-import java.util.List;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.IvrLibaScriptAssort;
+import com.smartor.domain.IvrLibaScriptAssortVO;
+import com.smartor.domain.SvyCategory;
+import com.smartor.domain.SvyCategoryVO;
+import com.smartor.mapper.SvyCategoryMapper;
+import com.smartor.service.ISvyCategoryService;
+import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.SvyCategoryMapper;
-import com.smartor.domain.SvyCategory;
-import com.smartor.service.ISvyCategoryService;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 闂嵎鍒嗙被Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2023-03-02
  */
+@Slf4j
 @Service
-public class SvyCategoryServiceImpl implements ISvyCategoryService 
-{
+public class SvyCategoryServiceImpl implements ISvyCategoryService {
     @Autowired
     private SvyCategoryMapper svyCategoryMapper;
 
     /**
      * 鏌ヨ闂嵎鍒嗙被
-     * 
-     * @param id 闂嵎鍒嗙被涓婚敭
+     *
+     * @param categoryname 闂嵎鍒嗙被涓婚敭
      * @return 闂嵎鍒嗙被
      */
     @Override
-    public List<SvyCategory> selectSvyCategoryById(String categoryname)
-    {
+    public List<SvyCategory> selectSvyCategoryById(String categoryname) {
         return svyCategoryMapper.selectSvyCategoryById(categoryname);
     }
 
     /**
      * 鏌ヨ闂嵎鍒嗙被鍒楄〃
-     * 
+     *
      * @param svyCategory 闂嵎鍒嗙被
      * @return 闂嵎鍒嗙被
      */
     @Override
-    public List<SvyCategory> selectSvyCategoryList(SvyCategory svyCategory)
-    {
-        return svyCategoryMapper.selectSvyCategoryList(svyCategory);
+    public List<SvyCategoryVO> selectSvyCategoryList(SvyCategory svyCategory) {
+        List<SvyCategory> svyCategories = svyCategoryMapper.selectSvyCategoryList(svyCategory);
+        //灏唒id涓虹┖鐨勶紝杩囨护鎺�
+        svyCategories = svyCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
+
+        List<SvyCategoryVO> svyCategoryVOS = DtoConversionUtils.sourceToTarget(svyCategories, SvyCategoryVO.class);
+        //閬嶅巻鏌ュ嚭鏉ョ殑鏁版嵁锛岄�氳繃 id=pid 鑾峰彇浠栦滑鐨勫瓙鏁版嵁
+        for (SvyCategoryVO svyCategoryVO : svyCategoryVOS) {
+            if (svyCategoryVO.getPid() != null) {
+                continue;
+            }
+            SvyCategory svyCategory1 = new SvyCategory();
+            svyCategory1.setPid(svyCategoryVO.getId());
+            List<SvyCategory> svyCategoryList = svyCategoryMapper.selectSvyCategoryList(svyCategory1);
+            if (!Collections.isEmpty(svyCategoryList)) {
+                svyCategoryVO.setSvyCategoryList(svyCategoryList);
+            }
+        }
+        return svyCategoryVOS;
     }
 
     /**
      * 鏂板闂嵎鍒嗙被
-     * 
+     *
      * @param svyCategory 闂嵎鍒嗙被
      * @return 缁撴灉
      */
     @Override
-    public int insertSvyCategory(SvyCategory svyCategory)
-    {
+    public int insertSvyCategory(SvyCategory svyCategory) {
         svyCategory.setCreateTime(DateUtils.getNowDate());
         return svyCategoryMapper.insertSvyCategory(svyCategory);
     }
 
+    @Override
+    public int insertSvyCategoryTree(SvyCategoryVO svyCategoryVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(svyCategoryVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        SvyCategory svyCategory = DtoConversionUtils.sourceToTarget(svyCategoryVO, SvyCategory.class);
+        i = svyCategoryMapper.insertSvyCategory(svyCategory);
+        log.info("闂璇濇湳鍒嗙被搴撲竴绾ф爲鐨勪富閿�:{}", svyCategory.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(svyCategoryVO.getSvyCategoryList())) {
+            for (SvyCategory svyCategory1 : svyCategoryVO.getSvyCategoryList()) {
+                svyCategory1.setPid(svyCategory.getId());
+                svyCategoryMapper.insertSvyCategory(svyCategory1);
+            }
+        }
+        return i;
+    }
+
     /**
      * 淇敼闂嵎鍒嗙被
-     * 
+     *
      * @param svyCategory 闂嵎鍒嗙被
      * @return 缁撴灉
      */
     @Override
-    public int updateSvyCategory(SvyCategory svyCategory)
-    {
+    public int updateSvyCategory(SvyCategory svyCategory) {
         svyCategory.setUpdateTime(DateUtils.getNowDate());
         return svyCategoryMapper.updateSvyCategory(svyCategory);
     }
 
     /**
      * 鎵归噺鍒犻櫎闂嵎鍒嗙被
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑闂嵎鍒嗙被涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteSvyCategoryByIds(Long[] ids)
-    {
-        return svyCategoryMapper.deleteSvyCategoryByIds(ids);
+    public int deleteSvyCategoryByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = svyCategoryMapper.deleteSvyCategoryById(id);
+        }
+
+        return i;
     }
 
     /**
      * 鍒犻櫎闂嵎鍒嗙被淇℃伅
-     * 
+     *
      * @param id 闂嵎鍒嗙被涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteSvyCategoryById(Long id)
-    {
+    public int deleteSvyCategoryById(Long id) {
         return svyCategoryMapper.deleteSvyCategoryById(id);
     }
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleCategoryServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleCategoryServiceImpl.java
new file mode 100644
index 0000000..24175f3
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleCategoryServiceImpl.java
@@ -0,0 +1,153 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.SvyLibTitleCategory;
+import com.smartor.domain.SvyLibTitleCategoryVO;
+import com.smartor.mapper.SvyLibTitleCategoryMapper;
+import com.smartor.service.ISvyLibTitleCategoryService;
+import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 闂嵎妯℃澘鍒嗙被Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Slf4j
+@Service
+public class SvyLibTitleCategoryServiceImpl implements ISvyLibTitleCategoryService {
+    @Autowired
+    private SvyLibTitleCategoryMapper svyLibTitleCategoryMapper;
+
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被
+     *
+     * @param id 闂嵎妯℃澘鍒嗙被涓婚敭
+     * @return 闂嵎妯℃澘鍒嗙被
+     */
+    @Override
+    public SvyLibTitleCategory selectSvyLibTitleCategoryById(Long id) {
+        return svyLibTitleCategoryMapper.selectSvyLibTitleCategoryById(id);
+    }
+
+    /**
+     * 鏌ヨ闂嵎妯℃澘鍒嗙被鍒楄〃
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 闂嵎妯℃澘鍒嗙被
+     */
+    @Override
+    public List<SvyLibTitleCategoryVO> selectSvyLibTitleCategoryList(SvyLibTitleCategory svyLibTitleCategory) {
+        List<SvyLibTitleCategory> svyLibTitleCategories = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory);
+        //灏唒id涓虹┖鐨勶紝杩囨护鎺�
+        svyLibTitleCategories = svyLibTitleCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
+
+        List<SvyLibTitleCategoryVO> svyLibTitleCategoryVOList = DtoConversionUtils.sourceToTarget(svyLibTitleCategories, SvyLibTitleCategoryVO.class);
+        //閬嶅巻鏌ュ嚭鏉ョ殑鏁版嵁锛岄�氳繃 id=pid 鑾峰彇浠栦滑鐨勫瓙鏁版嵁
+        for (SvyLibTitleCategoryVO svyLibTitleCategoryVO : svyLibTitleCategoryVOList) {
+            if (svyLibTitleCategoryVO.getPid() != null) {
+                continue;
+            }
+            SvyLibTitleCategory svyLibTitleCategory1 = new SvyLibTitleCategory();
+            svyLibTitleCategory1.setPid(svyLibTitleCategoryVO.getId());
+            List<SvyLibTitleCategory> svyLibTitleCategoryList = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory1);
+            if (!Collections.isEmpty(svyLibTitleCategoryList)) {
+                svyLibTitleCategoryVO.setSvyLibTitleCategoryList(svyLibTitleCategoryList);
+            }
+        }
+        return svyLibTitleCategoryVOList;
+    }
+
+    /**
+     * 鏂板闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory) {
+        svyLibTitleCategory.setCreateTime(DateUtils.getNowDate());
+        return svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory);
+    }
+
+    /**
+     * 淇敼闂嵎妯℃澘鍒嗙被
+     *
+     * @param svyLibTitleCategory 闂嵎妯℃澘鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateSvyLibTitleCategory(SvyLibTitleCategory svyLibTitleCategory) {
+        svyLibTitleCategory.setUpdateTime(DateUtils.getNowDate());
+        return svyLibTitleCategoryMapper.updateSvyLibTitleCategory(svyLibTitleCategory);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎妯℃澘鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闂嵎妯℃澘鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSvyLibTitleCategoryByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = svyLibTitleCategoryMapper.deleteSvyLibTitleCategoryById(id);
+            SvyLibTitleCategory svyLibTitleCategory = new SvyLibTitleCategory();
+            svyLibTitleCategory.setPid(id);
+
+            //鏀惧埌鏈垎閰嶄笅闈�
+            List<SvyLibTitleCategory> svyLibTitleCategoryList = svyLibTitleCategoryMapper.selectSvyLibTitleCategoryList(svyLibTitleCategory);
+            if (CollectionUtils.isNotEmpty(svyLibTitleCategoryList)) {
+                for (SvyLibTitleCategory svyLibTitleCategory1 : svyLibTitleCategoryList) {
+                    svyLibTitleCategory1.setPid(999999999L);
+                    svyLibTitleCategoryMapper.updateSvyLibTitleCategory(svyLibTitleCategory1);
+                }
+            }
+        }
+        return i;
+    }
+
+    @Override
+    public int insertSvyLibTitleCategoryTree(SvyLibTitleCategoryVO svyLibTitleCategoryVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(svyLibTitleCategoryVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        Integer seqMax = svyLibTitleCategoryMapper.selectSeqMax();
+        SvyLibTitleCategory svyLibTitleCategory = DtoConversionUtils.sourceToTarget(svyLibTitleCategoryVO, SvyLibTitleCategory.class);
+        svyLibTitleCategory.setSeqno(1);
+        if (seqMax != null) {
+            svyLibTitleCategory.setSeqno(seqMax + 1);
+        }
+
+        i = svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory);
+        log.info("闂璇濇湳鍒嗙被搴撲竴绾ф爲鐨勪富閿�:{}", svyLibTitleCategory.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(svyLibTitleCategoryVO.getSvyLibTitleCategoryList())) {
+            for (SvyLibTitleCategory svyLibTitleCategory1 : svyLibTitleCategoryVO.getSvyLibTitleCategoryList()) {
+                Integer seqMax1 = svyLibTitleCategoryMapper.selectSeqMax();
+                svyLibTitleCategory1.setPid(svyLibTitleCategory.getId());
+                svyLibTitleCategory1.setSeqno(1);
+                if (seqMax1 != null) {
+                    svyLibTitleCategory1.setSeqno(seqMax1 + 1);
+                }
+                svyLibTitleCategoryMapper.insertSvyLibTitleCategory(svyLibTitleCategory1);
+            }
+        }
+        return i;
+    }
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java
index 03b1226..a0e587a 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTitleServiceImpl.java
@@ -6,14 +6,13 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.smartor.domain.*;
-import com.smartor.mapper.Icd10AssociationMapper;
-import com.smartor.mapper.SvyLibTopicMapper;
-import com.smartor.mapper.SvyTopicoptionMapper;
+import com.smartor.mapper.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.SvyLibTitleMapper;
 import com.smartor.service.ISvyLibTitleService;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -23,6 +22,7 @@
  * @author ruoyi
  * @date 2023-03-02
  */
+@Slf4j
 @Service
 public class SvyLibTitleServiceImpl implements ISvyLibTitleService {
     @Autowired
@@ -32,7 +32,7 @@
     @Autowired
     private SvyLibTopicMapper svyLibTopicMapper;
     @Autowired
-    private SvyTopicoptionMapper svyTopicoptionMapper;
+    private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
 
     /**
      * 鏌ヨ闂嵎
@@ -62,15 +62,16 @@
             //鑾峰彇棰樼洰閫夐」
             a:
             for (int j = 0; j < svyLibTopics.size(); j++) {
-                if (svyLibTopics.get(j).getTopictype() == 3) {
+                log.info("闂id涓猴細{}", svyLibTopics.get(j).getSvyTopicId());
+                if (svyLibTopics.get(j).getTopictype() != null && svyLibTopics.get(j).getTopictype() == 3 || svyLibTopics.get(j).getSvyTopicId() == null) {
                     //浣滅瓟棰橈紝涓嶉渶瑕侀�夐」
                     continue a;
                 } else {
-                    SvyTopicoption svyTopicoption = new SvyTopicoption();
-                    svyTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
-                    List<SvyTopicoption> svyTopicoptions = svyTopicoptionMapper.selectSvyTopicoptionList(svyTopicoption);
+                    SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
+                    svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
+                    List<SvyLibTopicoption> svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibTopicoptionList(svyLibTopicoption);
                     //灏嗘煡璇㈠嚭鐨勯�夐」鐩斁鍒伴鐩腑
-                    svyLibTopics.get(j).setSvyTopicoptions(svyTopicoptions);
+                    svyLibTopics.get(j).setSvyLibTopicoptions(svyLibTopicoptions);
                 }
             }
             //灏嗛鐩斁鍒伴棶鍗峰垪琛ㄤ腑
@@ -124,6 +125,61 @@
     }
 
     /**
+     * 鏂板鎴栦慨鏀归棶鍗锋ā鏉夸俊鎭�
+     *
+     * @param svyLibTitle
+     * @return
+     */
+    @Override
+    public Integer saveOrUpdateTitle(SvyLibTitle svyLibTitle) {
+        Integer i = null;
+        if (svyLibTitle.getIsoperation() != null && svyLibTitle.getIsoperation() == 1) {
+            //鏂板
+            svyLibTitle.setCreateTime(DateUtils.getNowDate());
+            i = svyLibTitleMapper.insertSvyLibTitle(svyLibTitle);
+        } else if (svyLibTitle.getIsoperation() != null && svyLibTitle.getIsoperation() == 2) {
+            //淇敼
+            svyLibTitle.setUpdateTime(DateUtils.getNowDate());
+            i = svyLibTitleMapper.updateSvyLibTitle(svyLibTitle);
+        }
+
+        //澶勭悊棰樼洰
+        if (CollectionUtils.isNotEmpty(svyLibTitle.getSvyLibTopics())) {
+            for (SvyLibTopic svyLibTopic : svyLibTitle.getSvyLibTopics()) {
+                //瀵归鐩繘琛屽鐞�
+                if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) {
+                    //鏂板
+                    svyLibTopic.setSvyid(svyLibTitle.getSvyid());
+                    //棰樼洰鐨勯�夐」鐩紝鐩存帴鐢╯vy_topicoption琛紝鐢╯vyTopicid鍘诲叧鑱�
+                    svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
+                } else if (svyLibTitle.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) {
+                    //淇敼
+                    svyLibTopic.setSvyid(svyLibTitle.getSvyid());
+                    svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
+                }
+
+                //瀵归鐩�夐」杩涜澶勭悊
+                if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibTopicoptions())) {
+                    for (SvyLibTopicoption svyLibTopicoption : svyLibTopic.getSvyLibTopicoptions()) {
+                        if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) {
+                            //鏂板
+                            svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
+                            svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
+                        } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) {
+                            //淇敼
+                            svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
+                            svyLibTopicoptionMapper.updateSvyLibTopicoption(svyLibTopicoption);
+                        }
+                    }
+
+                }
+
+            }
+        }
+        return i;
+    }
+
+    /**
      * 淇敼闂嵎
      *
      * @param svyLibTitle 闂嵎
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicCategoryServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicCategoryServiceImpl.java
new file mode 100644
index 0000000..d2792f8
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicCategoryServiceImpl.java
@@ -0,0 +1,159 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.smartor.domain.SvyLibTopicCategory;
+import com.smartor.domain.SvyLibTopicCategoryVO;
+import com.smartor.mapper.SvyLibTopicCategoryMapper;
+import com.smartor.service.ISvyLibTopicCategoryService;
+import io.jsonwebtoken.lang.Collections;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 闂嵎棰樼洰鍒嗙被Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2023-12-27
+ */
+@Slf4j
+@Service
+public class SvyLibTopicCategoryServiceImpl implements ISvyLibTopicCategoryService {
+    @Autowired
+    private SvyLibTopicCategoryMapper svyLibTopicCategoryMapper;
+
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 闂嵎棰樼洰鍒嗙被
+     */
+    @Override
+    public SvyLibTopicCategory selectSvyLibTopicCategoryById(Long id) {
+        return svyLibTopicCategoryMapper.selectSvyLibTopicCategoryById(id);
+    }
+
+    /**
+     * 鏌ヨ闂嵎棰樼洰鍒嗙被鍒楄〃
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 闂嵎棰樼洰鍒嗙被
+     */
+    @Override
+    public List<SvyLibTopicCategoryVO> selectSvyLibTopicCategoryList(SvyLibTopicCategory svyLibTopicCategory) {
+        List<SvyLibTopicCategory> svyLibTopicCategories = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory);
+        //灏唒id涓虹┖鐨勶紝杩囨护鎺�
+        svyLibTopicCategories = svyLibTopicCategories.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
+
+        List<SvyLibTopicCategoryVO> SvyLibTopicCategoryVO = DtoConversionUtils.sourceToTarget(svyLibTopicCategories, SvyLibTopicCategoryVO.class);
+        //閬嶅巻鏌ュ嚭鏉ョ殑鏁版嵁锛岄�氳繃 id=pid 鑾峰彇浠栦滑鐨勫瓙鏁版嵁
+        for (SvyLibTopicCategoryVO svyLibTopicCategoryVO : SvyLibTopicCategoryVO) {
+            if (svyLibTopicCategoryVO.getPid() != null) {
+                continue;
+            }
+            SvyLibTopicCategory svyLibTopicCategory1 = new SvyLibTopicCategory();
+            svyLibTopicCategory1.setPid(svyLibTopicCategoryVO.getId());
+            List<SvyLibTopicCategory> svyLibTopicCategories1 = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory1);
+            if (!Collections.isEmpty(svyLibTopicCategories1)) {
+                svyLibTopicCategoryVO.setSvyLibTopicCategoryList(svyLibTopicCategories1);
+            }
+        }
+        return SvyLibTopicCategoryVO;
+    }
+
+    /**
+     * 鏂板闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory) {
+        svyLibTopicCategory.setCreateTime(DateUtils.getNowDate());
+        return svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory);
+    }
+
+    /**
+     * 淇敼闂嵎棰樼洰鍒嗙被
+     *
+     * @param svyLibTopicCategory 闂嵎棰樼洰鍒嗙被
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateSvyLibTopicCategory(SvyLibTopicCategory svyLibTopicCategory) {
+        svyLibTopicCategory.setUpdateTime(DateUtils.getNowDate());
+        return svyLibTopicCategoryMapper.updateSvyLibTopicCategory(svyLibTopicCategory);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎闂嵎棰樼洰鍒嗙被
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSvyLibTopicCategoryByIds(Long[] ids) {
+        Integer i = null;
+        for (Long id : ids) {
+            i = svyLibTopicCategoryMapper.deleteSvyLibTopicCategoryById(id);
+            SvyLibTopicCategory svyLibTopicCategory = new SvyLibTopicCategory();
+            svyLibTopicCategory.setPid(id);
+            List<SvyLibTopicCategory> svyLibTopicCategories = svyLibTopicCategoryMapper.selectSvyLibTopicCategoryList(svyLibTopicCategory);
+            if (CollectionUtils.isNotEmpty(svyLibTopicCategories)) {
+                for (SvyLibTopicCategory svyLibTopicCategory1 : svyLibTopicCategories) {
+                    svyLibTopicCategory1.setPid(999999999L);
+                    svyLibTopicCategoryMapper.updateSvyLibTopicCategory(svyLibTopicCategory1);
+                }
+            }
+        }
+        return i;
+    }
+
+    @Override
+    public int insertSvyLibTopicCategoryTree(SvyLibTopicCategoryVO svyLibTopicCategoryVO) {
+        Integer i = null;
+        if (ObjectUtils.isEmpty(svyLibTopicCategoryVO)) {
+            throw new BaseException("鍏ュ弬涓虹┖,璇锋鏌ュ悗,鍐嶆柊澧�");
+        }
+        Integer seqMax = svyLibTopicCategoryMapper.selectSeqMax();
+        SvyLibTopicCategory svyLibTopicCategory = DtoConversionUtils.sourceToTarget(svyLibTopicCategoryVO, SvyLibTopicCategory.class);
+        svyLibTopicCategory.setSeqno(1);
+        if (seqMax != null) {
+            svyLibTopicCategory.setSeqno(seqMax + 1);
+        }
+        i = svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory);
+        log.info("闂璇濇湳鍒嗙被搴撲竴绾ф爲鐨勪富閿�:{}", svyLibTopicCategory.getId());
+
+        //鏂板浜岀骇鏍�
+        if (CollectionUtils.isNotEmpty(svyLibTopicCategoryVO.getSvyLibTopicCategoryList())) {
+            for (SvyLibTopicCategory svyLibTopicCategory1 : svyLibTopicCategoryVO.getSvyLibTopicCategoryList()) {
+                Integer seqMax1 = svyLibTopicCategoryMapper.selectSeqMax();
+                svyLibTopicCategory1.setPid(svyLibTopicCategory.getId());
+                svyLibTopicCategory1.setSeqno(1);
+                if (seqMax1 != null) {
+                    svyLibTopicCategory1.setSeqno(seqMax1 + 1);
+                }
+                svyLibTopicCategoryMapper.insertSvyLibTopicCategory(svyLibTopicCategory1);
+            }
+        }
+        return i;
+    }
+
+    /**
+     * 鍒犻櫎闂嵎棰樼洰鍒嗙被淇℃伅
+     *
+     * @param id 闂嵎棰樼洰鍒嗙被涓婚敭
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSvyLibTopicCategoryById(Long id) {
+        return svyLibTopicCategoryMapper.deleteSvyLibTopicCategoryById(id);
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java
index 655070d..a9a328e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTopicServiceImpl.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.SvyLibTopicoptionMapper;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.catalina.User;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -16,6 +17,7 @@
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.smartor.mapper.SvyLibTopicMapper;
@@ -29,13 +31,14 @@
  * @author ruoyi
  * @date 2023-03-03
  */
+@Slf4j
 @Service
 public class SvyLibTopicServiceImpl implements ISvyLibTopicService {
     @Autowired
     private SvyLibTopicMapper svyLibTopicMapper;
 
-//    @Autowired
-//    private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
+    @Autowired
+    private SvyLibTopicoptionMapper svyLibTopicoptionMapper;
 
     /**
      * 鏌ヨ闂嵎棰樼洰
@@ -56,7 +59,25 @@
      */
     @Override
     public List<SvyLibTopic> selectSvyLibTopicList(SvyLibTopic svyLibTopic) {
-        return svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
+        //娣诲姞棰樼洰
+
+        List<SvyLibTopic> svyLibTopics = svyLibTopicMapper.selectSvyLibTopicList(svyLibTopic);
+        //鑾峰彇棰樼洰閫夐」
+
+        for (int j = 0; j < svyLibTopics.size(); j++) {
+            log.info("闂id涓猴細{}", svyLibTopics.get(j).getSvyTopicId());
+            if (svyLibTopics.get(j).getTopictype() != null && svyLibTopics.get(j).getTopictype() == 3 || svyLibTopics.get(j).getSvyTopicId() == null) {
+                //浣滅瓟棰橈紝涓嶉渶瑕侀�夐」
+                continue;
+            } else {
+                SvyLibTopicoption svyLibTopicoption = new SvyLibTopicoption();
+                svyLibTopicoption.setTopicid(svyLibTopics.get(j).getSvyTopicId());
+                List<SvyLibTopicoption> svyLibTopicoptions = svyLibTopicoptionMapper.selectSvyLibTopicoptionList(svyLibTopicoption);
+                //灏嗘煡璇㈠嚭鐨勯�夐」鐩斁鍒伴鐩腑
+                svyLibTopics.get(j).setSvyLibTopicoptions(svyLibTopicoptions);
+            }
+        }
+        return svyLibTopics;
     }
 
     /**
@@ -71,6 +92,36 @@
         return svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
     }
 
+    @Override
+    public Integer saveOrUpdateTopic(SvyLibTopic svyLibTopic) {
+        Integer i = null;
+
+        //瀵归鐩繘琛屽鐞�
+        if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 1) {
+            //鏂板
+            i = svyLibTopicMapper.insertSvyLibTopic(svyLibTopic);
+        } else if (svyLibTopic.getIsoperation() != null && svyLibTopic.getIsoperation() == 2) {
+            //淇敼
+            i = svyLibTopicMapper.updateSvyLibTopic(svyLibTopic);
+        }
+
+        //瀵归鐩�夐」杩涜澶勭悊
+        if (CollectionUtils.isNotEmpty(svyLibTopic.getSvyLibTopicoptions())) {
+            for (SvyLibTopicoption svyLibTopicoption : svyLibTopic.getSvyLibTopicoptions()) {
+                if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 1) {
+                    //鏂板
+                    svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
+                    svyLibTopicoptionMapper.insertSvyLibTopicoption(svyLibTopicoption);
+                } else if (svyLibTopicoption.getIsoperation() != null && svyLibTopicoption.getIsoperation() == 2) {
+                    //淇敼
+                    svyLibTopicoption.setTopicid(svyLibTopic.getTopicid());
+                    svyLibTopicoptionMapper.updateSvyLibTopicoption(svyLibTopicoption);
+                }
+            }
+        }
+        return i;
+    }
+
     /**
      * 淇敼闂嵎棰樼洰
      *
diff --git a/smartor/src/main/resources/mapper/smartor/HeLibraryAssortMapper.xml b/smartor/src/main/resources/mapper/smartor/HeLibraryAssortMapper.xml
new file mode 100644
index 0000000..06297d0
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/HeLibraryAssortMapper.xml
@@ -0,0 +1,132 @@
+<?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.HeLibraryAssortMapper">
+
+    <resultMap type="com.smartor.domain.HeLibraryAssort" id="HeLibraryAssortResult">
+        <result property="id" column="id"/>
+        <result property="assortname" column="assortname"/>
+        <result property="orgid" column="orgid"/>
+        <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="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="seqno" column="seqno"/>
+    </resultMap>
+
+    <sql id="selectHeLibraryAssortVo">
+        select id,
+               assortname,
+               orgid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               pid,
+               guid,
+               seqno
+        from he_library_assort
+    </sql>
+
+    <select id="selectHeLibraryAssortList" parameterType="com.smartor.domain.HeLibraryAssort"
+            resultMap="HeLibraryAssortResult">
+        <include refid="selectHeLibraryAssortVo"/>
+        <where>
+            <if test="assortname != null  and assortname != ''">and assortname like concat('%', #{assortname}, '%')</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="seqno != null  ">and seqno = #{seqno}</if>
+            and del_flag != 1
+        </where>
+        order by seqno asc
+    </select>
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from he_library_assort
+
+    </select>
+
+    <select id="selectHeLibraryAssortById" parameterType="Long" resultMap="HeLibraryAssortResult">
+        <include refid="selectHeLibraryAssortVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertHeLibraryAssort" parameterType="com.smartor.domain.HeLibraryAssort" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into he_library_assort
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="assortname != null">assortname,</if>
+            <if test="orgid != null">orgid,</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="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="seqno != null">seqno,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="assortname != null">#{assortname},</if>
+            <if test="orgid != null">#{orgid},</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="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="seqno != null">#{seqno},</if>
+        </trim>
+    </insert>
+
+    <update id="updateHeLibraryAssort" parameterType="com.smartor.domain.HeLibraryAssort">
+        update he_library_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="assortname != null">assortname = #{assortname},</if>
+            <if test="orgid != null">orgid = #{orgid},</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="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteHeLibraryAssortById" parameterType="Long">
+        update he_library_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteHeLibraryAssortByIds" parameterType="String">
+        delete from he_library_assort where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/HeLibraryMapper.xml b/smartor/src/main/resources/mapper/smartor/HeLibraryMapper.xml
new file mode 100644
index 0000000..47fb714
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/HeLibraryMapper.xml
@@ -0,0 +1,182 @@
+<?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.HeLibraryMapper">
+    
+    <resultMap type="com.smartor.domain.HeLibrary" id="HeLibraryResult">
+        <result property="id"    column="id"    />
+        <result property="classification"    column="classification"    />
+        <result property="assortid"    column="assortid"    />
+        <result property="preachname"    column="preachname"    />
+        <result property="version"    column="version"    />
+        <result property="preachform"    column="preachform"    />
+        <result property="preachdescription"    column="preachdescription"    />
+        <result property="preachcontent"    column="preachcontent"    />
+        <result property="templateid"    column="templateid"    />
+        <result property="preachcode"    column="preachcode"    />
+        <result property="centerlibraryid"    column="centerlibraryid"    />
+        <result property="isenable"    column="isenable"    />
+        <result property="orgid"    column="orgid"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="delFlag"    column="del_flag"    />
+        <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="islocal"    column="islocal"    />
+        <result property="centerlibrarycode"    column="centerlibrarycode"    />
+        <result property="pid"    column="pid"    />
+        <result property="guid"    column="guid"    />
+        <result property="parameter"    column="parameter"    />
+        <result property="isavailable"    column="isavailable"    />
+        <result property="suitdisease"    column="suitdisease"    />
+        <result property="suitway"    column="suitway"    />
+    </resultMap>
+
+    <sql id="selectHeLibraryVo">
+        select id, classification, assortid, preachname, version, preachform, preachdescription, preachcontent, templateid, preachcode, centerlibraryid, isenable, orgid, update_by, update_time, del_flag, create_by, create_time, isupload, upload_time, islocal, centerlibrarycode, pid, guid, parameter, isavailable, suitdisease, suitway from he_library
+    </sql>
+
+    <select id="selectHeLibraryList" parameterType="com.smartor.domain.HeLibrary" resultMap="HeLibraryResult">
+        <include refid="selectHeLibraryVo"/>
+        <where>  
+            <if test="id != null "> and id = #{id}</if>
+            <if test="classification != null  and classification != ''"> and classification = #{classification}</if>
+            <if test="assortid != null "> and assortid = #{assortid}</if>
+            <if test="preachname != null  and preachname != ''"> and preachname like concat('%', #{preachname}, '%')</if>
+            <if test="version != null "> and version = #{version}</if>
+            <if test="preachform != null "> and preachform = #{preachform}</if>
+            <if test="preachdescription != null  and preachdescription != ''"> and preachdescription = #{preachdescription}</if>
+            <if test="preachcontent != null  and preachcontent != ''"> and preachcontent = #{preachcontent}</if>
+            <if test="templateid != null "> and templateid = #{templateid}</if>
+            <if test="preachcode != null  and preachcode != ''"> and preachcode = #{preachcode}</if>
+            <if test="centerlibraryid != null "> and centerlibraryid = #{centerlibraryid}</if>
+            <if test="isenable != null "> and isenable = #{isenable}</if>
+            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+            <if test="isupload != null "> and isupload = #{isupload}</if>
+            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
+            <if test="islocal != null "> and islocal = #{islocal}</if>
+            <if test="centerlibrarycode != null  and centerlibrarycode != ''"> and centerlibrarycode = #{centerlibrarycode}</if>
+            <if test="pid != null "> and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''"> and guid = #{guid}</if>
+            <if test="parameter != null  and parameter != ''"> and parameter = #{parameter}</if>
+            <if test="isavailable != null  and isavailable != ''"> and isavailable = #{isavailable}</if>
+            <if test="suitdisease != null  and suitdisease != ''"> and suitdisease = #{suitdisease}</if>
+            <if test="suitway != null  and suitway != ''"> and suitway = #{suitway}</if>
+        </where>
+    </select>
+    
+    <select id="selectHeLibraryById" parameterType="Long" resultMap="HeLibraryResult">
+        <include refid="selectHeLibraryVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertHeLibrary" parameterType="com.smartor.domain.HeLibrary" useGeneratedKeys="true" keyProperty="id">
+        insert into he_library
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="classification != null">classification,</if>
+            <if test="assortid != null">assortid,</if>
+            <if test="preachname != null">preachname,</if>
+            <if test="version != null">version,</if>
+            <if test="preachform != null">preachform,</if>
+            <if test="preachdescription != null">preachdescription,</if>
+            <if test="preachcontent != null">preachcontent,</if>
+            <if test="templateid != null">templateid,</if>
+            <if test="preachcode != null">preachcode,</if>
+            <if test="centerlibraryid != null">centerlibraryid,</if>
+            <if test="isenable != null">isenable,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</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="islocal != null">islocal,</if>
+            <if test="centerlibrarycode != null">centerlibrarycode,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="parameter != null">parameter,</if>
+            <if test="isavailable != null">isavailable,</if>
+            <if test="suitdisease != null">suitdisease,</if>
+            <if test="suitway != null">suitway,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="classification != null">#{classification},</if>
+            <if test="assortid != null">#{assortid},</if>
+            <if test="preachname != null">#{preachname},</if>
+            <if test="version != null">#{version},</if>
+            <if test="preachform != null">#{preachform},</if>
+            <if test="preachdescription != null">#{preachdescription},</if>
+            <if test="preachcontent != null">#{preachcontent},</if>
+            <if test="templateid != null">#{templateid},</if>
+            <if test="preachcode != null">#{preachcode},</if>
+            <if test="centerlibraryid != null">#{centerlibraryid},</if>
+            <if test="isenable != null">#{isenable},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</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="islocal != null">#{islocal},</if>
+            <if test="centerlibrarycode != null">#{centerlibrarycode},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="parameter != null">#{parameter},</if>
+            <if test="isavailable != null">#{isavailable},</if>
+            <if test="suitdisease != null">#{suitdisease},</if>
+            <if test="suitway != null">#{suitway},</if>
+         </trim>
+    </insert>
+
+    <update id="updateHeLibrary" parameterType="com.smartor.domain.HeLibrary">
+        update he_library
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="classification != null">classification = #{classification},</if>
+            <if test="assortid != null">assortid = #{assortid},</if>
+            <if test="preachname != null">preachname = #{preachname},</if>
+            <if test="version != null">version = #{version},</if>
+            <if test="preachform != null">preachform = #{preachform},</if>
+            <if test="preachdescription != null">preachdescription = #{preachdescription},</if>
+            <if test="preachcontent != null">preachcontent = #{preachcontent},</if>
+            <if test="templateid != null">templateid = #{templateid},</if>
+            <if test="preachcode != null">preachcode = #{preachcode},</if>
+            <if test="centerlibraryid != null">centerlibraryid = #{centerlibraryid},</if>
+            <if test="isenable != null">isenable = #{isenable},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</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="islocal != null">islocal = #{islocal},</if>
+            <if test="centerlibrarycode != null">centerlibrarycode = #{centerlibrarycode},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="parameter != null">parameter = #{parameter},</if>
+            <if test="isavailable != null">isavailable = #{isavailable},</if>
+            <if test="suitdisease != null">suitdisease = #{suitdisease},</if>
+            <if test="suitway != null">suitway = #{suitway},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteHeLibraryById" parameterType="Long">
+        delete from he_library where id = #{id}
+    </delete>
+
+    <delete id="deleteHeLibraryByIds" parameterType="String">
+        delete from he_library where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/HeLibraryTagMapper.xml b/smartor/src/main/resources/mapper/smartor/HeLibraryTagMapper.xml
new file mode 100644
index 0000000..045ee1c
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/HeLibraryTagMapper.xml
@@ -0,0 +1,130 @@
+<?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.HeLibraryTagMapper">
+
+    <resultMap type="com.smartor.domain.HeLibraryTag" id="HeLibraryTagResult">
+        <result property="id" column="id"/>
+        <result property="tagcategoryid" column="tagcategoryid"/>
+        <result property="tagid" column="tagid"/>
+        <result property="orgid" column="orgid"/>
+        <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="heid" column="heid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+    </resultMap>
+
+    <sql id="selectHeLibraryTagVo">
+        select id,
+               tagcategoryid,
+               tagid,
+               orgid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               heid,
+               pid,
+               guid
+        from he_library_tag
+    </sql>
+
+    <select id="selectHeLibraryTagList" parameterType="com.smartor.domain.HeLibraryTag" resultMap="HeLibraryTagResult">
+        <include refid="selectHeLibraryTagVo"/>
+        <where>
+            <if test="tagcategoryid != null ">and tagcategoryid = #{tagcategoryid}</if>
+            <if test="tagid != null ">and tagid = #{tagid}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="heid != null ">and heid = #{heid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+        </where>
+    </select>
+
+    <select id="selectHeLibraryTagById" parameterType="Long" resultMap="HeLibraryTagResult">
+        <include refid="selectHeLibraryTagVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertHeLibraryTag" parameterType="com.smartor.domain.HeLibraryTag" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into he_library_tag
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="tagcategoryid != null">tagcategoryid,</if>
+            <if test="tagid != null">tagid,</if>
+            <if test="orgid != null">orgid,</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="heid != null">heid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="tagcategoryid != null">#{tagcategoryid},</if>
+            <if test="tagid != null">#{tagid},</if>
+            <if test="orgid != null">#{orgid},</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="heid != null">#{heid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateHeLibraryTag" parameterType="com.smartor.domain.HeLibraryTag">
+        update he_library_tag
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="tagcategoryid != null">tagcategoryid = #{tagcategoryid},</if>
+            <if test="tagid != null">tagid = #{tagid},</if>
+            <if test="orgid != null">orgid = #{orgid},</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="heid != null">heid = #{heid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteHeLibraryTagById" parameterType="Long">
+        update he_library_tag
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteHeLibraryTagByIds" parameterType="String">
+        delete from he_library_tag where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateCategoryMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateCategoryMapper.xml
new file mode 100644
index 0000000..553266c
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateCategoryMapper.xml
@@ -0,0 +1,136 @@
+<?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.IvrLibaExtemplateCategoryMapper">
+
+    <resultMap type="com.smartor.domain.IvrLibaExtemplateCategory" id="IvrLibaExtemplateCategoryResult">
+        <result property="intertcatid" column="intertcatid"/>
+        <result property="categoryname" column="categoryname"/>
+        <result property="orgid" column="orgid"/>
+        <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="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="seqno" column="seqno"/>
+    </resultMap>
+
+    <sql id="selectIvrLibaExtemplateCategoryVo">
+        select intertcatid,
+               categoryname,
+               orgid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               pid,
+               seqno,
+               guid
+        from ivr_liba_extemplate_category
+    </sql>
+
+    <select id="selectIvrLibaExtemplateCategoryList" parameterType="com.smartor.domain.IvrLibaExtemplateCategory"
+            resultMap="IvrLibaExtemplateCategoryResult">
+        <include refid="selectIvrLibaExtemplateCategoryVo"/>
+        <where>
+            <if test="categoryname != null  and categoryname != ''">and categoryname like concat('%', #{categoryname},
+                '%')
+            </if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="seqno != null ">and seqno = #{seqno}</if>
+            and del_flag = 0
+        </where>
+        order by seqno asc
+    </select>
+
+    <select id="selectIvrLibaExtemplateCategoryByIntertcatid" parameterType="Long"
+            resultMap="IvrLibaExtemplateCategoryResult">
+        <include refid="selectIvrLibaExtemplateCategoryVo"/>
+        where intertcatid = #{intertcatid} and del_flag = 0
+    </select>
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from ivr_liba_extemplate_category
+
+    </select>
+
+    <insert id="insertIvrLibaExtemplateCategory" parameterType="com.smartor.domain.IvrLibaExtemplateCategory"
+            useGeneratedKeys="true" keyProperty="intertcatid">
+        insert into ivr_liba_extemplate_category
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="categoryname != null">categoryname,</if>
+            <if test="orgid != null">orgid,</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="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="seqno != null">seqno,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="categoryname != null">#{categoryname},</if>
+            <if test="orgid != null">#{orgid},</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="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="seqno != null">#{seqno},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrLibaExtemplateCategory" parameterType="com.smartor.domain.IvrLibaExtemplateCategory">
+        update ivr_liba_extemplate_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="categoryname != null">categoryname = #{categoryname},</if>
+            <if test="orgid != null">orgid = #{orgid},</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="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
+        </trim>
+        where intertcatid = #{intertcatid}
+    </update>
+
+    <update id="deleteIvrLibaExtemplateCategoryByIntertcatid" parameterType="Long">
+        update ivr_liba_extemplate_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where intertcatid = #{intertcatid}
+    </update>
+
+    <delete id="deleteIvrLibaExtemplateCategoryByIntertcatids" parameterType="String">
+        delete from ivr_liba_extemplate_category where intertcatid in
+        <foreach item="intertcatid" collection="array" open="(" separator="," close=")">
+            #{intertcatid}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateMapper.xml
index b5c6cae..1942c87 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplateMapper.xml
@@ -1,76 +1,68 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.IvrLibaExtemplateMapper">
-    
-    <resultMap type="IvrLibaExtemplate" id="IvrLibaExtemplateResult">
-        <result property="subModuleID"    column="subModuleID"    />
-        <result property="subModuleName"    column="subModuleName"    />
-        <result property="language"    column="language"    />
-        <result property="note"    column="note"    />
-        <result property="version"    column="version"    />
-        <result property="isEnable"    column="isEnable"    />
-        <result property="isDel"    column="isDel"    />
-        <result property="addUserID"    column="addUserID"    />
-        <result property="addTime"    column="addTime"    />
-        <result property="modifyUserID"    column="modifyUserID"    />
-        <result property="modifyTime"    column="modifyTime"    />
-        <result property="GroupID"    column="GroupID"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="isupload"    column="isupload"    />
-        <result property="uploadTime"    column="upload_time"    />
-        <result property="orgid"    column="orgid"    />
+
+    <resultMap type="com.smartor.domain.IvrLibaExtemplate" id="IvrLibaExtemplateResult">
+        <result property="ID" column="ID"/>
+        <result property="extName" column="extName"/>
+        <result property="language" column="language"/>
+        <result property="note" column="note"/>
+        <result property="version" column="version"/>
+        <result property="isEnable" column="isEnable"/>
+        <result property="groupID" column="GroupID"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
     </resultMap>
 
     <sql id="selectIvrLibaExtemplateVo">
-        select subModuleID, subModuleName, language, note, version, isEnable, isDel, addUserID, addTime, modifyUserID, modifyTime, GroupID, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_liba_extemplate
+        select ID,
+               extName, language, note, version, isEnable, GroupID, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+        from ivr_liba_extemplate
     </sql>
 
-    <select id="selectIvrLibaExtemplateList" parameterType="IvrLibaExtemplate" resultMap="IvrLibaExtemplateResult">
+    <select id="selectIvrLibaExtemplateList" parameterType="com.smartor.domain.IvrLibaExtemplate"
+            resultMap="IvrLibaExtemplateResult">
         <include refid="selectIvrLibaExtemplateVo"/>
-        <where>  
-            <if test="subModuleName != null  and subModuleName != ''"> and subModuleName like concat('%', #{subModuleName}, '%')</if>
-            <if test="language != null  and language != ''"> and language = #{language}</if>
-            <if test="note != null  and note != ''"> and note = #{note}</if>
-            <if test="version != null "> and version = #{version}</if>
-            <if test="isEnable != null "> and isEnable = #{isEnable}</if>
-            <if test="isDel != null "> and isDel = #{isDel}</if>
-            <if test="addUserID != null  and addUserID != ''"> and addUserID = #{addUserID}</if>
-            <if test="addTime != null "> and addTime = #{addTime}</if>
-            <if test="modifyUserID != null  and modifyUserID != ''"> and modifyUserID = #{modifyUserID}</if>
-            <if test="modifyTime != null "> and modifyTime = #{modifyTime}</if>
-            <if test="GroupID != null "> and GroupID = #{GroupID}</if>
-            <if test="isupload != null "> and isupload = #{isupload}</if>
-            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
-            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+        <where>
+            <if test="extName != null  and extName != ''">and extName like concat('%', #{extName}, '%')</if>
+            <if test="language != null  and language != ''">and language = #{language}</if>
+            <if test="note != null  and note != ''">and note = #{note}</if>
+            <if test="version != null  and version != ''">and version = #{version}</if>
+            <if test="isEnable != null ">and isEnable = #{isEnable}</if>
+            <if test="groupID != null ">and GroupID = #{groupID}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
         </where>
     </select>
-    
-    <select id="selectIvrLibaExtemplateBySubModuleID" parameterType="String" resultMap="IvrLibaExtemplateResult">
+
+    <select id="selectIvrLibaExtemplateByID" parameterType="String" resultMap="IvrLibaExtemplateResult">
         <include refid="selectIvrLibaExtemplateVo"/>
-        where subModuleID = #{subModuleID}
+        where ID = #{ID}
     </select>
-        
-    <insert id="insertIvrLibaExtemplate" parameterType="IvrLibaExtemplate">
+
+    <insert id="insertIvrLibaExtemplate" parameterType="com.smartor.domain.IvrLibaExtemplate">
         insert into ivr_liba_extemplate
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="subModuleID != null">subModuleID,</if>
-            <if test="subModuleName != null and subModuleName != ''">subModuleName,</if>
+            <if test="ID != null">ID,</if>
+            <if test="extName != null and extName != ''">extName,</if>
             <if test="language != null and language != ''">language,</if>
             <if test="note != null">note,</if>
-            <if test="version != null">version,</if>
+            <if test="version != null and version != ''">version,</if>
             <if test="isEnable != null">isEnable,</if>
-            <if test="isDel != null">isDel,</if>
-            <if test="addUserID != null">addUserID,</if>
-            <if test="addTime != null">addTime,</if>
-            <if test="modifyUserID != null">modifyUserID,</if>
-            <if test="modifyTime != null">modifyTime,</if>
-            <if test="GroupID != null">GroupID,</if>
+            <if test="groupID != null">GroupID,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
@@ -79,20 +71,17 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
-         </trim>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="subModuleID != null">#{subModuleID},</if>
-            <if test="subModuleName != null and subModuleName != ''">#{subModuleName},</if>
+            <if test="ID != null">#{ID},</if>
+            <if test="extName != null and extName != ''">#{extName},</if>
             <if test="language != null and language != ''">#{language},</if>
             <if test="note != null">#{note},</if>
-            <if test="version != null">#{version},</if>
+            <if test="version != null and version != ''">#{version},</if>
             <if test="isEnable != null">#{isEnable},</if>
-            <if test="isDel != null">#{isDel},</if>
-            <if test="addUserID != null">#{addUserID},</if>
-            <if test="addTime != null">#{addTime},</if>
-            <if test="modifyUserID != null">#{modifyUserID},</if>
-            <if test="modifyTime != null">#{modifyTime},</if>
-            <if test="GroupID != null">#{GroupID},</if>
+            <if test="groupID != null">#{groupID},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
@@ -101,23 +90,20 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
-         </trim>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+        </trim>
     </insert>
 
-    <update id="updateIvrLibaExtemplate" parameterType="IvrLibaExtemplate">
+    <update id="updateIvrLibaExtemplate" parameterType="com.smartor.domain.IvrLibaExtemplate">
         update ivr_liba_extemplate
         <trim prefix="SET" suffixOverrides=",">
-            <if test="subModuleName != null and subModuleName != ''">subModuleName = #{subModuleName},</if>
+            <if test="extName != null and extName != ''">extName = #{extName},</if>
             <if test="language != null and language != ''">language = #{language},</if>
             <if test="note != null">note = #{note},</if>
-            <if test="version != null">version = #{version},</if>
+            <if test="version != null and version != ''">version = #{version},</if>
             <if test="isEnable != null">isEnable = #{isEnable},</if>
-            <if test="isDel != null">isDel = #{isDel},</if>
-            <if test="addUserID != null">addUserID = #{addUserID},</if>
-            <if test="addTime != null">addTime = #{addTime},</if>
-            <if test="modifyUserID != null">modifyUserID = #{modifyUserID},</if>
-            <if test="modifyTime != null">modifyTime = #{modifyTime},</if>
-            <if test="GroupID != null">GroupID = #{GroupID},</if>
+            <if test="groupID != null">GroupID = #{groupID},</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>
@@ -126,18 +112,22 @@
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
         </trim>
-        where subModuleID = #{subModuleID}
+        where ID = #{ID}
     </update>
 
-    <delete id="deleteIvrLibaExtemplateBySubModuleID" parameterType="String">
-        delete from ivr_liba_extemplate where subModuleID = #{subModuleID}
+    <delete id="deleteIvrLibaExtemplateByID" parameterType="String">
+        delete
+        from ivr_liba_extemplate
+        where ID = #{ID}
     </delete>
 
-    <delete id="deleteIvrLibaExtemplateBySubModuleIDs" parameterType="String">
-        delete from ivr_liba_extemplate where subModuleID in 
-        <foreach item="subModuleID" collection="array" open="(" separator="," close=")">
-            #{subModuleID}
+    <delete id="deleteIvrLibaExtemplateByIDs" parameterType="String">
+        delete from ivr_liba_extemplate where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
         </foreach>
     </delete>
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplatescriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplatescriptMapper.xml
index bc15d9b..c0636dc 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplatescriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaExtemplatescriptMapper.xml
@@ -1,64 +1,83 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.IvrLibaExtemplatescriptMapper">
-    
-    <resultMap type="IvrLibaExtemplatescript" id="IvrLibaExtemplatescriptResult">
-        <result property="DetailID"    column="DetailID"    />
-        <result property="subModuleID"    column="subModuleID"    />
-        <result property="switchID"    column="switchID"    />
-        <result property="switchText"    column="switchText"    />
-        <result property="switchWav"    column="switchWav"    />
-        <result property="selfRegex"    column="selfRegex"    />
-        <result property="isEnable"    column="isEnable"    />
-        <result property="isDel"    column="isDel"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="isupload"    column="isupload"    />
-        <result property="uploadTime"    column="upload_time"    />
-        <result property="orgid"    column="orgid"    />
+
+    <resultMap type="com.smartor.domain.IvrLibaExtemplatescript" id="IvrLibaExtemplatescriptResult">
+        <result property="ID" column="ID"/>
+        <result property="extID" column="extID"/>
+        <result property="switchID" column="switchID"/>
+        <result property="switchText" column="switchText"/>
+        <result property="switchWav" column="switchWav"/>
+        <result property="selfRegex" column="selfRegex"/>
+        <result property="isEnable" column="isEnable"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
     </resultMap>
 
     <sql id="selectIvrLibaExtemplatescriptVo">
-        select DetailID, subModuleID, switchID, switchText, switchWav, selfRegex, isEnable, isDel, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_liba_extemplatescript
+        select ID,
+               extID,
+               switchID,
+               switchText,
+               switchWav,
+               selfRegex,
+               isEnable,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               orgid,
+               pid,
+               guid
+        from ivr_liba_extemplatescript
     </sql>
 
-    <select id="selectIvrLibaExtemplatescriptList" parameterType="IvrLibaExtemplatescript" resultMap="IvrLibaExtemplatescriptResult">
+    <select id="selectIvrLibaExtemplatescriptList" parameterType="com.smartor.domain.IvrLibaExtemplatescript"
+            resultMap="IvrLibaExtemplatescriptResult">
         <include refid="selectIvrLibaExtemplatescriptVo"/>
-        <where>  
-            <if test="subModuleID != null  and subModuleID != ''"> and subModuleID = #{subModuleID}</if>
-            <if test="switchID != null "> and switchID = #{switchID}</if>
-            <if test="switchText != null  and switchText != ''"> and switchText = #{switchText}</if>
-            <if test="switchWav != null  and switchWav != ''"> and switchWav = #{switchWav}</if>
-            <if test="selfRegex != null  and selfRegex != ''"> and selfRegex = #{selfRegex}</if>
-            <if test="isEnable != null "> and isEnable = #{isEnable}</if>
-            <if test="isDel != null "> and isDel = #{isDel}</if>
-            <if test="isupload != null "> and isupload = #{isupload}</if>
-            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
-            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+        <where>
+            <if test="extID != null  and extID != ''">and extID = #{extID}</if>
+            <if test="switchID != null ">and switchID = #{switchID}</if>
+            <if test="switchText != null  and switchText != ''">and switchText = #{switchText}</if>
+            <if test="switchWav != null  and switchWav != ''">and switchWav = #{switchWav}</if>
+            <if test="selfRegex != null  and selfRegex != ''">and selfRegex = #{selfRegex}</if>
+            <if test="isEnable != null ">and isEnable = #{isEnable}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
         </where>
     </select>
-    
-    <select id="selectIvrLibaExtemplatescriptByDetailID" parameterType="String" resultMap="IvrLibaExtemplatescriptResult">
+
+    <select id="selectIvrLibaExtemplatescriptByID" parameterType="String" resultMap="IvrLibaExtemplatescriptResult">
         <include refid="selectIvrLibaExtemplatescriptVo"/>
-        where DetailID = #{DetailID}
+        where ID = #{ID}
     </select>
-        
-    <insert id="insertIvrLibaExtemplatescript" parameterType="IvrLibaExtemplatescript">
+
+    <insert id="insertIvrLibaExtemplatescript" parameterType="com.smartor.domain.IvrLibaExtemplatescript">
         insert into ivr_liba_extemplatescript
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="DetailID != null">DetailID,</if>
-            <if test="subModuleID != null and subModuleID != ''">subModuleID,</if>
+            <if test="ID != null">ID,</if>
+            <if test="extID != null and extID != ''">extID,</if>
             <if test="switchID != null">switchID,</if>
             <if test="switchText != null">switchText,</if>
             <if test="switchWav != null">switchWav,</if>
             <if test="selfRegex != null">selfRegex,</if>
             <if test="isEnable != null">isEnable,</if>
-            <if test="isDel != null">isDel,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
@@ -67,16 +86,17 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
-         </trim>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="DetailID != null">#{DetailID},</if>
-            <if test="subModuleID != null and subModuleID != ''">#{subModuleID},</if>
+            <if test="ID != null">#{ID},</if>
+            <if test="extID != null and extID != ''">#{extID},</if>
             <if test="switchID != null">#{switchID},</if>
             <if test="switchText != null">#{switchText},</if>
             <if test="switchWav != null">#{switchWav},</if>
             <if test="selfRegex != null">#{selfRegex},</if>
             <if test="isEnable != null">#{isEnable},</if>
-            <if test="isDel != null">#{isDel},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
@@ -85,19 +105,20 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
-         </trim>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+        </trim>
     </insert>
 
-    <update id="updateIvrLibaExtemplatescript" parameterType="IvrLibaExtemplatescript">
+    <update id="updateIvrLibaExtemplatescript" parameterType="com.smartor.domain.IvrLibaExtemplatescript">
         update ivr_liba_extemplatescript
         <trim prefix="SET" suffixOverrides=",">
-            <if test="subModuleID != null and subModuleID != ''">subModuleID = #{subModuleID},</if>
+            <if test="extID != null and extID != ''">extID = #{extID},</if>
             <if test="switchID != null">switchID = #{switchID},</if>
             <if test="switchText != null">switchText = #{switchText},</if>
             <if test="switchWav != null">switchWav = #{switchWav},</if>
             <if test="selfRegex != null">selfRegex = #{selfRegex},</if>
             <if test="isEnable != null">isEnable = #{isEnable},</if>
-            <if test="isDel != null">isDel = #{isDel},</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>
@@ -106,18 +127,22 @@
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
         </trim>
-        where DetailID = #{DetailID}
+        where ID = #{ID}
     </update>
 
-    <delete id="deleteIvrLibaExtemplatescriptByDetailID" parameterType="String">
-        delete from ivr_liba_extemplatescript where DetailID = #{DetailID}
+    <delete id="deleteIvrLibaExtemplatescriptByID" parameterType="String">
+        delete
+        from ivr_liba_extemplatescript
+        where ID = #{ID}
     </delete>
 
-    <delete id="deleteIvrLibaExtemplatescriptByDetailIDs" parameterType="String">
-        delete from ivr_liba_extemplatescript where DetailID in 
-        <foreach item="DetailID" collection="array" open="(" separator="," close=")">
-            #{DetailID}
+    <delete id="deleteIvrLibaExtemplatescriptByIDs" parameterType="String">
+        delete from ivr_liba_extemplatescript where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
         </foreach>
     </delete>
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptAssortMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptAssortMapper.xml
index 2a788ed..6eb5d02 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptAssortMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptAssortMapper.xml
@@ -11,10 +11,11 @@
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
         <result property="pid" column="pid"/>
+        <result property="seqno" column="seqno"/>
     </resultMap>
 
     <sql id="selectIvrLibaScriptAssortVo">
-        select id, index_assort_name, del_flag, create_time, update_time, pid
+        select id, index_assort_name, del_flag, create_time, update_time, pid, seqno
         from ivr_liba_script_assort
     </sql>
 
@@ -26,7 +27,9 @@
                 #{indexAssortName}, '%')
             </if>
             <if test="pid != null ">and pid = #{pid}</if>
+            and del_flag=0
         </where>
+        order by seqno asc
     </select>
 
     <select id="selectIvrLibaScriptAssortById" parameterType="Long" resultMap="IvrLibaScriptAssortResult">
@@ -34,23 +37,30 @@
         where id = #{id}
     </select>
 
-    <insert id="insertIvrLibaScriptAssort" parameterType="com.smartor.domain.IvrLibaScriptAssort">
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from ivr_liba_script_assort
+
+    </select>
+
+    <insert id="insertIvrLibaScriptAssort" parameterType="com.smartor.domain.IvrLibaScriptAssort"
+            useGeneratedKeys="true" keyProperty="id">
         insert into ivr_liba_script_assort
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
             <if test="indexAssortName != null and indexAssortName != ''">index_assort_name,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="pid != null">pid,</if>
+            <if test="seqno != null">seqno,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
             <if test="indexAssortName != null and indexAssortName != ''">#{indexAssortName},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="pid != null">#{pid},</if>
+            <if test="seqno != null">#{seqno},</if>
         </trim>
     </insert>
 
@@ -62,15 +72,18 @@
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="pid != null">pid = #{pid},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteIvrLibaScriptAssortById" parameterType="Long">
-        delete
-        from ivr_liba_script_assort
+    <update id="deleteIvrLibaScriptAssortById" parameterType="Long">
+        update ivr_liba_script_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null">del_flag = 1,</if>
+        </trim>
         where id = #{id}
-    </delete>
+    </update>
 
     <delete id="deleteIvrLibaScriptAssortByIds" parameterType="String">
         delete from ivr_liba_script_assort where id in
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
index e2b5dfa..46ab1a4 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
@@ -40,12 +40,24 @@
         <result property="orgid" column="orgid"/>
         <result property="pid" column="pid"/>
         <result property="guid" column="guid"/>
+        <result property="parameter" column="parameter"/>
+        <result property="suitway" column="suitway"/>
+        <result property="isAvailable" column="isAvailable"/>
+        <result property="campus" column="campus"/>
+        <result property="deptNames" column="deptNames"/>
+        <result property="deptIds" column="deptIds"/>
+        <result property="tag" column="tag"/>
     </resultMap>
 
     <sql id="selectIvrLibaScriptVo">
         select id,
+               suitway,
+               campus,
+               deptNames,
+               deptIds,
                questiontitle,
                isenable,
+               isAvailable,
                questiontext,
                questionvoice,
                nomatchtext,
@@ -59,7 +71,8 @@
                questiontype,
                targetid,
                targetname,
-               targetoptions, language, remark, version, usestate, adduserid, addtime, modifyuserid, modifytime, assortid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+               tag,
+               targetoptions, language, remark, version, usestate, adduserid, addtime, modifyuserid, modifytime, assortid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, parameter
         from ivr_liba_script
     </sql>
 
@@ -69,6 +82,12 @@
         <where>
             <if test="id != null ">and id = #{id}</if>
             <if test="questiontitle != null  and questiontitle != ''">and questiontitle = #{questiontitle}</if>
+            <if test="deptIds != null  and deptIds != ''">and deptIds = #{deptIds}</if>
+            <if test="deptNames != null  and deptNames != ''">and deptNames like concat('%', #{deptNames}, '%')</if>
+            <if test="campus != null  and campus != ''">and campus = #{campus}</if>
+            <if test="tag != null  and tag != ''">and tag = #{tag}</if>
+            <if test="suitway != null  and suitway != ''">and suitway = #{suitway}</if>
+            <if test="isAvailable != null  and isAvailable != ''">and isAvailable = #{isAvailable}</if>
             <if test="isenable != null ">and isenable = #{isenable}</if>
             <if test="questiontext != null  and questiontext != ''">and questiontext = #{questiontext}</if>
             <if test="questionvoice != null  and questionvoice != ''">and questionvoice = #{questionvoice}</if>
@@ -97,6 +116,7 @@
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
             <if test="pid != null ">and pid = #{pid}</if>
             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="parameter != null  and parameter != ''">and parameter = #{parameter}</if>
         </where>
     </select>
 
@@ -110,6 +130,12 @@
         insert into ivr_liba_script
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="questiontitle != null">questiontitle,</if>
+            <if test="suitway != null">suitway,</if>
+            <if test="campus != null">campus,</if>
+            <if test="deptIds != null">deptIds,</if>
+            <if test="deptNames != null">deptNames,</if>
+            <if test="tag != null">tag,</if>
+            <if test="isAvailable != null">isAvailable,</if>
             <if test="isenable != null">isenable,</if>
             <if test="questiontext != null">questiontext,</if>
             <if test="questionvoice != null">questionvoice,</if>
@@ -144,9 +170,16 @@
             <if test="orgid != null">orgid,</if>
             <if test="pid != null">pid,</if>
             <if test="guid != null">guid,</if>
+            <if test="parameter != null">parameter,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="questiontitle != null">#{questiontitle},</if>
+            <if test="suitway != null">#{suitway},</if>
+            <if test="campus != null">#{campus},</if>
+            <if test="deptIds != null">#{deptIds},</if>
+            <if test="deptNames != null">#{deptNames},</if>
+            <if test="tag != null">#{tag},</if>
+            <if test="isAvailable != null">#{isAvailable},</if>
             <if test="isenable != null">#{isenable},</if>
             <if test="questiontext != null">#{questiontext},</if>
             <if test="questionvoice != null">#{questionvoice},</if>
@@ -181,6 +214,7 @@
             <if test="orgid != null">#{orgid},</if>
             <if test="pid != null">#{pid},</if>
             <if test="guid != null">#{guid},</if>
+            <if test="parameter != null">#{parameter},</if>
         </trim>
     </insert>
 
@@ -188,6 +222,8 @@
         update ivr_liba_script
         <trim prefix="SET" suffixOverrides=",">
             <if test="questiontitle != null">questiontitle = #{questiontitle},</if>
+            <if test="suitway != null">suitway = #{suitway},</if>
+            <if test="isAvailable != null">isAvailable = #{isAvailable},</if>
             <if test="isenable != null">isenable = #{isenable},</if>
             <if test="questiontext != null">questiontext = #{questiontext},</if>
             <if test="questionvoice != null">questionvoice = #{questionvoice},</if>
@@ -222,14 +258,21 @@
             <if test="orgid != null">orgid = #{orgid},</if>
             <if test="pid != null">pid = #{pid},</if>
             <if test="guid != null">guid = #{guid},</if>
+            <if test="parameter != null">parameter = #{parameter},</if>
+            <if test="deptNames != null">deptNames = #{deptNames},</if>
+            <if test="deptIds != null">deptIds = #{deptIds},</if>
+            <if test="campus != null">campus = #{campus},</if>
+            <if test="tag != null">tag = #{tag},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteIvrLibaScriptByQuestionid" parameterType="Integer">
-        delete
-        from ivr_liba_script
+    <update id="deleteIvrLibaScriptByQuestionid" parameterType="Integer">
+        update ivr_liba_script
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
         where id = #{id}
-    </delete>
+    </update>
 
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptTargetoptionMapper.xml
index 7955a0f..ffdac29 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptTargetoptionMapper.xml
@@ -7,6 +7,7 @@
     <resultMap type="com.smartor.domain.IvrLibaScriptTargetoption" id="IvrLibaScriptTargetoptionResult">
         <result property="id" column="id"/>
         <result property="targetid" column="targetid"/>
+        <result property="targetname" column="targetname"/>
         <result property="scriptid" column="scriptid"/>
         <result property="targettype" column="targettype"/>
         <result property="categoryName" column="categoryName"/>
@@ -34,6 +35,7 @@
     <sql id="selectIvrLibaScriptTargetoptionVo">
         select id,
                targetid,
+               targetname,
                scriptid,
                targettype,
                categoryName,
@@ -48,6 +50,7 @@
         <include refid="selectIvrLibaScriptTargetoptionVo"/>
         <where>
             <if test="targetid != null  and targetid != ''">and targetid = #{targetid}</if>
+            <if test="targetname != null  and targetname != ''">and targetname = #{targetname}</if>
             <if test="scriptid != null ">and scriptid = #{scriptid}</if>
             <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
             <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
@@ -81,6 +84,7 @@
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="id != null">id,</if>
             <if test="targetid != null and targetid != ''">targetid,</if>
+            <if test="targetname != null and targetname != ''">targetname,</if>
             <if test="scriptid != null">scriptid,</if>
             <if test="targettype != null and targettype != ''">targettype,</if>
             <if test="categoryName != null and categoryName != ''">categoryName,</if>
@@ -107,6 +111,7 @@
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
             <if test="targetid != null and targetid != ''">#{targetid},</if>
+            <if test="targetname != null and targetname != ''">#{targetname},</if>
             <if test="scriptid != null ">#{scriptid},</if>
             <if test="targettype != null and targettype != ''">#{targettype},</if>
             <if test="categoryName != null and categoryName != ''">#{categoryName},</if>
@@ -136,6 +141,7 @@
         update ivr_liba_script_targetoption
         <trim prefix="SET" suffixOverrides=",">
             <if test="targetid != null and targetid != ''">targetid = #{targetid},</if>
+            <if test="targetname != null and targetname != ''">targetname = #{targetname},</if>
             <if test="scriptid != null">scriptid = #{scriptid},</if>
             <if test="targettype != null and targettype != ''">targettype = #{targettype},</if>
             <if test="categoryName != null and categoryName != ''">categoryName = #{categoryName},</if>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetAssortMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetAssortMapper.xml
index 0f44a8a..ccfc346 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetAssortMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetAssortMapper.xml
@@ -11,10 +11,11 @@
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
         <result property="pid" column="pid"/>
+        <result property="seqno" column="seqno"/>
     </resultMap>
 
     <sql id="selectIvrLibaTargetAssortVo">
-        select id, index_assort_name, del_flag, create_time, update_time, pid
+        select id, index_assort_name, del_flag, create_time, update_time, pid, seqno
         from ivr_liba_target_assort
     </sql>
 
@@ -26,7 +27,9 @@
                 #{indexAssortName}, '%')
             </if>
             <if test="pid != null ">and pid = #{pid}</if>
+            and del_flag=0
         </where>
+        order by seqno asc
     </select>
 
     <select id="selectIvrLibaTargetAssortById" parameterType="Long" resultMap="IvrLibaTargetAssortResult">
@@ -34,23 +37,24 @@
         where id = #{id}
     </select>
 
-    <insert id="insertIvrLibaTargetAssort" parameterType="com.smartor.domain.IvrLibaTargetAssort">
+    <insert id="insertIvrLibaTargetAssort" parameterType="com.smartor.domain.IvrLibaTargetAssort"
+            useGeneratedKeys="true" keyProperty="id">
         insert into ivr_liba_target_assort
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
             <if test="indexAssortName != null and indexAssortName != ''">index_assort_name,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createTime != null">create_time,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="pid != null">pid,</if>
+            <if test="seqno != null">seqno,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
             <if test="indexAssortName != null and indexAssortName != ''">#{indexAssortName},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createTime != null">#{createTime},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="pid != null">#{pid},</if>
+            <if test="seqno != null">#{seqno},</if>
         </trim>
     </insert>
 
@@ -62,15 +66,18 @@
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="pid != null">pid = #{pid},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteIvrLibaTargetAssortById" parameterType="Long">
-        delete
-        from ivr_liba_target_assort
+    <update id="deleteIvrLibaTargetAssortById" parameterType="Long">
+        update ivr_liba_target_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null">del_flag = 1,</if>
+        </trim>
         where id = #{id}
-    </delete>
+    </update>
 
     <delete id="deleteIvrLibaTargetAssortByIds" parameterType="String">
         delete from ivr_liba_target_assort where id in
@@ -78,4 +85,10 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from ivr_liba_target_assort
+
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetMapper.xml
index 0b07cc5..faf1fa8 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetMapper.xml
@@ -30,6 +30,7 @@
         <result property="isAvailable" column="isAvailable"/>
         <result property="suitDisease" column="suitDisease"/>
         <result property="suitWay" column="suitWay"/>
+        <result property="parameter" column="parameter"/>
     </resultMap>
 
     <resultMap type="com.smartor.domain.IvrLibaTargetVO" id="IvrLibaTargetVOResult">
@@ -54,6 +55,7 @@
         <result property="isAvailable" column="isAvailable"/>
         <result property="suitDisease" column="suitDisease"/>
         <result property="suitWay" column="suitWay"/>
+        <result property="parameter" column="parameter"/>
         <collection property="targetoptionList" javaType="java.util.List" resultMap="IvrLibaTargetoptionResult"/>
     </resultMap>
 
@@ -89,7 +91,7 @@
                targettype,
                targetname,
                targetdesc, language, version, isenable, isabnormal, warnup, warndown, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, assortid,
-            isAvailable, suitDisease, suitWay
+            isAvailable, suitDisease, suitWay,parameter
         from ivr_liba_target
     </sql>
 
@@ -98,6 +100,7 @@
         <include refid="selectIvrLibaTargetVo"/>
         <where>
             del_flag != 1
+            <if test="targetID != null ">and targetID = #{targetID}</if>
             <if test="groupid != null  and groupid != ''">and groupid = #{groupid}</if>
             <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
             <if test="targetname != null  and targetname != ''">and targetname like concat('%', #{targetname}, '%')</if>
@@ -117,6 +120,7 @@
             <if test="isAvailable != null">and isAvailable=#{isAvailable},</if>
             <if test="suitDisease != null and suitDisease != ''">and suitDisease = #{suitDisease},</if>
             <if test="suitWay != null and suitWay != ''">and suitWay = #{suitWay},</if>
+            <if test="parameter != null and parameter != ''">and parameter = #{parameter},</if>
 
         </where>
     </select>
@@ -140,6 +144,7 @@
         a.isAvailable,
         a.suitDisease,
         a.suitWay,
+        a.parameter,
         b.targetoptionid,
         b.targettype,
         b.categoryName,
@@ -171,6 +176,7 @@
             <if test="isAvailable != null">a.isAvailable=#{isAvailable},</if>
             <if test="suitDisease != null and suitDisease != ''">a.suitDisease = #{suitDisease},</if>
             <if test="suitWay != null and suitWay != ''">a.suitWay = #{suitWay},</if>
+            <if test="parameter != null and parameter != ''">a.parameter = #{parameter},</if>
         </where>
         ORDER BY a.targetID
     </select>
@@ -208,6 +214,7 @@
             <if test="isAvailable != null">isAvailable,</if>
             <if test="suitDisease != null and suitDisease != ''">suitDisease,</if>
             <if test="suitWay != null and suitWay != ''">suitWay,</if>
+            <if test="parameter != null and parameter != ''">parameter,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="groupid != null">#{groupid},</if>
@@ -234,6 +241,7 @@
             <if test="isAvailable != null">#{isAvailable},</if>
             <if test="suitDisease != null and suitDisease != ''">#{suitDisease},</if>
             <if test="suitWay != null and suitWay != ''">#{suitWay},</if>
+            <if test="parameter != null and parameter != ''">#{parameter},</if>
         </trim>
     </insert>
 
@@ -264,6 +272,7 @@
             <if test="suitDisease != null and suitDisease != ''">suitDisease = #{suitDisease},</if>
             <if test="suitWay != null and suitWay != ''">suitWay = #{suitWay},</if>
             <if test="isAvailable != null and isAvailable != ''">isAvailable = #{isAvailable},</if>
+            <if test="parameter != null and parameter != ''">parameter = #{parameter},</if>
         </trim>
         where targetID = #{targetID}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateAssortMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateAssortMapper.xml
new file mode 100644
index 0000000..2ce0354
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateAssortMapper.xml
@@ -0,0 +1,93 @@
+<?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.IvrLibaTemplateAssortMapper">
+
+    <resultMap type="com.smartor.domain.IvrLibaTemplateAssort" id="IvrLibaTemplateAssortResult">
+        <result property="id" column="id"/>
+        <result property="indexAssortName" column="index_assort_name"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="pid" column="pid"/>
+        <result property="seqno" column="seqno"/>
+    </resultMap>
+
+    <sql id="selectIvrLibaTemplateAssortVo">
+        select id, index_assort_name, del_flag, create_time, update_time, pid, seqno
+        from ivr_liba_template_assort
+    </sql>
+
+    <select id="selectIvrLibaTemplateAssortList" parameterType="com.smartor.domain.IvrLibaTemplateAssort"
+            resultMap="IvrLibaTemplateAssortResult">
+        <include refid="selectIvrLibaTemplateAssortVo"/>
+        <where>
+            <if test="indexAssortName != null  and indexAssortName != ''">and index_assort_name like concat('%',
+                #{indexAssortName}, '%')
+            </if>
+            <if test="pid != null ">and pid = #{pid}</if>
+        </where>
+        order by seqno asc
+    </select>
+
+    <select id="selectIvrLibaTemplateAssortById" parameterType="Long" resultMap="IvrLibaTemplateAssortResult">
+        <include refid="selectIvrLibaTemplateAssortVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertIvrLibaTemplateAssort" parameterType="com.smartor.domain.IvrLibaTemplateAssort"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into ivr_liba_template_assort
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="indexAssortName != null and indexAssortName != ''">index_assort_name,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="seqno != null">seqno,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="pid != null">pid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="indexAssortName != null and indexAssortName != ''">#{indexAssortName},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="seqno != null">#{seqno},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="pid != null">#{pid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrLibaTemplateAssort" parameterType="com.smartor.domain.IvrLibaTemplateAssort">
+        update ivr_liba_template_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="indexAssortName != null and indexAssortName != ''">index_assort_name = #{indexAssortName},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="pid != null">pid = #{pid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteIvrLibaTemplateAssortById" parameterType="Long">
+        update ivr_liba_template_assort
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIvrLibaTemplateAssortByIds" parameterType="String">
+        delete from ivr_liba_template_assort where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from iivr_liba_template_assort
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
index aa51b20..e3ff0bc 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateMapper.xml
@@ -5,7 +5,9 @@
 <mapper namespace="com.smartor.mapper.IvrLibaTemplateMapper">
 
     <resultMap type="com.smartor.domain.IvrLibaTemplate" id="IvrLibaTemplateResult">
-        <result property="templateID" column="templateID"/>
+        <result property="ID" column="ID"/>
+        <result property="targetid" column="targetid"/>
+        <result property="targetname" column="targetname"/>
         <result property="templateName" column="templateName"/>
         <result property="silencetime" column="silencetime"/>
         <result property="slienceRepeatTimes" column="slienceRepeatTimes"/>
@@ -26,8 +28,8 @@
         <result property="icd10code" column="icd10code"/>
         <result property="icd10codename" column="icd10codename"/>
         <result property="atuoTaskDayOffset" column="atuoTaskDayOffset"/>
-        <result property="deptIds" column="DeptIds"/>
-        <result property="deptNames" column="DeptNames"/>
+        <result property="deptIds" column="deptIds"/>
+        <result property="deptNames" column="deptNames"/>
         <result property="fKsdm" column="F_KSDM"/>
         <result property="delFlag" column="del_flag"/>
         <result property="updateBy" column="update_by"/>
@@ -37,17 +39,30 @@
         <result property="isupload" column="isupload"/>
         <result property="uploadTime" column="upload_time"/>
         <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
         <result property="assortid" column="assortid"/>
+        <result property="parameter" column="parameter"/>
+        <result property="version" column="version"/>
+        <result property="usestate" column="usestate"/>
+        <result property="campus" column="campus"/>
+        <result property="tag" column="tag"/>
     </resultMap>
 
     <sql id="selectIvrLibaTemplateVo">
-        select templateID,
+        select ID,
+               targetid,
+               targetname,
                templateName,
                silencetime,
                slienceRepeatTimes,
                nomatchRepeatTimes,
                firstQuestionNum,
-               submodule, language, note, isEnable, addUserID, addTime, modifyUserID, modifyTime, groupID, labelInfo, submoduleID, playType, icd10code, icd10codename, atuoTaskDayOffset, DeptIds, DeptNames, F_KSDM, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid
+               version,
+               usestate,
+               campus,
+               tag,
+               submodule, language, note, isEnable, addUserID, addTime, modifyUserID, modifyTime, groupID, labelInfo, submoduleID, playType, icd10code, icd10codename, atuoTaskDayOffset, deptIds, deptNames, F_KSDM, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid, assortid, parameter
         from ivr_liba_template
     </sql>
 
@@ -58,6 +73,10 @@
             <if test="templateName != null  and templateName != ''">and templateName like concat('%', #{templateName},
                 '%')
             </if>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="targetname != null and targetname !='' ">and targetname = #{targetname}</if>
+            <if test="version != null and version !='' ">and version = #{version}</if>
+            <if test="usestate != null and usestate !='' ">and usestate = #{usestate}</if>
             <if test="silencetime != null ">and silencetime = #{silencetime}</if>
             <if test="slienceRepeatTimes != null ">and slienceRepeatTimes = #{slienceRepeatTimes}</if>
             <if test="nomatchRepeatTimes != null ">and nomatchRepeatTimes = #{nomatchRepeatTimes}</if>
@@ -66,7 +85,6 @@
             <if test="language != null  and language != ''">and language = #{language}</if>
             <if test="note != null  and note != ''">and note = #{note}</if>
             <if test="isEnable != null ">and isEnable = #{isEnable}</if>
-            <if test="isDel != null ">and isDel = #{isDel}</if>
             <if test="addUserID != null  and addUserID != ''">and addUserID = #{addUserID}</if>
             <if test="addTime != null ">and addTime = #{addTime}</if>
             <if test="modifyUserID != null  and modifyUserID != ''">and modifyUserID = #{modifyUserID}</if>
@@ -76,30 +94,42 @@
             <if test="submoduleID != null  and submoduleID != ''">and submoduleID = #{submoduleID}</if>
             <if test="playType != null ">and playType = #{playType}</if>
             <if test="icd10code != null  and icd10code != ''">and icd10code = #{icd10code}</if>
+            <if test="campus != null  and campus != ''">and campus = #{campus}</if>
             <if test="icd10codename != null  and icd10codename != ''">and icd10codename like concat('%',
                 #{icd10codename}, '%')
             </if>
+            <if test="deptNames != null  and deptNames != ''">and deptNames like concat('%',
+                #{deptNames}, '%')
+            </if>
             <if test="atuoTaskDayOffset != null ">and atuoTaskDayOffset = #{atuoTaskDayOffset}</if>
-            <if test="DeptIds != null  and DeptIds != ''">and DeptIds = #{DeptIds}</if>
-            <if test="DeptNames != null  and DeptNames != ''">and DeptNames = #{DeptNames}</if>
+            <if test="deptIds != null  and deptIds != ''">and deptIds = #{deptIds}</if>
             <if test="fKsdm != null  and fKsdm != ''">and F_KSDM = #{fKsdm}</if>
             <if test="isupload != null ">and isupload = #{isupload}</if>
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
-            <if test="assortid != null">and assortid = #{assortid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="assortid != null ">and assortid = #{assortid}</if>
+            <if test="parameter != null  and parameter != ''">and parameter = #{parameter}</if>
+            <if test="tag != null  and tag != ''">and tag = #{tag}</if>
         </where>
     </select>
 
-    <select id="selectIvrLibaTemplateByTemplateID" parameterType="String" resultMap="IvrLibaTemplateResult">
+    <select id="selectIvrLibaTemplateByID" parameterType="Long" resultMap="IvrLibaTemplateResult">
         <include refid="selectIvrLibaTemplateVo"/>
-        where templateID = #{templateID}
+        where ID = #{ID}
     </select>
 
-    <insert id="insertIvrLibaTemplate" parameterType="com.smartor.domain.IvrLibaTemplate">
+    <insert id="insertIvrLibaTemplate" parameterType="com.smartor.domain.IvrLibaTemplate" useGeneratedKeys="true"
+            keyProperty="ID">
         insert into ivr_liba_template
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="templateID != null">templateID,</if>
             <if test="templateName != null and templateName != ''">templateName,</if>
+            <if test="targetid != null">targetid,</if>
+            <if test="targetname != null and targetname != ''">targetname,</if>
+            <if test="version != null and version != ''">version,</if>
+            <if test="campus != null and campus != ''">campus,</if>
+            <if test="usestate != null and usestate != ''">usestate,</if>
             <if test="silencetime != null">silencetime,</if>
             <if test="slienceRepeatTimes != null">slienceRepeatTimes,</if>
             <if test="nomatchRepeatTimes != null">nomatchRepeatTimes,</if>
@@ -119,8 +149,8 @@
             <if test="icd10code != null">icd10code,</if>
             <if test="icd10codename != null">icd10codename,</if>
             <if test="atuoTaskDayOffset != null">atuoTaskDayOffset,</if>
-            <if test="DeptIds != null">DeptIds,</if>
-            <if test="DeptNames != null">DeptNames,</if>
+            <if test="deptIds != null">deptIds,</if>
+            <if test="deptNames != null">deptNames,</if>
             <if test="fKsdm != null">F_KSDM,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
@@ -130,11 +160,19 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
             <if test="assortid != null">assortid,</if>
+            <if test="parameter != null">parameter,</if>
+            <if test="tag != null">tag,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="templateID != null">#{templateID},</if>
             <if test="templateName != null and templateName != ''">#{templateName},</if>
+            <if test="targetid != null ">#{targetid},</if>
+            <if test="targetname != null and targetname != ''">#{targetname},</if>
+            <if test="version != null and version != ''">#{version},</if>
+            <if test="campus != null and campus != ''">#{campus},</if>
+            <if test="usestate != null and usestate != ''">#{usestate},</if>
             <if test="silencetime != null">#{silencetime},</if>
             <if test="slienceRepeatTimes != null">#{slienceRepeatTimes},</if>
             <if test="nomatchRepeatTimes != null">#{nomatchRepeatTimes},</if>
@@ -154,8 +192,8 @@
             <if test="icd10code != null">#{icd10code},</if>
             <if test="icd10codename != null">#{icd10codename},</if>
             <if test="atuoTaskDayOffset != null">#{atuoTaskDayOffset},</if>
-            <if test="DeptIds != null">#{DeptIds},</if>
-            <if test="DeptNames != null">#{DeptNames},</if>
+            <if test="deptIds != null">#{deptIds},</if>
+            <if test="deptNames != null">#{deptNames},</if>
             <if test="fKsdm != null">#{fKsdm},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -165,7 +203,11 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
             <if test="assortid != null">#{assortid},</if>
+            <if test="parameter != null">#{parameter},</if>
+            <if test="tag != null">#{tag},</if>
         </trim>
     </insert>
 
@@ -173,6 +215,11 @@
         update ivr_liba_template
         <trim prefix="SET" suffixOverrides=",">
             <if test="templateName != null and templateName != ''">templateName = #{templateName},</if>
+            <if test="targetid != null ">targetid = #{targetid},</if>
+            <if test="targetname != null and targetname != ''">targetname = #{targetname},</if>
+            <if test="version != null and version != ''">version = #{version},</if>
+            <if test="campus != null and campus != ''">campus = #{campus},</if>
+            <if test="usestate != null and usestate != ''">usestate = #{usestate},</if>
             <if test="silencetime != null">silencetime = #{silencetime},</if>
             <if test="slienceRepeatTimes != null">slienceRepeatTimes = #{slienceRepeatTimes},</if>
             <if test="nomatchRepeatTimes != null">nomatchRepeatTimes = #{nomatchRepeatTimes},</if>
@@ -192,8 +239,8 @@
             <if test="icd10code != null">icd10code = #{icd10code},</if>
             <if test="icd10codename != null">icd10codename = #{icd10codename},</if>
             <if test="atuoTaskDayOffset != null">atuoTaskDayOffset = #{atuoTaskDayOffset},</if>
-            <if test="DeptIds != null">DeptIds = #{DeptIds},</if>
-            <if test="DeptNames != null">DeptNames = #{DeptNames},</if>
+            <if test="deptIds != null">deptIds = #{deptIds},</if>
+            <if test="deptNames != null">deptNames = #{deptNames},</if>
             <if test="fKsdm != null">F_KSDM = #{fKsdm},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
@@ -203,21 +250,27 @@
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="orgid != null">orgid = #{orgid},</if>
-            <if test="assortid != null">orgid = #{assortid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="assortid != null">assortid = #{assortid},</if>
+            <if test="parameter != null">parameter = #{parameter},</if>
+            <if test="tag != null">tag = #{tag},</if>
         </trim>
-        where templateID = #{templateID}
+        where ID = #{ID}
     </update>
 
-    <delete id="deleteIvrLibaTemplateByTemplateID" parameterType="String">
-        delete
-        from ivr_liba_template
-        where templateID = #{templateID}
-    </delete>
+    <update id="deleteIvrLibaTemplateByID" parameterType="Long">
+        update ivr_liba_template
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where ID = #{ID}
+    </update>
 
-    <delete id="deleteIvrLibaTemplateByTemplateIDs" parameterType="String">
-        delete from ivr_liba_template where templateID in
-        <foreach item="templateID" collection="array" open="(" separator="," close=")">
-            #{templateID}
+    <delete id="deleteIvrLibaTemplateByIDs" parameterType="String">
+        delete from ivr_liba_template where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
         </foreach>
     </delete>
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
new file mode 100644
index 0000000..a2eeea0
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
@@ -0,0 +1,233 @@
+<?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.IvrLibaTemplateScriptMapper">
+
+    <resultMap type="com.smartor.domain.IvrLibaTemplateScript" id="IvrLibaTemplateScriptResult">
+        <result property="ID" column="ID"/>
+        <result property="templateQuestionNum" column="templateQuestionNum"/>
+        <result property="templateID" column="templateID"/>
+        <result property="scriptID" column="scriptID"/>
+        <result property="questionPoint" column="questionPoint"/>
+        <result property="questionText" column="questionText"/>
+        <result property="questionVoice" column="questionVoice"/>
+        <result property="noMatchText" column="noMatchText"/>
+        <result property="noMatchVoice" column="noMatchVoice"/>
+        <result property="slienceText" column="slienceText"/>
+        <result property="slienceVoice" column="slienceVoice"/>
+        <result property="submoduleText" column="submoduleText"/>
+        <result property="submoduleVoice" column="submoduleVoice"/>
+        <result property="noClearlyText" column="noClearlyText"/>
+        <result property="noClearlyVoice" column="noClearlyVoice"/>
+        <result property="categoryName" column="categoryName"/>
+        <result property="targetOptions" column="targetOptions"/>
+        <result property="language" column="language"/>
+        <result property="playWavOnly" column="playWavOnly"/>
+        <result property="isEnable" column="isEnable"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="targetid" column="targetid"/>
+        <result property="targettype" column="targettype"/>
+        <result property="targetvalue" column="targettalue"/>
+    </resultMap>
+
+    <sql id="selectIvrLibaTemplateScriptVo">
+        select ID,
+               templateQuestionNum,
+               templateID,
+               scriptID,
+               questionPoint,
+               questionText,
+               questionVoice,
+               noMatchText,
+               noMatchVoice,
+               slienceText,
+               slienceVoice,
+               submoduleText,
+               submoduleVoice,
+               noClearlyText,
+               noClearlyVoice,
+               categoryName,
+               targetid,
+               targettype,
+               targetvalue,
+               targetOptions, language, playWavOnly, isEnable, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+        from ivr_liba_template_script
+    </sql>
+
+    <select id="selectIvrLibaTemplateScriptList" parameterType="com.smartor.domain.IvrLibaTemplateScript"
+            resultMap="IvrLibaTemplateScriptResult">
+        <include refid="selectIvrLibaTemplateScriptVo"/>
+        <where>
+            <if test="templateQuestionNum != null ">and templateQuestionNum = #{templateQuestionNum}</if>
+            <if test="templateID != null ">and templateID = #{templateID}</if>
+            <if test="questionPoint != null  and questionPoint != ''">and questionPoint = #{questionPoint}</if>
+            <if test="questionText != null  and questionText != ''">and questionText = #{questionText}</if>
+            <if test="questionVoice != null  and questionVoice != ''">and questionVoice = #{questionVoice}</if>
+            <if test="noMatchText != null  and noMatchText != ''">and noMatchText = #{noMatchText}</if>
+            <if test="noMatchVoice != null  and noMatchVoice != ''">and noMatchVoice = #{noMatchVoice}</if>
+            <if test="slienceText != null  and slienceText != ''">and slienceText = #{slienceText}</if>
+            <if test="slienceVoice != null  and slienceVoice != ''">and slienceVoice = #{slienceVoice}</if>
+            <if test="submoduleText != null  and submoduleText != ''">and submoduleText = #{submoduleText}</if>
+            <if test="submoduleVoice != null  and submoduleVoice != ''">and submoduleVoice = #{submoduleVoice}</if>
+            <if test="noClearlyText != null  and noClearlyText != ''">and noClearlyText = #{noClearlyText}</if>
+            <if test="noClearlyVoice != null  and noClearlyVoice != ''">and noClearlyVoice = #{noClearlyVoice}</if>
+            <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
+                '%')
+            </if>
+            <if test="targetOptions != null  and targetOptions != ''">and targetOptions = #{targetOptions}</if>
+            <if test="language != null  and language != ''">and language = #{language}</if>
+            <if test="playWavOnly != null ">and playWavOnly = #{playWavOnly}</if>
+            <if test="isEnable != null ">and isEnable = #{isEnable}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
+            <if test="targetvalue != null  and targetvalue != ''">and targetvalue = #{targetvalue}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrLibaTemplateScriptByID" parameterType="Long" resultMap="IvrLibaTemplateScriptResult">
+        <include refid="selectIvrLibaTemplateScriptVo"/>
+        where ID = #{ID}
+    </select>
+
+    <insert id="insertIvrLibaTemplateScript" parameterType="com.smartor.domain.IvrLibaTemplateScript">
+        insert into ivr_liba_template_script
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="templateQuestionNum != null">templateQuestionNum,</if>
+            <if test="templateID != null">templateID,</if>
+            <if test="scriptID != null">scriptID,</if>
+            <if test="questionPoint != null and questionPoint != ''">questionPoint,</if>
+            <if test="questionText != null">questionText,</if>
+            <if test="questionVoice != null">questionVoice,</if>
+            <if test="noMatchText != null">noMatchText,</if>
+            <if test="noMatchVoice != null">noMatchVoice,</if>
+            <if test="slienceText != null">slienceText,</if>
+            <if test="slienceVoice != null">slienceVoice,</if>
+            <if test="submoduleText != null">submoduleText,</if>
+            <if test="submoduleVoice != null">submoduleVoice,</if>
+            <if test="noClearlyText != null">noClearlyText,</if>
+            <if test="noClearlyVoice != null">noClearlyVoice,</if>
+            <if test="categoryName != null">categoryName,</if>
+            <if test="targetOptions != null">targetOptions,</if>
+            <if test="language != null and language != ''">language,</if>
+            <if test="playWavOnly != null">playWavOnly,</if>
+            <if test="isEnable != null">isEnable,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="isupload != null">isupload,</if>
+            <if test="uploadTime != null">upload_time,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="targetvalue != null">targetvalue,</if>
+            <if test="targettype != null">targettype,</if>
+            <if test="targetid != null">targetid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
+            <if test="templateID != null">#{templateID},</if>
+            <if test="scriptID != null">#{scriptID},</if>
+            <if test="questionPoint != null and questionPoint != ''">#{questionPoint},</if>
+            <if test="questionText != null">#{questionText},</if>
+            <if test="questionVoice != null">#{questionVoice},</if>
+            <if test="noMatchText != null">#{noMatchText},</if>
+            <if test="noMatchVoice != null">#{noMatchVoice},</if>
+            <if test="slienceText != null">#{slienceText},</if>
+            <if test="slienceVoice != null">#{slienceVoice},</if>
+            <if test="submoduleText != null">#{submoduleText},</if>
+            <if test="submoduleVoice != null">#{submoduleVoice},</if>
+            <if test="noClearlyText != null">#{noClearlyText},</if>
+            <if test="noClearlyVoice != null">#{noClearlyVoice},</if>
+            <if test="categoryName != null">#{categoryName},</if>
+            <if test="targetOptions != null">#{targetOptions},</if>
+            <if test="language != null and language != ''">#{language},</if>
+            <if test="playWavOnly != null">#{playWavOnly},</if>
+            <if test="isEnable != null">#{isEnable},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="isupload != null">#{isupload},</if>
+            <if test="uploadTime != null">#{uploadTime},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="targetvalue != null">#{targetvalue},</if>
+            <if test="targettype != null">#{targettype},</if>
+            <if test="targetid != null">#{targetid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrLibaTemplateScript" parameterType="com.smartor.domain.IvrLibaTemplateScript">
+        update ivr_liba_template_script
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="templateQuestionNum != null">templateQuestionNum = #{templateQuestionNum},</if>
+            <if test="templateID != null">templateID = #{templateID},</if>
+            <if test="scriptID != null">scriptID = #{scriptID},</if>
+            <if test="questionPoint != null and questionPoint != ''">questionPoint = #{questionPoint},</if>
+            <if test="questionText != null">questionText = #{questionText},</if>
+            <if test="questionVoice != null">questionVoice = #{questionVoice},</if>
+            <if test="noMatchText != null">noMatchText = #{noMatchText},</if>
+            <if test="noMatchVoice != null">noMatchVoice = #{noMatchVoice},</if>
+            <if test="slienceText != null">slienceText = #{slienceText},</if>
+            <if test="slienceVoice != null">slienceVoice = #{slienceVoice},</if>
+            <if test="submoduleText != null">submoduleText = #{submoduleText},</if>
+            <if test="submoduleVoice != null">submoduleVoice = #{submoduleVoice},</if>
+            <if test="noClearlyText != null">noClearlyText = #{noClearlyText},</if>
+            <if test="noClearlyVoice != null">noClearlyVoice = #{noClearlyVoice},</if>
+            <if test="categoryName != null">categoryName = #{categoryName},</if>
+            <if test="targetOptions != null">targetOptions = #{targetOptions},</if>
+            <if test="language != null and language != ''">language = #{language},</if>
+            <if test="playWavOnly != null">playWavOnly = #{playWavOnly},</if>
+            <if test="isEnable != null">isEnable = #{isEnable},</if>
+            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="isupload != null">isupload = #{isupload},</if>
+            <if test="uploadTime != null">upload_time = #{uploadTime},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
+            <if test="targettype != null">targettype = #{targettype},</if>
+            <if test="targetid != null">targetid = #{targetid},</if>
+        </trim>
+        where ID = #{ID}
+    </update>
+
+    <update id="deleteIvrLibaTemplateScriptByID" parameterType="Long">
+        update ivr_liba_template_script
+        <trim prefix="SET" suffixOverrides=",">
+
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where ID = #{ID}
+    </update>
+
+    <delete id="deleteIvrLibaTemplateScriptByIDs" parameterType="String">
+        delete from ivr_liba_template_script where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTagMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTagMapper.xml
new file mode 100644
index 0000000..7014e4f
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTagMapper.xml
@@ -0,0 +1,138 @@
+<?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.IvrLibaTemplateTagMapper">
+
+    <resultMap type="com.smartor.domain.IvrLibaTemplateTag" id="IvrLibaTemplateTagResult">
+        <result property="id" column="id"/>
+        <result property="tagcategoryid" column="tagcategoryid"/>
+        <result property="tagid" column="tagid"/>
+        <result property="templateid" column="templateid"/>
+        <result property="orgid" column="orgid"/>
+        <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="targetid" column="targetid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="guid" column="guid"/>
+    </resultMap>
+
+    <sql id="selectIvrLibaTemplateTagVo">
+        select id,
+               tagcategoryid,
+               templateid,
+               tagid,
+               orgid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               targetid,
+               pid,
+               guid
+        from ivr_liba_template_tag
+    </sql>
+
+    <select id="selectIvrLibaTemplateTagList" parameterType="com.smartor.domain.IvrLibaTemplateTag"
+            resultMap="IvrLibaTemplateTagResult">
+        <include refid="selectIvrLibaTemplateTagVo"/>
+        <where>
+            <if test="tagcategoryid != null ">and tagcategoryid = #{tagcategoryid}</if>
+            <if test="templateid != null ">and templateid = #{templateid}</if>
+            <if test="tagid != null ">and tagid = #{tagid}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrLibaTemplateTagById" parameterType="Long" resultMap="IvrLibaTemplateTagResult">
+        <include refid="selectIvrLibaTemplateTagVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertIvrLibaTemplateTag" parameterType="com.smartor.domain.IvrLibaTemplateTag" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into ivr_liba_template_tag
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="tagcategoryid != null">tagcategoryid,</if>
+            <if test="templateid != null">templateid,</if>
+            <if test="tagid != null">tagid,</if>
+            <if test="orgid != null">orgid,</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="targetid != null">targetid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="tagcategoryid != null">#{tagcategoryid},</if>
+            <if test="templateid != null">#{templateid},</if>
+            <if test="tagid != null">#{tagid},</if>
+            <if test="orgid != null">#{orgid},</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="targetid != null">#{targetid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrLibaTemplateTag" parameterType="com.smartor.domain.IvrLibaTemplateTag">
+        update ivr_liba_template_tag
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="tagcategoryid != null">tagcategoryid = #{tagcategoryid},</if>
+            <if test="tagid != null">tagid = #{tagid},</if>
+            <if test="templateid != null">templateid = #{templateid},</if>
+            <if test="orgid != null">orgid = #{orgid},</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="targetid != null">targetid = #{targetid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIvrLibaTemplateTagById" parameterType="Long">
+        update ivr_liba_template_tag
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteIvrLibaTemplateTagByIds" parameterType="String">
+        delete from ivr_liba_template_tag where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml
similarity index 74%
rename from smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetMapper.xml
rename to smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml
index 20b8ad2..38e4fbe 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetMapper.xml
@@ -2,10 +2,10 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smartor.mapper.IvrLibaTemplatetargetMapper">
+<mapper namespace="com.smartor.mapper.IvrLibaTemplateTargetMapper">
 
-    <resultMap type="com.smartor.domain.IvrLibaTemplatetarget" id="IvrLibaTemplatetargetResult">
-        <result property="templateTargetID" column="templateTargetID"/>
+    <resultMap type="com.smartor.domain.IvrLibaTemplateTarget" id="IvrLibaTemplateTargetResult">
+        <result property="ID" column="ID"/>
         <result property="templateQuestionID" column="templateQuestionID"/>
         <result property="templateQuestionNum" column="templateQuestionNum"/>
         <result property="nextQuestionNum" column="nextQuestionNum"/>
@@ -25,7 +25,6 @@
         <result property="regexUsedType" column="regexUsedType"/>
         <result property="language" column="language"/>
         <result property="isEnable" column="isEnable"/>
-        <result property="isDel" column="isDel"/>
         <result property="playType" column="playType"/>
         <result property="delFlag" column="del_flag"/>
         <result property="updateBy" column="update_by"/>
@@ -35,10 +34,12 @@
         <result property="isupload" column="isupload"/>
         <result property="uploadTime" column="upload_time"/>
         <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
     </resultMap>
 
-    <sql id="selectIvrLibaTemplatetargetVo">
-        select templateTargetID,
+    <sql id="selectIvrLibaTemplateTargetVo">
+        select ID,
                templateQuestionID,
                templateQuestionNum,
                nextQuestionNum,
@@ -55,20 +56,18 @@
                questionTargetID,
                basicRegex,
                selfRegex,
-               regexUsedType, language, isEnable, isDel, playType, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid
-        from ivr_liba_templatetarget
+               regexUsedType, language, isEnable, playType, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+        from ivr_liba_template_target
     </sql>
 
-    <select id="selectIvrLibaTemplatetargetList" parameterType="com.smartor.domain.IvrLibaTemplatetarget"
-            resultMap="IvrLibaTemplatetargetResult">
-        <include refid="selectIvrLibaTemplatetargetVo"/>
+    <select id="selectIvrLibaTemplateTargetList" parameterType="com.smartor.domain.IvrLibaTemplateTarget"
+            resultMap="IvrLibaTemplateTargetResult">
+        <include refid="selectIvrLibaTemplateTargetVo"/>
         <where>
-            <if test="templateQuestionID != null  and templateQuestionID != ''">and templateQuestionID =
-                #{templateQuestionID}
-            </if>
+            <if test="templateQuestionID != null ">and templateQuestionID = #{templateQuestionID}</if>
             <if test="templateQuestionNum != null ">and templateQuestionNum = #{templateQuestionNum}</if>
             <if test="nextQuestionNum != null ">and nextQuestionNum = #{nextQuestionNum}</if>
-            <if test="templateID != null  and templateID != ''">and templateID = #{templateID}</if>
+            <if test="templateID != null ">and templateID = #{templateID}</if>
             <if test="switchID != null ">and switchID = #{switchID}</if>
             <if test="switchDescription != null  and switchDescription != ''">and switchDescription =
                 #{switchDescription}
@@ -89,28 +88,27 @@
             <if test="regexUsedType != null  and regexUsedType != ''">and regexUsedType = #{regexUsedType}</if>
             <if test="language != null  and language != ''">and language = #{language}</if>
             <if test="isEnable != null ">and isEnable = #{isEnable}</if>
-            <if test="isDel != null ">and isDel = #{isDel}</if>
             <if test="playType != null ">and playType = #{playType}</if>
             <if test="isupload != null ">and isupload = #{isupload}</if>
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
         </where>
     </select>
 
-    <select id="selectIvrLibaTemplatetargetByTemplateTargetID" parameterType="String"
-            resultMap="IvrLibaTemplatetargetResult">
-        <include refid="selectIvrLibaTemplatetargetVo"/>
-        where templateTargetID = #{templateTargetID}
+    <select id="selectIvrLibaTemplateTargetByID" parameterType="Long" resultMap="IvrLibaTemplateTargetResult">
+        <include refid="selectIvrLibaTemplateTargetVo"/>
+        where ID = #{ID}
     </select>
 
-    <insert id="insertIvrLibaTemplatetarget" parameterType="com.smartor.domain.IvrLibaTemplatetarget">
-        insert into ivr_liba_templatetarget
+    <insert id="insertIvrLibaTemplateTarget" parameterType="com.smartor.domain.IvrLibaTemplateTarget">
+        insert into ivr_liba_template_target
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="templateTargetID != null">templateTargetID,</if>
-            <if test="templateQuestionID != null and templateQuestionID != ''">templateQuestionID,</if>
+            <if test="templateQuestionID != null">templateQuestionID,</if>
             <if test="templateQuestionNum != null">templateQuestionNum,</if>
             <if test="nextQuestionNum != null">nextQuestionNum,</if>
-            <if test="templateID != null and templateID != ''">templateID,</if>
+            <if test="templateID != null">templateID,</if>
             <if test="switchID != null">switchID,</if>
             <if test="switchDescription != null">switchDescription,</if>
             <if test="switchText != null">switchText,</if>
@@ -124,9 +122,8 @@
             <if test="basicRegex != null">basicRegex,</if>
             <if test="selfRegex != null">selfRegex,</if>
             <if test="regexUsedType != null">regexUsedType,</if>
-            <if test="language != null and language != ''">language,</if>
+            <if test="language != null">language,</if>
             <if test="isEnable != null">isEnable,</if>
-            <if test="isDel != null">isDel,</if>
             <if test="playType != null">playType,</if>
             <if test="delFlag != null and delFlag != ''">del_flag,</if>
             <if test="updateBy != null">update_by,</if>
@@ -136,13 +133,14 @@
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
             <if test="orgid != null">orgid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="templateTargetID != null">#{templateTargetID},</if>
-            <if test="templateQuestionID != null and templateQuestionID != ''">#{templateQuestionID},</if>
+            <if test="templateQuestionID != null">#{templateQuestionID},</if>
             <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
             <if test="nextQuestionNum != null">#{nextQuestionNum},</if>
-            <if test="templateID != null and templateID != ''">#{templateID},</if>
+            <if test="templateID != null">#{templateID},</if>
             <if test="switchID != null">#{switchID},</if>
             <if test="switchDescription != null">#{switchDescription},</if>
             <if test="switchText != null">#{switchText},</if>
@@ -156,9 +154,8 @@
             <if test="basicRegex != null">#{basicRegex},</if>
             <if test="selfRegex != null">#{selfRegex},</if>
             <if test="regexUsedType != null">#{regexUsedType},</if>
-            <if test="language != null and language != ''">#{language},</if>
+            <if test="language != null">#{language},</if>
             <if test="isEnable != null">#{isEnable},</if>
-            <if test="isDel != null">#{isDel},</if>
             <if test="playType != null">#{playType},</if>
             <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
             <if test="updateBy != null">#{updateBy},</if>
@@ -168,18 +165,18 @@
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="orgid != null">#{orgid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
         </trim>
     </insert>
 
-    <update id="updateIvrLibaTemplatetarget" parameterType="com.smartor.domain.IvrLibaTemplatetarget">
-        update ivr_liba_templatetarget
+    <update id="updateIvrLibaTemplateTarget" parameterType="com.smartor.domain.IvrLibaTemplateTarget">
+        update ivr_liba_template_target
         <trim prefix="SET" suffixOverrides=",">
-            <if test="templateQuestionID != null and templateQuestionID != ''">templateQuestionID =
-                #{templateQuestionID},
-            </if>
+            <if test="templateQuestionID != null">templateQuestionID = #{templateQuestionID},</if>
             <if test="templateQuestionNum != null">templateQuestionNum = #{templateQuestionNum},</if>
             <if test="nextQuestionNum != null">nextQuestionNum = #{nextQuestionNum},</if>
-            <if test="templateID != null and templateID != ''">templateID = #{templateID},</if>
+            <if test="templateID != null">templateID = #{templateID},</if>
             <if test="switchID != null">switchID = #{switchID},</if>
             <if test="switchDescription != null">switchDescription = #{switchDescription},</if>
             <if test="switchText != null">switchText = #{switchText},</if>
@@ -193,9 +190,8 @@
             <if test="basicRegex != null">basicRegex = #{basicRegex},</if>
             <if test="selfRegex != null">selfRegex = #{selfRegex},</if>
             <if test="regexUsedType != null">regexUsedType = #{regexUsedType},</if>
-            <if test="language != null and language != ''">language = #{language},</if>
+            <if test="language != null">language = #{language},</if>
             <if test="isEnable != null">isEnable = #{isEnable},</if>
-            <if test="isDel != null">isDel = #{isDel},</if>
             <if test="playType != null">playType = #{playType},</if>
             <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
@@ -205,20 +201,24 @@
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
         </trim>
-        where templateTargetID = #{templateTargetID}
+        where ID = #{ID}
     </update>
 
-    <delete id="deleteIvrLibaTemplatetargetByTemplateTargetID" parameterType="String">
-        delete
-        from ivr_liba_templatetarget
-        where templateTargetID = #{templateTargetID}
-    </delete>
+    <update id="deleteIvrLibaTemplateTargetByID" parameterType="Long">
+        update ivr_liba_template_target
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where ID = #{ID}
+    </update>
 
-    <delete id="deleteIvrLibaTemplatetargetByTemplateTargetIDs" parameterType="String">
-        delete from ivr_liba_templatetarget where templateTargetID in
-        <foreach item="templateTargetID" collection="array" open="(" separator="," close=")">
-            #{templateTargetID}
+    <delete id="deleteIvrLibaTemplateTargetByIDs" parameterType="String">
+        delete from ivr_liba_template_target where ID in
+        <foreach item="ID" collection="array" open="(" separator="," close=")">
+            #{ID}
         </foreach>
     </delete>
 </mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
new file mode 100644
index 0000000..b0dbbc1
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
@@ -0,0 +1,190 @@
+<?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.IvrLibaTemplateTargetoptionMapper">
+
+    <resultMap type="com.smartor.domain.IvrLibaTemplateTargetoption" id="IvrLibaTemplateTargetoptionResult">
+        <result property="id" column="id"/>
+        <result property="targetid" column="targetid"/>
+        <result property="targetname" column="targetname"/>
+        <result property="templateID" column="templateID"/>
+        <result property="targettype" column="targettype"/>
+        <result property="categoryName" column="categoryName"/>
+        <result property="targetvalue" column="targetvalue"/>
+        <result property="targetregex" column="targetregex"/>
+        <result property="optiondesc" column="optiondesc"/>
+        <result property="language" column="language"/>
+        <result property="version" column="version"/>
+        <result property="groupid" column="groupid"/>
+        <result property="isabnormal" column="isabnormal"/>
+        <result property="warnup" column="warnup"/>
+        <result property="warndown" column="warndown"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="scriptid" column="scriptid"/>
+    </resultMap>
+
+    <sql id="selectIvrLibaTemplateTargetoptionVo">
+        select id,
+               targetid,
+               scriptid,
+               targetname,
+               templateID,
+               targettype,
+               categoryName,
+               targetvalue,
+               targetregex,
+               optiondesc, language, version, groupid, isabnormal, warnup, warndown, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid, pid, guid
+        from ivr_liba_template_targetoption
+    </sql>
+
+    <select id="selectIvrLibaTemplateTargetoptionList" parameterType="com.smartor.domain.IvrLibaTemplateTargetoption"
+            resultMap="IvrLibaTemplateTargetoptionResult">
+        <include refid="selectIvrLibaTemplateTargetoptionVo"/>
+        <where>
+            <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="targetname != null ">and targetname = #{targetname}</if>
+            <if test="templateID != null ">and templateID = #{templateID}</if>
+            <if test="scriptid != null ">and scriptid = #{scriptid}</if>
+            <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
+            <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
+                '%')
+            </if>
+            <if test="targetvalue != null  and targetvalue != ''">and targetvalue = #{targetvalue}</if>
+            <if test="targetregex != null  and targetregex != ''">and targetregex = #{targetregex}</if>
+            <if test="optiondesc != null  and optiondesc != ''">and optiondesc = #{optiondesc}</if>
+            <if test="language != null  and language != ''">and language = #{language}</if>
+            <if test="version != null  and version != ''">and version = #{version}</if>
+            <if test="groupid != null  and groupid != ''">and groupid = #{groupid}</if>
+            <if test="isabnormal != null ">and isabnormal = #{isabnormal}</if>
+            <if test="warnup != null ">and warnup = #{warnup}</if>
+            <if test="warndown != null ">and warndown = #{warndown}</if>
+            <if test="isupload != null ">and isupload = #{isupload}</if>
+            <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+        </where>
+    </select>
+
+    <select id="selectIvrLibaTemplateTargetoptionById" parameterType="Long"
+            resultMap="IvrLibaTemplateTargetoptionResult">
+        <include refid="selectIvrLibaTemplateTargetoptionVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertIvrLibaTemplateTargetoption" parameterType="com.smartor.domain.IvrLibaTemplateTargetoption"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into ivr_liba_template_targetoption
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="targetid != null">targetid,</if>
+            <if test="targetname != null">targetname,</if>
+            <if test="templateID != null">templateID,</if>
+            <if test="scriptid != null">scriptid,</if>
+            <if test="targettype != null and targettype != ''">targettype,</if>
+            <if test="categoryName != null and categoryName != ''">categoryName,</if>
+            <if test="targetvalue != null">targetvalue,</if>
+            <if test="targetregex != null">targetregex,</if>
+            <if test="optiondesc != null">optiondesc,</if>
+            <if test="language != null and language != ''">language,</if>
+            <if test="version != null and version != ''">version,</if>
+            <if test="groupid != null">groupid,</if>
+            <if test="isabnormal != null">isabnormal,</if>
+            <if test="warnup != null">warnup,</if>
+            <if test="warndown != null">warndown,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="isupload != null">isupload,</if>
+            <if test="uploadTime != null">upload_time,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="targetid != null">#{targetid},</if>
+            <if test="targetname != null">#{targetname},</if>
+            <if test="templateID != null">#{templateID},</if>
+            <if test="scriptid != null">#{scriptid},</if>
+            <if test="targettype != null and targettype != ''">#{targettype},</if>
+            <if test="categoryName != null and categoryName != ''">#{categoryName},</if>
+            <if test="targetvalue != null">#{targetvalue},</if>
+            <if test="targetregex != null">#{targetregex},</if>
+            <if test="optiondesc != null">#{optiondesc},</if>
+            <if test="language != null and language != ''">#{language},</if>
+            <if test="version != null and version != ''">#{version},</if>
+            <if test="groupid != null">#{groupid},</if>
+            <if test="isabnormal != null">#{isabnormal},</if>
+            <if test="warnup != null">#{warnup},</if>
+            <if test="warndown != null">#{warndown},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="isupload != null">#{isupload},</if>
+            <if test="uploadTime != null">#{uploadTime},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateIvrLibaTemplateTargetoption" parameterType="com.smartor.domain.IvrLibaTemplateTargetoption">
+        update ivr_liba_template_targetoption
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="targetid != null">targetid = #{targetid},</if>
+            <if test="scriptid != null">scriptid = #{scriptid},</if>
+            <if test="targetname != null">targetname = #{targetname},</if>
+            <if test="templateid != null">templateID = #{templateid},</if>
+            <if test="targettype != null and targettype != ''">targettype = #{targettype},</if>
+            <if test="categoryName != null and categoryName != ''">categoryName = #{categoryName},</if>
+            <if test="targetvalue != null">targetvalue = #{targetvalue},</if>
+            <if test="targetregex != null">targetregex = #{targetregex},</if>
+            <if test="optiondesc != null">optiondesc = #{optiondesc},</if>
+            <if test="language != null and language != ''">language = #{language},</if>
+            <if test="version != null and version != ''">version = #{version},</if>
+            <if test="groupid != null">groupid = #{groupid},</if>
+            <if test="isabnormal != null">isabnormal = #{isabnormal},</if>
+            <if test="warnup != null">warnup = #{warnup},</if>
+            <if test="warndown != null">warndown = #{warndown},</if>
+            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="isupload != null">isupload = #{isupload},</if>
+            <if test="uploadTime != null">upload_time = #{uploadTime},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteIvrLibaTemplateTargetoptionById" parameterType="Long">
+        update ivr_liba_template_targetoption
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteIvrLibaTemplateTargetoptionByIds" parameterType="String">
+        delete from ivr_liba_template_targetoption where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatescriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatescriptMapper.xml
deleted file mode 100644
index 958558b..0000000
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatescriptMapper.xml
+++ /dev/null
@@ -1,194 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smartor.mapper.IvrLibaTemplatescriptMapper">
-    
-    <resultMap type="com.smartor.domain.IvrLibaTemplatescript" id="IvrLibaTemplatescriptResult">
-        <result property="templateQuestionID"    column="templateQuestionID"    />
-        <result property="templateQuestionNum"    column="templateQuestionNum"    />
-        <result property="templateID"    column="templateID"    />
-        <result property="questionID"    column="questionID"    />
-        <result property="questionPoint"    column="questionPoint"    />
-        <result property="questionText"    column="questionText"    />
-        <result property="questionVoice"    column="questionVoice"    />
-        <result property="noMatchText"    column="noMatchText"    />
-        <result property="noMatchVoice"    column="noMatchVoice"    />
-        <result property="slienceText"    column="slienceText"    />
-        <result property="slienceVoice"    column="slienceVoice"    />
-        <result property="submoduleText"    column="submoduleText"    />
-        <result property="submoduleVoice"    column="submoduleVoice"    />
-        <result property="noClearlyText"    column="noClearlyText"    />
-        <result property="noClearlyVoice"    column="noClearlyVoice"    />
-        <result property="categoryName"    column="categoryName"    />
-        <result property="targetOptions"    column="targetOptions"    />
-        <result property="language"    column="language"    />
-        <result property="playWavOnly"    column="playWavOnly"    />
-        <result property="isEnable"    column="isEnable"    />
-        <result property="isDel"    column="isDel"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="isupload"    column="isupload"    />
-        <result property="uploadTime"    column="upload_time"    />
-        <result property="orgid"    column="orgid"    />
-        <result property="templateTargetID"    column="templateTargetID"    />
-    </resultMap>
-
-    <sql id="selectIvrLibaTemplatescriptVo">
-        select templateQuestionID, templateQuestionNum, templateID, templateTargetID,questionID, questionPoint, questionText, questionVoice, noMatchText, noMatchVoice, slienceText, slienceVoice, submoduleText, submoduleVoice, noClearlyText, noClearlyVoice, categoryName, targetOptions, language, playWavOnly, isEnable, isDel, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, orgid from ivr_liba_templatescript
-    </sql>
-
-    <select id="selectIvrLibaTemplatescriptList" parameterType="com.smartor.domain.IvrLibaTemplatescript" resultMap="IvrLibaTemplatescriptResult">
-        <include refid="selectIvrLibaTemplatescriptVo"/>
-        <where>  
-            <if test="templateQuestionNum != null "> and templateQuestionNum = #{templateQuestionNum}</if>
-            <if test="templateID != null  and templateID != ''"> and templateID = #{templateID}</if>
-            <if test="questionID != null  and questionID != ''"> and questionID = #{questionID}</if>
-            <if test="questionPoint != null  and questionPoint != ''"> and questionPoint = #{questionPoint}</if>
-            <if test="questionText != null  and questionText != ''"> and questionText = #{questionText}</if>
-            <if test="questionVoice != null  and questionVoice != ''"> and questionVoice = #{questionVoice}</if>
-            <if test="noMatchText != null  and noMatchText != ''"> and noMatchText = #{noMatchText}</if>
-            <if test="noMatchVoice != null  and noMatchVoice != ''"> and noMatchVoice = #{noMatchVoice}</if>
-            <if test="slienceText != null  and slienceText != ''"> and slienceText = #{slienceText}</if>
-            <if test="slienceVoice != null  and slienceVoice != ''"> and slienceVoice = #{slienceVoice}</if>
-            <if test="submoduleText != null  and submoduleText != ''"> and submoduleText = #{submoduleText}</if>
-            <if test="submoduleVoice != null  and submoduleVoice != ''"> and submoduleVoice = #{submoduleVoice}</if>
-            <if test="noClearlyText != null  and noClearlyText != ''"> and noClearlyText = #{noClearlyText}</if>
-            <if test="noClearlyVoice != null  and noClearlyVoice != ''"> and noClearlyVoice = #{noClearlyVoice}</if>
-            <if test="categoryName != null  and categoryName != ''"> and categoryName like concat('%', #{categoryName}, '%')</if>
-            <if test="targetOptions != null  and targetOptions != ''"> and targetOptions = #{targetOptions}</if>
-            <if test="language != null  and language != ''"> and language = #{language}</if>
-            <if test="playWavOnly != null "> and playWavOnly = #{playWavOnly}</if>
-            <if test="isEnable != null "> and isEnable = #{isEnable}</if>
-            <if test="isDel != null "> and isDel = #{isDel}</if>
-            <if test="isupload != null "> and isupload = #{isupload}</if>
-            <if test="uploadTime != null "> and upload_time = #{uploadTime}</if>
-            <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
-            <if test="templateTargetID != null  and templateTargetID != ''"> and templateTargetID = #{templateTargetID}</if>
-        </where>
-    </select>
-    
-    <select id="selectIvrLibaTemplatescriptByTemplateQuestionID" parameterType="String" resultMap="IvrLibaTemplatescriptResult">
-        <include refid="selectIvrLibaTemplatescriptVo"/>
-        where templateQuestionID = #{templateQuestionID}
-    </select>
-        
-    <insert id="insertIvrLibaTemplatescript" parameterType="com.smartor.domain.IvrLibaTemplatescript">
-        insert into ivr_liba_templatescript
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="templateQuestionID != null">templateQuestionID,</if>
-            <if test="templateQuestionNum != null">templateQuestionNum,</if>
-            <if test="templateID != null and templateID != ''">templateID,</if>
-            <if test="templateTargetID != null and templateTargetID != ''">templateTargetID,</if>
-            <if test="questionID != null and questionID != ''">questionID,</if>
-            <if test="questionPoint != null and questionPoint != ''">questionPoint,</if>
-            <if test="questionText != null">questionText,</if>
-            <if test="questionVoice != null">questionVoice,</if>
-            <if test="noMatchText != null">noMatchText,</if>
-            <if test="noMatchVoice != null">noMatchVoice,</if>
-            <if test="slienceText != null">slienceText,</if>
-            <if test="slienceVoice != null">slienceVoice,</if>
-            <if test="submoduleText != null">submoduleText,</if>
-            <if test="submoduleVoice != null">submoduleVoice,</if>
-            <if test="noClearlyText != null">noClearlyText,</if>
-            <if test="noClearlyVoice != null">noClearlyVoice,</if>
-            <if test="categoryName != null">categoryName,</if>
-            <if test="targetOptions != null">targetOptions,</if>
-            <if test="language != null and language != ''">language,</if>
-            <if test="playWavOnly != null">playWavOnly,</if>
-            <if test="isEnable != null">isEnable,</if>
-            <if test="isDel != null">isDel,</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="templateQuestionID != null">#{templateQuestionID},</if>
-            <if test="templateQuestionNum != null">#{templateQuestionNum},</if>
-            <if test="templateID != null and templateID != ''">#{templateID},</if>
-            <if test="templateTargetID != null and templateTargetID != ''">#{templateTargetID},</if>
-            <if test="templateTargetID != null and templateTargetID != ''">#{templateTargetID},</if>
-            <if test="questionID != null and questionID != ''">#{questionID},</if>
-            <if test="questionPoint != null and questionPoint != ''">#{questionPoint},</if>
-            <if test="questionText != null">#{questionText},</if>
-            <if test="questionVoice != null">#{questionVoice},</if>
-            <if test="noMatchText != null">#{noMatchText},</if>
-            <if test="noMatchVoice != null">#{noMatchVoice},</if>
-            <if test="slienceText != null">#{slienceText},</if>
-            <if test="slienceVoice != null">#{slienceVoice},</if>
-            <if test="submoduleText != null">#{submoduleText},</if>
-            <if test="submoduleVoice != null">#{submoduleVoice},</if>
-            <if test="noClearlyText != null">#{noClearlyText},</if>
-            <if test="noClearlyVoice != null">#{noClearlyVoice},</if>
-            <if test="categoryName != null">#{categoryName},</if>
-            <if test="targetOptions != null">#{targetOptions},</if>
-            <if test="language != null and language != ''">#{language},</if>
-            <if test="playWavOnly != null">#{playWavOnly},</if>
-            <if test="isEnable != null">#{isEnable},</if>
-            <if test="isDel != null">#{isDel},</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="updateIvrLibaTemplatescript" parameterType="com.smartor.domain.IvrLibaTemplatescript">
-        update ivr_liba_templatescript
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="templateQuestionNum != null">templateQuestionNum = #{templateQuestionNum},</if>
-            <if test="templateID != null and templateID != ''">templateID = #{templateID},</if>
-            <if test="templateTargetID != null and templateTargetID != ''">templateTargetID = #{templateTargetID},</if>
-            <if test="questionID != null and questionID != ''">questionID = #{questionID},</if>
-            <if test="questionPoint != null and questionPoint != ''">questionPoint = #{questionPoint},</if>
-            <if test="questionText != null">questionText = #{questionText},</if>
-            <if test="questionVoice != null">questionVoice = #{questionVoice},</if>
-            <if test="noMatchText != null">noMatchText = #{noMatchText},</if>
-            <if test="noMatchVoice != null">noMatchVoice = #{noMatchVoice},</if>
-            <if test="slienceText != null">slienceText = #{slienceText},</if>
-            <if test="slienceVoice != null">slienceVoice = #{slienceVoice},</if>
-            <if test="submoduleText != null">submoduleText = #{submoduleText},</if>
-            <if test="submoduleVoice != null">submoduleVoice = #{submoduleVoice},</if>
-            <if test="noClearlyText != null">noClearlyText = #{noClearlyText},</if>
-            <if test="noClearlyVoice != null">noClearlyVoice = #{noClearlyVoice},</if>
-            <if test="categoryName != null">categoryName = #{categoryName},</if>
-            <if test="targetOptions != null">targetOptions = #{targetOptions},</if>
-            <if test="language != null and language != ''">language = #{language},</if>
-            <if test="playWavOnly != null">playWavOnly = #{playWavOnly},</if>
-            <if test="isEnable != null">isEnable = #{isEnable},</if>
-            <if test="isDel != null">isDel = #{isDel},</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 templateQuestionID = #{templateQuestionID}
-    </update>
-
-    <delete id="deleteIvrLibaTemplatescriptByTemplateQuestionID" parameterType="String">
-        delete from ivr_liba_templatescript where templateQuestionID = #{templateQuestionID}
-    </delete>
-
-    <delete id="deleteIvrLibaTemplatescriptByTemplateQuestionIDs" parameterType="String">
-        delete from ivr_liba_templatescript where templateQuestionID in 
-        <foreach item="templateQuestionID" collection="array" open="(" separator="," close=")">
-            #{templateQuestionID}
-        </foreach>
-    </delete>
-</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetAssortMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetAssortMapper.xml
deleted file mode 100644
index 76be772..0000000
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplatetargetAssortMapper.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.smartor.mapper.IvrLibaTemplatetargetAssortMapper">
-
-    <resultMap type="com.smartor.domain.IvrLibaTemplatetargetAssort" id="IvrLibaTemplatetargetAssortResult">
-        <result property="id" column="id"/>
-        <result property="indexAssortName" column="index_assort_name"/>
-        <result property="delFlag" column="del_flag"/>
-        <result property="createTime" column="create_time"/>
-        <result property="updateTime" column="update_time"/>
-        <result property="pid" column="pid"/>
-    </resultMap>
-
-    <sql id="selectIvrLibaTemplatetargetAssortVo">
-        select id, index_assort_name, del_flag, create_time, update_time, pid
-        from ivr_liba_templatetarget_assort
-    </sql>
-
-    <select id="selectIvrLibaTemplatetargetAssortList" parameterType="com.smartor.domain.IvrLibaTemplatetargetAssort"
-            resultMap="IvrLibaTemplatetargetAssortResult">
-        <include refid="selectIvrLibaTemplatetargetAssortVo"/>
-        <where>
-            <if test="indexAssortName != null  and indexAssortName != ''">and index_assort_name like concat('%',
-                #{indexAssortName}, '%')
-            </if>
-            <if test="pid != null ">and pid = #{pid}</if>
-        </where>
-    </select>
-
-    <select id="selectIvrLibaTemplatetargetAssortById" parameterType="Long"
-            resultMap="IvrLibaTemplatetargetAssortResult">
-        <include refid="selectIvrLibaTemplatetargetAssortVo"/>
-        where id = #{id}
-    </select>
-
-    <insert id="insertIvrLibaTemplatetargetAssort" parameterType="com.smartor.domain.IvrLibaTemplatetargetAssort">
-        insert into ivr_liba_templatetarget_assort
-        <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="id != null">id,</if>
-            <if test="indexAssortName != null and indexAssortName != ''">index_assort_name,</if>
-            <if test="delFlag != null">del_flag,</if>
-            <if test="createTime != null">create_time,</if>
-            <if test="updateTime != null">update_time,</if>
-            <if test="pid != null">pid,</if>
-        </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="id != null">#{id},</if>
-            <if test="indexAssortName != null and indexAssortName != ''">#{indexAssortName},</if>
-            <if test="delFlag != null">#{delFlag},</if>
-            <if test="createTime != null">#{createTime},</if>
-            <if test="updateTime != null">#{updateTime},</if>
-            <if test="pid != null">#{pid},</if>
-        </trim>
-    </insert>
-
-    <update id="updateIvrLibaTemplatetargetAssort" parameterType="com.smartor.domain.IvrLibaTemplatetargetAssort">
-        update ivr_liba_templatetarget_assort
-        <trim prefix="SET" suffixOverrides=",">
-            <if test="indexAssortName != null and indexAssortName != ''">index_assort_name = #{indexAssortName},</if>
-            <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
-            <if test="updateTime != null">update_time = #{updateTime},</if>
-            <if test="pid != null">pid = #{pid},</if>
-        </trim>
-        where id = #{id}
-    </update>
-
-    <delete id="deleteIvrLibaTemplatetargetAssortById" parameterType="Long">
-        delete
-        from ivr_liba_templatetarget_assort
-        where id = #{id}
-    </delete>
-
-    <delete id="deleteIvrLibaTemplatetargetAssortByIds" parameterType="String">
-        delete from ivr_liba_templatetarget_assort where id in
-        <foreach item="id" collection="array" open="(" separator="," close=")">
-            #{id}
-        </foreach>
-    </delete>
-</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/SvyCategoryMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyCategoryMapper.xml
index 63e8534..4b1a2da 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyCategoryMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyCategoryMapper.xml
@@ -15,6 +15,8 @@
         <result property="createTime" column="create_time"/>
         <result property="isupload" column="isupload"/>
         <result property="uploadTime" column="upload_time"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
     </resultMap>
 
     <sql id="selectSvyCategoryVo">
@@ -27,6 +29,8 @@
                create_by,
                create_time,
                isupload,
+               pid,
+               guid,
                upload_time
         from svy_category
     </sql>
@@ -60,7 +64,7 @@
                 and categoryname = #{categoryname}
             </if>
         </where>
-     group by  a.categoryname
+        group by a.categoryname
     </select>
 
     <insert id="insertSvyCategory" parameterType="com.smartor.domain.SvyCategory" useGeneratedKeys="true"
@@ -76,6 +80,8 @@
             <if test="createTime != null">create_time,</if>
             <if test="isupload != null">isupload,</if>
             <if test="uploadTime != null">upload_time,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="categoryname != null">#{categoryname},</if>
@@ -87,6 +93,8 @@
             <if test="createTime != null">#{createTime},</if>
             <if test="isupload != null">#{isupload},</if>
             <if test="uploadTime != null">#{uploadTime},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
         </trim>
     </insert>
 
@@ -102,15 +110,19 @@
             <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="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteSvyCategoryById" parameterType="Long">
-        delete
-        from svy_category
+    <update id="deleteSvyCategoryById" parameterType="Long">
+        update svy_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null and delFlag != ''">del_flag = 1</if>
+        </trim>
         where id = #{id}
-    </delete>
+    </update>
 
     <delete id="deleteSvyCategoryByIds" parameterType="String">
         delete from svy_category where id in
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTitleCategoryMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTitleCategoryMapper.xml
new file mode 100644
index 0000000..4807eb5
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTitleCategoryMapper.xml
@@ -0,0 +1,121 @@
+<?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.SvyLibTitleCategoryMapper">
+
+    <resultMap type="com.smartor.domain.SvyLibTitleCategory" id="SvyLibTitleCategoryResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="seqno" column="seqno"/>
+    </resultMap>
+
+    <sql id="selectSvyLibTitleCategoryVo">
+        select id,
+               name,
+               pid,
+               guid,
+               del_flag,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               orgid,
+               seqno
+        from svy_lib_title_category
+    </sql>
+
+    <select id="selectSvyLibTitleCategoryList" parameterType="com.smartor.domain.SvyLibTitleCategory"
+            resultMap="SvyLibTitleCategoryResult">
+        <include refid="selectSvyLibTitleCategoryVo"/>
+        <where>
+            del_flag=0
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="orgid != null ">and orgid = #{orgid}</if>
+            <if test="seqno != null ">and seqno = #{seqno}</if>
+
+        </where>
+    </select>
+
+    <select id="selectSvyLibTitleCategoryById" parameterType="Long" resultMap="SvyLibTitleCategoryResult">
+        <include refid="selectSvyLibTitleCategoryVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSvyLibTitleCategory" parameterType="com.smartor.domain.SvyLibTitleCategory"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into svy_lib_title_category
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">name,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="seqno != null">seqno,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">#{name},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="seqno != null">#{seqno},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSvyLibTitleCategory" parameterType="com.smartor.domain.SvyLibTitleCategory">
+        update svy_lib_title_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteSvyLibTitleCategoryById" parameterType="Long">
+        update svy_lib_title_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null">del_flag = 1,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSvyLibTitleCategoryByIds" parameterType="String">
+        delete from svy_lib_title_category where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from ivr_liba_extemplate_category
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml
new file mode 100644
index 0000000..1e34aef
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml
@@ -0,0 +1,127 @@
+<?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.SvyLibTopicCategoryMapper">
+
+    <resultMap type="com.smartor.domain.SvyLibTopicCategory" id="SvyLibTopicCategoryResult">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="topicid" column="topicid"/>
+        <result property="pid" column="pid"/>
+        <result property="guid" column="guid"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="orgid" column="orgid"/>
+        <result property="seqno" column="seqno"/>
+    </resultMap>
+
+    <sql id="selectSvyLibTopicCategoryVo">
+        select id,
+               name,
+               topicid,
+               pid,
+               guid,
+               del_flag,
+               create_by,
+               create_time,
+               update_by,
+               update_time,
+               seqno,
+               orgid
+        from svy_lib_topic_category
+    </sql>
+
+    <select id="selectSvyLibTopicCategoryList" parameterType="com.smartor.domain.SvyLibTopicCategory"
+            resultMap="SvyLibTopicCategoryResult">
+        <include refid="selectSvyLibTopicCategoryVo"/>
+        <where>
+            del_flat=0
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="topicid != null ">and topicid = #{topicid}</if>
+            <if test="pid != null ">and pid = #{pid}</if>
+            <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="orgid != null ">and orgid = #{orgid}</if>
+            <if test="seqno != null ">and seqno = #{seqno}</if>
+        </where>
+        order by seqno asc
+    </select>
+
+    <select id="selectSvyLibTopicCategoryById" parameterType="Long" resultMap="SvyLibTopicCategoryResult">
+        <include refid="selectSvyLibTopicCategoryVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSvyLibTopicCategory" parameterType="com.smartor.domain.SvyLibTopicCategory"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into svy_lib_topic_category
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">name,</if>
+            <if test="seqno != null">seqno,</if>
+            <if test="topicid != null">topicid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="orgid != null">orgid,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">#{name},</if>
+            <if test="seqno != null">#{seqno},</if>
+            <if test="topicid != null">#{topicid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="orgid != null">#{orgid},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSvyLibTopicCategory" parameterType="com.smartor.domain.SvyLibTopicCategory">
+        update svy_lib_topic_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="seqno != null">seqno = #{seqno},</if>
+            <if test="topicid != null">topicid = #{topicid},</if>
+            <if test="pid != null">pid = #{pid},</if>
+            <if test="guid != null">guid = #{guid},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSvyLibTopicCategoryByIds" parameterType="String">
+        delete
+        from svy_lib_topic_category
+        where id = #{id}
+    </delete>
+
+    <update id="deleteSvyLibTopicCategoryById" parameterType="Long">
+        update svy_lib_topic_category
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="delFlag != null">del_flag = ,</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+
+    <select id="selectSeqMax" resultType="integer">
+        select max(seqno) seqno
+        from iivr_liba_template_assort
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml
index cb2012a..b04633e 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTopicMapper.xml
@@ -23,6 +23,7 @@
         <result property="isupload" column="isupload"/>
         <result property="uploadTime" column="upload_time"/>
         <result property="tag" column="tag"/>
+        <result property="categoryid" column="categoryid"/>
     </resultMap>
 
     <sql id="selectSvyLibTopicVo">
@@ -44,6 +45,7 @@
                isupload,
                upload_time,
                tag,
+               categoryid,
                svy_topicid as svyTopicId
         from svy_lib_topic
     </sql>
@@ -53,6 +55,7 @@
         <where>
             <if test="oldid != null ">and oldid = #{oldid}</if>
             <if test="topictype != null ">and topictype = #{topictype}</if>
+            <if test="categoryid != null ">and categoryid = #{categoryid}</if>
             <if test="topic != null  and topic != ''">and topic = #{topic}</if>
             <if test="ishide != null ">and ishide = #{ishide}</if>
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
@@ -87,6 +90,7 @@
             <if test="uploadTime != null">upload_time,</if>
             <if test="tag != null">tag,</if>
             <if test="svyTopicId != null">svy_topicid,</if>
+            <if test="categoryid != null">categoryid,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="oldid != null">#{oldid},</if>
@@ -107,6 +111,7 @@
             <if test="uploadTime != null">#{uploadTime},</if>
             <if test="tag != null">#{tag},</if>
             <if test="svyTopicId != null">#{svyTopicId},</if>
+            <if test="categoryid != null">#{categoryid},</if>
         </trim>
     </insert>
 
@@ -129,6 +134,7 @@
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
+            <if test="categoryid != null">categoryid = #{categoryid},</if>
         </trim>
         where topicid = #{topicid}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTopicoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTopicoptionMapper.xml
index ac18933..7e804b2 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTopicoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTopicoptionMapper.xml
@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.SvyLibTopicoptionMapper">
 
-    <resultMap type="SvyLibTopicoption" id="SvyLibTopicoptionResult">
+    <resultMap type="com.smartor.domain.SvyLibTopicoption" id="SvyLibTopicoptionResult">
         <result property="optionid" column="optionid"/>
         <result property="topicid" column="topicid"/>
         <result property="svyid" column="svyid"/>
@@ -73,7 +73,7 @@
         from svy_lib_topicoption
     </sql>
 
-    <select id="selectSvyLibTopicoptionList" parameterType="SvyLibTopicoption" resultMap="SvyLibTopicoptionResult">
+    <select id="selectSvyLibTopicoptionList" parameterType="com.smartor.domain.SvyLibTopicoption" resultMap="SvyLibTopicoptionResult">
         <include refid="selectSvyLibTopicoptionVo"/>
         <where>
             <if test="topicid != null ">and topicid = #{topicid}</if>
@@ -109,7 +109,7 @@
         where optionid = #{optionid}
     </select>
 
-    <insert id="insertSvyLibTopicoption" parameterType="SvyLibTopicoption" useGeneratedKeys="true"
+    <insert id="insertSvyLibTopicoption" parameterType="com.smartor.domain.SvyLibTopicoption" useGeneratedKeys="true"
             keyProperty="optionid">
         insert into svy_lib_topicoption
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -178,7 +178,7 @@
         </trim>
     </insert>
 
-    <update id="updateSvyLibTopicoption" parameterType="SvyLibTopicoption">
+    <update id="updateSvyLibTopicoption" parameterType="com.smartor.domain.SvyLibTopicoption">
         update svy_lib_topicoption
         <trim prefix="SET" suffixOverrides=",">
             <if test="topicid != null">topicid = #{topicid},</if>

--
Gitblit v1.9.3