Переглянути джерело

长处方优化--配送--中部柱状图增加日/周

zd_123 7 роки тому
батько
коміт
184d5c397f

+ 70 - 21
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -3915,33 +3915,64 @@ public class StatisticsESService {
     * @param type    1.自取,2.快递配送,3.健管师配送
     * @return
     */
    public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type) throws Exception {
        String index62 = "62";//统计长处方配送方式和疾病维度
        String index67 = "67";//统计长处方配送方式维度
    public List<Map<String, Object>> getPrescriptionDispatchingHistogram(int level, String area, String disease, String type,int interval) throws Exception {
        //统计长处方配送方式和疾病维度
        String index62 = "62";
        //统计长处方配送方式维度
        String index67 = "67";
        String startTime = "";
        String endTime = "";
        List<Map<String, Object>> rs = new ArrayList<>();
        Calendar dd = Calendar.getInstance();//定义日期实例
        //定义日期实例
        Calendar dd = Calendar.getInstance();
        Date endDate = new Date();
        dd.setTime(endDate);
        for (int i = 1; i < 7; i++) {
            Map<String, Object> mc = new HashedMap();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            String date = sdf.format(dd.getTime());
            mc.put("month", date);
            mc.put("count", 0.0D);
            dd.add(Calendar.MONTH, -1);
            rs.add(mc);
        //六个月前的开始时间
        Date startDate = DateUtil.getNextMonthReturnDate(endDate,-6);
        if (interval==1){
            rs = DateUtil.findDates(startDate,endDate);
            //加入当天数据
            Map<String,Object> dateMap = new HashedMap();
            dateMap.put("date",dateFormat.format(endDate));
            dateMap.put("avg",0);
            dateMap.put("count", 0.0D);
            rs.add(dateMap);
        }
        if (interval==2){
            rs = DateUtil.findDateASWeeks(startDate,endDate);
            String MondayWeekDateStr = DateUtil.getMondayOfThisDate(startDate);
            Date MondayWeekDate = dateFormat.parse(MondayWeekDateStr);
            if (startDate.compareTo(MondayWeekDate)==1){
                //开始时间不是当周的周一,则加入本周周一的时间
                Map<String,Object> dateMap = new HashedMap();
                dateMap.put("date",MondayWeekDateStr);
                dateMap.put("avg",0);
                dateMap.put("count", 0.0D);
                rs.add(0,dateMap);
            }
            startTime = dateFormat.format(startDate);
            endTime = dateFormat.format(endDate);
        }else if (interval==3){
            for (int i = 1; i < 7; i++) {
                Map<String, Object> mc = new HashedMap();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                String date = sdf.format(dd.getTime());
                mc.put("month", date);
                mc.put("count", 0.0D);
                dd.add(Calendar.MONTH, -1);
                rs.add(mc);
            }
            startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
            endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        }
        String startTime = DateUtil.dateToStr(dd.getTime(), "YYYY-MM-dd HH:mm:ss");
        String endTime = DateUtil.dateToStr(new Date(), "YYYY-MM-dd HH:mm:ss");
        List<SaveModel> resultList = new ArrayList<>();
        if (StringUtils.isNotBlank(disease)) {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index62, SaveModel.timeLevel_ZL, SaveModel.interval_month, type,disease);
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel2(startTime, endTime, area, level, index62, SaveModel.timeLevel_ZL, String.valueOf(interval), type,disease);
        } else {
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index67, SaveModel.timeLevel_ZL, SaveModel.interval_month, type);
            resultList = elasticsearchUtil.findLineChartDateQuotaLevel1(startTime, endTime, area, level, index67, SaveModel.timeLevel_ZL, String.valueOf(interval), type);
        }
        for (Map<String, Object> m : rs) {
@ -3949,9 +3980,16 @@ public class StatisticsESService {
            while (iterator.hasNext()) {
                SaveModel saveModel = (SaveModel) iterator.next();
                if (saveModel.getQuotaDate() != null) {
                    String monthKey = (String) m.get("month");
                    String monthKeyEs = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                    if (monthKey.equals(monthKeyEs)) {
                    String key = "";
                    String EsKey ="";
                    if (interval != 3){
                        key=String.valueOf(m.get("date"));
                        EsKey = DateUtil.dateToStr(saveModel.getQuotaDate(),"yyyy-MM-dd");
                    }else {
                        key=String.valueOf(m.get("month"));
                        EsKey = DateUtil.changeQuotaDate(saveModel.getQuotaDate());
                    }
                    if (key.equals(EsKey)) {
                        m.put("count", saveModel.getResult2());
                    }
                }
@ -4628,6 +4666,17 @@ public class StatisticsESService {
        return jo;
    }
    /**
     * 线上缴费的情况
     * @param area
     * @param level
     * @param index
     * @param sort
     * @param lowLevel
     * @param year
     * @return
     * @throws Exception
     */
    public JSONArray getLowLevelSignPayOnline(String area, int level, String index, int sort, String lowLevel, String year) throws Exception {
        String timeKey = "";

+ 39 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/DateUtil.java

@ -907,6 +907,7 @@ public class DateUtil {
		Map<String,Object> st = new HashedMap();
		st.put("date",DateUtil.dateToStr(dBegin,"yyyy-MM-dd"));
		st.put("avg",0);
		st.put("count", 0);
		lDate.add(st);
		Calendar calBegin = Calendar.getInstance();
@ -927,6 +928,7 @@ public class DateUtil {
			Map<String,Object> stt = new HashedMap();
			stt.put("date",DateUtil.dateToStr(calBegin.getTime(),"yyyy-MM-dd"));
			stt.put("avg",0);
			stt.put("count", 0);
			lDate.add(stt);
		}
		return lDate;
@ -943,6 +945,7 @@ public class DateUtil {
			Map<String,Object> st = new HashedMap();
			st.put("date",DateUtil.dateToStr(dBegin,"yyyy-MM-dd"));
			st.put("avg",0);
			st.put("count",0);
			lDate.add(st);
		}
@ -954,13 +957,17 @@ public class DateUtil {
		while (dEnd.after(calBegin.getTime())) {
			// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			if(!dEnd.after(calBegin.getTime())){
			/*if(!dEnd.after(calBegin.getTime())){
				break;
			}*/
			if (dEnd.compareTo(calBegin.getTime())==-1){
				break;
			}
			if(checkDateMonday(calBegin)){
				Map<String,Object> stt = new HashedMap();
				stt.put("date",DateUtil.dateToStr(calBegin.getTime(),"yyyy-MM-dd"));
				stt.put("avg",0);
				stt.put("count",0);
				lDate.add(stt);
			}
		}
@ -1114,4 +1121,35 @@ public class DateUtil {
		return new SimpleDateFormat(YYYY_MM).format(date);
	}
	/**
	 * 获取周一
	 * @return
	 */
	public static String getMondayOfThisDate(Date date) {
		SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
		if (day_of_week == 0)
			day_of_week = 7;
		c.add(Calendar.DATE, -day_of_week + 1);
		return df2.format(c.getTime());
	}
	/**
	 * 得到本周周日
	 *
	 * @return yyyy-MM-dd
	 */
	public static String getSundayOfThisDate(Date date) {
		SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
		if (day_of_week == 0)
			day_of_week = 7;
		c.add(Calendar.DATE, -day_of_week + 7);
		return df2.format(c.getTime());
	}
}

+ 4 - 4
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -1841,9 +1841,10 @@ public class EsStatisticsController extends BaseController {
    public String getPrescriptionDispatchingHistogram(@ApiParam(name="level", value="级别") @RequestParam(required = true)String level,
                                                      @ApiParam(name="area", value="级别编码") @RequestParam(required = true)String area,
                                                      @ApiParam(name="disease", value="疾病") @RequestParam(required = false)String disease,
                                                      @ApiParam(name="type", value="1.自取,2.快递配送,3.健管师配送") @RequestParam(required = true)String type){
                                                      @ApiParam(name="type", value="1.自取,2.快递配送,3.健管师配送") @RequestParam(required = true)String type,
                                                      @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = false,defaultValue = "1")int interval){
        try{
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionDispatchingHistogram(elasticsearchUtil.changeLevel(Integer.valueOf(level)),area,disease,type));
            return write(200, "查询成功", "data", statisticsESService.getPrescriptionDispatchingHistogram(elasticsearchUtil.changeLevel(Integer.valueOf(level)),area,disease,type,interval));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");
@ -2017,8 +2018,7 @@ public class EsStatisticsController extends BaseController {
            if (org.springframework.util.StringUtils.isEmpty(year)) {
                year = Constant.getNowYear();
            }
            result.put("data" , statisticsESService.getSignPayOnline(elasticsearchUtil.changeLevel(level),area,year));
            return write(200, "查询成功", "data", result);
            return write(200, "查询成功", "data", statisticsESService.getSignPayOnline(elasticsearchUtil.changeLevel(level),area,year));
        }catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");