浏览代码

Merge branch 'dev' of wangzhinan/wlyy2.0 into dev

wangzhinan 5 年之前
父节点
当前提交
eb57d4445d

+ 230 - 20
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -164,13 +164,13 @@ public class StatisticsEsService {
            //问诊量表格
            //专家咨询数量
            List<SaveModel> specialistSaveModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "4", SaveModel.timeLevel_ZL,null,level2_type);
            List<SaveModel> specialistSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1",null,level2_type);
            //协同门诊
            List<SaveModel> syngySaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"2",null,level2_type);
            List<SaveModel> syngySaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"12",null,level2_type);
            //图文复诊
            List<SaveModel> topicSaveModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1","1",null,level2_type);
            List<SaveModel> topicSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"9",null,level2_type);
            ///视频复诊
            List<SaveModel> vedioSaveModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"1","2",null,level2_type);
            List<SaveModel> vedioSaveModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL,"16",null,level2_type);
            JSONArray array = new JSONArray();
            List<String> list = new ArrayList<>();
@ -196,7 +196,7 @@ public class StatisticsEsService {
                Double synegy =0.0;
                if (index.equalsIgnoreCase("3")){
                    specialist = 0.0;
                }else if (index.equalsIgnoreCase("1")){
                }else if (index.equalsIgnoreCase("5")){
                    for (SaveModel saveModel:specialistSaveModels){
                        if (level2_type.equals(SaveModel.deptLevel)){
                            if (StringUtils.isNoneBlank(saveModel.getDept())&&code.equalsIgnoreCase(saveModel.getDept())){
@ -402,15 +402,23 @@ public class StatisticsEsService {
        JSONObject object = new JSONObject();
        //协同门诊
        SaveModel saveModel1 = null;
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "2");
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "12");
        //图文复诊
        SaveModel saveModel2 = null;
        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","1");
        //saveModel2 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","1");
        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "9");
        //视频复诊
        SaveModel saveModel3 = null;
/*
        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1","2");
*/
        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "16");
        Double specialistCount =0.0;
        if(index.equalsIgnoreCase("1")){
        //专科咨询
        SaveModel saveModel4 = null;
        saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL, "1");
        specialistCount = saveModel4.getResult1();//专家咨询数量
        /*if(index.equalsIgnoreCase("5")){
            //专家咨询数量
            SaveModel saveModel = null;
            if (StringUtils.isNotEmpty(level2_type)) {
@ -422,7 +430,7 @@ public class StatisticsEsService {
        }else if (index.equalsIgnoreCase("3")){
            specialistCount = 0.0;
        }
        }*/
        Double synergyCount = saveModel1.getResult1();//协同门诊数量
        Double topicCount = saveModel2.getResult1();//图文复诊数量
@ -458,10 +466,10 @@ public class StatisticsEsService {
        //问诊总量
        SaveModel saveModel1 = null;
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL);
        int total = saveModel1.getResult1().intValue();
        List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,index,SaveModel.timeLevel_DDL,null,level2_type);
        List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,SaveModel.timeLevel_ZL,null,level2_type);
        List<JSONObject> result = new ArrayList<>();
        for (SaveModel saveModel:saveModels){
@ -516,16 +524,16 @@ public class StatisticsEsService {
    public JSONObject getOutPatientTypeline(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
        JSONObject object = new JSONObject();
        //专家咨询
        JSONArray specialistArray = dateTotalStatistics2(startDate,endDate,area,level,"4",null,SaveModel.timeLevel_ZL,null);
        JSONArray specialistArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,null);
        object.put("specialistArray",specialistArray);
        //协同复诊
        JSONArray syngeryArray = dateTotalStatistics2(startDate,endDate,area,level,index,"2",SaveModel.timeLevel_ZL,null);
        JSONArray syngeryArray = dateTotalStatistics2(startDate,endDate,area,level,index,"12",SaveModel.timeLevel_ZL,null);
        object.put("syngeryArray",syngeryArray);
        //图文复诊
        JSONArray topicArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,"1");
        JSONArray topicArray = dateTotalStatistics2(startDate,endDate,area,level,index,"9",SaveModel.timeLevel_ZL,null);
        object.put("topicArray",topicArray);
        //视频复诊
        JSONArray vedioArray = dateTotalStatistics2(startDate,endDate,area,level,index,"1",SaveModel.timeLevel_ZL,"2");
        JSONArray vedioArray = dateTotalStatistics2(startDate,endDate,area,level,index,"16",SaveModel.timeLevel_ZL,null);
        object.put("vedioArray",vedioArray);
        return object;
    }
