From 01a79d5b431b71cc79cf5f6cc92cd4f3432781dd Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 30 四月 2024 12:39:54 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/domain/PatArchiveReq.java                             |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java     |    3 
 smartor/src/main/java/com/smartor/domain/IvrLibaScript.java                             |    6 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java                           |    7 
 smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetServiceImpl.java            |   29 
 smartor/src/main/java/com/smartor/domain/PatArchive.java                                |    8 
 smartor/src/main/java/com/smartor/mapper/PatArchiveOutMapper.java                       |   58 +
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                        |   10 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetController.java |   10 
 ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java                             |    9 
 smartor/src/main/java/com/smartor/service/IPatArchiveOutService.java                    |   56 +
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml               |    4 
 smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java                           |    6 
 smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java            |  586 +++++++++++-----
 smartor/src/main/java/com/smartor/domain/IvrTask.java                                   |   15 
 smartor/src/main/java/com/smartor/config/PhoneUtils.java                                |    2 
 smartor/src/main/java/com/smartor/service/impl/PatArchiveOutServiceImpl.java            |   83 ++
 smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml                       |    2 
 smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml                             |   12 
 smartor/src/main/resources/mapper/smartor/PatArchiveOutMapper.xml                       |  230 ++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveOutController.java |   90 ++
 smartor/src/main/resources/mapper/smartor/PatMedPhysicalMapper.xml                      |   28 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java        |    8 
 smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml                       |    5 
 smartor/src/main/java/com/smartor/service/IIvrLibaTargetService.java                    |   11 
 smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml                       |   32 
 smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java                             |    6 
 smartor/src/main/java/com/smartor/domain/QuestionMessage.java                           |    4 
 smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml                          |   13 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java |   14 
 smartor/src/main/java/com/smartor/domain/PatArchiveOut.java                             |  216 ++++++
 smartor/src/main/java/com/smartor/domain/PatMedInhosp.java                              |   12 
 smartor/src/main/java/com/smartor/domain/PhoneCallBackVO.java                           |    1 
 smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java                    |    2 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java                       |  229 ------
 ruoyi-admin/src/main/resources/application-druid.yml                                    |    4 
 ruoyi-admin/src/main/resources/logback.xml                                              |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java                                |    8 
 smartor/src/main/java/com/smartor/domain/IvrTaskVO.java                                 |   15 
 smartor/src/main/java/com/smartor/domain/PatMedPhysical.java                            |  245 ------
 40 files changed, 1,367 insertions(+), 716 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
index d314e86..d9fbf18 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
@@ -253,7 +253,8 @@
                             }
                             log.info("==============================Targetregex鐨勫�间负锛歿},   Targetregex2鐨勫�间负锛歿}", ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
 
-                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+                            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+
                                 //璇存槑鍖归厤姝g‘浜�
                                 ivrLibaTemplateScriptVO.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
                                 List<IvrLibaTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetController.java
index 6829dd0..5471fbc 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrLibaTargetController.java
@@ -125,4 +125,14 @@
 
         return rspData;
     }
+
+    /**
+     * 鎸囨爣娴嬭瘯闂鍖归厤
+     */
+    @ApiOperation("鎸囨爣娴嬭瘯闂鍖归厤")
+    @PostMapping("/targetQuesMate")
+    public AjaxResult targetQuesMate(@RequestBody IvrLibaTargetVO ivrLibaTarget) {
+        return success(ivrLibaTargetService.targetQuesMate(ivrLibaTarget));
+    }
+
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
index eefd066..f42d2d6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/IvrTaskSingleController.java
@@ -8,10 +8,13 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.smartor.domain.*;
+import com.smartor.domain.IvrTaskSingle;
+import com.smartor.domain.IvrTaskSingleVO;
+import com.smartor.domain.PhoneCallBackVO;
 import com.smartor.service.IIvrTaskSingleService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -25,13 +28,13 @@
  * @author ruoyi
  * @date 2024-02-02
  */
+@Slf4j
 @Api(description = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級")
 @RestController
 @RequestMapping("/smartor/tasksingle")
 public class IvrTaskSingleController extends BaseController {
     @Autowired
     private IIvrTaskSingleService ivrTaskcallService;
-
 
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
@@ -88,7 +91,6 @@
         return success(ivrTaskSingleVO);
     }
 
-
     /**
      * 浠诲姟鍙戦�佹墽琛�
      */
@@ -98,15 +100,15 @@
         return toAjax(ivrTaskcallService.heTaskSend(ivrTaskcallVO));
     }
 
-
     /**
      * 鐢佃瘽鍥炶皟浠诲姟
      */
     @ApiOperation("鐢佃瘽鍥炶皟浠诲姟")
     @PostMapping("/phoneCallBack")
     public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) {
-        //濡傛灉uuid鍦╮edis涓壘涓嶅埌锛岄偅灏辩洿鎺ユ姤寮傚父
-        return success(ivrTaskcallService.phoneCallBack(phoneCallBackVO));
+        log.error("鐢佃瘽鍥炶皟浠诲姟鎴愬姛浜嗕笉锛焮}", phoneCallBackVO);
+        ivrTaskcallService.phoneCallBack(phoneCallBackVO);
+        return success();
     }
 
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveOutController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveOutController.java
new file mode 100644
index 0000000..bca2caf
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveOutController.java
@@ -0,0 +1,90 @@
+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.PatArchiveOut;
+import com.smartor.service.IPatArchiveOutService;
+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;
+
+/**
+ * 澶栭儴鎮h�呮。妗圕ontroller
+ *
+ * @author ruoyi
+ * @date 2024-04-29
+ */
+@Api(description = "澶栭儴鎮h�呮。妗�")
+@RestController
+@RequestMapping("/smartor/patarchiveout")
+public class PatArchiveOutController extends BaseController {
+    @Autowired
+    private IPatArchiveOutService patArchiveOutService;
+
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗堝垪琛�
+     */
+    @ApiOperation("鏌ヨ澶栭儴鎮h�呮。妗堝垪琛�")
+    @PostMapping("/list")
+    public TableDataInfo list(PatArchiveOut patArchiveOut) {
+        startPage();
+        List<PatArchiveOut> list = patArchiveOutService.selectPatArchiveOutList(patArchiveOut);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭澶栭儴鎮h�呮。妗堝垪琛�
+     */
+    @ApiOperation("瀵煎嚭澶栭儴鎮h�呮。妗堝垪琛�")
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, PatArchiveOut patArchiveOut) {
+        List<PatArchiveOut> list = patArchiveOutService.selectPatArchiveOutList(patArchiveOut);
+        ExcelUtil<PatArchiveOut> util = new ExcelUtil<PatArchiveOut>(PatArchiveOut.class);
+        util.exportExcel(response, list, "澶栭儴鎮h�呮。妗堟暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇澶栭儴鎮h�呮。妗堣缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇澶栭儴鎮h�呮。妗堣缁嗕俊鎭�")
+    @GetMapping(value = "/getInfo/{patid}")
+    public AjaxResult getInfo(@PathVariable("patid") Long patid) {
+        return success(patArchiveOutService.selectPatArchiveOutByPatid(patid));
+    }
+
+    /**
+     * 鏂板澶栭儴鎮h�呮。妗�
+     */
+    @ApiOperation("鏂板澶栭儴鎮h�呮。妗�")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody PatArchiveOut patArchiveOut) {
+        return toAjax(patArchiveOutService.insertPatArchiveOut(patArchiveOut));
+    }
+
+    /**
+     * 淇敼澶栭儴鎮h�呮。妗�
+     */
+    @ApiOperation("淇敼澶栭儴鎮h�呮。妗�")
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody PatArchiveOut patArchiveOut) {
+        return toAjax(patArchiveOutService.updatePatArchiveOut(patArchiveOut));
+    }
+
+    /**
+     * 鍒犻櫎澶栭儴鎮h�呮。妗�
+     */
+    @ApiOperation("鍒犻櫎澶栭儴鎮h�呮。妗�")
+    @GetMapping("/remove/{patids}")
+    public AjaxResult remove(@PathVariable Long[] patids) {
+        return toAjax(patArchiveOutService.deletePatArchiveOutByPatids(patids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
index cc4b61d..8ebc55f 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
@@ -23,7 +23,7 @@
 
 /**
  * 鑿滃崟淇℃伅
- * 
+ *
  * @author ruoyi
  */
 @RestController
@@ -82,7 +82,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:menu:add')")
     @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.INSERT)
-    @PostMapping
+    @PostMapping("/add")
     public AjaxResult add(@Validated @RequestBody SysMenu menu)
     {
         if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
@@ -126,7 +126,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:menu:remove')")
     @Log(title = "鑿滃崟绠$悊", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{menuId}")
+    @GetMapping("/remove/{menuId}")
     public AjaxResult remove(@PathVariable("menuId") Long menuId)
     {
         if (menuService.hasChildByMenuId(menuId))
@@ -139,4 +139,4 @@
         }
         return toAjax(menuService.deleteMenuById(menuId));
     }
-}
\ No newline at end of file
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
index 7f8fbdb..babadc5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
@@ -1,5 +1,7 @@
 package com.ruoyi.web.task;
 
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.rabbitmq.client.Channel;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.uuid.IdUtils;
@@ -8,6 +10,7 @@
 import com.smartor.domain.IvrLibaTemplateVO;
 import com.smartor.domain.IvrTaskSingle;
 import com.smartor.domain.QuestionMessage;
+import com.smartor.mapper.IvrTaskSingleMapper;
 import org.springframework.amqp.core.Message;
 
 import java.io.IOException;
@@ -60,9 +63,11 @@
                 redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES);
 
                 //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇濓紙闇�瑕佸皢鍥炶皟鏂规硶浼犲叆锛岃繖涓瓑鈥濈數璇濇柟鈥滃憡璇夋�庝箞浼狅紝鐜板湪鍏堢┖鐫�,杩樻湁绗竴鍙ラ棶棰樿瘽鏈級
-//            phoneUtils.ob(uuid, null, ivrTaskcall.getPhone(), null, null, null, null, null, null, null, null);
-                String ob = phoneUtils.ob("", "", "", "", "", "", "", "3001", "", true);
+                String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskcall.getPhone(), uuid, true);
                 System.out.println("OB鐨勫�间负锛�" + ob);
+                //閫氫簡涔嬪悗锛岀珛椹幓璋冨紑鍦虹櫧
+                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitBefore()+returnQues.getNowQuestion().getQuestionText(), uuid);
+
                 //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
 
                 channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
