wangzhinan 1 год назад
Родитель
Сommit
5e9bf429f2

+ 1 - 1
business/base-service/src/main/java/com/yihu/jw/evaluate/score/service/BaseEvaluateScoreService.java

@ -43,7 +43,7 @@ public class BaseEvaluateScoreService extends BaseJpaService<BaseEvaluateScoreDO
    public Map<String, Object> getScoreAndPercentage(String area, int level){
        HashMap<String, Object> map = new HashMap<>();
        //今日凌晨、当前时间
        String startTime = DateUtil.getStringDateShort()+" 00:00:00";
        String startTime = DateUtil.getStringDateShort();
        String nowTime = DateUtil.getStringDate();
        //昨日时间
        String oneDayAgo = DateUtil.getNextDay(startTime, -1);

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

@ -7,8 +7,10 @@ import com.alibaba.druid.sql.parser.SQLExprParser;
import com.alibaba.druid.sql.parser.Token;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.elasticsearch.ElasticSearch7Util;
import com.yihu.jw.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
@ -50,7 +52,6 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.lang.reflect.Field;
import java.sql.Timestamp;
@ -72,10 +73,11 @@ public class ElasticsearchUtil {
    private final String commonParams = "xmijk_quota";
    @Autowired
    ObjectMapper objectMapper;
    @Resource(name="restHighLevelClient")
    @Autowired
    private RestHighLevelClient restHighLevelClient;
    @Autowired
    private ElasticSearch7Util elasticSearch7Util;
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Autowired
    private JdbcTemplate jdbcTemplate;
@ -483,6 +485,22 @@ public class ElasticsearchUtil {
        return temp;
    }
    public List excuteEs7(String sql, Class<SaveModel> clazz, String esType, String esIndex) {
        List saveModels = new ArrayList<>();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXX");
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<Map<String,Object>> mapList = elasticSearch7Util.executeSQLStream(sql);
            for (Map<String,Object> map:mapList){
                SaveModel t1 = JSON.parseObject(JSON.toJSONString(map),clazz);
                saveModels.add(t1);
            }
        }catch (Exception e){
            logger.info(e.getMessage());
        }
        return saveModels;
    }
    public List excute(String sql, Class clazz, String esType, String esIndex) {
        List saveModels = new ArrayList<>();
@ -493,7 +511,7 @@ public class ElasticsearchUtil {
        try {
            //解决 group by之后默认是200的问题
            if (sql.toLowerCase().contains("group by")) {
                sql = sql + " limit 0,2000";
                sql = sql + " limit 2000";
            }
            SQLExprParser parser = new ElasticSqlExprParser(sql);
@ -812,16 +830,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -928,7 +946,7 @@ public class ElasticsearchUtil {
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1019,16 +1037,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
@ -1121,16 +1139,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1185,33 +1203,43 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        }
        if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1254,16 +1282,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1304,33 +1332,43 @@ public class ElasticsearchUtil {
        if (StringUtils.isNotEmpty(lowLevel)) {
            low_level = lowLevel;
        }
        StringBuffer condition = new StringBuffer();
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                condition.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                condition.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                condition.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        if (SaveModel.doctorLevel.equals(low_level)) {
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select doctor as doctor,doctorName as doctorName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by doctor,doctorName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        }
        if (SaveModel.deptLevel.equals(low_level)) {
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select dept as dept,deptName as deptName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1, sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by dept,deptName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.OrgLevel.equals(low_level)) {
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select hospital as hospital,hospitalName as hospitalName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1)  as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by hospital,hospitalName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.townLevel.equals(low_level)) {
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select town as town,townName as townName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by town,townName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
            }
        } else if (SaveModel.cityLevel.equals(low_level)) {
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2,quotaDate as quotaDate from " + esIndex + " where ");
            sql.append("select city as city,cityName as cityName,slaveKey1 as slaveKey1,slaveKey1Name as slaveKey1Name,sum(result1) as result1,sum(result2) as result2"+condition+" as quotaDate from " + esIndex + " where ");
            groupBy.append("  group by city,cityName");
            if (!org.springframework.util.StringUtils.isEmpty(slaveKey1)&&!slaveKey1.contains(",")&&(!org.springframework.util.StringUtils.isEmpty(slaveKey1) || commonParams.equals(slaveKey1))) {
                groupBy.append(",slaveKey1,slaveKey1Name");
@ -1373,16 +1411,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql:"+sql);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1519,16 +1557,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1658,16 +1696,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1790,16 +1828,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -1928,16 +1966,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        logger.info("sql :" + sql.toString());
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -2069,16 +2107,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -2162,16 +2200,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    public List findDateAllQuotaLevel3(String startDate, String endDate, String area, int level, String index, String timeLevel, String interval, String lowLevel) throws Exception {
@ -2241,16 +2279,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    /**
@ -3117,16 +3155,16 @@ public class ElasticsearchUtil {
        //根据时间维度分组
        if (StringUtils.isNotEmpty(interval)) {
            if (SaveModel.interval_month.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='month','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('month',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_week.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='week','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            } else if (SaveModel.interval_day.equals(interval)) {
                groupBy.append(" ,date_histogram(field='quotaDate','interval'='1d','time_zone'='+08:00','alias'='quotaDate') ");
                groupBy.append(" ,to_char(date_trunc('day',quotaDate),'yyyy-MM-dd') ");
            }
        }
        sql.append(groupBy);
        return excute(sql.toString(), SaveModel.class, "", "");
        return excuteEs7(sql.toString(), SaveModel.class, "", "");
    }
    public List searchBySql(String sql){

+ 5 - 0
starter/elasticsearch-starter/pom.xml

@ -64,6 +64,11 @@
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.plugin</groupId>
            <artifactId>x-pack-sql-jdbc</artifactId>
            <version>7.17.0</version>
        </dependency>
    </dependencies>
</project>

+ 29 - 6
starter/elasticsearch-starter/src/main/java/com/yihu/jw/elasticsearch/TestEs7.java

@ -27,12 +27,35 @@ import org.nlpcn.es4sql.parse.SqlParser;
import org.nlpcn.es4sql.parse.WhereParser;
import org.nlpcn.es4sql.query.maker.QueryMaker;
import java.sql.*;
/**
 * Created by yeshijie on 2022/6/15.
 */
public class TestEs7 {
    public static void main(String[] args) {
        //1创建连接
        try {
            Connection connection = DriverManager.getConnection("jdbc:es://http://172.26.0.55:9200","elastic","elastic");
            //2创建statement
            Statement statement = connection.createStatement();
            //3执行sql语句
            ResultSet resultSet = statement.executeQuery("select city as city,cityName as cityName,sum(result1) as result1,sum(result2) as result2 from hlw_quota_test where  city='350200' and  quotaCode in(1)   and timeLevel='1'   and areaLevel='6'  group by city,cityName,slaveKey1,slaveKey1Name ,to_char(date_trunc('week',quotaDate),'yyyy-MM-dd') ");
            //4获取结果
            while (resultSet.next()) {
                String str = resultSet.getString(1)+","
                        +resultSet.getString(2)+","
                        +resultSet.getString(3)+","
                        +resultSet.getString(4);
                System.out.println(str);
                System.out.println("======================================");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws Exception{
   /* public static void main(String[] args) throws Exception{
        String host = "172.26.0.55";
        String userName = "elastic";
@ -69,8 +92,8 @@ public class TestEs7 {
        String index = "hlw_quota_test";
        /*GetIndexRequest request = new GetIndexRequest(index);
        boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);*/
        *//*GetIndexRequest request = new GetIndexRequest(index);
        boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);*//*
        GetRequest getRequest = new GetRequest("hlw_quota_test","1");
        GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(documentFields);
@ -95,12 +118,12 @@ public class TestEs7 {
        return boolQuery;
    }
    /**
    *//**
     * 验证sql
     *
     * @param sql sql查询语句
     * @return and (a=1 and b=1) or (c=1 and d=1)
     */
     *//*
    private static SQLExpr toSqlExpr(String sql) {
        SQLExprParser parser = new ElasticSqlExprParser(sql);
        SQLExpr expr = parser.expr();
@ -109,5 +132,5 @@ public class TestEs7 {
            throw new ParserException("illegal sql expr : " + sql);
        }
        return expr;
    }
    }*/
}

+ 1 - 1
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/controller/QueryController.java

@ -62,7 +62,7 @@ public class QueryController {
    @RequestMapping(value = "/excuteSQL", method = RequestMethod.GET)
    public List<Map<String,Object>> excuteSQL(
            @ApiParam(name = "sql", value = "执行的", required = true) @RequestParam(value = "sql", required = true) String sql) throws Exception {
        List<Map<String,Object>> saveModels = elasticSearch7Util.executeSQL(sql);
        List<Map<String,Object>> saveModels = elasticSearch7Util.executeSQLStream(sql);
        return saveModels;
    }

+ 1 - 1
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/job/business/CurrentMysqlToEsQuotaJob.java

@ -267,7 +267,7 @@ public class CurrentMysqlToEsQuotaJob implements Job {
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("timeLevel", timeLevel))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate)))
                    .size(500000);
                    .size(10000);
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).addType(esType)
                    .build();

+ 1 - 1
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/job/business/EsToEsQuotaJob.java

@ -189,7 +189,7 @@ public class EsToEsQuotaJob implements Job {
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("timeLevel", timeLevel))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))
            ).size(500000);//一次取10000条
            ).size(10000);//一次取10000条
            List<String> result = elasticSearch7Helper.search(esIndex,searchSourceBuilder);
            List<SaveModel> saveModels = new ArrayList<>();

+ 6 - 4
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/job/business/MysqlToEsQuotaJob.java

@ -219,10 +219,12 @@ public class MysqlToEsQuotaJob implements Job {
                bulkRequest.add(new DeleteRequest(esIndex)
                        .id(obj.getId()));
            }
            BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
            logger.info(bulkResponse.buildFailureMessage());
            logger.info("delete data count:" + saveModels.size());
            logger.info("delete flag:" + !bulkResponse.hasFailures());
            if (saveModels!=null&&saveModels.size()!=0){
                BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
                logger.info(bulkResponse.buildFailureMessage());
                logger.info("delete data count:" + saveModels.size());
                logger.info("delete flag:" + !bulkResponse.hasFailures());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {