From 86e7cce6159d6d74bcc636327939ec9ea8d3009d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 21 二月 2025 14:15:21 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |   51 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 43 insertions(+), 8 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 56f5de4..cbfbd00 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -124,6 +124,8 @@
 
     @Value("${phoneUpEveryHour}")
     private Integer phoneUpEveryHour;
+    @Value("${phoneEndHour}")
+    private Integer phoneEndHour;
 
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級
@@ -197,7 +199,7 @@
                 patTaskRelevance.setPhone(serviceSubtask1.getPhone());
                 patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
                 patTaskRelevance.setAddr(serviceSubtask1.getAddr());
-                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
+                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                 patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                 patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
@@ -224,7 +226,7 @@
                 patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
                 patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
                 patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
-                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
+                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                 patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                 patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());
@@ -819,6 +821,9 @@
      */
     @Override
     public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {
+        //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
+        redisCache.removeElementFromList("cache-exist", phoneCallReqYQVO.getTaskid());
+
         //鍒ゆ柇鏄惁鎸傛満
         String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
         Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
@@ -833,6 +838,12 @@
                 if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
                     return new PhoneCallBackYQVO();
                 }
+                //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
+                if (StringUtils.isNotEmpty(phoneCallReqYQVO.getTaskid())) {
+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
+                    if (serviceSubtask.getSendstate() == 6L) return new PhoneCallBackYQVO();
+                }
+
                 ServiceSubtask serviceSubtask2 = new ServiceSubtask();
                 serviceSubtask2.setRemark("鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級");
                 serviceSubtask2.setSenduuid(phoneCallReqYQVO.getUuid());
@@ -1429,9 +1440,13 @@
     @Override
     public List<PullTaskVO> taskPull() {
         //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
-        List<PullTaskVO> pullTaskVOList = null;
+        List<PullTaskVO> pullTaskVOList = new ArrayList<>();
         List<String> cacheList = new ArrayList<>();
         ListOperations<String, String> listOps = redisTemplate.opsForList();
+        //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級
+        long existSize = listOps.size("cache-exist");
+        if (existSize > 0) return pullTaskVOList;
+
         long size = listOps.size("cache-0");
         log.error("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
         int count = 0;
@@ -1439,7 +1454,9 @@
             //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
             //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
             count = Math.min(phoneCount(), (int) size);
-            cacheList = listOps.range("cache-0", 0, count - 1);
+            if (count != 0) {
+                cacheList = listOps.range("cache-0", 0, count - 1);
+            }
         }
 
         log.error("浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}", cacheList);
@@ -1465,12 +1482,16 @@
                 listOps.trim("cache-0" + i, count1, -1);
             }
         }
+        //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D
+        List<String> existList = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(pullTaskVOList)) {
             //缁欏洖璋冨弬鏁拌祴鍊�
             for (PullTaskVO pullTaskVO : pullTaskVOList) {
+                existList.add(pullTaskVO.getTaskid());
                 pullTaskVO.setAsrcallback(ASRCallBackPath);
             }
         }
+        if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
         log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", pullTaskVOList.size());
         return pullTaskVOList;
     }
@@ -1490,6 +1511,10 @@
                 PullTaskVO pullTaskVO = new PullTaskVO();
                 String subId = subIds.get(i).trim();
                 ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));
+                if (ObjectUtils.isEmpty(serviceSubtask)) {
+                    log.error("璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}", subId);
+                    continue;
+                }
                 ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                 IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
                 if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;
@@ -1524,7 +1549,7 @@
                 redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);
             } else {
                 newValue0.add(subIds.get(i));
-                redisCache.setCacheList(cacheName, newValue0);
+                redisCache.setCacheListRight(cacheName, newValue0);
             }
         }
 
@@ -1833,6 +1858,7 @@
             //鏃犱汉鎺ュ惉
             getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
+            redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
         } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) {
 //        if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) {
             log.error("鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜�");
@@ -1850,9 +1876,12 @@
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
         } else {
             //鎮h�呮嫆缁濋殢璁�
+            //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
+            redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
             ServiceSubtask serviceSubtask = new ServiceSubtask();
             serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
             serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
+            serviceSubtask.setSendstate(6L);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
             int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
             int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
@@ -2051,7 +2080,9 @@
         redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
         if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
         else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
+        serviceSubtask.setSendstate(3L);
         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+
     }
 
     //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
@@ -2059,13 +2090,17 @@
         // 褰撳墠鏃堕棿
         LocalTime currentTime = LocalTime.now();
         // 鐩爣鏃堕棿锛堟櫄涓� 8 鐐癸級
-        LocalTime targetTime = LocalTime.of(20, 0);
+        LocalTime targetTime = LocalTime.of(phoneEndHour, 0);
         // 璁$畻褰撳墠鏃堕棿鍒扮洰鏍囨椂闂寸殑鏃堕暱
         Duration duration = Duration.between(currentTime, targetTime);
         // 鑾峰彇鍓╀綑鏃堕棿鐨勫皬鏃舵暟
-        long remainingHours = duration.toHours();
+        long remainingHours = 0;
+        long remainingMinutes = duration.toMinutes();
         //濡傛灉瓒呰繃8鐐�,灏辫缃负0
-        if (remainingHours < 0) remainingHours = 0;
+        //璺濈缁撴潫鏃堕棿灏忎簬20鍒嗛挓锛屽氨涓嶆媺鍙栦簡
+        if (remainingMinutes < 20) remainingHours = 0;
+        else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1;
+        else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60;
         // 璁$畻鍓╀綑鍙互鎵撶殑鐢佃瘽鏁�
         int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
         return remainingCalls;

--
Gitblit v1.9.3