index 75f14db..07f6726 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
@@ -6,6 +6,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.SpringVersion;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 //@SpringBootTest
 //@RunWith(SpringRunner.class)
 public class MQTest {
@@ -14,6 +17,11 @@
 
     @Test
     public void testSend() {
+
+
+        Pattern pattern = Pattern.compile("(?=.*(?:杩樿|鎸哄ソ|鍙互|涓嶉敊)).*$");
+        Matcher matcher = pattern.matcher("杩樿鍚э紝灏辨槸杩樻湁鐐圭柤");
+        System.out.println(matcher.matches());
         System.out.println("Spring Framework鐗堟湰锛�" + SpringVersion.getVersion());
 //        rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, "phone.001", "娴嬭瘯鏁版嵁001");
 //        rabbitTemplate.convertAndSend(RabbitMqConfig.EXCHANGE_NAME, "phone.002", "娴嬭瘯鏁版嵁002");
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 45c90ae..02c2a31 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -1,8 +1,8 @@
 # 鏁版嵁婧愰厤缃�
 spring:
   rabbitmq:
-    host: 116.62.18.175
-#    host: 127.0.0.1
+#    host: 116.62.18.175
+    host: 127.0.0.1
     password: guest
     port: 5672
     username: guest
diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml
index ec516c9..9dfaf9a 100644
--- a/ruoyi-admin/src/main/resources/logback.xml
+++ b/ruoyi-admin/src/main/resources/logback.xml
@@ -81,7 +81,7 @@
 	</root>
 
 	<!--绯荤粺鎿嶄綔鏃ュ織-->
-    <root level="debug">
+    <root level="info">
         <appender-ref ref="file_info" />
         <appender-ref ref="file_error" />
     </root>
diff --git a/smartor/src/main/java/com/smartor/config/PhoneUtils.java b/smartor/src/main/java/com/smartor/config/PhoneUtils.java
index 669ce91..122a7f7 100644
--- a/smartor/src/main/java/com/smartor/config/PhoneUtils.java
+++ b/smartor/src/main/java/com/smartor/config/PhoneUtils.java
@@ -251,7 +251,7 @@
      *
      * @return
      */
-    public String hangup(String kg_uuid, String dnis, String data, String app_id, String ani, String special_ch, String sign, Boolean call_uuid) {
+    public String hangup(String kg_uuid, String dnis, String data, String app_id, String ani, String special_ch, String sign, String call_uuid) {
         Map<String, Object> map = new HashMap<>();
         map.put("kg_uuid", kg_uuid);
         map.put("data", data);
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
index b05ddad..80d4345 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScript.java
@@ -54,7 +54,7 @@
      */
     @ApiModelProperty("鏃犲尮閰嶈瘽鏈�")
     @Excel(name = "鏃犲尮閰嶈瘽鏈�")
-    private String nomatchtext;
+    private String noMatchText;
 
     /**
      * 鏃犲尮閰嶈瘽鏈闊�
@@ -68,7 +68,7 @@
      */
     @ApiModelProperty("闈欓粯璇濇湳")
     @Excel(name = "闈欓粯璇濇湳")
-    private String sliencetext;
+    private String slienceText;
 
     /**
      * 闈欓粯璇濇湳璇煶
@@ -96,7 +96,7 @@
      */
     @ApiModelProperty("鍚笉娓呰瘽鏈�")
     @Excel(name = "鍚笉娓呰瘽鏈�")
-    private String noclearlytext;
+    private String noClearlyText;
 
     /**
      * 鍚笉娓呰瘽鏈闊�
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
index 525cb73..60cc264 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaScriptVO.java
@@ -69,7 +69,7 @@
      */
     @ApiModelProperty("鏃犲尮閰嶈瘽鏈�")
     @Excel(name = "鏃犲尮閰嶈瘽鏈�")
-    private String nomatchtext;
+    private String noMatchText;
 
     /**
      * 鏃犲尮閰嶈瘽鏈闊�
@@ -83,7 +83,7 @@
      */
     @ApiModelProperty("闈欓粯璇濇湳")
     @Excel(name = "闈欓粯璇濇湳")
-    private String sliencetext;
+    private String slienceText;
 
     /**
      * 闈欓粯璇濇湳璇煶
@@ -111,7 +111,7 @@
      */
     @ApiModelProperty("鍚笉娓呰瘽鏈�")
     @Excel(name = "鍚笉娓呰瘽鏈�")
-    private String noclearlytext;
+    private String noClearlyText;
 
     /**
      * 鍚笉娓呰瘽鏈闊�
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
index d1468e4..1a2cc6d 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
@@ -203,4 +203,11 @@
     @ApiModelProperty(value = "鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
     private String reply;
 
+    /**
+     * 璇磋瘽鍐呭
+     */
+    @Excel(name = "璇磋瘽鍐呭")
+    @ApiModelProperty(value = "璇磋瘽鍐呭")
+    private String content;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
index d73bac6..968ae44 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
@@ -21,6 +21,7 @@
  * @author ruoyi
  * @date 2023-12-14
  */
+@Data
 @ApiModel(value = "IvrLibaTargetoption", description = "鎸囨爣閫夐」搴撳璞�")
 public class IvrLibaTargetoption extends BaseEntity {
     private static final long serialVersionUID = 1L;
@@ -174,232 +175,4 @@
     @Excel(name = "pageSize")
     private Integer pageSize;
 
-    public Long getTargetoptionid() {
-        return targetoptionid;
-    }
-
-    public void setTargetoptionid(Long targetoptionid) {
-        this.targetoptionid = targetoptionid;
-    }
-
-    public Long getTargetid() {
-        return targetid;
-    }
-
-    public void setTargetid(Long targetid) {
-        this.targetid = targetid;
-    }
-
-    public String getTargettype() {
-        return targettype;
-    }
-
-    public void setTargettype(String targettype) {
-        this.targettype = targettype;
-    }
-
-    public String getCategoryName() {
-        return categoryName;
-    }
-
-    public void setCategoryName(String categoryName) {
-        this.categoryName = categoryName;
-    }
-
-    public String getTargetvalue() {
-        return targetvalue;
-    }
-
-    public void setTargetvalue(String targetvalue) {
-        this.targetvalue = targetvalue;
-    }
-
-    public String getTargetregex() {
-        return targetregex;
-    }
-
-    public void setTargetregex(String targetregex) {
-        this.targetregex = targetregex;
-    }
-
-    public String getTargetregex2() {
-        return targetregex2;
-    }
-
-    public void setTargetregex2(String targetregex2) {
-        this.targetregex2 = targetregex2;
-    }
-
-    public String getNodynamiccruxsJson() {
-        return nodynamiccruxsJson;
-    }
-
-    public void setNodynamiccruxsJson(String nodynamiccruxsJson) {
-        this.nodynamiccruxsJson = nodynamiccruxsJson;
-    }
-
-    public String getDynamiccruxsJson() {
-        return dynamiccruxsJson;
-    }
-
-    public void setDynamiccruxsJson(String dynamiccruxsJson) {
-        this.dynamiccruxsJson = dynamiccruxsJson;
-    }
-
-    public List<String> getNodynamiccruxs() {
-        return nodynamiccruxs;
-    }
-
-    public void setNodynamiccruxs(List<String> nodynamiccruxs) {
-        this.nodynamiccruxs = nodynamiccruxs;
-    }
-
-    public List<String> getDynamiccruxs() {
-        return dynamiccruxs;
-    }
-
-    public void setDynamiccruxs(List<String> dynamiccruxs) {
-        this.dynamiccruxs = dynamiccruxs;
-    }
-
-    public String getOptiondesc() {
-        return optiondesc;
-    }
-
-    public void setOptiondesc(String optiondesc) {
-        this.optiondesc = optiondesc;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    public Long getVersion() {
-        return version;
-    }
-
-    public void setVersion(Long version) {
-        this.version = version;
-    }
-
-    public String getGroupid() {
-        return groupid;
-    }
-
-    public void setGroupid(String groupid) {
-        this.groupid = groupid;
-    }
-
-    public Long getIsabnormal() {
-        return isabnormal;
-    }
-
-    public void setIsabnormal(Long isabnormal) {
-        this.isabnormal = isabnormal;
-    }
-
-    public Long getWarnup() {
-        return warnup;
-    }
-
-    public void setWarnup(Long warnup) {
-        this.warnup = warnup;
-    }
-
-    public Long getWarndown() {
-        return warndown;
-    }
-
-    public void setWarndown(Long warndown) {
-        this.warndown = warndown;
-    }
-
-    public String getDelFlag() {
-        return delFlag;
-    }
-
-    public void setDelFlag(String delFlag) {
-        this.delFlag = delFlag;
-    }
-
-    public Long getIsupload() {
-        return isupload;
-    }
-
-    public void setIsupload(Long isupload) {
-        this.isupload = isupload;
-    }
-
-    public Date getUploadTime() {
-        return uploadTime;
-    }
-
-    public void setUploadTime(Date uploadTime) {
-        this.uploadTime = uploadTime;
-    }
-
-    public String getOrgid() {
-        return orgid;
-    }
-
-    public void setOrgid(String orgid) {
-        this.orgid = orgid;
-    }
-
-    public Long getPid() {
-        return pid;
-    }
-
-    public void setPid(Long pid) {
-        this.pid = pid;
-    }
-
-    public String getGuid() {
-        return guid;
-    }
-
-    public void setGuid(String guid) {
-        this.guid = guid;
-    }
-
-    public Integer getIsoperation() {
-        return isoperation;
-    }
-
-    public void setIsoperation(Integer isoperation) {
-        this.isoperation = isoperation;
-    }
-
-    public Integer getAllitems() {
-        return allitems;
-    }
-
-    public void setAllitems(Integer allitems) {
-        this.allitems = allitems;
-    }
-
-    public Integer getPageNum() {
-        return pageNum;
-    }
-
-    public void setPageNum(Integer pageNum) {
-        this.pageNum = pageNum;
-    }
-
-    public Integer getPageSize() {
-        return pageSize;
-    }
-
-    public void setPageSize(Integer pageSize) {
-        this.pageSize = pageSize;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("targetoptionid", getTargetoptionid()).append("targetid", getTargetid()).append("targettype", getTargettype()).append("categoryName", getCategoryName()).append("targetvalue", getTargetvalue()).append("targetregex", getTargetregex()).append("optiondesc", getOptiondesc()).append("language", getLanguage()).append("version", getVersion()).append("groupid", getGroupid()).append("isabnormal", getIsabnormal()).append("warnup", getWarnup()).append("warndown", getWarndown()).append("delFlag", getDelFlag()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).append("orgid", getOrgid()).append("pid", getPid()).append("guid", getGuid()).toString();
-    }
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTask.java b/smartor/src/main/java/com/smartor/domain/IvrTask.java
index 4fa72d1..5d2a6e8 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTask.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTask.java
@@ -257,4 +257,19 @@
     @ApiModelProperty("pageSize")
     private Integer pageSize;
 
+    /**
+     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�
+     */
+    @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�")
+    @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛�")
+    private String hospType;
+
+    /**
+     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
+     */
+    @Excel(name = "  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  ")
+    @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
+    private String hospno;
+
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
index 11556a1..4a90bd2 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskVO.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -188,5 +189,19 @@
     @Excel(name = " 鏈彂閫� ")
     private Long wfs;
 
+    /**
+     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�
+     */
+    @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�")
+    @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛�")
+    private String hospType;
+
+    /**
+     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
+     */
+    @Excel(name = "  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  ")
+    @ApiModelProperty(value = "灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�")
+    private String hospno;
+
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/PatArchive.java b/smartor/src/main/java/com/smartor/domain/PatArchive.java
index e4b514e..d169c2c 100644
--- a/smartor/src/main/java/com/smartor/domain/PatArchive.java
+++ b/smartor/src/main/java/com/smartor/domain/PatArchive.java
@@ -118,6 +118,7 @@
      */
     @ApiModelProperty("寤烘。鏃堕棿")
     @Excel(name = " 寤烘。鏃堕棿 ")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date archivetime;
 
     /**
@@ -226,6 +227,13 @@
     @Excel(name = " 绉戝 ")
     private String bedNo;
 
+    /**
+     * 浼氬憳灞炴��:0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳
+     */
+    @ApiModelProperty("浼氬憳灞炴��:0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳")
+    @Excel(name = " 浼氬憳灞炴��:0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳 ")
+    private String membertype;
+
     @Override
     public String toString() {
         return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("patid", getPatid()).append("name", getName()).append("sex", getSex()).append("idcardno", getIdcardno()).append("birthdate", getBirthdate()).append("age", getAge()).append("source", getSource()).append("archivetime", getArchivetime()).append("archiveby", getArchiveby()).append("telcode", getTelcode()).append("relativetelcode", getRelativetelcode()).append("idcardtype", getIdcardtype()).append("orgid", getOrgid()).append("openid", getOpenid()).append("delFlag", getDelFlag()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("isupload", getIsupload()).append("uploadTime", getUploadTime()).toString();
diff --git a/smartor/src/main/java/com/smartor/domain/PatArchiveOut.java b/smartor/src/main/java/com/smartor/domain/PatArchiveOut.java
new file mode 100644
index 0000000..6894c20
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/PatArchiveOut.java
@@ -0,0 +1,216 @@
+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.Date;
+
+/**
+ * 澶栭儴鎮h�呮。妗堝璞� pat_archive_out
+ *
+ * @author ruoyi
+ * @date 2024-04-29
+ */
+@ApiModel(value = "PatArchiveOut", description = "澶栭儴鎮h�呮。妗堝璞�")
+@Data
+public class PatArchiveOut extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鑷ID
+     */
+    @ApiModelProperty("闂璇濇湳id锛堜富閿級")
+    private Long patid;
+
+    /**
+     * 鎮h�呯紪鍙�
+     */
+    @Excel(name = "鎮h�呯紪鍙�")
+    @ApiModelProperty("鎮h�呯紪鍙�")
+    private String patientno;
+
+    /**
+     * 鎮h�呯被鍨嬶細1銆侀棬璇娿��2銆佷綇闄€��3銆佷綋妫�
+     */
+    @Excel(name = "鎮h�呯被鍨嬶細1銆侀棬璇娿��2銆佷綇闄€��3銆佷綋妫�")
+    @ApiModelProperty("鎮h�呯被鍨嬶細1銆侀棬璇娿��2銆佷綇闄€��3銆佷綋妫�")
+    private String pattype;
+
+    /**
+     * 濮撳悕
+     */
+    @Excel(name = " 濮撳悕 ")
+    @ApiModelProperty("濮撳悕")
+    private String name;
+
+    /**
+     * 鎬у埆   1:鐢�  2:濂�
+     */
+    @Excel(name = " 鎬у埆   1:鐢�  2:濂�")
+    @ApiModelProperty("鎬у埆   1:鐢�  2:濂�")
+    private Long sex;
+
+    /**
+     * 姘戞棌
+     */
+    @Excel(name = "姘戞棌")
+    @ApiModelProperty("姘戞棌")
+    private String nation;
+
+    /**
+     * 绫嶈疮
+     */
+    @Excel(name = "绫嶈疮")
+    @ApiModelProperty("绫嶈疮")
+    private String nativePlace;
+
+    /**
+     * 灞呬綇鍦�
+     */
+    @Excel(name = "灞呬綇鍦�")
+    @ApiModelProperty("灞呬綇鍦�")
+    private String placeOfResidence;
+
+    /**
+     * 鍑虹敓鍦�
+     */
+    @Excel(name = "鍑虹敓鍦�")
+    @ApiModelProperty("鍑虹敓鍦�")
+    private String birthplace;
+
+    /**
+     * 璇佷欢鍙风爜
+     */
+    @Excel(name = " 璇佷欢鍙风爜 ")
+    @ApiModelProperty("璇佷欢鍙风爜")
+    private String idcardno;
+
+    /**
+     * 鐢熸棩
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 鐢熸棩 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("鐢熸棩")
+    private Date birthdate;
+
+    /**
+     * 骞撮緞
+     */
+    @Excel(name = " 骞撮緞 ")
+    @ApiModelProperty("骞撮緞")
+    private Long age;
+
+    /**
+     * 寤烘。鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 寤烘。鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("寤烘。鏃堕棿")
+    private Date archivetime;
+
+    /**
+     * 寤烘。浜�
+     */
+    @Excel(name = " 寤烘。浜� ")
+    @ApiModelProperty("寤烘。浜�")
+    private String archiveby;
+
+    /**
+     * 鎵嬫満鍙风爜
+     */
+    @Excel(name = " 鎵嬫満鍙风爜 ")
+    @ApiModelProperty("鎵嬫満鍙风爜")
+    private String telcode;
+
+    /**
+     * 浜插睘鍙风爜
+     */
+    @Excel(name = " 浜插睘鍙风爜 ")
+    @ApiModelProperty("浜插睘鍙风爜")
+    private String relativetelcode;
+
+    /**
+     * 璇佷欢绫诲瀷
+     */
+    @Excel(name = "璇佷欢绫诲瀷 ")
+    @ApiModelProperty("璇佷欢绫诲瀷")
+    private String idcardtype;
+
+    /**
+     * 鏈烘瀯ID
+     */
+    @Excel(name = "鏈烘瀯ID ")
+    @ApiModelProperty("鏈烘瀯ID")
+    private String orgid;
+
+    /**
+     * 寰俊openid
+     */
+    @Excel(name = "寰俊openid ")
+    @ApiModelProperty("寰俊openid")
+    private String openid;
+
+    /**
+     * 閽夐拤鍙�
+     */
+    @Excel(name = "閽夐拤鍙�")
+    @ApiModelProperty("閽夐拤鍙�")
+    private String dduserid;
+
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @ApiModelProperty("鍒犻櫎鏍囪")
+    private String delFlag;
+
+    /**
+     * 鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級
+     */
+    @Excel(name = " 鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級")
+    @ApiModelProperty("鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級")
+    private Long source;
+
+    /**
+     * 涓婁紶鏍囪
+     */
+    @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;
+
+    /**
+     * 浼氬憳灞炴�э細0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳
+     */
+    @Excel(name = "浼氬憳灞炴�э細0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳")
+    @ApiModelProperty("浼氬憳灞炴�э細0闈炰細鍛橈紝1涓�鑸細鍛樸��2閲嶈浼氬憳")
+    private String membertype;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java b/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java
index aeebb40..b2d1cbb 100644
--- a/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java
+++ b/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java
@@ -110,7 +110,7 @@
     private String visitno;
 
     /**
-     *  闄㈠尯鍚嶇О
+     * 闄㈠尯鍚嶇О
      */
     @ApiModelProperty(value = " 闄㈠尯鍚嶇О ")
     private String hospitaldistrictname;
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
index 5e59255..155e1d0 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
@@ -244,4 +244,16 @@
     @ApiModelProperty(value = "鏂规鐘舵�佹搷浣滄椂闂�")
     private Date schemetime;
 
+    /**
+     * 鎮h�呭鍚�
+     */
+    @ApiModelProperty(value = "鎮h�呭鍚�")
+    private String patname;
+
+    /**
+     * 鎮h�呯紪鍙�
+     */
+    @ApiModelProperty(value = "鎮h�呯紪鍙�")
+    private String patno;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
index eee3675..6d72ea3 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
@@ -47,6 +47,12 @@
     private Long patid;
 
     /**
+     * 鐥呬汉濮撳悕
+     */
+    @ApiModelProperty(value = " 鐥呬汉濮撳悕")
+    private String patname;
+
+    /**
      * 鍖婚櫌鍚嶇О
      */
     @ApiModelProperty(value = "鍖婚櫌鍚嶇О")
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedPhysical.java b/smartor/src/main/java/com/smartor/domain/PatMedPhysical.java
index 5240c4b..8d58691 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedPhysical.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedPhysical.java
@@ -4,6 +4,7 @@
 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;
@@ -11,10 +12,11 @@
 
 /**
  * 鎮h�呬綋妫�璁板綍瀵硅薄 pat_med_physical
- * 
+ *
  * @author smartor
  * @date 2023-03-04
  */
+@Data
 @ApiModel(value = "PatMedPhysical", description = "鎮h�呬綋妫�璁板綍瀵硅薄")
 public class PatMedPhysical extends BaseEntity
 {
@@ -83,6 +85,18 @@
     @Excel(name = " 绉戝鍚嶇О ")
     private String deptname;
 
+
+    /**  鐥呬汉濮撳悕  */
+    @ApiModelProperty(value = "鐥呬汉濮撳悕")
+    @Excel(name = " 鐥呬汉濮撳悕 ")
+    private String patname;
+
+
+    /**   鎮h�呮。妗堢紪鍙�  */
+    @ApiModelProperty(value = " 鎮h�呮。妗堢紪鍙�")
+    @Excel(name = "  鎮h�呮。妗堢紪鍙� ")
+    private String patno;
+
     /**  浣撴椤圭洰鍚嶇О  */
     @ApiModelProperty(value = "浣撴椤圭洰鍚嶇О")
     @Excel(name = " 浣撴椤圭洰鍚嶇О ")
@@ -116,234 +130,5 @@
     @ApiModelProperty(value = "鏂规鐘舵�佹搷浣滄椂闂�")
     private Date schemetime;
 
-    public void setId(Long id) 
-    {
-        this.id = id;
-    }
 
-    public Long getId() 
-    {
-        return id;
-    }
-    public void setSerialnum(String serialnum) 
-    {
-        this.serialnum = serialnum;
-    }
-
-    public String getSerialnum() 
-    {
-        return serialnum;
-    }
-    public void setPatid(Long patid) 
-    {
-        this.patid = patid;
-    }
-
-    public Long getPatid() 
-    {
-        return patid;
-    }
-    public void setDrcode(String drcode) 
-    {
-        this.drcode = drcode;
-    }
-
-    public String getDrcode() 
-    {
-        return drcode;
-    }
-    public void setDrname(String drname) 
-    {
-        this.drname = drname;
-    }
-
-    public String getDrname() 
-    {
-        return drname;
-    }
-    public void setHospitalcode(String hospitalcode) 
-    {
-        this.hospitalcode = hospitalcode;
-    }
-
-    public String getHospitalcode() 
-    {
-        return hospitalcode;
-    }
-    public void setHospitalname(String hospitalname) 
-    {
-        this.hospitalname = hospitalname;
-    }
-
-    public String getHospitalname() 
-    {
-        return hospitalname;
-    }
-    public void setPhysicaldate(Date physicaldate) 
-    {
-        this.physicaldate = physicaldate;
-    }
-
-    public Date getPhysicaldate() 
-    {
-        return physicaldate;
-    }
-    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 setDeptcode(String deptcode) 
-    {
-        this.deptcode = deptcode;
-    }
-
-    public String getDeptcode() 
-    {
-        return deptcode;
-    }
-    public void setDeptname(String deptname) 
-    {
-        this.deptname = deptname;
-    }
-
-    public String getDeptname() 
-    {
-        return deptname;
-    }
-    public void setProjectname(String projectname) 
-    {
-        this.projectname = projectname;
-    }
-
-    public String getProjectname() 
-    {
-        return projectname;
-    }
-    public void setProjectcode(String projectcode) 
-    {
-        this.projectcode = projectcode;
-    }
-
-    public String getProjectcode() 
-    {
-        return projectcode;
-    }
-    public void setState(Long state) 
-    {
-        this.state = state;
-    }
-
-    public Long getState() 
-    {
-        return state;
-    }
-    public void setSchemestatus(Long schemestatus) 
-    {
-        this.schemestatus = schemestatus;
-    }
-
-    public Long getSchemestatus() 
-    {
-        return schemestatus;
-    }
-    public void setGeneralschemestatus(Long generalschemestatus) 
-    {
-        this.generalschemestatus = generalschemestatus;
-    }
-
-    public Long getGeneralschemestatus() 
-    {
-        return generalschemestatus;
-    }
-    public void setDeptid(Long deptid) 
-    {
-        this.deptid = deptid;
-    }
-
-    public Long getDeptid() 
-    {
-        return deptid;
-    }
-    public void setProjectid(Long projectid) 
-    {
-        this.projectid = projectid;
-    }
-
-    public Long getProjectid() 
-    {
-        return projectid;
-    }
-    public void setSchemetime(Date schemetime) 
-    {
-        this.schemetime = schemetime;
-    }
-
-    public Date getSchemetime() 
-    {
-        return schemetime;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("serialnum", getSerialnum())
-            .append("patid", getPatid())
-            .append("drcode", getDrcode())
-            .append("drname", getDrname())
-            .append("hospitalcode", getHospitalcode())
-            .append("hospitalname", getHospitalname())
-            .append("physicaldate", getPhysicaldate())
-            .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("deptcode", getDeptcode())
-            .append("deptname", getDeptname())
-            .append("projectname", getProjectname())
-            .append("projectcode", getProjectcode())
-            .append("state", getState())
-            .append("schemestatus", getSchemestatus())
-            .append("generalschemestatus", getGeneralschemestatus())
-            .append("deptid", getDeptid())
-            .append("projectid", getProjectid())
-            .append("schemetime", getSchemetime())
-            .toString();
-    }
 }
diff --git a/smartor/src/main/java/com/smartor/domain/PhoneCallBackVO.java b/smartor/src/main/java/com/smartor/domain/PhoneCallBackVO.java
index c73dba2..601dedb 100644
--- a/smartor/src/main/java/com/smartor/domain/PhoneCallBackVO.java
+++ b/smartor/src/main/java/com/smartor/domain/PhoneCallBackVO.java
@@ -47,7 +47,6 @@
     /**
      * 璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛
      */
-    //璇煶璇嗗埆缁撴灉鏂囨湰
     @ApiModelProperty(value = "璇煶璇嗗埆缁撴灉鏂囨湰")
     private String textResult;
 
diff --git a/smartor/src/main/java/com/smartor/domain/QuestionMessage.java b/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
index 108c686..71476b7 100644
--- a/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
+++ b/smartor/src/main/java/com/smartor/domain/QuestionMessage.java
@@ -12,10 +12,10 @@
     //杩斿洖鐨勫唴瀹�
     private String content;
 
-    //寮�鍦虹櫧
+    //寮�鍦虹櫧(缁欐祴璇曞姛鑳界敤鐨�)
     private String kcb = null;
 
-    //缁撴潫璇�
+    //缁撴潫璇�(缁欐祴璇曞姛鑳界敤鐨�)
     private String jsy = null;
 
     //褰撳墠闂
diff --git a/smartor/src/main/java/com/smartor/mapper/PatArchiveOutMapper.java b/smartor/src/main/java/com/smartor/mapper/PatArchiveOutMapper.java
new file mode 100644
index 0000000..c9de4ee
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/PatArchiveOutMapper.java
@@ -0,0 +1,58 @@
+package com.smartor.mapper;
+
+import com.smartor.domain.PatArchiveOut;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 澶栭儴鎮h�呮。妗圡apper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-04-29
+ */
+@Mapper
+public interface PatArchiveOutMapper
+{
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗�
+     *
+     * @param patid 澶栭儴鎮h�呮。妗堜富閿�
+     * @return 澶栭儴鎮h�呮。妗�
+     */
+    public PatArchiveOut selectPatArchiveOutByPatid(Long patid);
+
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗堝垪琛�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 澶栭儴鎮h�呮。妗堥泦鍚�
+     */
+    public List<PatArchiveOut> selectPatArchiveOutList(PatArchiveOut patArchiveOut);
+
+    /**
+     * 鏂板澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    public int insertPatArchiveOut(PatArchiveOut patArchiveOut);
+
+    /**
+     * 淇敼澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    public int updatePatArchiveOut(PatArchiveOut patArchiveOut);
+
+    /**
+     * 鍒犻櫎澶栭儴鎮h�呮。妗�
+     *
+     * @param patid 澶栭儴鎮h�呮。妗堜富閿�
+     * @return 缁撴灉
+     */
+    public int deletePatArchiveOutByPatid(Long patid);
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/IIvrLibaTargetService.java b/smartor/src/main/java/com/smartor/service/IIvrLibaTargetService.java
index 3b40230..ba00b4c 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrLibaTargetService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrLibaTargetService.java
@@ -15,7 +15,7 @@
     /**
      * 鏌ヨ鎸囨爣閫夐」搴�
      *
-     * @param targetID 鎸囨爣閫夐」搴撲富閿�
+     * @param id 鎸囨爣閫夐」搴撲富閿�
      * @return 鎸囨爣閫夐」搴�
      */
     public IvrLibaTarget selectIvrLibaTargetByTargetID(Long id);
@@ -56,7 +56,7 @@
     /**
      * 鎵归噺鍒犻櫎鎸囨爣閫夐」搴�
      *
-     * @param targetIDs 闇�瑕佸垹闄ょ殑鎸囨爣閫夐」搴撲富閿泦鍚�
+     * @param ids 闇�瑕佸垹闄ょ殑鎸囨爣閫夐」搴撲富閿泦鍚�
      * @return 缁撴灉
      */
     public int deleteIvrLibaTargetByTargetIDs(Long[] ids);
@@ -64,8 +64,13 @@
     /**
      * 鍒犻櫎鎸囨爣閫夐」搴撲俊鎭�
      *
-     * @param targetID 鎸囨爣閫夐」搴撲富閿�
+     * @param id 鎸囨爣閫夐」搴撲富閿�
      * @return 缁撴灉
      */
     public int deleteIvrLibaTargetByTargetID(Long id);
+
+    /**
+     * 鎸囨爣娴嬭瘯闂鍖归厤
+     */
+    public String targetQuesMate(IvrLibaTargetVO ivrLibaTargetVO);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java b/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
index 39c4d30..6294f39 100644
--- a/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
+++ b/smartor/src/main/java/com/smartor/service/IIvrTaskSingleService.java
@@ -86,6 +86,6 @@
      * @param phoneCallBackVO
      * @return 缁撴灉
      */
-    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO);
+    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO);
 
 }
diff --git a/smartor/src/main/java/com/smartor/service/IPatArchiveOutService.java b/smartor/src/main/java/com/smartor/service/IPatArchiveOutService.java
new file mode 100644
index 0000000..fc51dcc
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/IPatArchiveOutService.java
@@ -0,0 +1,56 @@
+package com.smartor.service;
+
+import com.smartor.domain.PatArchiveOut;
+
+import java.util.List;
+
+/**
+ * 澶栭儴鎮h�呮。妗圫ervice鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2024-04-29
+ */
+public interface IPatArchiveOutService
+{
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗�
+     *
+     * @param patid 澶栭儴鎮h�呮。妗堜富閿�
+     * @return 澶栭儴鎮h�呮。妗�
+     */
+    public PatArchiveOut selectPatArchiveOutByPatid(Long patid);
+
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗堝垪琛�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 澶栭儴鎮h�呮。妗堥泦鍚�
+     */
+    public List<PatArchiveOut> selectPatArchiveOutList(PatArchiveOut patArchiveOut);
+
+    /**
+     * 鏂板澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    public int insertPatArchiveOut(PatArchiveOut patArchiveOut);
+
+    /**
+     * 淇敼澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    public int updatePatArchiveOut(PatArchiveOut patArchiveOut);
+
+    /**
+     * 鎵归噺鍒犻櫎澶栭儴鎮h�呮。妗�
+     *
+     * @param patids 闇�瑕佸垹闄ょ殑澶栭儴鎮h�呮。妗堜富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deletePatArchiveOutByPatids(Long[] patids);
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetServiceImpl.java
index 45dd461..d851abe 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrLibaTargetServiceImpl.java
@@ -19,6 +19,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 鎸囨爣閫夐」搴揝ervice涓氬姟灞傚鐞�
@@ -214,4 +216,31 @@
     public int deleteIvrLibaTargetByTargetID(Long id) {
         return ivrLibaTargetMapper.deleteIvrLibaTargetByTargetID(id);
     }
+
+    /**
+     * 鎸囨爣娴嬭瘯闂鍖归厤
+     */
+    @Override
+    public String targetQuesMate(IvrLibaTargetVO ivrLibaTargetVO) {
+
+        for (IvrLibaTargetoption ivrLibaTargetoption : ivrLibaTargetVO.getTargetoptionList()) {
+
+            Matcher matcher = null;
+            if (StringUtils.isNotEmpty(ivrLibaTargetoption.getTargetregex())) {
+                Pattern pattern = Pattern.compile(ivrLibaTargetoption.getTargetregex());
+                matcher = pattern.matcher(ivrLibaTargetVO.getContent());
+            }
+            //涓嶅寘鍚�
+            Matcher matcher2 = null;
+            if (StringUtils.isNotEmpty(ivrLibaTargetoption.getTargetregex2())) {
+                Pattern pattern2 = Pattern.compile(ivrLibaTargetoption.getTargetregex2());
+                matcher2 = pattern2.matcher(ivrLibaTargetVO.getContent());
+            }
+            if (StringUtils.isNotEmpty(ivrLibaTargetoption.getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrLibaTargetoption.getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrLibaTargetoption.getTargetregex2()) && StringUtils.isNotEmpty(ivrLibaTargetoption.getTargetregex()) && matcher.matches()) {
+                return ivrLibaTargetoption.getOptiondesc();
+            }
+
+        }
+        return null;
+    }
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
index fff13e3..9ab3ad8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
@@ -326,30 +326,24 @@
     }
 
     @Override
-    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
-        log.info("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
+    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {phoneCallBackVO.setTextResult(phoneCallBackVO.getTextResult().substring(0, phoneCallBackVO.getTextResult().length() - 1));
+
         //鑾峰彇鏁版嵁
         Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
         if (!aBoolean) {
-            new BaseException("璇uid涓嶅瓨鍦�");
+            throw new BaseException("璇uid涓嶅瓨鍦�");
         }
         Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
+        PhoneUtils phoneUtils = new PhoneUtils();
         if (hangupValue != null && hangupValue == 1) {
+            log.info("鐢佃瘽瑕佹寕鏂簡");
             //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
-            PhoneUtils phoneUtils = new PhoneUtils();
-            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
-
+            phoneUtils.hangup(null, null, null, null, null, null, null, phoneCallBackVO.getUuid());
+            log.info("鐢佃瘽鎸傛柇----------------------------");
+            return;
         }
 
-        String cacheObject = redisCache.getCacheObject(phoneCallBackVO.getUuid());
-        ObjectMapper objectMapper = new ObjectMapper();
-        Map<String, Object> map = null;
-        try {
-            map = objectMapper.readValue(cacheObject, Map.class);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
+        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
         IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskcall");
         List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
         //灏唘uid鏇存柊鍒版暟鎹簱涓�
@@ -359,206 +353,400 @@
         //鑾峰彇妯℃澘淇℃伅
         IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
 
+        //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
+        Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
+        QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
+        //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓�
+        returnQues.setContent(phoneCallBackVO.getTextResult());
 
-        //棣栧厛鍒ゆ柇resultType
-        if (phoneCallBackVO.getResultType() == 1) {
-            //鍛煎彨缁撴灉鎺ュ彛: 1
-            if (phoneCallBackVO.getUint8() == 1) {
-                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨
-                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
-                if (integer != null) {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
+        IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
+
+        if (StringUtils.isEmpty(returnQues.getContent())) {
+            //鏃犲洖璇�
+            //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
+            if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
+                //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
+                if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
+                    //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
+                    phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                    return;
                 } else {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
+                    //鏈変笅涓�棰�
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
+                    IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
+                    // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
+                    phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
                 }
-
-                if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
-                    log.info("鏃犱汉鎺ュ惉锛歿},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
-                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫
-                    ivrTaskcall.setResult(phoneCallBackVO.getErrResult());
-                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
-                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
-                } else if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
-                    //杩涜閲嶆嫧
-                    PhoneUtils phoneUtils = new PhoneUtils();
-                    phoneUtils.ob(null, null, null, null, null, null, null, ivrTaskcall.getPhone(), phoneCallBackVO.getUuid(), true);
-                }
-            }
-
-        } else if (phoneCallBackVO.getResultType() == 2) {
-            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2
-            if (phoneCallBackVO.getEnumState() == 0) {
-                // 0-鎸搩
-                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
-
-                if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
-                } else if (integer == null) {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
-                } else if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
-                    ivrTaskcall.setResult("鏃犱汉鎺ュ惉");
-                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
-                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
-                }
-            } else if (phoneCallBackVO.getEnumState() == 2) {
-                //鎮h�呮寕鏂數璇�
-                log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid());
-                ivrTaskcall.setResult(phoneCallBackVO.getHangUpResult());
-                ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
-                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
-            }
-
-
-        } else if (phoneCallBackVO.getResultType() == 3) {
-            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
-            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
-            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
-            PhoneUtils phoneUtils = new PhoneUtils();
-
-            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
-                //鏃犲洖璇�
-                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
-                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
-                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
-                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
-                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                    } else {
-                        //鏈変笅涓�棰�
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-                        // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
-                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-                    }
-                } else {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
-                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
-                    String slienceText = nowQuestion.getSlienceText();
-                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
-                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-                    return new PhoneCallBackVO();
-                }
-
             } else {
-                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
-                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
-                    //鍖呭惈
-                    Matcher matcher = null;
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
-                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
-                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
-                    }
-                    //涓嶅寘鍚�
-                    Matcher matcher2 = null;
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
-                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
-                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
-                    }
-                    log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
-                        //璇存槑鍖归厤姝g‘浜�
-                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
-                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
+                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
+                //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
+                String slienceText = nowQuestion.getSlienceText();
+                //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
+                phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+                return;
+            }
 
-
-                        //灏嗛潤榛樼疆涓�0
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-                        //鑾峰彇涓嬩竴棰�
-                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
-                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
-                            if (script.getTargetid() == nextQuestion) {
-                                QuestionMessage questionMessage = new QuestionMessage();
-                                questionMessage.setNowQuestion(script);
-                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                                break;
-                            }
-                        }
-                        break;
-                    } else {
-                        //娌℃湁鍖归厤鍒�
-                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
-                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
-                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
-                                QuestionMessage questionMessage = new QuestionMessage();
-                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-                                questionMessage.setNowQuestion(nextQuestion);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-                            } else {
-                                //灏卞彲浠ユ寕鏂數璇濅簡
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                                break;
-                            }
-                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
-                            //娌℃湁闂埌瑙勫畾娆℃暟
-                            mateNum = mateNum + 1;
-                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
-                        }
-                    }
-
+        } else {
+            //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
+            for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
+                //鍖呭惈
+                Matcher matcher = null;
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
+                    Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
+                    matcher = pattern.matcher(phoneCallBackVO.getTextResult());
                 }
