From 86b103f926cf92fff3d591c6ba07099ad8db3ad1 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 01 七月 2025 15:53:04 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  131 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 118 insertions(+), 13 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 ad75192..58fe624 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDate;
@@ -156,6 +157,10 @@
         return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
     }
 
+    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {
+        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);
+    }
+
     @Override
     public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
@@ -274,6 +279,7 @@
 
     @Override
     public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
+        serviceSubtaskVO.setSendstate(null);
         serviceSubtaskVO.setPageSize(99999999);
         serviceSubtaskVO.setPageNum(1);
         List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
@@ -284,11 +290,13 @@
         Integer fssb = 0;
         Integer yfs = 0;
         Integer blq = 0;
+        Integer dsf = 0;
         for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
             if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
             else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1;
             if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
             if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
+            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
             if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
         }
@@ -298,6 +306,7 @@
         map.put("fssb", fssb);
         map.put("yfs", yfs);
         map.put("blq", blq);
+        map.put("dsf", dsf);
 
         return map;
     }
@@ -337,7 +346,7 @@
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц";
-        } else if (patArchive.getNotrequiredFlag().equals("1")) {
+        } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟";
@@ -352,6 +361,9 @@
         serviceSubtask2.setSendstate(2L);
         serviceSubtask2.setCreateTime(new Date());
         serviceSubtask2.setUpdateTime(new Date());
+        serviceSubtask2.setVisitType(serviceSubtask.getVisitType());
+        serviceSubtask2.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
+        serviceSubtask2.setVisitDeptName(serviceSubtask.getVisitDeptName());
         int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2);
         if (i == 1) {
             //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛�
@@ -443,7 +455,7 @@
             serviceTask.setCreateTime(new Date());
             serviceTask.setUpdateTime(new Date());
             serviceTaskService.insertServiceTask(serviceTask);
-            log.error("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype());
+            log.info("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype());
             if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {
                 if (serviceTaskVO.getAppltype().equals("3")) {
                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
@@ -456,7 +468,7 @@
                     serviceTaskdiag.setGuid(serviceTask.getGuid());
                     serviceTaskdiag.setOrgid(serviceTask.getOrgid());
                     serviceTaskdiag.setCreateTime(new Date());
-                    log.error("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
+                    log.info("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
                     if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                         String[] Icd10codes = serviceTaskVO.getIcd10code().split(",");
                         for (String icd10code : Icd10codes) {
@@ -479,7 +491,7 @@
                         String[] opcodes = serviceTaskVO.getOpcode().split(",");
                         for (String opcode : opcodes) {
                             serviceTaskoper.setOpcode(opcode);
-                            log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
                             serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                         }
                     }
@@ -541,7 +553,7 @@
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
-                    serviceSubtask.setType(serviceTaskVO.getHospType());
+                    serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setHospType(patTaskRelevance.getHospType());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
@@ -554,6 +566,7 @@
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
@@ -583,7 +596,7 @@
             }
             if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                 for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-                    log.error("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+                    log.info("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
                     serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
                     redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
                     redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
@@ -673,7 +686,7 @@
                         serviceTaskdiag2.setIcd10code(icdcode);
                         List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);
                         serviceTaskdiag.setIcd10code(icdcode);
-                        log.error("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
+                        log.info("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
                         if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {
                             serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());
                             serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);
@@ -707,7 +720,7 @@
                         List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
 
                         serviceTaskoper.setOpcode(opcode);
-                        log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                        log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
                         if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
                             serviceTaskoper.setId(serviceTaskopers.get(0).getId());
                             serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
@@ -750,7 +763,7 @@
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
-                    serviceSubtask.setType(serviceTaskVO.getHospType());
+                    serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
                     serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
@@ -759,6 +772,7 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() != null) {
                         if (patTaskRelevance.getIsoperation() == 2)
@@ -1736,7 +1750,7 @@
                     serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
                     serviceSubtask.setSendstate(4L);
                     serviceSubtask.setResult("error");
-                    serviceSubtask.setFinishtime(new Date());
+//                    serviceSubtask.setFinishtime(new Date());
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                     continue;
                 }
@@ -2168,7 +2182,14 @@
     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(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+        //Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+        Map<String, List<ServiceSubtask>> collect = new HashMap<>();
+        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
+            collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+
+        } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {
+            collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
+        }
         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                 continue;
@@ -2183,9 +2204,92 @@
 
     private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
+        //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
+        DecimalFormat percentFormat = new DecimalFormat("##.##%");
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
         serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
         serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
-        serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size());
+        //鍑洪櫌浜烘
+        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+            //鏃犻渶闅忚浜烘
+            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
+                serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
+            }
+            //搴旈殢璁夸汉娆�
+            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);
+            }
+            //棣栨鍑洪櫌闅忚
+            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                    serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
+                }
+                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();
+                    serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));
+                } else {
+                    serviceSubtaskStatistic.setFollowUpRate("0.00%");
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+                    serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);
+                }
+            }//浜屾鍑洪櫌闅忚
+            else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                    serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);
+                }
+                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();
+                    serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));
+                } else {
+                    serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
+                }
+            }
+
+
+        }
+        /*serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size());
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             //涓嶉殢璁挎暟閲�
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
@@ -2226,7 +2330,8 @@
 //            BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP);
             BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP);
             serviceSubtaskStatistic.setSfwcl(multiply.toString());
-        }
+        }*/
+
 
         return serviceSubtaskStatistic;
     }

--
Gitblit v1.9.3