| | |
| | | |
| | | @Override |
| | | public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) { |
| | | // 1:待随访(2 待发送);2:随访中(3 已发送、1 被领取)、3:未完成(5 发送失败、7、超时)、4:已完成( 6 已完成)、5:无需随访(4 不执行) |
| | | if (serviceSubtaskEntity.getSendstateView() == 1) serviceSubtaskEntity.setSendstates(Arrays.asList(2L)); |
| | | if (serviceSubtaskEntity.getSendstateView() == 2) serviceSubtaskEntity.setSendstates(Arrays.asList(1L, 3L)); |
| | | if (serviceSubtaskEntity.getSendstateView() == 3) serviceSubtaskEntity.setSendstates(Arrays.asList(5L, 7L)); |
| | | if (serviceSubtaskEntity.getSendstateView() == 4) serviceSubtaskEntity.setSendstates(Arrays.asList(6L)); |
| | | if (serviceSubtaskEntity.getSendstateView() == 5) serviceSubtaskEntity.setSendstates(Arrays.asList(4L)); |
| | | |
| | | if (serviceSubtaskEntity.getSendstateView() != null) { |
| | | // 1:待随访(2 待发送);2:随访中(3 已发送、1 被领取)、3:未完成(5 发送失败、7、超时)、4:已完成( 6 已完成)、5:无需随访(4 不执行) |
| | | if (serviceSubtaskEntity.getSendstateView() == 1) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(2L))); |
| | | if (serviceSubtaskEntity.getSendstateView() == 2) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 3L))); |
| | | if (serviceSubtaskEntity.getSendstateView() == 3) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(5L, 7L))); |
| | | if (serviceSubtaskEntity.getSendstateView() == 4) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L))); |
| | | if (serviceSubtaskEntity.getSendstateView() == 5) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L))); |
| | | } |
| | | |
| | | List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity); |
| | | |
| | |
| | | return serviceSubtaskStatistic; |
| | | } |
| | | |
| | | private ServiceSubtaskStatistic getStatisticCategory(List<ServiceSubtask> serviceSubtaskList, ServiceSubtaskCountReq serviceSubtaskCountReq) { |
| | | private ServiceSubtaskStatistic getStatisticCategory(List<ServiceSubtask> serviceSubtaskList, ServiceSubtaskCountReq serviceSubtaskCountReq, List<ServiceSubtaskCount> subCounts) { |
| | | ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic(); |
| | | //格式化为两位小数的百分比 |
| | | DecimalFormat percentFormat = new DecimalFormat("##.##%"); |
| | |
| | | serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode()); |
| | | serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode()); |
| | | serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname()); |
| | | //出院人次 |
| | | serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); |
| | | //出院人次详情 |
| | | serviceSubtaskStatistic.setDischargeCountInfo(serviceSubtaskList); |
| | | // //出院人次 |
| | | // serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size()); |
| | | // //出院人次详情 |
| | | // serviceSubtaskStatistic.setDischargeCountInfo(serviceSubtaskList); |
| | | serviceSubtaskStatistic.setJoyCount(0); |
| | | serviceSubtaskStatistic.setJoyAllCount(0); |
| | | |
| | | //获取随访统计 |
| | | List<Long> subTaskIds = new ArrayList<>(); |
| | | if (ObjectUtils.isNotEmpty(serviceSubtaskList)) { |
| | | subTaskIds = serviceSubtaskList.stream().map(ServiceSubtask::getId) // 提取字段 |
| | | .filter(Objects::nonNull) // 过滤 null 值 |
| | | .filter(id -> ObjectUtils.isNotEmpty(id)) // 过滤空字符串(可选) |
| | | .distinct() // 去重 |
| | | .collect(Collectors.toList()); // 收集到 List |
| | | serviceSubtaskCountReq.setSubTaskIds(subTaskIds); |
| | | if (subCounts == null) { |
| | | subCounts = new ArrayList<>(); |
| | | } |
| | | List<ServiceSubtaskCount> subCounts = new ArrayList<>(); |
| | | subCounts = serviceSubtaskMapper.getSfStatisticsCategory(serviceSubtaskCountReq); |
| | | |
| | | //无需随访详情 |
| | | List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>(); |
| | | //应随访详情 |
| | | List<ServiceSubtask> followUpNeededAllInfo = new ArrayList<>(); |
| | | //记录首次应随访详情 |
| | | List<ServiceSubtask> needFollowUpInfo = new ArrayList<>(); |
| | | //记录首次待随访详情 |
| | | List<ServiceSubtask> pendingFollowUpInfo = new ArrayList<>(); |
| | | //记录首次随访成功详情 |
| | | List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>(); |
| | | //记录首次随访失败详情 |
| | | List<ServiceSubtask> followUpFailInfo = new ArrayList<>(); |
| | | //记录首次随访人工详情 |
| | | List<ServiceSubtask> manualInfo = new ArrayList<>(); |
| | | //记录首次随访语音详情 |
| | | List<ServiceSubtask> voiceInfo = new ArrayList<>(); |
| | | //记录首次随访短信详情 |
| | | List<ServiceSubtask> smsInfo = new ArrayList<>(); |
| | | //记录首次随访微信详情 |
| | | List<ServiceSubtask> wechatInfo = new ArrayList<>(); |
| | | |
| | | //记录首次结果异常详情 |
| | | List<ServiceSubtask> abnormalInfo = new ArrayList<>(); |
| | | |
| | | //记录再次应随访详情 |
| | | List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>(); |
| | | //记录再次待随访详情 |
| | | List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>(); |
| | | //记录再次随访成功详情 |
| | | List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>(); |
| | | //记录再次随访失败详情 |
| | | List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>(); |
| | | //记录再次随访人工详情 |
| | | List<ServiceSubtask> manualAgainInfo = new ArrayList<>(); |
| | | //记录再次随访语音详情 |
| | | List<ServiceSubtask> voiceAgainInfo = new ArrayList<>(); |
| | | //记录再次随访短信详情 |
| | | List<ServiceSubtask> smsAgainInfo = new ArrayList<>(); |
| | | //记录再次随访微信详情 |
| | | List<ServiceSubtask> wechatAgainInfo = new ArrayList<>(); |
| | | //记录再次结果异常详情 |
| | | List<ServiceSubtask> abnormalAgainInfo = new ArrayList<>(); |
| | | // //无需随访详情 |
| | | // List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>(); |
| | | // //应随访详情 |
| | | // List<ServiceSubtask> followUpNeededAllInfo = new ArrayList<>(); |
| | | // //记录首次应随访详情 |
| | | // List<ServiceSubtask> needFollowUpInfo = new ArrayList<>(); |
| | | // //记录首次待随访详情 |
| | | // List<ServiceSubtask> pendingFollowUpInfo = new ArrayList<>(); |
| | | // //记录首次随访成功详情 |
| | | // List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>(); |
| | | // //记录首次随访失败详情 |
| | | // List<ServiceSubtask> followUpFailInfo = new ArrayList<>(); |
| | | // //记录首次随访人工详情 |
| | | // List<ServiceSubtask> manualInfo = new ArrayList<>(); |
| | | // //记录首次随访语音详情 |
| | | // List<ServiceSubtask> voiceInfo = new ArrayList<>(); |
| | | // //记录首次随访短信详情 |
| | | // List<ServiceSubtask> smsInfo = new ArrayList<>(); |
| | | // //记录首次随访微信详情 |
| | | // List<ServiceSubtask> wechatInfo = new ArrayList<>(); |
| | | // |
| | | // //记录首次结果异常详情 |
| | | // List<ServiceSubtask> abnormalInfo = new ArrayList<>(); |
| | | // |
| | | // //记录再次应随访详情 |
| | | // List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>(); |
| | | // //记录再次待随访详情 |
| | | // List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访成功详情 |
| | | // List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访失败详情 |
| | | // List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访人工详情 |
| | | // List<ServiceSubtask> manualAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访语音详情 |
| | | // List<ServiceSubtask> voiceAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访短信详情 |
| | | // List<ServiceSubtask> smsAgainInfo = new ArrayList<>(); |
| | | // //记录再次随访微信详情 |
| | | // List<ServiceSubtask> wechatAgainInfo = new ArrayList<>(); |
| | | // //记录再次结果异常详情 |
| | | // List<ServiceSubtask> abnormalAgainInfo = new ArrayList<>(); |
| | | |
| | | |
| | | for (ServiceSubtask serviceSubtask : serviceSubtaskList) { |
| | |
| | | //无需随访人次 |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) { |
| | | serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L); |
| | | nonFollowUpInfo.add(serviceSubtask); |
| | | // nonFollowUpInfo.add(serviceSubtask); |
| | | } |
| | | //应随访人次 |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { |
| | | serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L); |
| | | followUpNeededAllInfo.add(serviceSubtask); |
| | | // followUpNeededAllInfo.add(serviceSubtask); |
| | | } |
| | | |
| | | //首次出院随访 |
| | | if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) { |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { |
| | | serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L); |
| | | needFollowUpInfo.add(serviceSubtask); |
| | | // needFollowUpInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { |
| | | serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L); |
| | | pendingFollowUpInfo.add(serviceSubtask); |
| | | // pendingFollowUpInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) { |
| | | serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L); |
| | | followUpSuccessInfo.add(serviceSubtask); |
| | | // followUpSuccessInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) { |
| | | serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L); |
| | | followUpFailInfo.add(serviceSubtask); |
| | | // followUpFailInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { |
| | | double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp(); |
| | |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) { |
| | | serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L); |
| | | manualInfo.add(serviceSubtask); |
| | | // manualInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) { |
| | | serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L); |
| | | voiceInfo.add(serviceSubtask); |
| | | // voiceInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) { |
| | | serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L); |
| | | smsInfo.add(serviceSubtask); |
| | | // smsInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) { |
| | | serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L); |
| | | wechatInfo.add(serviceSubtask); |
| | | // wechatInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) { |
| | | serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L); |
| | | abnormalInfo.add(serviceSubtask); |
| | | // abnormalInfo.add(serviceSubtask); |
| | | } |
| | | }//二次出院随访 |
| | | else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) { |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) { |
| | | serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L); |
| | | needFollowUpAgainInfo.add(serviceSubtask); |
| | | // needFollowUpAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) { |
| | | serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L); |
| | | pendingFollowUpAgainInfo.add(serviceSubtask); |
| | | // pendingFollowUpAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) { |
| | | serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L); |
| | | followUpSuccessAgainInfo.add(serviceSubtask); |
| | | // followUpSuccessAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) { |
| | | serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L); |
| | | followUpFailAgainInfo.add(serviceSubtask); |
| | | // followUpFailAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtaskStatistic.getNeedFollowUp() > 0) { |
| | | double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain(); |
| | |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) { |
| | | serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L); |
| | | manualAgainInfo.add(serviceSubtask); |
| | | // manualAgainInfo.add(serviceSubtask); |
| | | } |
| | | //再次随访语音(统计不执行) |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) { |
| | | serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L); |
| | | voiceAgainInfo.add(serviceSubtask); |
| | | // voiceAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) { |
| | | serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L); |
| | | smsAgainInfo.add(serviceSubtask); |
| | | // smsAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) { |
| | | serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L); |
| | | wechatAgainInfo.add(serviceSubtask); |
| | | // wechatAgainInfo.add(serviceSubtask); |
| | | } |
| | | if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) { |
| | | serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L); |
| | | abnormalAgainInfo.add(serviceSubtask); |
| | | // abnormalAgainInfo.add(serviceSubtask); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //记录无需随访详情 |
| | | serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo); |
| | | //记录需随访详情 |
| | | serviceSubtaskStatistic.setFollowUpNeededAllInfo(followUpNeededAllInfo); |
| | | //记录首次应随访详情 |
| | | serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo); |
| | | //记录首次待随访详情 |
| | | serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo); |
| | | //记录首次随访成功详情 |
| | | serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo); |
| | | //记录首次随访失败详情 |
| | | serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo); |
| | | //记录首次随访人工详情 |
| | | serviceSubtaskStatistic.setManualInfo(manualInfo); |
| | | //记录首次随访语音详情 |
| | | serviceSubtaskStatistic.setVoiceInfo(voiceInfo); |
| | | //记录首次随访短信详情 |
| | | serviceSubtaskStatistic.setSmsInfo(smsInfo); |
| | | //记录首次随访微信详情 |
| | | serviceSubtaskStatistic.setWechatInfo(wechatInfo); |
| | | //记录再次应随访详情 |
| | | serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo); |
| | | //记录再次待随访详情 |
| | | serviceSubtaskStatistic.setPendingFollowUpAgainInfo(pendingFollowUpAgainInfo); |
| | | //记录再次随访成功详情 |
| | | serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(followUpSuccessAgainInfo); |
| | | //记录再次随访失败详情 |
| | | serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo); |
| | | //记录再次随访人工详情 |
| | | serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo); |
| | | //记录再次随访语音详情 |
| | | serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo); |
| | | //记录再次随访短信详情 |
| | | serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo); |
| | | //记录再次随访微信详情 |
| | | serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo); |
| | | // //记录无需随访详情 |
| | | // serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo); |
| | | // //记录需随访详情 |
| | | // serviceSubtaskStatistic.setFollowUpNeededAllInfo(followUpNeededAllInfo); |
| | | // //记录首次应随访详情 |
| | | // serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo); |
| | | // //记录首次待随访详情 |
| | | // serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo); |
| | | // //记录首次随访成功详情 |
| | | // serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo); |
| | | // //记录首次随访失败详情 |
| | | // serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo); |
| | | // //记录首次随访人工详情 |
| | | // serviceSubtaskStatistic.setManualInfo(manualInfo); |
| | | // //记录首次随访语音详情 |
| | | // serviceSubtaskStatistic.setVoiceInfo(voiceInfo); |
| | | // //记录首次随访短信详情 |
| | | // serviceSubtaskStatistic.setSmsInfo(smsInfo); |
| | | // //记录首次随访微信详情 |
| | | // serviceSubtaskStatistic.setWechatInfo(wechatInfo); |
| | | // //记录再次应随访详情 |
| | | // serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo); |
| | | // //记录再次待随访详情 |
| | | // serviceSubtaskStatistic.setPendingFollowUpAgainInfo(pendingFollowUpAgainInfo); |
| | | // //记录再次随访成功详情 |
| | | // serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(followUpSuccessAgainInfo); |
| | | // //记录再次随访失败详情 |
| | | // serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo); |
| | | // //记录再次随访人工详情 |
| | | // serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo); |
| | | // //记录再次随访语音详情 |
| | | // serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo); |
| | | // //记录再次随访短信详情 |
| | | // serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo); |
| | | // //记录再次随访微信详情 |
| | | // serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo); |
| | | return serviceSubtaskStatistic; |
| | | } |
| | | |
| | |
| | | } |
| | | //获取及时率统计合集 |
| | | Map<String, Map<String, Object>> jsRates = getSsRateForSfStatistics(serviceSubtaskCountReq, collect); |
| | | //一次性查询所有分组的题目统计,避免每个分组一次SQL(N+1) |
| | | List<Long> allSubTaskIds = rawData.stream().map(ServiceSubtask::getId) |
| | | .filter(Objects::nonNull) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | List<ServiceSubtaskCount> subCounts = new ArrayList<>(); |
| | | if (CollectionUtils.isNotEmpty(allSubTaskIds)) { |
| | | serviceSubtaskCountReq.setSubTaskIds(allSubTaskIds); |
| | | subCounts = serviceSubtaskMapper.getSfStatisticsCategory(serviceSubtaskCountReq); |
| | | } |
| | | for (String collectKey : collect.keySet()) { |
| | | List<ServiceSubtask> serviceSubtaskList = collect.get(collectKey); |
| | | if (CollectionUtils.isEmpty(serviceSubtaskList)) { |
| | | continue; |
| | | } |
| | | ServiceSubtaskStatistic statistic = getStatisticCategory(serviceSubtaskList, serviceSubtaskCountReq); |
| | | ServiceSubtaskStatistic statistic = getStatisticCategory(serviceSubtaskList, serviceSubtaskCountReq, subCounts); |
| | | if (ObjectUtils.isNotEmpty(jsRates)) { |
| | | Map<String, Object> jsRateMap = jsRates.get(collectKey); |
| | | BigDecimal jsRate = new BigDecimal("0"); |
| | |
| | | serviceSubtaskStatistic.setJoyAllCount(sum.intValue()); |
| | | serviceSubtaskStatistic.setJoyCount(finishedSum.intValue()); |
| | | serviceSubtaskStatistic.setJoyTotal(finishedPercentage); |
| | | clearStatisticDetailInfo(serviceSubtaskStatistic); |
| | | } |
| | | } |
| | | |
| | | return serviceSubtaskStatistics; |
| | | } |
| | | |
| | | /** |
| | | * Trim detail lists for summary response to avoid oversized payloads. |
| | | */ |
| | | private void clearStatisticDetailInfo(ServiceSubtaskStatistic serviceSubtaskStatistic) { |
| | | serviceSubtaskStatistic.setDischargeCountInfo(null); |
| | | serviceSubtaskStatistic.setNonFollowUpInfo(null); |
| | | serviceSubtaskStatistic.setFollowUpNeededAllInfo(null); |
| | | serviceSubtaskStatistic.setNeedFollowUpInfo(null); |
| | | serviceSubtaskStatistic.setPendingFollowUpInfo(null); |
| | | serviceSubtaskStatistic.setFollowUpSuccessInfo(null); |
| | | serviceSubtaskStatistic.setFollowUpFailInfo(null); |
| | | serviceSubtaskStatistic.setManualInfo(null); |
| | | serviceSubtaskStatistic.setVoiceInfo(null); |
| | | serviceSubtaskStatistic.setSmsInfo(null); |
| | | serviceSubtaskStatistic.setWechatInfo(null); |
| | | serviceSubtaskStatistic.setNeedFollowUpAgainInfo(null); |
| | | serviceSubtaskStatistic.setPendingFollowUpAgainInfo(null); |
| | | serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(null); |
| | | serviceSubtaskStatistic.setFollowUpFailAgainInfo(null); |
| | | serviceSubtaskStatistic.setManualAgainInfo(null); |
| | | serviceSubtaskStatistic.setVoiceAgainInfo(null); |
| | | serviceSubtaskStatistic.setSmsAgainInfo(null); |
| | | serviceSubtaskStatistic.setWechatAgainInfo(null); |
| | | serviceSubtaskStatistic.setTaskSituation1Info(null); |
| | | serviceSubtaskStatistic.setTaskSituation2Info(null); |
| | | serviceSubtaskStatistic.setTaskSituation3Info(null); |
| | | serviceSubtaskStatistic.setTaskSituation4Info(null); |
| | | serviceSubtaskStatistic.setTaskSituation5Info(null); |
| | | serviceSubtaskStatistic.setTaskSituation6Info(null); |
| | | serviceSubtaskStatistic.setFilterCountList(null); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq) { |
| | | Map<String, ServiceSubtaskScriptCount> result = new HashMap<>(); |