From 18f876d637cf1e9b0b264a4586e4a676a21f8166 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 13 十一月 2026 10:30:46 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java |   63 +++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 8 deletions(-)

diff --git a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
index 4e52de5..a09ba77 100644
--- a/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
+++ b/ruoyi-phone/src/main/java/com/ruoyi/phone/service/impl/PhoneServiceImpl.java
@@ -329,6 +329,8 @@
                             ServiceSubtask ss = new ServiceSubtask();
                             ss.setId(serviceSubtask.getId());
                             ss.setSendstate(6L);
+                            //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                            ss.setFinishtime(new Date());
                             taskSubtaskApi.updateSubtask(ss);
                             String date = simpleDateFormat1.format(new Date());
                             log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
@@ -374,6 +376,8 @@
                         ServiceSubtask ss = new ServiceSubtask();
                         ss.setId(serviceSubtask.getId());
                         ss.setSendstate(6L);
+                        //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                        ss.setFinishtime(new Date());
                         taskSubtaskApi.updateSubtask(ss);
 
                         String date = simpleDateFormat1.format(new Date());
@@ -607,12 +611,21 @@
                 //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
                 Long id = serviceSubtask.getId();
                 //鍏堟洿鏂颁竴涓嬪垎鏁�
+                //鈿狅笍 闈欓粯鎸傛満 = 鐢佃瘽娌℃帴閫� / 鎮h�呬竴鐩存病搴旂瓟锛屽睘浜�"鏈��"锛屼笉鏄�"瀹屾垚"锛�
+                //   鈶� 涓嶅啓 finishtime 鈥斺�� 杩欐潯鍗曞瓙鎺ヤ笅鏉ヨ浜ょ粰琛ュ伩浠诲姟锛坰etFailPreachForm 缃� 5 鎴� 3锛�
+                //      鍐嶇敱 compensateTask 鎹炶捣鏉ョ户缁彂涓嬩竴绉嶆柟寮� / 鍒よ秴鏃讹級锛涗竴鏃﹀啓浜嗗畬鎴愭椂闂达紝
+                //      鍚庨潰琚疆鎴�"瓒呮椂(7)"鏃跺氨浼氱暀涓�"瓒呮椂鍗存湁瀹屾垚鏃堕棿"鐨勮剰鏁版嵁锛�
+                //      鍙婃椂鐜囥�佸畬鎴愮巼锛圫erviceSubtaskMapper#selectTimelyRateBatch 璁� finishtime 闈炵┖锛変篃浼氳铏氶珮锛�
+                //   鈶� 涓嶆暣琛屽洖鍐� serviceSubtask 鈥斺�� 閭d細鎶婁笂闈㈠垰鍐欑殑 sendstate=5锛堢數璇濋潤榛橈級瑕嗙洊鍥炴煡搴撴椂鐨勬棫鍊硷紝
+                //      鎵�浠ヨ繖閲屽彧鍥炲啓 id + 鍒嗘暟 + 鏇存柊鏃堕棿锛岀姸鎬佷氦缁欎笅闈㈢殑 setFailPreachForm 鍐冲畾
+                //      锛堟渶鍚庝竴绉嶆柟寮� 鈫� 5 鍙戦�佸け璐ワ紱杩樻湁涓嬩竴绉� 鈫� 3 宸插彂閫侊紝涓よ�呴兘浼氳琛ュ伩浠诲姟鎹炶捣鏉ワ級銆�
                 double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                serviceSubtask.setScore(String.valueOf(score));
-                serviceSubtask.setFinishtime(new Date());
-                serviceSubtask.setUpdateTime(new Date());
-                log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                ServiceSubtask scoreUpdate = new ServiceSubtask();
+                scoreUpdate.setId(id);
+                scoreUpdate.setScore(String.valueOf(score));
+                scoreUpdate.setUpdateTime(new Date());
+                log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆coreUpdate鐨勫�间负锛歿}", scoreUpdate);
+                taskSubtaskApi.updateSubtask(scoreUpdate);
                 //璁板綍鐘舵��
                 setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
 
