From bb5c9f74bcd20f299a514ad36ff47e6dd1dce7ae Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 04 十一月 2026 09:29:08 +0800
Subject: [PATCH] 【丽水】默认完成-下次补偿判断,上一次补偿方式是微信,状态是已领取,没选的填充默认选项,已完成

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 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 54102b2..60785ee 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
@@ -36,6 +36,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -940,6 +941,25 @@
             Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
             Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
             if (currentSort.isPresent()) {
+                // 鏂规B锛氬彧澶勭悊褰撳墠瀛愪换鍔♀�斺�斿叕浼楀彿宸查鍙�(service_subtask.sendstate=1 + current_preachform=5)
+                // 涓旀湭濉啓鏃讹紝鎸夐粯璁ら�夐」瀹屾垚锛岄伩鍏嶈繘鍏ヤ笅涓�绉嶅彂閫佹柟寮忔垨鏈�鍚庝竴姝ヨ秴鏃躲��
+                // 鍏堢敤鍐呭瓨瀛楁蹇�熻繃婊わ紝鍏朵粬鍖婚櫌/浠诲姟/鍙戦�佹柟寮忎笉浼氳繘鍏ヤ笅闈㈢殑榛樿瀹屾垚閫昏緫銆�
+                if (IServiceSubtaskService.WECHAT_DEFAULT_COMPLETE_ORGID.equals(serviceSubtask.getOrgid())
+                        && "2".equals(serviceSubtask.getType())
+                        && "5".equals(serviceSubtask.getCurrentPreachform())
+                        && Long.valueOf(1L).equals(serviceSubtask.getSendstate())
+                        && !Long.valueOf(1L).equals(serviceSubtask.getSubmit())) {
+                    try {
+                        if (iServiceSubtaskService.completeWechatClaimedByDefault(serviceSubtask)) {
+                            log.info("銆恈ompensateTask銆憇ubid锛歿}锛屽井淇″叕浼楀彿宸查鍙栨湭濉啓锛屾寜榛樿閫夐」瀹屾垚", serviceSubtask.getId());
+                            continue;
+                        }
+                    } catch (Exception e) {
+                        // 鍗曚釜瀛愪换鍔″け璐ヤ笉褰卞搷鍏朵粬浠诲姟锛屽洖婊氬悗缁х画鍘熻ˉ鍋挎祦绋�
+                        log.error("銆恈ompensateTask銆戝井淇″叕浼楀彿榛樿瀹屾垚澶辫触锛宻ubid锛歿}锛岀户缁師琛ュ伩娴佺▼", serviceSubtask.getId(), e);
+                    }
+                }
+
                 //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
                 boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
                 if (finishState) {
@@ -1414,6 +1434,7 @@
                     //浠诲姟鍙戦�佽褰�
                     ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                     serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
                     serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                     serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                     serviceSubtaskRecord.setPreachform("4");
@@ -1892,11 +1913,15 @@
             return false;
         }
         // 鍩哄噯鏃跺埢锛氬嚭闄㈡椂闂� + 鍙戦�佹棩锛坰endDay 缂虹渷鎸� 1锛夛紝骞跺厹搴曢伩鍏� NPE/鑴忔暟鎹�
+        if (serviceSubtask.getEndtime() == null) {
+            log.warn("銆恑sSubtaskDeadline銆憇ubid锛歿} endtime涓虹┖锛屾棤娉曡绠楄秴鏃讹紝鎸夋湭瓒呮椂澶勭悊", serviceSubtask.getId());
+            return false;
+        }
         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()))
+                .mapToInt(x -> NumberUtils.toInt(x.getCompensateTime(), 0))
                 .sum();
         sumCompensateTime = sumCompensateTime + 1;
         // 鍙ˉ鍋挎渶鍚庝竴姝ヨ嚜韬殑琛ュ伩鏃堕棿锛堝ぉ锛夛紝鑴忓�间竴寰嬫寜 0 鍏滃簳
@@ -1909,7 +1934,7 @@
      * 澶勭悊瓒呮椂闅忚浠诲姟
      * <p>
      * 鎵弿銆屽嚭闄㈡弧 deadlineDay 澶╀粛鏈畬鎴愩�嶇殑棣栨闅忚浠诲姟锛坰endstate=7 + visit_count=1锛夛紝
-     * 鎸夊綋鍓嶄换鍔$殑 nexttaskid 鐢熸垚鍐嶆闅忚浠诲姟锛岀瀹ゆ寜婧愪换鍔� visitType 閫夋嫨銆�
+     * 鎸夊綋鍓嶄换鍔$殑 nexttaskid 鐢熸垚鍐嶆闅忚浠诲姟锛岀瀹ゅ浐瀹氫负闅忚涓績绉戝銆�
      * <p>
      * 娉ㄦ剰锛氭埅姝㈡椂闂村繀椤诲湪寰幆澶栬绠椾竴娆°�傚巻鍙插疄鐜版妸 {@code deadlineDay = -deadlineDay}
      * 鍐欏湪寰幆浣撳唴锛屾瘡杞彇鍙嶄竴娆★紝瀵艰嚧鍋舵暟杞敤銆屼粖澶� + deadlineDay銆嶅仛鎴鏃堕棿锛�

--
Gitblit v1.9.3