陈昶聿
3 天以前 af4db2407e7c60bdd4b250ecaa58454d29bab6a2
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1993,6 +1993,7 @@
    @Override
    public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
        int i = 0;
        log.info("保存电话回调内容 saveQuestionAnswerPhone:{}", serviceSubTaskDetailReq);
        if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {
            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
            Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
@@ -2272,7 +2273,7 @@
            if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                continue;
            }
            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);
            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle());
            if(ObjectUtils.isNotEmpty(jsRates)){
                Map<String, Object> jsRateMap = jsRates.get(collectKey);
                BigDecimal jsRate = new BigDecimal("0");
@@ -2519,7 +2520,7 @@
    }
    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle) {
        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
        //格式化为两位小数的百分比
        DecimalFormat percentFormat = new DecimalFormat("##.##%");
@@ -2589,42 +2590,72 @@
                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
                    pendingFollowUpInfo.add(serviceSubtask);
                }
                //首次随访成功
                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                    followUpSuccessInfo.add(serviceSubtask);
                }
                //首次随访失败
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                    followUpFailInfo.add(serviceSubtask);
                }
                /**
                 * 不同统计方式下不同的随访成功数 参数 followUpCountStyle 控制
                 */
                if(StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")){
                    //首次随访成功
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
                        serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                        followUpSuccessInfo.add(serviceSubtask);
                    }
                    //首次随访人工 (不统计不执行)
                    if (serviceSubtask.getSendstate() != null
                            && !serviceSubtask.getSendstate().equals(4L)
                            && serviceSubtask.getPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                        manualInfo.add(serviceSubtask);
                    }
                    //首次随访短信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null
                            && !serviceSubtask.getSendstate().equals(4L)
                            && serviceSubtask.getPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                        smsInfo.add(serviceSubtask);
                    }
                    //首次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null
                            && !serviceSubtask.getSendstate().equals(4L)
                            && serviceSubtask.getPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                        wechatInfo.add(serviceSubtask);
                    }
                }else {
                    //首次随访成功 - 统计时候加上不执行的,已发送的
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L)
                            || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
                        serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                        followUpSuccessInfo.add(serviceSubtask);
                    }
                    //首次随访人工 (统计不执行)
                    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 (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.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                    manualInfo.add(serviceSubtask);
                }
                //首次随访短信(不统计不执行)
                if (serviceSubtask.getSendstate() != null
                        && !serviceSubtask.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                    smsInfo.add(serviceSubtask);
                }
                //首次随访微信(不统计不执行)
                if (serviceSubtask.getSendstate() != null
                        && !serviceSubtask.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                    wechatInfo.add(serviceSubtask);
                }
                //结果异常
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -2642,42 +2673,73 @@
                    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);
                }
                /**
                 * 不同统计方式下不同的随访成功数 参数 followUpCountStyle 控制
                 */
                if(StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")){
                    //再次随访成功
                    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().equals(4L)
                            && serviceSubtask.getPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                        manualAgainInfo.add(serviceSubtask);
                    }
                    //再次随访短信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null
                            && !serviceSubtask.getSendstate().equals(4L)
                            && serviceSubtask.getPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                        smsAgainInfo.add(serviceSubtask);
                    }
                    //再次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null
                            && !serviceSubtask.getSendstate().equals(4L)
                            && serviceSubtask.getPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                        wechatAgainInfo.add(serviceSubtask);
                    }
                }else {
                    //再次随访成功
                    if (serviceSubtask.getSendstate() != null &&
                            (serviceSubtask.getSendstate().equals(1L) || serviceSubtask.getSendstate().equals(6L) ||
                            serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
                        serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                        followUpSuccessAgainInfo.add(serviceSubtask);
                    }
                    //再次随访人工(统计不执行)
                    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 (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.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("1")) {
                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                    manualAgainInfo.add(serviceSubtask);
                }
                //再次随访短信(不统计不执行)
                if (serviceSubtask.getSendstate() != null
                        && !serviceSubtask.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("4")) {
                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                    smsAgainInfo.add(serviceSubtask);
                }
                //再次随访微信(不统计不执行)
                if (serviceSubtask.getSendstate() != null
                        && !serviceSubtask.getSendstate().equals(4L)
                        && serviceSubtask.getPreachform().equals("5")) {
                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                    wechatAgainInfo.add(serviceSubtask);
                }
                //再次异常
                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3306,6 +3368,8 @@
     * @return
     */
    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
        log.info("setFailPreachForm 随访流程处理 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}",
                serviceSubtask, preachform, remark, failSendstate);
        //将状态设置为失败
        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
@@ -3332,6 +3396,7 @@
            if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
                serviceSubtask.setCurrentPreachform(preachform);
                serviceSubtask.setSendstate(5L);
                serviceSubtask.setRemark("setFailPreachForm方法 当前的preachform已经是最后一个了,全失败了");
                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                return true;
            }