From 55d724ddd52b2acb6e7ee2d291e04e4b6d96ad19 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 09 十一月 2026 16:06:47 +0800
Subject: [PATCH] sync: service_subtask 科室病区字段重命名对齐

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  415 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 374 insertions(+), 41 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 34497eb..1224356 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -348,8 +348,8 @@
                 patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                 patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
-                patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode());
-                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
+                patTaskRelevance.setDeptcode(serviceSubtask1.getLeaveldeptcode());
+                patTaskRelevance.setDeptName(serviceSubtask1.getLeaveldeptname());
                 patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());
                 patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());
                 patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());
@@ -369,8 +369,8 @@
                 patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
                 patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
                 patTaskRelevance.setAddr(serviceSubtask1.getAddr());
-                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
-                patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode());
+                patTaskRelevance.setDeptName(serviceSubtask1.getLeaveldeptname());
+                patTaskRelevance.setDeptcode(serviceSubtask1.getLeaveldeptcode());
                 patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
                 patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
@@ -867,10 +867,10 @@
                 return "鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屾壘涓嶅埌瀵瑰簲浠诲姟 taskid = " + serviceSubtask.getTaskid() + ", 鍐嶈娆¢噸璇�";
             }
             // nexttaskflag=0 琛ㄧず浠诲姟閾剧粓姝紝涓嶅厑璁稿啀鐢熸垚
-            if ("0".equals(serviceTask.getNexttaskflag())) {
-                log.info("鏃犻渶鍐嶆闅忚锛屼换鍔″凡鏍囪鏃犲悗缁殢璁�, taskid = {}", serviceSubtask.getTaskid());
-                return "鏃犻渶鍐嶆闅忚锛岃浠诲姟鏃犲悗缁殢璁垮畨鎺�";
-            }
+//            if ("0".equals(serviceTask.getNexttaskflag())) {
+//                log.info("鏃犻渶鍐嶆闅忚锛屼换鍔″凡鏍囪鏃犲悗缁殢璁�, taskid = {}", serviceSubtask.getTaskid());
+//                return "鏃犻渶鍐嶆闅忚锛岃浠诲姟鏃犲悗缁殢璁垮畨鎺�";
+//            }
             // 骞傜瓑鏍¢獙锛氬悓涓�鍘熶换鍔″彧鍏佽鐢熸垚涓�鏉′簩娆¢殢璁�
             ServiceSubtaskEntity againQuery = new ServiceSubtaskEntity();
             againQuery.setUpid(serviceSubtask.getId().intValue());
@@ -924,8 +924,8 @@
                     visitDeptCode = requestDeptCode;
                     visitDeptName = requestDeptName;
                 } else {
-                    visitDeptCode = serviceSubtask.getDeptcode();
-                    visitDeptName = serviceSubtask.getDeptname();
+                    visitDeptCode = serviceSubtask.getLeaveldeptcode();
+                    visitDeptName = serviceSubtask.getLeaveldeptname();
                 }
                 if (StringUtils.isEmpty(visitDeptCode)) {
                     log.error("鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屾湰绉戝闅忚鏈壘鍒伴殢璁跨瀹�, subTaskId = {}", serviceSubtask.getId());
@@ -970,6 +970,18 @@
                 return "鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屾偅鑰呭嚭闄㈣褰曚笉瀹屾暣鎴栦笅涓�浠诲姟閰嶇疆寮傚父, 鍐嶈娆¢噸璇�";
             }
             Date now = new Date();
