فهرست منبع

Merge branch 'dev' of chenweida/patient-co-management into dev

chenweida 7 سال پیش
والد
کامیت
79008f2a29

+ 2 - 1
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/SwaggerConfig.java

@ -42,7 +42,8 @@ public class SwaggerConfig extends WebMvcConfigurerAdapter {
                .select()
                .paths(or(
                        regex("/job/.*"),
                        regex("/quotaQuery/.*")
                        regex("/quotaQuery/.*"),
                        regex("/extractDataToEs/.*")
                ))
                .build()
                .apiInfo(publicApiInfo());

+ 1 - 1
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/controller/ExtractDataController.java

@ -18,7 +18,7 @@ import java.util.List;
 */
@RestController
@RequestMapping("/extractData")
@RequestMapping("/extractDataToEs")
@Api(description = "抽取mysql数据到es")
public class ExtractDataController extends BaseController {
    @Autowired

+ 2 - 0
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/ServerTypeConvert.java

@ -32,6 +32,8 @@ public class ServerTypeConvert implements Convert {
            if (serverTypeList == null) {
                serverTypeList = new ArrayList<String>();
            }
            serverTypeList.add(one.getServerType());
            serverTypesMap.put(one.getSignCode(),serverTypeList);
        });
        oneList.stream().forEach(one -> {
            List<String> serverTypeList = serverTypesMap.get(one.getBusinessId());

+ 199 - 27
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/service/ExtractDataService.java

@ -2,12 +2,25 @@ package com.yihu.wlyy.statistics.service;
import com.yihu.wlyy.entity.statistics.WlyyQuotaResult;
import com.yihu.wlyy.statistics.dao.WlyyQuotaResultDao;
import com.yihu.wlyy.statistics.etl.save.es.ElasticFactory;
import com.yihu.wlyy.statistics.etl.save.es.ElastricSearchSave;
import com.yihu.wlyy.statistics.util.DateUtil;
import com.yihu.wlyy.statistics.vo.SaveModel;
import io.searchbox.client.JestClient;
import io.searchbox.core.*;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
@ -15,8 +28,12 @@ import java.util.List;
 */
@Service
public class ExtractDataService {
    @Autowired
    private ElasticFactory elasticFactory;
    @Value("${es.type}")
    private String esType;
    @Value("${es.index}")
    private String esIndex;
    @Autowired
    private WlyyQuotaResultDao wlyyQuotaResultDao;
    @Autowired
@ -24,10 +41,131 @@ public class ExtractDataService {
    public void extractOneDate(String date) {
        List<WlyyQuotaResult> quotaResults = wlyyQuotaResultDao.findByDate(date);
        save2es(quotaResults, date, null);
    }
    public void extractOneDateWithId(String date, String quotaId) {
        List<WlyyQuotaResult> quotaResults = wlyyQuotaResultDao.findByDateAndId(date, quotaId);
        save2es(quotaResults, date, quotaId);
    }
    public void extractDate2Date(String start, String end) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = sdf.parse(start);
        Date endDate = sdf.parse(end);
        if (startDate.after(endDate)) {
            throw new Exception("日期参数错误");
        }
        int day = daysBetween(startDate, endDate);
        for (int i = 0; i < day + 1; i++) {
            System.out.println(getYesterday(i, startDate));
            extractOneDate(getYesterday(i, startDate));
        }
    }
    public void extractDate2DateWithId(String start, String end, String quotaId) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = sdf.parse(start);
        Date endDate = sdf.parse(end);
        if (startDate.after(endDate)) {
            throw new Exception("日期参数错误");
        }
        int day = daysBetween(startDate, endDate);
        for (int i = 0; i < day + 1; i++) {
            extractOneDateWithId(getYesterday(i, startDate), quotaId);
        }
    }
    private String getYesterday(Integer day, Date startDate) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(startDate);
        cal.add(Calendar.DAY_OF_MONTH, day);
        String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
        return yesterday;
    }
    private int daysBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
    }
    private void deleteData(Date quotaDate, String quotaCode) {
        try {
            JestClient jestClient = elasticFactory.getJestClient();
            //先根据条件查找出来
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(
                    new BoolQueryBuilder()
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))
            ).size(50000);//一次取10000条
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).addType(esType)
                    .build();
            SearchResult result = jestClient.execute(search);
            List<SaveModel> saveModels = result.getSourceAsObjectList(SaveModel.class);
            //根据id批量删除
            Bulk.Builder bulk = new Bulk.Builder().defaultIndex(esIndex).defaultType(esType);
            for (SaveModel obj : saveModels) {
                Delete index = new Delete.Builder(obj.getId()).build();
                bulk.addAction(index);
            }
            BulkResult br = jestClient.execute(bulk.build());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void deleteData(Date quotaDate) {
        try {
            JestClient jestClient = elasticFactory.getJestClient();
            //先根据条件查找出来
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(
                    new BoolQueryBuilder()
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))
            ).size(100000);//一次取10000条
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).addType(esType)
                    .build();
            SearchResult result = jestClient.execute(search);
            List<SaveModel> saveModels = result.getSourceAsObjectList(SaveModel.class);
            //根据id批量删除
            Bulk.Builder bulk = new Bulk.Builder().defaultIndex(esIndex).defaultType(esType);
            for (SaveModel obj : saveModels) {
                Delete index = new Delete.Builder(obj.getId()).build();
                bulk.addAction(index);
            }
            BulkResult br = jestClient.execute(bulk.build());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void save2es(List<WlyyQuotaResult> quotaResults, String quotaCode, String quotaDate) {
        List<SaveModel> saveModel = new ArrayList<>();
        if (quotaResults != null && quotaResults.size() > 0) {
            //查询ES是否有这天的数据有就删除
            if (StringUtils.isEmpty(quotaCode)) {
                deleteData(DateUtil.strToDate(quotaDate, "yyyy-MM-dd"));
            } else {
                deleteData(DateUtil.strToDate(quotaDate, "yyyy-MM-dd"), quotaCode);
            }
            //
            quotaResults.stream().forEach(one -> {
                SaveModel saveModelTemp = new SaveModel();
@ -50,37 +188,71 @@ public class ExtractDataService {
                saveModelTemp.setSlaveKey2Name(one.getLevel3TypeName());
                if (
                        "1".equals(one.getQuatoCode()) ||
                        "2".equals(one.getQuatoCode()) ||
                        "6".equals(one.getQuatoCode())||
                                "7".equals(one.getQuatoCode())||
                                "8".equals(one.getQuatoCode())||
                                "9".equals(one.getQuatoCode())
                   ){
                    saveModelTemp.setTimeLevel("2");
                                "2".equals(one.getQuatoCode()) ||
                                "6".equals(one.getQuatoCode()) ||
                                "7".equals(one.getQuatoCode()) ||
                                "8".equals(one.getQuatoCode()) ||
                                "9".equals(one.getQuatoCode()) ||
                                "10".equals(one.getQuatoCode()) ||
                                "12".equals(one.getQuatoCode()) ||
                                "13".equals(one.getQuatoCode()) ||
                                "14".equals(one.getQuatoCode()) ||
                                "15".equals(one.getQuatoCode()) ||
                                "16".equals(one.getQuatoCode()) ||
                                "17".equals(one.getQuatoCode()) ||
                                "20".equals(one.getQuatoCode()) ||
                                "21".equals(one.getQuatoCode()) ||
                                "26".equals(one.getQuatoCode()) ||
                                "29".equals(one.getQuatoCode()) ||
                                "30".equals(one.getQuatoCode()) ||
                                "31".equals(one.getQuatoCode()) ||
                                "32".equals(one.getQuatoCode()) ||
                                "33".equals(one.getQuatoCode()) ||
                                "34".equals(one.getQuatoCode()) ||
                                "35".equals(one.getQuatoCode()) ||
                                "36".equals(one.getQuatoCode()) ||
                                "37".equals(one.getQuatoCode()) ||
                                "38".equals(one.getQuatoCode()) ||
                                "39".equals(one.getQuatoCode()) ||
                                "40".equals(one.getQuatoCode()) ||
                                "41".equals(one.getQuatoCode()) ||
                                "42".equals(one.getQuatoCode()) ||
                                "43".equals(one.getQuatoCode()) ||
                                "44".equals(one.getQuatoCode()) ||
                                "45".equals(one.getQuatoCode()) ||
                                "46".equals(one.getQuatoCode()) ||
                                "47".equals(one.getQuatoCode()) ||
                                "48".equals(one.getQuatoCode()) ||
                                "49".equals(one.getQuatoCode()) ||
                                "50".equals(one.getQuatoCode()) ||
                                "51".equals(one.getQuatoCode()) ||
                                "52".equals(one.getQuatoCode()) ||
                                "53".equals(one.getQuatoCode()) ||
                                "54".equals(one.getQuatoCode()) ||
                                "55".equals(one.getQuatoCode()) ||
                                "56".equals(one.getQuatoCode()) ||
                                "57".equals(one.getQuatoCode())
                        ) {
                    saveModelTemp.setTimeLevel("2");//到达量
                }
                if (
                        "3".equals(one.getQuatoCode()) ||
                        "4".equals(one.getQuatoCode()) ||
                        "5".equals(one.getQuatoCode())
                        ){
                    saveModelTemp.setTimeLevel("2");
                                "4".equals(one.getQuatoCode()) ||
                                "5".equals(one.getQuatoCode()) ||
                                "22".equals(one.getQuatoCode()) ||
                                "23".equals(one.getQuatoCode()) ||
                                "24".equals(one.getQuatoCode()) ||
                                "25".equals(one.getQuatoCode()) ||
                                "27".equals(one.getQuatoCode())
                        ) {
                    saveModelTemp.setTimeLevel("1");//增量
                }
                saveModelTemp.setAreaLevel("5");
            });
        }
    }
    public void extractOneDateWithId(String date, String quotaId) {
        wlyyQuotaResultDao.findByDateAndId(date, quotaId);
    }
    public void extractDate2Date(String startDate, String endDate) {
    }
    public void extractDate2DateWithId(String startDate, String endDate, String quotaId) {
                saveModel.add(saveModelTemp);
            });
            elastricSearchSave.save(saveModel);
        }
    }
}

+ 22 - 22
patient-co/patient-co-statistics-es/src/main/resources/application.yml

@ -108,30 +108,30 @@ spring:
  profiles: test
  datasource:
    primaryReadWrite:
      url: jdbc:mysql://172.19.103.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
    primaryRead:
      url: jdbc:mysql://172.19.103.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
    im: #im库
      url: jdbc:mysql://172.17.110.160/im_new?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
#    primaryReadWrite:
#      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: root
#      password: 123456
#      url: jdbc:mysql://172.19.103.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: linzhou
#      password: linzhou
#    primaryRead:
#      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: root
#      password: 123456
#      url: jdbc:mysql://172.19.103.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: linzhou
#      password: linzhou
#    im: #im库
#      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: root
#      password: 123456
#      url: jdbc:mysql://172.17.110.160/im_new?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
#      username: linzhou
#      password: linzhou
    primaryReadWrite:
      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
    primaryRead:
      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
    im: #im库
      url: jdbc:mysql://172.19.103.77/wlyy_quota?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
  redis:
    host: 172.19.103.88 # Redis server host.
@ -164,7 +164,7 @@ wlyy:
    databaseName: im_new
quartz:
  name: schedulerFactoryBean_test
  name: schedulerFactoryBean_cwd
---