From 8d33f7893251f56ebf050c6aaf415af297474009 Mon Sep 17 00:00:00 2001 From: zhs <zhs18203887318@163.com> Date: 星期一, 09 六月 2025 17:29:09 +0800 Subject: [PATCH] 06-09 zhs --- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 103 insertions(+), 6 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 a951ded..52382bf 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,7 +157,7 @@ return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO); } - public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO){ + public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) { return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO); } @@ -344,7 +345,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 "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟"; @@ -359,6 +360,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) { //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛� @@ -561,6 +565,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); @@ -766,6 +771,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) @@ -1743,7 +1749,7 @@ serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�"); serviceSubtask.setSendstate(4L); serviceSubtask.setResult("error"); - serviceSubtask.setFinishtime(new Date()); +// serviceSubtask.setFinishtime(new Date()); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); continue; } @@ -2175,7 +2181,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.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 1) { + collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown"))); + + }else if (serviceSubtaskCountReq.getStatisticaltype() != null && serviceSubtaskCountReq.getStatisticaltype() == 2){ + 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; @@ -2190,9 +2203,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() == 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() > 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) { @@ -2233,7 +2329,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