@ -797,13 +805,13 @@ public class StatisticsEsService {
            object.put("data",array);
        }else if (flag==2){//活跃医生
            //图文
            List<SaveModel> topicModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","1",null, "6");
            List<SaveModel> topicModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "9",null, "6");
            //视频
            List<SaveModel> vedioModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","2",null, "6");
            List<SaveModel> vedioModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "16",null, "6");
            //协同
            List<SaveModel> synegyModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "2",null, "6");
            List<SaveModel> synegyModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "12",null, "6");
            //专科
            List<SaveModel> specialistModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level,"4", SaveModel.timeLevel_ZL,null, "6");
            List<SaveModel> specialistModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level,index, SaveModel.timeLevel_ZL,"1",null, "6");
            String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where CONSULT_DEPT_FLAG=1";
            if (level==4){//科室
@ -1208,7 +1216,11 @@ public class StatisticsEsService {
            for (SaveModel saveModel : saveModels) {
                String range = "";
                if (saveModel.getQuotaDate() != null) {
                    range = df.format(saveModel.getQuotaDate());
                    Calendar quotaDate = Calendar.getInstance();
                    quotaDate.setTime(saveModel.getQuotaDate());
                    quotaDate.add(Calendar.DATE, 6);
                    range = df.format(quotaDate.getTime());
                }
                JSONObject json = countResult.get(range);
//                //因为上述时间集提前一天  但是前端是显示当前时间,所以这里给调整回去
@ -1384,4 +1396,202 @@ public class StatisticsEsService {
        }
    }
    /**
     * 专科咨询统计总量
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param area 区域
     * @param level
     * @param index
     * @return
     * @throws Exception
     */
    public JSONObject getSpecialConsultHead(String startDate, String endDate, String area, int level, String index) throws Exception {
        //总量
        SaveModel saveModel = null;
        //已回复
        SaveModel saveModel1 = null;
        //已结束
        SaveModel saveModel2 = null;
        //未回复
        SaveModel saveModel3 = null;
        //居民取消
        SaveModel saveModel4 = null;
        saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, "7", SaveModel.timeLevel_DDL);
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "6", SaveModel.timeLevel_DDL,"1");
        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "6", SaveModel.timeLevel_DDL,"0");
        saveModel4 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "7", SaveModel.timeLevel_DDL,"-1");
        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel1(endDate, area, level, "7", SaveModel.timeLevel_DDL,"1");
        JSONObject object = new JSONObject();
        object.put("specialConsultTotal",saveModel.getResult1());
        object.put("haveReplyTotal",saveModel1.getResult1());
        object.put("endTotal",saveModel2.getResult1());
        object.put("notReplyTotal",saveModel3.getResult1());
        object.put("cancelTotal",saveModel4.getResult1());
        object.put("notReplyRate",getRange(saveModel3.getResult1().intValue(),saveModel.getResult1().intValue(),2));//未回复率
        return object;
    }
    /**
     * 专科咨询统计曲线
     * @param startDate
     * @param endDate
     * @param area
     * @param level
     * @param index
     * @param interval
     * @param level2_type
     * @return
     * @throws Exception
     */
    public JSONObject getSpecialConsultLine(String startDate, String endDate, String area, int level, String index,int interval, String level2_type) throws Exception {
        //问诊量
        JSONObject object = new JSONObject();
        if (interval==1){
            JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL,null);
            object.put("data",array);
        }else if (interval==2){
            JSONArray array = weekTotalStatistics(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
            object.put("data",array);
        }else if (interval==3){
            JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
            object.put("data",array);
        }
        return object;
    }
    /**
     * 专科咨询统计表格
     * @param startTime
     * @param endTime
     * @param level
     * @param area
     * @param lowLevel
     * @return
     * @throws Exception
     */
    public JSONObject getConsultingStatisticsList(String startTime,String endTime,int level, String area, String lowLevel) throws Exception {
        JSONObject result = new JSONObject();
//        timeKey= "2017-11-01 00:00:00";
        //已结束
        List<SaveModel> endTotal = elasticsearchUtil.findListDateQuotaLevel1(endTime, endTime, area, level, "7", SaveModel.timeLevel_DDL, lowLevel,"1");
        //咨询总数
        List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel0(endTime, endTime, area, level, "6", SaveModel.timeLevel_DDL, lowLevel);
        //未回复数
        List<SaveModel> noRelyTotal = elasticsearchUtil.findListDateQuotaLevel1(endTime, endTime, area, level, "6", SaveModel.timeLevel_DDL, lowLevel,"0");
//        JSONArray rely = new JSONArray(relyVal);
//        JSONArray total = new JSONArray(relyTotal);
//        JSONArray noRely = new JSONArray(noRelyTotal);
        result.put("resultList", getCoutList(level, lowLevel, endTotal, total, noRelyTotal));
        return result;
    }
    public List<Map<String, Object>> getCoutList(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> noRely) {
        Map<String, Object> relyMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
        Map<String, Object> noRelyMap = new HashMap<>();
        org.json.JSONObject result = new org.json.JSONObject();
        String low_level = StringUtils.isEmpty(lowLevel) ? String.valueOf(level + 1) : lowLevel;
        //转换结束数
        for (SaveModel saveModel : endConsult) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                relyMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                relyMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                relyMap.put(saveModel.getHospital(), saveModel);
            }
        }
        ;
        //转换总咨询数
        for (SaveModel saveModel : total) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                totalMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                totalMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                totalMap.put(saveModel.getHospital(), saveModel);
            }
        }
        ;
        //转换已结束
        for (SaveModel saveModel : noRely) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                noRelyMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                noRelyMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                noRelyMap.put(saveModel.getHospital(), saveModel);
            }
        }
        ;
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            SaveModel relyRs = (SaveModel) relyMap.get(key);
            SaveModel totalRs = (SaveModel) totalMap.get(key);
            SaveModel onRelyRs = (SaveModel) noRelyMap.get(key);
            if (relyRs == null || totalRs == null || onRelyRs == null) {
                continue;
            }
            //合并结果集
            Integer totalNm = totalRs.getResult2().intValue();
            Integer endNm = relyRs.getResult2().intValue();
            Integer noRelyNm = onRelyRs.getResult2().intValue();
