From 34f78281cf395a24e1f3f1c3b861186ff8a03b7b Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 11:09:40 +0800
Subject: [PATCH] 出入院模块、门急诊模块、模块模块、宣教模块、其它模块

---
 smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 76 insertions(+), 23 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
index 5ec965b..a6b5a37 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.core.service.TemplateModuleDisabledException;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
@@ -20,6 +21,28 @@
 import com.smartor.service.IServiceTaskService;
 import org.springframework.transaction.annotation.Transactional;
 
+import com.ruoyi.template.domain.HeLibrary;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.inhospvisit.domain.PatMedInhospVO;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthosp;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthospQueryReq;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
+import com.ruoyi.outpatientvisit.api.OuthospDataFacade;
+import com.ruoyi.template.domain.IvrTaskTemplateScript;
+import com.ruoyi.template.domain.IvrTaskTemplateScriptVO;
+import com.ruoyi.template.domain.IvrTaskTemplateTargetoption;
+import com.ruoyi.template.mapper.IvrTaskTemplateScriptMapper;
+import com.ruoyi.template.mapper.IvrTaskTemplateTargetoptionMapper;
+import com.ruoyi.template.domain.SvyLibTemplateScript;
+import com.ruoyi.template.domain.SvyLibTemplateTargetoption;
+import com.ruoyi.template.domain.SvyTaskTemplateScript;
+import com.ruoyi.template.domain.SvyTaskTemplateScriptVO;
+import com.ruoyi.template.domain.SvyTaskTemplateTargetoption;
+import com.ruoyi.template.mapper.SvyLibTemplateScriptMapper;
+import com.ruoyi.template.mapper.SvyLibTemplateTargetoptionMapper;
+import com.ruoyi.template.mapper.SvyTaskTemplateScriptMapper;
+import com.ruoyi.template.mapper.SvyTaskTemplateTargetoptionMapper;
+import com.ruoyi.template.api.TemplateFacade;
 /**
  * 璇煶浠诲姟Service涓氬姟灞傚鐞�
  *
@@ -31,6 +54,24 @@
 public class ServiceTaskServiceImpl implements IServiceTaskService {
     @Autowired
     private ServiceTaskMapper serviceTaskMapper;
+
+    /**
+     * 妯℃澘鏁版嵁涓�寰嬬粡 ruoyi-template 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+     */
+    @Autowired
+    private TemplateFacade templateFacade;
+
+    /**
+     * 璺ㄦā鍧楄闂竴寰嬬粡妯″潡闂ㄩ潰锛堢姝㈢洿杩炲凡鎼蛋鐨� Mapper锛夈��
+     */
+    @Autowired
+    private OuthospDataFacade outhospDataFacade;
+
+    /**
+     * 璺ㄦā鍧楄闂竴寰嬬粡妯″潡闂ㄩ潰锛堢姝㈢洿杩炲凡鎼蛋鐨� Mapper锛夈��
+     */
+    @Autowired
+    private InhospVisitFacade inhospVisitFacade;
     @Autowired
     private ServiceSubtaskMapper serviceSubtaskMapper;
     @Autowired
@@ -40,8 +81,6 @@
     @Autowired
     private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
     @Autowired
-    private HeLibraryMapper heLibraryMapper;
-    @Autowired
     private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
     @Autowired
     private IvrTaskTemplateScriptMapper ivrTaskTemplateScriptMapper;
@@ -49,10 +88,6 @@
     private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
     @Autowired
     private PatArchiveMapper patArchiveMapper;
-    @Autowired
-    private PatMedInhospMapper patMedInhospMapper;
-    @Autowired
-    private PatMedOuthospMapper patMedOuthospMapper;
     @Autowired
     private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
     @Autowired
@@ -303,14 +338,14 @@
         if (StringUtils.isNotEmpty(zyserialnum)) {
             PatMedInhospVO patMedInhospVO = new PatMedInhospVO();
             patMedInhospVO.setSerialnum(zyserialnum);
-            List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
+            List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospListByCondition(patMedInhospVO);
             if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                 patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhospList.get(0).getPatid());
             }
         } else if (StringUtils.isNotEmpty(mzserialnum)) {
             PatMedOuthospQueryReq patMedOuthosp = new PatMedOuthospQueryReq();
             patMedOuthosp.setSerialnum(mzserialnum);
-            List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(patMedOuthosp);
+            List<PatMedOuthosp> patMedOuthosps = outhospDataFacade.callSpQueryOuthosp(patMedOuthosp);
             if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
                 patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosps.get(0).getPatid());
             }
