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/service/impl/ServiceSubtaskServiceImpl.java |  206 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 178 insertions(+), 28 deletions(-)

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 eb6683c..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
@@ -913,7 +913,7 @@
             serviceOutPath.setSubId(serviceSubtask1.getId());
             List<ServiceOutPath> serviceOutPaths = serviceOutPathMapper.selectServiceOutPathList(serviceOutPath);
             if (CollectionUtils.isNotEmpty(serviceOutPaths))
-                format = String.format("%03X", serviceOutPaths.get(0).getId());
+                format = ShortCode.encode(serviceOutPaths.get(0).getId());
             else format = getOutPath(serviceSubtask1, rsaPublicKeyExample);
             serviceSubtask = serviceSubtask1;
         } else {
@@ -965,7 +965,7 @@
         serviceOutPath.setSubId(serviceSubtask.getId());
         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
         //杞垚16杩涘埗
-        format = String.format("%03X", serviceOutPath.getId());
+        format = ShortCode.encode(serviceOutPath.getId());
         serviceOutPath.setRadix(format);
         serviceOutPath.setUpdateTime(new Date());
         iServiceOutPathService.updateServiceOutPath(serviceOutPath);
@@ -1599,6 +1599,61 @@
     }
 
     /**
+     * 鍙栭�楀彿涓查噷鐨勭涓�涓�硷紙浠诲姟涓婄瀹�/鐥呭尯鏄閫夛紝鑰� {@code service_subtask} 涓婇兘鏄崟鍊煎垪锛夈��
+     */
+    private String firstValue(String value) {
+        if (StringUtils.isEmpty(value)) {
+            return null;
+        }
+        for (String item : value.split(",")) {
+            if (StringUtils.isNotEmpty(item.trim())) {
+                return item.trim();
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 浠诲姟閰嶇疆锛坽@link ServiceTaskVO}锛夆啋 瀛愪换鍔★紙{@link ServiceSubtask}锛夌殑瀛楁鎼繍銆�
+     * <p>
+     * <b>涓轰粈涔堜笉鑳界洿鎺� {@code DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class)}锛�</b>
+     * 瀹冩槸绾悓鍚嶆嫹璐濓紝鑰屼袱杈瑰悓鍚嶇殑 {@code deptcode / deptname} <b>璇箟涓嶅悓</b>锛�
+     * <ul>
+     *   <li>{@code ServiceTaskVO.deptcode / deptname} = 浠诲姟鐨勩�岄�傜敤绉戝銆嶏紝
+     *       鍑洪櫌闅忚锛坰erviceType=2锛�/ 鍑洪櫌瀹f暀锛�4锛�/ 闂ㄨ瘖闅忚锛�3锛夌瓑鍦烘櫙涓嬪氨鏄�<b>绂婚櫌绉戝</b>锛�</li>
+     *   <li>{@code ServiceSubtask.deptcode / deptname} = <b>鍦ㄩ櫌绉戝</b>
+     *       锛�2026-11 鐢卞師 sendlimitpbegin/pend 澶嶇敤鑰屾潵锛岃 {@code ServiceSubtask} 瀛楁娉ㄩ噴锛夈��</li>
+     * </ul>
+     * 浜庢槸绾悓鍚嶆嫹璐濅細鎶娿�岀闄㈢瀹ゃ�嶅啓杩涖�屽湪闄㈢瀹ゃ�嶅垪锛屽悗鏋滄湁涓や釜锛�
+     * <ol>
+     *   <li>鎸夊湪闄㈢淮搴︾瓫锛坽@code deptcodes} 鈫� {@code service_subtask.deptcode}锛変細璇懡涓繖浜涘瓙浠诲姟锛�</li>
+     *   <li>鎸夌闄㈢淮搴︾瓫锛坽@code leaveldeptcodes} 鈫� {@code service_subtask.leaveldeptcode}锛夋椂锛�
+     *       鎮h�呰嚜宸辨病甯︾瀹ょ殑閭d簺锛堝墠绔墜鍔ㄥ嬀閫夋偅鑰呭緢甯歌锛変細鍥犱负 {@code leaveldeptcode} 涓虹┖鑰屾煡涓嶅埌銆�</li>
+     * </ol>
+     * 鍥犳杩欓噷鎸夐」鐩棦瀹氬彛寰勶紙{@code doc/service_subtask_瀛楁鏀瑰悕_鏀瑰姩娓呭崟.md} 搂8锛氳繖鍑犳潯
+     * 銆岄暱鏈熶换鍔� / 浠诲姟缁� / 鎵嬪姩寤轰换鍔°�嶈矾寰�<b>涓嶅~鍦ㄩ櫌缁村害</b>锛夌粺涓�澶勭悊锛�
+     * <b>鍦ㄩ櫌缁村害 4 鍒楁竻绌�</b>锛堝湪闄㈢瀹�/鍦ㄩ櫌鐥呭尯鍙湁 HIS 閾捐矾鑳戒粠 {@code pat_med_inhosp} 鎷垮埌锛夛紝
+     * <b>绉戝 / 鐥呭尯涓�寰嬭惤绂婚櫌缁村害</b>锛坽@code leaveldeptcode/name}銆亄@code leavehospitaldistrictcode/name}锛夈��
+     *
+     * @param serviceTaskVO 寤轰换鍔″叆鍙�
+     * @return 宸叉寜绂婚櫌缁村害褰掍綅鐨勫瓙浠诲姟瀵硅薄锛堝湪闄㈢淮搴︿负绌猴級
+     */
+    private ServiceSubtask toSubtaskFromTaskVO(ServiceTaskVO serviceTaskVO) {
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+        // 鈶� 鍦ㄩ櫌缁村害蹇呴』娓呯┖锛氫换鍔¢厤缃殑绉戝涓嶆槸鎮h�呮湰浜虹殑鍦ㄩ櫌绉戝
+        serviceSubtask.setDeptcode(null);
+        serviceSubtask.setDeptname(null);
+        serviceSubtask.setHospitaldistrictcode(null);
+        serviceSubtask.setHospitaldistrictname(null);
+        // 鈶� 绉戝 / 鐥呭尯 鈫� 绂婚櫌缁村害锛堝閫変覆鍙栫涓�涓紝瀛愪换鍔℃槸鍗曞�煎垪锛�
+        serviceSubtask.setLeaveldeptcode(firstValue(serviceTaskVO.getDeptcode()));
+        serviceSubtask.setLeaveldeptname(firstValue(serviceTaskVO.getDeptname()));
+        serviceSubtask.setLeavehospitaldistrictcode(firstValue(serviceTaskVO.getLeavehospitaldistrictcode()));
+        serviceSubtask.setLeavehospitaldistrictname(firstValue(serviceTaskVO.getLeavehospitaldistrictname()));
+        return serviceSubtask;
+    }
+
+    /**
      * 鍗曚竴浠诲姟
      *
      * @return 缁撴灉
@@ -1815,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);
+                        }
+                    }
                 }
             }
 //闀挎湡浠诲姟锛屼篃鍏佽鍔犱汉浜�
@@ -1825,7 +1899,8 @@
 //            }
 
             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
-            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+            // 绉戝/鐥呭尯鎸夈�岀闄㈢淮搴︺�嶅綊浣嶏紙鍑洪櫌闅忚鐨勭瀹ょ梾鍖哄氨鏄闄㈢瀹�/鐥呭尯锛夛紝瑙� toSubtaskFromTaskVO
+            ServiceSubtask serviceSubtask = toSubtaskFromTaskVO(serviceTaskVO);
             serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());
             serviceSubtask.setTemplatename(ObjectUtils.isNotEmpty(tempid) ? tempName : serviceTask.getTemplatename());
             serviceSubtask.setTemplateid(ObjectUtils.isNotEmpty(tempid) ? tempid : serviceTask.getTemplateid());
@@ -1846,15 +1921,18 @@
                     serviceSubtask.setInhospid(patTaskRelevance.getHospid());
                     //鏂板缓瀹屾垚灏辨槸寰呭彂閫佺姸鎬�
                     serviceSubtask.setSendstate(2L);
-                    String subtaskDeptCode = patTaskRelevance.getDeptcode();
-                    if (StringUtils.isEmpty(subtaskDeptCode) && StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                        // service_subtask.leaveldeptcode 涓哄崟鍊煎瓧娈碉紝涓嶈兘鍐欏叆浠诲姟鐨勫绉戝鎷兼帴涓诧紝鍙栫涓�涓瀹ゅ厹搴�
-                        subtaskDeptCode = serviceTaskVO.getDeptcode().split(",")[0].trim();
-                    }
-                    serviceSubtask.setLeaveldeptcode(subtaskDeptCode);
-                    serviceSubtask.setLeaveldeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
-                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
-                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
+                    // 绂婚櫌缁村害锛堝嚭闄㈤殢璁� = 鍑洪櫌绉戝 / 鍑洪櫌鐥呭尯锛夛細
+                    // 鎮h�呰嚜甯︾殑鍑洪櫌绉戝/鐥呭尯浼樺厛锛屾偅鑰呬晶娌″甫锛堝墠绔墜鍔ㄥ嬀閫夊緢甯歌锛夋椂鍥為��鍒颁换鍔¢厤缃紝
+                    // 涓嶈兘鏃犳潯浠惰鐩� 鈥斺�� 鍚﹀垯浼氭妸 toSubtaskFromTaskVO 鎸変换鍔¢厤缃厹濂界殑绂婚櫌缁村害鎶规垚 null锛�
+                    // 缁撴灉銆屼换鍔¢厤浜嗙瀹ょ梾鍖恒�佺敓鎴愬嚭鏉ョ殑瀛愪换鍔$闄㈢瀹�/鐥呭尯鍗存槸绌恒�嶃��
+                    serviceSubtask.setLeaveldeptcode(firstNonBlank(patTaskRelevance.getDeptcode(),
+                            firstValue(serviceTaskVO.getDeptcode())));
+                    serviceSubtask.setLeaveldeptname(firstNonBlank(patTaskRelevance.getDeptName(),
+                            firstValue(serviceTaskVO.getDeptname())));
+                    serviceSubtask.setLeavehospitaldistrictcode(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictcode(),
+                            firstValue(serviceTaskVO.getLeavehospitaldistrictcode())));
+                    serviceSubtask.setLeavehospitaldistrictname(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictname(),
+                            firstValue(serviceTaskVO.getLeavehospitaldistrictname())));
                     serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setHospType(patTaskRelevance.getHospType());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
@@ -2190,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())) {
@@ -2212,7 +2311,8 @@
             }
             if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                 for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
-                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+                    // 绉戝/鐥呭尯鎸夈�岀闄㈢淮搴︺�嶅綊浣嶏紙鍑洪櫌闅忚鐨勭瀹ょ梾鍖哄氨鏄闄㈢瀹�/鐥呭尯锛夛紝瑙� toSubtaskFromTaskVO
+                    ServiceSubtask serviceSubtask = toSubtaskFromTaskVO(serviceTaskVO);
                     serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTaskVO.getLibtemplateid()) ? null : Long.valueOf(serviceTaskVO.getLibtemplateid()));
                     serviceSubtask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
                     serviceSubtask.setTemplateid(serviceTask.getTemplateid());
@@ -2224,10 +2324,16 @@
                     serviceSubtask.setAddr(patTaskRelevance.getAddr());
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
-                    serviceSubtask.setLeaveldeptcode(patTaskRelevance.getDeptcode());
-                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
-                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
-                    serviceSubtask.setLeaveldeptname(patTaskRelevance.getDeptName());
+                    // 绂婚櫌缁村害锛氭偅鑰呰嚜甯︾殑鍑洪櫌绉戝/鐥呭尯浼樺厛锛屾病甯︽椂鍥為��鍒颁换鍔¢厤缃紙鍚﹀垯浼氭妸
+                    // toSubtaskFromTaskVO 鎸変换鍔¢厤缃厹濂界殑鍊兼姽鎴� null锛屽嚭闄㈤殢璁垮氨鎴愩�岀闄㈢瀹�/鐥呭尯涓虹┖銆嶏級
+                    serviceSubtask.setLeaveldeptcode(firstNonBlank(patTaskRelevance.getDeptcode(),
+                            firstValue(serviceTaskVO.getDeptcode())));
+                    serviceSubtask.setLeaveldeptname(firstNonBlank(patTaskRelevance.getDeptName(),
+                            firstValue(serviceTaskVO.getDeptname())));
+                    serviceSubtask.setLeavehospitaldistrictcode(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictcode(),
+                            firstValue(serviceTaskVO.getLeavehospitaldistrictcode())));
+                    serviceSubtask.setLeavehospitaldistrictname(firstNonBlank(patTaskRelevance.getLeavehospitaldistrictname(),
+                            firstValue(serviceTaskVO.getLeavehospitaldistrictname())));
                     serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
@@ -5128,7 +5234,7 @@
         serviceOutPath.setCreateTime(new Date());
         serviceOutPath.setOrgid(serviceSubtask.getOrgid());
         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-        String format = String.format("%03X", serviceOutPath.getId());
+        String format = ShortCode.encode(serviceOutPath.getId());
         String url = "";
         SendMagParam sendMagParam = new SendMagParam();
         sendMagParam.setType("4");
@@ -5212,7 +5318,7 @@
             serviceOutPath.setCreateTime(new Date());
             serviceOutPath.setOrgid(serviceSubtask.getOrgid());
             iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-            String format = String.format("%03X", serviceOutPath.getId());
+            String format = ShortCode.encode(serviceOutPath.getId());
             serviceOutPath.setRadix(format);
             serviceOutPath.setUpdateTime(new Date());
             serviceOutPath.setUrl(url);
@@ -5390,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());
@@ -5427,7 +5563,7 @@
                         serviceOutPath.setCreateTime(new Date());
                         serviceOutPath.setOrgid(serviceTask.getOrgid());
                         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-                        String format = String.format("%03X", serviceOutPath.getId());
+                        String format = ShortCode.encode(serviceOutPath.getId());
                         serviceOutPath.setRadix(format);
                         serviceOutPath.setUpdateTime(new Date());
                         String url = StringUtils.isNotEmpty(req_path) ? ip + ":" + req_path + "/wt?p=" + format : ip + "/wt?p=" + format;
@@ -5436,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;
@@ -5457,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());

--
Gitblit v1.9.3