-                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
-                String[] split = extemplateID.split(",");
-                List<String> list = Arrays.asList(split);
-                List<Long> list1 = new ArrayList<>();
-                if (StringUtils.isNotEmpty(extemplateID)) {
-                    for (String str : list) {
-                        list1.add(Long.valueOf(str));
-                    }
-                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
-                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
-                        Matcher matcher = null;
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
-                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
-                            matcher = pattern.matcher(returnQues.getContent());
-                        }
+                //涓嶅寘鍚�
+                Matcher matcher2 = null;
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
+                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+                    matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
+                }
+                log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+                if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+                    //璇存槑鍖归厤姝g‘浜�
+                    //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
+                    nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
+                    ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
 
-                        Matcher matcher2 = null;
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
-                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
-                            matcher2 = pattern2.matcher(returnQues.getContent());
-                        }
-                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
-                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
-                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
-                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+                    //灏嗛潤榛樼疆涓�0
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
+                    //鑾峰彇涓嬩竴棰�
+                    Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
+                    for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
+                        if (script.getTargetid() == nextQuestion) {
+                            QuestionMessage questionMessage = new QuestionMessage();
+                            questionMessage.setNowQuestion(script);
+                            questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
                             redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
-                                //灏嗛棶棰樼疆绌�
-                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
-                                nowQuestion1.setQuestionText(null);
-                                nowQuestion1.setQuestionVoice(null);
-                                questionMessage.setNowQuestion(nowQuestion1);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
-                            }
-
-                            //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
-
-
+                            phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
+                            return;
+                        } else if (nextQuestion > ivrLibaTemplateScriptVOs.size()) {
+                            //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
+                            phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                            phoneUtils.hangup(null, null, null, null, null, null, null, phoneCallBackVO.getUuid());
+                            return;
                         }
