wangzhinan 1 рік тому
батько
коміт
63b5c9a339

+ 244 - 65
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -4278,6 +4278,130 @@ public class StatisticsEsService {
        return resultMaps;
    }
    /**
     * 文章数据转换
     * @param level
     * @param lowLevel
     * @param endConsult
     * @param total
     * @return
     */
    public List<Map<String, Object>> getArticleCoutList(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> haveReceive,List<SaveModel> noReceive,List<SaveModel> concle) {
        Map<String, Object> endMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
        Map<String, Object> noReceiveMap = new HashMap<>();
        Map<String, Object> concleMap = new HashMap<>();
        Map<String, Object> haveReceiveMap = 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)) {
                endMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                endMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                endMap.put(saveModel.getHospital(), saveModel);
            }
        }
        //转换已接诊
        for (SaveModel saveModel : haveReceive) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                haveReceiveMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                haveReceiveMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                haveReceiveMap.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 : noReceive) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                noReceiveMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                noReceiveMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                noReceiveMap.put(saveModel.getHospital(), saveModel);
            }
        }
        //转换已取消
        for (SaveModel saveModel : concle) {
            if (SaveModel.doctorLevel.equals(low_level)) {
                concleMap.put(saveModel.getDoctor(), saveModel);
            } else if (SaveModel.deptLevel.equals(low_level)) {
                concleMap.put(saveModel.getDept(), saveModel);
            }else if (SaveModel.OrgLevel.equals(low_level)) {
                concleMap.put(saveModel.getHospital(), saveModel);
            }
        }
        List<Map<String, Object>> resultMaps = new ArrayList<>();
        for (String key : totalMap.keySet()) {
            Map<String, Object> rs = new HashMap<>();
            SaveModel endRs = (SaveModel) endMap.get(key);
            SaveModel totalRs = (SaveModel) totalMap.get(key);
            SaveModel concleRs = (SaveModel) concleMap.get(key);
            SaveModel noReceiveRs = (SaveModel) noReceiveMap.get(key);
            SaveModel haveReceiveRs = (SaveModel) haveReceiveMap.get(key);
            endRs = endRs==null?new SaveModel():endRs;
            totalRs = totalRs==null?new SaveModel():totalRs;
            concleRs = concleRs==null?new SaveModel():concleRs;
            noReceiveRs = noReceiveRs==null?new SaveModel():noReceiveRs;
            haveReceiveRs = haveReceiveRs==null?new SaveModel():haveReceiveRs;
            /*if (endRs == null || totalRs == null || concleRs == null || noReceiveRs==null || haveReceiveRs == null) {
                continue;
            }*/
            //合并结果集
            Integer totalNm = totalRs.getResult2().intValue();
            Integer endNm = endRs.getResult2().intValue();
            Integer concleNm = concleRs.getResult2().intValue();
            Integer noReceiveNm = noReceiveRs.getResult2().intValue();
            Integer haveReceiveNm = haveReceiveRs.getResult2().intValue();
//            rs.put("name", relyRs.get(area+"Name"));
            if (SaveModel.doctorLevel.equals(low_level)) {
                rs.put("name", totalRs.getDoctorName());
            } else if (SaveModel.deptLevel.equals(low_level)) {
                rs.put("name", totalRs.getDeptName());
            } else if (SaveModel.OrgLevel.equals(low_level)) {
                rs.put("name", totalRs.getHospitalName());
            }
            rs.put("concleCount", concleNm);
            rs.put("endCount", endNm);
            rs.put("total", totalNm);
            rs.put("noReceiveCount", noReceiveNm);
            rs.put("haveReceiveCount", haveReceiveNm);
            rs.put("endAndReciveCount",endNm+haveReceiveNm);
            rs.put("code", key);
            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;
    }
    public List<Map<String, Object>> getCoutListPC(Integer level, String lowLevel, List<SaveModel> endConsult, List<SaveModel> total, List<SaveModel> noRely,List<SaveModel> reply,List<SaveModel> coming) {
        Map<String, Object> endMap = new HashMap<>();
        Map<String, Object> totalMap = new HashMap<>();
@ -5531,29 +5655,29 @@ public class StatisticsEsService {
    /**
     * 医生圈-文章统计头部
     * @param  flag 0自定义 1本月2近半年3本年
     * @param startDate
     * @param endDate
     * @param area
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param area  区域编码 如 level2 area传市编码
     * @param level 2 市  3区  4医院 5、科室 6医生
     * @param index
     * @param index 指标
     * @param level2_type
     * @return
     * @throws Exception
     */
    public JSONObject getArticleTotalHead(Integer flag,String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
    public JSONObject getArticleTotalHead(Integer flag,String startDate, String endDate, String area, int level) throws Exception {
        //发布量
        SaveModel saveModel = null;
        //收藏量
        //发布量环比;
        SaveModel saveModel1 = null;
        //浏览量
        //发布同比;
        SaveModel saveModel2 = null;
        //发布量环比;
        //收藏量
        SaveModel saveModel3 = null;
        //发布同比;
        SaveModel saveModel4 = null;
        //收藏量环比
        SaveModel saveModel5 = null;
        SaveModel saveModel4 = null;
        //收藏量同比
        SaveModel saveModel5 = null;
        //浏览量
        SaveModel saveModel6 = null;
        //浏览量环比
        SaveModel saveModel7 = null;
@ -5577,62 +5701,117 @@ public class StatisticsEsService {
        String linkStartDate = DateUtil.getMonthDate(DateUtil.strToDateLong(startDate),-months);
        String linkEndDate = DateUtil.getMonthDate(DateUtil.strToDateLong(endDate),-months);
        JSONObject object = new JSONObject();
        //发布量统计
        saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, "75", SaveModel.timeLevel_ZL);
        //发布量环比
        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(linkStartDate, linkEndDate, area, level, "75", SaveModel.timeLevel_ZL);
        //发布量同比
        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(sameStartDate, sameEndDate, area, level, "75", SaveModel.timeLevel_ZL);
        Integer publishTotal= saveModel!=null?saveModel.getResult1().intValue():0;
        Integer publishLinkTotal = saveModel1!=null?saveModel1.getResult1().intValue():0;
        Integer publishSameTotal = saveModel2!=null?saveModel2.getResult1().intValue():0;
        object.put("publishTotal",publishTotal);//发布量
        object.put("publishLink",getTwoRange(publishTotal,publishLinkTotal,0));//环比
        object.put("publishSame",getTwoRange(publishTotal,publishSameTotal,0));//同比
        //收藏量统计
        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL,null,"3");
        //收藏量环比
        saveModel4 = elasticsearchUtil.findOneDateQuotaLevel2(linkStartDate, linkEndDate, area, level, "76", SaveModel.timeLevel_ZL,null,"3");
        //收藏量同比
        saveModel5 = elasticsearchUtil.findOneDateQuotaLevel1(sameStartDate, sameEndDate, area, level, "76", SaveModel.timeLevel_ZL,null,"3");
        Integer collectTotal = saveModel3!=null?saveModel3.getResult1().intValue():0;
        Integer collectLinkTotal = saveModel4!=null?saveModel4.getResult1().intValue():0;
        Integer collectSameTotal = saveModel5!=null?saveModel5.getResult1().intValue():0;
        object.put("collectTotal",collectTotal);//发布量
        object.put("collectLink",getTwoRange(collectTotal,collectLinkTotal,0));//环比
        object.put("collectSame",getTwoRange(collectTotal,collectSameTotal,0));//同比
        return object;
    }
//       /* saveModel = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, indexes[0], SaveModel.timeLevel_DDL);
//        saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, indexes[1], SaveModel.timeLevel_DDL);
//        saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, indexes[2]+",21", SaveModel.timeLevel_DDL);
//        JSONObject object = new JSONObject();
//        String yesterday = DateUtil.getNextDay(endDate, -1);//昨天
//        String lastDay = DateUtil.getNextDay(endDate, -7);//上周的今天
//        String weekFirstDay = DateUtil.getMondayOfThisWeek();//周一
//        String weekLastDay = DateUtil.getSundayOfThisWeek();//周日
//        JSONArray array = dateTotalStatistics2(weekFirstDay,weekLastDay,area,level,indexes[2]+",21",null,SaveModel.timeLevel_ZL,null);//本周量
//        Double prices = 0.0;
//        for (int i=0;i<array.size();i++){
//            JSONObject jsonObject = array.getJSONObject(i);
//            prices +=jsonObject.getDouble("num");
//        }
//        Double num = prices/array.size();
//        DecimalFormat df = new DecimalFormat("0.00");
//        String str = df.format(num);
//        object.put("dayPrice",str);//日均收入
//        saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(yesterday, yesterday, area, level, indexes[2]+",21", SaveModel.timeLevel_DDL);
//        saveModel4 = elasticsearchUtil.findOneDateQuotaLevel0(lastDay, lastDay, area, level, indexes[2]+",21", SaveModel.timeLevel_DDL);
//        object.put("outPatientCount",saveModel.getResult2().longValue());//问诊量
//        object.put("prescriptionCount",saveModel1.getResult2().longValue());//开方量
//        object.put("priceTotal",saveModel2.getResult1().longValue());//总收入
//        object.put("priceDayRate",baseEvaluateScoreService.judgeScore(saveModel2.getResult1().doubleValue(),saveModel3.getResult1().doubleValue()));
//        object.put("priceWeekRate",baseEvaluateScoreService.judgeScore(saveModel2.getResult1().doubleValue(),saveModel4.getResult1().doubleValue()));
//        String prescriptionRate = getRange(saveModel1.getResult2().intValue(), saveModel.getResult2().intValue(),0);
//        object.put("prescriptionRate",prescriptionRate);//开方率
//        String startTime = DateUtil.getStringDateShort()+" 00:00:00";
//        String endTime = DateUtil.getStringDateShort() +" 23:59:59";
//        String sql = "";
//        if("xm_ykyy_wx".equalsIgnoreCase(wxId)){
//            sql = "select count(*) as \"total\" from wlyy_consult_outpatient_info o where  o.create_time >= to_date('"+startTime+"','yyyy-mm-dd hh24:mi:ss') and o.create_time <= to_date('"+endTime+"','yyyy-mm-dd hh24:mi:ss')";
//        }else {
//            sql = "select count(*) as \"total\" from wlyy_consult_outpatient_info o where  o.create_time >='"+startTime+"' and o.create_time <='"+endTime+"'";
//        }
//        if (level==4){
//            sql += " and o.doctor IN (SELECT doctor_code as \"doctor_code\" FROM `base_doctor_hospital` dh where dh.org_code ='"+area+"' and dh.del=1)";
//        }if (level==2){
//            sql += " AND 1=1 ";
//        }else if (level==5){
//            sql += " and o.doctor IN (SELECT doctor_code as \"doctor_code\" FROM `base_doctor_hospital` dh where dh.dept_code ='"+area+"' and dh.del=1)";
//        }else if (level==6){
//            sql +=" and o.doctor='"+area+"'";
//        }
//        List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sql);
//        Long count = 0L;
//        if(rstotal!=null&&rstotal.size()>0){
//            count =Long.parseLong(rstotal.get(0).get("total").toString()) ;
//        }
//        object.put("todayOutPatientCount",count);//今日问诊量
//        Map<String, Object> scoreAndPercentage = baseEvaluateScoreService.getScoreAndPercentage(area, level);
//        object.put("totalAvgScore",scoreAndPercentage.get("totalAvgScore"));//服务总评分
//        object.put("weekJudge",scoreAndPercentage.get("weekJudge"));//周同比
//        object.put("dayJudge",scoreAndPercentage.get("dayJudge"));//日环比*/
    /**\
     * 发布量柱状图
     *
     * @param flag 0自定义 1本月2近半年3本年
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param area code  厦门市 350200 code 和level是对应的
     * @param lowLevel  下一级区域等级   1 省 2 市 3 区县 4 机构 5团队
     * @return
     */
    public List<SaveModel> getArticlePublishList(Integer flag,String startDate,String endDate,int level, String area, String lowLevel) throws Exception {
        if (flag==1){
            startDate = DateUtil.getFirstMonthDay() +" 00:00:00";
            endDate = DateUtil.getLastMonthDay()+" 23:59:59";
        } else if (flag==2) {
            startDate = DateUtil.getMonthDate(new Date(),-6)+" 00:00:00";
            endDate = DateUtil.getStringDateShort()+" 23:59:59";
        }else if (flag==3){
            startDate = DateUtil.getCurrentYearStartTime()+" 00:00:00";
            endDate = DateUtil.getCurrentYearEndTime() +" 23:59:59";
        }
        List<SaveModel> saveModels = elasticsearchUtil.findListDateQuotaLevel0(startDate, endDate, area, level,"75", SaveModel.timeLevel_ZL, lowLevel);
        return saveModels;
    }
    /**
     * 文章互动情况
     *
     * @param flag 0自定义 1本月2近半年3本年
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @param level 等级 1 省 2 市 3 区县 4 机构 5团队
     * @param area code  厦门市 350200 code 和level是对应的
     * @return
     * @throws Exception
     */
    public JSONObject getArticleOperateDateLine(Integer flag,String startDate,String endDate,int level, String area) throws Exception {
        if (flag==1){
            startDate = DateUtil.getFirstMonthDay() +" 00:00:00";
            endDate = DateUtil.getLastMonthDay()+" 23:59:59";
        } else if (flag==2) {
            startDate = DateUtil.getMonthDate(new Date(),-6)+" 00:00:00";
            endDate = DateUtil.getStringDateShort()+" 23:59:59";
        }else if (flag==3){
            startDate = DateUtil.getCurrentYearStartTime()+" 00:00:00";
            endDate = DateUtil.getCurrentYearEndTime() +" 23:59:59";
        }
        JSONObject object = new JSONObject();
        JSONArray array = dateTotalStatistics2(startDate,endDate,area,level,"76",null,SaveModel.timeLevel_ZL,"1");//评论
        object.put("pinglunTotalList",array);
        JSONArray array1 = dateTotalStatistics2(startDate,endDate,area,level,"76",null,SaveModel.timeLevel_ZL,"2");//点赞
        object.put("dianzangTotalList",array);
        JSONArray array2 = dateTotalStatistics2(startDate,endDate,area,level,"76",null,SaveModel.timeLevel_ZL,"3");//收藏
        object.put("collectTotalList",array);
        return object;
    }
    public JSONObject getArticleExcel(Integer flag,String startDate,String endDate,int level, String area, String lowLevel,String lowCode) throws Exception {
        if (flag==1){
            startDate = DateUtil.getFirstMonthDay() +" 00:00:00";
            endDate = DateUtil.getLastMonthDay()+" 23:59:59";
        } else if (flag==2) {
            startDate = DateUtil.getMonthDate(new Date(),-6)+" 00:00:00";
            endDate = DateUtil.getStringDateShort()+" 23:59:59";
        }else if (flag==3){
            startDate = DateUtil.getCurrentYearStartTime()+" 00:00:00";
            endDate = DateUtil.getCurrentYearEndTime() +" 23:59:59";
        }
        //文章发布数
        List<SaveModel> total = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate,level, area, "75", SaveModel.timeLevel_ZL, lowLevel,lowCode);//总数
        //文章评论数
        List<SaveModel> pinlunTotal = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL, lowLevel,lowCode,"1");//评论
        //文章点赞数
        List<SaveModel> dianzangTotal = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL, lowLevel,lowCode,"2");//点赞
        //文章收藏数
        List<SaveModel> collectTotal = elasticsearchUtil.findListDateQuotaLevel2(startDate, endDate, area, level, "76", SaveModel.timeLevel_ZL, lowLevel,lowCode,"3");//收藏
