From ff6e84a8f969e2196041c500af051e3e33c46009 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期六, 22 二月 2025 18:16:32 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 46 insertions(+), 11 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..3dd094c 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()); @@ -249,8 +251,8 @@ public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) { List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO); //鏍规嵁鍑洪櫌 鏃堕棿鍊掑簭 -// List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime).reversed()).collect(Collectors.toList()); - return selectServiceSubtaskList; + List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList()); + return sortedServiceSubtaskList; } @Override @@ -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("/"); @@ -1907,7 +1936,7 @@ public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) { log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq); List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>(); - Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(ServiceSubtask::getLeavehospitaldistrictname)); + Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); for (List<ServiceSubtask> serviceSubtaskList : collect.values()) { if (CollectionUtils.isEmpty(serviceSubtaskList)) { continue; @@ -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