-                        break;
+                    }
+                    return;
+                } else {
+                    //娌℃湁鍖归厤鍒�
+                    Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
+                    if (mateNum == null) mateNum = 0;
+                    //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
+                    if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
+                        //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
+                        if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
+                            QuestionMessage questionMessage = new QuestionMessage();
+                            IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
+                            questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
+                            questionMessage.setNowQuestion(nextQuestion);
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
+                            phoneUtils.ttsPlayback(nextQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+                            return;
+                        } else {
+                            //灏卞彲浠ユ寕鏂數璇濅簡
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
+                            phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                            phoneUtils.hangup(null, null, null, null, null, null, null, phoneCallBackVO.getUuid());
+                            return;
+                        }
+                    } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
+                        //娌℃湁闂埌瑙勫畾娆℃暟
+                        mateNum = mateNum + 1;
+                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
+
                     }
                 }
+            }
+            //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
+            String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
+            String[] split = extemplateID.split(",");
+            List<String> list = Arrays.asList(split);
+            List<Long> list1 = new ArrayList<>();
+            if (StringUtils.isNotEmpty(extemplateID)) {
+                for (String str : list) {
+                    list1.add(Long.valueOf(str));
+                }
+                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
+                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
+                    Matcher matcher = null;
+                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
+                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
+                        matcher = pattern.matcher(returnQues.getContent());
+                    }
 