+            applyAgainVisitTime(serviceSubtaskAgain, serviceSubtask, nextServiceTask, config, now);
+            // 鍖荤敓澶勭悊鎰忚鍙栬嚜鏈璇锋眰锛屾寜涓嬩竴浠诲姟閲嶅缓瀛愪换鍔℃椂闇�鏄惧紡甯﹀叆锛屽惁鍒欎笉浼氳惤搴�
+            if (request != null) {
+                serviceSubtaskAgain.setDoctorOpinion(request.getDoctorOpinion());
+                serviceSubtaskAgain.setRemark(request.getRemark());
+                serviceSubtaskAgain.setDrcode(request.getDrcode());
+                serviceSubtaskAgain.setDrname(request.getDrname());
+                serviceSubtaskAgain.setNurseId(request.getNurseId());
+                serviceSubtaskAgain.setNurseName(request.getNurseName());
+                serviceSubtaskAgain.setManagementDoctor(request.getManagementDoctor());
+                serviceSubtaskAgain.setManagementDoctorCode(request.getManagementDoctorCode());
+            }
             serviceSubtaskAgain.setId(null);
             serviceSubtaskAgain.setUpid(serviceSubtask.getId().intValue());
             serviceSubtaskAgain.setVisitCount(ObjectUtils.isNotEmpty(serviceSubtask.getVisitCount())
@@ -978,9 +990,6 @@
             serviceSubtaskAgain.setIsVisitAgain(1);
             serviceSubtaskAgain.setCreateTime(now);
             serviceSubtaskAgain.setUpdateTime(now);
-
-            // 浜屾闅忚鏃堕棿锛氫笂娆¢殢璁垮畬鎴愭椂闂达紙鏈畬鎴愬垯褰撳墠鏃堕棿锛�+ 涓嬩竴浠诲姟鍙戦�佸ぉ鏁帮紱杩囧幓鏃堕棿鍏滃簳涓哄綋鍓嶆椂闂�
-            applyAgainVisitTime(serviceSubtaskAgain, serviceSubtask, nextServiceTask, config, now);
             // 鏂颁换鍔$殑闅忚鏂瑰紡璁板綍鏈閫夋嫨鐨勫啀娆¢殢璁挎柟寮忥紱resource 鏈韩涓嶈惤搴�
             serviceSubtaskAgain.setVisitType(resource);
             serviceSubtaskAgain.setVisitDeptCode(visitDeptCode);
@@ -1058,6 +1067,10 @@
         if (dueTime.before(now)) {
             dueTime = now;
         }
+        if(ObjectUtils.isNotEmpty(origin.getVisitTime())){
+            dueTime = ObjectUtils.isNotEmpty(origin.getVisitTime()) ? origin.getVisitTime() : now;
+        }
+
         target.setLongSendTime(dueTime);
         Date visitTime = dueTime;
         if ("3".equals(nextTask.getType())) {
@@ -1151,8 +1164,8 @@
                     visitDeptCode = fallbackDeptCode;
                     visitDeptName = serviceSubtask.getVisitDeptName();
                 } else {
-                    visitDeptCode = serviceSubtask.getDeptcode();
-                    visitDeptName = serviceSubtask.getDeptname();
+                    visitDeptCode = serviceSubtask.getLeaveldeptcode();
+                    visitDeptName = serviceSubtask.getLeaveldeptname();
                 }
             }
             ServiceSubtask serviceSubtaskAgain = patMedInhospService.boxedServiceSubtask(nextServiceTask,
@@ -1221,7 +1234,8 @@
         sysDeptVo.setDeptType("1");
         sysDeptVo.setOrgid(orgid);
         sysDeptVo.setDeptCode(centerDept);
-        List<SysDept> sysDepts = sysDeptService.selectDeptList(sysDeptVo);
+        // 瀹氭椂浠诲姟绾跨▼娌℃湁鐧诲綍涓婁笅鏂囷紝涓嶈兘璋冪敤甯� @DataScope 鐨� selectDeptList锛屽惁鍒欎細鎶涒�滆幏鍙栫敤鎴蜂俊鎭紓甯糕�濄��
+        List<SysDept> sysDepts = sysDeptService.selectSysDeptList(sysDeptVo);
         return CollectionUtils.isEmpty(sysDepts) ? null : sysDepts.get(0);
     }
 
@@ -1575,11 +1589,11 @@
                     serviceSubtask.setSendstate(2L);
                     String subtaskDeptCode = patTaskRelevance.getDeptcode();
                     if (StringUtils.isEmpty(subtaskDeptCode) && StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                        // service_subtask.deptcode 涓哄崟鍊煎瓧娈碉紝涓嶈兘鍐欏叆浠诲姟鐨勫绉戝鎷兼帴涓诧紝鍙栫涓�涓瀹ゅ厹搴�
+                        // service_subtask.leaveldeptcode 涓哄崟鍊煎瓧娈碉紝涓嶈兘鍐欏叆浠诲姟鐨勫绉戝鎷兼帴涓诧紝鍙栫涓�涓瀹ゅ厹搴�
                         subtaskDeptCode = serviceTaskVO.getDeptcode().split(",")[0].trim();
                     }
-                    serviceSubtask.setDeptcode(subtaskDeptCode);
-                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
+                    serviceSubtask.setLeaveldeptcode(subtaskDeptCode);
+                    serviceSubtask.setLeaveldeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setType(serviceTaskVO.getType());
@@ -1951,10 +1965,10 @@
                     serviceSubtask.setAddr(patTaskRelevance.getAddr());
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
-                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode());
+                    serviceSubtask.setLeaveldeptcode(patTaskRelevance.getDeptcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
-                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
+                    serviceSubtask.setLeaveldeptname(patTaskRelevance.getDeptName());
                     serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
@@ -3426,6 +3440,9 @@
             } else {
                 groupKey = "deptcode";
             }