/*
        result.put("resultList", getCoutListPC1(level, lowLevel, endTotal, total, haveReceiveTotal,noReceiveTotal,concleTotal));
*/
        return null;
    }
}

+ 61 - 25
business/es-service/src/main/java/com/yihu/jw/es/util/ElasticsearchUtil.java

@ -783,20 +783,30 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') as quotaDate");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') as quotaDate");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') as quotaDate");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,sum(result1) as result1, sum(result2) as result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
        }else if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,sum(result1) as result1, sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,sum(result1) as result1, sum(result2) as result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital ,hospitalName as hospitalName,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select hospital as hospital ,hospitalName as hospitalName,sum(result1) as result1,sum(result2) as result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName astownName,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select town as town,townName astownName,sum(result1) as result1,sum(result2) as result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
            sql.append("select city,cityName,sum(result1) result1,sum(result2) result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
        }
@ -1206,40 +1216,40 @@ public class ElasticsearchUtil {
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') as quotaDate");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') as quotaDate");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') as quotaDate");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        }
        if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1335,40 +1345,40 @@ public class ElasticsearchUtil {
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') as quotaDate ");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        }
        if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+"  from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1463,8 +1473,18 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') as quotaDate ");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 "+condition+" from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1473,7 +1493,7 @@ public class ElasticsearchUtil {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        }else if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2"+condition+" from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1491,7 +1511,7 @@ public class ElasticsearchUtil {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2"+condition+" from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1500,7 +1520,7 @@ public class ElasticsearchUtil {
                groupBy.append(",slaveKey2,slaveKey2Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2"+condition+" from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1)) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1734,6 +1754,16 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') as quotaDate ");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') as quotaDate ");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,slaveKey2 as slaveKey2,slaveKey2Name as slaveKey2Name,sum(result1) as result1,sum(result2) as result2 from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
@ -2321,6 +2351,9 @@ public class ElasticsearchUtil {
     */
    public SaveModel findOneDateQuotaLevel0(String startDate, String endDate, String area, int level, String index, String timelevel) throws Exception {
        List list = findDateQuotaLevel0(startDate, endDate, area, level, index, timelevel, null, null);
        if (list==null||list.size()==0){
            return null;
        }
        return (SaveModel) list.get(0);
    }
@ -2413,6 +2446,9 @@ public class ElasticsearchUtil {
            slaveKey1 = commonParams;
        }
        List list = findDateQuotaLevel1(startDate, endDate, area, level, index, timelevel, slaveKey1, null, null);
        if (list==null||list.size()==0){
            return null;
        }
        return (SaveModel) list.get(0);
    }
    public SaveModel findOneDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1,String areaLevel) throws Exception {

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

@ -1485,6 +1485,9 @@ public class BaseHospitalRequestMapping {
        public static final String appCenterCircular ="/appCenterCircular";
        public static final String appPriceHead ="/appPriceHead";
        public static final String appPrescriptionHead="/appPrescriptionHead";
        public static final String articleTotal = "/articleTotal";
        public static final String getArticlePublishList="/getArticlePublishList";
        public static final String getArticleOperateDateLine = "/getArticleOperateDateLine";
    }

+ 21 - 28
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -1190,24 +1190,28 @@ public class DateUtil {
    public static List<Map<String,Object>> findDates(Date dBegin, Date dEnd) {
        List<Map<String,Object>> lDate = new ArrayList();
        Map<String,Object> st = new HashedMap();
        st.put("date",dateToStr(dBegin,"yyyy-MM-dd"));
        st.put("date",DateUtil.dateToStr(dBegin,"yyyy-MM-dd"));
        st.put("avg",0);
        st.put("count", 0);
        lDate.add(st);
        LocalDate calBegin = dateToLocalDate(dBegin);
        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);
        LocalDate calEnd = dateToLocalDate(dEnd);
        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);
        // 测试此日期是否在指定日期之后
        while (calEnd.until(calBegin,ChronoUnit.DAYS)>0) {
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            calBegin.plusDays(1);
            if(calEnd.until(calBegin,ChronoUnit.DAYS)<0){
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            if(!dEnd.after(calBegin.getTime())){
                break;
            }
            Map<String,Object> stt = new HashedMap();
            stt.put("date",dateFormatter.format(calBegin));
            stt.put("date",DateUtil.dateToStr(calBegin.getTime(),"yyyy-MM-dd"));
            stt.put("avg",0);
            stt.put("count", 0);
            lDate.add(stt);
@ -1512,17 +1516,11 @@ public class DateUtil {
     */
    public static String getFirstMonthDay()
    {
        Date dt = new Date();
        //获取当前月第一天:
        Calendar ca = Calendar.getInstance();
        ca.setTime(dt);
        // ca.add(Calendar.MONTH, 0); 此方法可以获取前n月或后n月
        ca.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
        ca.set(Calendar.HOUR, 0);
        ca.set(Calendar.MINUTE, 0);
        ca.set(Calendar.SECOND, 0);
        return dateToStrShort(ca.getTime());
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        return dateToStrShort(calendar.getTime());
    }
    /**
@ -1533,16 +1531,11 @@ public class DateUtil {
     */
    public static String getLastMonthDay()
    {
        Date dt = new Date();
        //获取当前月最后一天
        Calendar ca = Calendar.getInstance();
        ca.setTime(dt);
        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
        ca.set(Calendar.HOUR, 23);
        ca.set(Calendar.MINUTE, 59);
        ca.set(Calendar.SECOND, 59);
        return  dateToStrShort(ca.getTime());
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return  dateToStrShort(calendar.getTime());
    }
    /**

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

@ -3,12 +3,15 @@ package com.yihu.jw.hospital.endpoint.statistics;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.es.service.StatisticsEsService;
import com.yihu.jw.es.util.SaveModel;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import com.yihu.jw.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -972,4 +975,75 @@ public class EsStatisticsEndpoint extends EnvelopRestEndpoint {
        }
        return success(result);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.articleTotal)
    @ApiOperation(value = " 文章头部统计")
    public ObjEnvelop getArticleTotalHead(
            @ApiParam(name = "startDate", value = "开始时间", required = false)
            @RequestParam(value = "startDate",required = false) String startDate,
            @ApiParam(name = "endDate", value = "结束时间", required = false)
            @RequestParam(value = "endDate",required = false) String endDate,
            @ApiParam(name = "area", value = "区域编码 如 level2 area传市编码", required = true)
            @RequestParam(value = "area",required = true) String area,
            @ApiParam(name = "level", value = "2 市  3区  4医院 5、科室 6医生", required = true)
            @RequestParam(value = "level",required = true) int level,
            @ApiParam(name = "flag", value = "0自定义 1本月2近半年3本年", required = true)
            @RequestParam(value = "flag",required = true) Integer flag) {
        JSONObject result = new JSONObject();
        try {
            result = statisticsEsService.getArticleTotalHead(flag,startDate, endDate, area, level);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success(result);
    }
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getArticlePublishList)
    @ApiOperation(value = " 发布量柱状图")
    public ListEnvelop getArticleTotalHead(
            @ApiParam(name = "startDate", value = "开始时间", required = false)
            @RequestParam(value = "startDate",required = false) String startDate,
            @ApiParam(name = "endDate", value = "结束时间", required = false)
            @RequestParam(value = "endDate",required = false) String endDate,
            @ApiParam(name = "area", value = "区域编码 如 level2 area传市编码", required = true)
            @RequestParam(value = "area",required = true) String area,
            @ApiParam(name = "level", value = "2 市  3区  4医院 5、科室 6医生", required = true)
            @RequestParam(value = "level",required = true) int level,
            @ApiParam(name = "lowLevel", value = "下一级区域等级   2 市  3区  4医院 5、科室 6医生", required = true)
            @RequestParam(value = "lowLevel",required = true) String lowLevel,
            @ApiParam(name = "flag", value = "0自定义 1本月2近半年3本年", required = true)
            @RequestParam(value = "flag",required = true) Integer flag) {
        try {
            return success(statisticsEsService.getArticlePublishList(flag,startDate, endDate,level,area,lowLevel));
        } catch (Exception e) {
            e.printStackTrace();
            return failedListEnvelopException(e);
        }
    }
    @GetMapping(value = BaseHospitalRequestMapping.Statistics.getArticleOperateDateLine)
    @ApiOperation(value = " 文章互动情况")
    public ObjEnvelop getArticleOperateDateLine(
            @ApiParam(name = "startDate", value = "开始时间", required = false)
            @RequestParam(value = "startDate",required = false) String startDate,
            @ApiParam(name = "endDate", value = "结束时间", required = false)
            @RequestParam(value = "endDate",required = false) String endDate,
            @ApiParam(name = "area", value = "区域编码 如 level2 area传市编码", required = true)
            @RequestParam(value = "area",required = true) String area,
            @ApiParam(name = "level", value = "2 市  3区  4医院 5、科室 6医生", required = true)
            @RequestParam(value = "level",required = true) int level,
            @ApiParam(name = "flag", value = "0自定义 1本月2近半年3本年", required = true)
            @RequestParam(value = "flag",required = true) Integer flag) {
        try {
            return success(statisticsEsService.getArticleOperateDateLine(flag,startDate, endDate,level,area));
        } catch (Exception e) {
            e.printStackTrace();
            return failedObjEnvelopException(e);
        }
    }
}