+                    Matcher matcher2 = null;
+                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
+                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
+                        matcher2 = pattern2.matcher(returnQues.getContent());
+                    }
+                    log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
+                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
+                        QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
+                        IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
+                        ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
+                        ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+                        if (ivrLibaExtemplatescript.getIsEnd() == 1) {
+                            //灏嗛棶棰樼疆绌�
+                            IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
+                            nowQuestion1.setQuestionText(null);
+                            nowQuestion1.setQuestionVoice(null);
+                            questionMessage.setNowQuestion(nowQuestion1);
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
+                        }
+                        //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
+                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrLibaTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
+                    }
+                    break;
+                }
+                phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
             }
         }
-        return phoneCallBackVO;
     }
 
+
+    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
+//    @Override
+//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
+//        log.error("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
+//        //鑾峰彇鏁版嵁
+//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
+//        if (!aBoolean) {
+//            throw new BaseException("璇uid涓嶅瓨鍦�");
+//        }
+//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
+//        if (hangupValue != null && hangupValue == 1) {
+//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
+//            PhoneUtils phoneUtils = new PhoneUtils();
+//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
+//
+//        }
+//
+//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
+////        ObjectMapper objectMapper = new ObjectMapper();
+////        Map<String, Object> map = null;
+////        try {
+////            map = objectMapper.readValue(cacheObject, Map.class);
+////        } catch (JsonProcessingException e) {
+////            e.printStackTrace();
+////        }
+//
+//        IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskcall");
+//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
+//        //灏唘uid鏇存柊鍒版暟鎹簱涓�
+//        ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
+//        ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
+//
+//        //鑾峰彇妯℃澘淇℃伅
+//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
+//
+//
+//        //棣栧厛鍒ゆ柇resultType
+//        if (phoneCallBackVO.getResultType() == 1) {
+//            //鍛煎彨缁撴灉鎺ュ彛: 1
+//            if (phoneCallBackVO.getUint8() == 1) {
+//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨
+//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
+//                if (integer != null) {
+//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
+//                } else {
+//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
+//                }
+//
+//                if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
+//                    log.info("鏃犱汉鎺ュ惉锛歿},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
+//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫
+//                    ivrTaskcall.setResult(phoneCallBackVO.getErrResult());
+//                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
+//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
+//                } else if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
+//                    //杩涜閲嶆嫧
+//                    PhoneUtils phoneUtils = new PhoneUtils();
+//                    phoneUtils.ob(null, null, null, null, null, null, null, ivrTaskcall.getPhone(), phoneCallBackVO.getUuid(), true);
+//                }
+//            }
+//
+//        } else if (phoneCallBackVO.getResultType() == 2) {
+//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2
+//            if (phoneCallBackVO.getEnumState() == 0) {
+//                // 0-鎸搩
+//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
+//
+//                if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) {
+//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
+//                } else if (integer == null) {
+//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
+//                } else if (integer != null && integer == ivrTaskcall.getRecallcount().intValue()) {
+//                    ivrTaskcall.setResult("鏃犱汉鎺ュ惉");
+//                    ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
+//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
+//                }
+//            } else if (phoneCallBackVO.getEnumState() == 2) {
+//                //鎮h�呮寕鏂數璇�
+//                log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid());
+//                ivrTaskcall.setResult(phoneCallBackVO.getHangUpResult());
+//                ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
+//                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
+//            }
+//
+//
+//        } else if (phoneCallBackVO.getResultType() == 3) {
+//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
+//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
+//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
+//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
+//            PhoneUtils phoneUtils = new PhoneUtils();
+//
+//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
+//                //鏃犲洖璇�
+//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
+//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
+//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
+//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
+//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
+//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
+//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+//                    } else {
+//                        //鏈変笅涓�棰�
+//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
+//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
+//                        // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
+//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+//                    }
+//                } else {
+//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
+//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
+//                    String slienceText = nowQuestion.getSlienceText();
+//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
+//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+//                    return new PhoneCallBackVO();
+//                }
+//
+//            } else {
+//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
+//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
+//                    //鍖呭惈
+//                    Matcher matcher = null;
+//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
+//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
+//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
+//                    }
+//                    //涓嶅寘鍚�
+//                    Matcher matcher2 = null;
+//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
+//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
+//                    }
+//                    log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
+//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+//                        //璇存槑鍖归厤姝g‘浜�
+//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
+//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
+//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
+//
+//
+//                        //灏嗛潤榛樼疆涓�0
+//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
+//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
+//                        //鑾峰彇涓嬩竴棰�
+//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
+//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
+//                            if (script.getTargetid() == nextQuestion) {
+//                                QuestionMessage questionMessage = new QuestionMessage();
+//                                questionMessage.setNowQuestion(script);
+//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+//                                break;
+//                            }
+//                        }
+//                        break;
+//                    } else {
+//                        //娌℃湁鍖归厤鍒�
+//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
+//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
+//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
+//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
+//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
+//                                QuestionMessage questionMessage = new QuestionMessage();
+//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
+//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
+//                                questionMessage.setNowQuestion(nextQuestion);
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
+//                            } else {
+//                                //灏卞彲浠ユ寕鏂數璇濅簡
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
+//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+//                                break;
+//                            }
+//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
+//                            //娌℃湁闂埌瑙勫畾娆℃暟
+//                            mateNum = mateNum + 1;
+//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
+//                        }
+//                    }
+//
+//                }
+//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
+//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
+//                String[] split = extemplateID.split(",");
+//                List<String> list = Arrays.asList(split);
+//                List<Long> list1 = new ArrayList<>();
+//                if (StringUtils.isNotEmpty(extemplateID)) {
+//                    for (String str : list) {
+//                        list1.add(Long.valueOf(str));
+//                    }
+//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
+//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
+//                        Matcher matcher = null;
+//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
+//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
+//                            matcher = pattern.matcher(returnQues.getContent());
+//                        }
+//
+//                        Matcher matcher2 = null;
+//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
+//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
+//                            matcher2 = pattern2.matcher(returnQues.getContent());
+//                        }
+//                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
+//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
+//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
+//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
+//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
+//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
+//                                //灏嗛棶棰樼疆绌�
+//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
+//                                nowQuestion1.setQuestionText(null);
+//                                nowQuestion1.setQuestionVoice(null);
+//                                questionMessage.setNowQuestion(nowQuestion1);
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
+//
+//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
+//                            }
+//
+//                            //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
+//
+//
+//                        }
+//                        break;
+//                    }
+//                }
+//
+//            }
+//        }
+//        return phoneCallBackVO;
+//    }
+
     private IvrLibaTemplateScriptVO getNextQuestion(List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO) {
 
         for (int j = 0; j < ivrLibaTemplateScriptVOList.size(); j++) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatArchiveOutServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatArchiveOutServiceImpl.java
new file mode 100644
index 0000000..7ea6f42
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveOutServiceImpl.java
@@ -0,0 +1,83 @@
+package com.smartor.service.impl;
+
+import com.ruoyi.common.utils.DateUtils;
+import com.smartor.domain.PatArchiveOut;
+import com.smartor.mapper.PatArchiveOutMapper;
+import com.smartor.service.IPatArchiveOutService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 澶栭儴鎮h�呮。妗圫ervice涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2024-04-29
+ */
+@Service
+public class PatArchiveOutServiceImpl implements IPatArchiveOutService {
+    @Autowired
+    private PatArchiveOutMapper patArchiveOutMapper;
+
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗�
+     *
+     * @param patid 澶栭儴鎮h�呮。妗堜富閿�
+     * @return 澶栭儴鎮h�呮。妗�
+     */
+    @Override
+    public PatArchiveOut selectPatArchiveOutByPatid(Long patid) {
+        return patArchiveOutMapper.selectPatArchiveOutByPatid(patid);
+    }
+
+    /**
+     * 鏌ヨ澶栭儴鎮h�呮。妗堝垪琛�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 澶栭儴鎮h�呮。妗�
+     */
+    @Override
+    public List<PatArchiveOut> selectPatArchiveOutList(PatArchiveOut patArchiveOut) {
+        return patArchiveOutMapper.selectPatArchiveOutList(patArchiveOut);
+    }
+
+    /**
+     * 鏂板澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertPatArchiveOut(PatArchiveOut patArchiveOut) {
+        patArchiveOut.setCreateTime(DateUtils.getNowDate());
+        return patArchiveOutMapper.insertPatArchiveOut(patArchiveOut);
+    }
+
+    /**
+     * 淇敼澶栭儴鎮h�呮。妗�
+     *
+     * @param patArchiveOut 澶栭儴鎮h�呮。妗�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updatePatArchiveOut(PatArchiveOut patArchiveOut) {
+        patArchiveOut.setUpdateTime(DateUtils.getNowDate());
+        return patArchiveOutMapper.updatePatArchiveOut(patArchiveOut);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎澶栭儴鎮h�呮。妗�
+     *
+     * @param patids 闇�瑕佸垹闄ょ殑澶栭儴鎮h�呮。妗堜富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePatArchiveOutByPatids(Long[] patids) {
+        for (Long patid : patids) {
+            patArchiveOutMapper.deletePatArchiveOutByPatid(patid);
+        }
+        return 1;
+    }
+
+}
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
index e844931..e423228 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaScriptMapper.xml
@@ -9,13 +9,13 @@
         <result property="questiontitle" column="questiontitle"/>
         <result property="questionText" column="questionText"/>
         <result property="questionvoice" column="questionvoice"/>
-        <result property="nomatchtext" column="nomatchtext"/>
+        <result property="noMatchText" column="nomatchtext"/>
         <result property="nomatchvoice" column="nomatchvoice"/>
-        <result property="sliencetext" column="sliencetext"/>
+        <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="noClearlyText" column="noclearlytext"/>
         <result property="noclearlyvoice" column="noclearlyvoice"/>
         <result property="questiontype" column="questiontype"/>
         <result property="targetid" column="targetid"/>
@@ -84,9 +84,9 @@
         <include refid="selectIvrLibaScriptVo"/>
         <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="questiontitle != null  and questiontitle != ''">and questiontitle like concat('%', #{questiontitle}, '%')</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>
@@ -94,13 +94,13 @@
             <if test="valueType != null ">and value_type = #{valueType}</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="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="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="noClearlyText != null  and noClearlyText != ''">and noclearlytext = #{noClearlyText}</if>
             <if test="noclearlyvoice != null  and noclearlyvoice != ''">and noclearlyvoice = #{noclearlyvoice}</if>
             <if test="questiontype != null  and questiontype != ''">and questiontype = #{questiontype}</if>
             <if test="targetid != null ">and targetid = #{targetid}</if>
@@ -142,13 +142,13 @@
             <if test="reply != null">reply,</if>
             <if test="questionText != null">questionText,</if>
             <if test="questionvoice != null">questionvoice,</if>
-            <if test="nomatchtext != null">nomatchtext,</if>
+            <if test="noMatchText != null">nomatchtext,</if>
             <if test="nomatchvoice != null">nomatchvoice,</if>
-            <if test="sliencetext != null">sliencetext,</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="noClearlyText != null">noclearlytext,</if>
             <if test="noclearlyvoice != null">noclearlyvoice,</if>
             <if test="questiontype != null">questiontype,</if>
             <if test="targetid != null">targetid,</if>
@@ -188,13 +188,13 @@
             <if test="reply != null">#{reply},</if>
             <if test="questionText != null">#{questionText},</if>
             <if test="questionvoice != null">#{questionvoice},</if>
-            <if test="nomatchtext != null">#{nomatchtext},</if>
+            <if test="noMatchText != null">#{noMatchText},</if>
             <if test="nomatchvoice != null">#{nomatchvoice},</if>
-            <if test="sliencetext != null">#{sliencetext},</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="noClearlyText != null">#{noClearlyText},</if>
             <if test="noclearlyvoice != null">#{noclearlyvoice},</if>
             <if test="questiontype != null">#{questiontype},</if>
             <if test="targetid != null">#{targetid},</if>
@@ -235,13 +235,13 @@
             <if test="reply != null">reply = #{reply},</if>
             <if test="questionText != null">questionText = #{questionText},</if>
             <if test="questionvoice != null">questionvoice = #{questionvoice},</if>
-            <if test="nomatchtext != null">nomatchtext = #{nomatchtext},</if>
+            <if test="noMatchText != null">nomatchtext = #{noMatchText},</if>
             <if test="nomatchvoice != null">nomatchvoice = #{nomatchvoice},</if>
-            <if test="sliencetext != null">sliencetext = #{sliencetext},</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="noClearlyText != null">noclearlytext = #{noClearlyText},</if>
             <if test="noclearlyvoice != null">noclearlyvoice = #{noclearlyvoice},</if>
             <if test="questiontype != null">questiontype = #{questiontype},</if>
             <if test="targetid != null">targetid = #{targetid},</if>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
index 41c406a..cfc7c3d 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
@@ -92,12 +92,14 @@
             <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="questiontitle != null  and questiontitle != ''">and questiontitle = #{questiontitle}</if>
             <if test="nextQuestion != null  and nextQuestion != ''">and next_question = #{nextQuestion}</if>
             <if test="questionResult != null  and questionResult != ''">and question_result = #{questionResult}</if>
             <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
                 '%')
             </if>
+            <if test="questiontitle != null  and questiontitle != ''">and questiontitle like concat('%', #{questiontitle},
+                '%')
+            </if>
             <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>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
index ab6674e..a2729d0 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskMapper.xml
@@ -39,6 +39,8 @@
         <result property="isSend" column="is_send"/>
         <result property="sendState" column="send_state"/>
         <result property="param" column="param"/>
+        <result property="hospType" column="hosp_type"/>
+        <result property="hospno" column="hospno"/>
     </resultMap>
 
     <sql id="selectIvrTaskVo">
@@ -57,6 +59,8 @@
                checkusername,
                checktime,
                type,
+               hosp_type,
+               hospno,
                typename,
                usebqsms,
                usebhsms,
@@ -108,6 +112,8 @@
             <if test="isupload != null ">and isupload = #{isupload}</if>
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if>
+            <if test="hospno != null  and hospno != ''">and orgid = #{hospno}</if>
         </where>
         order by update_time desc,taskid desc
     </select>
@@ -154,6 +160,8 @@
             <if test="isSend != null">is_send,</if>
             <if test="sendState != null">send_state,</if>
             <if test="param != null">param,</if>
+            <if test="hospType != null  and hospType != ''">hosp_type,</if>
+            <if test="hospno != null  and hospno != ''">hospno,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskName != null">#{taskName},</if>
@@ -189,6 +197,8 @@
             <if test="isSend != null">#{isSend},</if>
             <if test="sendState != null">#{sendState},</if>
             <if test="param != null">#{param},</if>
+            <if test="hospType != null  and hospType != ''">#{hospType},</if>
+            <if test="hospno != null  and hospno != ''">#{hospno},</if>
         </trim>
     </insert>
 
@@ -228,6 +238,8 @@
             <if test="isSend != null">is_send = #{isSend},</if>
             <if test="sendState != null">send_state = #{sendState},</if>
             <if test="param != null">param = #{param},</if>
+            <if test="hospType != null  and hospType != ''">hosp_type = #{hospType},</if>
+            <if test="hospno != null  and hospno != ''">hospno = #{hospno},</if>
         </trim>
         where taskid = #{taskid}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
index 9667cc4..f680203 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskSingleMapper.xml
@@ -140,6 +140,7 @@
     <select id="selectIvrTaskcallList" parameterType="com.smartor.domain.IvrTaskSingle" resultMap="IvrTaskcallResult">
         <include refid="selectIvrTaskcallVo"/>
         <where>
+            del_flag=0
             <if test="sendname != null  and sendname != ''">and sendname like concat('%', #{sendname}, '%')</if>
             <if test="phone != null  and phone != ''">and phone = #{phone}</if>
             <if test="sex != null  and sex != ''">and sex = #{sex}</if>
@@ -481,6 +482,7 @@
         WHERE jt.begantime > #{beganTime}
           AND jt.begantime &lt;= #{endTime}
           AND sendstate IS NULL
+          AND del_flag = 0
     </select>
 
 
diff --git a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
index 9d4ca36..e0e31bd 100644
--- a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
@@ -35,6 +35,7 @@
         <result property="pattype" column="pattype"/>
         <result property="bedNo" column="bedno"/>
         <result property="inhosptime" column="inhosptime"/>
+        <result property="membertype" column="membertype"/>
     </resultMap>
 
     <sql id="selectPatArchiveVo">
@@ -63,6 +64,7 @@
                create_time,
                isupload,
                pattype,
+               membertype,
                upload_time
         from pat_archive
     </sql>
@@ -78,6 +80,7 @@
             <if test="patid != null  and patid != ''">and patid = #{patid}</if>
             <if test="isupload != null ">and isupload = #{isupload}</if>
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
+            <if test="membertype != null ">and membertype = #{membertype}</if>
         </where>
     </select>
 
@@ -94,6 +97,7 @@
         a.telcode,
         a.create_time,
         a.update_time,
+        a.membertype,
         a.birthdate
         from pat_archive a,pat_archivetag b ,base_tag c
         <where>
@@ -165,10 +169,10 @@
         <!--        </trim>-->
 
         insert into
-        pat_archive(name,sex,idcardno,birthdate,age,source,archivetime,archiveby,telcode,relativetelcode,idcardtype,orgid,openid,dduserid,update_by,update_time
+        pat_archive(name,membertype,sex,idcardno,birthdate,age,source,archivetime,archiveby,telcode,relativetelcode,idcardtype,orgid,openid,dduserid,update_by,update_time
         ,create_by,create_time,isupload,upload_time,pattype,place_of_residence,nation,birthplace,native_place) values
         <foreach item="item" index="index" collection="list" separator=",">
-            (#{item.name},#{item.sex},#{item.idcardno},#{item.birthdate},#{item.age},#{item.source},#{item.archivetime},#{item.archiveby}
+            (#{item.name},#{item.membertype},#{item.sex},#{item.idcardno},#{item.birthdate},#{item.age},#{item.source},#{item.archivetime},#{item.archiveby}
             ,#{item.telcode},#{item.archiveby},#{item.idcardtype},#{item.orgid},#{item.openid},#{item.dduserid},#{item.updateBy},
             #{item.updateTime},#{item.createBy},#{item.createTime},#{item.isupload},#{item.uploadTime},#{item.pattype},#{item.placeOfResidence},#{item.nation},#{item.birthplace},#{item.nativePlace}
             )
@@ -198,6 +202,7 @@
             <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="membertype != null">membertype = #{membertype},</if>
         </trim>
         where patid = #{patid}
     </update>
@@ -246,6 +251,7 @@
         a.create_time,
         a.isupload,
         a.upload_time,
+        a.membertype,
         a.pattype
         from pat_archive a,pat_archivetag b ,base_tag c
         <where>
@@ -288,6 +294,7 @@
         a.relativetelcode,
         a.idcardtype,
         a.orgid,
+        a.membertype,
         a.openid,
         a.del_flag,
         a.update_by,
@@ -357,6 +364,7 @@
         a.idcardno,
         a.birthdate,
         a.age,
+        a.membertype,
         a.source,
         a.archivetime,
         a.archiveby,
@@ -426,6 +434,7 @@
         a.native_place,
         a.place_of_residence,
         a.birthplace,
+        a.membertype,
         a.idcardno,
         a.birthdate,
         a.age,
diff --git a/smartor/src/main/resources/mapper/smartor/PatArchiveOutMapper.xml b/smartor/src/main/resources/mapper/smartor/PatArchiveOutMapper.xml
new file mode 100644
index 0000000..76b9086
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/PatArchiveOutMapper.xml
@@ -0,0 +1,230 @@
+<?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.PatArchiveOutMapper">
+
+    <resultMap type="com.smartor.domain.PatArchiveOut" id="PatArchiveOutResult">
+        <result property="patid" column="patid"/>
+        <result property="patientno" column="patientno"/>
+        <result property="pattype" column="pattype"/>
+        <result property="name" column="name"/>
+        <result property="sex" column="sex"/>
+        <result property="nation" column="nation"/>
+        <result property="nativePlace" column="native_place"/>
+        <result property="placeOfResidence" column="place_of_residence"/>
+        <result property="birthplace" column="birthplace"/>
+        <result property="idcardno" column="idcardno"/>
+        <result property="birthdate" column="birthdate"/>
+        <result property="age" column="age"/>
+        <result property="archivetime" column="archivetime"/>
+        <result property="archiveby" column="archiveby"/>
+        <result property="telcode" column="telcode"/>
+        <result property="relativetelcode" column="relativetelcode"/>
+        <result property="idcardtype" column="idcardtype"/>
+        <result property="orgid" column="orgid"/>
+        <result property="openid" column="openid"/>
+        <result property="dduserid" column="dduserid"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="source" column="source"/>
+        <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="membertype" column="membertype"/>
+    </resultMap>
+
+    <sql id="selectPatArchiveOutVo">
+        select patid,
+               patientno,
+               pattype,
+               name,
+               sex,
+               nation,
+               native_place,
+               place_of_residence,
+               birthplace,
+               idcardno,
+               birthdate,
+               age,
+               archivetime,
+               archiveby,
+               telcode,
+               relativetelcode,
+               idcardtype,
+               orgid,
+               openid,
+               dduserid,
+               del_flag,
+               source,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               pid,
+               guid,
+               membertype
+        from pat_archive_out
+    </sql>
+
+    <select id="selectPatArchiveOutList" parameterType="com.smartor.domain.PatArchiveOut"
+            resultMap="PatArchiveOutResult">
+        <include refid="selectPatArchiveOutVo"/>
+        <where>
+            <if test="patientno != null  and patientno != ''">and patientno = #{patientno}</if>
+            <if test="pattype != null  and pattype != ''">and pattype = #{pattype}</if>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="sex != null ">and sex = #{sex}</if>
+            <if test="nation != null  and nation != ''">and nation = #{nation}</if>
+            <if test="nativePlace != null  and nativePlace != ''">and native_place = #{nativePlace}</if>
+            <if test="placeOfResidence != null  and placeOfResidence != ''">and place_of_residence =
+                #{placeOfResidence}
+            </if>
+            <if test="birthplace != null  and birthplace != ''">and birthplace = #{birthplace}</if>
+            <if test="idcardno != null  and idcardno != ''">and idcardno = #{idcardno}</if>
+            <if test="birthdate != null ">and birthdate = #{birthdate}</if>
+            <if test="age != null ">and age = #{age}</if>
+            <if test="archivetime != null ">and archivetime = #{archivetime}</if>
+            <if test="archiveby != null  and archiveby != ''">and archiveby = #{archiveby}</if>
+            <if test="telcode != null  and telcode != ''">and telcode = #{telcode}</if>
+            <if test="relativetelcode != null  and relativetelcode != ''">and relativetelcode = #{relativetelcode}</if>
+            <if test="idcardtype != null  and idcardtype != ''">and idcardtype = #{idcardtype}</if>
+            <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
+            <if test="openid != null  and openid != ''">and openid = #{openid}</if>
+            <if test="dduserid != null  and dduserid != ''">and dduserid = #{dduserid}</if>
+            <if test="source != null ">and source = #{source}</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="membertype != null  and membertype != ''">and membertype = #{membertype}</if>
+        </where>
+    </select>
+
+    <select id="selectPatArchiveOutByPatid" parameterType="Long" resultMap="PatArchiveOutResult">
+        <include refid="selectPatArchiveOutVo"/>
+        where patid = #{patid}
+    </select>
+
+    <insert id="insertPatArchiveOut" parameterType="com.smartor.domain.PatArchiveOut" useGeneratedKeys="true"
+            keyProperty="patid">
+        insert into pat_archive_out
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="patientno != null">patientno,</if>
+            <if test="pattype != null">pattype,</if>
+            <if test="name != null">name,</if>
+            <if test="sex != null">sex,</if>
+            <if test="nation != null">nation,</if>
+            <if test="nativePlace != null">native_place,</if>
+            <if test="placeOfResidence != null">place_of_residence,</if>
+            <if test="birthplace != null">birthplace,</if>
+            <if test="idcardno != null">idcardno,</if>
+            <if test="birthdate != null">birthdate,</if>
+            <if test="age != null">age,</if>
+            <if test="archivetime != null">archivetime,</if>
+            <if test="archiveby != null">archiveby,</if>
+            <if test="telcode != null">telcode,</if>
+            <if test="relativetelcode != null">relativetelcode,</if>
+            <if test="idcardtype != null">idcardtype,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="openid != null">openid,</if>
+            <if test="dduserid != null">dduserid,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</if>
+            <if test="source != null">source,</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="membertype != null">membertype,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="patientno != null">#{patientno},</if>
+            <if test="pattype != null">#{pattype},</if>
+            <if test="name != null">#{name},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="nation != null">#{nation},</if>
+            <if test="nativePlace != null">#{nativePlace},</if>
+            <if test="placeOfResidence != null">#{placeOfResidence},</if>
+            <if test="birthplace != null">#{birthplace},</if>
+            <if test="idcardno != null">#{idcardno},</if>
+            <if test="birthdate != null">#{birthdate},</if>
+            <if test="age != null">#{age},</if>
+            <if test="archivetime != null">#{archivetime},</if>
+            <if test="archiveby != null">#{archiveby},</if>
+            <if test="telcode != null">#{telcode},</if>
+            <if test="relativetelcode != null">#{relativetelcode},</if>
+            <if test="idcardtype != null">#{idcardtype},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="openid != null">#{openid},</if>
+            <if test="dduserid != null">#{dduserid},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
+            <if test="source != null">#{source},</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="membertype != null">#{membertype},</if>
+        </trim>
+    </insert>
+
+    <update id="updatePatArchiveOut" parameterType="com.smartor.domain.PatArchiveOut">
+        update pat_archive_out
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="patientno != null">patientno = #{patientno},</if>
+            <if test="pattype != null">pattype = #{pattype},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="nation != null">nation = #{nation},</if>
+            <if test="nativePlace != null">native_place = #{nativePlace},</if>
+            <if test="placeOfResidence != null">place_of_residence = #{placeOfResidence},</if>
+            <if test="birthplace != null">birthplace = #{birthplace},</if>
+            <if test="idcardno != null">idcardno = #{idcardno},</if>
+            <if test="birthdate != null">birthdate = #{birthdate},</if>
+            <if test="age != null">age = #{age},</if>
+            <if test="archivetime != null">archivetime = #{archivetime},</if>
+            <if test="archiveby != null">archiveby = #{archiveby},</if>
+            <if test="telcode != null">telcode = #{telcode},</if>
+            <if test="relativetelcode != null">relativetelcode = #{relativetelcode},</if>
+            <if test="idcardtype != null">idcardtype = #{idcardtype},</if>
+            <if test="orgid != null">orgid = #{orgid},</if>
+            <if test="openid != null">openid = #{openid},</if>
+            <if test="dduserid != null">dduserid = #{dduserid},</if>
+            <if test="delFlag != null and delFlag != ''">del_flag = #{delFlag},</if>
+            <if test="source != null">source = #{source},</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="membertype != null">membertype = #{membertype},</if>
+        </trim>
+        where patid = #{patid}
+    </update>
+
+    <update id="deletePatArchiveOutByPatid" parameterType="Long">
+        update pat_archive_out
+        <trim prefix="SET" suffixOverrides=",">
+            del_flag =1
+        </trim>
+        where patid = #{patid}
+    </update>
+
+
+</mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index 063d6c9..cd627b7 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -44,6 +44,8 @@
         <result property="deptid"    column="deptid"    />
         <result property="leaveldeptid"    column="leaveldeptid"    />
         <result property="schemetime"    column="schemetime"    />
+        <result property="patname"    column="patname"    />
+        <result property="patno"    column="patno"    />
     </resultMap>
 
     <sql id="selectPatMedInhospVo">
@@ -54,8 +56,10 @@
         <include refid="selectPatMedInhospVo"/>
         <where>
             <if test="hospitalname != null  and hospitalname != ''"> and hospitalname like concat('%', #{hospitalname}, '%')</if>
+            <if test="patname != null  and patname != ''"> and patname like concat('%', #{patname}, '%')</if>
             <if test="hospitaldistrictname != null  and hospitaldistrictname != ''"> and hospitaldistrictname like concat('%', #{hospitaldistrictname}, '%')</if>
             <if test="endtime != null "> and endtime = #{endtime}</if>
+            <if test="patno != null "> and patno = #{patno}</if>
             <if test="leavediagname != null  and leavediagname != ''"> and leavediagname like concat('%', #{leavediagname}, '%')</if>
             <if test="drname != null  and drname != ''"> and drname like concat('%', #{drname}, '%')</if>
             <if test="leaveldeptname != null  and leaveldeptname != ''"> and leaveldeptname like concat('%', #{leaveldeptname}, '%')</if>
@@ -108,6 +112,8 @@
             <if test="deptid != null">deptid,</if>
             <if test="leaveldeptid != null">leaveldeptid,</if>
             <if test="schemetime != null">schemetime,</if>
+            <if test="patname!= null">patname,</if>
+            <if test="patno != null">patno,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
@@ -147,6 +153,8 @@
             <if test="deptid != null">#{deptid},</if>
             <if test="leaveldeptid != null">#{leaveldeptid},</if>
             <if test="schemetime != null">#{schemetime},</if>
+            <if test="patname!= null">#{patname},</if>
+            <if test="patno != null">#{patno},</if>
          </trim>
     </insert>
 
@@ -190,6 +198,8 @@
             <if test="deptid != null">deptid = #{deptid},</if>
             <if test="leaveldeptid != null">leaveldeptid = #{leaveldeptid},</if>
             <if test="schemetime != null">schemetime = #{schemetime},</if>
+            <if test="patname!= null">patname = #{patname},</if>
+            <if test="patno != null">patno = #{patno},</if>
         </trim>
         where inhospid = #{inhospid}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
index 77ff8a3..f1e83f3 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
@@ -31,6 +31,7 @@
         <result property="hpi" column="hpi"/>
         <result property="mainsuit" column="mainsuit"/>
         <result property="outhospno" column="outhospno"/>
+        <result property="patname" column="patname"/>
     </resultMap>
 
     <sql id="selectPatMedOuthospVo">
@@ -59,6 +60,7 @@
                deptid,
                schemetime,
                hpi,
+               patname,
                mainsuit
         from pat_med_outhosp
     </sql>
@@ -112,6 +114,7 @@
             <if test="hpi != null">hpi,</if>
             <if test="mainsuit != null">mainsuit,</if>
             <if test="outhospno != null">outhospno,</if>
+            <if test="patname != null">patname,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
@@ -139,6 +142,7 @@
             <if test="hpi != null">#{hpi},</if>
             <if test="mainsuit != null">#{mainsuit},</if>
             <if test="outhospno != null">#{outhospno},</if>
+            <if test="patname != null">#{patname},</if>
         </trim>
     </insert>
 
@@ -170,6 +174,7 @@
             <if test="hpi != null">hpi = #{hpi},</if>
             <if test="mainsuit != null">mainsuit = #{mainsuit},</if>
             <if test="outhospno != null">outhospno = #{outhospno},</if>
+            <if test="patname != null">patname = #{patname},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedPhysicalMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedPhysicalMapper.xml
index f7dcfad..caee6fb 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedPhysicalMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedPhysicalMapper.xml
@@ -3,8 +3,8 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.PatMedPhysicalMapper">
-    
-    <resultMap type="PatMedPhysical" id="PatMedPhysicalResult">
+
+    <resultMap type="com.smartor.domain.PatMedPhysical" id="PatMedPhysicalResult">
         <result property="id"    column="id"    />
         <result property="serialnum"    column="serialnum"    />
         <result property="patid"    column="patid"    />
@@ -31,28 +31,32 @@
         <result property="deptid"    column="deptid"    />
         <result property="projectid"    column="projectid"    />
         <result property="schemetime"    column="schemetime"    />
+        <result property="patname"    column="patname"    />
+        <result property="patno"    column="patno"    />
     </resultMap>
 
     <sql id="selectPatMedPhysicalVo">
-        select id, serialnum, patid, drcode, drname, hospitalcode, hospitalname, physicaldate, orgid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, deptcode, deptname, projectname, projectcode, state, schemestatus, generalschemestatus, deptid, projectid, schemetime from pat_med_physical
+        select id, serialnum, patid, patname, patno, drcode, drname, hospitalcode, hospitalname, physicaldate, orgid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, deptcode, deptname, projectname, projectcode, state, schemestatus, generalschemestatus, deptid, projectid, schemetime from pat_med_physical
     </sql>
 
-    <select id="selectPatMedPhysicalList" parameterType="PatMedPhysical" resultMap="PatMedPhysicalResult">
+    <select id="selectPatMedPhysicalList" parameterType="com.smartor.domain.PatMedPhysical" resultMap="PatMedPhysicalResult">
         <include refid="selectPatMedPhysicalVo"/>
-        <where>  
+        <where>
             <if test="hospitalname != null  and hospitalname != ''"> and hospitalname like concat('%', #{hospitalname}, '%')</if>
             <if test="physicaldate != null "> and physicaldate = #{physicaldate}</if>
             <if test="orgid != null  and orgid != ''"> and orgid = #{orgid}</if>
+            <if test="patno != null  and patno != ''"> and patno = #{patno}</if>
             <if test="deptname != null  and deptname != ''"> and deptname like concat('%', #{deptname}, '%')</if>
+            <if test="patname != null  and patname != ''"> and patname like concat('%', #{patname}, '%')</if>
             <if test="projectname != null  and projectname != ''"> and projectname like concat('%', #{projectname}, '%')</if>
         </where>
     </select>
-    
+
     <select id="selectPatMedPhysicalById" parameterType="Long" resultMap="PatMedPhysicalResult">
         <include refid="selectPatMedPhysicalVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertPatMedPhysical" parameterType="PatMedPhysical" useGeneratedKeys="true" keyProperty="id">
         insert into pat_med_physical
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -81,6 +85,8 @@
             <if test="deptid != null">deptid,</if>
             <if test="projectid != null">projectid,</if>
             <if test="schemetime != null">schemetime,</if>
+            <if test="patname != null">patname,</if>
+            <if test="patno != null">patno,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
@@ -108,6 +114,8 @@
             <if test="deptid != null">#{deptid},</if>
             <if test="projectid != null">#{projectid},</if>
             <if test="schemetime != null">#{schemetime},</if>
+            <if test="patname != null">#{patname},</if>
+            <if test="patno != null">#{patno},</if>
          </trim>
     </insert>
 
@@ -139,6 +147,8 @@
             <if test="deptid != null">deptid = #{deptid},</if>
             <if test="projectid != null">projectid = #{projectid},</if>
             <if test="schemetime != null">schemetime = #{schemetime},</if>
+            <if test="patname != null">patname = #{patname},</if>
+            <if test="patno != null">patno = #{patno},</if>
         </trim>
         where id = #{id}
     </update>
@@ -148,9 +158,9 @@
     </delete>
 
     <delete id="deletePatMedPhysicalByIds" parameterType="String">
-        delete from pat_med_physical where id in 
+        delete from pat_med_physical where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+</mapper>

--
Gitblit v1.9.3