@@ -464,8 +499,7 @@
             if (serviceSubtaskList.get(0).getSendstate() == 3 && isFinish == true) {
                 ServiceSubtask serviceSubtask = new ServiceSubtask();
                 serviceSubtask.setSendstate(1L);
-                serviceSubtask.setPatid(patid);
-                serviceSubtask.setTaskid(serviceTask.getTaskid());
+               serviceSubtask.setId(serviceSubtaskList.get(0).getId());
                 serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);
             }
 
@@ -496,7 +530,7 @@
         }
 
 
-        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏�
+        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑 textParam 瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏�
         ObjectMapper objectMapper = new ObjectMapper();
         Map<String, Map<String, String>> ivrTaskMap = null;
         try {
@@ -504,28 +538,36 @@
         } catch (JsonProcessingException e) {
             e.printStackTrace();
         }
-        List<Map<String, String>> mapList = new ArrayList<>();
 
+        // 浼樺寲 1: 棰勫厛鍚堝苟鎵�鏈夋浛鎹㈣鍒欎负涓�涓� Map锛岄伩鍏嶅娆¢亶鍘�
+        Map<String, String> replaceMap = new HashMap<>();
         if (ivrTaskMap != null) {
             for (Map<String, String> map : ivrTaskMap.values()) {
-                mapList.add(map);
+                replaceMap.putAll(map);
             }
         }
+
         //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
         for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : svyTaskTemplateScriptVOS) {
             if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent())) {
-                for (Map<String, String> map : mapList) {
-                    for (String key : map.keySet()) {
-                        svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
-                    }
+                // 浼樺寲 2: 浣跨敤姝e垯 PatternMatcher 鎵归噺鏇挎崲锛屾彁鍗囨�ц兘
+                String scriptContent = svyTaskTemplateScriptVO.getScriptContent();
+
+                // 鎵归噺鏇挎崲 IVR 浠诲姟鍙傛暟
+                for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
+                    String value = StringUtils.isNotEmpty(entry.getValue()) ? entry.getValue() : "";
+                    scriptContent = scriptContent.replace(entry.getKey(), value);
                 }
+
                 //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹�
-                log.info("闂id锛歿},   闂鍐呭锛歿}", svyTaskTemplateScriptVO.getId(), svyTaskTemplateScriptVO.getScriptContent());
-                if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {
-                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
-                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
-                    svyTaskTemplateScriptVO.setScriptContent(svyTaskTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
+                log.info("闂 id锛歿},   闂鍐呭锛歿}", svyTaskTemplateScriptVO.getId(), scriptContent);
+                if (ObjectUtils.isNotEmpty(patArchive)) {
+                    // 浼樺寲 3: 鍑忓皯涓嶅繀瑕佺殑闈炵┖鍒ゆ柇锛坧atArchive 宸茬粡鍒よ繃锛�
+                    scriptContent = scriptContent.replace("${name}", StringUtils.defaultString(patArchive.getName()));
+                    scriptContent = scriptContent.replace("${dzz}", StringUtils.defaultString(patArchive.getPlaceOfResidence()));
+                    scriptContent = scriptContent.replace("${dhh}", StringUtils.defaultString(patArchive.getTelcode()));
                 }
+                svyTaskTemplateScriptVO.setScriptContent(scriptContent);
                 //鑾峰彇闂閫夐」
                 SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption();
                 svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScriptVO.getId());
@@ -612,7 +654,18 @@
                 serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
             }
         }
-        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(Long.valueOf(templateId));
+        HeLibrary heLibrary;
+        try {
+            heLibrary = templateFacade.findHeLibraryById(Long.valueOf(templateId));
+        } catch (TemplateModuleDisabledException e) {
+            // 妯℃澘妯″潡琚叧闂紙sys_config: template.enabled=false锛夛細
+            // 杩欓噷闄嶇骇涓虹┖鍒楄〃锛岃��**涓嶆槸**璁╁紓甯稿啋鍑哄幓 鈥斺��
+            // 鎮h�呮墦寮�鐨勫鏁欓〉闈㈢収甯稿彲鐪嬨�佸彲鎻愪氦锛�"鍙鎵撳紑浜嗛〉闈㈠氨绠楁垚鍔�"鐨勫悗缁姸鎬佹洿鏂扮収鏃ф墽琛岋級銆�
+            // 鍘熷疄鐜板湪妯℃澘鏌ヤ笉鍒版椂杩斿洖鐨勪篃鏄� [null]锛屽墠绔湰灏辫兘瀹归敊锛涚┖鍒楄〃鏇村共鍑�銆�
+            log.warn("銆愭ā鏉裤�戝鏁欎换鍔″彇妯℃澘琚嫆锛堟ā鍧楀凡鍏抽棴锛夛紝taskid={}, templateId={}锛屾湰娆¤繑鍥炵┖鍐呭",
+                    taskid, templateId);
+            return new ArrayList();
+        }
         List list = new ArrayList();
         list.add(heLibrary);
         return list;

--
Gitblit v1.9.3