From 56f75efb1c55a6b40955af3067556bf797b54b4f Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期六, 15 八月 2026 15:31:06 +0800
Subject: [PATCH] 【丽水】随访超时处理
---
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 37 ++++++++++++++++++++++++++++++++-----
1 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index 8456a81..4b0d3bd 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -847,7 +847,9 @@
//2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
Long cs = currentSort.get();
- if (cs.equals(serviceSubtaskPreachforms.size())) {
+
+ if (cs.equals(serviceSubtaskPreachforms.size())
+ && isSubtaskDeadline(serviceSubtask, serviceSubtaskPreachforms)) {
serviceSubtask.setSendstate(7L);
serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋匡紝鍏ㄩ儴鎵ц澶辫触锛堣秴鏃讹級");
@@ -1362,15 +1364,15 @@
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
return "-1";
}
-
// 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
- if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
+ if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())
+ && isSubtaskDeadline(serviceSubtask, serviceSubtaskPreachforms)) {
if (allSendStateNot1AndNot9) {
//璇存槑鍏ㄥ彂閫佸け璐ヤ簡
serviceSubtask.setSendstate(7L);
serviceSubtask.setFinishtime(null);
log.error("getSendPreachform鏂规硶 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9, 鍏ㄥけ璐ヤ簡");
- serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触锛堣秴鏃讹級" : "鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触锛堣秴鏃讹級");
+ serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + "鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触锛堣秴鏃讹級" : "鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触锛堣秴鏃讹級");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
//淇敼鍙戦�佺姸鎬�
setFail(serviceSubtaskPreachforms, serviceSubtask);
@@ -1561,7 +1563,8 @@
serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
//濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�7灏辫浜�(鍏ㄨ秴鏃朵簡)
- if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
+ if (serviceSubtaskPreachform1.getSort() == sspCount.size()
+ && isSubtaskDeadline(serviceSubtask, serviceSubtaskPreachforms)) {
if (failSendstate.equals("4") || failSendstate.equals("5")) {
serviceSubtask.setCurrentPreachform(preachform);
serviceSubtask.setSendstate(7L);
@@ -1678,4 +1681,28 @@
log.error("銆恟ollTaskGroupCycle銆戞粴鍔ㄨ皟搴﹀紓甯�", e);
}
}
+
+ /**
+ * 闅忚浠诲姟鏄惁瓒呮椂
+ * @param serviceSubtask
+ * @param serviceSubtaskPreachforms
+ * @return
+ */
+ public boolean isSubtaskDeadline(ServiceSubtask serviceSubtask, List<ServiceSubtaskPreachform> serviceSubtaskPreachforms){
+ if (Objects.isNull(serviceSubtask) || CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
+ return false;
+ }
+ // 鍩哄噯鏃跺埢锛氬嚭闄㈡椂闂� + 鍙戦�佹棩锛坰endDay 缂虹渷鎸� 1锛夛紝骞跺厹搴曢伩鍏� NPE/鑴忔暟鎹�
+ ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ int sendDay = serviceTask != null && serviceTask.getSendDay() != null ? serviceTask.getSendDay().intValue() : 1;
+ Date deadline = DateUtils.addDays(serviceSubtask.getEndtime(), sendDay);
+ int sumCompensateTime = CollectionUtils.isEmpty(serviceSubtaskPreachforms) ? 0 : serviceSubtaskPreachforms.stream()
+ .mapToInt(x -> x.getCompensateTime() == null ? 0 : Integer.parseInt(x.getCompensateTime()))
+ .sum();
+ sumCompensateTime = sumCompensateTime + 1;
+ // 鍙ˉ鍋挎渶鍚庝竴姝ヨ嚜韬殑琛ュ伩鏃堕棿锛堝ぉ锛夛紝鑴忓�间竴寰嬫寜 0 鍏滃簳
+ deadline = DateUtils.addDays(deadline, sumCompensateTime);
+ // 鍑洪櫌(鍙戦��)鏃堕棿 + 鏈琛ュ伩鏃堕棿 灏忎簬褰撳墠鏃堕棿 -> 瓒呮椂
+ return deadline.getTime() < new Date().getTime();
+ }
}
--
Gitblit v1.9.3