From 18f876d637cf1e9b0b264a4586e4a676a21f8166 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 13 十一月 2026 10:30:46 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java                     |   12 +
 ruoyi-task/src/main/resources/mapper/task/ServiceTaskdeptMapper.xml                    |   12 +
 ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java           |   63 ++++++
 ruoyi-task/src/main/java/com/ruoyi/task/api/contract/VisitTaskCreateApiImpl.java       |    5 
 ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskdeptRow.java |    2 
 ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java    |  100 ++++++++++
 ruoyi-task/src/main/resources/mapper/task/ServiceTaskMapper.xml                        |   11 +
 ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/InhospSubtaskWriter.java |    2 
 ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskRow.java     |   16 +
 ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java                      |   13 +
 ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml                     |   76 +++++++
 ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java    |   18 ++
 ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitLongTaskDto.java     |   16 +
 ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskdept.java                    |   18 +
 ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java        |   48 +++++
 ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java       |    7 
 ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java                  |    7 
 ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java |    7 
 ruoyi-task/src/main/java/com/ruoyi/task/domain/VO/ServiceSubtaskVO.java                |   36 ++++
 ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTask.java                        |   12 +
 20 files changed, 448 insertions(+), 33 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitLongTaskDto.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitLongTaskDto.java
index 6e1bc81..59aeecd 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitLongTaskDto.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitLongTaskDto.java
@@ -93,6 +93,14 @@
     /** 鍒涘缓浜猴紙鍘� createBy锛� */
     private String createBy;
 
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽師 {@code serviceTask.pointLocation}锛夈��
+     * <p>
+     * 鏂板垪锛屼笉灞炰簬"鍘� DtoConversionUtils 鎷疯礉甯﹀叆"鐨勯偅鎵癸細瀹冪敱闅忚缁勮鍣ㄦ樉寮�
+     * {@code d.setPointLocation(...)} 甯﹁繘鑽夌锛屽啀鍒� {@code service_subtask.point_location}銆�
+     */
+    private String pointLocation;
+
     public Long getTaskid() {
         return taskid;
     }
@@ -276,4 +284,12 @@
     public void setCreateBy(String createBy) {
         this.createBy = createBy;
     }
+
+    public String getPointLocation() {
+        return pointLocation;
+    }
+
+    public void setPointLocation(String pointLocation) {
+        this.pointLocation = pointLocation;
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
index 652fd54..649228b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/service/dto/VisitSubtaskDraft.java
@@ -125,6 +125,16 @@
      */
     private String importanceFlagCode;
 
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛夛細鏉ユ簮 {@code service_task.point_location}锛�
+     * 钀藉簱鍒� {@code service_subtask.point_location}銆�
+     * <p>
+     * 鈿狅笍 涓� {@code importanceFlagCode} 鐨勬潵婧愪笉鍚岋細閭d釜鍙栬嚜浣忛櫌鐧昏琛紝
+     * 杩欎竴涓彇鑷�<b>浠诲姟</b>锛堝缓浠诲姟鏃跺墠绔~鐨勭偣浣嶏級锛屾墍浠ュ彧鍦�"浠诲姟 鈫� 瀛愪换鍔�"鐨�
+     * 闅忚寤轰换鍔¢摼璺噷濉�硷紱闂ㄨ瘖/鎵爜绛夎崏绋挎亽涓� {@code null}銆�
+     */
+    private String pointLocation;
+
     // ==================== 妯℃澘锛堝師 serviceTask锛� ====================
     /** 闂嵎妯℃澘ID */
     private Long templateid;
@@ -538,6 +548,14 @@
         this.importanceFlagCode = importanceFlagCode;
     }
 
+    public String getPointLocation() {
+        return pointLocation;
+    }
+
+    public void setPointLocation(String pointLocation) {
+        this.pointLocation = pointLocation;
+    }
+
     public Long getTemplateid() {
         return templateid;
     }
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskRow.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskRow.java
index b8ec216..efef9b3 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskRow.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskRow.java
@@ -148,6 +148,14 @@
     /** 鐤剧梾绫诲瀷锛堝師 serviceTask.diagType锛涘睘 DtoConversionUtils 鎷峰叆鐨� 18 涓瓧娈典箣涓�锛� */
     private String diagType;
 
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽師 {@code serviceTask.pointLocation}锛夈��
+     * <p>
+     * 涓嶅睘浜�"闈� DtoConversion 鎷峰叆鐨� 18 涓瓧娈�"锛氬畠鏄柊鍒楋紝缁勮鍣ㄩ噷鏄惧紡
+     * {@code d.setPointLocation(...)} 甯﹁蛋锛岃 {@code VisitSubtaskFactory} 鐨勪袱涓� boxed 鏂规硶銆�
+     */
+    private String pointLocation;
+
     public Long getTaskid() {
         return taskid;
     }
@@ -441,4 +449,12 @@
         this.diagType = diagType;
     }
 
+    public String getPointLocation() {
+        return pointLocation;
+    }
+
+    public void setPointLocation(String pointLocation) {
+        this.pointLocation = pointLocation;
+    }
+
 }
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskdeptRow.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskdeptRow.java
index f030dc8..b9359d8 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskdeptRow.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/domain/row/VisitTaskdeptRow.java
@@ -40,7 +40,7 @@
     /** 鏈嶅姟绫诲瀷锛�"2" 鍑洪櫌闅忚 / "17" 瀹f暀鍏虫��(鍏ラ櫌) 鈥︼級 */
     private String serviceType;
 
-    /** 缁村害绫诲瀷锛�"1" = 绉戝锛�"2" = 鐥呭尯 */
+    /** 缁村害绫诲瀷锛�"1" = 绉戝锛�"2" = 鐥呭尯锛�"3" = 鐐逛綅锛�2026-11 鏂板锛涢殢璁夸晶鐨勭瀹�/鐥呭尯鏌ヨ鍙彇 1/2锛� */
     private String deptType;
 
     /** 绉戝ID */
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/InhospSubtaskWriter.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/InhospSubtaskWriter.java
index 1c755c5..3739543 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/InhospSubtaskWriter.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/service/InhospSubtaskWriter.java
@@ -495,6 +495,8 @@
         t.setUploadTime(dto.getUploadTime());
         t.setUpdateBy(dto.getUpdateBy());
         t.setCreateBy(dto.getCreateBy());
+        // 2026-11锛氱偣浣嶇紪鐮侊紙浠诲姟 鈫� 瀛愪换鍔″揩鐓э紝缁勮鍣ㄦ樉寮忓甫璧帮級
+        t.setPointLocation(dto.getPointLocation());
         return t;
     }
 
diff --git a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
index e1f5e22..9111b6b 100644
--- a/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
+++ b/ruoyi-inhospvisit/src/main/java/com/ruoyi/inhospvisit/support/VisitSubtaskFactory.java
@@ -152,6 +152,10 @@
         //   瀛愪换鍔¤惤涓�浠斤紝闅忚鍒楄〃灏辫兘鐩存帴鎸夈�屾棩闂淬�嶇瓫锛屼笉鐢ㄦ瘡琛屽洖鏌ヤ綇闄㈢櫥璁拌〃銆�
         //   鍙e緞锛氬師鏍锋嫹璐濄�佷笉鍋氬�煎煙褰掍竴锛涗笉闅� type 4/5 鏀瑰啓锛堜笌绉戝/鐥呭尯缁村害鏃犲叧锛夈��
         d.setImportanceFlagCode(inhosp.getImportanceFlagCode());
