liusheng
8 小时以前 91b61e8412bd4f59ac44a3dcc42adb584d1119c5
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -166,7 +166,7 @@
    private Integer phoneEndHour;
    @Autowired
    private Icd10Mapper icd10Mapper;
    private IPatMedOuthospService patMedOuthospService;
    @Value("${spring.profiles.active}")
    private String active;
@@ -350,11 +350,16 @@
    public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
        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)));
            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);
@@ -747,11 +752,10 @@
                    serviceSubtask.setPatid(patTaskRelevance.getPatid());
                    serviceSubtask.setCreateTime(DateUtils.getNowDate());
                    serviceSubtask.setInhospid(patTaskRelevance.getHospid());
                    serviceSubtask.setSendstate(1L);
                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                        serviceSubtask.setSendstate(2L);
                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode());
                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
                    //新建完成就是待发送状态
                    serviceSubtask.setSendstate(2L);
                    serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode())?patTaskRelevance.getDeptcode():serviceTaskVO.getDeptcode());
                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName())?patTaskRelevance.getDeptName():serviceTaskVO.getDeptname());
                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                    serviceSubtask.setType(serviceTaskVO.getType());
@@ -772,9 +776,13 @@
                    serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
                    serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                    serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                    serviceSubtask.setVisitTime(DateUtils.parseDate(serviceTaskVO.getShowTimeMorn()));
                    //如果立即执行,时间就是当前时间
                    if(serviceTaskVO.getSendType()!=null&&serviceTaskVO.getSendType()==2) serviceSubtask.setVisitTime(new Date());
                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
                        serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                        serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
                    }
                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                    serviceSubtask.getId().intValue();
@@ -804,7 +812,6 @@
                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
            //修改操作,需要将stopState状态+1
            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
            //获取到该任务所有的服务,并从队列里删除
            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
            serviceSubtaskVO.setSendstate(2L);
@@ -826,6 +833,30 @@
                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
                    //将出入院表的数据,还原成还未处理的状态
                    if (serviceSubtask.getServiceType().equals("2")) {
                        ServiceTask st = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                        //如果任务是长期任务,需要将该患者的出入院数据还原成还未处理的状态
                        if (st != null && st.getLongTask() == 1) {
                            PatMedInhosp patMedInhosp = new PatMedInhosp();
                            patMedInhosp.setDeptcheckFlag("0");
                            patMedInhosp.setWardcheckFlag("0");
                            patMedInhosp.setDiagcheckFlag("0");
                            patMedInhosp.setInhospid(serviceSubtask.getInhospid());
                            patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
                        }
                    } else if (serviceSubtask.getServiceType().equals("3")) {
                        if (serviceSubtask.getInhospid() != null) {
                            PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
                            req.setOuthospno(serviceSubtask.getHospno());
                            List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(req);
                            if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
                                PatMedOuthosp patMedOuthosp = patMedOuthosps.get(0);
                                patMedOuthosp.setServerState("0");
                                patMedOuthospService.updatePatMedOuthosp(patMedOuthosp);
                            }
                        }
                    }
                }
            }
