|  | @ -4,7 +4,6 @@ package com.yihu.jw.es.service;
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSON;
 |  | import com.alibaba.fastjson.JSON;
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSONArray;
 |  | import com.alibaba.fastjson.JSONArray;
 | 
												
													
														
															|  | import com.alibaba.fastjson.JSONObject;
 |  | import com.alibaba.fastjson.JSONObject;
 | 
												
													
														
															|  | import com.yihu.jw.area.dao.BaseCityDao;
 |  | 
 | 
												
													
														
															|  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 |  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 | 
												
													
														
															|  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
												
													
														
															|  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 |  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 | 
												
											
												
													
														
															|  | @ -71,8 +70,6 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private BaseOrgDao orgDao;
 |  |     private BaseOrgDao orgDao;
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private BaseCityDao cityDao;
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  | 
 | 
												
													
														
															|  |     private BaseEvaluateScoreService baseEvaluateScoreService;
 |  |     private BaseEvaluateScoreService baseEvaluateScoreService;
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private HibenateUtils hibenateUtils;
 |  |     private HibenateUtils hibenateUtils;
 | 
												
											
												
													
														
															|  | @ -6658,19 +6655,291 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |      * 6、同比增长:(本期统计周期数据-去年同期统计周期数据)去年同期统计周期数据× 100%;
 |  |      * 6、同比增长:(本期统计周期数据-去年同期统计周期数据)去年同期统计周期数据× 100%;
 | 
												
													
														
															|  |      * 7、环比增长:(本期统计周期数据 - 上期统计周期数据)上期统计周期数据× 100%;
 |  |      * 7、环比增长:(本期统计周期数据 - 上期统计周期数据)上期统计周期数据× 100%;
 | 
												
													
														
															|  |      */
 |  |      */
 | 
												
													
														
															|  |     public JSONObject businessSituation(ScreenQvo qvo){
 |  | 
 | 
												
													
														
															|  | 
 |  |     public JSONObject businessSituation(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  |         JSONObject json = new JSONObject();
 |  |         JSONObject json = new JSONObject();
 | 
												
													
														
															|  |         // 计算上一个周期  开始时间period[0] 、结束时间period[1]
 |  |         // 计算上一个周期  开始时间period[0] 、结束时间period[1]
 | 
												
													
														
															|  |         String[] period = calculatePreviousPeriod(qvo.getStartDate(), qvo.getEndDate());
 |  |         String[] period = calculatePreviousPeriod(qvo.getStartDate(), qvo.getEndDate());
 | 
												
													
														
															|  |         //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
 |  |         //计算去年同期时间段 开始时间periodYear[0] 、结束时间periodYear[1]
 | 
												
													
														
															|  |         String[] periodYear = calculatePreviousYearPeriod(qvo.getStartDate(), qvo.getEndDate());
 |  |         String[] periodYear = calculatePreviousYearPeriod(qvo.getStartDate(), qvo.getEndDate());
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //----------------------问诊量--------------------------------------
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
 | 
												
													
														
															|  | 
 |  |         //上个周期
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model02 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
 | 
												
													
														
															|  | 
 |  |         //去年同期时间
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model03 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //问诊类型 17	视频咨询        //1	图文咨询        //9	图文复诊        //12	专科协同        //16	视频复诊
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_17 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "17");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_1 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "1");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_9 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "9");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_12 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "12");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_16 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "16");
 | 
												
													
														
															|  | 
 |  |         json.put("wzType17", countListTotal(wz_model01_17));//问诊类型_视频咨询
 | 
												
													
														
															|  | 
 |  |         json.put("wzType1", countListTotal(wz_model01_1));//问诊类型_图文咨询
 | 
												
													
														
															|  | 
 |  |         json.put("wzType9", countListTotal(wz_model01_9));//问诊类型_图文复诊
 | 
												
													
														
															|  | 
 |  |         json.put("wzType12", countListTotal(wz_model01_12));//问诊类型_专科协同
 | 
												
													
														
															|  | 
 |  |         json.put("wzType16", countListTotal(wz_model01_16));//问诊类型_视频复诊
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //---------------------【处方量】------------------------------------
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> cf_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
 | 
												
													
														
															|  | 
 |  |         //上个周期
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> cf_model02 = elasticsearchUtil.findListDateQuotaLevel1(period[0], period[1], qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
 | 
												
													
														
															|  | 
 |  |         //去年同期时间
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> cf_model03 = elasticsearchUtil.findListDateQuotaLevel1(periodYear[0], periodYear[1], qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //---------------------【接诊量】------------------------------------
 | 
												
													
														
															|  | 
 |  |         //接诊量-已接诊
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12,14,16", "1", null, "9,16,12,1,17", "1");
 | 
												
													
														
															|  | 
 |  |         //上个周期
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> jz_model02 = elasticsearchUtil.findListDateQuotaLevel2(period[0], period[1], qvo.getArea(), qvo.getLevel(), "12,14,16", "1", null, "9,16,12,1,17", "1");
 | 
												
													
														
															|  | 
 |  |         //去年同期时间
 | 
												
													
														
															|  | 
 |  |         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");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //接诊量
 | 
												
													
														
															|  | 
 |  |         int patientVolume = countListTotal(jz_model01);
 | 
												
													
														
															|  | 
 |  |         int periodPatientVolume = countListTotal(jz_model02);//上个周期
 | 
												
													
														
															|  | 
 |  |         int periodYearPatientVolume = countListTotal(jz_model03);//去年同期时间
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jz", patientVolume);//接诊量
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jz_hb", getRange((patientVolume - periodPatientVolume), periodPatientVolume, 0));//接诊量-环比
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jz_tb", getRange((patientVolume - periodYearPatientVolume), periodYearPatientVolume, 0));//接诊量-同比
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //问诊
 | 
												
													
														
															|  | 
 |  |         int wzl = countListTotal(wz_model01);
 | 
												
													
														
															|  | 
 |  |         //同比和环比
 | 
												
													
														
															|  | 
 |  |         int wzl_period = countListTotal(wz_model02);//上个周期
 | 
												
													
														
															|  | 
 |  |         int wzl_periodYear = countListTotal(wz_model03);//去年同周期
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_total", wzl);//问诊量
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jzl", getRange(patientVolume, wzl, 0));//【接诊率】= 接诊量 ÷ 问诊量 ×100%
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_hb", getRange((wzl - wzl_period), wzl_period, 0));//环比
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_tb", getRange((wzl - wzl_periodYear), wzl_periodYear, 0));//同比
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //开方 【处方量】
 | 
												
													
														
															|  | 
 |  |         int kf_total = countListTotal(cf_model01);
 | 
												
													
														
															|  | 
 |  |         int kf_period = countListTotal(cf_model02);
 | 
												
													
														
															|  | 
 |  |         //上个周期
 | 
												
													
														
															|  | 
 |  |         int kf_periodYear = countListTotal(cf_model03);
 | 
												
													
														
															|  | 
 |  |         //去年同周期
 | 
												
													
														
															|  | 
 |  |         json.put("kf_total", kf_total);//开方量
 | 
												
													
														
															|  | 
 |  |         json.put("kf_kfl", getRange(kf_total, patientVolume, 0));//【处方率】= 处方量 ÷ 接诊量 ×100%
 | 
												
													
														
															|  | 
 |  |         json.put("kf_hb", getRange((kf_total - kf_period), kf_period, 0));//环比
 | 
												
													
														
															|  | 
 |  |         json.put("kf_tb", getRange((kf_total - kf_periodYear), kf_periodYear, 0));//同比
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //门诊转住院
 | 
												
													
														
															|  | 
 |  |         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);
 | 
												
													
														
															|  | 
 |  |         json.put("ar_total", hospitalization01);//门诊转住院量
 | 
												
													
														
															|  | 
 |  |         json.put("ar_kfl", getRange(hospitalization01, hospitalization04, 0));//【转化率】= 门诊转住院量 ÷ 已接诊的复诊数 ×100%
 | 
												
													
														
															|  | 
 |  |         json.put("ar_hb", getRange((hospitalization01 - hospitalization02), hospitalization02, 0));//环比
 | 
												
													
														
															|  | 
 |  |         json.put("ar_tb", getRange((hospitalization01 - hospitalization03), hospitalization03, 0));//同比
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         return json;
 |  |         return json;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 业务分析
 | 
												
													
														
															|  | 
 |  |      * 1、【总问诊量】= 用户成功发起的问诊次数,包含取消的订单(同一人发起多次累计多次);
 | 
												
													
														
															|  | 
 |  |      * 2、图文门诊、图文咨询、视频问诊、视频咨询、社区协诊 = 患者发起的属于该类型的订单次数(同一人发起多次累计多次);
 | 
												
													
														
															|  | 
 |  |      * 3、【处方量】 = 成功开方且审核通过的数量;
 | 
												
													
														
															|  | 
 |  |      * 4、【接诊率】 = 接诊量 ÷ 问诊量 × 100%;
 | 
												
													
														
															|  | 
 |  |      * 5、【问诊转住院】 = 医生登记住院申请的次数;
 | 
												
													
														
															|  | 
 |  |      * 6、根据页面显示医院总数据或科室数据!
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject businessAnalysis(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         JSONObject json = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         //----------------------问诊量--------------------------------------
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, null);//问诊
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //问诊类型 17	视频咨询        //1	图文咨询        //9	图文复诊        //12	专科协同        //16	视频复诊
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_17 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "17");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_1 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "1");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_9 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "9");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_12 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "12");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_model01_16 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, null, "16");
 | 
												
													
														
															|  | 
 |  |         json.put("wzType17", countListTotal(wz_model01_17));//问诊类型_视频咨询
 | 
												
													
														
															|  | 
 |  |         json.put("wzType1", countListTotal(wz_model01_1));//问诊类型_图文咨询
 | 
												
													
														
															|  | 
 |  |         json.put("wzType9", countListTotal(wz_model01_9));//问诊类型_图文复诊
 | 
												
													
														
															|  | 
 |  |         json.put("wzType12", countListTotal(wz_model01_12));//问诊类型_专科协同
 | 
												
													
														
															|  | 
 |  |         json.put("wzType16", countListTotal(wz_model01_16));//问诊类型_视频复诊
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //---------------------【处方量】------------------------------------
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> cf_model01 = elasticsearchUtil.findListDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "2", SaveModel.timeLevel_ZL, null, null);//开方量
 | 
												
													
														
															|  | 
 |  |         //---------------------【接诊量】------------------------------------
 | 
												
													
														
															|  | 
 |  |         //接诊量-已接诊
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> jz_model01 = elasticsearchUtil.findListDateQuotaLevel2(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "12,14,16", "1", null, "9,16,12,1,17", "1");
 | 
												
													
														
															|  | 
 |  |         //接诊量
 | 
												
													
														
															|  | 
 |  |         int patientVolume = countListTotal(jz_model01);
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jz", patientVolume);//接诊量
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //问诊
 | 
												
													
														
															|  | 
 |  |         int wzl = countListTotal(wz_model01);
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_total", wzl);//问诊量
 | 
												
													
														
															|  | 
 |  |         json.put("wzl_jzl", getRange(patientVolume, wzl, 0));//【接诊率】= 接诊量 ÷ 问诊量 ×100%
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //开方 【处方量】
 | 
												
													
														
															|  | 
 |  |         int kf_total = countListTotal(cf_model01);
 | 
												
													
														
															|  | 
 |  |         //去年同周期
 | 
												
													
														
															|  | 
 |  |         json.put("kf_total", kf_total);//开方量
 | 
												
													
														
															|  | 
 |  |         json.put("kf_kfl", getRange(kf_total, patientVolume, 0));//【处方率】= 处方量 ÷ 接诊量 ×100%
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //门诊转住院
 | 
												
													
														
															|  | 
 |  |         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'";
 | 
												
													
														
															|  | 
 |  |         if("5".equals(qvo.getLevel())){
 | 
												
													
														
															|  | 
 |  |             //科室
 | 
												
													
														
															|  | 
 |  |             sql01 += " and hd.code='"+qvo.getArea()+"' ";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         if("6".equals(qvo.getLevel())){
 | 
												
													
														
															|  | 
 |  |             //医生
 | 
												
													
														
															|  | 
 |  |             sql01 += " 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 hospitalization04 = jdbcTemplate.queryForObject(sql04,Integer.class);
 | 
												
													
														
															|  | 
 |  |         json.put("ar_total", hospitalization01);//门诊转住院量
 | 
												
													
														
															|  | 
 |  |         json.put("ar_kfl", getRange(hospitalization01, hospitalization04, 0));//【转化率】= 门诊转住院量 ÷ 已接诊的复诊数 ×100%
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         return json;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 业务增长趋势
 | 
												
													
														
															|  | 
 |  |      * 1、显示展示的时间范围内的收入趋势图,默认按日展示,支持管理员点击区域右上角进行“日、周、月”进行趋势图X轴的切换;
 | 
												
													
														
															|  | 
 |  |      * 2、支持管理员点击趋势图上的点位时,展示该点位的时间及各类型的订单数量;
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject businessNewTrends(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         JSONObject json = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         //问诊类型 17	视频咨询        //1	图文咨询        //9	图文复诊        //12	专科协同        //16	视频复诊
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_17 = elasticsearchUtil.findLineChartDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, qvo.getInterval(), "17");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_1 = elasticsearchUtil.findLineChartDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, qvo.getInterval(), "1");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_9 = elasticsearchUtil.findLineChartDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, qvo.getInterval(), "9");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_12 = elasticsearchUtil.findLineChartDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, qvo.getInterval(), "12");
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> wz_16 = elasticsearchUtil.findLineChartDateQuotaLevel1(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "5", SaveModel.timeLevel_ZL, qvo.getInterval(), "16");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> list17 = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> list1 = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> list9 = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> list12 = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> list16 = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : wz_17) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             list17.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : wz_1) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             list1.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : wz_9) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             list9.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : wz_12) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             list12.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : wz_16) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             list16.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         json.put("wz_1",list1);
 | 
												
													
														
															|  | 
 |  |         json.put("wz_9",list9);
 | 
												
													
														
															|  | 
 |  |         json.put("wz_12",list12);
 | 
												
													
														
															|  | 
 |  |         json.put("wz_16",list16);
 | 
												
													
														
															|  | 
 |  |         json.put("wz_17",list17);
 | 
												
													
														
															|  | 
 |  |         return json;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 接诊排行
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public List<JSONObject> businessRanking(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         String level2_type = qvo.getLevel2_type();
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel2New(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(),
 | 
												
													
														
															|  | 
 |  |                 "12,14,16", "1", "9,16,12,1,17", "1",null,level2_type);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> result = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : saveModels) {
 | 
												
													
														
															|  | 
 |  |             JSONObject object1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             if (level2_type.equals(SaveModel.deptLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("dept", saveModel.getDept());
 | 
												
													
														
															|  | 
 |  |                 object1.put("deptName", saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |             } else if (level2_type.equals(SaveModel.doctorLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("doctor", saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                 object1.put("doctorName", saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |             } else if (level2_type.equals(SaveModel.OrgLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("hospital", saveModel.getHospital());
 | 
												
													
														
															|  | 
 |  |                 object1.put("hospitalName", saveModel.getHospitalName());
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object1.put("result1", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             object1.put("result2", saveModel.getResult2());
 | 
												
													
														
															|  | 
 |  |             result.add(object1);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         // 排序
 | 
												
													
														
															|  | 
 |  |         result.sort(new Comparator<JSONObject>() {
 | 
												
													
														
															|  | 
 |  |             @Override
 | 
												
													
														
															|  | 
 |  |             public int compare(JSONObject o1, JSONObject o2) {
 | 
												
													
														
															|  | 
 |  |                 if (o1.getString("result1").compareTo(o2.getString("result1")) > 0) {
 | 
												
													
														
															|  | 
 |  |                     return -1;
 | 
												
													
														
															|  | 
 |  |                 } else if (o1.getString("result1").compareTo(o2.getString("result1")) < 0) {
 | 
												
													
														
															|  | 
 |  |                     return 1;
 | 
												
													
														
															|  | 
 |  |                 } else {
 | 
												
													
														
															|  | 
 |  |                     return 0;
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         });
 | 
												
													
														
															|  | 
 |  |         return result;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 收入情况
 |  |      * 收入情况
 | 
												
													
														
															|  |      1、【总收入】=药品费+诊查费;
 |  |      1、【总收入】=药品费+诊查费;
 | 
												
											
												
													
														
															|  | @ -6792,6 +7061,168 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |         return json;
 |  |         return json;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 收入分析
 | 
												
													
														
															|  | 
 |  |      1、【总收入】= 药品费+诊查费;
 | 
												
													
														
															|  | 
 |  |      2、【药品费】= 患者支付的处方费用;
 | 
												
													
														
															|  | 
 |  |      3、【诊查费】= 图文门诊+图文咨询+视频问诊+视频咨询+社区协诊;
 | 
												
													
														
															|  | 
 |  |      4、图文门诊、图文咨询、视频问诊、视频咨询、社区协诊 = 患者支付的属于该类型的诊查费;
 | 
												
													
														
															|  | 
 |  |      5、根据页面显示医院总数据或科室数据!
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject incomeAnalysis(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         JSONObject json = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         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 zcFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
 | 
												
													
														
															|  | 
 |  |                 qvo.getLevel(), index21, SaveModel.timeLevel_ZL, null, null, null,lowLevel);
 | 
												
													
														
															|  | 
 |  |         //总收入
 | 
												
													
														
															|  | 
 |  |         double totalFee = ypFee+zcFee;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //图文问诊
 | 
												
													
														
															|  | 
 |  |         double ppFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), 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 vpFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), 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 sxFee = findResult1BySaveModelList(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
 | 
												
													
														
															|  | 
 |  |                 qvo.getLevel(), index21, SaveModel.timeLevel_ZL, "2", null, null,lowLevel);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         json.put("ypFee",ypFee);
 | 
												
													
														
															|  | 
 |  |         json.put("zcFee",zcFee);
 | 
												
													
														
															|  | 
 |  |         json.put("totalFee",totalFee);
 | 
												
													
														
															|  | 
 |  |         json.put("ppFee",ppFee);
 | 
												
													
														
															|  | 
 |  |         json.put("pcFee",pcFee);
 | 
												
													
														
															|  | 
 |  |         json.put("vpFee",vpFee);
 | 
												
													
														
															|  | 
 |  |         json.put("vcFee",vcFee);
 | 
												
													
														
															|  | 
 |  |         json.put("sxFee",sxFee);
 | 
												
													
														
															|  | 
 |  |         return json;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 收入新增趋势
 | 
												
													
														
															|  | 
 |  |      * 1、显示展示的时间范围内的收入趋势图,默认按日展示,支持管理员点击区域右上角进行“日、周、月”进行趋势图X轴的切换;
 | 
												
													
														
															|  | 
 |  |      * 2、支持管理员点击趋势图上的点位时,展示该点位的时间及收入;
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public List<JSONObject> incomeNewTrends(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         //药品费+诊查费=总收入
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> list = elasticsearchUtil.findLineChartDateQuotaLevel0(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(),
 | 
												
													
														
															|  | 
 |  |                 qvo.getLevel(), "3,21", SaveModel.timeLevel_ZL, qvo.getInterval());
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> feeList = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : list) {
 | 
												
													
														
															|  | 
 |  |             JSONObject range = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
												
													
														
															|  | 
 |  |             range.put("amount", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             feeList.add(range);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return feeList;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 收入排行
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public List<JSONObject> incomeRanking(ScreenQvo qvo) throws Exception{
 | 
												
													
														
															|  | 
 |  |         //药品费+诊查费=总收入
 | 
												
													
														
															|  | 
 |  |         String level2_type = qvo.getLevel2_type();
 | 
												
													
														
															|  | 
 |  |         List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(qvo.getStartDate(), qvo.getEndDate(), qvo.getArea(), qvo.getLevel(), "3,21", SaveModel.timeLevel_ZL, null, level2_type);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         List<JSONObject> result = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |         for (SaveModel saveModel : saveModels) {
 | 
												
													
														
															|  | 
 |  |             JSONObject object1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |             if (level2_type.equals(SaveModel.deptLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("dept", saveModel.getDept());
 | 
												
													
														
															|  | 
 |  |                 object1.put("deptName", saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |             } else if (level2_type.equals(SaveModel.doctorLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("doctor", saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                 object1.put("doctorName", saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |             } else if (level2_type.equals(SaveModel.OrgLevel)) {
 | 
												
													
														
															|  | 
 |  |                 object1.put("hospital", saveModel.getHospital());
 | 
												
													
														
															|  | 
 |  |                 object1.put("hospitalName", saveModel.getHospitalName());
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object1.put("result1", saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             object1.put("result2", saveModel.getResult2());
 | 
												
													
														
															|  | 
 |  |             result.add(object1);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         // 排序
 | 
												
													
														
															|  | 
 |  |         result.sort(new Comparator<JSONObject>() {
 | 
												
													
														
															|  | 
 |  |             @Override
 | 
												
													
														
															|  | 
 |  |             public int compare(JSONObject o1, JSONObject o2) {
 | 
												
													
														
															|  | 
 |  |                 if (o1.getString("result1").compareTo(o2.getString("result1")) > 0) {
 | 
												
													
														
															|  | 
 |  |                     return -1;
 | 
												
													
														
															|  | 
 |  |                 } else if (o1.getString("result1").compareTo(o2.getString("result1")) < 0) {
 | 
												
													
														
															|  | 
 |  |                     return 1;
 | 
												
													
														
															|  | 
 |  |                 } else {
 | 
												
													
														
															|  | 
 |  |                     return 0;
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         });
 | 
												
													
														
															|  | 
 |  |         return result;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 全院诊室患者
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public JSONObject orgConsultPatient(String startDate,String endDate){
 | 
												
													
														
															|  | 
 |  |         JSONObject json = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         String sql = "SELECT COUNT(if(op.`status`=3,1,null)) status3,COUNT(if(op.`status`=1,1,null)) status2 " +
 | 
												
													
														
															|  | 
 |  |                 ",COUNT(if(op.`status`=0 and op.pay_status=1,1,null)) status1 from  wlyy_outpatient op " +
 | 
												
													
														
															|  | 
 |  |                 "where 1=1 ";
 | 
												
													
														
															|  | 
 |  |         if(StringUtils.isNotBlank(startDate)){
 | 
												
													
														
															|  | 
 |  |             sql += " and create_time>='"+startDate+"' ";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         if(StringUtils.isNotBlank(endDate)){
 | 
												
													
														
															|  | 
 |  |             sql += " and create_time<'"+endDate+"' ";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
 | 
												
													
														
															|  | 
 |  |         if(list.size()>0){
 | 
												
													
														
															|  | 
 |  |             Map<String,Object> map = list.get(0);
 | 
												
													
														
															|  | 
 |  |             json.put("status1",map.get("status1")+"");//候诊中
 | 
												
													
														
															|  | 
 |  |             json.put("status2",map.get("status2")+"");//就诊中
 | 
												
													
														
															|  | 
 |  |             json.put("status3",map.get("status3")+"");//已结束
 | 
												
													
														
															|  | 
 |  |         }else {
 | 
												
													
														
															|  | 
 |  |             json.put("status1","0");//候诊中
 | 
												
													
														
															|  | 
 |  |             json.put("status2","0");//就诊中
 | 
												
													
														
															|  | 
 |  |             json.put("status3","0");//已结束
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return json;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     /**
 | 
												
													
														
															|  | 
 |  |      * 科室诊室患者
 | 
												
													
														
															|  | 
 |  |      */
 | 
												
													
														
															|  | 
 |  |     public List<Map<String,Object>> deptConsultPatient(String startDate,String endDate){
 | 
												
													
														
															|  | 
 |  |         String sql = "SELECT d.code,d.name,if(t.status1 is null,0,t.status1) status1, " +
 | 
												
													
														
															|  | 
 |  |                 "if(t.status2 is null,0,t.status2) status2,if(t.status3 is null,0,t.status3) status3 " +
 | 
												
													
														
															|  | 
 |  |                 "from dict_hospital_dept d LEFT JOIN ( " +
 | 
												
													
														
															|  | 
 |  |                 "SELECT COUNT(if(op.`status`=3,1,null)) status3,COUNT(if(op.`status`=1,1,null)) status2 " +
 | 
												
													
														
															|  | 
 |  |                 ",COUNT(if(op.`status`=0 and op.pay_status=1,1,null)) status1, op.dept from  wlyy_outpatient op " +
 | 
												
													
														
															|  | 
 |  |                 "where 1=1 ";
 | 
												
													
														
															|  | 
 |  |         if(StringUtils.isNotBlank(startDate)){
 | 
												
													
														
															|  | 
 |  |             sql += " and create_time>='"+startDate+"' ";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         if(StringUtils.isNotBlank(endDate)){
 | 
												
													
														
															|  | 
 |  |             sql += " and create_time<'"+endDate+"' ";
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         sql += " GROUP BY op.dept) t on d.code=t.dept " +
 | 
												
													
														
															|  | 
 |  |                 "WHERE d.consult_dept_flag=1 " +
 | 
												
													
														
															|  | 
 |  |                 "ORDER BY t.status3 desc";
 | 
												
													
														
															|  | 
 |  |         List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
 | 
												
													
														
															|  | 
 |  |         return list;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public SaveModel findOneBySaveModelList(String startDate, String endDate, String area, int level, String index, String timeLevel,
 |  |     public SaveModel findOneBySaveModelList(String startDate, String endDate, String area, int level, String index, String timeLevel,
 | 
												
													
														
															|  |                                             String slaveKey1, String slaveKey2, String interval, String lowLevel){
 |  |                                             String slaveKey1, String slaveKey2, String interval, String lowLevel){
 | 
												
													
														
															|  | 
 |  | 
 |