//            rs.put("name", relyRs.get(area+"Name"));
            if (SaveModel.doctorLevel.equals(low_level)) {
                rs.put("name", relyRs.getDoctorName());
            } else if (SaveModel.deptLevel.equals(low_level)) {
                rs.put("name", relyRs.getDeptName());
            } else if (SaveModel.OrgLevel.equals(low_level)) {
                rs.put("name", relyRs.getHospitalName());
            }
            rs.put("noRelyCount", noRelyNm);
            rs.put("endCount", endNm);
            rs.put("total", totalNm);
            rs.put("code", key);
            if (totalNm != null && totalNm != 0) {
                if (endNm != null && endNm != 0) {
                    double rr = (double) endNm / totalNm * 100;
                    DecimalFormat df = new DecimalFormat("0.00");
                    rs.put("endRate", df.format(rr) + "%");
                    rs.put("endDoubleRate", rr);
                } else {
                    rs.put("endRate", "0.00%");
                    rs.put("endDoubleRate", 0.0);
                }
                if (noRelyNm != null && noRelyNm != 0) {
                    double rr = (double) noRelyNm / totalNm * 100;
                    DecimalFormat df = new DecimalFormat("0.00");
                    rs.put("noRelyRate", df.format(rr) + "%");
                    rs.put("noRelyDoubleRate", rr);
                } else {
                    rs.put("noRelyRate", "0.00%");
                    rs.put("noRelyDoubleRate", 0.0);
                }
            } else {
                rs.put("endRate", "0.00%");
                rs.put("endDoubleRate", 0.0);
                rs.put("noRelyRate", "0.00%");
                rs.put("noRelyDoubleRate", 0.0);
            }
            resultMaps.add(rs);
        }
        //根据为回复数排序
        Collections.sort(resultMaps, new Comparator<Map<String, Object>>() {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                return (Integer) o1.get("total") < (Integer) o2.get("total") ? 1 : ((Integer) o1.get("total") == (Integer) o2.get("total") ? 0 : -1);
            }
        });
        return resultMaps;
    }
}

