suqinyi 1 år sedan
förälder
incheckning
cacb1220b5

+ 22 - 0
business/es-service/src/main/java/com/yihu/jw/es/service/StatisticsEsService.java

@ -6507,8 +6507,14 @@ public class StatisticsEsService {
            listOfLists.add(list03);
            listOfLists.add(list04);
            listOfLists.add(list05);
            System.out.println("医生数据==>" + JSON.toJSONString(listOfLists));
            //数据转换
            List<Map<String, Object>> list = mergeAndSortLists(listOfLists, "2");
            System.out.println("合并医生数据==>" + JSON.toJSONString(list));
            //过滤科室和医生
            if (StringUtils.isNotBlank(qvo.getDeptCode()) || StringUtils.isNotBlank(qvo.getDoctorName())) {
                List<Map<String, Object>> filterDoctortList = new ArrayList<>();
@ -6540,6 +6546,7 @@ public class StatisticsEsService {
                        }
                    }
                }
                System.out.println("最后数据==>" + JSON.toJSONString(filterDoctortList));
                result.put("resultList", filterDoctortList);
                result.put("resultListSize", filterDoctortList.size());
            } else {
@ -7876,4 +7883,19 @@ public class StatisticsEsService {
        resultMap.put("urlAddress", urlAddress);
        return resultMap;
    }
    public Map<String, Object> getDoctorOrgCode(ScreenQvo qvo) {
        Map<String, Object> resultMap = new HashMap<>();
        String doctorCode = qvo.getDoctorCode();
        String sql = "SELECT org_code FROM base_doctor_hospital  WHERE doctor_code='" + doctorCode + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        if (!list.isEmpty()) {
            Map<String, Object> map = list.get(0);
            resultMap.put("orgCode", map.get("org_code").toString());
        }else {
            resultMap.put("orgCode", "350211A1004");//三院
        }
        return resultMap;
    }
}

+ 9 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/hospital/statistics/ScreenQvo.java

