From 1468abbfadd8ba623c85e0c871aade69607ce085 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 25 二月 2025 14:24:54 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  114 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 74 insertions(+), 40 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 38d74a8..d22dc99 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -66,6 +66,9 @@
     private IServiceTaskdeptService serviceTaskdeptService;
 
     @Autowired
+    private IServiceTaskdiagService serviceTaskdiagService;
+
+    @Autowired
     private RedisCache redisCache;
 
     @Autowired
@@ -124,6 +127,8 @@
 
     @Value("${phoneUpEveryHour}")
     private Integer phoneUpEveryHour;
+    @Value("${phoneEndHour}")
+    private Integer phoneEndHour;
 
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級
@@ -197,7 +202,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 +229,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 +254,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
@@ -375,39 +380,55 @@
             serviceTask.setTemplatename(tempName);
             serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
             serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
-            if (serviceTaskVO.getLongTask() == 1L) serviceTask.setSendState(2L);
-            serviceTaskService.insertServiceTask(serviceTask);
-            ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-            serviceTaskdept.setTaskId(serviceTask.getTaskid());
-            serviceTaskdept.setTaskName(serviceTask.getTaskName());
-            serviceTaskdept.setLongtask(0L);
-            serviceTaskdept.setGuid(serviceTask.getGuid());
-            serviceTaskdept.setOrgid(serviceTask.getOrgid());
-            serviceTaskdept.setOrgid(serviceTask.getOrgid());
-            if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-            if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                for (String deptCode : deptcodes) {
-                    serviceTaskdept.setDeptCode(deptCode);
-                    serviceTaskdept.setDeptType("1");
-                    serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                    serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+            if (serviceTaskVO.getLongTask() == 1L) {
+                serviceTask.setSendState(2L);
+                serviceTaskService.insertServiceTask(serviceTask);
+                if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
+                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                    serviceTaskdept.setTaskId(serviceTask.getTaskid());
+                    serviceTaskdept.setTaskName(serviceTask.getTaskName());
+                    serviceTaskdept.setLongtask(1L);
+                    serviceTaskdept.setGuid(serviceTask.getGuid());
+                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
+                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
+                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
+                        String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
+                        for (String deptCode : deptcodes) {
+                            serviceTaskdept.setDeptCode(deptCode);
+                            serviceTaskdept.setDeptType("1");
+                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                        }
+                    }
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
+                        String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(",");
+                        for (String districtcode : leavehospitaldistrictcodes) {
+                            serviceTaskdept.setDeptCode(districtcode);
+                            serviceTaskdept.setDeptType("2");
+                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                        }
+                    }
+
+                } else {
+                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+                    serviceTaskdiag.setTaskId(serviceTask.getTaskid());
+                    serviceTaskdiag.setTaskName(serviceTask.getTaskName());
+                    serviceTaskdiag.setLongtask(1L);
+                    serviceTaskdiag.setGuid(serviceTask.getGuid());
+                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());
+                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
+                    serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);
+
                 }
-            }
-            if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
-                String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(",");
-                for (String districtcode : leavehospitaldistrictcodes) {
-                    serviceTaskdept.setDeptCode(districtcode);
-                    serviceTaskdept.setDeptType("2");
-                    serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                    serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
+                    Map<String, Integer> map = new HashMap<>();
+                    map.put("taskId", serviceTask.getTaskid().intValue());
+                    return map;
                 }
-            }
-//
-            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
-                Map<String, Integer> map = new HashMap<>();
-                map.put("taskId", serviceTask.getTaskid().intValue());
-                return map;
+            } else {
+                serviceTaskService.insertServiceTask(serviceTask);
             }
 
             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
@@ -1452,7 +1473,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);
@@ -1507,6 +1530,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;
@@ -1850,6 +1877,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("鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜�");
@@ -1867,6 +1895,8 @@
             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()));
@@ -1925,7 +1955,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;
@@ -2079,13 +2109,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