陈昶聿
11 小时以前 c4c54dbaab5111aa6c1642f324dd3e27c7501720
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -17,6 +17,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -374,7 +375,10 @@
    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
        // 直接调用数据库统计方法,在数据库层完成聚合计算
        Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskVO);
        // 处理空异常
        if(MapUtils.isEmpty(result)){
            result = new HashMap<>();
        }
        // 确保所有 key 都有值,避免空指针异常
        // MyBatis 的 SUM 在没有匹配行时会返回 null
        result.putIfAbsent("wzx", 0);
@@ -2474,6 +2478,27 @@
        List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>();
        //记录首次随访失败详情
        List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
        //记录首次随访人工详情
        List<ServiceSubtask> manualInfo = new ArrayList<>();
        //记录首次随访短信详情
        List<ServiceSubtask> smsInfo = new ArrayList<>();
        //记录首次随访微信详情
        List<ServiceSubtask> wechatInfo = 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> smsAgainInfo = new ArrayList<>();
        //记录首次随访微信详情
        List<ServiceSubtask> wechatAgainInfo= new ArrayList<>();
        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
            //无需随访人次
@@ -2517,31 +2542,46 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRate("0.00%");
                }
                //首次随访人工
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                    manualInfo.add(serviceSubtask);
                }
                //首次随访短信
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                    smsInfo.add(serviceSubtask);
                }
                //首次随访微信
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                    wechatInfo.add(serviceSubtask);
                }
                //结果异常
                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);
                    needFollowUpAgainInfo.add(serviceSubtask);
                }
                //再次待随访
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
                    pendingFollowUpAgainInfo.add(serviceSubtask);
                }
                //再次随访成功
                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                    followUpSuccessAgainInfo.add(serviceSubtask);
                }
                //再次随访失败
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);
                    followUpFailAgainInfo.add(serviceSubtask);
                }
                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();
@@ -2549,15 +2589,22 @@
                } else {
                    serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
                }
                //再次随访人工
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                    manualAgainInfo.add(serviceSubtask);
                }
                //再次随访短信
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                    smsAgainInfo.add(serviceSubtask);
                }
                //再次随访微信
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                    wechatAgainInfo.add(serviceSubtask);
                }
                //再次异常
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
                }
@@ -2591,6 +2638,26 @@
        serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
        //记录首次随访失败详情
        serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
        //记录首次随访人工详情
        serviceSubtaskStatistic.setManualInfo(manualInfo);
        //记录首次随访短信详情
        serviceSubtaskStatistic.setSmsInfo(smsInfo);
        //记录首次随访微信详情
        serviceSubtaskStatistic.setWechatInfo(wechatInfo);
        //记录再次应随访详情
        serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo);
        //记录再次待随访详情
        serviceSubtaskStatistic.setPendingFollowUpAgainInfo(pendingFollowUpAgainInfo);
        //记录再次随访成功详情
        serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(followUpSuccessAgainInfo);
        //记录再次随访失败详情
        serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
        //记录再次随访人工详情
        serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
        //记录再次随访短信详情
        serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
        //记录再次随访微信详情
        serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo);
        return serviceSubtaskStatistic;
    }