From 0bbbd746e8c39d91ad7b47a4e36e29ab972dc98c Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 20 十月 2026 16:56:54 +0800
Subject: [PATCH] 处理长期任务发送问题

---
 ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 3 deletions(-)

diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
index 8698917..cb337ac 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java
@@ -12,6 +12,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+
 import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
 import com.ruoyi.task.domain.ServiceSubtask;
 import com.ruoyi.task.domain.ServiceTask;
@@ -186,6 +187,28 @@
         return !CollectionUtils.isEmpty(list);
     }
 
+    /**
+     * 鏄惁瀛樺湪銆屽悓涓�鎮h�� + 鍚屼竴娆″嚭闄㈣褰� + 鍚屼竴浠诲姟銆嶇殑瀛愪换鍔★紙{@code del_flag = 0}锛夈��
+     * <p>
+     * 鐩存帴鐢ㄧ幇鎴愮殑 {@code selectServiceSubtaskList}锛堟湰韬氨甯�
+     * {@code del_flag = 0} + {@code patid} + {@code inhospid} + {@code taskid} 涓変釜鏉′欢锛夛紝
+     * 涓嶆柊澧� XML 鈥斺�� 閬垮厤涓轰簡涓�涓�"鏈夋病鏈�"鍐嶅啓涓�鏉$瓑浠� SQL銆�
+     * <p>
+     * 鈿狅笍 涓嶆寜 {@code sendstate} 杩囨护锛氬凡鍋滅敤锛坰endstate=4锛夌殑鍘嗗彶琛屼篃绠�"鐢熸垚杩�"銆�
+     * 鍚﹀垯"鍋滄棫涓�鏉� + 鍐嶇敓鎴愪竴鏉�"浼氭棤闄愮疮绉� 鈥斺�� 杩欐鏄� 2026-10 鍚屼竴鎮h�呭嚑鍗佹潯瀛愪换鍔$殑鎴愬洜銆�
+     */
+    @Override
+    public boolean existsSubtask(Long patid, Long inhospid, Long taskid) {
+        if (patid == null || taskid == null) {
+            return false;
+        }
+        ServiceSubtaskEntity q = new ServiceSubtaskEntity();
+        q.setPatid(patid);
+        q.setInhospid(inhospid);
+        q.setTaskid(taskid);
+        return !CollectionUtils.isEmpty(serviceSubtaskMapper.selectServiceSubtaskList(q));
+    }
+
     // ==========================================================================
     // 瀛楁鎼繍锛堥�愬瓧娈靛鐓э紝鍕�"椤烘墜绮剧畝"锛�
     // ==========================================================================
@@ -194,17 +217,27 @@
         VisitLongTaskDto dto = new VisitLongTaskDto();
         dto.setTaskid(t.getTaskid());
         dto.setTaskName(t.getTaskName());
+        dto.setTaskDesc(t.getTaskDesc());
         dto.setType(t.getType());
         dto.setServiceType(t.getServiceType());
         dto.setTemplateid(t.getTemplateid());
         dto.setTemplatename(t.getTemplatename());
         dto.setLibtemplateid(t.getLibtemplateid());
+        dto.setLibtemplatename(t.getLibtemplatename());
         dto.setSendDay(t.getSendDay());
         dto.setPreachform(t.getPreachform());
         dto.setPreachformDesc(t.getPreachformDesc());
         dto.setOrgid(t.getOrgid());
         dto.setCampusid(t.getCampusid());
         dto.setHosType(t.getHospType());
+        // 鍘� boxedServiceSubtask 绗竴琛岀殑 DtoConversionUtils.sourceToTarget 浼氭妸杩� 6 涓�
+        // 鎷疯繘瀛愪换鍔″苟闅� insertServiceSubtask 钀藉簱锛涗笉鎼氨鏄潤榛樹涪鍒楋紙瑙� VisitLongTaskDto 娉ㄩ噴锛�
+        dto.setGuid(t.getGuid());
+        dto.setPid(t.getPid());
+        dto.setSendType(t.getSendType());
+        dto.setIsupload(t.getIsupload());
+        dto.setTextParam(t.getTextParam());
+        dto.setUploadTime(t.getUploadTime());
         dto.setUpdateBy(t.getUpdateBy());
         dto.setCreateBy(t.getCreateBy());
         return dto;
@@ -230,6 +263,7 @@
         e.setSex(d.getSex());
         e.setAge(d.getAge());
         e.setInhospid(d.getInhospid());
+        e.setHospno(d.getHospno());
         e.setNurseId(d.getNurseId());
         e.setNurseName(d.getNurseName());
         e.setDrcode(d.getDrcode());
