From dbdd6dd8934575741a4816cf3af3493b014d3305 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期四, 02 七月 2026 15:24:21 +0800
Subject: [PATCH] Merge branch 'master' into master-任务组

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |  127 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 116 insertions(+), 11 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index d952720..67edc33 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -24,6 +24,7 @@
 import com.ruoyi.system.service.ISysDeptService;
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.common.MtSubmitSmUtil;
+import com.smartor.common.QwenLLMUtil;
 import com.smartor.domain.*;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
@@ -34,6 +35,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.io.IOException;
 import java.net.URLEncoder;
@@ -176,6 +178,9 @@
     private String active;
     @Autowired
     private SysConfigMapper sysConfigMapper;
+
+    @Autowired
+    private IServiceTaskScheduleService serviceTaskScheduleService;
 
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
         System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
@@ -558,17 +563,17 @@
     }
 
     /**
-     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃
+     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(浠诲姟缁�)
      */
-    public void dealOutHospInfoByDimension() {
+    public void dealOutHospInfoBySchedule() {
         String config = configService.selectConfigByKey("visit.early.day");
         if (port.equals("8095")) {
             //鍑洪櫌琛�
-            iPatMedInhospService.dealOutHospInfoByDimension(config);
+            iPatMedInhospService.dealOutHospInfoBySchedule(config);
             //闂ㄨ瘖琛�(鏂板崕鐨勬殏鏃朵笉鍋氶棬璇婇殢璁�)
-            if (!active.equals("xh")) {
-                //iPatMedOuthospService.dealOutpatientInfo();
-            }
+//            if (!active.equals("xh")) {
+//                //iPatMedOuthospService.dealOutpatientInfo();
+//            }
         }
     }
 
@@ -642,6 +647,86 @@
         //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
         ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setSendstate(3L);
+        serviceSubtaskVO.setVisitTime(new Date());
+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+            //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+            //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙�
+            Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
+            Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
+            if (currentSort.isPresent()) {
+                //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
+                boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
+                if (finishState) {
+                    serviceSubtask.setSendstate(6L);
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    continue;
+                }
+
+                //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
+                Long cs = currentSort.get();
+                if (cs.equals(serviceSubtaskPreachforms.size())) {
+                    serviceSubtask.setSendstate(7L);
+                    serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋匡紝鍏ㄩ儴鎵ц澶辫触锛堣秴鏃讹級");
+
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                    //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
+                    serviceSubtaskPreachform.setSendstate("5");
+                    serviceSubtaskPreachform.setId(id.get());
+
+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
+                    continue;
+                }
+
+                //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡)
+                sfHandlle(serviceSubtask);
+            }
+        }
+    }
+
+    /**
+     * 闀挎湡浠诲姟鍙戦��
+     */
+    public void longTaskSendTest(Long subId) {
+        //鑾峰彇浠诲姟淇℃伅
+        ServiceTask st = new ServiceTask();
+        st.setDelFlag("0");
+        st.setLongTask(1);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        log.info("銆恖ongTaskSend銆戣幏鍙栧埌{}涓暱鏈熶换鍔�", serviceTasks.size());
+        for (ServiceTask serviceTask : serviceTasks) {
+            CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();
+            commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
+            commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
+            commonTaskcallMQ.setSendType("2");
+
+            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+            serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
+            serviceSubtaskVO.setSendstate(2L);
+            serviceSubtaskVO.setIsVisitAgain(1);
+            serviceSubtaskVO.setSubId(subId);
+            serviceSubtaskVO.setVisitTime(new Date());
+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO);
+            for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+                sfHandlle(serviceSubtask);
+            }
+        }
+    }
+
+    /**
+     * 澶勭悊琛ュ伩浠诲姟
+     */
+    public void compensateTaskTest(Long subId) {
+        //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
+        serviceSubtaskVO.setSendstate(3L);
+        serviceSubtaskVO.setSubId(subId);
         serviceSubtaskVO.setVisitTime(new Date());
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
@@ -828,6 +913,7 @@
                     serviceOutPath.setParam3(ivrTask1.getTaskName());
                     serviceOutPath.setParam6(subId);
                     serviceOutPath.setCreateTime(new Date());
+                    serviceOutPath.setOrgid(serviceSubtask.getOrgid());
                     iServiceOutPathService.insertServiceOutPath(serviceOutPath);
                     String format = String.format("%03X", serviceOutPath.getId());
                     serviceOutPath.setRadix(format);
@@ -971,6 +1057,7 @@
                     //浠诲姟鍙戦�佽褰�
                     ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                     serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                     serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                     serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                     serviceSubtaskRecord.setPreachform("4");
@@ -1028,8 +1115,6 @@
                     if (active.equals("hzszlyy")) {
                         //澶勭悊涓枃涔辩爜闂
                         wxCode = smsUtils.sendChat(url, patArchive.getTelcode(), serviceSubtask.getSfzh());
-                        log.info(wxCode);
-
                     } else {
                         wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
                     }
@@ -1264,7 +1349,7 @@
         Map<String, String> headerMap = new HashMap<>();
         headerMap.put("sign", encode);
         String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);
-
+        log.info("銆恎etWXCode銆戝井淇″叕浼楀彿杩斿洖鍙傛暟锛歿}", result);
         JSONObject jsonObject = JSONObject.parseObject(result);
         String code = (String) jsonObject.toString();
         return code;
@@ -1346,9 +1431,7 @@
                     //serviceSubtask.setRemark("setSuccessPreachForm鏂规硶锛屽綋鍓嶇殑preachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏閮ㄦ墽琛屽け璐�");
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                     return true;
-
                 }
-
             }
         } else {
             log.error("銆愬畾鏃朵换鍔′腑璇ユ偅鑰呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
@@ -1413,4 +1496,26 @@
         return serviceTaskMap;
     }
 
+    public int qwenLLMTest(String questionText, String voiceText,String value,String regexText) {
+        int result = QwenLLMUtil.matchRegex(questionText, voiceText, value, regexText);
+        return result;
+    }
+
+    /**
+     * 浠诲姟缁勶紙appltype=5锛夊惊鐜换鍔℃粴鍔ㄨ皟搴︺��
+     * <p>
+     * 鎵弿鎵�鏈� schedule_style=1 鐨勮鍒掞紝鑻ユ湰杞� subtask 鍏ㄩ儴 finalize锛坰endstate 鈭� 1/2/3锛夛紝
+     * 鍒欏厠闅嗘湰杞偅鑰呭埌涓嬩竴杞紝鎺ㄨ繘 current_loop_count 涓� visit_time銆�
+     * <p>
+     * 寤鸿姣忓皬鏃舵垨姣忓崐灏忔椂鎵ц涓�娆★紝閬垮厤杞绉帇銆�
+     */
+    public void rollTaskGroupCycle() {
+        log.info("銆恟ollTaskGroupCycle銆戝紑濮嬫壂鎻忓惊鐜换鍔$粍");
+        try {
+            int rolled = serviceTaskScheduleService.rollCycleTasks();
+            log.info("銆恟ollTaskGroupCycle銆戞湰娆℃帹杩� {} 涓鍒�", rolled);
+        } catch (Exception e) {
+            log.error("銆恟ollTaskGroupCycle銆戞粴鍔ㄨ皟搴﹀紓甯�", e);
+        }
+    }
 }

--
Gitblit v1.9.3