+        } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+            // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍锛屾瘡涓换鍔″嵆涓�涓梾绉嶉殢璁夸换鍔�
+            groupKey = "taskid";
         }
         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
         // 鏍规嵁鏉′欢杩涜鍒嗙粍
@@ -3446,10 +3463,13 @@
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getManagementDoctorCode()).orElse("Unknown")));
                 break;
             case "deptcode":
-                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
+                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeaveldeptcode()).orElse("Unknown")));
                 break;
             case "leavehospitaldistrictcode":
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictcode()).orElse("Unknown")));
+                break;
+            case "taskid":
+                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getTaskid()).map(String::valueOf).orElse("Unknown")));
                 break;
             default:
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
@@ -3463,6 +3483,9 @@
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle(), serviceSubtaskCountReq.getVisitCount());
+            if ("taskid".equals(groupKey)) {
+                applyTaskGroupInfo(statistic, serviceSubtaskList);
+            }
             if (ObjectUtils.isNotEmpty(jsRates)) {
                 Map<String, Object> jsRateMap = jsRates.get(collectKey);
                 BigDecimal jsRate = new BigDecimal("0");
@@ -3539,7 +3562,13 @@
         ssRate.setRateDay(serviceSubtaskCountReq.getRateDay());
         Map<String, Map<String, Object>> jsRates = new HashMap<>();
         if (!collect.isEmpty()) {
-            jsRates = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
+            Map<String, Map<String, Object>> rateResult = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
+            if (rateResult != null && !rateResult.isEmpty()) {
+                // taskid 涓烘暟鍊肩被鍨嬶紝MyBatis 杩斿洖鐨� Map key 鍙兘鏄� Long锛岃繖閲岀粺涓�杞垚 String 涓庡垎缁� key 瀵归綈
+                for (Map.Entry<String, Map<String, Object>> entry : rateResult.entrySet()) {
+                    jsRates.put(String.valueOf(entry.getKey()), entry.getValue());
+                }
+            }
         }
         return jsRates;
     }
@@ -3552,6 +3581,9 @@
             ServiceSubtaskStatistic totalRow = calculateTotalRow(sfStatistics);
             totalRow.setLeavehospitaldistrictname("鎬昏");
             totalRow.setDeptname("鎬昏");
+            if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+                totalRow.setTaskName("鎬昏");
+            }
             sfStatistics.add(totalRow);
         }
 
@@ -3590,7 +3622,7 @@
             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
             } else {
-                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
+                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeaveldeptname()).orElse("Unknown")));
             }
         }
         List<ServiceSubtaskCount> joySubCount = serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);
@@ -3611,7 +3643,7 @@
                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
-                    ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+                    ss.setLeaveldeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
                 }
             }
 
@@ -3745,6 +3777,22 @@
     }
 
 
+    /**
+     * 鐥呯缁熻锛堟寜 taskid 鍒嗙粍锛夋椂琛ラ綈浠诲姟ID銆佷换鍔″悕绉板拰鐤剧梾鐥呯銆�
+     *
+     * @param statistic            缁熻缁撴灉
+     * @param serviceSubtaskList   褰撳墠浠诲姟鍒嗙粍涓嬬殑瀛愪换鍔�
+     */
+    private void applyTaskGroupInfo(ServiceSubtaskStatistic statistic, List<ServiceSubtask> serviceSubtaskList) {
+        if (statistic == null || CollectionUtils.isEmpty(serviceSubtaskList)) {
+            return;
+        }
+        ServiceSubtask first = serviceSubtaskList.get(0);
+        statistic.setTaskId(first.getTaskid());
+        statistic.setTaskName(first.getTaskName());
+        statistic.setDiagType(first.getDiagType());
+    }
+
     private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle, Integer visitCount) {
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
 
@@ -3755,8 +3803,8 @@
         } else {
             //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
             DecimalFormat percentFormat = new DecimalFormat("##.##%");
-            serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
-            serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+            serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getLeaveldeptname());
+            serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
             serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
             serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
             serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