+ 3 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -645,6 +645,9 @@ public class BaseHospitalRequestMapping {
        public static final String doctorStatictis = "/doctorStatictis";
        public static final String doctorTotal = "/doctorTotal";
        public static final String doctorStatictisExcel = "/doctorStatictisExcel";
        public static final String specialConsultHead = "/specialConsultHead";
        public static final String specialConsultLine = "/specialConsultLine";
        public static final String specialConsultExcel= "/specialConsultExcel";
    }

+ 89 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/statistics/EsStatisticsEndpoint.java

@ -267,4 +267,93 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
        }
        return success(result);
    }
    /**
     * 专科咨询列表
     * @param startDate
     * @param endDate
     * @param area
     * @param level 2 市  3区  4医院 5、科室 6医生
     * @return
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.specialConsultHead)
    @ApiOperation(value = " 专科咨询分析-头部")
    public ObjEnvelop specialConsultHead(
            @RequestParam(required = true) String startDate,
            @RequestParam(required = true) String endDate,
            @RequestParam(required = true) String area,
            @RequestParam(required = true) int level,
            @RequestParam(required = true) String index) {
        //新版与旧版统计适配
        JSONObject result = new JSONObject();
        try {
            result = statisticsEsService.getSpecialConsultHead(startDate, endDate, area, level, index);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success(result);
    }
    /**
     * 专科咨询列表
     * @param startDate
     * @param endDate
     * @param area
     * @param level 2 市  3区  4医院 5、科室 6医生
     * @return
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.specialConsultLine)
    @ApiOperation(value = "专科咨询分析曲线")
    public ObjEnvelop specialConsultLine(
            @RequestParam(required = true) String startDate,
            @RequestParam(required = true) String endDate,
            @RequestParam(required = true) String area,
            @RequestParam(required = true) int level,
            @RequestParam(required = true) String index,
            @RequestParam(required = false)int interval,
            @RequestParam(required = false) String level2_type) {
        JSONObject result = new JSONObject();
        try {
            result= statisticsEsService.getSpecialConsultLine(startDate, endDate, area, level, index, interval,level2_type);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success(result);
    }
    /**
     * 专科咨询列表
     * @param startDate
     * @param endDate
     * @param area
     * @param level 2 市  3区  4医院 5、科室 6医生
     * @param lowLevel 2 市  3区  4医院 5、科室 6医生
     * @return
     */
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.specialConsultExcel)
    @ApiOperation(value = "专科咨询列表")
    public ObjEnvelop specialConsultExcel(
            @RequestParam(required = true) String startDate,
            @RequestParam(required = true) String endDate,
            @RequestParam(required = true) String area,
            @RequestParam(required = true) int level,
            @RequestParam(required = true) String lowLevel) {
        JSONObject result = new JSONObject();
        try {
            result= statisticsEsService.getConsultingStatisticsList(startDate, endDate,level,area,lowLevel);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success(result);
    }
}

+ 8 - 8
svr/svr-internet-hospital/src/main/resources/application.yml

@ -488,7 +488,7 @@ hospital:
  SourceSysCode: S60
  TargetSysCode: S01
im:
  im_list_get: http://172.16.1.42:3000/
  im_list_get: http://192.168.103.150:3000/
  data_base_name: im
# 上传文件临时路径配置
@ -558,7 +558,7 @@ hospital:
  SourceSysCode: S60
  TargetSysCode: S01
im:
  im_list_get: http://172.16.1.42:3000/
  im_list_get: http://172.16.100.241:3000/
  data_base_name: im
# 上传文件临时路径配置
@ -570,13 +570,13 @@ FileTempPath:
es:
  pwflag: 1 # 1需要密码,2不需要密码
  index:
    Statistics: hlw_quota_test
    Statistics: hlw_quota_prod
  type:
    Statistics: hlw_quota_test
    Statistics: hlw_quota_prod
  host:  http://172.16.100.240:9200
  tHost: 172.16.100.240:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  clusterName: lion
  securityUser: jkzlehr:jkzlehr
#是否开启i健康接口 0关闭,1开启
testPattern:
@ -646,9 +646,9 @@ wlyy:
es:
  pwflag: 0 # 1需要密码,0不需要密码
  index:
    Statistics: hlw_quota_test
    Statistics: hlw_quota_prod
  type:
    Statistics: hlw_quota_test
    Statistics: hlw_quota_prod
  host:  http://172.16.100.240:9200
  tHost: 172.16.100.240:9300
  clusterName: jkzl