From 17c8a50365c4607c2b001fd651231807a4d4bc5c Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 03 十一月 2026 15:18:54 +0800
Subject: [PATCH] 【丽水】1、随访统计新增专病随访 2、指标统计详情超链接跳转
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 127 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 126 insertions(+), 1 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 9537783..bdcb5e9 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -3427,6 +3427,9 @@
} else {
groupKey = "deptcode";
}
+ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍锛屾瘡涓换鍔″嵆涓�涓梾绉嶉殢璁夸换鍔�
+ groupKey = "taskid";
}
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
// 鏍规嵁鏉′欢杩涜鍒嗙粍
@@ -3452,6 +3455,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;
@@ -3464,6 +3470,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");
@@ -3540,7 +3549,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;
}
@@ -3553,6 +3568,9 @@
ServiceSubtaskStatistic totalRow = calculateTotalRow(sfStatistics);
totalRow.setLeavehospitaldistrictname("鎬昏");
totalRow.setDeptname("鎬昏");
+ if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ totalRow.setTaskName("鎬昏");
+ }
sfStatistics.add(totalRow);
}
@@ -3745,6 +3763,22 @@
return map;
}
+
+ /**
+ * 鐥呯缁熻锛堟寜 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();
@@ -5211,6 +5245,9 @@
} else {
groupKey = "deptcode";
}
+ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍
+ groupKey = "taskid";
}
serviceSubtaskCountReq.setGroupKey(groupKey);
List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
@@ -5225,6 +5262,9 @@
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")));
@@ -5245,6 +5285,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");
@@ -5431,6 +5474,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
--
Gitblit v1.9.3