@@ -4100,13 +4148,20 @@
     }
 
     /**
-     * 甯備竴缁熻鍙e緞锛氬啀娆″緟闅忚銆佸凡鍙戦�佸強浜哄伐鐢佃瘽瓒呮椂銆�
+     * 鍐嶆闅忚闄勫姞缁熻锛氬緟闅忚銆佸凡鍙戦�併�佷汉宸ョ數璇濊秴鏃跺強鍥為櫌澶嶈瘖澶嶆煡锛坰uggest=7锛夈��
      */
     private void applyAgainFollowUpExtraStatistics(ServiceSubtaskStatistic statistic, ServiceSubtask serviceSubtask) {
-        if (serviceSubtask.getVisitCount() == null || serviceSubtask.getVisitCount() <= 1 || serviceSubtask.getSendstate() == null) {
+        if (serviceSubtask.getVisitCount() == null || serviceSubtask.getVisitCount() <= 1) {
+            return;
+        }
+        if (serviceSubtask.getSendstate() == null) {
             return;
         }
         Long sendstate = serviceSubtask.getSendstate();
+        // 鍥為櫌澶嶈瘖澶嶆煡锛氬啀娆¢殢璁夸腑鎸夊鐞嗘剰瑙� suggest=7 缁熻
+        if (StringUtils.equals("7", StringUtils.trim(serviceSubtask.getSuggest()))) {
+            statistic.setSuggest7CountAgain(statistic.getSuggest7CountAgain() + 1L);
+        }
         if (sendstate.equals(3L)) {
             statistic.setSentAgain(statistic.getSentAgain() + 1L);
         }
@@ -4139,8 +4194,8 @@
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
-        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
-        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getLeaveldeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
         serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
         serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
         serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
@@ -4314,8 +4369,8 @@
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
-        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
-        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getLeaveldeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
         serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
         serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
         serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
@@ -4482,8 +4537,8 @@
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
-        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
-        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getLeaveldeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
         serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
         serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
         serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
@@ -4587,8 +4642,8 @@
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
-        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
-        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getLeaveldeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getLeaveldeptcode());
         serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
         serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
         serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
@@ -4912,6 +4967,7 @@
      * pendingFollowUpSentAgainInfo - visitCount > 1 && sendstate in (3,7)
      * sentInfo - visitCount = 1 && sendstate = 3
      * sentAgainInfo - visitCount > 1 && sendstate = 3
+     * suggest7CountAgainInfo - visitCount > 1 && suggest = 7
      * filterCountList - taskSituation = 6 && sendstate = 4
      *
      */
@@ -4952,6 +5008,7 @@
         serviceSubtaskCountReq.setExcep(null);
         serviceSubtaskCountReq.setTaskSituation(null);
         serviceSubtaskCountReq.setFinishState(null);
+        serviceSubtaskCountReq.setSuggest(null);
 
         switch (hyperLinkInfoType) {
             case "dischargeCountInfo":
@@ -5095,6 +5152,11 @@
                 serviceSubtaskCountReq.setVisitCount(2);
                 serviceSubtaskCountReq.setExcep("1");
                 break;
+            case "suggest7CountAgainInfo":
+                // 鍐嶆闅忚鍥為櫌澶嶈瘖澶嶆煡锛歷isitCount > 1 涓� suggest = 7
+                serviceSubtaskCountReq.setVisitCount(2);
+                serviceSubtaskCountReq.setSuggest("7");
+                break;
             case "taskSituation1Info":
                 serviceSubtaskCountReq.setTaskSituation(1);
                 break;
@@ -5196,6 +5258,9 @@
             } else {
                 groupKey = "deptcode";
             }
+        } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+            // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍
+            groupKey = "taskid";
         }
         serviceSubtaskCountReq.setGroupKey(groupKey);
         List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
@@ -5203,13 +5268,16 @@
         List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
         switch (groupKey) {
             case "deptcode":
-                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
+                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeaveldeptcode()).orElse("Unknown")));
                 break;
             case "drcode":
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
                 break;
             case "leavehospitaldistrictcode":
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictcode()).orElse("Unknown")));
+                break;
+            case "taskid":
+                collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getTaskid()).map(String::valueOf).orElse("Unknown")));
                 break;
             default:
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
@@ -5230,6 +5298,9 @@
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatisticCategory(serviceSubtaskList, serviceSubtaskCountReq, subCounts);
+            if ("taskid".equals(groupKey)) {
+                applyTaskGroupInfo(statistic, serviceSubtaskList);
+            }
             if (ObjectUtils.isNotEmpty(jsRates)) {
                 Map<String, Object> jsRateMap = jsRates.get(collectKey);
                 BigDecimal jsRate = new BigDecimal("0");
@@ -5416,6 +5487,88 @@
         return result;
     }
 