@ -26,6 +26,7 @@ public class ScreenQvo {
    private String deptCode;//科室code
    private String deptName;//科室名称
    private String doctorName;//医生名称
    private String doctorCode;//医生code
    private int page;
@ -39,6 +40,14 @@ public class ScreenQvo {
    private String name;
    private String mobile;
    public String getDoctorCode() {
        return doctorCode;
    }
    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }
    public String getName() {
        return name;
    }

+ 141 - 117
starter/elasticsearch-starter/src/main/java/com/yihu/jw/elasticsearch/ElasticSearch7Util.java

@ -1,14 +1,13 @@
package com.yihu.jw.elasticsearch;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.parser.ParserException;
import com.alibaba.druid.sql.parser.SQLExprParser;
import com.alibaba.druid.sql.parser.Token;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.searchbox.core.Update;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.bulk.BulkItemResponse;
import org.elasticsearch.action.bulk.BulkRequest;
@ -26,8 +25,6 @@ import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
@ -50,13 +47,9 @@ import org.elasticsearch.search.aggregations.metrics.SumAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.nlpcn.es4sql.domain.Select;
import org.nlpcn.es4sql.domain.Where;
import org.nlpcn.es4sql.exception.SqlParseException;
import org.nlpcn.es4sql.jdbc.ObjectResult;
import org.nlpcn.es4sql.jdbc.ObjectResultsExtractor;
import org.nlpcn.es4sql.parse.ElasticSqlExprParser;
import org.nlpcn.es4sql.parse.SqlParser;
import org.nlpcn.es4sql.parse.WhereParser;
@ -74,8 +67,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.DecimalFormat;
import java.util.*;
@ -90,7 +81,7 @@ public class ElasticSearch7Util {
    private static final Logger logger = LoggerFactory.getLogger(ElasticSearch7Util.class);
    @Resource(name="restHighLevelClient")
    @Resource(name = "restHighLevelClient")
    private RestHighLevelClient restHighLevelClient;
    @Autowired
@ -101,6 +92,7 @@ public class ElasticSearch7Util {
    /**
     * 执行sql
     *
     * @param sql
     * @return
     */
@ -125,11 +117,11 @@ public class ElasticSearch7Util {
        SearchHit[] searchHits = hits.getHits();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
            for (Object o:datas.values()){
                if (o instanceof Double){
                    Double valueTemp =Double.valueOf((Double)o);
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            for (Object o : datas.values()) {
                if (o instanceof Double) {
                    Double valueTemp = Double.valueOf((Double) o);
                    DecimalFormat df = new DecimalFormat("######0");
                    return Long.parseLong(df.format(valueTemp));
                }
@ -138,20 +130,20 @@ public class ElasticSearch7Util {
        return 0L;
    }
    public List<Map<String,Object>> executeSQLStream(String sql) throws Exception {
    public List<Map<String, Object>> executeSQLStream(String sql) throws Exception {
        ResultSet resultSet = elasticSearch7Pool.restHighLevelClientStream(sql);
        return resultSetUtil.resultToMapList(resultSet);
    }
    public <T> List<T> executeSQLStreamDO(String sql,Class<T> target) throws Exception {
    public <T> List<T> executeSQLStreamDO(String sql, Class<T> target) throws Exception {
        ResultSet resultSet = elasticSearch7Pool.restHighLevelClientStream(sql);
        return resultSetUtil.resultToEntity(resultSet,target);
        return resultSetUtil.resultToEntity(resultSet, target);
    }
    /**
     * 执行sql
     */
    public List<Map<String,Object>> executeSQL(String sql) throws IOException {
    public List<Map<String, Object>> executeSQL(String sql) throws IOException {
        //实例化查询请求对象
        SearchRequest request = new SearchRequest();
        //实例化SearchSourceBuilder
@ -159,7 +151,7 @@ public class ElasticSearch7Util {
        //根据索引、查询条件构建查询构造器
        BoolQueryBuilder boolQueryBuilder = createQueryBuilderBySql(sql);
        //将查询构造器注入SearchSourceBuilder
        searchBuilder.query(boolQueryBuilder).sort("quotaDate",SortOrder.DESC).sort("createTime",SortOrder.DESC);
        searchBuilder.query(boolQueryBuilder).sort("quotaDate", SortOrder.DESC).sort("createTime", SortOrder.DESC);
        //设置请求查询的索引(查询构造器中已指定,无需重复设置)
        //request.indices(indexName);
        //将构建好的SearchSourceBuilder注入请求
@ -171,10 +163,10 @@ public class ElasticSearch7Util {
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        List<Map<String,Object>> listData = new ArrayList<>();
        List<Map<String, Object>> listData = new ArrayList<>();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            listData.add(datas);
            logger.info(datas.toString());
        }
@ -185,7 +177,7 @@ public class ElasticSearch7Util {
    /**
     * 执行sql
     */
    public <T> List<T> executeSql(String sql,Class<T> clazz) throws Exception {
    public <T> List<T> executeSql(String sql, Class<T> clazz) throws Exception {
        //实例化查询请求对象
        SearchRequest request = new SearchRequest();
        //实例化SearchSourceBuilder
@ -207,10 +199,10 @@ public class ElasticSearch7Util {
        SearchHit[] searchHits = hits.getHits();
        List<T> listData = new ArrayList<>();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            T t = clazz.newInstance();
            BeanUtils.copyProperties(t,datas);
            BeanUtils.copyProperties(t, datas);
            listData.add(t);
            logger.info(datas.toString());
        }
@ -220,8 +212,9 @@ public class ElasticSearch7Util {
    /**
     * 构建查询构造器
     * @param indexName  索引名
     * @param whereExpress  查询条件:(f1=2 and f2=1) or (f3=1 and f4=1)
     *
     * @param indexName    索引名
     * @param whereExpress 查询条件:(f1=2 and f2=1) or (f3=1 and f4=1)
     * @return
     */
    public BoolQueryBuilder createQueryBuilderByWhere(String indexName, String whereExpress) {
@ -242,7 +235,7 @@ public class ElasticSearch7Util {
                boolQuery = QueryMaker.explan(where);
            }
        } catch (SqlParseException e) {
            logger.info("ReadES.createQueryBuilderByExpress-Exception,"+e.getMessage());
            logger.info("ReadES.createQueryBuilderByExpress-Exception," + e.getMessage());
            e.printStackTrace();
        }
        return boolQuery;
@ -250,6 +243,7 @@ public class ElasticSearch7Util {
    /**
     * 构建查询构造器
     *
     * @return
     */
    public BoolQueryBuilder createQueryBuilderBySql(String sql) {
@ -266,7 +260,7 @@ public class ElasticSearch7Util {
                boolQuery = QueryMaker.explan(where);
            }
        } catch (SqlParseException e) {
            logger.info("ReadES.createQueryBuilderByExpress-Exception,"+e.getMessage());
            logger.info("ReadES.createQueryBuilderByExpress-Exception," + e.getMessage());
            e.printStackTrace();
        }
        return boolQuery;
@ -290,17 +284,18 @@ public class ElasticSearch7Util {
    /**
     * 查询指定索引下的信息
     *
     * @param indexName 索引名称
     * @param condition 查询条件
     *  queryIndexContent("user_site"," and phone_no in('12234567890') ");
     *                  queryIndexContent("user_site"," and phone_no in('12234567890') ");
     */
    public List<Map<String,Object>> queryIndexContent(String indexName, String condition) throws IOException {
    public List<Map<String, Object>> queryIndexContent(String indexName, String condition) throws IOException {
        //实例化查询请求对象
        SearchRequest request = new SearchRequest();
        //实例化SearchSourceBuilder
        SearchSourceBuilder searchBuilder = new SearchSourceBuilder();
        //根据索引、查询条件构建查询构造器
        BoolQueryBuilder boolQueryBuilder = createQueryBuilderByWhere(indexName,condition);
        BoolQueryBuilder boolQueryBuilder = createQueryBuilderByWhere(indexName, condition);
        //将查询构造器注入SearchSourceBuilder
        searchBuilder.query(boolQueryBuilder);
        //设置请求查询的索引(查询构造器中已指定,无需重复设置)
@ -314,10 +309,10 @@ public class ElasticSearch7Util {
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        List<Map<String,Object>> listData = new ArrayList<>();
        List<Map<String, Object>> listData = new ArrayList<>();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            listData.add(datas);
            logger.info(datas.toString());
        }
@ -327,6 +322,7 @@ public class ElasticSearch7Util {
    /**
     * 查询语句转换
     *
     * @param filters
     * @return
     */
@ -335,24 +331,24 @@ public class ElasticSearch7Util {
        if (StringUtils.isEmpty(filters)) {
            return boolQueryBuilder;
        }
        String [] filterArr = filters.split(";");
        String[] filterArr = filters.split(";");
        for (String filter : filterArr) {
            if (filter.contains("||")){
                String [] fields = filter.split("\\|\\|");
            if (filter.contains("||")) {
                String[] fields = filter.split("\\|\\|");
                BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
                for (String filed : fields) {
                    String [] condition = filed.split("=");
                    String[] condition = filed.split("=");
                    queryBuilder.should(QueryBuilders.termQuery(condition[0], condition[1]));
                }
                boolQueryBuilder.must(queryBuilder);
            } else if (filter.contains("?")) {
                String [] condition = filter.split("\\?");
                String[] condition = filter.split("\\?");
                MatchPhraseQueryBuilder matchPhraseQueryBuilder = QueryBuilders.matchPhraseQuery(condition[0], condition[1]);
                boolQueryBuilder.must(matchPhraseQueryBuilder);
            } else if (filter.contains("<>")) {
                String [] condition = filter.split("<>");
                String[] condition = filter.split("<>");
                if (condition[1].contains(",")) {
                    String [] inCondition = condition[1].split(",");
                    String[] inCondition = condition[1].split(",");
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    boolQueryBuilder.mustNot(termsQueryBuilder);
                } else {
@ -360,29 +356,29 @@ public class ElasticSearch7Util {
                    boolQueryBuilder.mustNot(termQueryBuilder);
                }
            } else if (filter.contains(">=")) {
                String [] condition = filter.split(">=");
                String[] condition = filter.split(">=");
                RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(condition[0]);
                rangeQueryBuilder.gte(condition[1]);
                boolQueryBuilder.must(rangeQueryBuilder);
            } else if (filter.contains(">")) {
                String [] condition = filter.split(">");
                String[] condition = filter.split(">");
                RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(condition[0]);
                rangeQueryBuilder.gt(condition[1]);
                boolQueryBuilder.must(rangeQueryBuilder);
            } else if (filter.contains("<=")) {
                String [] condition = filter.split("<=");
                String[] condition = filter.split("<=");
                RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(condition[0]);
                rangeQueryBuilder.lte(condition[1]);
                boolQueryBuilder.must(rangeQueryBuilder);
            } else if (filter.contains("<")) {
                String [] condition = filter.split("<");
                String[] condition = filter.split("<");
                RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(condition[0]);
                rangeQueryBuilder.lt(condition[1]);
                boolQueryBuilder.must(rangeQueryBuilder);
            } else if (filter.contains("=")) {
                String [] condition = filter.split("=");
                String[] condition = filter.split("=");
                if (condition[1].contains(",")) {
                    String [] inCondition = condition[1].split(",");
                    String[] inCondition = condition[1].split(",");
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    boolQueryBuilder.must(termsQueryBuilder);
                } else {
@ -396,11 +392,12 @@ public class ElasticSearch7Util {
    /**
     * 多条件查询
     *
     * @param mustMap
     * @param length
     * @return
     */
    public List<String> multiSearch(Map<String,Object> mustMap,int length,String index) {
    public List<String> multiSearch(Map<String, Object> mustMap, int length, String index) {
        // 根据多个条件 生成 boolQueryBuilder
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
@ -416,15 +413,16 @@ public class ElasticSearch7Util {
        searchSourceBuilder.size(length);
        // 其中listSearchResult是自己编写的方法,以供多中查询方式使用。
        return listSearchResult(searchSourceBuilder,index);
        return listSearchResult(searchSourceBuilder, index);
    }
    /**
     * 用来处理搜索结果,转换成链表
     *
     * @param builder
     * @return
     */
    public List<String> listSearchResult(SearchSourceBuilder builder,String index) {
    public List<String> listSearchResult(SearchSourceBuilder builder, String index) {
        // 提交查询
        SearchRequest searchRequest = new SearchRequest(index);
        searchRequest.source(builder);
@ -441,7 +439,7 @@ public class ElasticSearch7Util {
        List<String> list = new LinkedList<>();
        SearchHits hits = searchResponse.getHits();
        Iterator<SearchHit> iterator = hits.iterator();
        while(iterator.hasNext()) {
        while (iterator.hasNext()) {
            SearchHit next = iterator.next();
            list.add(next.getSourceAsString());
        }
@ -449,20 +447,20 @@ public class ElasticSearch7Util {
    }
    /**
     * @param boolQueryBuilder  查询参数 build
     * @param sortName 排序字段名称
     * @param boolQueryBuilder 查询参数 build
     * @param sortName         排序字段名称
     * @return
     */
    public List<Map<String, Object>> queryList(String index,BoolQueryBuilder boolQueryBuilder,String sortName,Integer size) throws IOException {
    public List<Map<String, Object>> queryList(String index, BoolQueryBuilder boolQueryBuilder, String sortName, Integer size) throws IOException {
        //实例化查询请求对象
        SearchRequest request = new SearchRequest();
        //实例化SearchSourceBuilder
        SearchSourceBuilder searchBuilder = new SearchSourceBuilder();
        //将查询构造器注入SearchSourceBuilder
        if (StringUtils.isNoneBlank(sortName)){
        if (StringUtils.isNoneBlank(sortName)) {
            searchBuilder.query(boolQueryBuilder).sort(sortName, SortOrder.DESC);
        }
        if (size!=null){
        if (size != null) {
            searchBuilder.size(size);
        }
        //设置请求查询的索引(查询构造器中已指定,无需重复设置)
@ -477,10 +475,10 @@ public class ElasticSearch7Util {
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        List<Map<String,Object>> listData = new ArrayList<>();
        List<Map<String, Object>> listData = new ArrayList<>();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            listData.add(datas);
            logger.info(datas.toString());
        }
@ -510,16 +508,17 @@ public class ElasticSearch7Util {
    }
        /**
    /**
     * 创建映射
     *  注意:保存数据之前如果没有创建相应的字
     *  段映射会导致搜索结果不准确
     * 注意:保存数据之前如果没有创建相应的字
     * 段映射会导致搜索结果不准确
     *
     * @param index
     * @param source
     * @param setting - 该设置根据需要进行配置
     * @throws IOException
     */
    public void mapping (String index, Map<String, Map<String, String>> source, Map<String, Object> setting) throws IOException{
    public void mapping(String index, Map<String, Map<String, String>> source, Map<String, Object> setting) throws IOException {
        RestHighLevelClient restHighLevelClient1 = elasticSearch7Pool.restHighLevelClient();
        XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject().startObject("properties");
        for (String field : source.keySet()) {
@ -548,8 +547,9 @@ public class ElasticSearch7Util {
    }
        /**
    /**
     * 添加数据
     *
     * @param index
     * @param source
     * @return
@ -560,7 +560,8 @@ public class ElasticSearch7Util {
        if (StringUtils.isEmpty(_id)) {
            IndexRequest request = new IndexRequest(index);
            request.source(source);
            IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);;
            IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
            ;
            source.put("_id", response.getId());
        } else {
            UpdateRequest request = new UpdateRequest();
@ -573,12 +574,13 @@ public class ElasticSearch7Util {
    }
        /**
    /**
     * 批量删除数据
     *
     * @param index
     * @param idArr
     */
    public void bulkDelete (String index, String [] idArr) throws IOException {
    public void bulkDelete(String index, String[] idArr) throws IOException {
        if (idArr.length > 0) {
            BulkRequest bulkRequest = new BulkRequest();
            for (String id : idArr) {
@ -601,15 +603,16 @@ public class ElasticSearch7Util {
        }
    }
        /**
    /**
     * 根据条件批量删除数据
     *
     * @param index
     * @param queryBuilder
     */
    public void deleteByFilter(String index,  QueryBuilder queryBuilder) throws IOException {
    public void deleteByFilter(String index, QueryBuilder queryBuilder) throws IOException {
        long count = count(index, queryBuilder);
        long page = count/10000 == 0 ? 1 :count/10000 +1;
        for (long i =0;i<page;i++) {
        long page = count / 10000 == 0 ? 1 : count / 10000 + 1;
        for (long i = 0; i < page; i++) {
            List<String> idList = getIds(index, queryBuilder);
            if (idList.size() > 0) {
                String[] idArr = new String[idList.size()];
@ -638,6 +641,7 @@ public class ElasticSearch7Util {
    /**
     * 根据字段批量删除数据
     *
     * @param index
     * @param type
     * @param field
@ -649,6 +653,7 @@ public class ElasticSearch7Util {
    /**
     * 根据条件批量删除数据
     *
     * @param index
     * @param type
     * @param filters
@ -658,7 +663,7 @@ public class ElasticSearch7Util {
        deleteByFilter(index, queryBuilder);
    }
   /* *//**
    /* *//**
     * 根据条件批量删除数据
     * @param index
     * @param type
@ -696,41 +701,45 @@ public class ElasticSearch7Util {
    /**
     * 更新数据 - 返回最新文档
     *
     * @param index
     * @param id
     * @param source
     * @return
     * @throws DocumentMissingException
     */
    public Map<String, Object> update(String index,  String id, Map<String, Object> source) throws DocumentMissingException, IOException {
    public Map<String, Object> update(String index, String id, Map<String, Object> source) throws DocumentMissingException, IOException {
        source.remove("_id");
        UpdateRequest request = new UpdateRequest();
        request.index(index).id("_id");
        request.doc(JSONObject.toJSONString(source), XContentType.JSON);
        request.retryOnConflict(5);
        System.out.println("request==>" + JSON.toJSONString(request));
        UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);
        return findById(index,  id);
        return findById(index, id);
    }
    /**
     * 更新数据 - 不返回文档
     *
     * @param index
     * @param id
     * @param source
     * @throws DocumentMissingException
     */
    public void voidUpdate (String index, String id, Map<String, Object> source) throws IOException {
    public void voidUpdate(String index, String id, Map<String, Object> source) throws IOException {
        source.remove("_id");
        UpdateRequest request = new UpdateRequest();
        request.index(index);
        request.id(id);
        request.doc(source);
        request.retryOnConflict(5);
        UpdateResponse response = restHighLevelClient.update(request,RequestOptions.DEFAULT);
        UpdateResponse response = restHighLevelClient.update(request, RequestOptions.DEFAULT);
    }
    /**
     * 批量更新数据
     *
     * @param index
     * @param source
     * @throws DocumentMissingException
@ -739,7 +748,7 @@ public class ElasticSearch7Util {
        if (source.size() > 0) {
            BulkRequest bulkRequest = new BulkRequest();
            source.forEach(item -> {
                String _id = (String)item.remove("_id");
                String _id = (String) item.remove("_id");
                if (!org.springframework.util.StringUtils.isEmpty(_id)) {
                    UpdateRequest request = new UpdateRequest();
                    request.index(index);
@ -747,12 +756,13 @@ public class ElasticSearch7Util {
                    bulkRequest.add(request);
                }
            });
            BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest,RequestOptions.DEFAULT);
            BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        }
    }
    /**
     * 根据ID查找数据
     *
     * @param index
     * @param id
     * @return
@ -770,6 +780,7 @@ public class ElasticSearch7Util {
    /**
     * 根据字段查找数据
     *
     * @param index
     * @param field
     * @param value
@ -781,28 +792,31 @@ public class ElasticSearch7Util {
    /**
     * 获取文档列表
     *
     * @param index
     * @param filters
     * @return
     */
    public List<Map<String, Object>> list(String index,  String filters) throws IOException {
    public List<Map<String, Object>> list(String index, String filters) throws IOException {
        QueryBuilder queryBuilder = getQueryBuilder(filters);
        System.out.println("queryBuilder==>" + JSON.toJSONString(queryBuilder));
        return list(index, queryBuilder);
    }
    /**
     * 获取文档列表
     *
     * @param index
     * @param queryBuilder
     * @return
     */
    public List<Map<String, Object>> list(String index,  QueryBuilder queryBuilder) throws IOException {
        int size = (int)count(index, queryBuilder);
    public List<Map<String, Object>> list(String index, QueryBuilder queryBuilder) throws IOException {
        int size = (int) count(index, queryBuilder);
        SearchSourceBuilder builder = SearchSourceBuilder(queryBuilder, null, 0, size);
        SearchRequest request = new SearchRequest(index);
        request.searchType(SearchType.DFS_QUERY_THEN_FETCH);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        SearchHits hits = response.getHits();
        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
        for (SearchHit hit : hits.getHits()) {
@ -815,6 +829,7 @@ public class ElasticSearch7Util {
    /**
     * 获取文档分页
     *
     * @param index
     * @param type
     * @param filters
@ -828,6 +843,7 @@ public class ElasticSearch7Util {
    /**
     * 获取文档分页
     *
     * @param index
     * @param type
     * @param filters
@ -842,6 +858,7 @@ public class ElasticSearch7Util {
    /**
     * 获取分档分页 - 带分页功能
     *
     * @param index
     * @param type
     * @param filters
@ -858,6 +875,7 @@ public class ElasticSearch7Util {
    /**
     * 获取分档分页 - 带分页功能
     *
     * @param index
     * @param type
     * @param queryBuilder
@ -871,7 +889,7 @@ public class ElasticSearch7Util {
        SearchRequest request = new SearchRequest(index);
        request.searchType(SearchType.DFS_QUERY_THEN_FETCH);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        SearchHits hits = response.getHits();
        List<Map<String, Object>> resultList = new ArrayList<>();
        for (SearchHit hit : hits.getHits()) {
@ -879,36 +897,37 @@ public class ElasticSearch7Util {
            source.put("_id", hit.getId());
            resultList.add(source);
        }
        PageRequest pageRequest = PageRequest.of(page-1,size);
        PageRequest pageRequest = PageRequest.of(page - 1, size);
        return new PageImpl<>(resultList, pageRequest, hits.getTotalHits().value);
    }
    /**
     * 获取ID列表
     *
     * @param index
     * @param filters
     * @return
     */
    public List<String> getIds (String index,  String filters) throws IOException {
    public List<String> getIds(String index, String filters) throws IOException {
        QueryBuilder queryBuilder = getQueryBuilder(filters);
        return getIds(index,  queryBuilder);
        return getIds(index, queryBuilder);
    }
    /**
     * 获取ID列表
     *
     * @param index
     * @param queryBuilder
     * 最多只能一万条
     * @param queryBuilder 最多只能一万条
     * @return
     */
    public List<String> getIds (String index, QueryBuilder queryBuilder) throws IOException {
        int size = (int)count(index,queryBuilder);
        size = size > 10000 ? 10000:size;
    public List<String> getIds(String index, QueryBuilder queryBuilder) throws IOException {
        int size = (int) count(index, queryBuilder);
        size = size > 10000 ? 10000 : size;
        SearchSourceBuilder builder = SearchSourceBuilder(queryBuilder, null, 0, size);
        SearchRequest request = new SearchRequest(index);
        request.searchType(SearchType.DFS_QUERY_THEN_FETCH);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        SearchHits hits = response.getHits();
        List<String> resultList = new ArrayList<>();
        for (SearchHit hit : hits.getHits()) {
@ -919,6 +938,7 @@ public class ElasticSearch7Util {
    /**
     * 获取文档数
     *
     * @param index
     * @param type
     * @param filters
@ -926,11 +946,12 @@ public class ElasticSearch7Util {
     */
    public long count(String index, String type, String filters) throws IOException {
        QueryBuilder queryBuilder = getQueryBuilder(filters);
        return count(index,queryBuilder);
        return count(index, queryBuilder);
    }
    /**
     * 获取文档数
     *
     * @param index
     * @param queryBuilder
     * @return
@ -940,17 +961,14 @@ public class ElasticSearch7Util {
        SearchRequest request = new SearchRequest(index);
        request.searchType(SearchType.DFS_QUERY_THEN_FETCH);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        return response.getHits().getTotalHits().value;
    }
    /**
     * 根据日期分组
     *
     * @param index
     * @param filters
     * @param start
@ -974,7 +992,7 @@ public class ElasticSearch7Util {
        builder.aggregation(dateHistogramBuilder);
        SearchRequest request = new SearchRequest(index);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        Histogram histogram = response.getAggregations().get(index + "-" + field);
        Map<String, Long> temp = new HashMap<>();
        histogram.getBuckets().forEach(item -> temp.put(item.getKeyAsString(), item.getDocCount()));
@ -983,6 +1001,7 @@ public class ElasticSearch7Util {
    /**
     * 查询去重数量
     *
     * @param index
     * @param filters
     * @param filed
@ -995,13 +1014,14 @@ public class ElasticSearch7Util {
        builder.aggregation(cardinality);
        SearchRequest request = new SearchRequest(index);
        request.source(builder);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        InternalCardinality internalCard = response.getAggregations().get("cardinality");
        return new Double(internalCard.getProperty("value").toString()).intValue();
    }
    /**
     * 分组统计
     *
     * @param index
     * @param filters
     * @param groupField
@ -1013,7 +1033,7 @@ public class ElasticSearch7Util {
        AbstractAggregationBuilder aggregation = AggregationBuilders.terms("count").field(groupField);
        builder.aggregation(aggregation);
        SearchRequest request = new SearchRequest(index);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        Terms terms = response.getAggregations().get("count");
        List<Terms.Bucket> buckets = (List<Terms.Bucket>) terms.getBuckets();
        Map<String, Long> groupMap = new HashMap<>();
@ -1026,6 +1046,7 @@ public class ElasticSearch7Util {
    /**
     * 分组求和
     *
     * @param index
     * @param filters
     * @param sumField
@ -1034,17 +1055,17 @@ public class ElasticSearch7Util {
     */
    public Map<String, Double> sumByGroup(String index, String filters, String sumField, String groupField) throws IOException {
        QueryBuilder queryBuilder = getQueryBuilder(filters);
        SearchSourceBuilder builder = SearchSourceBuilder( queryBuilder, null, null, null);
        SearchSourceBuilder builder = SearchSourceBuilder(queryBuilder, null, null, null);
        TermsAggregationBuilder aggregation = AggregationBuilders.terms("sum_query").field(groupField);
        SumAggregationBuilder sumBuilder= AggregationBuilders.sum("sum_row").field(sumField);
        SumAggregationBuilder sumBuilder = AggregationBuilders.sum("sum_row").field(sumField);
        aggregation.subAggregation(sumBuilder);
        builder.aggregation(aggregation);
        SearchRequest request = new SearchRequest(index);
        SearchResponse response = restHighLevelClient.search(request,RequestOptions.DEFAULT);
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
        Terms terms = response.getAggregations().get("sum_query");
        List<Terms.Bucket> buckets = (List<Terms.Bucket>) terms.getBuckets();
        Map<String, Double> groupMap = new HashMap<>();
        for (Terms.Bucket bucket : buckets){
        for (Terms.Bucket bucket : buckets) {
            Sum sum2 = bucket.getAggregations().get("sum_row");
            groupMap.put(bucket.getKey().toString(), sum2.getValue());
        }
@ -1053,6 +1074,7 @@ public class ElasticSearch7Util {
    /**
     * 获取基础请求生成器
     *
     * @param queryBuilder
     * @param sortBuilders
     * @return
@ -1075,6 +1097,7 @@ public class ElasticSearch7Util {
    /**
     * 排序语句转换
     *
     * @param sorts
     * @return
     */
@ -1083,7 +1106,7 @@ public class ElasticSearch7Util {
        if (org.springframework.util.StringUtils.isEmpty(sorts)) {
            return sortBuilderList;
        }
        String [] sortArr = sorts.split(";");
        String[] sortArr = sorts.split(";");
        for (String sort : sortArr) {
            String operator = sort.substring(0, 1);
            SortBuilder sortBuilder = new FieldSortBuilder(sort.substring(1));
@ -1100,8 +1123,9 @@ public class ElasticSearch7Util {
    }
        /**
    /**
     * 根据SQL查找数据
     *
     * @param field
     * @param sql
     * @return
@ -1121,7 +1145,7 @@ public class ElasticSearch7Util {
                boolQuery = QueryMaker.explan(where);
            }
        } catch (SqlParseException e) {
            logger.info("ReadES.createQueryBuilderByExpress-Exception,"+e.getMessage());
            logger.info("ReadES.createQueryBuilderByExpress-Exception," + e.getMessage());
            e.printStackTrace();
        }
        //实例化查询请求对象
@ -1142,18 +1166,18 @@ public class ElasticSearch7Util {
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        List<Map<String,Object>> listData = new ArrayList<>();
        List<Map<String, Object>> listData = new ArrayList<>();
        //遍历查询结果
        for(SearchHit hit : searchHits){
            Map<String,Object> datas = hit.getSourceAsMap();
            Map<String,Object> result = new HashMap<>();
        for (SearchHit hit : searchHits) {
            Map<String, Object> datas = hit.getSourceAsMap();
            Map<String, Object> result = new HashMap<>();
            for (String _field : field) {
                result.put(_field, datas.get(_field));
            }
            listData.add(result);
            logger.info(result.toString());
        }
      return listData;
        return listData;
    }

+ 20 - 0
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/statistics/EsStatisticsEndpoint.java

@ -1824,5 +1824,25 @@ class EsStatisticsEndpoint extends EnvelopRestEndpoint {
        }
    }
    /**
     * 获取登录医生的医院
     */
    @GetMapping(value = "/getDoctorOrgCode")
    @ApiOperation(value = "获取登录医生的医院")
    public Envelop getDoctorOrgCode(@RequestParam(required = true) String strJson) {
        ScreenQvo qvo = JSON.parseObject(strJson, ScreenQvo.class);
        try {
            System.out.println("调用==>获取登录医生的医院");
            Map<String, Object> result = statisticsEsService.getDoctorOrgCode(qvo);
            return success(result);
        } catch (Exception e) {
            e.printStackTrace();
            return failed("系统繁忙");
        }
    }
}

+ 99 - 46
svr/svr-statistics-hlw/src/main/java/com/yihu/jw/statistics/controller/JobController.java

@ -1,5 +1,7 @@
package com.yihu.jw.statistics.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.jw.elasticsearch.ElasticSearch7Util;
import com.yihu.jw.statistics.service.JobService;
import com.yihu.jw.statistics.util.hibernate.HibenateDemo;
import io.swagger.annotations.Api;
@ -7,10 +9,10 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
@ -23,9 +25,13 @@ import org.springframework.web.bind.annotation.RestController;
@Api(description = "后台-任务控制")
public class JobController extends BaseController {
    @Autowired
    private  JobService jobService;
    private JobService jobService;
    @Autowired
    private HibenateDemo hibenateDemo;
    @Autowired
    ElasticSearch7Util elasticSearchUtil;
    @Autowired
    ObjectMapper objectMapper;
    /**
     * 启动任务
@ -36,7 +42,7 @@ public class JobController extends BaseController {
    @ApiOperation(value = "根据ID立即单个任务")
    @RequestMapping(value = "startNowById", method = RequestMethod.GET)
    public String startNowById(
            @ApiParam(name = "id", value = "任务ID", required = true)@RequestParam(value = "id", required = true) String id) {
            @ApiParam(name = "id", value = "任务ID", required = true) @RequestParam(value = "id", required = true) String id) {
        try {
            jobService.startNowById(id);
            return success("启动成功!");
@ -54,7 +60,7 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去几天的数据")
    @RequestMapping(value = "productDataByDay", method = RequestMethod.GET)
    public String productDataByDay(  @ApiParam(name = "day", value = "距离今天的天数(如果是要生成昨天的数据,day=1)")@RequestParam(value = "day", required = true) int day) {
    public String productDataByDay(@ApiParam(name = "day", value = "距离今天的天数(如果是要生成昨天的数据,day=1)") @RequestParam(value = "day", required = true) int day) {
        try {
            jobService.productDataByDay(day);
            return success("启动成功!");
@ -72,7 +78,7 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天的全部的数据")
    @RequestMapping(value = "productDataByOneDay", method = RequestMethod.GET)
    public String productDataByOneDay( @ApiParam(name = "day", value = "yyyy-MM-dd")@RequestParam(value = "day", required = true)String day) {
    public String productDataByOneDay(@ApiParam(name = "day", value = "yyyy-MM-dd") @RequestParam(value = "day", required = true) String day) {
        try {
            jobService.productDataByOneDay(day);
            return success("启动成功!");
@ -81,6 +87,7 @@ public class JobController extends BaseController {
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 生成过去某一天到某一天的全部的数据
     *
@ -90,16 +97,17 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天到某一天的全部的数据(包含头尾)")
    @RequestMapping(value = "productDataByDayToDay", method = RequestMethod.GET)
    public String productDataByDayToDay( @ApiParam(name = "start", value = "yyyy-MM-dd", required = true)@RequestParam(value = "start", required = true)String start,
                                         @ApiParam(name = "end", value = "yyyy-MM-dd", required = true)@RequestParam(value = "end", required = true)String end) {
    public String productDataByDayToDay(@ApiParam(name = "start", value = "yyyy-MM-dd", required = true) @RequestParam(value = "start", required = true) String start,
                                        @ApiParam(name = "end", value = "yyyy-MM-dd", required = true) @RequestParam(value = "end", required = true) String end) {
        try {
            jobService.productDataByDayToDay(start,end);
            jobService.productDataByDayToDay(start, end);
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 生成过去某一天到某一天的某个指标的数据
     *
@ -109,18 +117,19 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天到某一天的某个指标的数据(包含头尾)")
    @RequestMapping(value = "productDataByDayToDayAndId", method = RequestMethod.GET)
    public String productDataByDayToDayAndId( @ApiParam(name = "start", value = "yyyy-MM-dd")@RequestParam(value = "start", required = true)String start,
                                         @ApiParam(name = "end", value = "yyyy-MM-dd")@RequestParam(value = "end", required = true)String end,
                                         @ApiParam(name = "ids", value = "任务ids多个逗号分割")@RequestParam(value = "ids", required = true)String ids) {
    public String productDataByDayToDayAndId(@ApiParam(name = "start", value = "yyyy-MM-dd") @RequestParam(value = "start", required = true) String start,
                                             @ApiParam(name = "end", value = "yyyy-MM-dd") @RequestParam(value = "end", required = true) String end,
                                             @ApiParam(name = "ids", value = "任务ids多个逗号分割") @RequestParam(value = "ids", required = true) String ids) {
        try {
            
            jobService.productDataByDayToDayAndId(start,end,ids);
            jobService.productDataByDayToDayAndId(start, end, ids);
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 生成过去某一天的某一个指标的数据
     *
@ -130,8 +139,8 @@ public class JobController extends BaseController {
    @ApiOperation(value = "生成过去某一天的全部的数据")
    @RequestMapping(value = "productDataByOneDayWithId", method = RequestMethod.GET)
    public String productDataByOneDayWithId(
            @ApiParam(name = "day", value = "yyyy-MM-dd")@RequestParam(value = "day", required = true)String day,
            @ApiParam(name = "id", value = "任务id")@RequestParam(value = "id", required = true)String id) {
            @ApiParam(name = "day", value = "yyyy-MM-dd") @RequestParam(value = "day", required = true) String day,
            @ApiParam(name = "id", value = "任务id") @RequestParam(value = "id", required = true) String id) {
        try {
            jobService.productDataByOneDayWithId(day, id);
            return success("启动成功!");
@ -140,6 +149,7 @@ public class JobController extends BaseController {
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    /**
     * 生成过去到现在的全部的数据
     *
@ -149,8 +159,8 @@ public class JobController extends BaseController {
    @ApiOperation(value = "生成过去到现在的全部的数据")
    @RequestMapping(value = "productDataByDayAndId", method = RequestMethod.GET)
    public String productDataByDayAndId(
            @ApiParam(name = "day", value = "距离今天的天数(如果是要生成昨天的数据,day=1)")@RequestParam(value = "day", required = true) int day,
            @ApiParam(name="id",required=true)@RequestParam(value = "id", required = true) String id) {
            @ApiParam(name = "day", value = "距离今天的天数(如果是要生成昨天的数据,day=1)") @RequestParam(value = "day", required = true) int day,
            @ApiParam(name = "id", required = true) @RequestParam(value = "id", required = true) String id) {
        try {
            jobService.productDataByDayAndId(day, id);
            return success("启动成功!");
@ -165,11 +175,11 @@ public class JobController extends BaseController {
     *
     * @param id id
     * @return
    */
     */
    @ApiOperation(value = "启动单个任务")
    @RequestMapping(value = "startById", method = RequestMethod.GET)
    public String startById(
            @ApiParam(name="id",value="任务id",required=true)@RequestParam(value = "id", required = true) String id) {
            @ApiParam(name = "id", value = "任务id", required = true) @RequestParam(value = "id", required = true) String id) {
        try {
            jobService.startById(id);
            return success("启动成功!");
@ -187,7 +197,7 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "停止单个任务")
    @RequestMapping(value = "stopById", method = RequestMethod.GET)
    public String stopById(@ApiParam(name="id",value="任务id",required=true)@RequestParam(value = "id", required = true)String id) {
    public String stopById(@ApiParam(name = "id", value = "任务id", required = true) @RequestParam(value = "id", required = true) String id) {
        try {
            jobService.stopById(id);
            return success("停止成功!");
@ -230,6 +240,7 @@ public class JobController extends BaseController {
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    @ApiOperation(value = "清除緩存")
    @RequestMapping(value = "cleanCache", method = RequestMethod.GET)
    public String cleanCache() {
@ -277,6 +288,7 @@ public class JobController extends BaseController {
    }
    //================================================没有休眠时间=============================================================
    /**
     * 生成过去某一天到某一天的某个指标的数据
     *
@ -286,13 +298,13 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天到某一天的某个指标的数据(包含头尾)没有休眠时间")
    @RequestMapping(value = "productDataByDayToDayAndIdNoSleep", method = RequestMethod.GET)
    public String productDataByDayToDayAndIdNoSleep( @ApiParam(name = "start", value = "yyyy-MM-dd")@RequestParam(value = "start", required = true)String start,
                                                     @ApiParam(name = "end", value = "yyyy-MM-dd")@RequestParam(value = "end", required = true)String end,
                                                     @ApiParam(name = "id", value = "任务id")@RequestParam(value = "id", required = true)String id,
                                                     @ApiParam(name = "sleepTime", value = "任务间隔时间(秒)")@RequestParam(value = "sleepTime", required = true)Long sleepTime) {
    public String productDataByDayToDayAndIdNoSleep(@ApiParam(name = "start", value = "yyyy-MM-dd") @RequestParam(value = "start", required = true) String start,
                                                    @ApiParam(name = "end", value = "yyyy-MM-dd") @RequestParam(value = "end", required = true) String end,
                                                    @ApiParam(name = "id", value = "任务id") @RequestParam(value = "id", required = true) String id,
                                                    @ApiParam(name = "sleepTime", value = "任务间隔时间(秒)") @RequestParam(value = "sleepTime", required = true) Long sleepTime) {
        try {
            jobService.productDataByDayToDayAndIdNoSleep(start,end,id,sleepTime);
            jobService.productDataByDayToDayAndIdNoSleep(start, end, id, sleepTime);
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
@ -308,10 +320,10 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天的全部的数据")
    @RequestMapping(value = "productDataByOneDayNoSleep", method = RequestMethod.GET)
    public String productDataByOneDayNoSleep( @ApiParam(name = "day", value = "yyyy-MM-dd")@RequestParam(value = "day", required = true)String day,
                                              @ApiParam(name = "sleepTime", value = "任务间隔时间(秒)")@RequestParam(value = "sleepTime", required = true)Long sleepTime) {
    public String productDataByOneDayNoSleep(@ApiParam(name = "day", value = "yyyy-MM-dd") @RequestParam(value = "day", required = true) String day,
                                             @ApiParam(name = "sleepTime", value = "任务间隔时间(秒)") @RequestParam(value = "sleepTime", required = true) Long sleepTime) {
        try {
            jobService.productDataByOneDayNoSleep(day,sleepTime);
            jobService.productDataByOneDayNoSleep(day, sleepTime);
            return success("启动成功!");
        } catch (Exception e) {
            error(e);
@ -330,17 +342,17 @@ public class JobController extends BaseController {
     */
    @ApiOperation(value = "生成过去某一天到某一天的全部的数据(包含头尾)按周或月统计")
    @RequestMapping(value = "productDataByDayToDay2", method = RequestMethod.GET)
    public String productDataByDayToDay2( @ApiParam(name = "start", value = "yyyy-MM-dd", required = true)@RequestParam(value = "start", required = true)String start,
                                         @ApiParam(name = "end", value = "yyyy-MM-dd", required = true)@RequestParam(value = "end", required = true)String end,
                                          @ApiParam(name = "incrementInterval", value = "2周,3月", required = true)@RequestParam(value = "incrementInterval", required = true)Integer incrementInterval,
                                          @ApiParam(name = "id", value = "指标id,逗号分隔(为空表示全部)", required = false)@RequestParam(value = "id", required = false)String id) {
    public String productDataByDayToDay2(@ApiParam(name = "start", value = "yyyy-MM-dd", required = true) @RequestParam(value = "start", required = true) String start,
                                         @ApiParam(name = "end", value = "yyyy-MM-dd", required = true) @RequestParam(value = "end", required = true) String end,
                                         @ApiParam(name = "incrementInterval", value = "2周,3月", required = true) @RequestParam(value = "incrementInterval", required = true) Integer incrementInterval,
                                         @ApiParam(name = "id", value = "指标id,逗号分隔(为空表示全部)", required = false) @RequestParam(value = "id", required = false) String id) {
        try {
            if(incrementInterval==2){
                jobService.productWeekByDayToDay(start,end,id);
            }else if(incrementInterval==3){
            if (incrementInterval == 2) {
                jobService.productWeekByDayToDay(start, end, id);
            } else if (incrementInterval == 3) {
                jobService.productMonthByDayToDay(start,end,id);
            }else{
                jobService.productMonthByDayToDay(start, end, id);
            } else {
                return success("启动失败!");
            }
            return success("启动成功!");
@ -353,20 +365,61 @@ public class JobController extends BaseController {
    @ApiOperation(value = "測試oracle")
    @RequestMapping(value = "testOracle", method = RequestMethod.GET)
    public String testOracle(@ApiParam(name = "id", value = "id")
                                 @RequestParam(value = "id", required = false)String id,
                             @RequestParam(value = "id", required = false) String id,
                             @ApiParam(name = "name", value = "姓名")
                                 @RequestParam(value = "name", required = false)String name,
                             @RequestParam(value = "name", required = false) String name,
                             @ApiParam(name = "createTime", value = "创建时间")
                                 @RequestParam(value = "createTime", required = false)String createTime,
                             @RequestParam(value = "createTime", required = false) String createTime,
                             @ApiParam(name = "page", value = "第几页,1开始")
                                 @RequestParam(value = "page", required = true)Integer page,
                             @RequestParam(value = "page", required = true) Integer page,
                             @ApiParam(name = "size", value = "每页大小")
                                 @RequestParam(value = "size", required = true)Integer size) {
                             @RequestParam(value = "size", required = true) Integer size) {
        try {
            return write(200,"启动成功!","data",hibenateDemo.findDoctorInfo(id,name,createTime,page,size));
            return write(200, "启动成功!", "data", hibenateDemo.findDoctorInfo(id, name, createTime, page, size));
        } catch (Exception e) {
            error(e);
            return invalidUserException(e, -1, "启动失败:" + e.getMessage());
        }
    }
    @RequestMapping(value = "esUpdate", method = RequestMethod.PUT)
    @ApiOperation(value = "更新数据")
    public String update(
            @ApiParam(name = "index", value = "索引名称", required = true) @RequestParam(value = "index") String index,
            @ApiParam(name = "type", value = "索引类型", required = true) @RequestParam(value = "type") String type,
            @ApiParam(name = "id", value = "id", required = true)
            @RequestParam(value = "id") String id, @ApiParam(name = "source", value = "值", required = true)
            @RequestParam(value = "source") String source) throws Exception {
        Map<String, Object> sourceMap = objectMapper.readValue(source, Map.class);
        Map<String, Object> result = elasticSearchUtil.update(index, id, sourceMap);
        if (result != null) {
            return write(200, "成功", "data", result);
        }
        return error(-1, "更新失败");
    }
    @RequestMapping(value = "findById", method = RequestMethod.GET)
    @ApiOperation(value = "获取单条数据")
    public String findById(
            @ApiParam(name = "index", value = "索引名称", required = true) @RequestParam(value = "index") String index,
            @ApiParam(name = "type", value = "索引类型", required = true) @RequestParam(value = "type") String type,
            @ApiParam(name = "id", value = "id", required = true) @PathVariable(value = "id") String id) throws Exception {
        Map<String, Object> result = elasticSearchUtil.findById(index, id);
        return write(200, "成功", "data", result);
    }
    @RequestMapping(value = "findByField", method = RequestMethod.GET)
    @ApiOperation(value = "获取结果集")
    public String findByField(
            @ApiParam(name = "index", value = "索引名称", required = true) @RequestParam(value = "index") String index,
            @ApiParam(name = "type", value = "索引类型", required = true) @RequestParam(value = "type") String type,
            @ApiParam(name = "field", value = "字段", required = true) @RequestParam(value = "field") String field,
            @ApiParam(name = "value", value = "字段值", required = true) @RequestParam(value = "value") Object value
    ) throws Exception {
        List<Map<String, Object>> resultList = elasticSearchUtil.findByField(index, field, value);
        return write(200, "成功", "data", resultList);
    }
}