From 126d76bf7498be4f508bc66496e06ae217faee36 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 06 十一月 2026 16:03:39 +0800
Subject: [PATCH] fix: suggest6改为suggest7,修正复查复诊统计口径
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 566 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 552 insertions(+), 14 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 954734b..80b9b62 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -448,7 +448,7 @@
if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
if (StringUtils.isNotEmpty(serviceSubtask.getPreachform())) {
//榛樿鍙栫涓�涓�
- serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0]);
+ serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0].trim());
}
}
PatMedInhosp inhosp = patMedInhospMapper.selectPatMedInhospByInhospid(serviceSubtask.getInhospid());
@@ -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());
@@ -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())) {
@@ -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);
}
@@ -1312,6 +1326,20 @@
}
/**
+ * 绉戝缂栫爜鍘婚噸锛屼繚鎸佸師椤哄簭锛岄伩鍏� service_task.deptcode 瓒呴暱鍜� service_taskdept 閲嶅缁戝畾
+ */
+ private String normalizeDeptCodes(String deptCodes) {
+ if (StringUtils.isEmpty(deptCodes)) {
+ return deptCodes;
+ }
+ return Arrays.stream(deptCodes.split(","))
+ .map(String::trim)
+ .filter(code -> StringUtils.isNotEmpty(code))
+ .distinct()
+ .collect(Collectors.joining(","));
+ }
+
+ /**
* 鍗曚竴浠诲姟
*
* @return 缁撴灉
@@ -1323,6 +1351,8 @@
log.info("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
}
+ // 绉戝缂栫爜鍘婚噸锛岄伩鍏� service_task.deptcode 瓒呴暱鍙� service_taskdept 閲嶅缁戝畾
+ serviceTaskVO.setDeptcode(normalizeDeptCodes(serviceTaskVO.getDeptcode()));
ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
if (CollectionUtils.isEmpty(serviceTaskVO.getPreachformList())) throw new BaseException("浠诲姟鐨勫彂閫佹柟寮忎负绌�");
//灏唒reachfromList鏀惧埌serviceTask涓殑preachfrom涓�
@@ -1557,7 +1587,12 @@
serviceSubtask.setInhospid(patTaskRelevance.getHospid());
//鏂板缓瀹屾垚灏辨槸寰呭彂閫佺姸鎬�
serviceSubtask.setSendstate(2L);
- serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode()) ? patTaskRelevance.getDeptcode() : serviceTaskVO.getDeptcode());
+ String subtaskDeptCode = patTaskRelevance.getDeptcode();
+ if (StringUtils.isEmpty(subtaskDeptCode) && StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
+ // service_subtask.deptcode 涓哄崟鍊煎瓧娈碉紝涓嶈兘鍐欏叆浠诲姟鐨勫绉戝鎷兼帴涓诧紝鍙栫涓�涓瀹ゅ厹搴�
+ subtaskDeptCode = serviceTaskVO.getDeptcode().split(",")[0].trim();
+ }
+ serviceSubtask.setDeptcode(subtaskDeptCode);
serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
@@ -1630,6 +1665,8 @@
ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
+ //鍙垹闄ら娆¢殢璁挎湭瀹屾垚鐨�
+ serviceSubtaskVO.setVisitCount(1);
serviceSubtaskVO.setSendstate(2L);
List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
serviceSubtaskVO.setSendstate(1L);
@@ -1695,6 +1732,11 @@
if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {
if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
+ // 淇敼浠诲姟鏃跺厛杞垹闄ゆ棫鐨勭瀹ょ粦瀹氾紝閬垮厤鏃х瀹ゆ畫鐣�
+ ServiceTaskdept oldDept = new ServiceTaskdept();
+ oldDept.setTaskId(serviceTask.getTaskid());
+ oldDept.setDeptType("1");
+ serviceTaskdeptService.deleteServiceTaskdeptByTaskId(oldDept);
String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
for (String deptCode : deptcodes) {
ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
@@ -3398,6 +3440,9 @@
} else {
groupKey = "deptcode";
}
+ } else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ // 鐥呯缁熻锛氭寜浠诲姟ID鍒嗙粍锛屾瘡涓换鍔″嵆涓�涓梾绉嶉殢璁夸换鍔�
+ groupKey = "taskid";
}
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
// 鏍规嵁鏉′欢杩涜鍒嗙粍
@@ -3423,6 +3468,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;
@@ -3435,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");
@@ -3511,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;
}
@@ -3524,6 +3581,9 @@
ServiceSubtaskStatistic totalRow = calculateTotalRow(sfStatistics);
totalRow.setLeavehospitaldistrictname("鎬昏");
totalRow.setDeptname("鎬昏");
+ if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 3) {
+ totalRow.setTaskName("鎬昏");
+ }
sfStatistics.add(totalRow);
}
@@ -3717,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();
@@ -3733,6 +3809,8 @@
serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
+ //闅忚涓績绉戝锛岀敤浜庣粺璁″啀娆¢殢璁挎帹閫佸埌闅忚涓績鐨勪汉鏁�
+ String centerDept = configService.selectConfigByKey("sys.smartor.center.dept", serviceSubtaskList.get(0).getOrgid());
//鍑洪櫌浜烘
serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
@@ -3752,6 +3830,17 @@
serviceSubtaskStatistic.setTimelyFollowUp(serviceSubtaskStatistic.getTimelyFollowUp() + 1L);
}
+ //棣栨鍑洪櫌浜烘锛歷isitCount = 1锛屼綔涓哄啀娆¢殢璁挎帹閫佺巼鐨勫垎姣�
+ if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+ serviceSubtaskStatistic.setFirstDischargeCount(serviceSubtaskStatistic.getFirstDischargeCount() + 1L);
+ }
+ //鍐嶆闅忚鎺ㄩ�佷汉鏁帮細棣栦釜鍐嶆闅忚锛坴isitCount = 2锛変笖鎵ц绉戝涓洪殢璁夸腑蹇冪瀹�
+ if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 2
+ && StringUtils.isNotEmpty(centerDept)
+ && StringUtils.equals(StringUtils.trim(centerDept), StringUtils.trim(serviceSubtask.getVisitDeptCode()))) {
+ serviceSubtaskStatistic.setAgainFollowUpPushCount(serviceSubtaskStatistic.getAgainFollowUpPushCount() + 1L);
+ }
+
//浜哄伐宸叉嫧閫氭�婚噺
if (ObjectUtils.isNotEmpty(serviceSubtask.getIsManuallyCalled())
&& serviceSubtask.getIsManuallyCalled().equals(1L)) {
@@ -3760,6 +3849,7 @@
//棣栨鍑洪櫌闅忚
if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+ applyFirstFollowUpExtraStatistics(serviceSubtaskStatistic, serviceSubtask);
//棣栨搴旈殢璁�
if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L)) {
serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
@@ -3881,6 +3971,7 @@
}
}//浜屾鍑洪櫌闅忚
else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
+ applyAgainFollowUpExtraStatistics(serviceSubtaskStatistic, serviceSubtask);
//鍐嶆搴旈殢璁�
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
@@ -4032,6 +4123,67 @@
}
/**
+ * 甯備竴缁熻鍙e緞锛氶娆″緟闅忚銆佸凡鍙戦�佸強浜哄伐鐢佃瘽瓒呮椂銆�
+ */
+ private void applyFirstFollowUpExtraStatistics(ServiceSubtaskStatistic statistic, ServiceSubtask serviceSubtask) {
+ if (serviceSubtask.getVisitCount() == null || serviceSubtask.getVisitCount() != 1 || serviceSubtask.getSendstate() == null) {
+ return;
+ }
+ Long sendstate = serviceSubtask.getSendstate();
+ if (sendstate.equals(3L)) {
+ statistic.setSent(statistic.getSent() + 1L);
+ }
+ if (sendstate.equals(7L) && isManuallyNotCalled(serviceSubtask)) {
+ statistic.setManualCallTimeout(statistic.getManualCallTimeout() + 1L);
+ }
+ if (sendstate.equals(1L) || sendstate.equals(2L) || sendstate.equals(3L) || sendstate.equals(7L)) {
+ statistic.setPendingFollowUpAll(statistic.getPendingFollowUpAll() + 1L);
+ }
+ if (sendstate.equals(1L) || sendstate.equals(2L)) {
+ statistic.setPendingFollowUpWaitSend(statistic.getPendingFollowUpWaitSend() + 1L);
+ }
+ if (sendstate.equals(3L) || sendstate.equals(7L)) {
+ statistic.setPendingFollowUpSent(statistic.getPendingFollowUpSent() + 1L);
+ }
+ }
+
+ /**
+ * 鍐嶆闅忚闄勫姞缁熻锛氬緟闅忚銆佸凡鍙戦�併�佷汉宸ョ數璇濊秴鏃跺強鍥為櫌澶嶈瘖澶嶆煡锛坰uggest=7锛夈��
+ */
+ private void applyAgainFollowUpExtraStatistics(ServiceSubtaskStatistic statistic, ServiceSubtask serviceSubtask) {
+ 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);
+ }
+ if (sendstate.equals(7L) && isManuallyNotCalled(serviceSubtask)) {
+ statistic.setManualCallTimeoutAgain(statistic.getManualCallTimeoutAgain() + 1L);
+ }
+ if (sendstate.equals(1L) || sendstate.equals(2L) || sendstate.equals(3L) || sendstate.equals(7L)) {
+ statistic.setPendingFollowUpAllAgain(statistic.getPendingFollowUpAllAgain() + 1L);
+ }
+ if (sendstate.equals(1L) || sendstate.equals(2L)) {
+ statistic.setPendingFollowUpWaitSendAgain(statistic.getPendingFollowUpWaitSendAgain() + 1L);
+ }
+ if (sendstate.equals(3L) || sendstate.equals(7L)) {
+ statistic.setPendingFollowUpSentAgain(statistic.getPendingFollowUpSentAgain() + 1L);
+ }
+ }
+
+ private boolean isManuallyNotCalled(ServiceSubtask serviceSubtask) {
+ return serviceSubtask.getIsManuallyCalled() != null && serviceSubtask.getIsManuallyCalled().equals(0L);
+ }
+
+ /**
* 棣栨闅忚缁熻
*
* @param serviceSubtaskList
@@ -4052,6 +4204,7 @@
serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ applyFirstFollowUpExtraStatistics(serviceSubtaskStatistic, serviceSubtask);
//鏃犻渶闅忚浜烘
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
@@ -4225,6 +4378,7 @@
//鍑洪櫌浜烘
serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ applyAgainFollowUpExtraStatistics(serviceSubtaskStatistic, serviceSubtask);
//鏃犻渶闅忚浜烘
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
@@ -4766,6 +4920,8 @@
* 鑾峰彇闅忚缁熻瓒呴摼鎺�
* dischargeCountInfo
* followUpNeededAllInfo - sendstate != 4 (1,2,3,5,6,7)
+ * firstDischargeCountInfo - visitCount = 1
+ * againFollowUpPushCountInfo - visitCount = 2 && visitDeptCode = sys.smartor.center.dept锛堥殢璁夸腑蹇冪瀹わ級
* nonFollowUpInfo - sendstate = 4
* needFollowUpInfo - visitCount = 1 && sendstate != 4
* pendingFollowUpInfo - visitCount = 1 && sendstate = 2
@@ -4801,6 +4957,17 @@
* taskSituation5Info - taskSituation = 5
* taskSituation6Info - taskSituation = 7
* manuallyCalledInfo - isManuallyCalled = 1L
+ * manualCallTimeoutInfo - visitCount = 1 && sendstate = 7 && isManuallyCalled = 0
+ * manualCallTimeoutAgainInfo - visitCount > 1 && sendstate = 7 && isManuallyCalled = 0
+ * pendingFollowUpAllInfo - visitCount = 1 && sendstate in (1,2,3,7)
+ * pendingFollowUpAllAgainInfo - visitCount > 1 && sendstate in (1,2,3,7)
+ * pendingFollowUpWaitSendInfo - visitCount = 1 && sendstate in (1,2)
+ * pendingFollowUpWaitSendAgainInfo - visitCount > 1 && sendstate in (1,2)
+ * pendingFollowUpSentInfo - visitCount = 1 && sendstate in (3,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
*
*/
@@ -4808,7 +4975,10 @@
public List<ServiceSubtask> getSfStatisticsHyperlink(ServiceSubtaskCountReq serviceSubtaskCountReq) {
String hyperLinkInfoType = serviceSubtaskCountReq.getHyperLinkInfoType();
if (StringUtils.isNotEmpty(hyperLinkInfoType)) {
- applyHyperLinkInfoType(serviceSubtaskCountReq, hyperLinkInfoType);
+ if (!applyHyperLinkInfoType(serviceSubtaskCountReq, hyperLinkInfoType)) {
+ // 涓嬮捇渚濊禆鐨勯厤缃己澶辨椂杩斿洖绌烘槑缁嗭紝閬垮厤閫�鍖栨垚鏃犺繃婊ゆ潯浠剁殑鏌ヨ
+ return new ArrayList<>();
+ }
}
String followUpCountStyle = serviceSubtaskCountReq.getFollowUpCountStyle();
@@ -4829,7 +4999,7 @@
return serviceSubtasks;
}
- private void applyHyperLinkInfoType(ServiceSubtaskCountReq serviceSubtaskCountReq, String hyperLinkInfoType) {
+ private boolean applyHyperLinkInfoType(ServiceSubtaskCountReq serviceSubtaskCountReq, String hyperLinkInfoType) {
//鍙婃椂闅忚鏄庣粏闇�瑕佹部鐢ㄨ姹傜殑棣栨/鍐嶆鍙e緞
Integer originVisitCount = serviceSubtaskCountReq.getVisitCount();
serviceSubtaskCountReq.setVisitCount(null);
@@ -4838,10 +5008,27 @@
serviceSubtaskCountReq.setExcep(null);
serviceSubtaskCountReq.setTaskSituation(null);
serviceSubtaskCountReq.setFinishState(null);
+ serviceSubtaskCountReq.setSuggest(null);
switch (hyperLinkInfoType) {
case "dischargeCountInfo":
break;
+ case "firstDischargeCountInfo":
+ //棣栨鍑洪櫌浜烘锛歷isitCount = 1
+ serviceSubtaskCountReq.setVisitCount(1);
+ break;
+ case "againFollowUpPushCountInfo": {
+ //鍐嶆闅忚鎺ㄩ�佷汉鏁帮細visitCount = 2 涓旀墽琛岀瀹や负闅忚涓績绉戝
+ String centerDept = configService.selectConfigByKey("sys.smartor.center.dept", serviceSubtaskCountReq.getOrgid());
+ if (StringUtils.isBlank(centerDept)) {
+ log.warn("鑾峰彇鍐嶆闅忚鎺ㄩ�佹槑缁嗗け璐ワ紝鏈厤缃殢璁夸腑蹇冪瀹ゅ弬鏁� sys.smartor.center.dept, orgid={}", serviceSubtaskCountReq.getOrgid());
+ return false;
+ }
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setVisitDeptCode(centerDept.trim());
+ serviceSubtaskCountReq.setVisitDeptName(null);
+ break;
+ }
case "timelyFollowUpInfo":
serviceSubtaskCountReq.setVisitCount(originVisitCount);
serviceSubtaskCountReq.setSendstates(new ArrayList<>(Collections.singletonList(6L)));
@@ -4965,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;
@@ -4990,9 +5182,52 @@
case "manuallyCalledInfo":
serviceSubtaskCountReq.setIsManuallyCalled(1L);
break;
+ case "manualCallTimeoutInfo":
+ serviceSubtaskCountReq.setVisitCount(1);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Collections.singletonList(7L)));
+ serviceSubtaskCountReq.setIsManuallyCalled(0L);
+ break;
+ case "manualCallTimeoutAgainInfo":
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Collections.singletonList(7L)));
+ serviceSubtaskCountReq.setIsManuallyCalled(0L);
+ break;
+ case "pendingFollowUpAllInfo":
+ serviceSubtaskCountReq.setVisitCount(1);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
+ break;
+ case "pendingFollowUpAllAgainInfo":
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
+ break;
+ case "pendingFollowUpWaitSendInfo":
+ serviceSubtaskCountReq.setVisitCount(1);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L)));
+ break;
+ case "pendingFollowUpWaitSendAgainInfo":
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L)));
+ break;
+ case "pendingFollowUpSentInfo":
+ serviceSubtaskCountReq.setVisitCount(1);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(3L, 7L)));
+ break;
+ case "pendingFollowUpSentAgainInfo":
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Arrays.asList(3L, 7L)));
+ break;
+ case "sentInfo":
+ serviceSubtaskCountReq.setVisitCount(1);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Collections.singletonList(3L)));
+ break;
+ case "sentAgainInfo":
+ serviceSubtaskCountReq.setVisitCount(2);
+ serviceSubtaskCountReq.setSendstates(new ArrayList<>(Collections.singletonList(3L)));
+ break;
default:
break;
}
+ return true;
}
@@ -5023,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);
@@ -5037,6 +5275,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")));
@@ -5057,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");
@@ -5243,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
@@ -5334,6 +5660,8 @@
// 鍒濆鍖栨暟鍊煎瓧娈�
total.setDischargeCount(0);
+ total.setFirstDischargeCount(0L);
+ total.setAgainFollowUpPushCount(0L);
total.setNonFollowUp(0L);
total.setFilterCount(0L);
total.setFollowUpNeeded(0L);
@@ -5348,8 +5676,19 @@
total.setAbnormal(0L);
total.setNeedFollowUpAgain(0L);
total.setPendingFollowUpAgain(0L);
+ total.setManualCallTimeout(0L);
+ total.setManualCallTimeoutAgain(0L);
+ total.setPendingFollowUpAll(0L);
+ total.setPendingFollowUpAllAgain(0L);
+ total.setPendingFollowUpWaitSend(0L);
+ total.setPendingFollowUpWaitSendAgain(0L);
+ total.setPendingFollowUpSent(0L);
+ total.setPendingFollowUpSentAgain(0L);
+ total.setSent(0L);
+ total.setSentAgain(0L);
total.setFollowUpSuccessAgain(0L);
total.setFollowUpFailAgain(0L);
+ total.setSuggest7CountAgain(0L);
total.setManualAgain(0L);
total.setSmsAgain(0L);
total.setWeChatAgain(0L);
@@ -5366,6 +5705,8 @@
if (stat.getDischargeCount() != null) {
total.setDischargeCount(total.getDischargeCount() + stat.getDischargeCount());
}
+ total.setFirstDischargeCount(total.getFirstDischargeCount() + (stat.getFirstDischargeCount() != null ? stat.getFirstDischargeCount() : 0L));
+ total.setAgainFollowUpPushCount(total.getAgainFollowUpPushCount() + (stat.getAgainFollowUpPushCount() != null ? stat.getAgainFollowUpPushCount() : 0L));
total.setNonFollowUp(total.getNonFollowUp() + (stat.getNonFollowUp() != null ? stat.getNonFollowUp() : 0L));
total.setFilterCount(total.getFilterCount() + (stat.getFilterCount() != null ? stat.getFilterCount() : 0L));
total.setFollowUpNeeded(total.getFollowUpNeeded() + (stat.getFollowUpNeeded() != null ? stat.getFollowUpNeeded() : 0L));
@@ -5380,8 +5721,19 @@
total.setAbnormal(total.getAbnormal() + (stat.getAbnormal() != null ? stat.getAbnormal() : 0L));
total.setNeedFollowUpAgain(total.getNeedFollowUpAgain() + (stat.getNeedFollowUpAgain() != null ? stat.getNeedFollowUpAgain() : 0L));
total.setPendingFollowUpAgain(total.getPendingFollowUpAgain() + (stat.getPendingFollowUpAgain() != null ? stat.getPendingFollowUpAgain() : 0L));
+ total.setManualCallTimeout(total.getManualCallTimeout() + (stat.getManualCallTimeout() != null ? stat.getManualCallTimeout() : 0L));
+ total.setManualCallTimeoutAgain(total.getManualCallTimeoutAgain() + (stat.getManualCallTimeoutAgain() != null ? stat.getManualCallTimeoutAgain() : 0L));
+ total.setPendingFollowUpAll(total.getPendingFollowUpAll() + (stat.getPendingFollowUpAll() != null ? stat.getPendingFollowUpAll() : 0L));
+ total.setPendingFollowUpAllAgain(total.getPendingFollowUpAllAgain() + (stat.getPendingFollowUpAllAgain() != null ? stat.getPendingFollowUpAllAgain() : 0L));
+ total.setPendingFollowUpWaitSend(total.getPendingFollowUpWaitSend() + (stat.getPendingFollowUpWaitSend() != null ? stat.getPendingFollowUpWaitSend() : 0L));
+ total.setPendingFollowUpWaitSendAgain(total.getPendingFollowUpWaitSendAgain() + (stat.getPendingFollowUpWaitSendAgain() != null ? stat.getPendingFollowUpWaitSendAgain() : 0L));
+ total.setPendingFollowUpSent(total.getPendingFollowUpSent() + (stat.getPendingFollowUpSent() != null ? stat.getPendingFollowUpSent() : 0L));
+ total.setPendingFollowUpSentAgain(total.getPendingFollowUpSentAgain() + (stat.getPendingFollowUpSentAgain() != null ? stat.getPendingFollowUpSentAgain() : 0L));
+ total.setSent(total.getSent() + (stat.getSent() != null ? stat.getSent() : 0L));
+ 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));
@@ -5587,6 +5939,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
public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
if (ObjectUtils.isEmpty(heLibraryCountVO)) {
@@ -5760,7 +6290,15 @@
return resultMap;
}
- if (StringUtils.isEmpty(serviceSubtask.getPatidHis())) {
+ if (patArchive == null) {
+ resultMap.put("code", -1);
+ resultMap.put("message", "鍙戦�佸紓甯革細" + "銆愬叕浼楀彿銆戞湭鏌ヨ鍒版偅鑰呮。妗堜俊鎭紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
+ return resultMap;
+ }
+
+ // his绯荤粺鐨勬偅鑰卛d鍙栬嚜鎮h�呮。妗坧at_archive.patid_his锛�
+ // service_subtask鏌ヨ鏈叧鑱旇瀛楁锛坰erviceSubtask.getPatidHis()鎭掍负绌猴級锛屼笉鑳界敤浜庢牎楠�
+ if (StringUtils.isEmpty(patArchive.getPatidHis())) {
resultMap.put("code", -1);
resultMap.put("message", "鍙戦�佸紓甯革細" + "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
return resultMap;
--
Gitblit v1.9.3