+        // ---- 2026-11 鏂板锛氱偣浣嶇紪鐮佸師鏍峰甫璧� ----
+        //   鏉ユ簮鏄�愪换鍔°�戣�屼笉鏄綇闄㈢櫥璁拌〃锛歴ervice_task.point_location 寤轰换鍔℃椂鐢卞墠绔~锛�
+        //   瀛愪换鍔¤惤涓�浠藉揩鐓э紝涔嬪悗浠诲姟鏀圭偣浣嶄笉鍥炲啓宸叉湁瀛愪换鍔★紙涓� importanceFlagCode 鍚屽彛寰勶級銆�
+        d.setPointLocation(serviceTask.getPointLocation());
         // ---- 鍘� L1128-1134锛歵ype 4/5 鏀圭敤鍏ラ櫌缁村害 ----
         if (type != null && (type == 4 || type == 5)) {
             d.setLeaveldeptcode(inhosp.getDeptcode());
@@ -292,6 +296,9 @@
         // ---- 鍘� L1226锛氭嫹璐� ----
         applyCarriedOverFieldsFromTask(d, serviceTask);
 
+        // ---- 2026-11 鏂板锛氱偣浣嶇紪鐮佸師鏍峰甫璧帮紙鏉ユ簮鏄换鍔★紝涓嶆槸浣忛櫌鐧昏琛級 ----
+        d.setPointLocation(serviceTask.getPointLocation());
+
         // ---- 鍘� L1227-1231 ----
         d.setTaskid(serviceTask.getTaskid());
         d.setOrgid(serviceTask.getOrgid());
diff --git a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
index 4e52de5..a09ba77 100644
--- a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
+++ b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
@@ -329,6 +329,8 @@
                             ServiceSubtask ss = new ServiceSubtask();
                             ss.setId(serviceSubtask.getId());
                             ss.setSendstate(6L);
+                            //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                            ss.setFinishtime(new Date());
                             taskSubtaskApi.updateSubtask(ss);
                             String date = simpleDateFormat1.format(new Date());
                             log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
@@ -374,6 +376,8 @@
                         ServiceSubtask ss = new ServiceSubtask();
                         ss.setId(serviceSubtask.getId());
                         ss.setSendstate(6L);
+                        //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                        ss.setFinishtime(new Date());
                         taskSubtaskApi.updateSubtask(ss);
 
                         String date = simpleDateFormat1.format(new Date());
@@ -607,12 +611,21 @@
                 //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
                 Long id = serviceSubtask.getId();
                 //鍏堟洿鏂颁竴涓嬪垎鏁�
+                //鈿狅笍 闈欓粯鎸傛満 = 鐢佃瘽娌℃帴閫� / 鎮h�呬竴鐩存病搴旂瓟锛屽睘浜�"鏈��"锛屼笉鏄�"瀹屾垚"锛�
+                //   鈶� 涓嶅啓 finishtime 鈥斺�� 杩欐潯鍗曞瓙鎺ヤ笅鏉ヨ浜ょ粰琛ュ伩浠诲姟锛坰etFailPreachForm 缃� 5 鎴� 3锛�
+                //      鍐嶇敱 compensateTask 鎹炶捣鏉ョ户缁彂涓嬩竴绉嶆柟寮� / 鍒よ秴鏃讹級锛涗竴鏃﹀啓浜嗗畬鎴愭椂闂达紝
+                //      鍚庨潰琚疆鎴�"瓒呮椂(7)"鏃跺氨浼氱暀涓�"瓒呮椂鍗存湁瀹屾垚鏃堕棿"鐨勮剰鏁版嵁锛�
+                //      鍙婃椂鐜囥�佸畬鎴愮巼锛圫erviceSubtaskMapper#selectTimelyRateBatch 璁� finishtime 闈炵┖锛変篃浼氳铏氶珮锛�
+                //   鈶� 涓嶆暣琛屽洖鍐� serviceSubtask 鈥斺�� 閭d細鎶婁笂闈㈠垰鍐欑殑 sendstate=5锛堢數璇濋潤榛橈級瑕嗙洊鍥炴煡搴撴椂鐨勬棫鍊硷紝
+                //      鎵�浠ヨ繖閲屽彧鍥炲啓 id + 鍒嗘暟 + 鏇存柊鏃堕棿锛岀姸鎬佷氦缁欎笅闈㈢殑 setFailPreachForm 鍐冲畾
+                //      锛堟渶鍚庝竴绉嶆柟寮� 鈫� 5 鍙戦�佸け璐ワ紱杩樻湁涓嬩竴绉� 鈫� 3 宸插彂閫侊紝涓よ�呴兘浼氳琛ュ伩浠诲姟鎹炶捣鏉ワ級銆�
                 double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                serviceSubtask.setScore(String.valueOf(score));
-                serviceSubtask.setFinishtime(new Date());
-                serviceSubtask.setUpdateTime(new Date());
-                log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                ServiceSubtask scoreUpdate = new ServiceSubtask();
+                scoreUpdate.setId(id);
+                scoreUpdate.setScore(String.valueOf(score));
+                scoreUpdate.setUpdateTime(new Date());
+                log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆coreUpdate鐨勫�间负锛歿}", scoreUpdate);
+                taskSubtaskApi.updateSubtask(scoreUpdate);
                 //璁板綍鐘舵��
                 setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
 
@@ -669,6 +682,8 @@
                         ss.setId(serviceSubtask.getId());
                         ss.setSendstate(6L);
                         ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                        //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                        ss.setFinishtime(new Date());
                         taskSubtaskApi.updateSubtask(ss);
                         //璁板綍鐘舵��
                         setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -854,6 +869,8 @@
                                     ss.setId(serviceSubtask.getId());
                                     ss.setSendstate(6L);
                                     ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                                    //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                                    ss.setFinishtime(new Date());
                                     taskSubtaskApi.updateSubtask(ss);
                                     //璁板綍鐘舵��
                                     setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -1566,12 +1583,13 @@
                 serviceSubtask.setCurrentPreachform(preachform);
                 serviceSubtask.setSendstate(5L);
                 serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                //鍙洖鍐欐湰娆¤鏀圭殑鍒楋紙涓嶅啀鏁磋鍥炲啓锛岄伩鍏嶆妸搴撻噷鐨勬棫 finishtime 绛変竴璧峰甫鍥炴潵锛�
+                updateSubtaskState(serviceSubtask, 5L, preachform, serviceSubtask.getRemark(), null);
                 return true;
             } else {
                 //鍔犲叆鐩墠琛ュ伩閲岀殑 remark
                 serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                updateSubtaskState(serviceSubtask, null, null, serviceSubtask.getRemark(), null);
             }
         }
 
@@ -1581,8 +1599,35 @@
         //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
         if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
         serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
-        taskSubtaskApi.updateSubtask(serviceSubtask);
+        updateSubtaskState(serviceSubtask, serviceSubtask.getSendstate(), preachform, null, serviceSubtask.getVisitTime());
         return true;
+    }
+
+    /**
+     * 鍙洖鍐欐湰娆$湡姝h鏀圭殑鍒楋紙鏇夸唬"鏁磋鍥炲啓 serviceSubtask"锛夈��
+     * <p>
+     * 涓轰粈涔堝繀椤绘敹绐勶細mapper 鐨� updateServiceSubtask 鏄�&lt;if test="xx != null"&gt;鍔ㄦ�� SET锛�
+     * 鏁磋鍥炲啓浼氭妸搴撻噷宸叉湁鐨� finishtime / visit_time / score 绛夋棫鍊煎師鏍峰啀鍐欎竴閬� 鈥斺�� 鏃㈠彲鑳借鐩�
+     * 骞跺彂鍐欏叆锛屼篃鏄�"鐘舵�� 3/5/7 鍗村甫鐫�瀹屾垚鏃堕棿"杩欑被鑴忔暟鎹殑鎼繍宸ャ��
+     * <p>
+     * 瀹屾垚鏃堕棿鍙e緞锛歴endstate=6锛堝畬鎴愶級鏃惰ˉ瀹屾垚鏃堕棿锛�3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂绛夐潪瀹屾垚鐘舵��
+     * 涓�寰嬩笉鍐欙紝Mapper 渚х殑"瀹屾垚鏃堕棿涓嶅彉閲�"浼氶『鎵嬫妸鏃у�兼竻鎺夈��
+     */
+    private void updateSubtaskState(ServiceSubtask source, Long sendstate, String currentPreachform,
+                                    String remark, Date visitTime) {
+        if (source == null || source.getId() == null) {
+            return;
+        }
+        ServiceSubtask update = new ServiceSubtask();
+        update.setId(source.getId());
+        update.setSendstate(sendstate);
+        update.setCurrentPreachform(currentPreachform);
+        update.setRemark(remark);
+        update.setVisitTime(visitTime);
+        if (sendstate != null && sendstate == 6L) {
+            update.setFinishtime(source.getFinishtime() != null ? source.getFinishtime() : new Date());
+        }
+        taskSubtaskApi.updateSubtask(update);
     }
 
     private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
