Browse Source

Merge branch 'dev' of zd_123/patient-co-management into dev

trick9191 7 years ago
parent
commit
f4e3c7b330

+ 67 - 16
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -5101,26 +5101,62 @@ public class StatisticsService extends BaseService {
     * @param type 类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消
     * @return
     */
    public List<Map<String,Object>> getPrescriptionTotalHistogram(String level,String area,String disease,String type){
    public List<Map<String,Object>> getPrescriptionTotalHistogram(String level,String area,String disease,String type,int interval){
        List<Map<String,Object>> rs =new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String sql ="";
        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);
            dd.add(Calendar.MONTH,-1);
            rs.add(mc);
        String startTime ="";
        String endTime = "";
        //六个月前的开始时间
        Date startDate = DateUtil.getNextMonthReturnDate(endDate,-6);
        startDate = DateUtil.getDateShort(startDate);
        if (interval==1){
            sql = "SELECT count(1) AS count,LEFT(p.create_time,10) date  FROM wlyy_prescription p ";
            rs = DateUtil.findDates(startDate,endDate);
            //加入当天数据
            Map<String,Object> dateMap = new HashedMap();
            dateMap.put("date",sdf.format(endDate));
            dateMap.put("count", 0.0D);
            rs.add(dateMap);
            startTime = DateUtil.dateToStr(startDate, "YYYY-MM-dd HH:mm:ss");
            endTime = DateUtil.dateToStr(endDate, "YYYY-MM-dd HH:mm:ss");
        }
        if (interval==2){
            sql = "SELECT count(1) AS count,LEFT(date_sub(p.create_time,INTERVAL WEEKDAY(p.create_time) +0 DAY),10) date  FROM wlyy_prescription p ";
            rs = DateUtil.findDateASWeeks(startDate,endDate);
            String MondayWeekDateStr = DateUtil.getMondayOfThisDate(startDate);
            Date MondayWeekDate = DateUtil.strToDate(MondayWeekDateStr,"yyyy-MM-dd");
            if (startDate.after(MondayWeekDate)){
                //开始时间不是当周的周一,则加入本周周一的时间
                Map<String,Object> dateMap = new HashedMap();
                dateMap.put("date",MondayWeekDateStr);
                dateMap.put("count", 0.0D);
                rs.add(0,dateMap);
            }
            startTime = DateUtil.dateToStr(startDate, "YYYY-MM-dd HH:mm:ss");
            endTime = DateUtil.dateToStr(endDate, "YYYY-MM-dd HH:mm:ss");
        }else if (interval==3){
            sql = "SELECT count(1) AS count,LEFT(p.create_time,7) AS month  FROM wlyy_prescription p ";
            for (int i = 1; i < 7; i++) {
                Map<String, Object> mc = new HashedMap();
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
                String date = sdf2.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 sql = "SELECT count(1) AS count,LEFT(p.create_time,7) AS month " +
                " FROM wlyy_prescription p ";
        if(StringUtils.isNotBlank(disease)){
            sql += " JOIN wlyy_prescription_diagnosis d ON d.prescription_code = p.code WHERE d.health_problem ='"+disease+"' ";
        }else{
@ -5152,17 +5188,32 @@ public class StatisticsService extends BaseService {
            sql +=" AND p.`status` <='"+PrescriptionLog.PrescriptionLogStatus.pay_outtime.getValue()+"'";
        }
        sql += " AND p.create_time >='"+DateUtil.dateToStr(dd.getTime(),"YYYY-MM-dd HH:mm:ss")+"' AND p.create_time <='"+ DateUtil.dateToStr(new Date(),"YYYY-MM-dd HH:mm:ss")+"'  GROUP BY LEFT(p.create_time,7) ";
        //增加时间维度
        if(interval==1){
            sql += " AND p.create_time >='"+startTime+"' AND p.create_time <='"+ endTime+"'  GROUP BY LEFT(p.create_time,10) ";
        }else if (interval==2){
            sql += " AND p.create_time >='"+startTime+"' AND p.create_time <='"+ endTime+"'  GROUP BY DATE_FORMAT(p.create_time, '%v %x') ";
        }else if (interval==3){
            sql += " AND p.create_time >='"+startTime+"' AND p.create_time <='"+ endTime+"'  GROUP BY LEFT(p.create_time,7) ";
        }
        List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
        for(Map<String,Object> m:rs){
            Iterator iterator = list.iterator();
            String key = "";
            String keyDb = "";
            while (iterator.hasNext()){
                Map<String,Object> ml = ( Map<String,Object>)iterator.next();
                String monthKey = (String)m.get("month");
                String monthKeyDb = (String)ml.get("month");
                if(monthKey.equals(monthKeyDb)){
                if (interval!=3){
                    key = (String)m.get("date");
                    keyDb = (String)ml.get("date");
                }else{
                    key = (String)m.get("month");
                    keyDb = (String)ml.get("month");
                }
                if(key.equals(keyDb)){
                    m.put("count",ml.get("count"));
                }
            }

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

@ -3931,6 +3931,7 @@ public class StatisticsESService {
        dd.setTime(endDate);
        //六个月前的开始时间
        Date startDate = DateUtil.getNextMonthReturnDate(endDate,-6);
        startDate = DateUtil.getDateShort(startDate);
        if (interval==1){
            rs = DateUtil.findDates(startDate,endDate);
            //加入当天数据
@ -3939,12 +3940,14 @@ public class StatisticsESService {
            dateMap.put("avg",0);
            dateMap.put("count", 0.0D);
            rs.add(dateMap);
            startTime = dateFormat.format(startDate);
            endTime = dateFormat.format(endDate);
        }
        if (interval==2){
            rs = DateUtil.findDateASWeeks(startDate,endDate);
            String MondayWeekDateStr = DateUtil.getMondayOfThisDate(startDate);
            Date MondayWeekDate = dateFormat.parse(MondayWeekDateStr);
            if (startDate.compareTo(MondayWeekDate)==1){
            Date MondayWeekDate = dateFormat3.parse(MondayWeekDateStr);
            if (startDate.after(MondayWeekDate)){
                //开始时间不是当周的周一,则加入本周周一的时间
                Map<String,Object> dateMap = new HashedMap();
                dateMap.put("date",MondayWeekDateStr);

+ 11 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/DateUtil.java

@ -1152,4 +1152,15 @@ public class DateUtil {
		c.add(Calendar.DATE, -day_of_week + 7);
		return df2.format(c.getTime());
	}
	/**
	 * 获取某个时间
	 *
	 * @return返回短时间格式 yyyy-MM-dd
	 */
	public static Date getDateShort(Date date) {
		SimpleDateFormat formatter = new SimpleDateFormat(YYYY_MM_DD);
		String dateString = formatter.format(date);
		return strToDate(dateString, YYYY_MM_DD);
	}
}

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

@ -499,7 +499,6 @@ public class EsStatisticsController extends BaseController {
                    if ("13".equals(idx)){
                        idx="1";
                    }
//                    JSONObject json = statisticsAllService.getDateTotal(startDate, endDate, interval, area, level, idx, lowCode,year);
                    JSONObject json = statisticsESService.getDateTotal(startDate, endDate, interval, area, level, idx, lowCode, year);
                    result.put("index_" + idx, json);
                }
@ -1737,10 +1736,11 @@ public class EsStatisticsController extends BaseController {
    public String getPrescriptionTotalHistogram(@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.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type){
                                                @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type,
                                                @ApiParam(name="interval",value ="时间类型:1日2周3月")@RequestParam(required = false,defaultValue = "1")int interval){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionTotalHistogram(level,area,disease,type));
            return write(200, "查询成功", "data", statisticsService.getPrescriptionTotalHistogram(level,area,disease,type,interval));
           // return write(200, "查询成功", "data", statisticsESService.getPrescriptionTotalHistogram(elasticsearchUtil.changeLevel(Integer.valueOf(level)),area,disease,type));
        } catch (Exception e) {
            error(e);
@ -1872,7 +1872,7 @@ public class EsStatisticsController extends BaseController {
    /*==================================版本1.4.1统计优化开始start=====================================*/
    /**
     * 获取签约率、签约完成率 续签率
     * 获取签约率、线上签约率
     *
     * @param endDate 截止日期
     * @param area    区域
@ -2064,5 +2064,24 @@ public class EsStatisticsController extends BaseController {
            return error(-1, "查询失败");
        }
    }
    /**
     *
     * @param interval
     * @param date
     * @param disease
     * @param type
     * @return
     */
    @RequestMapping("/getPrescriptionTotalDetailTime")
    @ResponseBody
    @ApiOperation("订单统计-点击柱状图获取详情")
    public String getPrescriptionTotalDetailTime(
            @RequestParam(required = true)int interval,
            @RequestParam(required = true)String date,
            @ApiParam(name="disease", value="疾病类型") @RequestParam(required = false)String disease,
            @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type){
        return "";
    }
    /*==================================版本1.4.1统计优化结束 end=====================================*/
}

+ 1 - 1
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -1699,7 +1699,7 @@ public class StatisticsController extends BaseController {
                                                @ApiParam(name="disease", value="疾病类型") @RequestParam(required = false)String disease,
                                                @ApiParam(name="type", value="类型1.总量,2.已完成,3.居民取消,4.审核不通过,5.进行中,6.其他原因取消") @RequestParam(required = true)String type){
        try{
            return write(200, "查询成功", "data", statisticsService.getPrescriptionTotalHistogram(level,area,disease,type));
            return write(200, "查询成功", "data", statisticsService.getPrescriptionTotalHistogram(level,area,disease,type,3));
        } catch (Exception e) {
            error(e);
            return error(-1, "查询失败");