Browse Source

修改bug

esb 8 years ago
parent
commit
db62780133

+ 40 - 24
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/dataFilter/SignDataFilter.java

@ -38,7 +38,6 @@ public class SignDataFilter {
    public static String level2Health="5";//健康服务分布
    public static String level3Disease="1";//疾病分组
   public static int size=0;
    private StringBuffer errorContent =new StringBuffer();//错误信息
    @Autowired
@ -49,6 +48,8 @@ public class SignDataFilter {
    private DoctorAdminTeamDao doctorAdminTeamDao;
    @Autowired
    private SignPatientLabelInfoDao signPatientLabelInfoDao;
    private int count=0;
    /**
     * 过滤数据
     * @param signFamilies 签约列表
@ -117,8 +118,13 @@ public class SignDataFilter {
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        int a1=0;
        int a2=0;
        for (int i=0;i<signFamilies.size();i++){
            SignFamily signFamily=signFamilies.get(i);
            if("1".equals(signFamily.getExpensesStatus())){
                a1++;
            }
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
@ -148,42 +154,44 @@ public class SignDataFilter {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamCode()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
           Long adminId=signFamily.getAdminTeamCode();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
            AdminTeam adminTeam=adminTeamMap.get(adminId+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
            String idCard=signFamily.getIdcard();
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            if("1".equals(signFamilies.get(i).getExpensesStatus())){
                a2++;
            }
            //设置二级维度的Key
            String returnLevel2Key=getLevel2Key(level2Key,signFamily);
            String returnLevel3Key=getLevel3Key(level3Key,signFamily);
@ -267,29 +275,28 @@ public class SignDataFilter {
                 //性别
                 case "1" :{
                     returnLevel2Key = getSex(signFamily);
                     break;
                     return returnLevel2Key;
                 }
                 //年龄
                 case "2" :{
                     returnLevel2Key = getAge(signFamily);
                     break;
                     return returnLevel2Key;
                 }
                 //分组
                 case "3" :{
                     //得到患者的分组标签
                     returnLevel2Key = getGroup(signFamily);
                     break;
                     return returnLevel2Key;
                 }
                 //费用
                 case "4" :{
                     returnLevel2Key = getExpenses(signFamily);
                     break;
                     return returnLevel2Key;
                 }
                 //健康服务分布
                 case "5" :{
                     returnLevel2Key = getHealth(signFamily);
                     break;
                     return returnLevel2Key;
                 }
             }
        }
@ -306,7 +313,16 @@ public class SignDataFilter {
    }
    private String getExpenses(SignFamily signFamily) {
        String returnLevel2Key= StringUtils.isEmpty(signFamily.getExpensesStatus())?"0":signFamily.getExpensesStatus();
        if("1".equals(signFamily.getExpensesStatus())){
            count++;
        }
        String returnLevel2Key= signFamily.getExpensesStatus();
        if(returnLevel2Key==null){
            returnLevel2Key="0";
        }
        if("".equals(returnLevel2Key.trim())){
            returnLevel2Key="0";
        }
        return returnLevel2Key;
    }

+ 8 - 3
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/etl/extract/DBPageExtract.java

@ -25,10 +25,14 @@ import java.util.concurrent.Future;
public class DBPageExtract<T> {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    private  List<T> returnList=new ArrayList<T>();
    public synchronized void addData( List<T> dataList) {
         returnList.addAll(dataList);
    }
     private  List<T> returnList=new ArrayList<T>();
    public List<T> extractByPage(Class<T> clazz, String sql,String countSql, int pageSize, Boolean isMultithreading) throws Exception{
    public List<T> extractByPage(Class<T> clazz, String sql, String countSql, int pageSize, Boolean isMultithreading) throws Exception{
        if(isMultithreading){
            if(StringUtils.isEmpty(countSql)){
                throw new Exception("countSql is null");
@ -79,6 +83,7 @@ public class DBPageExtract<T> {
            Integer dataCount=getCount(countSql);
            //根据count 计算出 总共要执行几次
            Integer forCount=getForCount(dataCount,pageSize);
            forCount++;
            //綫程返回值的值
            List<AsyncResult<Boolean>> asyncResultPool=new ArrayList<AsyncResult<Boolean>>();
            for(int page=0;page<forCount;page++){
@ -143,7 +148,7 @@ public class DBPageExtract<T> {
    private AsyncResult<Boolean> multiExtractData(String sql, int start, int pageSize, Class<T> clazz) {
        String finalSql=sql+" limit "+start+","+pageSize; //拼凑分页的语句
        List<T> listTemp= jdbcTemplate.query(finalSql,new BeanPropertyRowMapper(clazz));
        returnList.addAll(listTemp);
        addData(listTemp);
        return new AsyncResult<>(true);
    }

+ 10 - 6
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/AllSignExpenseStatusJob.java

@ -96,13 +96,17 @@ public class AllSignExpenseStatusJob implements Job{
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            String dateTemp = date + Constant.quota_date_last;
            String sql=" select id,code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+dateTemp+"' ";
            String sqlCount=" select count(id) from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+dateTemp+"'";
            //抽取數據
            List<SignFamily> signFamilies= dbExtract.extractByPage(SignFamily.class,sql,sqlCount,true);
            String sql=" select code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+date+ Constant.quota_date_last+"' and expenses_status=1";
            String sqlCount=" select count(id) from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+date+ Constant.quota_date_last+"'and expenses_status=1  ";
            //抽取數據 expensesStatus=1
            List<SignFamily> signFamilies_1= dbExtract.extractByPage(SignFamily.class,sql,sqlCount,true);
            sql=" select code,idcard,hospital,admin_team_code,expenses_status from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+date+ Constant.quota_date_last+"' and (expenses_status !=1 or expenses_status is null)";
            sqlCount=" select count(id) from wlyy_sign_family a where  a.type =2 and  a.apply_date< '"+date+ Constant.quota_date_last+"'and (expenses_status !=1 or expenses_status is null)  ";
            List<SignFamily> signFamilies_2= dbExtract.extractByPage(SignFamily.class,sql,sqlCount,true);
            //清洗數據
            FilterModel etlModels= signDataFilter.filter(signFamilies, SignDataFilter.level2Expenses,sql,date);
            FilterModel etlModels= signDataFilter.filter(signFamilies_1, SignDataFilter.level2Expenses,sql,date);
            //统计数据
            //统计数据 一级维度
            List<Map<String, List<ETLModel>>>  returnDatas= levelRole.elt(etlModels.getEtlModelList());