@@ -891,18 +922,21 @@
                    }
                    serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                    serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
                    serviceTaskdiag.setGuid(serviceTask.getGuid());
                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());
                    serviceTaskdiag.setDeptCode(serviceTaskVO.getDeptcode());
                    serviceTaskdiag.setDeptName(serviceTaskVO.getDeptname());
                    serviceTaskdiag.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode());
                    serviceTaskdiag.setWardName(serviceTaskVO.getLeavehospitaldistrictname());
                    serviceTaskdiag.setGuid(serviceTask1.getGuid());
                    serviceTaskdiag.setServiceType(serviceTask1.getServiceType());
                    serviceTaskdiag.setOrgid(serviceTask1.getOrgid());
                    serviceTaskdiag.setDeptCode(serviceTask1.getDeptcode());
                    serviceTaskdiag.setDeptName(serviceTask1.getDeptname());
                    serviceTaskdiag.setWardCode(serviceTask1.getLeavehospitaldistrictcode());
                    serviceTaskdiag.setWardName(serviceTask1.getLeavehospitaldistrictname());
                    serviceTaskdiag.setUpdateTime(new Date());
                    if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                        String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
                        String[] icd10names = serviceTaskVO.getIcd10name().split(",");
                        if (icd10codes.length != icd10names.length) {
                            throw new BaseException("疾病编码和疾病名称数量不一致");
                        if(!active.equals("nhfy")&&!active.equals("druid")){
                            if (icd10codes.length != icd10names.length) {
                                throw new BaseException("疾病编码和疾病名称数量不一致");
                            }
                        }
                        for (int i = 0; i < icd10codes.length; i++) {
                            //先查询一下是否存在
@@ -2193,6 +2227,8 @@
                    IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
                    if (ivrTaskTemplateScript != null)
                        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
                    serviceSubtaskDetail.setIsMydException(ivrTaskTemplateScript.getIsMydException());
                    serviceSubtaskDetail.setDimension(ivrTaskTemplateScript.getDimension());
                }
                serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
@@ -2778,7 +2814,7 @@
                     */
                    if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                        //首次随访成功
                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                            serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                        }
                        //首次随访人工 (不统计不执行)
@@ -2795,6 +2831,27 @@
                        }
                        //首次随访微信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                        }
                    } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
                        //首次随访成功
                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                            serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                        }
                        //首次随访人工 (只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                        }
                        //首次随访语音 (只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                        }
                        //首次随访短信(只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                        }
                        //首次随访微信(只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                        }
                    } else {
@@ -2848,7 +2905,7 @@
                     */
                    if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                        //再次随访成功
                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
                            serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                        }
                        //再次随访人工(不统计不执行)
@@ -2865,6 +2922,27 @@
                        }
                        //再次随访微信(不统计不执行)
                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                        }
                    } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
                        //再次随访成功
                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                            serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                        }
                        //再次随访人工 (只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                        }
                        //再次随访语音 (只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                        }
                        //再次随访短信(只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                        }
                        //再次随访微信(只统计已完成)
                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                        }
                    } else {
@@ -2977,7 +3055,7 @@
                 */
                if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                    //首次随访成功
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                        serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                    }
                    //首次随访人工 (不统计不执行)
@@ -2994,6 +3072,27 @@
                    }
                    //首次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                    }
                } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
                    //首次随访成功
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                        serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                    }
                    //首次随访人工 (只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                    }
                    //首次随访语音 (只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
                    }
                    //首次随访短信(只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                    }
                    //首次随访微信(只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                    }
                } else {
@@ -3103,7 +3202,7 @@
                 */
                if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                    //再次随访成功
                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
                        serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                    }
                    //再次随访人工(不统计不执行)
@@ -3120,6 +3219,27 @@
                    }
                    //再次随访微信(不统计不执行)
                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                    }
                } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
                    //再次随访成功
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
                        serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                    }
                    //再次随访人工 (只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                        serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                    }
                    //再次随访语音 (只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
                    }
                    //再次随访短信(只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                        serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                    }
                    //首次随访微信(只统计已完成)
                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                    }
                } else {
@@ -3602,8 +3722,8 @@
         */
        if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("2")) {
            List<Long> sendstates = serviceSubtaskCountReq.getSendstates();
            if(CollectionUtils.isNotEmpty(sendstates) && sendstates.get(0).equals(6L)){
                List<Long> sendstates1 =new ArrayList<>();
            if (CollectionUtils.isNotEmpty(sendstates) && sendstates.get(0).equals(6L)) {
                List<Long> sendstates1 = new ArrayList<>();
                sendstates1.add(3L);
                sendstates1.add(4L);
                sendstates1.add(6L);
@@ -3779,10 +3899,7 @@
        //获取及时率统计合集
        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<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);