wangzhinan 1 rok temu
rodzic
commit
cfc8d94d40

+ 109 - 0
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -5526,4 +5526,113 @@ public class StatisticsEsService {
            return new JSONArray();
        }
    }
    /**
     * 医生圈-文章统计头部
     * @param  flag 0自定义 1本月2近半年3本年
     * @param startDate
     * @param endDate
     * @param area
     * @param level 2 市  3区  4医院 5、科室 6医生
     * @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 {
        //发布量
        SaveModel saveModel = null;
        //收藏量
        SaveModel saveModel1 = null;
        //浏览量
        SaveModel saveModel2 = null;
        //发布量环比;
        SaveModel saveModel3 = null;
        //发布同比;
        SaveModel saveModel4 = null;
        //收藏量环比
        SaveModel saveModel5 = null;
        //收藏量同比
        SaveModel saveModel6 = null;
        //浏览量环比
        SaveModel saveModel7 = null;
        //浏览量同比
        SaveModel saveModel8 = null;
        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";
        }
        //同比时间:
        String sameStartDate= DateUtil.getYearDate(DateUtil.strToDate(startDate))+" 00:00:00";
        String sameEndDate = DateUtil.getYearDate(DateUtil.strToDate(endDate))+" 23:59:59";
        //环比时间:
        int months = DateUtil.getMonthDiff(DateUtil.strToDateLong(startDate),DateUtil.strToDateLong(endDate));
        String linkStartDate = DateUtil.getMonthDate(DateUtil.strToDateLong(startDate),-months);
        String linkEndDate = DateUtil.getMonthDate(DateUtil.strToDateLong(endDate),-months);
        JSONObject object = new JSONObject();
//       /* 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"));//日环比*/
        return object;
    }
}

+ 135 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -1504,4 +1504,139 @@ public class DateUtil {
    public static String formatDate(Date value, String pattern) {
        return dateToStr(value,pattern);
    }
    /**
     * 获取本月第一天
     * @return
     */
    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());
    }
    /**
     * 获取本月最后一天
     *
     * @param
     * @return
     */
    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());
    }
    /**
     * 当前年的开始时间,即2012-01-01 00:00:00
     *
     * @return
     */
    public static String getCurrentYearStartTime() {
        Calendar c = Calendar.getInstance();
        Date now = null;
        try {
            c.set(Calendar.MONTH, 0);
            c.set(Calendar.DATE, 1);
            now = c.getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dateToStrShort(now);
    }
    /**
     * 当前年的结束时间,即2012-12-31 23:59:59
     *
     * @return
     */
    public  static String getCurrentYearEndTime() {
        Calendar c = Calendar.getInstance();
        Date now = null;
        try {
            c.set(Calendar.MONTH, 11);
            c.set(Calendar.DATE, 31);
            now = c.getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dateToStrShort(now);
    }
    /**
     * 同比 某个时间去年得时间
     * @param date
     * @return
     */
    public static String getYearDate(Date date){
        Calendar cal = Calendar.getInstance();
        //设置当前时间
        cal.setTime(date);
        //在当前时间基础上减一年
        cal.add(Calendar.YEAR, -1);
        return dateToStrShort(cal.getTime());
    }
    /**
     * 环比 某个时间上一期时间
     * @param date
     * @param n -2 就是上期两个月
     * @return
     */
    public static String getMonthDate(Date date,Integer n){
        Calendar cal = Calendar.getInstance();
        //设置当前时间
        cal.setTime(date);
        //在当前时间基础上减n个月
        cal.add(Calendar.MONTH, n);
        return dateToStrShort(cal.getTime());
    }
    /**
     * 获取两个日期相差的月数
     */
    public static int getMonthDiff(Date d1, Date d2) {
        Calendar c1 = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        c1.setTime(d1);
        c2.setTime(d2);
        int year1 = c1.get(Calendar.YEAR);
        int year2 = c2.get(Calendar.YEAR);
        int month1 = c1.get(Calendar.MONTH);
        int month2 = c2.get(Calendar.MONTH);
        int day1 = c1.get(Calendar.DAY_OF_MONTH);
        int day2 = c2.get(Calendar.DAY_OF_MONTH);
        // 获取年的差值
        int yearInterval = year1 - year2;
        // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
        if (month1 < month2 || month1 == month2 && day1 < day2) {
            yearInterval--;
        }
        // 获取月数差值
        int monthInterval = (month1 + 12) - month2;
        if (day1 < day2) {
            monthInterval--;
        }
        monthInterval %= 12;
        int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);
        return monthsDiff;
    }
}