Browse Source

重构统计模块代码

esb 8 years ago
parent
commit
b527535482

+ 5 - 5
src/main/java/com/yihu/wlyy/entity/doctor/profile/Doctor.java

@ -50,7 +50,7 @@ public class Doctor extends IdEntity {
	private String introduce;       // 医生介绍
	
	private Integer level;          // 类型:1专科医生,2全科医生,3健康管理师
	private Integer isCertified;   // 资格是否认证通过,1是,0否
	private Integer iscertified;   // 资格是否认证通过,1是,0否
	
	private String qrcode;          // 二维码
	
@ -262,12 +262,12 @@ public class Doctor extends IdEntity {
		this.level = level;
	}
	public Integer getIsCertified() {
		return isCertified;
	public Integer getIscertified() {
		return iscertified;
	}
	public void setIsCertified(Integer isCertified) {
		this.isCertified = isCertified;
	public void setIscertified(Integer isCertified) {
		this.iscertified = iscertified;
	}
	public String getQrcode() {

+ 2 - 2
src/main/java/com/yihu/wlyy/entity/job/QuartzJobConfig.java

@ -25,8 +25,8 @@ public class QuartzJobConfig implements java.io.Serializable {
	private String del;//是否删除 1正常 0删除
	/** minimal constructor */
	public QuartzJobConfig(String jobName) {
		this.jobName = jobName;
	public QuartzJobConfig() {
	}
	/** full constructor */

+ 82 - 79
src/main/java/com/yihu/wlyy/job/ChangeSignJob.java

@ -112,103 +112,74 @@ public class ChangeSignJob implements Job {
        for (SignFamily signFamily : signFamilys) {
            String doctorCode = signFamily.getDoctor();//得到已改簽中全科医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
            //统计机构
            if (tjOrgMap.containsKey(orgCode)) {
                tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
            } else {
                tjOrgMap.put(orgCode, 1L);
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
        //保存统计的结果
        //保存全科医生的已改簽统计
        //保存全科医生的改签统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            //判断全科医生是否有已改簽量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjQkdoctorMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存机构的已改簽统计
        //保存机构的改签统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有已改簽量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存区级的已改簽统计
        //保存区级的改签统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有已改簽量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());//得到全科医生
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存市级的统计
        {
@ -221,7 +192,7 @@ public class ChangeSignJob implements Job {
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("4");
            //判断全科医生是否有已改簽量
            //判断全科医生是否有改签量
            if (cityCount > 0) {
                wlyyQuotaResult.setResult(cityCount + "");
            } else {
@ -236,6 +207,38 @@ public class ChangeSignJob implements Job {
        quartzJobLogDao.save(quartzJobLog);
    }
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    private void save(Map<String, Long> countMap, String key, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有改签量
        if (countMap.containsKey(key)) {
            wlyyQuotaResult.setResult(countMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public String getYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);

+ 14 - 0
src/main/java/com/yihu/wlyy/job/Constant.java

@ -15,6 +15,20 @@ public class Constant {
    public static String level_sex_2_name="男";
    public static String level_sex_3_name="未知";
    public static String getLevelSexName(String key){
        switch (key){
            case "1":{
                return level_sex_1_name;
            }
            case "2":{
                return level_sex_2_name;
            }
            case "3":{
                return level_sex_3_name;
            }
        }
        return "";
    }
    //二级维度的年龄
    public static String level_age_1="1";
    public static String level_age_2="2";

+ 82 - 76
src/main/java/com/yihu/wlyy/job/ConsultJob.java

@ -106,11 +106,7 @@ public class ConsultJob implements Job {
        for (ConsultTeam consultTeam : consultTeams) {
            String doctorCode = consultTeam.getDoctor();//得到咨询中健康医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            if(doctor==null){
@ -118,18 +114,18 @@ public class ConsultJob implements Job {
            }
            String orgCode = doctor.getHospital();
            //统计机构
            if (tjOrgMap.containsKey(orgCode)) {
                tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
            } else {
                tjOrgMap.put(orgCode, 1L);
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
@ -137,75 +133,50 @@ public class ConsultJob implements Job {
        //保存全科医生的咨询统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到健康管理师
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            wlyyQuotaResult.setCreateTime(new Date());
            //判断全科医生是否有咨询量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjQkdoctorMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存机构的咨询统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有咨询量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存区级的咨询统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName("厦门市");
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有咨询量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存市级的统计
        {
@ -232,6 +203,41 @@ public class ConsultJob implements Job {
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    private void save(Map<String, Long> tjTownMap, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level, String key) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有咨询量
        if (tjTownMap.containsKey(key)) {
            wlyyQuotaResult.setResult(tjTownMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    public String getYesterday() {
        return yesterday;
    }

+ 80 - 77
src/main/java/com/yihu/wlyy/job/FollowUpJob.java

@ -118,27 +118,22 @@ public class FollowUpJob implements Job {
        for (Map<String,Object> plan : plans) {
            String doctorCode = (String) plan.get("doctor_uid");//得到随访中健康医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
            //统计机构
            if (tjOrgMap.containsKey(orgCode)) {
                tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
            } else {
                tjOrgMap.put(orgCode, 1L);
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
@ -146,75 +141,50 @@ public class FollowUpJob implements Job {
        //保存全科医生的随访统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到健康管理师
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            wlyyQuotaResult.setCreateTime(new Date());
            //判断全科医生是否有随访量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjQkdoctorMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存机构的随访统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有随访量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存区级的随访统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有随访量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存市级的统计
        {
@ -241,6 +211,15 @@ public class FollowUpJob implements Job {
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    public String getYesterday() {
        return yesterday;
    }
@ -249,7 +228,31 @@ public class FollowUpJob implements Job {
        String sql=" select * from fv_plan a where unix_timestamp(a.update_time)>=unix_timestamp('"+yesterday+"') and unix_timestamp(a.update_time)< unix_timestamp('"+now+"')  ";
        return jdbcTemplate.queryForList(sql);
    }
    private void save(Map<String, Long> tjTownMap, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level, String key) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有随访量
        if (tjTownMap.containsKey(key)) {
            wlyyQuotaResult.setResult(tjTownMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public Properties getSystemProperties() {
        if (systemProperties == null) {
            InputStream is = null;

+ 83 - 76
src/main/java/com/yihu/wlyy/job/HealthGuideJob.java

@ -106,11 +106,7 @@ public class HealthGuideJob implements Job {
        for (PatientHealthGuidance patientHealthGuidance : patientHealthGuidances) {
            String doctorCode = patientHealthGuidance.getDoctor();//得到健康指导中健康医生的code
            //统计团队
            if (tjdoctorMap.containsKey(doctorCode)) {
                tjdoctorMap.put(doctorCode, tjdoctorMap.get(doctorCode) + 1);
            } else {
                tjdoctorMap.put(doctorCode, 1L);
            }
            compute(tjdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            if(doctor==null){
@ -118,92 +114,69 @@ public class HealthGuideJob implements Job {
            }
            String orgCode = doctor.getHospital();
            //统计机构
            if (tjOrgMap.containsKey(orgCode)) {
                tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
            } else {
                tjOrgMap.put(orgCode, 1L);
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
        //保存统计的结果
        //保存全科医生和健康管理师的健康指导统计
        //保存全科医生的咨询统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到健康管理师
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            wlyyQuotaResult.setCreateTime(new Date());
            //判断全科医生和健康管理师是否有健康指导量
            if (tjdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjdoctorMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存机构的健康指导统计
        //保存机构的咨询统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存区级的健康指导统计
        //保存区级的咨询统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level, key);
        }
        //保存市级的统计
        {
@ -216,6 +189,7 @@ public class HealthGuideJob implements Job {
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("4");
            //判断全科医生是否有咨询量
            if (cityCount > 0) {
                wlyyQuotaResult.setResult(cityCount + "");
            } else {
@ -230,6 +204,39 @@ public class HealthGuideJob implements Job {
        quartzJobLogDao.save(quartzJobLog);
    }
    private void compute(Map<String, Long> tjdoctorMap, String doctorCode) {
        if (tjdoctorMap.containsKey(doctorCode)) {
            tjdoctorMap.put(doctorCode, tjdoctorMap.get(doctorCode) + 1);
        } else {
            tjdoctorMap.put(doctorCode, 1L);
        }
    }
    private void save(Map<String, Long> tjTownMap, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level, String key) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有随访量
        if (tjTownMap.containsKey(key)) {
            wlyyQuotaResult.setResult(tjTownMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public String getYesterday() {
        return yesterday;
    }

+ 166 - 304
src/main/java/com/yihu/wlyy/job/SignJob.java

@ -38,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.*;
@ -64,12 +63,8 @@ public class SignJob implements Job {
    @Autowired
    private DoctorPatientGroupInfoDao doctorPatientGroupInfoDao;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private PatientDiseaseService patientDiseaseService;
    @Autowired
    private StringRedisTemplate redisTemplate;
    String yesterday;
@ -157,249 +152,68 @@ public class SignJob implements Job {
                String hospitalCode = hospital.getCode();//得到患者签约的机构号
                String sex = IdCardUtil.getSexForIdcard(idcard);//根据身份证得到性别
                //统计市 目前只统计厦门市 所以先写死 后期再改造
                if (citySexMap.containsKey(Constant.city)) {
                    Map<String, Long> sexMap = citySexMap.get(Constant.city);
                    sexMap.put(sex, (sexMap.get(sex) == null ? 0l : sexMap.get(sex)) + 1);
                    citySexMap.put(Constant.city, sexMap);
                } else {
                    Map<String, Long> sexMap = new HashMap<String, Long>();
                    sexMap.put(sex, 1L);
                    citySexMap.put(Constant.city, sexMap);
                }
                compute_level2_1(citySexMap,Constant.city, sex);
                //统计区
                if (townSexMap.containsKey(town)) {
                    Map<String, Long> sexMap = townSexMap.get(town);
                    sexMap.put(sex, (sexMap.get(sex) == null ? 0l : sexMap.get(sex)) + 1);
                    townSexMap.put(town, sexMap);
                } else {
                    Map<String, Long> sexMap = new HashMap<String, Long>();
                    sexMap.put(sex, 1L);
                    townSexMap.put(town, sexMap);
                }
                compute_level2_1(townSexMap,town, sex);
                //统计机构
                //统计站
                if (!"00".equals(hospitalCode.substring(8))) {
                    String orgCodeTemp = hospitalCode.substring(0, 8) + "00";
                    if (orgSexMap.containsKey(orgCodeTemp)) {
                        Map<String, Long> sexMap = orgSexMap.get(orgCodeTemp);
                        sexMap.put(sex, (sexMap.get(sex) == null ? 0l : sexMap.get(sex)) + 1);
                        orgSexMap.put(orgCodeTemp, sexMap);
                    } else {
                        Map<String, Long> sexMap = new HashMap<String, Long>();
                        sexMap.put(sex, 1L);
                        orgSexMap.put(orgCodeTemp, sexMap);
                    }
                    compute_level2_1(orgSexMap,orgCodeTemp, sex);
                } else {
                    //统计社区
                    if (orgSexMap.containsKey(hospitalCode)) {
                        Map<String, Long> sexMap = orgSexMap.get(hospitalCode);
                        sexMap.put(sex, (sexMap.get(sex) == null ? 0l : sexMap.get(sex)) + 1);
                        orgSexMap.put(hospitalCode, sexMap);
                    } else {
                        Map<String, Long> sexMap = new HashMap<String, Long>();
                        sexMap.put(sex, 1L);
                        orgSexMap.put(hospitalCode, sexMap);
                    }
                    compute_level2_1(orgSexMap,hospitalCode, sex);
                }
            }
            //保存统计数据
            //保存市统计数据
            for (Map.Entry<String, Map<String, Long>> entry : citySexMap.entrySet()) {
                //保存女
                WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(entry.getKey());
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("4");//市级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_1);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_1_name);
                if (entry.getValue() != null && entry.getValue().containsKey(Constant.level_sex_1)) {
                    wlyyQuotaResult.setResult(entry.getValue().get(Constant.level_sex_1) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                for(int i=1;i<4;i++){
                    String key=i+"";
                    String city=Constant.city;
                    String cityName=Constant.cityName;
                    String town="";
                    String townName="";
                    String org="";
                    String orgName="";
                    String level="3";
                    save_level2_1(entry.getValue(), key, city, cityName, town, townName, org, orgName, level);
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存男
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(entry.getKey());
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("4");//市级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_2);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_2_name);
                if (entry.getValue() != null && entry.getValue().containsKey(Constant.level_sex_2)) {
                    wlyyQuotaResult.setResult(entry.getValue().get(Constant.level_sex_2) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存位置
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(entry.getKey());
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("4");//市级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_3);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_3_name);
                if (entry.getValue() != null && entry.getValue().containsKey(Constant.level_sex_3)) {
                    wlyyQuotaResult.setResult(entry.getValue().get(Constant.level_sex_3) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
            }
            //保存区的统计数据
            for (Map.Entry<String, Town> townEntry : townsMap.entrySet()) {
                //判断该区是否有统计数据
                Map<String, Long> oneTownSexMap = townSexMap.get(townEntry.getKey());//得到当个区的统计数据
                Town town = townEntry.getValue();//得到区级信息
                //保存女
                WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setTown(town.getCode());
                wlyyQuotaResult.setTownName(town.getName());
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("3");//区级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_1);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_1_name);
                if (oneTownSexMap != null && oneTownSexMap.containsKey(Constant.level_sex_1)) {
                    wlyyQuotaResult.setResult(oneTownSexMap.get(Constant.level_sex_1) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存男
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setTown(town.getCode());
                wlyyQuotaResult.setTownName(town.getName());
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("3");//区级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_2);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_2_name);
                if (oneTownSexMap != null && oneTownSexMap.containsKey(Constant.level_sex_2)) {
                    wlyyQuotaResult.setResult(oneTownSexMap.get(Constant.level_sex_2) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                Town townObj = townEntry.getValue();//得到区级信息
                for(int i=1;i<4;i++){
                    String key=i+"";
                    String city=Constant.city;
                    String cityName=Constant.cityName;
                    String town=townObj.getCode();
                    String townName=townObj.getName();
                    String org="";
                    String orgName="";
                    String level="3";
                    save_level2_1(oneTownSexMap, key, city, cityName, town, townName, org, orgName, level);
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存未知的统计信息
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setTown(town.getCode());
                wlyyQuotaResult.setTownName(town.getName());
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("3");//区级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_3);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_3_name);
                if (oneTownSexMap != null && oneTownSexMap.containsKey(Constant.level_sex_3)) {
                    wlyyQuotaResult.setResult(oneTownSexMap.get(Constant.level_sex_3) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
            }
            //统计机构
            for (Map.Entry<String, Hospital> hospitalEntry : hospitalsMap.entrySet()) {
                //判断该机构是否有统计数据
                Map<String, Long> oneorgSexMap = orgSexMap.get(hospitalEntry.getKey());//得到当个机构的统计数据
                Hospital hospital = hospitalEntry.getValue();//得到区级信息
                //保存女
                WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setTown(hospital.getTown());
                wlyyQuotaResult.setTownName(hospital.getTownName());
                wlyyQuotaResult.setOrgCode(hospital.getCode());
                wlyyQuotaResult.setOrgName(hospital.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("2");//机构级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_1);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_1_name);
                if (oneorgSexMap != null && oneorgSexMap.containsKey(Constant.level_sex_1)) {
                    wlyyQuotaResult.setResult(oneorgSexMap.get(Constant.level_sex_1) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存男
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setTown(hospital.getTown());
                wlyyQuotaResult.setTownName(hospital.getTownName());
                wlyyQuotaResult.setOrgCode(hospital.getCode());
                wlyyQuotaResult.setOrgName(hospital.getName());
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("2");//机构级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_2);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_2_name);
                if (oneorgSexMap != null && oneorgSexMap.containsKey(Constant.level_sex_2)) {
                    wlyyQuotaResult.setResult(oneorgSexMap.get(Constant.level_sex_2) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                //保存未知
                wlyyQuotaResult = new WlyyQuotaResult();
                wlyyQuotaResult.setDel("1");
                wlyyQuotaResult.setCity(Constant.city);
                wlyyQuotaResult.setCityName(Constant.cityName);
                wlyyQuotaResult.setTown(hospital.getTown());
                wlyyQuotaResult.setTownName(hospital.getTownName());
                wlyyQuotaResult.setOrgCode(hospital.getCode());
                wlyyQuotaResult.setOrgName(hospital.getName());
                wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
                wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
                wlyyQuotaResult.setQuotaDate(getYesterday());
                wlyyQuotaResult.setCreateTime(new Date());
                wlyyQuotaResult.setLevel1Type("2");//机构级
                wlyyQuotaResult.setLevel2Type(Constant.level_sex_3);
                wlyyQuotaResult.setLevel2TypeName(Constant.level_sex_3_name);
                if (oneorgSexMap != null && oneorgSexMap.containsKey(Constant.level_sex_3)) {
                    wlyyQuotaResult.setResult(oneorgSexMap.get(Constant.level_sex_3) + "");
                } else {
                    wlyyQuotaResult.setResult("0");
                }
                wlyyQuotaResultDao.save(wlyyQuotaResult);
                for(int i=1;i<4;i++){
                    String key=i+"";
                    String city=Constant.city;
                    String cityName=Constant.cityName;
                    String town=hospital.getTown();
                    String townName=hospital.getTownName();
                    String org=hospital.getCode();
                    String orgName=hospital.getName();
                    String level="2";
                    save_level2_1(oneorgSexMap, key, city, cityName, town, townName, org, orgName, level);
               }
            }
            QuartzJobLog.setJobEndTime(new Date());
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约性别数据完成 ");
@ -410,6 +224,54 @@ public class SignJob implements Job {
        }
    }
    /**
     * 机构维度下患者性别维度计算指标 公用保存方法
     * @param oneorgSexMap
     * @param key
     * @param city
     * @param cityName
     * @param town
     * @param townName
     * @param org
     * @param orgName
     * @param level
     */
    private void save_level2_1(Map<String, Long> oneorgSexMap, String key, String city, String cityName, String town, String townName, String org, String orgName, String level) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setLevel1Type(level);//机构级
        wlyyQuotaResult.setLevel2Type(key);
        wlyyQuotaResult.setLevel2TypeName(Constant.getLevelSexName(key));
        if (oneorgSexMap != null && oneorgSexMap.containsKey(key)) {
            wlyyQuotaResult.setResult(oneorgSexMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    private void compute_level2_1(Map<String, Map<String, Long>> citySexMap,String key, String sex) {
        if (citySexMap.containsKey(key)) {
            Map<String, Long> sexMap = citySexMap.get(key);
            sexMap.put(sex, (sexMap.get(sex) == null ? 0l : sexMap.get(sex)) + 1);
            citySexMap.put(key, sexMap);
        } else {
            Map<String, Long> sexMap = new HashMap<String, Long>();
            sexMap.put(sex, 1L);
            citySexMap.put(key, sexMap);
        }
    }
    /**
     * 机构维度患者分组维度计算指标
     */
@ -1510,11 +1372,7 @@ public class SignJob implements Job {
        for (SignFamily signFamily : signFamilys) {
            String doctorCode = signFamily.getDoctor();//得到签约中全科医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute_level1(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            if (doctor == null) {
@ -1525,28 +1383,16 @@ public class SignJob implements Job {
            //统计站
            if (!"00".equals(orgCode.substring(8))) {
                String orgCodeTemp = orgCode.substring(0, 8) + "00";
                if (tjOrgMap.containsKey(orgCodeTemp)) {
                    tjOrgMap.put(orgCodeTemp, tjOrgMap.get(orgCodeTemp) + 1);
                } else {
                    tjOrgMap.put(orgCodeTemp, 1L);
                }
                compute_level1(tjOrgMap, orgCodeTemp);
            } else {
                //统计社区
                if (tjOrgMap.containsKey(orgCode)) {
                    tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
                } else {
                    tjOrgMap.put(orgCode, 1L);
                }
                compute_level1(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute_level1(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
@ -1554,75 +1400,50 @@ public class SignJob implements Job {
        //保存全科医生的签约统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            //判断全科医生是否有签约量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save_level1(tjQkdoctorMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存机构的签约统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有签约量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save_level1(tjOrgMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存区级的签约统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有签约量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());//得到全科医生
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save_level1(tjTownMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存市级的统计
        {
@ -1649,6 +1470,47 @@ public class SignJob implements Job {
        QuartzJobLog.setJobType("1");
        quartzJobLogDao.save(QuartzJobLog);
    }
    /**
     * 统计签约的公用保存方案
     *
     */
    private void save_level1(Map<String, Long> countMap, String key, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有解约量
        if (countMap.containsKey(key)) {
            wlyyQuotaResult.setResult(countMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    /**
     * 统计签约的公用统计方案
     * @param tjQkdoctorMap
     * @param doctorCode
     */
    private void compute_level1(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    /*
    得到昨天的日期字符串  yyyy-MM-dd

+ 75 - 82
src/main/java/com/yihu/wlyy/job/UnSignJob.java

@ -109,11 +109,7 @@ public class UnSignJob implements Job {
        for (SignFamily signFamily : signFamilys) {
            String doctorCode = signFamily.getDoctor();//得到解约中全科医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
@ -121,28 +117,16 @@ public class UnSignJob implements Job {
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                if (tjOrgMap.containsKey(orgCodeTemp)) {
                    tjOrgMap.put(orgCodeTemp, tjOrgMap.get(orgCodeTemp) + 1);
                } else {
                    tjOrgMap.put(orgCodeTemp, 1L);
                }
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                if (tjOrgMap.containsKey(orgCode)) {
                    tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
                } else {
                    tjOrgMap.put(orgCode, 1L);
                }
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
@ -150,75 +134,50 @@ public class UnSignJob implements Job {
        //保存全科医生的解约统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            //判断全科医生是否有解约量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjQkdoctorMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存机构的解约统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有解约量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存区级的解约统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有解约量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());//得到全科医生
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存市级的统计
        {
@ -246,6 +205,40 @@ public class UnSignJob implements Job {
        quartzJobLogDao.save(quartzJobLog);
    }
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    private void save(Map<String, Long> countMap, String key, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有解约量
        if (countMap.containsKey(key)) {
            wlyyQuotaResult.setResult(countMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public String getYesterday() {
        return yesterday;
    }

+ 73 - 82
src/main/java/com/yihu/wlyy/job/WaitSignJob.java

@ -107,11 +107,7 @@ public class WaitSignJob implements Job {
        for (SignFamily signFamily : signFamilys) {
            String doctorCode = signFamily.getDoctor();//得到待签约中全科医生的code
            //统计团队
            if (tjQkdoctorMap.containsKey(doctorCode)) {
                tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
            } else {
                tjQkdoctorMap.put(doctorCode, 1L);
            }
            compute(tjQkdoctorMap, doctorCode);
            //判断医生属于哪个机构
            Doctor doctor = doctorsMap.get(doctorCode);
            if(doctor==null){
@ -122,26 +118,14 @@ public class WaitSignJob implements Job {
            if(!"00".equals(orgCode.substring(8))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                if (tjOrgMap.containsKey(orgCodeTemp)) {
                    tjOrgMap.put(orgCodeTemp, tjOrgMap.get(orgCodeTemp) + 1);
                } else {
                    tjOrgMap.put(orgCodeTemp, 1L);
                }
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                if (tjOrgMap.containsKey(orgCode)) {
                    tjOrgMap.put(orgCode, tjOrgMap.get(orgCode) + 1);
                } else {
                    tjOrgMap.put(orgCode, 1L);
                }
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            if (tjTownMap.containsKey(townCode)) {
                tjTownMap.put(townCode, tjTownMap.get(townCode) + 1);
            } else {
                tjTownMap.put(townCode, 1L);
            }
            compute(tjTownMap, townCode);
            //统计市
            cityCount++;
        }
@ -149,75 +133,50 @@ public class WaitSignJob implements Job {
        //保存全科医生的待签约统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(doctor.getHospital());
            wlyyQuotaResult.setOrgName(doctor.getHosptialName());
            wlyyQuotaResult.setCity(doctor.getCity());
            wlyyQuotaResult.setCityName(doctor.getCityName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setQkdoctorJobName(doctor.getJobName());
            wlyyQuotaResult.setQkdoctorName(doctor.getName());
            wlyyQuotaResult.setQkdoctorCode(doctor.getCode());
            wlyyQuotaResult.setTown(doctor.getTown());
            wlyyQuotaResult.setTownName(doctor.getTownName());
            wlyyQuotaResult.setLevel1Type("1");
            //判断全科医生是否有待签约量
            if (tjQkdoctorMap.containsKey(doctor.getCode())) {
                wlyyQuotaResult.setResult(tjQkdoctorMap.get(doctor.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=doctor.getTown();
            String townName=doctor.getTownName();
            String org=doctor.getHospital();
            String orgName=doctor.getHosptialName();
            String doctorCode=doctor.getCode();
            String doctorName=doctor.getName();
            String doctorJob=doctor.getJob();
            String level="1";
            String key=doctor.getCode();
            save(tjQkdoctorMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存机构的待签约统计
        for (Map.Entry<String, Hospital> entry : hospitalsMap.entrySet()) {
            Hospital hospital = hospitalsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setOrgCode(hospital.getCode());
            wlyyQuotaResult.setOrgName(hospital.getName());
            wlyyQuotaResult.setCity(hospital.getCity());
            wlyyQuotaResult.setCityName(hospital.getCityName());
            wlyyQuotaResult.setTown(hospital.getTown());
            wlyyQuotaResult.setTownName(hospital.getTownName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("2");
            //判断全科医生是否有待签约量
            if (tjOrgMap.containsKey(hospital.getCode())) {
                wlyyQuotaResult.setResult(tjOrgMap.get(hospital.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=hospital.getTown();
            String townName=hospital.getTownName();
            String org=hospital.getCode();
            String orgName=hospital.getName();
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="2";
            String key=hospital.getCode();
            save(tjOrgMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存区级的待签约统计
        for (Map.Entry<String, Town> entry : townsMap.entrySet()) {
            Town town = townsMap.get(entry.getKey());//得到全科医生
            WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
            wlyyQuotaResult.setDel("1");
            wlyyQuotaResult.setCity(town.getCity());
            wlyyQuotaResult.setCityName(Constant.cityName);
            wlyyQuotaResult.setTown(town.getCode());
            wlyyQuotaResult.setTownName(town.getName());
            wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
            wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
            wlyyQuotaResult.setQuotaDate(getYesterday());
            wlyyQuotaResult.setCreateTime(new Date());
            wlyyQuotaResult.setLevel1Type("3");
            //判断全科医生是否有待签约量
            if (tjTownMap.containsKey(town.getCode())) {
                wlyyQuotaResult.setResult(tjTownMap.get(town.getCode()) + "");
            } else {
                wlyyQuotaResult.setResult("0");
            }
            wlyyQuotaResultDao.save(wlyyQuotaResult);
            Town townObj = townsMap.get(entry.getKey());//得到全科医生
            String city=Constant.city;
            String cityName=Constant.cityName;
            String town=townObj.getCode();
            String townName=townObj.getName();
            String org="";
            String orgName="";
            String doctorCode="";
            String doctorName="";
            String doctorJob="";
            String level="3";
            String key=townObj.getCode();
            save(tjTownMap, key, city, cityName, town, townName, org, orgName, doctorCode, doctorName, doctorJob, level);
        }
        //保存市级的统计
        {
@ -245,6 +204,38 @@ public class WaitSignJob implements Job {
        quartzJobLogDao.save(quartzJobLog);
    }
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
        } else {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    private void save(Map<String, Long> countMap, String key, String city, String cityName, String town, String townName, String org, String orgName, String doctorCode, String doctorName, String doctorJob, String level) {
        WlyyQuotaResult wlyyQuotaResult = new WlyyQuotaResult();
        wlyyQuotaResult.setDel("1");
        wlyyQuotaResult.setOrgCode(org);
        wlyyQuotaResult.setOrgName(orgName);
        wlyyQuotaResult.setCity(city);
        wlyyQuotaResult.setCityName(cityName);
        wlyyQuotaResult.setQuatoCode(wlyyQuota.getId());
        wlyyQuotaResult.setQuatoName(wlyyQuota.getName());
        wlyyQuotaResult.setQuotaDate(getYesterday());
        wlyyQuotaResult.setCreateTime(new Date());
        wlyyQuotaResult.setQkdoctorJobName(doctorJob);
        wlyyQuotaResult.setQkdoctorName(doctorName);
        wlyyQuotaResult.setQkdoctorCode(doctorCode);
        wlyyQuotaResult.setTown(town);
        wlyyQuotaResult.setTownName(townName);
        wlyyQuotaResult.setLevel1Type(level);
        //判断全科医生是否有待签约量
        if (countMap.containsKey(key)) {
            wlyyQuotaResult.setResult(countMap.get(key) + "");
        } else {
            wlyyQuotaResult.setResult("0");
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public String getYesterday() {
        return yesterday;
    }

+ 1 - 1
src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java

@ -105,7 +105,7 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    List<Doctor> findAllJKDoctot();
    @Query("select d from Doctor d where d.del = 1 and d.iscertified=1")
    @Query("select d from Doctor d where d.del = 1 ")
    List<Doctor> findAllCertifiedDoctors();
    @Query("select p from Doctor p where p.level in (2,3) and p.del=1 and p.iscertified=1")