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 | 564 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 528 insertions(+), 36 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 901c761..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);
@@ -1060,10 +1060,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());
@@ -1165,6 +1165,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())
@@ -1173,9 +1185,6 @@
serviceSubtaskAgain.setIsVisitAgain(1);
serviceSubtaskAgain.setCreateTime(now);
serviceSubtaskAgain.setUpdateTime(now);
-
- // 浜屾闅忚鏃堕棿锛氫笂娆¢殢璁垮畬鎴愭椂闂达紙鏈畬鎴愬垯褰撳墠鏃堕棿锛�+ 涓嬩竴浠诲姟鍙戦�佸ぉ鏁帮紱杩囧幓鏃堕棿鍏滃簳涓哄綋鍓嶆椂闂�
- applyAgainVisitTime(serviceSubtaskAgain, serviceSubtask, nextServiceTask, config, now);
// 鏂颁换鍔$殑闅忚鏂瑰紡璁板綍鏈閫夋嫨鐨勫啀娆¢殢璁挎柟寮忥紱resource 鏈韩涓嶈惤搴�
serviceSubtaskAgain.setVisitType(resource);
serviceSubtaskAgain.setVisitDeptCode(visitDeptCode);
@@ -1253,6 +1262,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())) {
@@ -1586,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 缁撴灉
@@ -1802,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);
+ }
+ }
}
}
//闀挎湡浠诲姟锛屼篃鍏佽鍔犱汉浜�
@@ -1812,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());
@@ -1833,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());
@@ -2177,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())) {
@@ -2199,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());
@@ -2211,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());
@@ -2448,6 +2567,9 @@
} else {
groupKey = "deptcode";
}
+ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍锛屾瘡涓换鍔″嵆涓�涓梾绉嶉殢璁夸换鍔�
+ groupKey = "taskid";
}
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
// 鏍规嵁鏉′欢杩涜鍒嗙粍
@@ -2473,6 +2595,9 @@
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")));
break;
@@ -2485,6 +2610,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");
@@ -2573,7 +2701,16 @@
ssRate.setGroupKey(groupKey);
ssRate.setGroupKeyList(groupKeyList);
ssRate.setRateDay(serviceSubtaskCountReq.getRateDay());
- return serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
+ Map<String, Map<String, Object>> rateResult = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
+ if (rateResult == null || rateResult.isEmpty()) {
+ return rateResult;
+ }
+ // taskid 涓烘暟鍊肩被鍨嬶紝MyBatis 杩斿洖鐨� Map key 鍙兘鏄� Long锛岃繖閲岀粺涓�杞垚 String 涓庡垎缁� key 瀵归綈
+ Map<String, Map<String, Object>> jsRates = new HashMap<>();
+ for (Map.Entry<String, Map<String, Object>> entry : rateResult.entrySet()) {
+ jsRates.put(String.valueOf(entry.getKey()), entry.getValue());
+ }
+ return jsRates;
}
/**
@@ -2597,6 +2734,9 @@
ServiceSubtaskStatistic totalRow = calculateTotalRow(sfStatistics);
totalRow.setLeavehospitaldistrictname("鎬昏");
totalRow.setDeptname("鎬昏");
+ if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ totalRow.setTaskName("鎬昏");
+ }
sfStatistics.add(totalRow);
}
@@ -2693,6 +2833,22 @@
}
return serviceSubtaskStatistics;
+ }
+
+ /**
+ * 鐥呯缁熻锛堟寜 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) {
@@ -4006,6 +4162,9 @@
} else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2) {
// 鍘嗗彶鍏ュ弬锛�2 = 绉戝缁熻锛堝師 deptcode 鍗崇幇鍦ㄧ殑绂婚櫌绉戝 leaveldeptcode锛�
groupKey = hasDrcode ? "drcode" : "leaveldeptcode";
+ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍锛屾瘡涓换鍔″嵆涓�涓梾绉嶉殢璁夸换鍔�
+ groupKey = "taskid";
}
serviceSubtaskCountReq.setGroupKey(groupKey);
// 鍒嗙粍鍒椾笌杩囨护鍒椾繚鎸佷竴鑷达細绂婚櫌绉戝 leaveldeptcode銆佸湪闄㈢瀹� deptcode
@@ -4049,6 +4208,35 @@
List<ServiceSubtaskStatistic> sumStatistics = serviceSubtaskMapper.getSfStatisticsScriptSum(serviceSubtaskCountReq);
if (CollectionUtils.isEmpty(sumStatistics)) {
return serviceSubtaskStatistics;
+ }
+
+ /*
+ * 鐥呯缁熻锛堟寜 taskid 鍒嗙粍锛夋椂琛ラ綈浠诲姟ID銆佷换鍔″悕绉板拰鐤剧梾鐥呯銆�
+ * 鑱氬悎 SQL 宸茶繑鍥� taskid/task_name锛岃繖閲屽啀琛� diag_type銆�
+ */
+ if ("taskid".equals(groupKey)) {
+ Map<Long, String> diagTypeCache = new HashMap<>();
+ for (ServiceSubtaskStatistic statistic : sumStatistics) {
+ Long taskId = statistic.getTaskId();
+ if (taskId == null && StringUtils.isNotEmpty(statistic.getGroupCode())) {
+ try {
+ taskId = Long.valueOf(statistic.getGroupCode());
+ } catch (NumberFormatException ignore) {
+ // 鍘嗗彶鏁版嵁鍙兘涓嶆槸鏁板�� taskid锛屼繚鎸佸師鍒嗙粍閿嵆鍙�
+ }
+ }
+ statistic.setTaskId(taskId);
+ if (StringUtils.isEmpty(statistic.getTaskName())) {
+ statistic.setTaskName(statistic.getGroupName());
+ }
+ if (taskId != null) {
+ if (!diagTypeCache.containsKey(taskId)) {
+ ServiceTask task = serviceTaskService.selectServiceTaskByTaskid(taskId);
+ diagTypeCache.put(taskId, task == null ? null : task.getDiagType());
+ }
+ statistic.setDiagType(diagTypeCache.get(taskId));
+ }
+ }
}
/*
@@ -4300,6 +4488,88 @@
result.put("rows", new ArrayList<>(pageCounts));
result.put("data", pageData);
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());
+ }
+ }
+ }
}
/**
@@ -4709,6 +4979,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 = taskPreachformPort.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 = taskPreachformPort.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
public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
if (ObjectUtils.isEmpty(heLibraryCountVO)) {
@@ -4786,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");
@@ -4870,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);
@@ -5048,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());
@@ -5085,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;
@@ -5094,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;
@@ -5115,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