+    /**
+     * 闂閫夐」鏁板瓧涓嬮捇锛氳繑鍥為�夋嫨浜嗘寚瀹氶�夐」鐨� service_subtask 鍒楄〃銆�
+     * <p>
+     * 缁熻鏄庣粏涓殑閫夐」鏁伴噺鏉ヨ嚜 service_subtask_detail 鐨�
+     * IFNULL(matchedtext, asrtext)锛屽洜姝や笅閽诲繀椤讳娇鐢ㄥ悓涓�棰樼洰鐨勭浉鍚岄�夐」杩涜鍖归厤銆�
+     *
+     * @param serviceSubtaskCountReq 涓嬮捇鏉′欢
+     * @return service_subtask 鍒楄〃
+     */
+    @Override
+    public List<ServiceSubtask> getSfStatisticsScriptDetailsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        log.info("getSfStatisticsScriptDetailsHyperlink鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
+        if (serviceSubtaskCountReq == null) {
+            return new ArrayList<>();
+        }
+        // 鍏煎鍓嶇鐩存帴鍥炰紶缁熻鏄庣粏琛屼腑鐨� subtaskType
+        if (StringUtils.isBlank(serviceSubtaskCountReq.getType())
+                && StringUtils.isNotBlank(serviceSubtaskCountReq.getSubtaskType())) {
+            serviceSubtaskCountReq.setType(serviceSubtaskCountReq.getSubtaskType());
+        }
+        resolveScriptContentAndType(serviceSubtaskCountReq);
+        if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent())
+                && serviceSubtaskCountReq.getScriptid() == null) {
+            log.warn("getSfStatisticsScriptDetailsHyperlink-棰樼洰scriptid鍜宻criptContent鍧囦负绌猴紝杩斿洖绌哄垪琛�");
+            return new ArrayList<>();
+        }
+        if (serviceSubtaskCountReq.getOptionText() == null) {
+            log.warn("getSfStatisticsScriptDetailsHyperlink-閫夐」optionText涓虹┖锛岃繑鍥炵┖鍒楄〃");
+            return new ArrayList<>();
+        }
+        return serviceSubtaskMapper.getSfStatisticsScriptDetailsHyperlink(serviceSubtaskCountReq);
+    }
+
+    /**
+     * 鏍规嵁 scriptid 琛ラ綈棰樼洰鍐呭鍜屼换鍔$被鍨嬨��
+     * <p>
+     * 缁熻鏄庣粏鎸夆�滈鐩唴瀹� + 浠诲姟绫诲瀷鈥濆悎骞讹紝鍚屼竴閬撻澶嶅埗鍒板涓换鍔℃ā鏉挎椂 scriptid 鍙兘涓嶅悓锛�
+     * 鍥犳浼樺厛鎸夐鐩唴瀹逛笅閽伙紱鍙湁鏌ヤ笉鍒伴鐩唴瀹规椂鎵嶉��鍖栦负 scriptid 绮剧‘鍖归厤銆�
+     */
+    private void resolveScriptContentAndType(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        if (serviceSubtaskCountReq.getScriptid() == null) {
+            return;
+        }
+        // 宸叉湁棰樼洰鍐呭鍜屼换鍔$被鍨嬫椂鏃犻渶鍐嶆煡妯℃澘闂琛�
+        if (StringUtils.isNotBlank(serviceSubtaskCountReq.getScriptContent())
+                && StringUtils.isNotBlank(serviceSubtaskCountReq.getType())) {
+            return;
+        }
+
+        String type = serviceSubtaskCountReq.getType();
+        if (StringUtils.isBlank(type) || "1".equals(type)) {
+            IvrTaskTemplateScript ivrTaskTemplateScript =
+                    iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskCountReq.getScriptid());
+            if (ObjectUtils.isNotEmpty(ivrTaskTemplateScript)) {
+                if (StringUtils.isBlank(serviceSubtaskCountReq.getType())) {
+                    serviceSubtaskCountReq.setType("1");
+                }
+                if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent())) {
+                    serviceSubtaskCountReq.setScriptContent(ivrTaskTemplateScript.getScriptContent());
+                }
+                return;
+            }
+            // 鏄庣‘鎸囧畾浜嗚闊崇被鍨嬫椂涓嶅啀灏濊瘯闂嵎琛�
+            if (StringUtils.isNotBlank(type)) {
+                return;
+            }
+        }
+
+        if (StringUtils.isBlank(serviceSubtaskCountReq.getType()) || "2".equals(type)) {
+            SvyTaskTemplateScript svyTaskTemplateScript =
+                    svyTaskTemplateScriptService.selectSvyTaskTemplateScriptByID(serviceSubtaskCountReq.getScriptid());
+            if (ObjectUtils.isNotEmpty(svyTaskTemplateScript)) {
+                if (StringUtils.isBlank(serviceSubtaskCountReq.getType())) {
+                    serviceSubtaskCountReq.setType("2");
+                }
+                if (StringUtils.isBlank(serviceSubtaskCountReq.getScriptContent())) {
+                    serviceSubtaskCountReq.setScriptContent(svyTaskTemplateScript.getScriptContent());
+                }
+            }
+        }
+    }
+
 
     /**
      * @param serviceSubtask
@@ -5535,6 +5688,7 @@
         total.setSentAgain(0L);
         total.setFollowUpSuccessAgain(0L);
         total.setFollowUpFailAgain(0L);
+        total.setSuggest7CountAgain(0L);
         total.setManualAgain(0L);
         total.setSmsAgain(0L);
         total.setWeChatAgain(0L);
@@ -5579,6 +5733,7 @@
             total.setSentAgain(total.getSentAgain() + (stat.getSentAgain() != null ? stat.getSentAgain() : 0L));
             total.setFollowUpSuccessAgain(total.getFollowUpSuccessAgain() + (stat.getFollowUpSuccessAgain() != null ? stat.getFollowUpSuccessAgain() : 0L));
             total.setFollowUpFailAgain(total.getFollowUpFailAgain() + (stat.getFollowUpFailAgain() != null ? stat.getFollowUpFailAgain() : 0L));
+            total.setSuggest7CountAgain(total.getSuggest7CountAgain() + (stat.getSuggest7CountAgain() != null ? stat.getSuggest7CountAgain() : 0L));
             total.setManualAgain(total.getManualAgain() + (stat.getManualAgain() != null ? stat.getManualAgain() : 0L));
             total.setSmsAgain(total.getSmsAgain() + (stat.getSmsAgain() != null ? stat.getSmsAgain() : 0L));
             total.setWeChatAgain(total.getWeChatAgain() + (stat.getWeChatAgain() != null ? stat.getWeChatAgain() : 0L));
@@ -5640,7 +5795,7 @@
             diagname.setPhone(subtask.getPhone());
             diagname.setNurseName(subtask.getNurseName());
             diagname.setDrname(subtask.getDrname());
-            diagname.setDeptname(subtask.getDeptname());
+            diagname.setDeptname(subtask.getLeaveldeptname());
             diagname.setLeavehospitaldistrictname(subtask.getLeavehospitaldistrictname());
             diagname.setTemplatename(subtask.getTemplatename());
             diagname.setPreachform(subtask.getPreachform());
@@ -5782,6 +5937,184 @@
                 }
             }
         }
+    }
+
+    /**
+     * 寰俊鍏紬鍙峰凡棰嗗彇鏈~鍐欙細鎸夐鐩粯璁ら�夐」琛ラ綈褰撳墠瀛愪换鍔★紝骞跺皢褰撳墠瀛愪换鍔″畬鎴愩��
+     * <p>
+     * 鎵�鏈夋煡璇€�佹槑缁嗗啓鍏ャ�佺姸鎬佹洿鏂伴兘鍙娇鐢ㄥ綋鍓� subid锛岄伩鍏嶅奖鍝嶅叾浠栦换鍔�/瀛愪换鍔°��
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean completeWechatClaimedByDefault(ServiceSubtask serviceSubtask) {
+        if (serviceSubtask == null || serviceSubtask.getId() == null) {
+            return false;
+        }
+
+        // 閲嶆柊璇诲彇褰撳墠瀛愪换鍔★紝鎵�鏈夊垽鏂彧閽堝杩欎竴涓� subid
+        ServiceSubtask current = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId());
+        if (current == null) {
+            return false;
+        }
+        // 鍙鐞嗭細涓芥按涓尰闄€�侀棶鍗枫�佸綋鍓嶆柟寮忓叕浼楀彿銆佸凡棰嗗彇銆佹湭鎻愪氦
+        // 鍏朵粬鍖婚櫌 orgid 涓嶅尮閰嶆椂鐩存帴杩斿洖 false锛岀户缁蛋鍘熻ˉ鍋块�昏緫銆�
+        if (!IServiceSubtaskService.WECHAT_DEFAULT_COMPLETE_ORGID.equals(current.getOrgid())
+                || !"2".equals(current.getType())
+                || !"5".equals(current.getCurrentPreachform())
+                || !Long.valueOf(1L).equals(current.getSendstate())
+                || Long.valueOf(1L).equals(current.getSubmit())) {
+            return false;
+        }
+
+        // 鏌ヨ褰撳墠瀛愪换鍔¤嚜宸辩殑鍏紬鍙峰彂閫佹柟寮忥紝蹇呴』鏄凡鍙戦��(2)鎴栧凡棰嗗彇(3)
+        ServiceSubtaskPreachform query = new ServiceSubtaskPreachform();
+        query.setSubid(current.getId());
+        query.setTaskid(current.getTaskid());
+        query.setPreachform("5");
+        List<ServiceSubtaskPreachform> preachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(query);
+        if (CollectionUtils.isEmpty(preachforms)) {
+            return false;
+        }
+        ServiceSubtaskPreachform currentPreachform = preachforms.stream()
+                .filter(item -> "2".equals(item.getSendstate()) || "3".equals(item.getSendstate()))
+                .findFirst().orElse(null);
+        if (currentPreachform == null) {
+            return false;
+        }
+
+        // 鍙粰褰撳墠 subid 琛ラ綈榛樿閫夐」锛涜嚦灏戞湁涓�棰橀粯璁ら�夐」鎵嶇户缁�
+        int filled = fillWechatDefaultDetailForCurrentSubtask(current);
+        if (filled <= 0) {
+            log.info("銆愬井淇″叕浼楀彿榛樿瀹屾垚銆憇ubid锛歿} 娌℃湁鍙~鍏呯殑榛樿閫夐」锛岃烦杩�", current.getId());
+            return false;
+        }
+
+        // 褰撳墠鍏紬鍙峰彂閫佹柟寮忥細宸插彂閫�/宸查鍙� -> 瀹屾垚(9)
+        ServiceSubtaskPreachform updatePreachform = new ServiceSubtaskPreachform();
+        updatePreachform.setId(currentPreachform.getId());
+        updatePreachform.setSubid(current.getId());
+        updatePreachform.setPreachform("5");
+        updatePreachform.setOrgid(current.getOrgid());
+        updatePreachform.setRemark("宸查鍙栨湭濉啓锛屾寜榛樿閫夐」瀹屾垚");
+        int preachformUpdated = serviceSubtaskPreachformMapper.updateWechatPreachformComplete(updatePreachform);
+        if (preachformUpdated == 0) {
+            throw new BaseException("寰俊鍏紬鍙烽粯璁ゅ畬鎴愬け璐ワ細鍙戦�佹柟寮忕姸鎬佸凡鍙樺寲锛宻ubid=" + current.getId());
+        }
+
+        // 褰撳墠瀛愪换鍔★細宸查鍙�(1) -> 瀹屾垚(6)锛屽彧鏇存柊杩欎竴涓� subid
+        ServiceSubtask complete = new ServiceSubtask();
+        complete.setId(current.getId());
+        complete.setOrgid(current.getOrgid());
+        complete.setFinishtime(new Date());
+        complete.setResult("success");
+        complete.setRemark("宸查鍙栨湭濉啓锛屾寜榛樿閫夐」瀹屾垚");
+        int subtaskUpdated = serviceSubtaskMapper.updateWechatDefaultComplete(complete);
+        if (subtaskUpdated == 0) {
+            throw new BaseException("寰俊鍏紬鍙烽粯璁ゅ畬鎴愬け璐ワ細瀛愪换鍔$姸鎬佸凡鍙樺寲锛宻ubid=" + current.getId());
+        }
+
+        log.info("銆愬井淇″叕浼楀彿榛樿瀹屾垚銆憇ubid锛歿}锛屽凡鎸夐粯璁ら�夐」瀹屾垚锛屽~鍏呴鐩暟锛歿}", current.getId(), filled);
+        return true;
+    }
+
+    /**
+     * 浠呯粰褰撳墠瀛愪换鍔¤ˉ榻愰棶鍗峰崟閫�/澶氶�夐涓� default_value=2 鐨勯�夐」銆�
+     * 宸叉湁闈炵┖绛旀鐨勯鐩烦杩囷紝涓嶈鐩栨偅鑰呭凡濉啓鍐呭銆�
+     *
+     * @return 瀹為檯濉厖锛堟垨姝ゅ墠宸茬敱绯荤粺榛樿濉厖锛夌殑棰樼洰鏁�
+     */
+    private int fillWechatDefaultDetailForCurrentSubtask(ServiceSubtask serviceSubtask) {
+        Long templateId = serviceSubtask.getTemplateid();
+        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+        if (templateId == null && serviceTask != null) {
+            templateId = serviceTask.getTemplateid();
+        }
+        if (templateId == null) {
+            return 0;
+        }
+
+        SvyTaskTemplateScript scriptQuery = new SvyTaskTemplateScript();
+        scriptQuery.setTemplateID(templateId);
+        List<SvyTaskTemplateScript> scripts = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptList(scriptQuery);
+        if (CollectionUtils.isEmpty(scripts)) {
+            return 0;
+        }
+
+        int filled = 0;
+        for (SvyTaskTemplateScript script : scripts) {
+            SvyTaskTemplateScriptVO scriptVO = DtoConversionUtils.sourceToTarget(script, SvyTaskTemplateScriptVO.class);
+            SvyTaskTemplateScriptVO scriptWithOptions = svyTaskTemplateScriptService.selectInfoByCondition(scriptVO);
+            if (scriptWithOptions == null
+                    || scriptWithOptions.getId() == null
+                    || CollectionUtils.isEmpty(scriptWithOptions.getSvyTaskTemplateTargetoptions())
+                    || (!"1".equals(scriptWithOptions.getScriptType()) && !"2".equals(scriptWithOptions.getScriptType()))) {
+                continue;
+            }
+
+            List<SvyTaskTemplateTargetoption> options = scriptWithOptions.getSvyTaskTemplateTargetoptions();
+            List<SvyTaskTemplateTargetoption> defaultOptions = options.stream()
+                    .filter(option -> option.getDefaultValue() != null && option.getDefaultValue() == 2L)
+                    .filter(option -> StringUtils.isNotBlank(option.getOptioncontent()))
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(defaultOptions)) {
+                continue;
+            }
+
+            // 宸叉湁闈炵┖绛旀鍒欎笉瑕嗙洊锛岄伩鍏嶅奖鍝嶆偅鑰呭凡濉啓鍐呭
+            ServiceSubtaskDetail detailQuery = new ServiceSubtaskDetail();
+            detailQuery.setSubId(serviceSubtask.getId());
+            detailQuery.setScriptid(scriptWithOptions.getId());
+            List<ServiceSubtaskDetail> existingDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(detailQuery);
+            ServiceSubtaskDetail existing = CollectionUtils.isNotEmpty(existingDetails) ? existingDetails.get(0) : null;
+            if (existing != null
+                    && (StringUtils.isNotBlank(existing.getAsrtext()) || StringUtils.isNotBlank(existing.getMatchedtext()))) {
+                // 涔嬪墠宸茬敱绯荤粺榛樿濉厖杩囩殑锛岃鍏ュ凡濉厖锛屼繚璇侀噸璇曞箓绛�
+                if ("DEFAULT".equals(existing.getOperate())) {
+                    filled++;
+                }
+                continue;
+            }
+
+            String targetValue = options.stream()
+                    .map(SvyTaskTemplateTargetoption::getOptioncontent)
+                    .filter(StringUtils::isNotBlank)
+                    .collect(Collectors.joining("&"));
+            String defaultValue = defaultOptions.stream()
+                    .map(SvyTaskTemplateTargetoption::getOptioncontent)
+                    .collect(Collectors.joining("&"));
+
+            ServiceSubtaskDetail detail = new ServiceSubtaskDetail();
+            detail.setSubId(serviceSubtask.getId());
+            detail.setTaskid(serviceSubtask.getTaskid());
+            detail.setPatid(serviceSubtask.getPatid());
+            detail.setScriptid(scriptWithOptions.getId());
+            detail.setTemplatequestionnum(scriptWithOptions.getId());
+            detail.setQuestiontext(scriptWithOptions.getScriptContent());
+            detail.setCategoryid(scriptWithOptions.getCategoryid());
+            detail.setTargetid(scriptWithOptions.getTargetid() != null ? scriptWithOptions.getTargetid().intValue() : null);
+            detail.setValueType(scriptWithOptions.getScriptType());
+            detail.setTargetvalue(targetValue);
+            detail.setAsrtext(defaultValue);
+            detail.setMatchedtext(defaultValue);
+            detail.setOperate("DEFAULT");
+            detail.setTemplateType(2);
+            detail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null);
+            detail.setTemplateid(templateId.toString());
+            detail.setGuid(scriptWithOptions.getGuid());
+            detail.setOrgid(StringUtils.isNotEmpty(scriptWithOptions.getOrgid()) ? scriptWithOptions.getOrgid()
+                    : (serviceTask != null ? serviceTask.getOrgid() : null));
+            detail.setCreateTime(new Date());
+            detail.setUpdateTime(new Date());
+
+            if (existing != null) {
+                detail.setId(existing.getId());
+                serviceSubtaskDetailMapper.updateServiceSubtaskDetail(detail);
+            } else {
+                serviceSubtaskDetailMapper.insertServiceSubtaskDetail(detail);
+            }
+            filled++;
+        }
+        return filled;
     }
 
     @Override
@@ -6635,8 +6968,8 @@
 //        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
 //        serviceSubtask.setDrname(patMedInhosp1.getDrname());
         if (StringUtils.isNotEmpty(serviceTaskdept.getDeptType()) && serviceTaskdept.getDeptType().equals("1")) {
-            serviceSubtask.setDeptcode(serviceTaskdept.getDeptCode());
-            serviceSubtask.setDeptname(serviceTaskdept.getDeptName());
+            serviceSubtask.setLeaveldeptcode(serviceTaskdept.getDeptCode());
+            serviceSubtask.setLeaveldeptname(serviceTaskdept.getDeptName());
         } else {
             serviceSubtask.setLeavehospitaldistrictcode(serviceTaskdept.getDeptCode());
             serviceSubtask.setLeavehospitaldistrictname(serviceTaskdept.getDeptName());

--
Gitblit v1.9.3