|  | @ -1,16 +1,29 @@
 | 
												
													
														
															|  | package com.yihu.jw.es.service;
 |  | package com.yihu.jw.es.service;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 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.fasterxml.jackson.databind.deser.Deserializers;
 | 
												
													
														
															|  | 
 |  | import com.google.common.annotations.VisibleForTesting;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.doctor.dao.BaseDoctorDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.dict.DictHospitalDeptDO;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
 | 
												
													
														
															|  | import com.yihu.jw.es.util.ElasticsearchUtil;
 |  | import com.yihu.jw.es.util.ElasticsearchUtil;
 | 
												
													
														
															|  | import com.yihu.jw.es.util.SaveModel;
 |  | import com.yihu.jw.es.util.SaveModel;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.rm.base.BaseRequestMapping;
 | 
												
													
														
															|  | import com.yihu.jw.evaluate.score.service.BaseEvaluateScoreService;
 |  | import com.yihu.jw.evaluate.score.service.BaseEvaluateScoreService;
 | 
												
													
														
															|  | import com.yihu.jw.util.date.DateUtil;
 |  | import com.yihu.jw.util.date.DateUtil;
 | 
												
													
														
															|  | 
 |  | import com.yihu.jw.utils.StringUtil;
 | 
												
													
														
															|  | import jdk.management.resource.internal.inst.FileOutputStreamRMHooks;
 |  | import jdk.management.resource.internal.inst.FileOutputStreamRMHooks;
 | 
												
													
														
															|  | import org.apache.commons.lang3.StringUtils;
 |  | import org.apache.commons.lang3.StringUtils;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParametersFactory;
 | 
												
													
														
															|  | 
 |  | import org.omg.CORBA.OBJ_ADAPTER;
 | 
												
													
														
															|  | import org.springframework.beans.factory.annotation.Autowired;
 |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
												
													
														
															|  | import org.springframework.jdbc.core.JdbcTemplate;
 |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
												
													
														
															|  | import org.springframework.stereotype.Service;
 |  | import org.springframework.stereotype.Service;
 | 
												
											
												
													
														
															|  | @ -31,6 +44,10 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private JdbcTemplate jdbcTemplate;
 |  |     private JdbcTemplate jdbcTemplate;
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private BaseDoctorHospitalDao doctorHospitalDao;
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private BaseDoctorDao doctorDao;
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  |     private BaseEvaluateScoreService baseEvaluateScoreService;
 |  |     private BaseEvaluateScoreService baseEvaluateScoreService;
 | 
												
													
														
															|  |     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 |  |     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -111,6 +128,93 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
 |  |             JSONArray array = monthTotalStatistics2(startDate,endDate,area,level,index,null,SaveModel.timeLevel_ZL);
 | 
												
													
														
															|  |             object.put("data",array);
 |  |             object.put("data",array);
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  | 
 |  |         if (StringUtils.isNoneBlank(level2_type)){
 | 
												
													
														
															|  | 
 |  |             //问诊量表格
 | 
												
													
														
															|  | 
 |  |             //专家咨询数量
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> specialistSaveModels = elasticsearchUtil.findDateQuotaLevel0(endDate, endDate, area, level, "4", SaveModel.timeLevel_DDL,null,level2_type);
 | 
												
													
														
															|  | 
 |  |             //协同门诊
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> syngySaveModels = elasticsearchUtil.findDateQuotaLevel1(endDate, endDate, area, level, "1", SaveModel.timeLevel_DDL,"2",null,level2_type);
 | 
												
													
														
															|  | 
 |  |             //图文复诊
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> topicSaveModels = elasticsearchUtil.findDateQuotaLevel2(endDate, endDate, area, level, "1", SaveModel.timeLevel_DDL,"1","1",null,level2_type);
 | 
												
													
														
															|  | 
 |  |             ///视频复诊
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> vedioSaveModels = elasticsearchUtil.findDateQuotaLevel2(endDate, endDate, area, level, "1", SaveModel.timeLevel_DDL,"1","2",null,level2_type);
 | 
												
													
														
															|  | 
 |  |             JSONArray array = new JSONArray();
 | 
												
													
														
															|  | 
 |  |             List<String> list = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |             for (SaveModel saveModel:specialistSaveModels){
 | 
												
													
														
															|  | 
 |  |                 if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  | 
 |  |                     list.add(saveModel.getDept());
 | 
												
													
														
															|  | 
 |  |                 }else if (level2_type.equals(SaveModel.doctorLevel)){
 | 
												
													
														
															|  | 
 |  |                     list.add(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             for (int i=0;i<list.size();i++){
 | 
												
													
														
															|  | 
 |  |                 String code = list.get(i);
 | 
												
													
														
															|  | 
 |  |                 JSONObject jsonObject = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                 jsonObject.put("code",code);
 | 
												
													
														
															|  | 
 |  |                 for (SaveModel saveModel:specialistSaveModels){
 | 
												
													
														
															|  | 
 |  |                     if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("specialist",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }else if (level2_type.equals(SaveModel.doctorLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("specialist",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 for (SaveModel saveModel:syngySaveModels){
 | 
												
													
														
															|  | 
 |  |                     if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("synegy",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }else if (level2_type.equals(SaveModel.doctorLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("synegy",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 for (SaveModel saveModel:topicSaveModels){
 | 
												
													
														
															|  | 
 |  |                     if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("topic",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }else if (level2_type.equals(SaveModel.doctorLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("topic",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 for (SaveModel saveModel:vedioSaveModels){
 | 
												
													
														
															|  | 
 |  |                     if (level2_type.equals(SaveModel.deptLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDeptName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("vedio",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }else if (level2_type.equals(SaveModel.doctorLevel)){
 | 
												
													
														
															|  | 
 |  |                         if (code.equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("name",saveModel.getDoctorName());
 | 
												
													
														
															|  | 
 |  |                             jsonObject.put("vedio",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |                             break;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 array.add(jsonObject);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object.put("excelData",array);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  |         return object;
 |  |         return object;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
											
												
													
														
															|  | @ -153,13 +257,13 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |         int videoCount = saveModel3.getResult2().intValue();//视频复诊数量
 |  |         int videoCount = saveModel3.getResult2().intValue();//视频复诊数量
 | 
												
													
														
															|  |         int total = specialistCount+synergyCount+topicCount+videoCount;//总量
 |  |         int total = specialistCount+synergyCount+topicCount+videoCount;//总量
 | 
												
													
														
															|  |         object.put("specialistCount",specialistCount);//专家咨询数
 |  |         object.put("specialistCount",specialistCount);//专家咨询数
 | 
												
													
														
															|  |         object.put("specialistRate",getRange(specialistCount,total,2));
 |  | 
 | 
												
													
														
															|  | 
 |  |         object.put("specialistRate",getRange(specialistCount,total,0));
 | 
												
													
														
															|  |         object.put("synergyCount",synergyCount);//专家咨询数
 |  |         object.put("synergyCount",synergyCount);//专家咨询数
 | 
												
													
														
															|  |         object.put("synergyRate",getRange(synergyCount,total,2));
 |  | 
 | 
												
													
														
															|  | 
 |  |         object.put("synergyRate",getRange(synergyCount,total,0));
 | 
												
													
														
															|  |         object.put("topicCount",topicCount);//图文复诊数量
 |  |         object.put("topicCount",topicCount);//图文复诊数量
 | 
												
													
														
															|  |         object.put("topicRate",getRange(topicCount,total,2));
 |  | 
 | 
												
													
														
															|  | 
 |  |         object.put("topicRate",getRange(topicCount,total,0));
 | 
												
													
														
															|  |         object.put("videoCount",videoCount);//视频复诊数量
 |  |         object.put("videoCount",videoCount);//视频复诊数量
 | 
												
													
														
															|  |         object.put("videoRate",getRange(videoCount,total,2));
 |  | 
 | 
												
													
														
															|  | 
 |  |         object.put("videoRate",getRange(videoCount,total,0));
 | 
												
													
														
															|  |         object.put("total",total);
 |  |         object.put("total",total);
 | 
												
													
														
															|  |         return object;
 |  |         return object;
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
											
												
													
														
															|  | @ -179,6 +283,12 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |     public JSONObject getOutPatientGrade(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
 |  |     public JSONObject getOutPatientGrade(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         JSONObject object = new JSONObject();
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         //问诊总量
 | 
												
													
														
															|  | 
 |  |         SaveModel saveModel1 = null;
 | 
												
													
														
															|  | 
 |  |         saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
 | 
												
													
														
															|  | 
 |  |         int total = saveModel1.getResult1().intValue();
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,index,SaveModel.timeLevel_DDL,null,level2_type);
 |  |         List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(endDate,endDate,area,level,index,SaveModel.timeLevel_DDL,null,level2_type);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         List<JSONObject> result = new ArrayList<>();
 |  |         List<JSONObject> result = new ArrayList<>();
 | 
												
											
												
													
														
															|  | @ -195,6 +305,7 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |                 object1.put("hospitalName",saveModel.getHospitalName());
 |  |                 object1.put("hospitalName",saveModel.getHospitalName());
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             object1.put("result1",saveModel.getResult1());
 |  |             object1.put("result1",saveModel.getResult1());
 | 
												
													
														
															|  | 
 |  |             object1.put("rate",getRange(saveModel.getResult1().intValue(),total,0));
 | 
												
													
														
															|  |             object1.put("result2",saveModel.getResult2());
 |  |             object1.put("result2",saveModel.getResult2());
 | 
												
													
														
															|  |             result.add(object1);
 |  |             result.add(object1);
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
											
												
													
														
															|  | @ -203,9 +314,9 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             @Override
 |  |             @Override
 | 
												
													
														
															|  |             public int compare(JSONObject o1, JSONObject o2) {
 |  |             public int compare(JSONObject o1, JSONObject o2) {
 | 
												
													
														
															|  |                 if (o1.getString("result1").compareTo(o2.getString("result1")) > 0) {
 |  |                 if (o1.getString("result1").compareTo(o2.getString("result1")) > 0) {
 | 
												
													
														
															|  |                     return 1;
 |  | 
 | 
												
													
														
															|  |                 } else if (o1.getString("result1").compareTo(o2.getString("result1")) < 0) {
 |  | 
 | 
												
													
														
															|  |                     return -1;
 |  |                     return -1;
 | 
												
													
														
															|  | 
 |  |                 } else if (o1.getString("result1").compareTo(o2.getString("result1")) < 0) {
 | 
												
													
														
															|  | 
 |  |                     return 1;
 | 
												
													
														
															|  |                 } else {
 |  |                 } else {
 | 
												
													
														
															|  |                     return 0;
 |  |                     return 0;
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
											
												
													
														
															|  | @ -248,7 +359,413 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public JSONObject getDoctorStatistics(String startDate, String endDate, String area, int level, String index, String level2_type,Integer flag) throws Exception {
 | 
												
													
														
															|  | 
 |  |         String sql = null;
 | 
												
													
														
															|  | 
 |  |         JSONObject object1= new JSONObject();
 | 
												
													
														
															|  | 
 |  |         if (flag==1){
 | 
												
													
														
															|  | 
 |  |             sql="SELECT dhd.CODE AS dept_code, dhd. NAME AS dept_name, CASE WHEN c. COUNT IS NOT NULL THEN " +
 | 
												
													
														
															|  | 
 |  |                     "c. COUNT ELSE 0 END AS COUNT FROM DICT_HOSPITAL_DEPT dhd " +
 | 
												
													
														
															|  | 
 |  |                     "LEFT JOIN ( SELECT dh.DEPT_CODE, hd. NAME AS dept_name, " +
 | 
												
													
														
															|  | 
 |  |                     "COUNT(dh.DOCTOR_CODE) AS COUNT FROM BASE_DOCTOR bd " +
 | 
												
													
														
															|  | 
 |  |                     "LEFT JOIN BASE_DOCTOR_HOSPITAL dh ON bd. ID = dh.DOCTOR_CODE " +
 | 
												
													
														
															|  | 
 |  |                     "RIGHT JOIN DICT_HOSPITAL_DEPT hd ON hd.CODE = dh.DEPT_CODE " +
 | 
												
													
														
															|  | 
 |  |                     "WHERE bd.DEL = 1 AND bd.OUTPATIENT_TYPE IS NOT NULL GROUP BY dh.DEPT_CODE, hd. NAME " +
 | 
												
													
														
															|  | 
 |  |                     "ORDER BY COUNT DESC ) c ON dhd.CODE = c.DEPT_CODE " +
 | 
												
													
														
															|  | 
 |  |                     "WHERE dhd.CONSULT_DEPT_FLAG='1' " +
 | 
												
													
														
															|  | 
 |  |                     "ORDER BY count desc";
 | 
												
													
														
															|  | 
 |  |             List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
 | 
												
													
														
															|  | 
 |  |             JSONArray array = new JSONArray();
 | 
												
													
														
															|  | 
 |  |             for (Map<String,Object> map:mapList){
 | 
												
													
														
															|  | 
 |  |                 JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                 if (array!=null&&array.size()!=0){
 | 
												
													
														
															|  | 
 |  |                     JSONObject jsonObject = array.getJSONObject(array.size()-1);
 | 
												
													
														
															|  | 
 |  |                     object.put("deptCode",map.get("dept_code"));
 | 
												
													
														
															|  | 
 |  |                     object.put("deptName",map.get("dept_name"));
 | 
												
													
														
															|  | 
 |  |                     object.put("count",map.get("count"));
 | 
												
													
														
															|  | 
 |  |                     if (jsonObject.getInteger("count")==Integer.parseInt(map.get("count").toString())){
 | 
												
													
														
															|  | 
 |  |                         object.put("rank",jsonObject.getInteger("rank"));
 | 
												
													
														
															|  | 
 |  |                     }else if (jsonObject.getInteger("count")>Integer.parseInt(map.get("count").toString())){
 | 
												
													
														
															|  | 
 |  |                         object.put("rank",jsonObject.getInteger("rank")+1);
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }else {
 | 
												
													
														
															|  | 
 |  |                     object.put("deptCode",map.get("dept_code"));
 | 
												
													
														
															|  | 
 |  |                     object.put("deptName",map.get("dept_name"));
 | 
												
													
														
															|  | 
 |  |                     object.put("count",map.get("count"));
 | 
												
													
														
															|  | 
 |  |                     object.put("rank",1);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 array.add(object);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object1.put("data",array);//排名
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         }else if (flag ==2) {
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, null, "6");
 | 
												
													
														
															|  | 
 |  |             String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where hd.ORG_CODE ='" + area + "' and CONSULT_DEPT_FLAG=1";
 | 
												
													
														
															|  | 
 |  |             List<Map<String, Object>> mapList = jdbcTemplate.queryForList(deptSql);
 | 
												
													
														
															|  | 
 |  |             List<JSONObject> result = new ArrayList<>();
 | 
												
													
														
															|  | 
 |  |             for (SaveModel saveModel : saveModels) {
 | 
												
													
														
															|  | 
 |  |                 List<BaseDoctorHospitalDO> baseDoctorHospitalDOS = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                 if (baseDoctorHospitalDOS != null && baseDoctorHospitalDOS.size() != 0) {
 | 
												
													
														
															|  | 
 |  |                     saveModel.setDept(baseDoctorHospitalDOS.get(0).getDeptCode());
 | 
												
													
														
															|  | 
 |  |                     saveModel.setDeptName(baseDoctorHospitalDOS.get(0).getDeptName());
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             for (Map<String, Object> map : mapList) {
 | 
												
													
														
															|  | 
 |  |                 JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                 String code = map.get("code").toString();
 | 
												
													
														
															|  | 
 |  |                 object.put("deptCode", map.get("code"));
 | 
												
													
														
															|  | 
 |  |                 object.put("deptName", map.get("name"));
 | 
												
													
														
															|  | 
 |  |                 Integer count = 0;
 | 
												
													
														
															|  | 
 |  |                 for (SaveModel saveModel : saveModels) {
 | 
												
													
														
															|  | 
 |  |                     if (saveModel.getDept().equalsIgnoreCase(code)) {
 | 
												
													
														
															|  | 
 |  |                         if (saveModel.getResult1() > 0) {
 | 
												
													
														
															|  | 
 |  |                             count += 1;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 object.put("count", count);
 | 
												
													
														
															|  | 
 |  |                 result.add(object);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             // 排序
 | 
												
													
														
															|  | 
 |  |             result.sort(new Comparator<JSONObject>() {
 | 
												
													
														
															|  | 
 |  |                 @Override
 | 
												
													
														
															|  | 
 |  |                 public int compare(JSONObject o1, JSONObject o2) {
 | 
												
													
														
															|  | 
 |  |                     if (o1.getString("count").compareTo(o2.getString("count")) > 0) {
 | 
												
													
														
															|  | 
 |  |                         return -1;
 | 
												
													
														
															|  | 
 |  |                     } else if (o1.getString("count").compareTo(o2.getString("count")) < 0) {
 | 
												
													
														
															|  | 
 |  |                         return 1;
 | 
												
													
														
															|  | 
 |  |                     } else {
 | 
												
													
														
															|  | 
 |  |                         return 0;
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             });
 | 
												
													
														
															|  | 
 |  |             JSONArray array = new JSONArray();
 | 
												
													
														
															|  | 
 |  |             for (JSONObject map:result){
 | 
												
													
														
															|  | 
 |  |                 JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                 if (array!=null&&array.size()!=0){
 | 
												
													
														
															|  | 
 |  |                     JSONObject jsonObject = array.getJSONObject(array.size()-1);
 | 
												
													
														
															|  | 
 |  |                     object.put("deptCode",map.getString("deptCode"));
 | 
												
													
														
															|  | 
 |  |                     object.put("deptName",map.getString("deptName"));
 | 
												
													
														
															|  | 
 |  |                     object.put("count",map.getInteger("count"));
 | 
												
													
														
															|  | 
 |  |                     if (jsonObject.getInteger("count")==map.getInteger("count")){
 | 
												
													
														
															|  | 
 |  |                         object.put("rank",jsonObject.getInteger("rank"));
 | 
												
													
														
															|  | 
 |  |                     }else if (jsonObject.getInteger("count")>map.getInteger("count")){
 | 
												
													
														
															|  | 
 |  |                         object.put("rank",jsonObject.getInteger("rank")+1);
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                 }else {
 | 
												
													
														
															|  | 
 |  |                     object.put("deptCode",map.get("deptCode"));
 | 
												
													
														
															|  | 
 |  |                     object.put("deptName",map.get("deptName"));
 | 
												
													
														
															|  | 
 |  |                     object.put("count",map.get("count"));
 | 
												
													
														
															|  | 
 |  |                     object.put("rank",1);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 array.add(object);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object1.put("data", array);
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return object1;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public JSONObject getDoctorTotal(String startDate, String endDate, String area, int level, String index, String level2_type,Integer flag) throws Exception {
 | 
												
													
														
															|  | 
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         if (flag==1){
 | 
												
													
														
															|  | 
 |  |             String sql = "SELECT bd.JOB_TITLE_CODE, bd.JOB_TITLE_NAME, COUNT(bd.ID) as count FROM " +
 | 
												
													
														
															|  | 
 |  |                     "BASE_DOCTOR bd, BASE_DOCTOR_HOSPITAL bdh,DICT_HOSPITAL_DEPT dhd  WHERE bd.ID = bdh.DOCTOR_CODE AND dhd.code = bdh.DEPT_CODE AND bd.DEL = 1 " +
 | 
												
													
														
															|  | 
 |  |                     " AND bdh.DEL = 1 AND bd.OUTPATIENT_TYPE IS NOT NULL " ;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             String sqlCount = "SELECT COUNT(bd.ID) as total FROM " +
 | 
												
													
														
															|  | 
 |  |                     "BASE_DOCTOR bd, BASE_DOCTOR_HOSPITAL bdh,DICT_HOSPITAL_DEPT dhd WHERE bd.ID = bdh.DOCTOR_CODE AND dhd.code = bdh.DEPT_CODE AND bd.DEL = 1 " +
 | 
												
													
														
															|  | 
 |  |                     " AND bdh.DEL = 1 AND bd.OUTPATIENT_TYPE IS NOT NULL AND dhd.CONSULT_DEPT_FLAG='1' ";
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             if (level==4){
 | 
												
													
														
															|  | 
 |  |                 sql+=" AND dhd.ORG_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |                 sqlCount+=" AND dhd.ORG_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |             }else if (level==5){
 | 
												
													
														
															|  | 
 |  |                 sql+=" AND bdh.DEPT_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |                 sqlCount+=" AND bdh.DEPT_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             sql += " AND dhd.CONSULT_DEPT_FLAG='1' GROUP BY bd.JOB_TITLE_CODE,bd.JOB_TITLE_NAME";
 | 
												
													
														
															|  | 
 |  |             List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);//各职称人数
 | 
												
													
														
															|  | 
 |  |             List<Map<String,Object>> rstotal = jdbcTemplate.queryForList(sqlCount);//总人数
 | 
												
													
														
															|  | 
 |  |             Long total = 0L;
 | 
												
													
														
															|  | 
 |  |             if(rstotal!=null&&rstotal.size()>0){
 | 
												
													
														
															|  | 
 |  |                 total = (Long) rstotal.get(0).get("total");
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             for (Map<String,Object> map:mapList){
 | 
												
													
														
															|  | 
 |  |                 Integer count = Integer.parseInt(map.get("count").toString());
 | 
												
													
														
															|  | 
 |  |                 map.put("rate",getRange(count,total.intValue(),0));//百分比
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object.put("total",total);//总量
 | 
												
													
														
															|  | 
 |  |             object.put("data",mapList);//各职称人数
 | 
												
													
														
															|  | 
 |  |         }else if (flag==2){
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> saveModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, null, "6");
 | 
												
													
														
															|  | 
 |  |             StringBuffer buffer = new StringBuffer();
 | 
												
													
														
															|  | 
 |  |             int total = 0;
 | 
												
													
														
															|  | 
 |  |             for(SaveModel saveModel:saveModels){
 | 
												
													
														
															|  | 
 |  |                 if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                     total+=1;
 | 
												
													
														
															|  | 
 |  |                     buffer.append("'"+saveModel.getDoctor()+"',");
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             if (buffer.length()>0){
 | 
												
													
														
															|  | 
 |  |                 buffer.deleteCharAt(buffer.length()-1);
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             if (buffer.length()>0){
 | 
												
													
														
															|  | 
 |  |                 String sql ="SELECT bd.JOB_TITLE_CODE, bd.JOB_TITLE_NAME,COUNT(bd.ID) AS total FROM BASE_DOCTOR bd WHERE  bd.DEL = 1";
 | 
												
													
														
															|  | 
 |  |                 sql +="  AND bd.ID IN("+buffer+")";
 | 
												
													
														
															|  | 
 |  |                 sql +="  GROUP BY bd.JOB_TITLE_CODE,bd.JOB_TITLE_NAME";
 | 
												
													
														
															|  | 
 |  |                 List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);//各职称人数
 | 
												
													
														
															|  | 
 |  |                 for (Map<String,Object> map:mapList){
 | 
												
													
														
															|  | 
 |  |                     Integer count = Integer.parseInt(map.get("total").toString());
 | 
												
													
														
															|  | 
 |  |                     map.put("rate",getRange(count,total,0));//百分比
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 object.put("total",total);//总量
 | 
												
													
														
															|  | 
 |  |                 object.put("data",mapList);//各职称人数
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return object;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |     public JSONObject getDoctorStatisticsExcel(String startDate, String endDate, String area, int level, String index, String level2_type,Integer flag) throws Exception {
 | 
												
													
														
															|  | 
 |  |         JSONObject object = new JSONObject();
 | 
												
													
														
															|  | 
 |  |         if (flag==1){//开通医生
 | 
												
													
														
															|  | 
 |  |             String sql ="SELECT bd.ID, bd.NAME, bd.OUTPATIENT_TYPE, " +
 | 
												
													
														
															|  | 
 |  |                     "dhd.code AS dept_code, dhd.name AS dept_name,bd.JOB_TITLE_NAME  FROM " +
 | 
												
													
														
															|  | 
 |  |                     "BASE_DOCTOR bd, BASE_DOCTOR_HOSPITAL bdh, " +
 | 
												
													
														
															|  | 
 |  |                     "DICT_HOSPITAL_DEPT dhd WHERE bd.ID = bdh.DOCTOR_CODE " +
 | 
												
													
														
															|  | 
 |  |                     "AND dhd.code = bdh.DEPT_CODE " +
 | 
												
													
														
															|  | 
 |  |                     "AND bd.DEL = 1 " +
 | 
												
													
														
															|  | 
 |  |                     "AND bdh.DEL = 1 " +
 | 
												
													
														
															|  | 
 |  |                     "AND bd.OUTPATIENT_TYPE IS NOT NULL " +
 | 
												
													
														
															|  | 
 |  |                     " AND dhd.CONSULT_DEPT_FLAG='1'";
 | 
												
													
														
															|  | 
 |  |             String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where CONSULT_DEPT_FLAG=1";
 | 
												
													
														
															|  | 
 |  |             if (level==4){//科室
 | 
												
													
														
															|  | 
 |  |                 sql+=" AND dhd.ORG_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |                 deptSql+=" AND hd.ORG_CODE ='" + area + "'";
 | 
												
													
														
															|  | 
 |  |             }else if (level==5){//医生
 | 
												
													
														
															|  | 
 |  |                 sql+=" AND bdh.DEPT_CODE = '"+area+"'";
 | 
												
													
														
															|  | 
 |  |                 deptSql+=" AND hd.CODE ='" + area + "'";
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             List<Map<String,Object>> mapList = jdbcTemplate.queryForList(sql);
 | 
												
													
														
															|  | 
 |  |             List<Map<String, Object>> mapList1 = jdbcTemplate.queryForList(deptSql);
 | 
												
													
														
															|  | 
 |  |             JSONArray array =new JSONArray();
 | 
												
													
														
															|  | 
 |  |             if (level==4){
 | 
												
													
														
															|  | 
 |  |                 for (Map<String,Object> map1:mapList1){
 | 
												
													
														
															|  | 
 |  |                     JSONObject object1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptCode",map1.get("code"));
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptName",map1.get("name"));
 | 
												
													
														
															|  | 
 |  |                     Long topic = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long vedio =0L;
 | 
												
													
														
															|  | 
 |  |                     Long synegy = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long specialist =0L;
 | 
												
													
														
															|  | 
 |  |                     Long other =0L;
 | 
												
													
														
															|  | 
 |  |                     for (Map<String,Object> map:mapList){
 | 
												
													
														
															|  | 
 |  |                         if (map.get("dept_code").toString().equalsIgnoreCase(map1.get("code").toString())){
 | 
												
													
														
															|  | 
 |  |                             String outpatientType = map.get("outpatient_type").toString();
 | 
												
													
														
															|  | 
 |  |                             String str[]=outpatientType.split(",");
 | 
												
													
														
															|  | 
 |  |                             for (int i=0;i<str.length;i++){
 | 
												
													
														
															|  | 
 |  |                                 if (str[i].contains("1")){
 | 
												
													
														
															|  | 
 |  |                                     topic+=1;
 | 
												
													
														
															|  | 
 |  |                                 }else if (str[i].contains("2")){
 | 
												
													
														
															|  | 
 |  |                                     vedio+=1;
 | 
												
													
														
															|  | 
 |  |                                 }else if (str[i].contains("xt")){
 | 
												
													
														
															|  | 
 |  |                                     synegy+=1;
 | 
												
													
														
															|  | 
 |  |                                 }else if (str[i].contains("zj")){
 | 
												
													
														
															|  | 
 |  |                                     specialist+=1;
 | 
												
													
														
															|  | 
 |  |                                 }else {
 | 
												
													
														
															|  | 
 |  |                                     other+=1;
 | 
												
													
														
															|  | 
 |  |                                 }
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     object1.put("topic",topic);//图文
 | 
												
													
														
															|  | 
 |  |                     object1.put("vedio",vedio);//视频
 | 
												
													
														
															|  | 
 |  |                     object1.put("synegy",synegy);//协同
 | 
												
													
														
															|  | 
 |  |                     object1.put("specialist",specialist);//专家
 | 
												
													
														
															|  | 
 |  |                     object1.put("other",other);//其他
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorName","-");//医生名字
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorJob","-");//医生职称
 | 
												
													
														
															|  | 
 |  |                     array.add(object1);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }else if (level==5){
 | 
												
													
														
															|  | 
 |  |                 for (Map<String,Object> map:mapList){
 | 
												
													
														
															|  | 
 |  |                     JSONObject object1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptCode","-");
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptName","-");
 | 
												
													
														
															|  | 
 |  |                     Long topic = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long vedio =0L;
 | 
												
													
														
															|  | 
 |  |                     Long synegy = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long specialist =0L;
 | 
												
													
														
															|  | 
 |  |                     Long other =0L;
 | 
												
													
														
															|  | 
 |  |                     String outpatientType = map.get("outpatient_type").toString();
 | 
												
													
														
															|  | 
 |  |                     String str[]=outpatientType.split(",");
 | 
												
													
														
															|  | 
 |  |                     for (int i=0;i<str.length;i++){
 | 
												
													
														
															|  | 
 |  |                         if (str[i].contains("1")){
 | 
												
													
														
															|  | 
 |  |                             topic+=1;
 | 
												
													
														
															|  | 
 |  |                         }else if (str[i].contains("2")){
 | 
												
													
														
															|  | 
 |  |                             vedio+=1;
 | 
												
													
														
															|  | 
 |  |                         }else if (str[i].contains("xt")){
 | 
												
													
														
															|  | 
 |  |                             synegy+=1;
 | 
												
													
														
															|  | 
 |  |                         }else if (str[i].contains("zj")){
 | 
												
													
														
															|  | 
 |  |                             specialist+=1;
 | 
												
													
														
															|  | 
 |  |                         }else {
 | 
												
													
														
															|  | 
 |  |                             other+=1;
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     object1.put("topic",topic);//图文
 | 
												
													
														
															|  | 
 |  |                     object1.put("vedio",vedio);//视频
 | 
												
													
														
															|  | 
 |  |                     object1.put("synegy",synegy);//协同
 | 
												
													
														
															|  | 
 |  |                     object1.put("specialist",specialist);//专家
 | 
												
													
														
															|  | 
 |  |                     object1.put("other",other);//其他
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorName",map.get("name"));//医生名字
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorJob",map.get("job_title_name"));//医生职称
 | 
												
													
														
															|  | 
 |  |                     array.add(object1);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object.put("data",array);
 | 
												
													
														
															|  | 
 |  |         }else if (flag==2){//活跃医生
 | 
												
													
														
															|  | 
 |  |             //图文
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> topicModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","1",null, "6");
 | 
												
													
														
															|  | 
 |  |             //视频
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> vedioModels = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "1","2",null, "6");
 | 
												
													
														
															|  | 
 |  |             //协同
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> synegyModels = elasticsearchUtil.findDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, "2",null, "6");
 | 
												
													
														
															|  | 
 |  |             //专科
 | 
												
													
														
															|  | 
 |  |             List<SaveModel> specialistModels = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level,"4", SaveModel.timeLevel_ZL,null, "6");
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |             String deptSql = "select hd.CODE,hd.NAME from DICT_HOSPITAL_DEPT hd where CONSULT_DEPT_FLAG=1";
 | 
												
													
														
															|  | 
 |  |             if (level==4){//科室
 | 
												
													
														
															|  | 
 |  |                 deptSql+=" AND hd.ORG_CODE ='" + area + "'";
 | 
												
													
														
															|  | 
 |  |             }else if (level==5){//医生
 | 
												
													
														
															|  | 
 |  |                 deptSql+=" AND hd.CODE ='" + area + "'";
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             List<Map<String, Object>> mapList1 = jdbcTemplate.queryForList(deptSql);
 | 
												
													
														
															|  | 
 |  |             JSONArray array =new JSONArray();
 | 
												
													
														
															|  | 
 |  |             if (level==4){
 | 
												
													
														
															|  | 
 |  |                 for (Map<String,Object> map:mapList1){
 | 
												
													
														
															|  | 
 |  |                     Long topic = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long vedio =0L;
 | 
												
													
														
															|  | 
 |  |                     Long synegy = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long specialist =0L;
 | 
												
													
														
															|  | 
 |  |                     Long other =0L;
 | 
												
													
														
															|  | 
 |  |                     JSONObject jsonObject = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:topicModels){
 | 
												
													
														
															|  | 
 |  |                         if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                             List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                             if (doctorHospitalDOs!=null&&doctorHospitalDOs.size()!=0){
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDept(doctorHospitalDOs.get(0).getDeptCode());
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDeptName(doctorHospitalDOs.get(0).getDeptName());
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                             if(map.get("code").toString().equalsIgnoreCase(saveModel.getDept())) {
 | 
												
													
														
															|  | 
 |  |                                 topic += 1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:vedioModels){
 | 
												
													
														
															|  | 
 |  |                         if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                             List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                             if (doctorHospitalDOs!=null&&doctorHospitalDOs.size()!=0){
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDept(doctorHospitalDOs.get(0).getDeptCode());
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDeptName(doctorHospitalDOs.get(0).getDeptName());
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                             if(map.get("code").toString().equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                                 vedio+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:synegyModels){
 | 
												
													
														
															|  | 
 |  |                         if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                             List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                             if (doctorHospitalDOs!=null&&doctorHospitalDOs.size()!=0){
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDept(doctorHospitalDOs.get(0).getDeptCode());
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDeptName(doctorHospitalDOs.get(0).getDeptName());
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                             if(map.get("code").toString().equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                                     synegy+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:specialistModels){
 | 
												
													
														
															|  | 
 |  |                         if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                             List<BaseDoctorHospitalDO> doctorHospitalDOs = doctorHospitalDao.findByDoctorCode(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                             if (doctorHospitalDOs!=null&&doctorHospitalDOs.size()!=0){
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDept(doctorHospitalDOs.get(0).getDeptCode());
 | 
												
													
														
															|  | 
 |  |                                 saveModel.setDeptName(doctorHospitalDOs.get(0).getDeptName());
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                             if(map.get("code").toString().equalsIgnoreCase(saveModel.getDept())){
 | 
												
													
														
															|  | 
 |  |                                     specialist+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("topic",topic);//图文
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("vedio",vedio);//视频
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("synegy",synegy);//协同
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("specialist",specialist);//专家
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("other",other);//其他
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("doctorName","-");//医生名字
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("doctorJob","-");//医生职称
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("deptCode",map.get("code"));
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("deptName",map.get("name"));
 | 
												
													
														
															|  | 
 |  |                     array.add(jsonObject);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }else if (level==5){
 | 
												
													
														
															|  | 
 |  |                 Set<JSONObject> set = new HashSet<>();
 | 
												
													
														
															|  | 
 |  |                 for(SaveModel saveModel:topicModels){
 | 
												
													
														
															|  | 
 |  |                     BaseDoctorDO doctorDO = doctorDao.findById(saveModel.getDoctor());
 | 
												
													
														
															|  | 
 |  |                     JSONObject object1 = new JSONObject();
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorName",doctorDO.getName());//
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctorJob",doctorDO.getJobTitleName());//
 | 
												
													
														
															|  | 
 |  |                     object1.put("doctor",doctorDO.getId());
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptCode","-");
 | 
												
													
														
															|  | 
 |  |                     object1.put("deptName","-");
 | 
												
													
														
															|  | 
 |  |                     set.add(object1);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |                 for (JSONObject jsonObject:set){
 | 
												
													
														
															|  | 
 |  |                     Long topic = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long vedio =0L;
 | 
												
													
														
															|  | 
 |  |                     Long synegy = 0L;
 | 
												
													
														
															|  | 
 |  |                     Long specialist =0L;
 | 
												
													
														
															|  | 
 |  |                     Long other =0L;
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:topicModels){
 | 
												
													
														
															|  | 
 |  |                         if(jsonObject.getString("doctor").equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                                 topic+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:vedioModels){
 | 
												
													
														
															|  | 
 |  |                         if(jsonObject.getString("doctor").equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                                 vedio+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:synegyModels){
 | 
												
													
														
															|  | 
 |  |                         if(jsonObject.getString("doctor").equalsIgnoreCase(saveModel.getDoctor())){
 | 
												
													
														
															|  | 
 |  |                             if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                                 synegy+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     for(SaveModel saveModel:specialistModels) {
 | 
												
													
														
															|  | 
 |  |                         if (jsonObject.getString("doctor").equalsIgnoreCase(saveModel.getDoctor())) {
 | 
												
													
														
															|  | 
 |  |                             if (saveModel.getResult1()>0){
 | 
												
													
														
															|  | 
 |  |                                 specialist+=1;
 | 
												
													
														
															|  | 
 |  |                             }
 | 
												
													
														
															|  | 
 |  |                         }
 | 
												
													
														
															|  | 
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("topic",topic);//图文
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("vedio",vedio);//视频
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("synegy",synegy);//协同
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("specialist",specialist);//专家
 | 
												
													
														
															|  | 
 |  |                     jsonObject.put("other",other);//其他
 | 
												
													
														
															|  | 
 |  |                     array.add(jsonObject);
 | 
												
													
														
															|  | 
 |  |                 }
 | 
												
													
														
															|  | 
 |  |             }
 | 
												
													
														
															|  | 
 |  |             object.put("data",array);
 | 
												
													
														
															|  | 
 |  |         }
 | 
												
													
														
															|  | 
 |  |         return object;
 | 
												
													
														
															|  | 
 |  |     }
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
											
												
													
														
															|  | @ -266,7 +783,7 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             return "0%";
 |  |             return "0%";
 | 
												
													
														
															|  |         }
 |  |         }
 | 
												
													
														
															|  |         float size = (float) (first * 100) / second;
 |  |         float size = (float) (first * 100) / second;
 | 
												
													
														
															|  |         DecimalFormat df = new DecimalFormat("0.00");//格式化小数,不足的补0
 |  | 
 | 
												
													
														
															|  | 
 |  |         DecimalFormat df = new DecimalFormat("0");//格式化小数,不足的补0
 | 
												
													
														
															|  |         String filesize = df.format(size);
 |  |         String filesize = df.format(size);
 | 
												
													
														
															|  |         return filesize + "%";
 |  |         return filesize + "%";
 | 
												
													
														
															|  |     }
 |  |     }
 | 
												
											
												
													
														
															|  | @ -593,10 +1110,10 @@ public class StatisticsEsService {
 | 
												
													
														
															|  |             if (k == 0) {
 |  |             if (k == 0) {
 | 
												
													
														
															|  |                 next.add(Calendar.MONTH, 1);
 |  |                 next.add(Calendar.MONTH, 1);
 | 
												
													
														
															|  |             } else {
 |  |             } else {
 | 
												
													
														
															|  |                 next.add(Calendar.MONTH, 2);
 |  | 
 | 
												
													
														
															|  | 
 |  |                 next.add(Calendar.MONTH, 1);
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             next.set(Calendar.DAY_OF_MONTH, 1);
 |  | 
 | 
												
													
														
															|  |             next.add(Calendar.DAY_OF_MONTH, -1);
 |  | 
 | 
												
													
														
															|  | 
 |  |             /*next.set(Calendar.DAY_OF_MONTH, 1);
 | 
												
													
														
															|  | 
 |  |             next.add(Calendar.DAY_OF_MONTH, -1);*/
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |             if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
 |  |             if (next.getTime().before(DateUtil.strToDate(endDate, "yyyy-MM-dd"))) {
 | 
												
													
														
															|  |                 days.add(next);
 |  |                 days.add(next);
 |