LAPTOP-KB9HII50\70708 10 kuukautta sitten
vanhempi
commit
6ee7d47ddc

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

@ -6079,6 +6079,7 @@ public class StatisticsEsService {
     * 【总收入】= 诊查费(21) + 处方费(3)
     * 【问诊量】= 用户成功发起问诊量,包含取消的订单(同一人发起多次累计多次)   【接诊率】= 接诊量 ÷ 问诊量 ×100%
     * 【处方量】= 成功接诊后开方数量 【处方率】= 处方量 ÷ 接诊量 ×100%
     * 门诊转住院:医生登记住院申请的次数
     */
    public JSONObject getTotal3Data(ScreenQvo qvo) throws Exception {
        JSONObject result = new JSONObject();
@ -6135,6 +6136,7 @@ public class StatisticsEsService {
        //去年同期时间
        List<SaveModel> jz_model03 = elasticsearchUtil.findListDateQuotaLevel2(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "12,14,16", "1", null, "9,16,12,1,17", "1");
        /**
         *  计算同比和环比
         *  环比增长= (本期统计周期数据-上期统计周期数据)上期统计周期数据×100%
@ -6182,6 +6184,44 @@ public class StatisticsEsService {
        result.put("kf_kfl", getRange(kf_total, patientVolume, 0));//【处方率】= 处方量 ÷ 接诊量 ×100%
        result.put("kf_hb", getRange((kf_total - kf_period), kf_period, 0));//环比
        result.put("kf_tb", getRange((kf_total - kf_periodYear), kf_periodYear, 0));//同比
        if("1".equals(qvo.getType())){
            //门诊转住院
            String sql = "select COUNT(DISTINCT r.id) from wlyy_outpatient_hospitalization r,base_doctor_hospital bdh,base_doctor bd,dict_hospital_dept hd " +
                    "WHERE r.doctor=bdh.doctor_code and bdh.doctor_code = bd.id AND hd.code= bdh.dept_code " +
                    "AND bdh.del=1 AND hd.CONSULT_DEPT_FLAG='1' AND bd.job_title_code IN('1201','1301','1401','1101','066','067','061','1310','061','065','1','2','3','4') ";
            //本周期
            String sql01 = sql + " and r.create_time>='"+qvo.getStartDate()+"' and r.create_time<='"+qvo.getEndDate()+" 23:59:59'";
            //上个周期
            String sql02 = sql + " and r.create_time>='"+period[0]+"' and r.create_time<='"+period[1]+" 23:59:59'";
            //去年同期
            String sql03 = sql + " and r.create_time>='"+periodYear[0]+"' and r.create_time<='"+periodYear[1]+" 23:59:59'";
            if("5".equals(qvo.getLevel())){
                //科室
                sql01 += " and hd.code='"+qvo.getArea()+"' ";
                sql02 += " and hd.code='"+qvo.getArea()+"' ";
                sql03 += " and hd.code='"+qvo.getArea()+"' ";
            }
            if("6".equals(qvo.getLevel())){
                //医生
                sql01 += " and r.doctor='"+qvo.getArea()+"' ";
                sql02 += " and r.doctor='"+qvo.getArea()+"' ";
                sql03 += " and r.doctor='"+qvo.getArea()+"' ";
            }
            //已接诊的复诊数
            String sql04 = sql01.replace("wlyy_outpatient_hospitalization","wlyy_outpatient");
            sql04 += " and r.status IN(1,2,3) and r.outpatient_type !='3' ";
            Integer hospitalization01 = jdbcTemplate.queryForObject(sql01,Integer.class);
            Integer hospitalization02 = jdbcTemplate.queryForObject(sql02,Integer.class);
            Integer hospitalization03 = jdbcTemplate.queryForObject(sql03,Integer.class);
            Integer hospitalization04 = jdbcTemplate.queryForObject(sql04,Integer.class);
            result.put("ar_total", hospitalization01);//门诊转住院量
            result.put("ar_kfl", getRange(hospitalization01, hospitalization04, 0));//【转化率】= 门诊转住院量 ÷ 已接诊的复诊数 ×100%
            result.put("ar_hb", getRange((hospitalization01 - hospitalization02), hospitalization02, 0));//环比
            result.put("ar_tb", getRange((hospitalization01 - hospitalization03), hospitalization03, 0));//同比
        }
        return result;
    }
@ -6608,6 +6648,184 @@ public class StatisticsEsService {
        return result;
    }
    /**
     * 业务情况说明
     * 1、【问诊量】= 用户成功发起问诊量,包含取消的订单(同一人发起多次累计多次);
     * 2、问诊类型:支持管理员点击问诊类型的颜色,展示该问诊类型占问诊量的百分比。
     * 3、【处方量】 = 成功接诊开放的数量;
     * 4、【接诊率】 = 接诊量 ÷ 问诊量 × 100%;
     * 5、【问诊转住院】 = 医生登记住院申请的次数;
     * 6、同比增长:(本期统计周期数据-去年同期统计周期数据)去年同期统计周期数据× 100%;
     * 7、环比增长:(本期统计周期数据 - 上期统计周期数据)上期统计周期数据× 100%;
     */
    public JSONObject businessSituation(ScreenQvo qvo){
        JSONObject json = new JSONObject();
        // 计算上一个周期  开始时间period[0] 、结束时间period[1]
        String[] period = calculatePreviousPeriod(qvo.getStartDate(), qvo.getEndDate());
        //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
        String[] periodYear = calculatePreviousYearPeriod(qvo.getStartDate(), qvo.getEndDate());
        return json;
    }
    /**
     * 收入情况
     1、【总收入】=药品费+诊查费;
     2、【药品费】=患者支付的处方费用;
     3、【诊查费】=图文门诊+图文咨询+视频问诊+视频咨询+社区协诊;
     4、同比增长:(本期统计周期数据-去年同期统计周期数据)去年同期统计周期数据× 100%;
     5、环比增长:(本期统计周期数据 - 上期统计周期数据)上期统计周期数据× 100%;
     6、图文问诊、图文咨询、视频问诊、视频咨询、社区协诊=患者支付的属于该类型的诊查费;
     7、环形图,支持管理员点击颜色,显示所属类别占总收入的百分比;
     8、点击【查看更多】按钮,页面跳转至「收入分析」页。
     */
    public JSONObject incomeSituation(ScreenQvo qvo) throws Exception{
        JSONObject json = new JSONObject();
        // 计算上一个周期  开始时间period[0] 、结束时间period[1]
        String[] period = calculatePreviousPeriod(qvo.getStartDate(), qvo.getEndDate());
        //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
        String[] periodYear = calculatePreviousYearPeriod(qvo.getStartDate(), qvo.getEndDate());
        String lowLevel = "2";
        String index3 = "3";//处方费/药品费
        String index21 = "21";//诊查费
        //图文问诊、图文咨询、视频问诊、视频咨询、社区协诊=患者支付的属于该类型的诊查费
        //药品费
        double ypFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index3, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //上一个周期
        double ypFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index3, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //去年同期
        double ypFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index3, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //诊查费
        double zcFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //上一个周期
        double zcFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //去年同期
        double zcFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
        //总收入
        double totalFee = ypFee+zcFee;
        double totalFee_l1 = ypFee_l1+zcFee_l1;
        double totalFee_l2 = ypFee_l2+zcFee_l2;
        //图文问诊
        double ppFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "1", null,lowLevel);
        //上一个周期
        double ppFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "1", null,lowLevel);
        //去年同期
        double ppFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "1", null,lowLevel);
        //图文咨询
        double pcFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "1", null,lowLevel);
        //上一个周期
        double pcFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "1", null,lowLevel);
        //去年同期
        double pcFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "1", null,lowLevel);
        //视频问诊
        double vpFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "2", null,lowLevel);
        //上一个周期
        double vpFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "2", null,lowLevel);
        //去年同期
        double vpFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "1", "2", null,lowLevel);
        //视频咨询
        double vcFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "2", null,lowLevel);
        //上一个周期
        double vcFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "2", null,lowLevel);
        //去年同期
        double vcFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "3", "2", null,lowLevel);
        //社区协诊
        double sxFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "2", null, null,lowLevel);
        //上一个周期
        double sxFee_l1 = findResult1BySaveModelList(period[0], period[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "2", null, null,lowLevel);
        //去年同期
        double sxFee_l2 = findResult1BySaveModelList(periodYear[0], periodYear[1], qvo.getArea(),
                qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "2", null, null,lowLevel);
        json.put("ypFee",ypFee);
        json.put("ypFee_hb", getDoubleRange((ypFee - ypFee_l1), ypFee_l1, 0));//环比
        json.put("ypFee_tb", getDoubleRange((ypFee - ypFee_l2), ypFee_l2, 0));//同比
        json.put("zcFee",zcFee);
        json.put("zcFee_hb", getDoubleRange((zcFee - zcFee_l1), zcFee_l1, 0));//环比
        json.put("zcFee_tb", getDoubleRange((zcFee - zcFee_l2), zcFee_l2, 0));//同比
        json.put("totalFee",totalFee);
        json.put("totalFee_hb", getDoubleRange((totalFee - totalFee_l1), totalFee_l1, 0));//环比
        json.put("totalFee_tb", getDoubleRange((totalFee - totalFee_l2), totalFee_l2, 0));//同比
        json.put("ppFee",ppFee);
        json.put("ppFee_hb", getDoubleRange((ppFee - ppFee_l1), ppFee_l1, 0));//环比
        json.put("ppFee_tb", getDoubleRange((ppFee - ppFee_l2), ppFee_l2, 0));//同比
        json.put("pcFee",pcFee);
        json.put("pcFee_hb", getDoubleRange((pcFee - pcFee_l1), pcFee_l1, 0));//环比
        json.put("pcFee_tb", getDoubleRange((pcFee - pcFee_l2), pcFee_l2, 0));//同比
        json.put("vpFee",vpFee);
        json.put("vpFee_hb", getDoubleRange((vpFee - vpFee_l1), vpFee_l1, 0));//环比
        json.put("vpFee_tb", getDoubleRange((vpFee - vpFee_l2), vpFee_l2, 0));//同比
        json.put("vcFee",vcFee);
        json.put("vcFee_hb", getDoubleRange((vcFee - vcFee_l1), vcFee_l1, 0));//环比
        json.put("vcFee_tb", getDoubleRange((vcFee - vcFee_l2), vcFee_l2, 0));//同比
        json.put("sxFee",sxFee);
        json.put("sxFee_hb", getDoubleRange((sxFee - sxFee_l1), sxFee_l1, 0));//环比
        json.put("sxFee_tb", getDoubleRange((sxFee - sxFee_l2), sxFee_l2, 0));//同比
        return json;
    }
    public SaveModel findOneBySaveModelList(String startDate, String endDate, String area, int level, String index, String timeLevel,
                                            String slaveKey1, String slaveKey2, String interval, String lowLevel){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area,
                level, index, timeLevel, slaveKey1, slaveKey2,interval,lowLevel);
        if(list.size()>0){
            return list.get(0);
        }
        SaveModel saveModel = new SaveModel();
        saveModel.setResult1(0d);
        saveModel.setResult2(0d);
        return saveModel;
    }
    public Double findResult1BySaveModelList(String startDate, String endDate, String area, int level, String index, String timeLevel,
                                            String slaveKey1, String slaveKey2, String interval, String lowLevel){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area,
                level, index, timeLevel, slaveKey1, slaveKey2,interval,lowLevel);
        if(list.size()>0){
            return list.get(0).getResult1();
        }
        return 0d;
    }
    public Double findResult2BySaveModelList(String startDate, String endDate, String area, int level, String index, String timeLevel,
                                             String slaveKey1, String slaveKey2, String interval, String lowLevel){
        List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area,
                level, index, timeLevel, slaveKey1, slaveKey2,interval,lowLevel);
        if(list.size()>0){
            return list.get(0).getResult2();
        }
        return 0d;
    }
    /**
     * 导出
     * 获取全部的科室和医生数据

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

@ -1609,7 +1609,7 @@ public class ElasticsearchUtil {
            }
        }
        sql.append(groupBy);
        //logger.info("sql :" + sql.toString());
        logger.info("sql :" + sql.toString());
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 4
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java