@@ -1893,6 +1938,8 @@
                     ss.setId(serviceSubtask.getId());
                     ss.setSendstate(6L);
                     ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                    //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                    ss.setFinishtime(new Date());
                     taskSubtaskApi.updateSubtask(ss);
                     //璁板綍鐘舵��
                     setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
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 470867b..f298e05 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
@@ -240,6 +240,8 @@
         dto.setUploadTime(t.getUploadTime());
         dto.setUpdateBy(t.getUpdateBy());
         dto.setCreateBy(t.getCreateBy());
+        // 2026-11锛氱偣浣嶇紪鐮侊紙浠诲姟 鈫� 瀛愪换鍔$殑蹇収鍒椾箣涓�锛�
+        dto.setPointLocation(t.getPointLocation());
         return dto;
     }
 
@@ -289,6 +291,9 @@
         // 鍙湁銆屽嚭鍏ラ櫌闅忚銆嶉摼璺細濉�硷紙VisitSubtaskFactory锛夛紱闂ㄨ瘖/鎵嬫湳绛夎崏绋块噷涓� null 鈫�
         // insert 鐨勬潯浠跺垪鐩存帴璺宠繃锛屼笌鏀归�犲墠杩欎簺鍒椾笉鍐欑殑鏁堟灉涓�鑷淬��
         e.setImportanceFlagCode(d.getImportanceFlagCode());
+        // 2026-11锛氱偣浣嶇紪鐮侊紙寤哄瓙浠诲姟鏃朵粠 service_task.point_location 鍚屾锛夈��
+        // 闂ㄨ瘖/鎵爜绛夎崏绋块噷涓� null 鈫� insert 鐨勬潯浠跺垪鐩存帴璺宠繃锛屼笌鏀归�犲墠涓嶅啓璇ュ垪鏁堟灉涓�鑷淬��
+        e.setPointLocation(d.getPointLocation());
         e.setTemplateid(d.getTemplateid());
         e.setTemplatename(d.getTemplatename());
         e.setLibtemplateid(d.getLibtemplateid());
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java b/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
index 06b4a55..8e2e269 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
@@ -1239,7 +1239,12 @@
      */
     @PostMapping(value = "/scanGenerateSubtask")
     public AjaxResult scanGenerateSubtask(@RequestBody ServiceTask serviceTask) {
-        return AjaxResult.success(serviceSubtaskService.scanGenerateSubtask(serviceTask));
+        String url = serviceSubtaskService.scanGenerateSubtask(serviceTask);
+        // data 涓虹┖蹇呴』鍥� code=500锛氬墠绔彧鐪� code锛�200 + 绌轰覆浼氳璇綋鎴愩�岀敓鎴愭垚鍔熶絾娌¢摼鎺ャ��
+        if (StringUtils.isEmpty(url)) {
+            return AjaxResult.error("鎵爜鐢熸垚浠诲姟澶辫触锛氭湭鍙栧埌浜岀淮鐮侀摼鎺�");
+        }
+        return AjaxResult.success(url);
     }
 
     @PostMapping("/syncMedInhospForShiyi")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
index 9cf60da..dc463c4 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtask.java
@@ -727,6 +727,18 @@
     private String importanceFlagCode;
 
     /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽搴� {@code service_subtask.point_location}锛夈��
+     * <p>
+     * 寤哄瓙浠诲姟鏃朵粠 {@code service_task.point_location} <b>鍘熸牱鎷疯礉</b>锛堝揩鐓э級锛�
+     * 瀛樼偣浣�<b>缂栫爜</b>鑰屼笉鏄悕绉帮紱搴撻噷鏄� {@code varchar(64)}锛屼笉鍋氭灇涓�/澶栭敭鏍¢獙銆�
+     * <p>
+     * 鈿狅笍 涔嬪悗浠诲姟涓婃敼浜嗙偣浣�<b>涓嶄細</b>鍥炲啓宸茬敓鎴愮殑瀛愪换鍔� 鈥斺�� 涓�
+     * {@code importanceFlagCode} 涓�鏍锋槸"寤轰换鍔¢偅涓�鍒荤殑蹇収"銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜")
+    private String pointLocation;
+
+    /**
      * 寮�濮嬪嚭闄㈡棩鏈�
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
index 0e0cf34..de3a03d 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceSubtaskRes.java
@@ -254,6 +254,13 @@
     private String importanceFlagCode;
 
     /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛夛細寤哄瓙浠诲姟鏃朵粠 {@code service_task.point_location} 鍘熸牱鎷疯礉锛�
+     * 鍒楄〃鎺ュ彛鍘熸牱杩斿洖锛堜笉鍔� {@code @Excel}锛屼笉褰卞搷瀵煎嚭鍒楋級銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜")
+    private String pointLocation;
+
+    /**
      * 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒�
      */
     @Excel(name = " 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� ")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTask.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTask.java
index 57cc36c..0b03a04 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTask.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTask.java
@@ -458,4 +458,16 @@
     @ApiModelProperty(value = "鐤剧梾鐥呯")
     @Excel(name = " 鐤剧梾鐥呯")
     private String diagType;
+
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽搴� {@code service_task.point_location}锛夈��
+     * <p>
+     * 寤轰换鍔℃椂鐢卞墠绔紶鍏ワ紝瀛�<b>鐐逛綅缂栫爜</b>锛堜笉鏄悕绉帮級锛涘簱閲屾槸 {@code varchar(64)}锛�
+     * 涓嶅仛鏋氫妇/澶栭敭鏍¢獙锛屼紶浠�涔堝瓨浠�涔堛��
+     * <p>
+     * 寤哄瓙浠诲姟鏃朵細<b>鍘熸牱鎷疯礉</b>鍒� {@code service_subtask.point_location}锛堝揩鐓э級锛�
+     * 涔嬪悗浠诲姟涓婃敼浜嗙偣浣嶄笉浼氬洖鍐欏凡鏈夊瓙浠诲姟銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜")
+    private String pointLocation;
 }
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
index 01da61f..2d130d0 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskVO.java
@@ -70,9 +70,9 @@
     private List<String> leavehospitaldistrictcodes;
 
     /**
-     * 鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎锛堢偣浣嶇紪鍙凤級
+     * 鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎
      */
-    @ApiModelProperty(value = "鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎锛堢偣浣嶇紪鍙凤級")
+    @ApiModelProperty(value = "鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎")
     private List<String> leaveldeptcodes;
 
     /**
@@ -490,4 +490,13 @@
      */
     @ApiModelProperty(value = "浠诲姟缁勮鍒掞紙appltype=5 蹇呭~锛屼富璁″垝+鏄庣粏锛�")
     private ServiceTaskScheduleVO serviceTaskScheduleVO;
+
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽搴� {@code service_task.point_location}锛夈��
+     * <p>
+     * 寤轰换鍔�/鏀逛换鍔℃椂鐢卞墠绔紶鍏ワ紝钀藉簱涓� {@code service_task.point_location}锛�
+     * 寤哄瓙浠诲姟鏃跺啀鎸夊悓鍚嶆嫹璐濊繘 {@code service_subtask.point_location}銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜")
+    private String pointLocation;
 }
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskdept.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskdept.java
index 97a2a81..8876d51 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskdept.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/ServiceTaskdept.java
@@ -52,10 +52,13 @@
     private String serviceType;
 
     /**
-     * 閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯
+     * 閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯锛�3鐐逛綅
+     * <p>
+     * 3 = 鐐逛綅锛�2026-11 鏂板锛屽悓寰枫�屾寜鐐逛綅銆嶉渶姹傦級锛氳繖绫昏
+     * <b>dept_code / dept_name 鐣欑┖</b>锛岀偣浣嶇紪鐮佸彧钀藉湪 {@link #pointLocation}銆�
      */
