|  | @ -1,5 +1,6 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.service.statistics;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  | import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | import com.yihu.jw.care.util.ConstantUtil;
 | 
	
		
			
				|  |  | import com.yihu.jw.dict.dao.DictHospitalDeptDao;
 | 
	
	
		
			
				|  | @ -17,6 +18,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.Calendar;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  *
 | 
	
	
		
			
				|  | @ -72,9 +74,241 @@ public class StatisticsService {
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 咨询分析
 | 
	
		
			
				|  |  |      * type 1幼儿 2老人
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject consultAnalysis(String endDate, String area, int level, String type) throws Exception{
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
		
			
				|  |  |         String totalIndex = "28";
 | 
	
		
			
				|  |  |         String noReplyIndex = "29";
 | 
	
		
			
				|  |  |         String inTimeIndex = "30";
 | 
	
		
			
				|  |  |         if("2".equals(type)){
 | 
	
		
			
				|  |  |             totalIndex = "31";
 | 
	
		
			
				|  |  |             noReplyIndex = "32";
 | 
	
		
			
				|  |  |             inTimeIndex = "33";
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         //咨询总数
 | 
	
		
			
				|  |  |         SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, totalIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //未回复数
 | 
	
		
			
				|  |  |         SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, noReplyIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //及时回复数
 | 
	
		
			
				|  |  |         SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, inTimeIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         res.put("total",saveModel1.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("noReply",saveModel2.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("inTime",saveModel3.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("noReplyRate",statisticsUtilService.getTwoRange(saveModel2.getResult2(),saveModel1.getResult2()));
 | 
	
		
			
				|  |  |         res.put("inTimeRate",statisticsUtilService.getTwoRange(saveModel3.getResult2(),saveModel1.getResult2()));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 上门辅导分析
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject doorCoachAnalysis(String endDate, String area, int level) throws Exception{
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
		
			
				|  |  |         String totalIndex = "34";
 | 
	
		
			
				|  |  |         String noReplyIndex = "35";
 | 
	
		
			
				|  |  |         String inTimeIndex = "36";
 | 
	
		
			
				|  |  |         //幼儿数
 | 
	
		
			
				|  |  |         SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, totalIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //工单数
 | 
	
		
			
				|  |  |         SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, noReplyIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //服务费用
 | 
	
		
			
				|  |  |         SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, inTimeIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         res.put("patientNum",saveModel1.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("orderNum",saveModel2.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("fee",saveModel3.getResult1());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //服务项目分析
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,inTimeIndex,SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |         for(int i=0;(i<list.size()&&i<5);i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = list.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |             jsonArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         res.put("items",jsonArray);
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 上门辅导服务项目
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONArray doorCoachItems(String endDate, String area, int level) throws Exception{
 | 
	
		
			
				|  |  |         //服务项目分析
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,"36",SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |         for(int i=0;i<list.size();i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = list.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |             jsonArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return jsonArray;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 通用增量趋势接口
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONArray addLine(String startDate,String endDate, String area, int level,String index,String timeLevel,String interval,String lowLevel)throws Exception{
 | 
	
		
			
				|  |  |         List<SaveModel> list = elasticsearchUtil.findDateQuotaLevel0(startDate,endDate,area,level,index,timeLevel,interval,lowLevel);
 | 
	
		
			
				|  |  |         JSONArray result = new JSONArray();
 | 
	
		
			
				|  |  |         for (SaveModel saveModel : list) {
 | 
	
		
			
				|  |  |             JSONObject range = new JSONObject();
 | 
	
		
			
				|  |  |             range.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 | 
	
		
			
				|  |  |             range.put("amount", saveModel.getResult2());
 | 
	
		
			
				|  |  |             result.add(range);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 居民分析
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject patientAnalysis(String endDate, String area, int level,String index) throws Exception{
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String areaLevel = "6";
 | 
	
		
			
				|  |  |         if("42".equals(index)){
 | 
	
		
			
				|  |  |             areaLevel = "4";
 | 
	
		
			
				|  |  |             //新生儿
 | 
	
		
			
				|  |  |             //是否入学
 | 
	
		
			
				|  |  |             List<SaveModel> statusList = elasticsearchUtil.findDateAllQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL,null,null,areaLevel);
 | 
	
		
			
				|  |  |             JSONArray statusArray = new JSONArray();
 | 
	
		
			
				|  |  |             for(int i=0;i<statusList.size();i++){
 | 
	
		
			
				|  |  |                 SaveModel saveModel = statusList.get(i);
 | 
	
		
			
				|  |  |                 JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |                 json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |                 json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |                 json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |                 statusArray.add(json);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             res.put("statusList",statusArray);
 | 
	
		
			
				|  |  |         }else{
 | 
	
		
			
				|  |  |             //老人
 | 
	
		
			
				|  |  |             //能力评估
 | 
	
		
			
				|  |  |             List<SaveModel> levelList = elasticsearchUtil.findDateAllQuotaLevel1(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL,null,null,areaLevel);
 | 
	
		
			
				|  |  |             JSONArray levelArray = new JSONArray();
 | 
	
		
			
				|  |  |             for(int i=0;i<levelList.size();i++){
 | 
	
		
			
				|  |  |                 SaveModel saveModel = levelList.get(i);
 | 
	
		
			
				|  |  |                 JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |                 json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |                 json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |                 json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |                 levelArray.add(json);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             res.put("levelList",levelArray);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             //年龄分布
 | 
	
		
			
				|  |  |             List<SaveModel> ageList = elasticsearchUtil.findDateAllQuotaLevel3(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |             JSONArray ageArray = new JSONArray();
 | 
	
		
			
				|  |  |             for(int i=0;i<ageList.size();i++){
 | 
	
		
			
				|  |  |                 SaveModel saveModel = ageList.get(i);
 | 
	
		
			
				|  |  |                 JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |                 json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |                 json.put("code",saveModel.getSlaveKey3());
 | 
	
		
			
				|  |  |                 json.put("name",saveModel.getSlaveKey3Name());
 | 
	
		
			
				|  |  |                 ageArray.add(json);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             res.put("ageList",ageArray);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //性别
 | 
	
		
			
				|  |  |         List<SaveModel> sexList = elasticsearchUtil.findDateAllQuotaLevel2(endDate, endDate, area, level, index, SaveModel.timeLevel_DDL,null,null,areaLevel);
 | 
	
		
			
				|  |  |         JSONArray sexArray = new JSONArray();
 | 
	
		
			
				|  |  |         for(int i=0;i<sexList.size();i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = sexList.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey2());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey2Name());
 | 
	
		
			
				|  |  |             sexArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         res.put("sexList",sexArray);
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 生活照料分析
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONObject lifeCareAnalysis(String endDate, String area, int level) throws Exception{
 | 
	
		
			
				|  |  |         JSONObject res = new JSONObject();
 | 
	
		
			
				|  |  |         String totalIndex = "38";
 | 
	
		
			
				|  |  |         String noReplyIndex = "39";
 | 
	
		
			
				|  |  |         String inTimeIndex = "40";
 | 
	
		
			
				|  |  |         //老人数
 | 
	
		
			
				|  |  |         SaveModel saveModel1 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, totalIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //工单数
 | 
	
		
			
				|  |  |         SaveModel saveModel2 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, noReplyIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         //服务费用
 | 
	
		
			
				|  |  |         SaveModel saveModel3 = elasticsearchUtil.findOneDateQuotaLevel0(endDate, endDate, area, level, inTimeIndex, SaveModel.timeLevel_DDL);
 | 
	
		
			
				|  |  |         res.put("patientNum",saveModel1.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("orderNum",saveModel2.getResult2().longValue());
 | 
	
		
			
				|  |  |         res.put("fee",saveModel3.getResult1());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         //服务项目分析
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,inTimeIndex,SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |         for(int i=0;(i<list.size()&&i<5);i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = list.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |             jsonArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         res.put("items",jsonArray);
 | 
	
		
			
				|  |  |         return res;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 生活照料服务项目
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONArray lifeCareItems(String endDate, String area, int level) throws Exception{
 | 
	
		
			
				|  |  |         //服务项目分析
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,"40",SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |         for(int i=0;i<list.size();i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = list.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |             jsonArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return jsonArray;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 能力评估评估类型
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public JSONArray capacityAssessment(String endDate, String area, int level) throws Exception{
 | 
	
		
			
				|  |  |         //评估类型
 | 
	
		
			
				|  |  |         JSONArray jsonArray = new JSONArray();
 | 
	
		
			
				|  |  |         List<SaveModel> list = statisticsUtilService.findDateAllQuotaLevel1Sort(endDate,endDate,area,level,"37",SaveModel.timeLevel_DDL,null,null);
 | 
	
		
			
				|  |  |         for(int i=0;i<list.size();i++){
 | 
	
		
			
				|  |  |             SaveModel saveModel = list.get(i);
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("num",saveModel.getResult2().longValue());
 | 
	
		
			
				|  |  |             json.put("code",saveModel.getSlaveKey1());
 | 
	
		
			
				|  |  |             json.put("name",saveModel.getSlaveKey1Name());
 | 
	
		
			
				|  |  |             jsonArray.add(json);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return jsonArray;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  |         /**
 | 
	
		
			
				|  |  |          * 统计首页头部数据
 | 
	
		
			
				|  |  |          * @param area
 |