@@ -669,6 +682,8 @@
                         ss.setId(serviceSubtask.getId());
                         ss.setSendstate(6L);
                         ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                        //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                        ss.setFinishtime(new Date());
                         taskSubtaskApi.updateSubtask(ss);
                         //璁板綍鐘舵��
                         setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -854,6 +869,8 @@
                                     ss.setId(serviceSubtask.getId());
                                     ss.setSendstate(6L);
                                     ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                                    //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                                    ss.setFinishtime(new Date());
                                     taskSubtaskApi.updateSubtask(ss);
                                     //璁板綍鐘舵��
                                     setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
@@ -1566,12 +1583,13 @@
                 serviceSubtask.setCurrentPreachform(preachform);
                 serviceSubtask.setSendstate(5L);
                 serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                //鍙洖鍐欐湰娆¤鏀圭殑鍒楋紙涓嶅啀鏁磋鍥炲啓锛岄伩鍏嶆妸搴撻噷鐨勬棫 finishtime 绛変竴璧峰甫鍥炴潵锛�
+                updateSubtaskState(serviceSubtask, 5L, preachform, serviceSubtask.getRemark(), null);
                 return true;
             } else {
                 //鍔犲叆鐩墠琛ュ伩閲岀殑 remark
                 serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
-                taskSubtaskApi.updateSubtask(serviceSubtask);
+                updateSubtaskState(serviceSubtask, null, null, serviceSubtask.getRemark(), null);
             }
         }
 
@@ -1581,8 +1599,35 @@
         //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
         if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
         serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
-        taskSubtaskApi.updateSubtask(serviceSubtask);
+        updateSubtaskState(serviceSubtask, serviceSubtask.getSendstate(), preachform, null, serviceSubtask.getVisitTime());
         return true;
+    }
+
+    /**
+     * 鍙洖鍐欐湰娆$湡姝h鏀圭殑鍒楋紙鏇夸唬"鏁磋鍥炲啓 serviceSubtask"锛夈��
+     * <p>
+     * 涓轰粈涔堝繀椤绘敹绐勶細mapper 鐨� updateServiceSubtask 鏄�&lt;if test="xx != null"&gt;鍔ㄦ�� SET锛�
+     * 鏁磋鍥炲啓浼氭妸搴撻噷宸叉湁鐨� finishtime / visit_time / score 绛夋棫鍊煎師鏍峰啀鍐欎竴閬� 鈥斺�� 鏃㈠彲鑳借鐩�
+     * 骞跺彂鍐欏叆锛屼篃鏄�"鐘舵�� 3/5/7 鍗村甫鐫�瀹屾垚鏃堕棿"杩欑被鑴忔暟鎹殑鎼繍宸ャ��
+     * <p>
+     * 瀹屾垚鏃堕棿鍙e緞锛歴endstate=6锛堝畬鎴愶級鏃惰ˉ瀹屾垚鏃堕棿锛�3 宸插彂閫� / 5 鍙戦�佸け璐� / 7 瓒呮椂绛夐潪瀹屾垚鐘舵��
+     * 涓�寰嬩笉鍐欙紝Mapper 渚х殑"瀹屾垚鏃堕棿涓嶅彉閲�"浼氶『鎵嬫妸鏃у�兼竻鎺夈��
+     */
+    private void updateSubtaskState(ServiceSubtask source, Long sendstate, String currentPreachform,
+                                    String remark, Date visitTime) {
+        if (source == null || source.getId() == null) {
+            return;
+        }
+        ServiceSubtask update = new ServiceSubtask();
+        update.setId(source.getId());
+        update.setSendstate(sendstate);
+        update.setCurrentPreachform(currentPreachform);
+        update.setRemark(remark);
+        update.setVisitTime(visitTime);
+        if (sendstate != null && sendstate == 6L) {
+            update.setFinishtime(source.getFinishtime() != null ? source.getFinishtime() : new Date());
+        }
+        taskSubtaskApi.updateSubtask(update);
     }
 
     private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
@@ -1893,6 +1938,8 @@
                     ss.setId(serviceSubtask.getId());
                     ss.setSendstate(6L);
                     ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                    //鐢佃瘽宸茬瓟瀹岋紙瀹屾垚锛夛細鐘舵�佷笌瀹屾垚鏃堕棿涓�璧峰啓锛岄伩鍏�"宸插畬鎴愬嵈鏃犲畬鎴愭椂闂�"
+                    ss.setFinishtime(new Date());
                     taskSubtaskApi.updateSubtask(ss);
                     //璁板綍鐘舵��
                     setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");

--
Gitblit v1.9.3