chenweida 7 anos atrás
pai
commit
2e96aa8483

+ 34 - 31
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -39,9 +39,9 @@ public class ComputeHelper {
            //得到全部团队
            List<AdminTeam> teams = findAllTeam();
            //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
            Map<String,  List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
            Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
            //初始化map并且设置统计出来的数目
            List<SaveModel> savemodels = initAndSetResult(teams, dimensionQuotas, computeMap, wlyyJobConfigVO, endTime,timeLevel);
            List<SaveModel> savemodels = initAndSetResult(teams, dimensionQuotas, computeMap, wlyyJobConfigVO, endTime, timeLevel);
            return savemodels;
        } catch (Exception e) {
            e.printStackTrace();
@ -56,16 +56,16 @@ public class ComputeHelper {
     * @param dimensionQuotas 该指标的维度
     * @return
     */
    private Map<String,  List<DataModel>> computeDataModel( List<WlyyDimensionQuota> dimensionQuotas, List<DataModel> dataModels) {
        Map<String,  List<DataModel>> returnMap = new HashMap<>();
    private Map<String, List<DataModel>> computeDataModel(List<WlyyDimensionQuota> dimensionQuotas, List<DataModel> dataModels) {
        Map<String, List<DataModel>> returnMap = new HashMap<>();
        dataModels.stream().forEach(one -> {
            String key = getKey(one, dimensionQuotas.size());
            List<DataModel> sms=new ArrayList<DataModel>();
            List<DataModel> sms = new ArrayList<DataModel>();
            if (returnMap.containsKey(key)) {
                sms=returnMap.get(key);
                sms = returnMap.get(key);
            }
            sms.add(one);
            returnMap.put(key,sms);
            returnMap.put(key, sms);
        });
        return returnMap;
@ -123,28 +123,31 @@ public class ComputeHelper {
    /**
     * 初始化map
     */
    private List<SaveModel> initAndSetResult(List<AdminTeam> teams, List<WlyyDimensionQuota> dimensionQuotas, Map<String,  List<DataModel>> countMap,  WlyyJobConfigVO wlyyJobConfigVO, String endTime,String timeLevel) throws Exception {
    private List<SaveModel> initAndSetResult(List<AdminTeam> teams, List<WlyyDimensionQuota> dimensionQuotas, Map<String, List<DataModel>> countMap, WlyyJobConfigVO wlyyJobConfigVO, String endTime, String timeLevel) throws Exception {
        List<SaveModel> returnList = new ArrayList<>();
        Map<String, SaveModel> lastMaps = new HashMap<>();
        //初始化团队的数据
        for (int i = 0; i < teams.size(); i++) {
            AdminTeam one = teams.get(i);
            SaveModel saveModel = new SaveModel();
            saveModel.setCity("350200");
            saveModel.setCityName("厦门市");
            saveModel.setTown(one.getTownCode());
            saveModel.setTownName(one.getTownName());
            saveModel.setHospital(one.getOrgCode());
            saveModel.setHospitalName(one.getOrgName());
            saveModel.setTeam(one.getId().toString());
            saveModel.setTeamName(one.getName());
            saveModel.setQuotaCode(wlyyJobConfigVO.getId());
            saveModel.setCreateTime(new Date());
            saveModel.setTimeLevel(timeLevel);
            saveModel.setAreaLevel("5");//团队
            saveModel.setQuotaDate(DateUtil.strToDate(endTime,"yyyy-MM-dd"));
            lastMaps.put(one.getId().toString(), saveModel);
            //排除测试机构
            if (one.getOrgCode().length() == 11) {
                SaveModel saveModel = new SaveModel();
                saveModel.setCity("350200");
                saveModel.setCityName("厦门市");
                saveModel.setTown(one.getTownCode());
                saveModel.setTownName(one.getTownName());
                saveModel.setHospital(one.getOrgCode());
                saveModel.setHospitalName(one.getOrgName());
                saveModel.setTeam(one.getId().toString());
                saveModel.setTeamName(one.getName());
                saveModel.setQuotaCode(wlyyJobConfigVO.getId());
                saveModel.setCreateTime(new Date());
                saveModel.setTimeLevel(timeLevel);
                saveModel.setAreaLevel("5");//团队
                saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
                lastMaps.put(one.getId().toString(), saveModel);
            }
        }
        //根据维度初始化数据
@ -158,8 +161,8 @@ public class ComputeHelper {
                    DictModel dictModel = dictModels.get(j);
                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name",String.class).invoke(saveModelTemp, dictModel.getName());
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1),String.class).invoke(saveModelTemp, dictModel.getCode());
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.getName());
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.getCode());
                    //根据维度生成新的key
                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.getCode());
                    mapTemp.put(strKey.toString(), saveModelTemp);
@ -171,12 +174,12 @@ public class ComputeHelper {
        //设置值
        for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
            if (countMap.containsKey(one.getKey())) {
                List<DataModel> dataModels=countMap.get(one.getKey());
                Integer result1=0;
                Integer result2=0;
                for(int j=0;j<dataModels.size();j++){
                    DataModel dataModel=dataModels.get(j);
                    result1+=dataModel.getNum();
                List<DataModel> dataModels = countMap.get(one.getKey());
                Integer result1 = 0;
                Integer result2 = 0;
                for (int j = 0; j < dataModels.size(); j++) {
                    DataModel dataModel = dataModels.get(j);
                    result1 += dataModel.getNum();
                    result2++;
                }
                one.getValue().setResult1(result1);

+ 3 - 0
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/save/es/ElasticFactory.java

@ -13,6 +13,7 @@ import org.springframework.util.StringUtils;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.concurrent.TimeUnit;
/**
 * Created by chenweida on 2017/6/5.
@ -52,6 +53,8 @@ public class ElasticFactory {
        factory.setHttpClientConfig(new HttpClientConfig
                .Builder("http://" + esHost + ":" + port)
                .multiThreaded(true)
                .maxTotalConnection(50)// 最大链接
                .maxConnectionIdleTime(10, TimeUnit.SECONDS)//链接等待时间
                .discoveryEnabled(true)
                .readTimeout(30000)//30秒
                .build());//得到链接

+ 1 - 1
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentMysqlToEsQuotaJob.java

@ -154,7 +154,7 @@ public class CurrentMysqlToEsQuotaJob implements Job {
                e.printStackTrace();
            }
            try {
                Thread.sleep(20000L);
                Thread.sleep(5000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

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

@ -98,18 +98,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.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
      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.85/data_for_stats?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
      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.17.110.160/im_new?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: linzhou
      password: linzhou
      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.