@@ -246,6 +280,7 @@
         e.setTemplateid(d.getTemplateid());
         e.setTemplatename(d.getTemplatename());
         e.setLibtemplateid(d.getLibtemplateid());
+        e.setLibtemplatename(d.getLibtemplatename());
         e.setStarttime(d.getStarttime());
         e.setEndtime(d.getEndtime());
         e.setLongSendTime(d.getLongSendTime());
@@ -266,6 +301,29 @@
         e.setOperationItemId(d.getOperationItemId());
         e.setCreateBy(d.getCreateBy());
         e.setUpdateBy(d.getUpdateBy());
+        // 鈿狅笍 create_time / update_time 涔嬪墠涔熸槸婕忕殑锛�
+        //    缁勮鍣紙boxedServiceSubtask 鍘� L1157-1177锛夈�亀riteInSubTask 鐨勬瘡涓� insert 鍒嗘敮
+        //    閮藉湪 setCreateTime/setUpdateTime锛孹ML 涔熸湁瀵瑰簲鏉′欢鍒楋紝浣嗚繖閲屾病鏄犲皠 鈫�
+        //    涓ゆ潯鏃堕棿鍒楅潤榛樿惤 NULL锛�2026-10 瀹炴満鍙戠幇锛夈��
+        e.setCreateTime(d.getCreateTime());
+        e.setUpdateTime(d.getUpdateTime());
+        // ------------------------------------------------------------------
+        // 浠诲姟鏉ユ簮瀛楁锛堝師 boxedServiceSubtask 绗竴琛� DtoConversionUtils 鏁存壒鎷峰叆锛�
+        //
+        // 鈿狅笍 杩� 8 涓槸"浠诲姟 鈫� 瀛愪换鍔�"鐨勫揩鐓у垪銆傚師鍏堝彧鎼簡 taskid/serviceType 绛夛紝
+        //    taskName/taskDesc/type/libtemplatename 浠ュ強 guid/pid/sendType/isupload/
+        //    textParam/uploadTime 鍏ㄩ儴婕忔槧灏� 鈫� XML 鐨� <if test="xxx != null"> 鐩存帴璺宠繃,
+        //    service_subtask 涓婅繖浜涘垪闈欓粯涓� NULL锛�2026-10 鐢� addSubTaskByRule 瀹炴満鍙戠幇锛夈��
+        // ------------------------------------------------------------------
+        e.setTaskName(d.getTaskName());
+        e.setTaskDesc(d.getTaskDesc());
+        e.setType(d.getType());
+        e.setGuid(d.getGuid());
+        e.setPid(d.getPid());
+        e.setSendType(d.getSendType());
+        e.setIsupload(d.getIsupload());
+        e.setTextParam(d.getTextParam());
+        e.setUploadTime(d.getUploadTime());
 
         // ------------------------------------------------------------------
         // 闂ㄦ�ヨ瘖闅忚涓撶敤瀛楁锛圤uthospSubtaskDraft锛夈��
@@ -277,10 +335,9 @@
         //    瑙� OuthospSubtaskDraft 鐨勭被娉ㄩ噴銆�
         // ------------------------------------------------------------------
         if (d instanceof com.ruoyi.common.core.service.dto.OuthospSubtaskDraft) {
-            com.ruoyi.common.core.service.dto.OuthospSubtaskDraft o =
-                    (com.ruoyi.common.core.service.dto.OuthospSubtaskDraft) d;
+            com.ruoyi.common.core.service.dto.OuthospSubtaskDraft o = (com.ruoyi.common.core.service.dto.OuthospSubtaskDraft) d;
+            // hospno 宸蹭笂鎻愬埌鐖剁被 VisitSubtaskDraft锛堜笂闈㈢粺涓�鏄犲皠杩囦簡锛夛紝杩欓噷涓嶅啀閲嶅
             // 鍙湁鐖剁被娌℃湁鐨勫瓧娈垫墠鍦ㄨ繖閲岃ˉ鏄犲皠锛堝叾浣欏 sendname/sfzh/phone/sex/age 鐖剁被宸叉湁锛�
-            e.setHospno(o.getHospno());
             e.setAdmindate(o.getAdmitdate());
             e.setFinishtime(o.getFinishtime());
             // 鈿狅笍 鍘熷疄鐜扮‖缂栫爜 "1"锛堜笉璇� serviceTask.getHospType()锛夛紝姝ゅ淇濇寔涓�鑷�

--
Gitblit v1.9.3