Browse Source

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

chenweida 8 years ago
parent
commit
f718e18d7f

+ 197 - 23
src/main/java/com/yihu/wlyy/job/CurrentDayAllQuotaJob.java

@ -157,6 +157,8 @@ public class CurrentDayAllQuotaJob implements Job {
    }
    private void computequota_12() throws Exception{
        StringBuffer errorContent=new StringBuffer();
        String now = getDayString(0);
        String tomorrow = getDayString(1);
        //找出今天的签约信息 yesterday,now
@ -181,13 +183,73 @@ public class CurrentDayAllQuotaJob implements Job {
        Map<String, Map<String, Map>> townAgeMap = new HashMap<String, Map<String, Map>>();//key是区行政代码
        Map<String, Map<String, Map>> orgAgeMap = new HashMap<String, Map<String, Map>>();//key是机构代码
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        //统计有签约的
        for (SignFamily signFamily : signFamilys) {
            Hospital hospital = hospitalsMap.get(getOrg(signFamily.getHospital()));//得到患者签约的机构
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String town = hospital.getTown();
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                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数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
             town = hospital.getTown();
            int age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());//根据card解析年龄
            String ageCode = getAgeCode(age);//得到年龄的code
@ -237,15 +299,21 @@ public class CurrentDayAllQuotaJob implements Job {
            compute(townAgeMap, town, ageCode, diseaseType);
            //统计机构
            //统计站
            String orgCode=hospital.getCode();
             orgCode=hospital.getCode();
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                 orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                //统计机构
                compute(orgAgeMap, orgCodeTemp, ageCode, diseaseType);
            } else {
                compute(orgAgeMap, hospital.getCode(), ageCode, diseaseType);
            }
            //统计数目+1
            cityCount++;
            townCount++;
            orgCount++;
            adminCount++;
        }
        //保存市级数据
        for (Map.Entry<String, Map<String, Map>> entry : cityAgeMap.entrySet()) {
@ -326,6 +394,10 @@ public class CurrentDayAllQuotaJob implements Job {
                }
            }
        }
        saveContent("12",signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("-----------12----------");
    }
    private void compute(Map<String, Map<String, Map>> rootMap, String rootKey, String ageCode, String diseaseType) {
        if (rootMap.containsKey(rootKey)) {
@ -378,7 +450,14 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            String orgCodeTemp=getOrg(orgCode);
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            Hospital hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
@ -402,7 +481,7 @@ public class CurrentDayAllQuotaJob implements Job {
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||(idCard.length()!=18&&idCard.length()!=15)) {
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
@ -445,7 +524,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent("1",signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("-----------1----------");
    }
@ -547,7 +626,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("----------2-----------");
    }
    private void computequota_3() {
@ -636,7 +715,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent(quotaId,consultTeams.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("----------3-----------");
    }
    private void computequota_4() {
@ -740,7 +819,7 @@ public class CurrentDayAllQuotaJob implements Job {
        saveContent(quotaId,plans.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("-----------4----------");
    }
    private void computequota_5() {
@ -837,7 +916,7 @@ public class CurrentDayAllQuotaJob implements Job {
        saveContent(quotaId,patientHealthGuidances.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("-----------5----------");
    }
    private void computequota_6() throws Exception {
@ -880,8 +959,22 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||(idCard.length()!=18&&idCard.length()!=15)) {
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
@ -925,12 +1018,12 @@ public class CurrentDayAllQuotaJob implements Job {
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("-----------6----------");
    }
    private void computequota_7() {
        StringBuffer errorContent=new StringBuffer();
        errorContent.append("computequota_7---start,");
        String quotaId="7";
        String now = getDayString(0);
        String tomorrow = getDayString(1);
        List<SignFamily> signFamilys = signFamilyDao.findByJiatingSignYesterday(now, tomorrow);
@ -952,17 +1045,76 @@ public class CurrentDayAllQuotaJob implements Job {
        for (DoctorPatientGroupInfo doctorPatientGroupInfo : doctorPatientGroupInfos) {
            groupMap.put(doctorPatientGroupInfo.getPatient(), doctorPatientGroupInfo.getGroup());
        }
        Long cityCount = new Long(0L); //统计到市的数目
        Long townCount = new Long(0L); //统计到所有区的数目
        Long orgCount =new Long(0L);//统计到所有机构的数目
        Long adminCount = new Long(0L);//统计到所有团队的数目
        Long errorCount=new Long(0L);//脏数据
        Boolean isAll=true;//是否统计失败
        //统计有签约的
        for (SignFamily signFamily : signFamilys) {
            String patient=signFamily.getPatient();
            String group = groupMap.get(patient);//得到该签约病人的所在分组 1 普通 2 慢病 3是 65岁以上人群
            Hospital hospital = hospitalsMap.get(getOrg(signFamily.getHospital()));//得到患者签约的机构
            String orgCode = signFamily.getHospital();
            if(StringUtils.isEmpty(orgCode)) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String orgCodeTemp="";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //站
                orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
            }else{
                //社区
                orgCodeTemp=orgCode;
            }
            //判断社区有没有值
            hospital=hospitalsMap.get(orgCodeTemp);
            if(hospital == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据异常。");
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            String town = hospital.getTown();
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                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数据异常");
                isAll=false;
                errorCount++;
                continue;
            }
            String town =hospital.getTown();
            if(StringUtils.isEmpty(town)) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                isAll=false;
                errorCount++;
                continue;
            }
            Town townObj =townsMap.get(town);
            if(townObj==null) {
                errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            town = hospital.getTown();
            //统计市  现在只有厦门市 默认先写死 后面再改
            if (cityGroupMap.containsKey(Constant.city)) {
                Map<String, Long> groupMapTemp = cityGroupMap.get(Constant.city);
@ -1054,7 +1206,7 @@ public class CurrentDayAllQuotaJob implements Job {
                //统计站
                String org=hospital.getCode();
                if (!"00".equals(org.substring(org.length()-2,org.length()))) {
                    String orgCodeTemp =org.substring(0,org.length()-2)+"00";
                    orgCodeTemp =org.substring(0,org.length()-2)+"00";
                    //统计机构
                    if (orgGroupMap.containsKey(orgCodeTemp)) {
                        Map<String, Long> groupMapTemp = orgGroupMap.get(orgCodeTemp);
@ -1079,6 +1231,11 @@ public class CurrentDayAllQuotaJob implements Job {
                }
            }
            //统计数目+1
            cityCount++;
            townCount++;
            orgCount++;
            adminCount++;
        }
        //保存统计数据
        //保存市的统计数据
@ -1285,7 +1442,10 @@ public class CurrentDayAllQuotaJob implements Job {
            redisTemplate.opsForValue().set(new StringBuffer("quota:7:2:6:"+hospitalEntry.getKey()).toString(),jsonObject.toString());
        }
        errorContent.append("computequota_7---end!!");
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("----------7-----------");
    }
    private void computequota_8()throws Exception {
@ -1327,8 +1487,22 @@ public class CurrentDayAllQuotaJob implements Job {
                errorCount++;
                continue;
            }
            Long adminId=signFamily.getAdminTeamId();
            if(adminId == null||adminId<=0) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                isAll=false;
                errorCount++;
                continue;
            }
            AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
            if(adminTeam == null) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                isAll=false;
                errorCount++;
                continue;
            }
            String idCard=signFamily.getIdcard();
            if(idCard == null||(idCard.length()!=18&&idCard.length()!=15)) {
            if(idCard == null||((idCard.length()!=18&&idCard.length()!=15))) {
                errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的idCard数据异常");
                isAll=false;
                errorCount++;
@ -1371,7 +1545,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("----------8-----------");
    }
    private void computequota_9() {
@ -1472,7 +1646,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("----------9-----------");
    }
    private void computequota_10() {
@ -1591,7 +1765,7 @@ public class CurrentDayAllQuotaJob implements Job {
        }
        saveContent(quotaId,signFamilys.size(),adminCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount);
        allContent.append(errorContent);
        allContent.append("---------------------");
        allContent.append("-----------10----------");
    }
    public Properties getSystemProperties() {

+ 69 - 11
src/main/java/com/yihu/wlyy/job/SignAgeGroupDiseaseJob.java

@ -1,11 +1,13 @@
package com.yihu.wlyy.job;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.organization.Hospital;
import com.yihu.wlyy.entity.address.Town;
import com.yihu.wlyy.entity.job.QuartzJobLog;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.statistics.WlyyQuotaResult;
import com.yihu.wlyy.repository.address.TownDao;
import com.yihu.wlyy.repository.doctor.DoctorAdminTeamDao;
import com.yihu.wlyy.repository.job.QuartzJobLogDao;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
@ -44,6 +46,8 @@ public class SignAgeGroupDiseaseJob implements Job {
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorAdminTeamDao doctorAdminTeamDao;
    @Autowired
    private HospitalDao hospitalDao;
    @Autowired
    private TownDao townDao;
@ -80,6 +84,11 @@ public class SignAgeGroupDiseaseJob implements Job {
            wlyyJobLog.setJobStartTime(new Date());
            wlyyJobLog.setJobId(wlyyJobConfig.getId());
            wlyyJobLog.setJobName(wlyyJobConfig.getJobName());
            List<AdminTeam> adminTeams=doctorAdminTeamDao.findAllTeam();
            Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
            for (AdminTeam adminTeam : adminTeams) {
                adminTeamMap.put(adminTeam.getId()+"", adminTeam);
            }
            //查找出系统全部的机构
            List<Hospital> hospitals = hospitalDao.findHospital2();
            Map<String, Hospital> hospitalsMap = new HashMap<String, Hospital>();
@ -106,23 +115,69 @@ public class SignAgeGroupDiseaseJob implements Job {
            Long townCount = 0L; //统计到所有区的数目
            Long orgCount = 0L;//统计到所有机构的数目
            Long qkCount = 0L;//统计到所有全科医生的数目
            Long errorCount=0L;
            boolean isAll=true;//是否统计失败
            StringBuffer errorContent=new StringBuffer();
            for (SignFamily signFamily : signFamilies) {
                String orgCodeTemp=signFamily.getHospital();
                if(!"00".equals(orgCodeTemp.substring(orgCodeTemp.length()-2,orgCodeTemp.length()))){
                    //统计站
                    orgCodeTemp=orgCodeTemp.substring(0,orgCodeTemp.length()-2)+"00";
                String orgCode = signFamily.getHospital();
                if(StringUtils.isEmpty(orgCode)) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Hospital hospital = hospitalsMap.get(orgCodeTemp);//得到患者签约的机构
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //站
                    orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                }else{
                    //社区
                    orgCodeTemp=orgCode;
                }
                //判断社区有没有值
                Hospital hospital=hospitalsMap.get(orgCodeTemp);
                if(hospital == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据异常");
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    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数据异常");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                String town =hospital.getTown();
                if(StringUtils.isEmpty(town)) {
                    errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Town townObj =townsMap.get(town);
                if(townObj==null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                String town = hospital.getTown();
                int age = IdCardUtil.getAgeForIdcard(signFamily.getIdcard());//根据card解析年龄
                int age = IdCardUtil.getAgeForIdcard(idCard);//根据card解析年龄
                String ageCode = getAgeCode(age);//得到年龄的code
                boolean hasGXY = false;//有高血压
@ -173,7 +228,7 @@ public class SignAgeGroupDiseaseJob implements Job {
                townCount++;
                //统计机构
                //统计站
                String orgCode=hospital.getCode();
                orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                     orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
@ -228,6 +283,8 @@ public class SignAgeGroupDiseaseJob implements Job {
                Hospital hospital = entry.getValue();//得到机构信息
                for(int i=1;i<7;i++){
                    for(int j=1;j<5;j++){
                        Hospital hospital1=entry.getValue();
                        if(hospital1==null)continue;
                        String key_2=i+"";
                        String key_3=j+"";
                        String city=Constant.city;
@ -241,15 +298,16 @@ public class SignAgeGroupDiseaseJob implements Job {
                }
            }
            wlyyJobLog.setJobEndTime(new Date());
            wlyyJobLog.setJobContent(saveContent(signFamilies,qkCount,orgCount,townCount,cityCount,isAll,errorContent));
            wlyyJobLog.setJobContent(saveContent(signFamilies,qkCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount));
            wlyyJobLog.setJobType(isAll?"1":"0");
            quartzJobLogDao.save(wlyyJobLog);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private String saveContent(List<SignFamily> signFamilys, Long qkCount, Long orgCount, Long townCount, Long cityCount, boolean isAll, StringBuffer errorContent) {
    private String saveContent(List<SignFamily> signFamilys, Long qkCount, Long orgCount, Long townCount, Long cityCount, boolean isAll, StringBuffer errorContent,long errorCount) {
        StringBuffer string=new StringBuffer("统计"+getYesterday()+" 的签约数据完成 ,数据库查询到签约数目:"+signFamilys.size());
        string.append(",过滤的脏数据数目:"+errorCount);
        string.append(",统计到市的数据总数:"+cityCount);
        string.append(",统计到区的数据总数:"+townCount);
        string.append(",统计到机构的数据总数:"+orgCount);

+ 100 - 10
src/main/java/com/yihu/wlyy/job/SignJob.java

@ -135,6 +135,12 @@ public class SignJob implements Job {
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //查找出系统全部的团队
            List<AdminTeam> adminTeams=doctorAdminTeamDao.findAllTeam();
            Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
            for (AdminTeam adminTeam : adminTeams) {
                adminTeamMap.put(adminTeam.getId()+"", adminTeam);
            }
            //查找出系统全部的机构
            List<Hospital> hospitals = hospitalDao.findHospitalzxFWZ();
            Map<String, Hospital> hospitalsMap = new HashMap<String, Hospital>();
@ -185,6 +191,20 @@ public class SignJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    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数据异常");
@ -254,6 +274,12 @@ public class SignJob implements Job {
            QuartzJobLog.setJobStartTime(new Date());
            QuartzJobLog.setJobId(wlyyJobConfig.getId());
            QuartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //查找出系统全部的团队
            List<AdminTeam> adminTeams=doctorAdminTeamDao.findAllTeam();
            Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
            for (AdminTeam adminTeam : adminTeams) {
                adminTeamMap.put(adminTeam.getId()+"", adminTeam);
            }
            //查找出系统全部的机构
            List<Hospital> hospitals = hospitalDao.findHospital2();
            Map<String, Hospital> hospitalsMap = new HashMap<String, Hospital>();
@ -289,6 +315,7 @@ public class SignJob implements Job {
            Long townCount = 0L; //统计到所有区的数目
            Long orgCount = 0L;//统计到所有机构的数目
            Long qkCount = 0L;//统计到所有全科医生的数目
            Long errorCount=0L;//错误数目
            boolean isAll=true;//是否统计失败
            StringBuffer errorContent=new StringBuffer();
            //统计有签约的
@ -303,21 +330,62 @@ public class SignJob implements Job {
                    errorContent.append("签约code:"+signFamily.getCode()+",患者未分组");
                    group="1";
                }
                if(StringUtils.isEmpty(signFamily.getHospital())){
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表机构hospital为空");
                String orgCode = signFamily.getHospital();
                if(StringUtils.isEmpty(orgCode)) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Hospital hospital = hospitalsMap.get(getOrg(signFamily.getHospital()));//得到患者签约的机构
                String orgCodeTemp="";
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //站
                    orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                }else{
                    //社区
                    orgCodeTemp=orgCode;
                }
                //判断社区有没有值
                Hospital hospital=hospitalsMap.get(orgCodeTemp);
                if(hospital == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表机构hospital不存在");
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的hospital数据不存在");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                String town = hospital.getTown();
                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;
                }
                String town =hospital.getTown();
                if(StringUtils.isEmpty(town)) {
                    errorContent.append("签约code:"+signFamily.getCode()+",机构表中的区为空");
                    errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                Town townObj =townsMap.get(town);
                if(townObj==null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",机构表的中的town不存在");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                //统计市  现在只有厦门市 默认先写死 后面再改
@ -327,10 +395,10 @@ public class SignJob implements Job {
                compute_level2_2(townGroupMap, group,town);
                townCount++;
                //统计站
                String orgCode=hospital.getCode();
                orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                    String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                   orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                    //统计机构
                   compute_level2_2(orgGroupMap, group,orgCodeTemp);
                } else {
@ -386,7 +454,7 @@ public class SignJob implements Job {
                    orgCode=hospital.getCode();
                    if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                        //统计站
                        String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                        orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                        //统计机构
                        compute_level2_2(orgGroupMap, group,orgCodeTemp);
                    } else {
@ -438,6 +506,8 @@ public class SignJob implements Job {
                Map<String, Long> oneOrgGroupMap = orgGroupMap.get(hospitalEntry.getKey());//得到当个机构的统计数据
                Hospital hospital = hospitalEntry.getValue();//得到区级信息
                for(Map.Entry<String, Long> entryCh: oneOrgGroupMap.entrySet()){
                    Hospital hospital1=hospitalEntry.getValue();
                    if(hospital1==null)continue;
                    String city=entryCh.getKey();
                    String cityName=Constant.cityName;
                    String town=hospital.getTown();
@ -451,7 +521,7 @@ public class SignJob implements Job {
            }
            QuartzJobLog.setJobEndTime(new Date());
            QuartzJobLog.setJobContent(saveContent(signFamilys,qkCount,orgCount,townCount,cityCount,isAll,errorContent,null));
            QuartzJobLog.setJobContent(saveContent(signFamilys,qkCount,orgCount,townCount,cityCount,isAll,errorContent,errorCount));
            QuartzJobLog.setJobType(isAll?"1":"0");
            quartzJobLogDao.save(QuartzJobLog);
        } catch (Exception e) {
@ -507,6 +577,12 @@ public class SignJob implements Job {
            quartzJobLog.setJobStartTime(new Date());
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //查找出系统全部的团队
            List<AdminTeam> adminTeams=doctorAdminTeamDao.findAllTeam();
            Map<String, AdminTeam> adminTeamMap = new HashMap<String, AdminTeam>();
            for (AdminTeam adminTeam : adminTeams) {
                adminTeamMap.put(adminTeam.getId()+"", adminTeam);
            }
            //查找出系统全部的机构
            List<Hospital> hospitals = hospitalDao.findHospital2();
            Map<String, Hospital> hospitalsMap = new HashMap<String, Hospital>();
@ -556,6 +632,20 @@ public class SignJob implements Job {
                    errorCount++;
                    continue;
                }
                Long adminId=signFamily.getAdminTeamId();
                if(adminId == null||adminId<=0) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据为空");
                    isAll=false;
                    errorCount++;
                    continue;
                }
                AdminTeam adminTeam=adminTeamMap.get(signFamily.getAdminTeamId()+"");
                if(adminTeam == null) {
                    errorContent.append("签约code:"+signFamily.getCode()+",签约表中(wlyy_sign_family)中的Admin_Team_Id数据不存在");
                    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数据异常");

+ 6 - 0
src/main/java/com/yihu/wlyy/job/elt/storage/DBStorage.java

@ -190,6 +190,7 @@ public class DBStorage   {
                    num=etlModel.size();
                }
                Hospital hospital = oneHospital.getValue();//得到全科医生的机构
                if(hospital==null)continue;
                String city=Constant.city;
                String cityName=Constant.cityName;
                String town=hospital.getTown();
@ -217,8 +218,10 @@ public class DBStorage   {
                    num=etlModel.size();
                }
                AdminTeam adminTeamObj = adminTeamMap.get(adminTeam.getKey());//团队
                if(adminTeamObj==null)continue;
                String orgCodeTemp=getOrg(adminTeamObj.getOrgCode());
                Hospital hospital = hospitalsMap.get(orgCodeTemp);
                if(hospital==null)continue;
                String city=Constant.city;
                String cityName=Constant.cityName;
                String town=hospital.getTown();
@ -244,8 +247,10 @@ public class DBStorage   {
                num=etlModel.size();
            }
            AdminTeam adminTeam = adminTeamMap.get(entry.getKey());//得到全科医生
            if(adminTeam==null)continue;
            String orgCodeTemp=getOrg(adminTeam.getOrgCode());
            Hospital hospital = hospitalsMap.get(orgCodeTemp);//得到全科医生的机构
            if(hospital==null)continue;
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
@ -270,6 +275,7 @@ public class DBStorage   {
            Hospital hospital = entry.getValue();//得到全科医生的机构
            String city=Constant.city;
            String cityName=Constant.cityName;
            if(hospital==null)continue;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=getOrg(hospital.getCode());

+ 17 - 8
src/main/java/com/yihu/wlyy/job/elt/storage/RedisStorage.java

@ -12,6 +12,7 @@ import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.repository.statistics.WlyyQuotaResultDao;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.web.quota.WlyyQuotaVO;
import org.apache.axis.utils.Admin;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
@ -134,6 +135,8 @@ public class RedisStorage {
        for(Map.Entry<String,AdminTeam> adminTeam:adminTeamMap.entrySet()){
            Map<String, List<ETLModel>> oneELTMap= eltModel.get(adminTeam.getKey());
            for(int i=1;i<=foreachNum;i++){
                AdminTeam adminTeamObj=adminTeam.getValue();
                if(adminTeamObj==null)continue;
                JSONObject jo=new JSONObject();
                Integer num=0;
                List<ETLModel> etlList=oneELTMap.get(adminTeam.getKey());
@ -142,8 +145,8 @@ public class RedisStorage {
                }
                jo.put("date", DateUtil.dateToStrLong(new Date()));
                jo.put("num", num);
                jo.put("teamName", adminTeam.getValue().getName());
                jo.put("teamId", adminTeam.getValue().getId());
                jo.put("teamName", adminTeamObj.getName());
                jo.put("teamId", adminTeamObj.getId());
                String key=i+"";
                jo.put("name", getLevel2Name(key,type));
                redisTemplate.opsForValue().set(new StringBuffer("quota:"+wlyyQuotaId+":1:"+key+":"+adminTeam.getKey()).toString(), jo.toString());
@ -155,6 +158,8 @@ public class RedisStorage {
        for(Map.Entry<String,Hospital> hospital:hospitalsMap.entrySet()){
            Map<String, List<ETLModel>> oneELTMap= eltModel.get(hospital.getKey());
            for(int i=1;i<=foreachNum;i++){
                Hospital hospitalObj=hospital.getValue();
                if(hospitalObj==null)continue;
                JSONObject jo=new JSONObject();
                Integer num=0;
                List<ETLModel> etlList=oneELTMap.get(hospital.getKey());
@ -163,8 +168,8 @@ public class RedisStorage {
                }
                jo.put("date", DateUtil.dateToStrLong(new Date()));
                jo.put("num", num);
                jo.put("orgName", hospital.getValue().getName());
                jo.put("orgCode", hospital.getValue().getCode());
                jo.put("orgName", hospitalObj.getName());
                jo.put("orgCode", hospitalObj.getCode());
                String key=i+"";
                jo.put("name", getLevel2Name(key,type));
                redisTemplate.opsForValue().set(new StringBuffer("quota:"+wlyyQuotaId+":2:"+key+":"+hospital.getKey()).toString(), jo.toString());
@ -218,20 +223,24 @@ public class RedisStorage {
        for(Map.Entry<String,AdminTeam> entry:adminTeamMap.entrySet()){
            JSONObject jo=new JSONObject();
            Integer num=0;
            AdminTeam adminTeamObj=entry.getValue();
            if(adminTeamObj==null)continue;
            List<ETLModel> etlList=adminTeam.get(entry.getKey());
            if(etlList!=null&&etlList.size()>0){
                num=etlList.size();
            }
            jo.put("date", DateUtil.dateToStrLong(new Date()));
            jo.put("num", num);
            jo.put("teamName", entry.getValue().getName());
            jo.put("teamId", entry.getValue().getId());
            jo.put("teamName", adminTeamObj.getName());
            jo.put("teamId", adminTeamObj.getId());
            redisTemplate.opsForValue().set(new StringBuffer("quota:"+wlyyQuotaId+":1:"+entry.getKey()).toString(), jo.toString());
        }
    }
    private void saveLevel1Org(String wlyyQuotaId, Map<String, Hospital> hospitalsMap, Map<String, List<ETLModel>> orgTeam) {
        for(Map.Entry<String,Hospital> entry:hospitalsMap.entrySet()){
            Hospital hospital=entry.getValue();
            if(hospital==null)continue;
            JSONObject jo=new JSONObject();
            Integer num=0;
            List<ETLModel> etlList=orgTeam.get(entry.getKey());
@ -240,8 +249,8 @@ public class RedisStorage {
            }
            jo.put("date", DateUtil.dateToStrLong(new Date()));
            jo.put("num", num);
            jo.put("orgName", entry.getValue().getName());
            jo.put("orgCode", entry.getValue().getCode());
            jo.put("orgName", hospital.getName());
            jo.put("orgCode", hospital.getCode());
            redisTemplate.opsForValue().set(new StringBuffer("quota:"+wlyyQuotaId+":2:"+entry.getKey()).toString(), jo.toString());
        }
    }