-    @ApiModelProperty("閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯")
-    @Excel(name = "閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯")
+    @ApiModelProperty("閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯锛�3鐐逛綅")
+    @Excel(name = "閮ㄩ棬绫诲瀷锛�1绉戝锛�2鐥呭尯锛�3鐐逛綅")
     private String deptType;
 
     /**
@@ -84,5 +87,14 @@
     @ApiModelProperty("鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛�")
     private String delFlag;
 
+    /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽搴� {@code service_taskdept.point_location}锛夈��
+     * <p>
+     * 鍙湪 {@code dept_type='3'}锛堢偣浣嶏級鐨勮涓婃湁鍊硷紱杩欑被琛� {@code dept_code/dept_name} 鐣欑┖銆�
+     * 涓�涓换鍔′竴涓偣浣� 鈫� 涓�涓换鍔″彧浼氭湁涓�鏉� {@code dept_type='3'} 鐨勮銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜锛坉ept_type=3 鏃朵娇鐢級")
+    private String pointLocation;
+
 }
 
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/VO/ServiceSubtaskVO.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/VO/ServiceSubtaskVO.java
index 7620f5f..df98fd7 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/VO/ServiceSubtaskVO.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/VO/ServiceSubtaskVO.java
@@ -712,6 +712,24 @@
     private String managementDoctor;
 
     /**
+     * 閲嶈鎬ф爣璁扮紪鐮侊紙2026-11 鏂板锛�<b>妯$硦鏌ヨ</b>锛夛細`/patItem`銆乣/patItemCount`銆�
+     * `/patItemExport` 鐨勮姹備綋瀛楁銆�
+     * <p>
+     * 瀵瑰簲 {@code service_subtask.importance_flag_code}锛堝缓浠诲姟鏃朵粠
+     * {@code pat_med_inhosp.importance_flag_code} 鍚屾锛夛紝搴撻噷瀛樼殑鏄噰闆嗘嫾鍑虹殑鎻忚堪涓诧細
+     * 銆屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶃�屾棤銆嶃�岀壒绾︿汉鍛樸�嶃�岀浼戜汉鍛樸�嶏紝澶氬�肩敤鑻辨枃閫楀彿鎷兼帴锛堝銆屾棤,鏃ラ棿鎵嬫湳銆嶏級锛�
+     * 涔熷彲鑳藉瓨鏋氫妇缂栫爜 {@code FH0165.01} / {@code FH0165.02}銆�
+     * <p>
+     * 鍥犱负鏄� {@code LIKE '%鍊�%'}锛氫紶銆屾棩闂淬�嶅彲涓�娆″懡涓棩闂存墜鏈� + 鏃ラ棿璇婄枟 + 澶氬�艰锛�
+     * 浼犲畬鏁村�硷紙濡傘�屾棩闂存墜鏈�嶆垨 {@code FH0165.01}锛夊垯閫�鍖栦负绮剧‘鍖归厤銆�
+     * <p>
+     * 鈿狅笍 鍊肩粡 {@code DtoConversionUtils.sourceToTarget} 鍚屽悕鎷疯礉鍒� {@code ServiceSubtaskEntity}锛�
+     * 鎵�浠ユ湰绫诲瓧娈靛悕蹇呴』涓庡疄浣撲竴鑷达紝鍚﹀垯鍙傛暟浼氳闈欓粯涓㈠純銆�
+     */
+    @ApiModelProperty(value = "閲嶈鎬ф爣璁扮紪鐮侊紙妯$硦鍖归厤锛屽 鏃ラ棿 / 鏃ラ棿鎵嬫湳 / FH0165.01锛�")
+    private String importanceFlagCode;
+
+    /**
      * 寮�濮嬪嚭闄㈡棩鏈�
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
@@ -843,6 +861,24 @@
     @ApiModelProperty(value = "鍗冲皢瓒呮椂鏃堕棿(灏忔椂)")
     private Integer soonTimeoutHours;
 
+    /**
+     * 鐐逛綅缂栫爜闆嗗悎锛�2026-11 鏂板锛�<b>鐐逛綅鏌ヨ鏉′欢鐨勫敮涓�鍏ュ弬</b>锛夈��
+     * <p>
+     * 鍓嶇鍙紶杩欎釜瀛楁锛�<b>鍗曢�変篃浼犳暟缁�</b>锛�
+     * <ul>
+     *   <li>鍗曢�夛細{@code {"pointLocations": ["P001"]}}</li>
+     *   <li>澶氶�夛細{@code {"pointLocations": ["P001","P002"]}}</li>
+     *   <li>涓嶇瓫鐐逛綅锛氫笉浼犳垨浼� {@code []}</li>
+     * </ul>
+     * 鈫� SQL 缁熶竴璧� {@code point_location IN (...)}锛堣 {@code serviceSubtaskWhere} /
+     * {@code countByCondition}锛夛紝鍒楄〃涓� total 鐢ㄥ悓涓�鏉′欢銆�
+     * <p>
+     * 鈿狅笍 鍊肩粡 {@code DtoConversionUtils.sourceToTarget} 鍚屽悕鎷疯礉鍒� {@code ServiceSubtaskEntity}锛�
+     * 鎵�浠ユ湰绫诲瓧娈靛悕蹇呴』涓庡疄浣撲竴鑷达紝鍚﹀垯鍙傛暟浼氳闈欓粯涓㈠純銆�
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜闆嗗悎")
+    private List<String> pointLocations;
+
 //    /**
 //     * 鏃ユ湡闄愬埗 鐩墠鐢卞墠绔帶鍒�
 //     */
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java b/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
index ad6ad32..1fdb1ad 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/domain/entity/ServiceSubtaskEntity.java
@@ -11,7 +11,6 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-
 import com.ruoyi.task.domain.TaskSendTimeVO;
 
 /**
@@ -757,6 +756,53 @@
     private List<String> importanceFlagCodes;
 
     /**
+     * 鐐逛綅缂栫爜锛�2026-11 鏂板锛屽搴� {@code service_subtask.point_location}锛夈��
+     * <p>
+     * 鈿狅笍 <b>鍓嶇涓嶄紶杩欎釜瀛楁</b>锛堝彧浼� {@link #pointLocations} 鏁扮粍锛夈�傝繖閲屼繚鐣欏畠鏈変袱涓師鍥狅細
+     * <ol>
+     *   <li>瀹冩槸 {@code service_subtask} 鐨勫垪璇箟杞戒綋锛屼笌鍏跺畠鍗曞�兼煡璇㈠瓧娈典繚鎸佸绉帮紱</li>
+     *   <li>鍏滃簳锛氱洿鎺ヨ皟 {@code /countByCondition} 涔嬬被鎺ュ彛鐨勮�佽皟鐢ㄦ柟锛岃嫢浠嶄紶鍗曞��
+     *       锛堟垨 {@code "P001,P002"} 閫楀彿涓诧級锛寋@link #getPointLocations()} 浼氭妸瀹冩媶鎴愰泦鍚堬紝
+     *       缁熶竴璧� {@code IN}锛屼笉浼氳闈欓粯蹇界暐銆�</li>
+     * </ol>
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜锛堝墠绔笉浼狅紱浠呭吋瀹瑰崟鍊煎叆鍙傜殑鍏滃簳锛�")
+    private String pointLocation;
+
+    /**
+     * 鐐逛綅缂栫爜闆嗗悎锛�2026-11 鏂板锛�<b>鐐逛綅鏌ヨ鏉′欢鐨勫敮涓�鍏ュ弬</b>锛夛細{@code IN} 鍖归厤銆�
+     * <p>
+     * 鍓嶇鍗曢�変篃浼犳暟缁勶細{@code ["P001"]} / 澶氶�� {@code ["P001","P002"]}锛涗笉绛涘垯浼� {@code []} 鎴栦笉浼犮��
+     */
+    @ApiModelProperty(value = "鐐逛綅缂栫爜闆嗗悎锛圛N 鍖归厤锛涘崟閫変篃浼犳暟缁勶級")
+    private List<String> pointLocations;
+
+    /**
+     * 鐐逛綅鏌ヨ鏉′欢鐨�<b>鍞竴鍏ュ彛</b>锛歋QL 閲屽彧鏈変竴鏉� {@code point_location IN (...)}锛�
+     * 鍗曢��/澶氶�夐兘鍦ㄨ繖閲屽綊涓�锛岄伩鍏嶅嚭鐜般�屽彧浼� pointLocation 鏃剁瓫閫夎闈欓粯蹇界暐銆嶃��
+     * <p>
+     * 鎵嬪啓杩欎釜 getter锛坽@code @Data} 涓嶄細閲嶅鐢熸垚锛夋槸涓轰簡璁� MyBatis 鐨� OGNL
+     * 锛坽@code pointLocations.size() > 0} 涓� {@code foreach collection="pointLocations"}锛�
+     * 鍙栧埌鍚堝苟鍚庣殑闆嗗悎銆�
+     */
+    public List<String> getPointLocations() {
+        if (pointLocations != null && !pointLocations.isEmpty()) {
+            return pointLocations;
+        }
+        if (pointLocation != null && !pointLocation.trim().isEmpty()) {
+            // 鍏煎鏈粨搴撱�屽閫�=閫楀彿涓层�嶇殑鑰佸彛寰勶細鍓嶇鑻ユ妸澶氶�夊杩涘崟鍊煎瓧娈碉紙P001,P002锛変篃鑳藉懡涓�
+            List<String> split = new java.util.ArrayList<>();
+            for (String item : pointLocation.split(",")) {
+                if (!item.trim().isEmpty()) {
+                    split.add(item.trim());
+                }
+            }
+            return split.isEmpty() ? null : split;
+        }
+        return pointLocations;
+    }
+
+    /**
      * 寮�濮嬪嚭闄㈡棩鏈�
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
index 3f2df0b..58b73f4 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
@@ -1870,6 +1870,25 @@
                             serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
                         }
                     }
+                    // 鐐逛綅琛岋紙2026-11锛宎ppltype=7锛夛細绉戝 / 鐥呭尯 / 鐐逛綅鍦� service_taskdept 閲屾槸
+                    // **鍚勮嚜鐙珛鐨勮**锛屽彲浠ュ叡瀛樹篃鍙互涓嶅叡瀛� 鈥斺�� 鎵�浠ョ偣浣嶈鏄�"棰濆杩藉姞"锛�
+                    // 涓嶆浛鎹笂闈㈢殑绉戝/鐥呭尯琛屻�傜偣浣嶈鐨� dept_code/dept_name 鐣欑┖锛岀紪鐮佸彧钀� point_location銆�
+                    if ("7".equals(serviceTaskVO.getAppltype())) {
+                        String pointLocation = firstNonBlank(serviceTaskVO.getPointLocation(),
+                                serviceTask.getPointLocation());
+                        if (StringUtils.isNotEmpty(pointLocation)) {
+                            ServiceTaskdept pointDept = new ServiceTaskdept();
+                            pointDept.setTaskId(serviceTask.getTaskid());
+                            pointDept.setTaskName(serviceTask.getTaskName());
+                            pointDept.setOrgid(serviceTask.getOrgid());
+                            pointDept.setLongtask(serviceTask.getLongTask() == null ? null
+                                    : Long.valueOf(serviceTask.getLongTask()));
+                            pointDept.setServiceType(serviceTaskVO.getServiceType());
+                            pointDept.setDeptType("3");
+                            pointDept.setPointLocation(pointLocation);
+                            serviceTaskdeptService.insertServiceTaskdept(pointDept);
+                        }
+                    }
                 }
             }
 //闀挎湡浠诲姟锛屼篃鍏佽鍔犱汉浜�
@@ -2249,6 +2268,27 @@
                     scheduleVO.setOplevelCodes(serviceTaskVO.getOplevelcode());
                     scheduleVO.setCreateBy(serviceTask.getUpdateBy());
                     serviceTaskScheduleService.saveScheduleWithDetail(scheduleVO);
+                } else if (serviceTaskVO.getAppltype().equals("7")) {
+                    // 鎸夌偣浣嶏紙鍚屽痉闇�姹傦級锛氬厛杞垹璇ヤ换鍔℃棫鐨� dept_type='3' 琛岋紝鍐嶆寜鍏ュ弬閲嶅缓
+                    //   锛堜笌绉戝/鐥呭尯銆屽厛鍒犲悗鎻掋�嶅悓鍙e緞锛涚偣浣嶈 dept_code/dept_name 鐣欑┖锛�
+                    ServiceTaskdept oldPoint = new ServiceTaskdept();
+                    oldPoint.setTaskId(serviceTask.getTaskid());
+                    oldPoint.setDeptType("3");
+                    serviceTaskdeptService.deleteServiceTaskdeptByTaskId(oldPoint);
+                    String pointLocation = StringUtils.isNotEmpty(serviceTaskVO.getPointLocation())
+                            ? serviceTaskVO.getPointLocation() : serviceTask.getPointLocation();
+                    if (StringUtils.isNotEmpty(pointLocation)) {
+                        ServiceTaskdept pointDept = new ServiceTaskdept();
+                        pointDept.setTaskId(serviceTask.getTaskid());
+                        pointDept.setTaskName(serviceTask.getTaskName());
+                        pointDept.setOrgid(serviceTaskVO.getOrgid());
+                        pointDept.setLongtask(serviceTask.getLongTask() == null ? null
+                                : Long.valueOf(serviceTask.getLongTask()));
+                        pointDept.setServiceType(serviceTaskVO.getServiceType());
+                        pointDept.setDeptType("3");
+                        pointDept.setPointLocation(pointLocation);
+                        serviceTaskdeptService.insertServiceTaskdept(pointDept);
+                    }
                 }
             }
             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
@@ -5456,16 +5496,46 @@
         String ip = localIP;
         ServiceTask serviceTask = new ServiceTask();
         serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceTaskVo.getTaskid());
+        if (ObjectUtils.isEmpty(serviceTask)) {
+            // 浠诲姟涓嶅瓨鍦� 鈫� 涓嶅彲鑳芥湁 data锛岀洿鎺ユ姏涓氬姟寮傚父锛堟帴鍙e眰浼氳浆鎴� code=500锛�
+            throw new BaseException("鎵爜鐢熸垚浠诲姟澶辫触锛氫换鍔′笉瀛樺湪鎴栧凡鍒犻櫎锛坱askid=" + serviceTaskVo.getTaskid() + "锛�");
+        }
         if (ObjectUtils.isNotEmpty(serviceTask)) {
             try {
                 ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                if (ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())) {
-                    serviceTaskdept.setDeptType("1");
-                    serviceTaskdept.setDeptCode(serviceTaskVo.getDeptcode());
-                }
-                if (ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())) {
+                // 缁村害锛堢瀹�/鐥呭尯/鐐逛綅锛夌敱浠诲姟鐨� appltype 鍐冲畾锛�1=绉戝銆�2=鐥呭尯銆�7=鐐逛綅銆�
+                //   涓夌缁村害鍦� service_taskdept 閲屾槸**鍚勮嚜鐙珛鐨勮**锛堝悇鑷殑鍒楋級锛屽彲浠ュ叡瀛樸�佷篃鍙互涓嶅叡瀛橈紱
+                //   浣嗘煡琛屾椂蹇呴』鍙甫涓�涓淮搴� 鈥斺�� 鍚﹀垯浼氱敤 A 缁村害鐨勭紪鐮佸幓鎾� B 缁村害鐨勮锛�
+                //   鑰岀偣浣嶈鐨� dept_code 鏈潵灏辨槸绌虹殑銆�
+                String appltype = serviceTask.getAppltype();
+                if ("7".equals(appltype)) {
+                    serviceTaskdept.setDeptType("3");
+                    serviceTaskdept.setPointLocation(firstNonBlank(serviceTaskVo.getPointLocation(),
+                            serviceTask.getPointLocation()));
+                } else if ("2".equals(appltype)) {
                     serviceTaskdept.setDeptType("2");
-                    serviceTaskdept.setDeptCode(serviceTaskVo.getLeavehospitaldistrictcode());
+                    // 浠诲姟涓婄殑绉戝/鐥呭尯鍙兘鏄�楀彿澶氶�夛紝鏌� service_taskdept 瑕佺敤鍗曞�硷紙鍙栫涓�涓級
+                    serviceTaskdept.setDeptCode(firstNonBlank(serviceTaskVo.getLeavehospitaldistrictcode(),
+                            firstValue(serviceTask.getLeavehospitaldistrictcode())));
+                } else if ("1".equals(appltype)) {
+                    serviceTaskdept.setDeptType("1");
+                    serviceTaskdept.setDeptCode(firstNonBlank(serviceTaskVo.getDeptcode(),
+                            firstValue(serviceTask.getDeptcode())));
+                } else {
+                    // appltype 涓虹┖鐨勫巻鍙蹭换鍔★細娌跨敤鏀归�犲墠鐨勫彛寰勶紙绉戝 鈫� 鐥呭尯锛屽悗鍐欑殑瑕嗙洊鍏堝啓鐨勶級锛�
+                    // 鐐逛綅浣滀负绗笁缁达紝鍙湪浼犱簡鐐逛綅鏃惰ˉ涓娿��
+                    if (ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())) {
+                        serviceTaskdept.setDeptType("1");
+                        serviceTaskdept.setDeptCode(serviceTaskVo.getDeptcode());
+                    }
+                    if (ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())) {
+                        serviceTaskdept.setDeptType("2");
+                        serviceTaskdept.setDeptCode(serviceTaskVo.getLeavehospitaldistrictcode());
+                    }
+                    if (ObjectUtils.isNotEmpty(serviceTaskVo.getPointLocation())) {
+                        serviceTaskdept.setDeptType("3");
+                        serviceTaskdept.setPointLocation(serviceTaskVo.getPointLocation());
+                    }
                 }
                 serviceTaskdept.setServiceType(serviceTask.getServiceType());
                 serviceTaskdept.setOrgid(serviceTask.getOrgid());
@@ -5502,10 +5572,21 @@
                         iServiceOutPathService.updateServiceOutPath(serviceOutPath);
 
                     }
+                } else {
+                    // 閰嶇疆缂哄け灞炪�屼笟鍔″彲棰勬湡銆嶆儏鍐碉細甯︿笂鎺掓煡淇℃伅鎶涘嚭鍘伙紙涓嶅悶锛夛紝
+                    // 鎺ュ彛灞傛嵁姝よ繑鍥� code=500 + 鏄庣‘ msg锛岄伩鍏嶃��200 + 绌� data銆嶃��
+                    throw new BaseException("鎵爜鐢熸垚浠诲姟澶辫触锛氭湭鍖归厤鍒颁换鍔$淮搴﹂厤缃紙taskid=" + serviceTaskVo.getTaskid()
+                            + "锛宎ppltype=" + appltype
+                            + "锛宒eptType=" + serviceTaskdept.getDeptType()
+                            + "锛宒eptCode=" + serviceTaskdept.getDeptCode()
+                            + "锛宲ointLocation=" + serviceTaskdept.getPointLocation() + "锛�");
                 }
+            } catch (BaseException be) {
+                // 鈿狅笍 蹇呴』鎺掑湪 catch (Exception) 涔嬪墠锛欱aseException 鏄� RuntimeException锛�
+                //    鍚﹀垯鍒氭姏鍑虹殑涓氬姟寮傚父浼氳涓嬮潰鏁存鍚炴帀锛屾帴鍙e張鍙樻垚 200 + 绌� data銆�
+                throw be;
             } catch (Exception e) {
-                e.printStackTrace();
-                log.error("銆愭壂鐮佺敓鎴愪换鍔°�戝鐞嗗紓甯革細{}", e.getMessage());
+                log.error("銆愭壂鐮佺敓鎴愪换鍔°�戝鐞嗗紓甯革細taskid={}锛寋}", serviceTaskVo.getTaskid(), e.getMessage(), e);
             }
         }
         return content;
@@ -5523,6 +5604,9 @@
         if (StringUtils.isNotEmpty(serviceTaskdept.getDeptType()) && serviceTaskdept.getDeptType().equals("1")) {
             serviceSubtask.setLeaveldeptcode(serviceTaskdept.getDeptCode());
             serviceSubtask.setLeaveldeptname(serviceTaskdept.getDeptName());
+        } else if (StringUtils.isNotEmpty(serviceTaskdept.getDeptType()) && serviceTaskdept.getDeptType().equals("3")) {
+            // 鐐逛綅琛岋紙dept_type='3'锛夛細dept_code/dept_name 涓虹┖锛岀偣浣嶅彧钀� point_location
+            serviceSubtask.setPointLocation(serviceTaskdept.getPointLocation());
         } else {
             serviceSubtask.setLeavehospitaldistrictcode(serviceTaskdept.getDeptCode());
             serviceSubtask.setLeavehospitaldistrictname(serviceTaskdept.getDeptName());
diff --git a/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml b/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
index 98680e2..656298d 100644
--- a/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
+++ b/ruoyi-task/src/main/resources/mapper/task/ServiceSubtaskMapper.xml
@@ -111,6 +111,8 @@
         <result property="diagType" column="diag_type"/>
         <!-- 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟/鏃犫�︼級锛屽缓浠诲姟鏃跺彇鑷� pat_med_inhosp -->
         <result property="importanceFlagCode" column="importance_flag_code"/>
+        <!-- 2026-11锛氱偣浣嶇紪鐮侊紝寤哄瓙浠诲姟鏃跺師鏍锋嫹鑷� service_task.point_location -->
+        <result property="pointLocation" column="point_location"/>
     </resultMap>
 
     <resultMap type="com.ruoyi.task.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -247,6 +249,7 @@
                deptcode,
                deptname,
                importance_flag_code,
+               point_location,
                stop_state,
                leavehospitaldistrictcode,
                leavehospitaldistrictname,
@@ -714,22 +717,37 @@
         <if test="hospType != null  and hospType != ''">and hosp_type = #{hospType}</if>
         <!--
           2026-11锛氶噸瑕佹�ф爣璁扮瓫閫夛紙瀵瑰簲 service_subtask.importance_flag_code锛屽缓浠诲姟鏃跺彇鑷�
-          pat_med_inhosp.importance_flag_code锛夈�備袱绉嶅啓娉曪細
-            鈶� 绮剧‘鍗曞��  importanceFlagCode = 'FH0165.01'锛堟垨鎻忚堪鍙e緞 '鏃ラ棿鎵嬫湳'锛�
-            鈶� 绮剧‘澶氬��  importanceFlagCodes = ['FH0165.01','FH0165.02']
+          pat_med_inhosp.importance_flag_code锛夈��
+            鈶� 妯$硦锛�/patItem 鐢ㄨ繖涓級  importanceFlagCode    鈫� LIKE '%鍊�%'
+               浼犮�屾棩闂淬�嶅嵆鍙懡涓�屾棩闂存墜鏈�嶃�屾棩闂磋瘖鐤椼�嶃�屾棤,鏃ラ棿鎵嬫湳銆嶅鍊艰锛�
+               浼犲畬鏁村�硷紙銆屾棩闂存墜鏈��/銆孎H0165.01銆嶏級閫�鍖栦负绮剧‘鍖归厤銆�
+            鈶� 绮剧‘澶氬��                 importanceFlagCodes 鈫� IN
           璇ュ垪閲囬泦鏃跺氨琚嫾鎴�**鎻忚堪涓�**锛圛mportFlagEnum 鐨� desc锛夛紝澶氬�肩敤鑻辨枃閫楀彿鎷兼帴锛�
-          濡� '鏃�,鏃ラ棿鎵嬫湳'锛堣 ServiceSLTDHealthcareRecordServiceImpl#hospitalizedApply锛夆�斺��
-          绛夊��/IN 鍙懡涓崟鍊艰锛涘鍊艰锛堢幇鍦轰粎 7 鏉★紝閮藉湪鍑洪櫌璁板綍涓婏級瑕佺瓫鍏ㄩ渶鑷鍐�
-          find_in_set銆備袱绉嶅彛寰勫苟瀛橈紙鏈夊簱瀛樻灇涓剧紪鐮併�佹湁搴撳瓨涓枃鎻忚堪锛夛紝浼犱粈涔堟寜浠�涔堢簿纭瘮锛�
+          鎵�浠ャ�屾棩闂淬�嶈繖绫昏法鍙栧�兼煡璇㈠彧鑳介潬妯$硦锛涙弿杩颁笌 FH0165.xx 缂栫爜涓ょ鍙e緞閮芥寜鍘熷�兼瘮锛�
           涓嶅仛鍊煎煙褰掍竴銆�
+          鈿狅笍 鍚屼竴鏉′欢蹇呴』鍚屾鍔犲埌 countByCondition锛堝垪琛� total / 鍚勭姸鎬佺粺璁¤蛋閭f潯 SQL锛夛紝
+             鍚﹀垯浼氬嚭鐜般�屽垪琛ㄧ瓫鍑� N 琛屻�佹�绘暟杩樻槸鍏ㄩ噺銆嶇殑閿欓厤銆�
         -->
         <if test="importanceFlagCode != null  and importanceFlagCode != ''">
-            and importance_flag_code = #{importanceFlagCode}
+            and importance_flag_code like concat('%', #{importanceFlagCode}, '%')
         </if>
         <if test="importanceFlagCodes != null and importanceFlagCodes.size() > 0">
             AND importance_flag_code IN
             <foreach collection="importanceFlagCodes" item="impFlagItem" open="(" separator="," close=")">
                 #{impFlagItem}
+            </foreach>
+        </if>
+        <!--
+          2026-11锛氱偣浣嶇瓫閫夛紙瀵瑰簲 service_subtask.point_location锛屽缓瀛愪换鍔℃椂浠� service_task 蹇収杩囨潵锛夈��
+          鍙湁涓�鏉� IN 鏉′欢锛氬崟閫�/澶氶�夐兘鍦� ServiceSubtaskEntity#getPointLocations() 閲屽綊涓�
+          锛堝彧浼� pointLocation 浼氳嚜鍔ㄥ寘鎴愬崟鍏冪礌闆嗗悎锛夛紝鎵�浠ヤ笉鍐嶅啓绛夊�煎垎鏀��
+          鈿狅笍 鍚屼竴鏉′欢蹇呴』鍚屾鍔犲埌 countByCondition锛堝垪琛� total / 鍚勭姸鎬佺粺璁¤蛋閭f潯 SQL锛夛紝
+             鍚﹀垯浼氬嚭鐜般�屽垪琛ㄧ瓫鍑� N 琛屻�佹�绘暟杩樻槸鍏ㄩ噺銆嶇殑閿欓厤銆�
+        -->
+        <if test="pointLocations != null and pointLocations.size() > 0">
+            AND point_location IN
+            <foreach collection="pointLocations" item="pointLocItem" open="(" separator="," close=")">
+                #{pointLocItem}
             </foreach>
         </if>
         <if test="libtemplateid != null ">and libtemplateid = #{libtemplateid}</if>
@@ -1174,6 +1192,8 @@
             <if test="deptname != null  and deptname != ''">deptname,</if>
             <!-- 2026-11锛氶噸瑕佹�ф爣璁扮紪鐮侊紙鏃ラ棿鎵嬫湳/鏃ラ棿璇婄枟鈥︼級锛屽缓浠诲姟鏃朵粠 pat_med_inhosp 鍚屾 -->
             <if test="importanceFlagCode != null  and importanceFlagCode != ''">importance_flag_code,</if>
+            <!-- 2026-11锛氱偣浣嶇紪鐮侊紝寤哄瓙浠诲姟鏃朵粠 service_task.point_location 鍚屾 -->
+            <if test="pointLocation != null  and pointLocation != ''">point_location,</if>
             <if test="labelstatus != null">labelstatus,</if>
             <if test="updateBy != null">update_by,</if>
             <if test="updateTime != null">update_time,</if>
@@ -1284,6 +1304,7 @@
             <if test="deptcode != null  and deptcode != ''">#{deptcode},</if>
             <if test="deptname != null  and deptname != ''">#{deptname},</if>
             <if test="importanceFlagCode != null  and importanceFlagCode != ''">#{importanceFlagCode},</if>
+            <if test="pointLocation != null  and pointLocation != ''">#{pointLocation},</if>
             <if test="labelstatus != null">#{labelstatus},</if>
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateTime != null">#{updateTime},</if>
@@ -1431,6 +1452,11 @@
             <if test="openid != null ">openid = #{openid},</if>
             <if test="longSendTime != null ">long_send_time = #{longSendTime},</if>
             <if test="sendstate != null ">sendstate = #{sendstate},</if>
+            <!-- 瀹屾垚鏃堕棿涓嶅彉閲忥紙2026-11锛夛細鐘舵�佷竴鏃︿笉鏄�"瀹屾垚(6)"锛屽氨鏄惧紡娓呯┖瀹屾垚鏃堕棿涓庡畬鎴愭椂鐘舵�併��
+                 涓婇潰 finishtime 閭d竴娈垫槸 if(finishtime != null)锛屼紶 null 浼氳鏁存璺宠繃锛�
+                 鎵�浠�"娓呯┖"蹇呴』鍦ㄨ繖閲岀敤 SQL 鐨� NULL 鍐欏嚭鏉ワ紱鍚﹀垯 3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂
+                 鐨勮浼氫竴鐩村甫鐫�鍘嗗彶瀹屾垚鏃堕棿锛�"瓒呮椂鍗存湁瀹屾垚鏃堕棿銆佸強鏃剁巼铏氶珮"灏辨槸杩欎箞鏉ョ殑锛夈�� -->
+            <if test="sendstate != null and sendstate != 6">finishtime = NULL, finish_state = NULL,</if>
             <if test="sendstate != null and sendstate == 6">finish_state = <include refid="finishStateExpr"/>,</if>
             <if test="serviceType != null ">service_type = #{serviceType},</if>
             <if test="score != null ">score = #{score},</if>
@@ -1477,6 +1503,8 @@
             <if test="scheduleSeq != null ">schedule_seq = #{scheduleSeq},</if>
             <if test="loopCount != null ">loop_count = #{loopCount},</if>
             <if test="isManuallyCalled != null ">is_manually_called = #{isManuallyCalled},</if>
+            <!-- 2026-11锛氱偣浣嶇紪鐮侊紙寤哄瓙浠诲姟鏃剁殑蹇収锛涗换鍔′笂鏀圭偣浣嶄笉浼氳嚜鍔ㄥ洖鍐欙級 -->
+            <if test="pointLocation != null  and pointLocation != ''">point_location = #{pointLocation},</if>
         </trim>
         where id = #{id}
     </update>
@@ -1556,6 +1584,11 @@
             <if test="openid != null ">openid = #{openid},</if>
             <if test="longSendTime != null ">long_send_time = #{longSendTime},</if>
             <if test="sendstate != null ">sendstate = #{sendstate},</if>
+            <!-- 瀹屾垚鏃堕棿涓嶅彉閲忥紙2026-11锛夛細鐘舵�佷竴鏃︿笉鏄�"瀹屾垚(6)"锛屽氨鏄惧紡娓呯┖瀹屾垚鏃堕棿涓庡畬鎴愭椂鐘舵�併��
+                 涓婇潰 finishtime 閭d竴娈垫槸 if(finishtime != null)锛屼紶 null 浼氳鏁存璺宠繃锛�
+                 鎵�浠�"娓呯┖"蹇呴』鍦ㄨ繖閲岀敤 SQL 鐨� NULL 鍐欏嚭鏉ワ紱鍚﹀垯 3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂
+                 鐨勮浼氫竴鐩村甫鐫�鍘嗗彶瀹屾垚鏃堕棿锛�"瓒呮椂鍗存湁瀹屾垚鏃堕棿銆佸強鏃剁巼铏氶珮"灏辨槸杩欎箞鏉ョ殑锛夈�� -->
+            <if test="sendstate != null and sendstate != 6">finishtime = NULL, finish_state = NULL,</if>
             <if test="sendstate != null and sendstate == 6">finish_state = <include refid="finishStateExpr"/>,</if>
             <if test="serviceType != null ">service_type = #{serviceType},</if>
             <if test="score != null ">score = #{score},</if>
@@ -1614,6 +1647,11 @@
             <if test="sex != null">sex = #{sex},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="sendstate != null ">sendstate = #{sendstate},</if>
+            <!-- 瀹屾垚鏃堕棿涓嶅彉閲忥紙2026-11锛夛細鐘舵�佷竴鏃︿笉鏄�"瀹屾垚(6)"锛屽氨鏄惧紡娓呯┖瀹屾垚鏃堕棿涓庡畬鎴愭椂鐘舵�併��
+                 涓婇潰 finishtime 閭d竴娈垫槸 if(finishtime != null)锛屼紶 null 浼氳鏁存璺宠繃锛�
+                 鎵�浠�"娓呯┖"蹇呴』鍦ㄨ繖閲岀敤 SQL 鐨� NULL 鍐欏嚭鏉ワ紱鍚﹀垯 3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂
+                 鐨勮浼氫竴鐩村甫鐫�鍘嗗彶瀹屾垚鏃堕棿锛�"瓒呮椂鍗存湁瀹屾垚鏃堕棿銆佸強鏃剁巼铏氶珮"灏辨槸杩欎箞鏉ョ殑锛夈�� -->
+            <if test="sendstate != null and sendstate != 6">finishtime = NULL, finish_state = NULL,</if>
             <if test="sendstate != null and sendstate == 6">finish_state = <include refid="finishStateExpr"/>,</if>
             <if test="age != null">age = #{age},</if>
             <if test="sfzh != null">sfzh = #{sfzh},</if>
@@ -1727,6 +1765,11 @@
             <if test="phone != null">phone = #{phone},</if>
             <if test="sex != null">sex = #{sex},</if>
             <if test="sendstate != null ">sendstate = #{sendstate},</if>
+            <!-- 瀹屾垚鏃堕棿涓嶅彉閲忥紙2026-11锛夛細鐘舵�佷竴鏃︿笉鏄�"瀹屾垚(6)"锛屽氨鏄惧紡娓呯┖瀹屾垚鏃堕棿涓庡畬鎴愭椂鐘舵�併��
+                 涓婇潰 finishtime 閭d竴娈垫槸 if(finishtime != null)锛屼紶 null 浼氳鏁存璺宠繃锛�
+                 鎵�浠�"娓呯┖"蹇呴』鍦ㄨ繖閲岀敤 SQL 鐨� NULL 鍐欏嚭鏉ワ紱鍚﹀垯 3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂
+                 鐨勮浼氫竴鐩村甫鐫�鍘嗗彶瀹屾垚鏃堕棿锛�"瓒呮椂鍗存湁瀹屾垚鏃堕棿銆佸強鏃剁巼铏氶珮"灏辨槸杩欎箞鏉ョ殑锛夈�� -->
+            <if test="sendstate != null and sendstate != 6">finishtime = NULL, finish_state = NULL,</if>
             <if test="sendstate != null and sendstate == 6">finish_state = <include refid="finishStateExpr"/>,</if>
             <if test="age != null">age = #{age},</if>
             <if test="sfzh != null">sfzh = #{sfzh},</if>
@@ -3669,6 +3712,25 @@
         <if test="sendname != null and sendname != ''">
             AND sendname LIKE CONCAT('%', #{sendname}, '%')
         </if>
+        <!--
+          2026-11锛氶噸瑕佹�ф爣璁版ā绯婄瓫閫� 鈥斺�� 蹇呴』涓� serviceSubtaskWhere 閲岀殑鍚屽悕鏉′欢銆愬畬鍏ㄤ竴鑷淬�戯紝
+          鍚﹀垯 /patItem 鐨勫垪琛ㄤ笌 total/鍚勭姸鎬佺粺璁′細閿欓厤锛堝垪琛ㄧ瓫浜嗐�佹�绘暟娌$瓫锛夈��
+          鍙e緞瑙� serviceSubtaskWhere 澶勭殑娉ㄩ噴銆�
+        -->
+        <if test="importanceFlagCode != null  and importanceFlagCode != ''">
+            AND importance_flag_code LIKE CONCAT('%', #{importanceFlagCode}, '%')
+        </if>
+        <!--
+          2026-11锛氱偣浣嶇瓫閫� 鈥斺�� 蹇呴』涓� serviceSubtaskWhere 閲岀殑鍚屽悕鏉′欢銆愬畬鍏ㄤ竴鑷淬�戯紝
+          鍚﹀垯 /patItem 鐨勫垪琛ㄤ笌 total/鍚勭姸鎬佺粺璁′細閿欓厤锛堝垪琛ㄧ瓫浜嗐�佹�绘暟娌$瓫锛夈��
+          鍗曢��/澶氶�夊綊涓�鍦� ServiceSubtaskEntity#getPointLocations()锛岃繖閲屽彧鏈変竴鏉� IN銆�
+        -->
+        <if test="pointLocations != null and pointLocations.size() > 0">
+            AND point_location IN
+            <foreach collection="pointLocations" item="pointLocItem" open="(" separator="," close=")">
+                #{pointLocItem}
+            </foreach>
+        </if>
         <if test="phone != null and phone != ''">
             AND phone = #{phone}
         </if>
diff --git a/ruoyi-task/src/main/resources/mapper/task/ServiceTaskMapper.xml b/ruoyi-task/src/main/resources/mapper/task/ServiceTaskMapper.xml
index e2998b9..f216749 100644
--- a/ruoyi-task/src/main/resources/mapper/task/ServiceTaskMapper.xml
+++ b/ruoyi-task/src/main/resources/mapper/task/ServiceTaskMapper.xml
@@ -63,6 +63,8 @@
         <result property="appltype" column="appltype"/>
         <result property="patCycle" column="pat_cycle"/>
         <result property="diagType" column="diag_type"/>
+        <!-- 2026-11锛氱偣浣嶇紪鐮侊紙鍚屽痉銆屾寜鐐逛綅銆嶉渶姹傦級锛屽缓瀛愪换鍔℃椂鍘熸牱鎷峰埌 service_subtask -->
+        <result property="pointLocation" column="point_location"/>
     </resultMap>
 
     <sql id="selectServiceTaskVo">
@@ -122,7 +124,8 @@
                nexttaskflag,
                nexttaskid,
                nexttaskname,
-               diag_type
+               diag_type,
+               point_location
         from service_task
     </sql>
 
@@ -259,7 +262,8 @@
         service_task.nexttaskid,
         service_task.nexttaskname,
         service_task.orgid,
-        service_task.campusid from service_task
+        service_task.campusid,
+        service_task.point_location from service_task
         where 1=1
         and service_task.del_flag = 0
         <!--            and taskid in (-->
@@ -495,6 +499,7 @@
             <if test="appltype != null  ">appltype,</if>
             <if test="patCycle != null  ">pat_cycle,</if>
             <if test="diagType != null and diagType != ''">diag_type,</if>
+            <if test="pointLocation != null and pointLocation != ''">point_location,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskName != null">#{taskName},</if>
@@ -553,6 +558,7 @@
             <if test="appltype != null  ">#{appltype},</if>
             <if test="patCycle != null  ">#{patCycle},</if>
             <if test="diagType != null and diagType != ''">#{diagType},</if>
+            <if test="pointLocation != null and pointLocation != ''">#{pointLocation},</if>
         </trim>
     </insert>
 
@@ -617,6 +623,7 @@
             <if test="appltype != null  ">appltype = #{appltype},</if>
             <if test="patCycle != null  ">pat_cycle = #{patCycle},</if>
             <if test="diagType != null and diagType != ''">diag_type = #{diagType},</if>
+            <if test="pointLocation != null and pointLocation != ''">point_location = #{pointLocation},</if>
         </trim>
         where taskid = #{taskid}
     </update>
diff --git a/ruoyi-task/src/main/resources/mapper/task/ServiceTaskdeptMapper.xml b/ruoyi-task/src/main/resources/mapper/task/ServiceTaskdeptMapper.xml
index 3314701..a629fd8 100644
--- a/ruoyi-task/src/main/resources/mapper/task/ServiceTaskdeptMapper.xml
+++ b/ruoyi-task/src/main/resources/mapper/task/ServiceTaskdeptMapper.xml
@@ -14,6 +14,8 @@
         <result property="deptId" column="dept_id"/>
         <result property="deptCode" column="dept_code"/>
         <result property="deptName" column="dept_name"/>
+        <!-- 2026-11锛氱偣浣嶇紪鐮侊紙dept_type='3' 鐨勮璧拌繖涓�鍒楋紝dept_code/dept_name 鐣欑┖锛� -->
+        <result property="pointLocation" column="point_location"/>
         <result property="delFlag" column="del_flag"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
@@ -31,6 +33,7 @@
                dept_type,
                dept_id,
                dept_code,
+               point_location,
                del_flag,
                create_time,
                update_time
@@ -65,6 +68,9 @@
             </if>
             <if test="deptName != null  and deptCode != ''">
                 and dept_name = #{deptName}
+            </if>
+            <if test="pointLocation != null  and pointLocation != ''">
+                and point_location = #{pointLocation}
             </if>
             <if test="orgid != null  and orgid != ''">
                 and orgid = #{orgid}
@@ -103,6 +109,8 @@
             </if>
             <if test="deptName != null">dept_name,
             </if>
+            <if test="pointLocation != null">point_location,
+            </if>
             <if test="orgid != null">orgid,
             </if>
         </trim>
@@ -128,6 +136,8 @@
             <if test="taskName != null">#{taskName},
             </if>
             <if test="deptName != null">#{deptName},
+            </if>
+            <if test="pointLocation != null">#{pointLocation},
             </if>
             <if test="orgid != null">#{orgid},
             </if>
@@ -168,6 +178,8 @@
             </if>
             <if test="deptName != null">dept_name = #{deptName},
             </if>
+            <if test="pointLocation != null">point_location = #{pointLocation},
+            </if>
             <if test="orgid != null">orgid = #{orgid},
             </if>
         </trim>

--
Gitblit v1.9.3