|  | @ -1,667 +0,0 @@
 | 
												
													
														
															|  | package com.yihu.jw.care.service.statistics;
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import com.yihu.jw.es.service.StatisticsEsService;
 |  | 
 | 
												
													
														
															|  | import com.yihu.jw.es.util.ElasticsearchUtil;
 |  | 
 | 
												
													
														
															|  | import com.yihu.jw.es.util.SaveModel;
 |  | 
 | 
												
													
														
															|  | import com.yihu.jw.util.date.DateUtil;
 |  | 
 | 
												
													
														
															|  | import org.apache.commons.lang.StringUtils;
 |  | 
 | 
												
													
														
															|  | import org.springframework.beans.factory.annotation.Autowired;
 |  | 
 | 
												
													
														
															|  | import org.springframework.beans.factory.annotation.Value;
 |  | 
 | 
												
													
														
															|  | import org.springframework.stereotype.Service;
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import java.text.DecimalFormat;
 |  | 
 | 
												
													
														
															|  | import java.util.*;
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | /**
 |  | 
 | 
												
													
														
															|  |  * 统计工具类
 |  | 
 | 
												
													
														
															|  |  * Created by yeshijie on 2020/12/14.
 |  | 
 | 
												
													
														
															|  |  */
 |  | 
 | 
												
													
														
															|  | @Service
 |  | 
 | 
												
													
														
															|  | public class StatisticsUtilService {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @Value("${es.type.Statistics}")
 |  | 
 | 
												
													
														
															|  |     private String esType;
 |  | 
 | 
												
													
														
															|  |     @Value("${es.index.Statistics}")
 |  | 
 | 
												
													
														
															|  |     private String esIndex;
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  | 
 | 
												
													
														
															|  |     private ElasticsearchUtil elasticsearchUtil;
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  | 
 | 
												
													
														
															|  |     private StatisticsEsService statisticsESService;
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public final String commonParams = "xmijk_quota";
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 根据开始时间 结束时间判断查询增量还是到达量
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public String getDDLOrZL(String startDate,String endDate){
 |  | 
 | 
												
													
														
															|  |         String ddlOrZl = "1";
 |  | 
 | 
												
													
														
															|  |         if(endDate.equals(startDate)){
 |  | 
 | 
												
													
														
															|  |             ddlOrZl = SaveModel.timeLevel_DDL;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return ddlOrZl;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 获取签约开始时间,7月1号
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public String getSignStartDay(){
 |  | 
 | 
												
													
														
															|  |         return DateUtil.getSignYear()+"-07-01";
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 如果开始时间是7月1号 就设置为结束时间
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public String getStartDate(String startDate,String endDate){
 |  | 
 | 
												
													
														
															|  |         if(startDate.equals(getSignStartDay())){
 |  | 
 | 
												
													
														
															|  |             return endDate;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return startDate;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 是否是专科
 |  | 
 | 
												
													
														
															|  |      * @param level
 |  | 
 | 
												
													
														
															|  |      * @param area
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public boolean isSpecialist(int level,String area){
 |  | 
 | 
												
													
														
															|  |         if(level == 4 && area.length() != 10){
 |  | 
 | 
												
													
														
															|  |             return true;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return false;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 获取下转的map
 |  | 
 | 
												
													
														
															|  |      * @param saveModel
 |  | 
 | 
												
													
														
															|  |      * @param lowLevel
 |  | 
 | 
												
													
														
															|  |      * @param result2Name
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> getMapTurnDownResult2(SaveModel saveModel,String lowLevel,String result2Name){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = getMapTurnDown(saveModel, lowLevel);
 |  | 
 | 
												
													
														
															|  |         map.put(result2Name, saveModel.getResult2().longValue());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> getMapTurnDownResult12(SaveModel saveModel,String lowLevel,String result1Name,String result2Name){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = getMapTurnDown(saveModel, lowLevel);
 |  | 
 | 
												
													
														
															|  |         map.put(result1Name, saveModel.getResult1());
 |  | 
 | 
												
													
														
															|  |         map.put(result2Name, saveModel.getResult2().longValue());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> getMapTurnDown(SaveModel saveModel,String lowLevel){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = new HashMap<>(16);
 |  | 
 | 
												
													
														
															|  |         if (SaveModel.OrgLevel.equals(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             map.put("code", saveModel.getHospital());
 |  | 
 | 
												
													
														
															|  |             map.put("name", saveModel.getHospitalName());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.townLevel.equals(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             map.put("code", saveModel.getTown());
 |  | 
 | 
												
													
														
															|  |             map.put("name", saveModel.getTownName());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.cityLevel.equals(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             map.put("code", saveModel.getCity());
 |  | 
 | 
												
													
														
															|  |             map.put("name", saveModel.getCityName());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.deptLevel.equals(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             map.put("code", saveModel.getDept());
 |  | 
 | 
												
													
														
															|  |             map.put("name", saveModel.getDeptName());
 |  | 
 | 
												
													
														
															|  |         }else if (SaveModel.doctorLevel.equals(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             map.put("code", saveModel.getDoctor());
 |  | 
 | 
												
													
														
															|  |             map.put("name", saveModel.getDoctorName());
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public boolean compareSaveModel(SaveModel saveModel1,SaveModel saveModel2,String lowLevel){
 |  | 
 | 
												
													
														
															|  |         if (SaveModel.OrgLevel.equals(lowLevel) && saveModel1.getHospital() != null && saveModel2.getHospital() != null) {
 |  | 
 | 
												
													
														
															|  |             return saveModel1.getHospital().equals(saveModel2.getHospital());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.townLevel.equals(lowLevel) && saveModel1.getTown() != null && saveModel2.getTown() != null) {
 |  | 
 | 
												
													
														
															|  |             return saveModel1.getTown().equals(saveModel2.getTown());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.cityLevel.equals(lowLevel) && saveModel1.getCity() != null && saveModel2.getCity() != null) {
 |  | 
 | 
												
													
														
															|  |             return saveModel1.getCity().equals(saveModel2.getCity());
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.deptLevel.equals(lowLevel) && saveModel1.getDept() != null && saveModel2.getDept() != null) {
 |  | 
 | 
												
													
														
															|  |             return saveModel1.getDept().equals(saveModel2.getDept());
 |  | 
 | 
												
													
														
															|  |         }else if (SaveModel.doctorLevel.equals(lowLevel) && saveModel1.getDoctor() != null && saveModel2.getDoctor() != null) {
 |  | 
 | 
												
													
														
															|  |             return saveModel1.getDoctor().equals(saveModel2.getDoctor());
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return false;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 获取到达量或者增量
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @param area
 |  | 
 | 
												
													
														
															|  |      * @param level
 |  | 
 | 
												
													
														
															|  |      * @param index
 |  | 
 | 
												
													
														
															|  |      * @param level2_type
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      * @throws Exception
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public long getTotalAmountDDLOrZL(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception{
 |  | 
 | 
												
													
														
															|  |         if(endDate.equals(startDate)){
 |  | 
 | 
												
													
														
															|  |             return getTotalAmount3DDL(startDate, endDate, area, level, index, level2_type);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return getTotalAmount3ZL(startDate, endDate, area, level, index, level2_type);
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public long getTotalAmount3ZL(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         SaveModel saveModel = null;
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(level2_type)) {
 |  | 
 | 
												
													
														
															|  |             saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL, level2_type);
 |  | 
 | 
												
													
														
															|  |         } else {
 |  | 
 | 
												
													
														
															|  |             saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_ZL);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return saveModel.getResult2().longValue();
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public long getTotalAmount3DDL(String startDate, String endDate, String area, int level, String index, String level2_type) throws Exception {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         SaveModel saveModel = null;
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(level2_type)) {
 |  | 
 | 
												
													
														
															|  |             saveModel = elasticsearchUtil.findOneDateQuotaLevel1(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL, level2_type);
 |  | 
 | 
												
													
														
															|  |         } else {
 |  | 
 | 
												
													
														
															|  |             saveModel = elasticsearchUtil.findOneDateQuotaLevel0(startDate, endDate, area, level, index, SaveModel.timeLevel_DDL);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return saveModel.getResult2().longValue();
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> saveModelToMap(SaveModel saveModel){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = new HashMap<>(16);
 |  | 
 | 
												
													
														
															|  |         map.put("range", DateUtil.dateToStr(saveModel.getQuotaDate(), "yyyy-MM-dd"));
 |  | 
 | 
												
													
														
															|  |         map.put("amount", saveModel.getResult2());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> slaveKay1ToMapLong(SaveModel saveModel){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = new HashMap<>(16);
 |  | 
 | 
												
													
														
															|  |         map.put("code", saveModel.getSlaveKey1());
 |  | 
 | 
												
													
														
															|  |         map.put("name", saveModel.getSlaveKey1Name());
 |  | 
 | 
												
													
														
															|  |         map.put("num", saveModel.getResult2().longValue());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> slaveKay1ToMapLong2(SaveModel saveModel){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = new HashMap<>(16);
 |  | 
 | 
												
													
														
															|  |         map.put("code", saveModel.getSlaveKey1());
 |  | 
 | 
												
													
														
															|  |         map.put("name", saveModel.getSlaveKey1Name());
 |  | 
 | 
												
													
														
															|  |         map.put("num", saveModel.getResult2().longValue());
 |  | 
 | 
												
													
														
															|  |         map.put("price", saveModel.getResult1());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public Map<String, Object> slaveKay2ToMapLong(SaveModel saveModel){
 |  | 
 | 
												
													
														
															|  |         Map<String, Object> map = new HashMap<>(16);
 |  | 
 | 
												
													
														
															|  |         map.put("code", saveModel.getSlaveKey2());
 |  | 
 | 
												
													
														
															|  |         map.put("name", saveModel.getSlaveKey2Name());
 |  | 
 | 
												
													
														
															|  |         map.put("num", saveModel.getResult2().longValue());
 |  | 
 | 
												
													
														
															|  |         return map;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 计算开始时间
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @param type 1周,2月
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public String calStart(String endDate,String type){
 |  | 
 | 
												
													
														
															|  |         if(StringUtils.isEmpty(endDate)){
 |  | 
 | 
												
													
														
															|  |             return endDate;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         Calendar cal = Calendar.getInstance();
 |  | 
 | 
												
													
														
															|  |         cal.setTime(DateUtil.strToDate(endDate));
 |  | 
 | 
												
													
														
															|  |         if("1".equals(type)){
 |  | 
 | 
												
													
														
															|  |             if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
 |  | 
 | 
												
													
														
															|  |                 cal.add(Calendar.DAY_OF_WEEK,-1);
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
 |  | 
 | 
												
													
														
															|  |         }else{
 |  | 
 | 
												
													
														
															|  |             cal.set(Calendar.DAY_OF_MONTH,1);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return DateUtil.dateToStrShort(cal.getTime());
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public String getSaveModelCode(int level,SaveModel saveModel){
 |  | 
 | 
												
													
														
															|  |         if(level == 4){
 |  | 
 | 
												
													
														
															|  |             return saveModel.getDept();
 |  | 
 | 
												
													
														
															|  |         }else if(level == 3){
 |  | 
 | 
												
													
														
															|  |             return saveModel.getHospital();
 |  | 
 | 
												
													
														
															|  |         }else if(level == 2){
 |  | 
 | 
												
													
														
															|  |             return saveModel.getTown();
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return null;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 按sortName排序 降序
 |  | 
 | 
												
													
														
															|  |      * @param resultList
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public void sortDoubleList(List<Map<String,Object>> resultList, String sortName){
 |  | 
 | 
												
													
														
															|  |         resultList.sort((x,y)->{
 |  | 
 | 
												
													
														
															|  |             if ( (Long) x.get(sortName) > (Long) y.get(sortName)) {
 |  | 
 | 
												
													
														
															|  |                 return 1;
 |  | 
 | 
												
													
														
															|  |             } else if ((Long) x.get(sortName) < (Long) y.get(sortName)) {
 |  | 
 | 
												
													
														
															|  |                 return -1;
 |  | 
 | 
												
													
														
															|  |             } else {
 |  | 
 | 
												
													
														
															|  |                 return 0;
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         });
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      *  降序
 |  | 
 | 
												
													
														
															|  |      * @param resultList
 |  | 
 | 
												
													
														
															|  |      * @param sortName
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public void sortLongList(List<Map<String,Object>> resultList,String sortName){
 |  | 
 | 
												
													
														
															|  |         resultList.sort((x,y)->{
 |  | 
 | 
												
													
														
															|  |             if ( (Long) x.get(sortName) > (Long) y.get(sortName)) {
 |  | 
 | 
												
													
														
															|  |                 return -1;
 |  | 
 | 
												
													
														
															|  |             } else if ((Long) x.get(sortName) < (Long) y.get(sortName)) {
 |  | 
 | 
												
													
														
															|  |                 return 1;
 |  | 
 | 
												
													
														
															|  |             } else {
 |  | 
 | 
												
													
														
															|  |                 return 0;
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         });
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**************************************************封装的方法 start ********************************************/
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 查询总量
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @param area
 |  | 
 | 
												
													
														
															|  |      * @param level
 |  | 
 | 
												
													
														
															|  |      * @param index
 |  | 
 | 
												
													
														
															|  |      * @param timelevel
 |  | 
 | 
												
													
														
															|  |      * @param slaveKey1
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      * @throws Exception
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public long getTotalAmount(String startDate, String endDate, String area, int level, String index, String timelevel, String slaveKey1) throws Exception{
 |  | 
 | 
												
													
														
															|  |         if(SaveModel.timeLevel_DDL.equals(timelevel)){
 |  | 
 | 
												
													
														
															|  |             return getTotalAmount3DDL(startDate,endDate,area,level,index,slaveKey1);
 |  | 
 | 
												
													
														
															|  |         }else {
 |  | 
 | 
												
													
														
															|  |             return getTotalAmount3ZL(startDate,endDate,area,level,index,slaveKey1);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 查一级指标
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @param area
 |  | 
 | 
												
													
														
															|  |      * @param level
 |  | 
 | 
												
													
														
															|  |      * @param index
 |  | 
 | 
												
													
														
															|  |      * @param timeLevel
 |  | 
 | 
												
													
														
															|  |      * @param interval
 |  | 
 | 
												
													
														
															|  |      * @param slaveKey1
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      * @throws Exception
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public List findDateQuotaLevel0BySlaveKey1(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String slaveKey1) throws Exception {
 |  | 
 | 
												
													
														
															|  |         if(StringUtils.isEmpty(slaveKey1)){
 |  | 
 | 
												
													
														
															|  |             return elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, index, timeLevel, interval, null);
 |  | 
 | 
												
													
														
															|  |         }else {
 |  | 
 | 
												
													
														
															|  |             return findDateQuotaLevel0BySlaveKey1(startDate,endDate,area,level,index,timeLevel,interval,null,slaveKey1);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public long getTotalAmountLevel2BySlaveKey1(String startDate, String endDate, String area, int level, String index, String timeLevel, String slaveKey1, String slaveKey2 ) throws Exception{
 |  | 
 | 
												
													
														
															|  |         SaveModel saveModel = findOneDateQuotaLevel2BySlaveKey1(startDate, endDate, area, level, index, timeLevel, slaveKey1, slaveKey2);
 |  | 
 | 
												
													
														
															|  |         return saveModel.getResult1().longValue();
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public SaveModel findOneDateQuotaLevel2BySlaveKey1(String startDate, String endDate, String area, int level, String index, String timeLevel, String slaveKey1, String slaveKey2) throws Exception {
 |  | 
 | 
												
													
														
															|  |         if(StringUtils.isEmpty(slaveKey2)){
 |  | 
 | 
												
													
														
															|  |             slaveKey2 = commonParams;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         List list = findDateQuotaLevel2BySlaveKey1(startDate, endDate, area, level, index, timeLevel, slaveKey1, slaveKey2,null, null);
 |  | 
 | 
												
													
														
															|  |         return (SaveModel) list.get(0);
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 查找一级或二级维度
 |  | 
 | 
												
													
														
															|  |      * @param startDate
 |  | 
 | 
												
													
														
															|  |      * @param endDate
 |  | 
 | 
												
													
														
															|  |      * @param area
 |  | 
 | 
												
													
														
															|  |      * @param level
 |  | 
 | 
												
													
														
															|  |      * @param index
 |  | 
 | 
												
													
														
															|  |      * @param timeLevel
 |  | 
 | 
												
													
														
															|  |      * @param slaveKey1
 |  | 
 | 
												
													
														
															|  |      * @param slaveKey2
 |  | 
 | 
												
													
														
															|  |      * @param interval
 |  | 
 | 
												
													
														
															|  |      * @param lowLevel
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public List findDateQuotaLevel2BySlaveKey1(String startDate, String endDate, String area, int level, String index, String timeLevel, String slaveKey1, String slaveKey2, String interval, String lowLevel) {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
 |  | 
 | 
												
													
														
															|  |         startDate = changeDateTime(startDate);
 |  | 
 | 
												
													
														
															|  |         endDate = changeDateTime(endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         StringBuffer sql = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         StringBuffer groupBy = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         String low_level = level + "";
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             low_level = lowLevel;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlGroupBySlaveKey(sql,groupBy,low_level,slaveKey2,"slaveKey2","slaveKey2Name");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(sql,area,level,index,timeLevel,startDate,endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey1,"slaveKey1",sql);
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey2,"slaveKey2",sql);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //根据时间维度分组
 |  | 
 | 
												
													
														
															|  |         groupByInterval(interval,groupBy);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sql.append(groupBy);
 |  | 
 | 
												
													
														
															|  |         return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
 |  | 
 | 
												
													
														
															|  |      * @param dateTime
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public String changeDateTime(String dateTime){
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(dateTime)) {
 |  | 
 | 
												
													
														
															|  |             if (dateTime.length() > 10) {
 |  | 
 | 
												
													
														
															|  |                 return elasticsearchUtil.changeTime(dateTime);
 |  | 
 | 
												
													
														
															|  |             } else {
 |  | 
 | 
												
													
														
															|  |                 return elasticsearchUtil.changeDate(dateTime);
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return dateTime;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void groupByInterval(String interval,StringBuffer groupBy){
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(interval)) {
 |  | 
 | 
												
													
														
															|  |             if (SaveModel.interval_month.equals(interval)) {
 |  | 
 | 
												
													
														
															|  |                 groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
 |  | 
 | 
												
													
														
															|  |             } else if (SaveModel.interval_week.equals(interval)) {
 |  | 
 | 
												
													
														
															|  |                 groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
 |  | 
 | 
												
													
														
															|  |             } else if (SaveModel.interval_day.equals(interval)) {
 |  | 
 | 
												
													
														
															|  |                 groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void sqlArea(StringBuffer sql,String area,int level,boolean isAnd){
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(area)) {
 |  | 
 | 
												
													
														
															|  |             if (SaveModel.deptLevel.equals(level + "")) {
 |  | 
 | 
												
													
														
															|  |                 sql.append(" team='" + area + "'");
 |  | 
 | 
												
													
														
															|  |             } else if (SaveModel.OrgLevel.equals(level + "")) {
 |  | 
 | 
												
													
														
															|  |                 sql.append(" hospital='" + area + "'");
 |  | 
 | 
												
													
														
															|  |             } else if (SaveModel.townLevel.equals(level + "")) {
 |  | 
 | 
												
													
														
															|  |                 sql.append(" town='" + area + "'");
 |  | 
 | 
												
													
														
															|  |             } else if (SaveModel.cityLevel.equals(level + "")) {
 |  | 
 | 
												
													
														
															|  |                 sql.append(" city='" + area + "'");
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             if(isAnd){
 |  | 
 | 
												
													
														
															|  |                 sql.append(" and ");
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void sqlArea(StringBuffer sql,String area,int level,String index,String timeLevel,String startDate,String endDate){
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(sql,area,level,true);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sql.append(" quotaCode in(" + index + ")  ");
 |  | 
 | 
												
													
														
															|  |         sql.append(" and timeLevel='" + timeLevel + "'  ");
 |  | 
 | 
												
													
														
															|  |         sql.append(" and areaLevel='5'");
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(startDate)) {
 |  | 
 | 
												
													
														
															|  |             sql.append(" and quotaDate>='" + startDate + "'");
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(endDate)) {
 |  | 
 | 
												
													
														
															|  |             sql.append(" and quotaDate<='" + endDate + "'");
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void sqlSlaveKey(String slaveKey,String slaveKeyName,StringBuffer sql){
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotBlank(slaveKey)&&!commonParams.equals(slaveKey)) {
 |  | 
 | 
												
													
														
															|  |             String[] str = slaveKey.split(",");
 |  | 
 | 
												
													
														
															|  |             StringBuffer buffer = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |             for (int i=0;i<str.length;i++){
 |  | 
 | 
												
													
														
															|  |                 buffer.append("'"+str[i]+"',");
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             buffer.deleteCharAt(buffer.length()-1);
 |  | 
 | 
												
													
														
															|  |             sql.append(" and "+slaveKeyName+" in (" + buffer + ")");
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void groupBySlaveKey(StringBuffer groupBy,String slaveKeyValue,String slaveKey,String slaveKeyName){
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(slaveKeyValue)||commonParams.equals(slaveKeyValue)) {
 |  | 
 | 
												
													
														
															|  |             groupBy.append(","+slaveKey+","+slaveKeyName);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public void sqlGroupBySlaveKey(StringBuffer sql,StringBuffer groupBy,String low_level,String slaveKeyValue,String slaveKey,String slaveKeyName){
 |  | 
 | 
												
													
														
															|  |         String tmp = "";
 |  | 
 | 
												
													
														
															|  |         if(StringUtils.isNotBlank(slaveKeyValue)){
 |  | 
 | 
												
													
														
															|  |             tmp = slaveKey +","+slaveKeyName+",";
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         if (SaveModel.deptLevel.equals(low_level)) {
 |  | 
 | 
												
													
														
															|  |             sql.append("select team,teamName,"+tmp+"sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
 |  | 
 | 
												
													
														
															|  |             groupBy.append("  group by team,teamName");
 |  | 
 | 
												
													
														
															|  |             groupBySlaveKey(groupBy,slaveKeyValue,slaveKey,slaveKeyName);
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.OrgLevel.equals(low_level)) {
 |  | 
 | 
												
													
														
															|  |             sql.append("select hospital,hospitalName,"+tmp+"sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
 |  | 
 | 
												
													
														
															|  |             groupBy.append("  group by hospital,hospitalName");
 |  | 
 | 
												
													
														
															|  |             groupBySlaveKey(groupBy,slaveKeyValue,slaveKey,slaveKeyName);
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.townLevel.equals(low_level)) {
 |  | 
 | 
												
													
														
															|  |             sql.append("select town,townName,"+tmp+"sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
 |  | 
 | 
												
													
														
															|  |             groupBy.append("  group by town,townName");
 |  | 
 | 
												
													
														
															|  |             groupBySlaveKey(groupBy,slaveKeyValue,slaveKey,slaveKeyName);
 |  | 
 | 
												
													
														
															|  |         } else if (SaveModel.cityLevel.equals(low_level)) {
 |  | 
 | 
												
													
														
															|  |             sql.append("select city,cityName,"+tmp+"sum(result1) result1,sum(result2) result2 from " + esIndex + " where ");
 |  | 
 | 
												
													
														
															|  |             groupBy.append("  group by city,cityName");
 |  | 
 | 
												
													
														
															|  |             groupBySlaveKey(groupBy,slaveKeyValue,slaveKey,slaveKeyName);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public List findDateQuotaLevel3BySlaveKey13(String startDate, String endDate, String area, int level, String index,
 |  | 
 | 
												
													
														
															|  |            String timeLevel, String slaveKey1, String slaveKey2,String slaveKey3, String interval, String lowLevel) {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
 |  | 
 | 
												
													
														
															|  |         startDate = changeDateTime(startDate);
 |  | 
 | 
												
													
														
															|  |         endDate = changeDateTime(endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         StringBuffer sql = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         StringBuffer groupBy = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         String low_level = level + "";
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             low_level = lowLevel;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlGroupBySlaveKey(sql,groupBy,low_level,slaveKey1,"slaveKey1","slaveKey1Name");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(sql,area,level,index,timeLevel,startDate,endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey1,"slaveKey1",sql);
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey2,"slaveKey2",sql);
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey3,"slaveKey3",sql);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //根据时间维度分组
 |  | 
 | 
												
													
														
															|  |         groupByInterval(interval,groupBy);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sql.append(groupBy);
 |  | 
 | 
												
													
														
															|  |         return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public String returnSlaveKey(String slaveKey){
 |  | 
 | 
												
													
														
															|  |         if(StringUtils.isEmpty(slaveKey)){
 |  | 
 | 
												
													
														
															|  |             return commonParams;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         return slaveKey;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  | 
 | 
												
													
														
															|  |      * 0级指标查询列表
 |  | 
 | 
												
													
														
															|  |      * 获取所有指标的增量、到达量
 |  | 
 | 
												
													
														
															|  |      * 备注:原来接口的一级指标对应现在的
 |  | 
 | 
												
													
														
															|  |      *
 |  | 
 | 
												
													
														
															|  |      * @param startDate 开始时间
 |  | 
 | 
												
													
														
															|  |      * @param endDate   结束时间
 |  | 
 | 
												
													
														
															|  |      * @param area      区域code
 |  | 
 | 
												
													
														
															|  |      * @param level     等级
 |  | 
 | 
												
													
														
															|  |      * @param index     指标
 |  | 
 | 
												
													
														
															|  |      * @param timeLevel 1增量 2到达量
 |  | 
 | 
												
													
														
															|  |      * @param interval  1日 2周 3月
 |  | 
 | 
												
													
														
															|  |      * @param lowLevel  下一级区域等级
 |  | 
 | 
												
													
														
															|  |      * @return
 |  | 
 | 
												
													
														
															|  |      * @throws Exception
 |  | 
 | 
												
													
														
															|  |      */
 |  | 
 | 
												
													
														
															|  |     public List findDateQuotaLevel0BySlaveKey1(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel, String slaveKey1) throws Exception {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
 |  | 
 | 
												
													
														
															|  |         startDate = changeDateTime(startDate);
 |  | 
 | 
												
													
														
															|  |         endDate = changeDateTime(endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         StringBuffer sql = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         StringBuffer groupBy = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         String low_level = level + "";
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             low_level = lowLevel;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlGroupBySlaveKey(sql,groupBy,low_level,slaveKey1,"slaveKey1","slaveKey1Name");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(sql,area,level,index,timeLevel,startDate,endDate);
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey1,"slaveKey1",sql);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //根据时间维度分组
 |  | 
 | 
												
													
														
															|  |         groupByInterval(interval,groupBy);
 |  | 
 | 
												
													
														
															|  |         sql.append(groupBy);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public List<SaveModel> findDateQuotaLevel1(String startDate, String endDate, String area, int level, String index, String timeLevel, String slaveKey1, String interval, String lowLevel) throws Exception {
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //时间格式转换  yyyy-MM-dd转成 2017-07-17T00:00:00+0800
 |  | 
 | 
												
													
														
															|  |         startDate = changeDateTime(startDate);
 |  | 
 | 
												
													
														
															|  |         endDate = changeDateTime(endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         StringBuffer sql = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         StringBuffer groupBy = new StringBuffer();
 |  | 
 | 
												
													
														
															|  |         String low_level = level + "";
 |  | 
 | 
												
													
														
															|  |         if (StringUtils.isNotEmpty(lowLevel)) {
 |  | 
 | 
												
													
														
															|  |             low_level = lowLevel;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlGroupBySlaveKey(sql,groupBy,low_level,slaveKey1,"slaveKey1","slaveKey1Name");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(sql,area,level,index,timeLevel,startDate,endDate);
 |  | 
 | 
												
													
														
															|  |         sqlSlaveKey(slaveKey1,"slaveKey1",sql);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         //根据时间维度分组
 |  | 
 | 
												
													
														
															|  |         groupByInterval(interval,groupBy);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sql.append(groupBy);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         return elasticsearchUtil.excute(sql.toString(), SaveModel.class, "", "");
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public List<Map<String, Object>> getDataList(int level,String area,String startDate,String endDate,String quota){
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         startDate = getStartDate(startDate, endDate);
 |  | 
 | 
												
													
														
															|  |         StringBuffer initalStr = new StringBuffer(" where quotaDate >= '" + startDate + "T00:00:00+0800'" + " and quotaDate <= '" + endDate + "T23:59:59+0800'");
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         sqlArea(initalStr,area,level,false);
 |  | 
 | 
												
													
														
															|  |         String ddlOrZl = getDDLOrZL(startDate, endDate);
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         String quotaCodeAndWhere = quota.substring(quota.indexOf("quotaCode="));
 |  | 
 | 
												
													
														
															|  |         String filter = "";
 |  | 
 | 
												
													
														
															|  |         String quotaCode = "";
 |  | 
 | 
												
													
														
															|  |         if(quotaCodeAndWhere.contains("-")){
 |  | 
 | 
												
													
														
															|  |             quotaCode = quotaCodeAndWhere.split("-")[0];
 |  | 
 | 
												
													
														
															|  |             filter = " and " + quotaCodeAndWhere.split("-")[1];
 |  | 
 | 
												
													
														
															|  |         }else {
 |  | 
 | 
												
													
														
															|  |             quotaCode = quotaCodeAndWhere;
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         filter += " and " + quotaCode +" and timeLevel = '"+ddlOrZl+"'  and areaLevel='5'";
 |  | 
 | 
												
													
														
															|  |         String sql="";
 |  | 
 | 
												
													
														
															|  |         if(level == 3){
 |  | 
 | 
												
													
														
															|  |             sql = "select sum(result1) result,hospital,hospitalName from  " + esIndex + initalStr.toString() + filter + " group by hospital,hospitalName";
 |  | 
 | 
												
													
														
															|  |         }else if(level == 2){
 |  | 
 | 
												
													
														
															|  |             sql = "select sum(result1) result,town,townName from  " + esIndex + initalStr.toString() + filter + " group by town,townName";
 |  | 
 | 
												
													
														
															|  |         }else{
 |  | 
 | 
												
													
														
															|  |             sql = "select sum(result1) result,team,teamName from  " + esIndex + initalStr.toString() + filter + " group by team,teamName";
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  |         List<Map<String, Object>> dataList = elasticsearchUtil.excuteDataModel(sql);
 |  | 
 | 
												
													
														
															|  |         return dataList;
 |  | 
 | 
												
													
														
															|  | //        teamList = dataListIntegration(totalMap,teamList,dataList,quotaName,range);
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     public  List<Map<String, Object>> dataListIntegration( Map<String, Object> totalMap,List<Map<String, Object>>  teamList
 |  | 
 | 
												
													
														
															|  |             ,List<Map<String, Object>>  dataList,String quotaName,int level){
 |  | 
 | 
												
													
														
															|  |         DecimalFormat df = new DecimalFormat("###");
 |  | 
 | 
												
													
														
															|  |         Double total=0.00;
 |  | 
 | 
												
													
														
															|  |         List<Map<String, Object>>  resultList=new ArrayList<>();
 |  | 
 | 
												
													
														
															|  |         String teamCloumn = "";
 |  | 
 | 
												
													
														
															|  |         for(Map<String, Object> teamMap : teamList){
 |  | 
 | 
												
													
														
															|  |             String teamId;
 |  | 
 | 
												
													
														
															|  |             if(level == 3){
 |  | 
 | 
												
													
														
															|  |                 teamId = teamMap.get("code").toString();
 |  | 
 | 
												
													
														
															|  |                 teamCloumn = "hospital";
 |  | 
 | 
												
													
														
															|  |             }else if(level == 2) {
 |  | 
 | 
												
													
														
															|  |                 teamId = teamMap.get("town").toString();
 |  | 
 | 
												
													
														
															|  |                 teamCloumn = "town";
 |  | 
 | 
												
													
														
															|  |             }else{
 |  | 
 | 
												
													
														
															|  |                 teamId = teamMap.get("id").toString();
 |  | 
 | 
												
													
														
															|  |                 teamCloumn = "team";
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             boolean exit = false;
 |  | 
 | 
												
													
														
															|  |             if(dataList != null && dataList.size() > 0){
 |  | 
 | 
												
													
														
															|  |                 for(Map<String, Object> dataMap : dataList){
 |  | 
 | 
												
													
														
															|  |                     if(dataMap.get(teamCloumn)!= null && dataMap.get(teamCloumn).toString().equals(teamId)){
 |  | 
 | 
												
													
														
															|  |                         if(dataMap.get("result") != null){
 |  | 
 | 
												
													
														
															|  |                             String result = df.format(Double.valueOf(dataMap.get("result").toString()));
 |  | 
 | 
												
													
														
															|  |                             total=total+Double.valueOf(dataMap.get("result").toString());
 |  | 
 | 
												
													
														
															|  |                             teamMap.put(quotaName,result);
 |  | 
 | 
												
													
														
															|  |                             exit = true;
 |  | 
 | 
												
													
														
															|  |                             break;
 |  | 
 | 
												
													
														
															|  |                         }else if(dataMap.get("count") != null){
 |  | 
 | 
												
													
														
															|  |                             String result = df.format(Double.valueOf(dataMap.get("count").toString()));
 |  | 
 | 
												
													
														
															|  |                             total=total+Double.valueOf(dataMap.get("count").toString());
 |  | 
 | 
												
													
														
															|  |                             teamMap.put(quotaName,result);
 |  | 
 | 
												
													
														
															|  |                             exit = true;
 |  | 
 | 
												
													
														
															|  |                             break;
 |  | 
 | 
												
													
														
															|  |                         }
 |  | 
 | 
												
													
														
															|  |                     }
 |  | 
 | 
												
													
														
															|  |                 }
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             if( !exit){
 |  | 
 | 
												
													
														
															|  |                 teamMap.put(quotaName,0);
 |  | 
 | 
												
													
														
															|  |             }
 |  | 
 | 
												
													
														
															|  |             resultList.add(teamMap);
 |  | 
 | 
												
													
														
															|  |         }
 |  | 
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |         totalMap.put(quotaName,df.format(total));
 |  | 
 | 
												
													
														
															|  |         return resultList;
 |  | 
 | 
												
													
														
															|  |     }
 |  | 
 | 
												
													
														
															|  |     /**************************************************封装的方法 end ********************************************/
 |  | 
 | 
												
													
														
															|  | }
 |  | 
 |