Ver código fonte

统计代码修改

liubing 3 anos atrás
pai
commit
c0d7c7d8e5

+ 108 - 3
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -23,8 +23,12 @@ public class ComputeHelper {
    private JdbcTemplate jdbcTemplate;
    public String findOrgType(String wlyyJobCongId){
        String orgType="";
        String sql = "SELECT IFNULL(dict_value,'') from wlyy_hospital_sys_dict WHERE dict_name = 'quota_org_type' and dict_code = '"+wlyyJobCongId+"'";
        String orgType = jdbcTemplate.queryForObject(sql,String.class);
        List<String> orgTypes = jdbcTemplate.queryForList(sql,String.class);
        if (orgTypes.size()>0){
            return orgTypes.get(0);
        }
        return orgType;
    }
@ -43,7 +47,9 @@ public class ComputeHelper {
            //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
            Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels,wlyyJobCongId);
            List<SaveModel> savemodels = null;
            if("42".equals(wlyyJobCongId)){
            if ("45".equals(wlyyJobCongId)||"47".equals(wlyyJobCongId)){
                savemodels = initAndSetResultCity( dimensionQuotas, computeMap, wlyyJobCongId, endTime, timeLevel);
            }else if("42".equals(wlyyJobCongId)||"41".equals(wlyyJobCongId)||"43".equals(wlyyJobCongId)||"46".equals(wlyyJobCongId)||"48".equals(wlyyJobCongId)){
                //新生儿入学只到机构级别
                List<BaseOrgDO> orgDOs = findAllOrg(orgType);
                savemodels = initAndSetResultOrg(orgDOs, dimensionQuotas, computeMap, wlyyJobCongId, endTime, timeLevel);
@ -72,7 +78,10 @@ public class ComputeHelper {
        Map<String, List<DataModel>> returnMap = new HashMap<>();
        dataModels.stream().forEach(one -> {
            String key;
            if("42".equals(wlyyJobCongId)){
            if ("45".equals(wlyyJobCongId)||"47".equals(wlyyJobCongId)){
                key = getCityKey(one,dimensionQuotas.size());
            }
            else if("42".equals(wlyyJobCongId)||"41".equals(wlyyJobCongId)||"43".equals(wlyyJobCongId)||"46".equals(wlyyJobCongId)||"48".equals(wlyyJobCongId)){
                key = getOrgKey(one, dimensionQuotas.size());
            }else{
                key = getKey(one, dimensionQuotas.size());
@ -131,6 +140,24 @@ public class ComputeHelper {
        }
    }
    private String getCityKey(DataModel one, int size) {
        try {
            if (size > 0) {
                StringBuffer str = new StringBuffer("330100");
                for (int i = 1; i <= size; i++) {
                    String invokeKey = (String) DataModel.class.getMethod("getSlaveKey" + i).invoke(one);
                    str.append("-" + invokeKey);
                }
                return str.toString();
            } else {
                return one.getHospital();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * 得到全部机构
     *
@ -357,4 +384,82 @@ public class ComputeHelper {
        }
        return returnList;
    }
    private List<SaveModel> initAndSetResultCity(List<BaseDimensionQuota> dimensionQuotas, Map<String, List<DataModel>> countMap, String wlyyJobCongId, String endTime, String timeLevel) throws Exception {
        List<SaveModel> returnList = new ArrayList<>();
        Map<String, SaveModel> lastMaps = new HashMap<>();
        //初始化医生的数据
        SaveModel saveModel = new SaveModel();
        saveModel.setCity("330100");
        saveModel.setCityName("杭州市");
//        saveModel.setTown(one.getTownCode());
//        saveModel.setTownName(one.getTownName());
//        saveModel.setHospitalName(one.getName());
//        saveModel.setHospital(one.getCode());
        saveModel.setQuotaCode(wlyyJobCongId);
        saveModel.setCreateTime(new Date());
        saveModel.setTimeLevel(timeLevel);
        saveModel.setAreaLevel("2");//市
        saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
        lastMaps.put("330100", saveModel);
        //根据维度初始化数据
        for (int i = 0; i < dimensionQuotas.size(); i++) {
            Map<String, SaveModel> mapTemp = new HashMap<>();
            BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
            List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
            for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
                for (int j = 0; j < listMap.size(); j++) {
                    SaveModel saveModelTemp = new SaveModel();
                    Map<String, Object> dictModel = listMap.get(j);
                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.get("name"));
                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.get("code"));
                    //根据维度生成新的key
                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.get("code"));
                    mapTemp.put(strKey.toString(), saveModelTemp);
                }
            }
            //如果字典长度是0 抛出异常
            if (listMap.size() == 0) {
                throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
            }
            lastMaps = mapTemp;
        }
        //设置值
        for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {
            if (countMap.containsKey(one.getKey())) {
                List<DataModel> dataModels = countMap.get(one.getKey());
                Double result1 = 0.0;
                Double result2 = 0.0;
                for (int j = 0; j < dataModels.size(); j++) {
                    DataModel dataModel = dataModels.get(j);
                    Double num = 0.0;
                    if (dataModel.getNum() != null) {
                        num = dataModel.getNum();
                    } else {
                        num = 1.0;
                    }
                    result1 += num;
                    result2++;
                }
                saveModel = one.getValue();
                saveModel.setResult1(result1);
                saveModel.setResult2(result2);
                if (dataModels.size() > 0 && StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey1()) && !StringUtils.isNotEmpty(saveModel.getSlaveKey1())) {
                    saveModel.setSlaveKey1(dataModels.get(0).getSlaveKey1());
                }
                if (dataModels.size() > 0 && StringUtils.isNotEmpty(dataModels.get(0).getSlaveKey2()) && !StringUtils.isNotEmpty(saveModel.getSlaveKey2())) {
                    saveModel.setSlaveKey2(dataModels.get(0).getSlaveKey2());
                }
                returnList.add(saveModel);
            } else {
                returnList.add(one.getValue());
            }
        }
        return returnList;
    }
}

+ 10 - 9
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/filter/FilterHelper.java

@ -31,16 +31,17 @@ public class FilterHelper {
        List<DataModel> newList = new ArrayList<>();
        //失败的list
        List<ErrModel> errorList = new ArrayList<>();
        newList.addAll(dataModels);
        dataModels.stream().forEach(one -> {
            String returnStr=one.isNull();
            if (StringUtils.isEmpty(returnStr)) {
                newList.add(one);
            }else{
                //脏数据
                errorList.add(new ErrModel(one.getBusinessId(),returnStr));
            }
        });
//        dataModels.stream().forEach(one -> {
//            String returnStr=one.isNull();
//            if (StringUtils.isEmpty(returnStr)) {
//                newList.add(one);
//            }else{
//                //脏数据
//                errorList.add(new ErrModel(one.getBusinessId(),returnStr));
//            }
//        });
        return new FilterModel(newList, errorList);
    }