Ver código fonte

将HTTP的PUT,DELETE方法修改为GET与POST方法

Sand 8 anos atrás
pai
commit
f064db6cdd

+ 25 - 6
src/main/java/com/yihu/wlyy/job/ChangeSignJob.java

@ -63,9 +63,6 @@ public class ChangeSignJob implements Job {
        now= StringUtils.isEmpty(map.get("now"))?SignJob.getDayString(0):map.get("now").toString();
        yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
        //線刪除今天的数据
        //计算指标
        computequota();
    }
@ -117,9 +114,9 @@ public class ChangeSignJob implements Job {
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
@ -202,11 +199,16 @@ public class ChangeSignJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的已改簽数据完成 ");
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的已改簽数据完成 ,得到改签数目:"+signFamilys.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    /**
     * 统计规则
     * @param tjQkdoctorMap
     * @param doctorCode
     */
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);
@ -214,6 +216,22 @@ public class ChangeSignJob implements Job {
            tjQkdoctorMap.put(doctorCode, 1L);
        }
    }
    /**
     * 保存方案
     * @param countMap
     * @param key
     * @param city
     * @param cityName
     * @param town
     * @param townName
     * @param org
     * @param orgName
     * @param doctorCode
     * @param doctorName
     * @param doctorJob
     * @param level
     */
    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");
@ -239,6 +257,7 @@ public class ChangeSignJob implements Job {
        }
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    public String getYesterday() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);

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

@ -62,9 +62,11 @@ public class Constant {
    public static String level_disease_1="1";
    public static String level_disease_2="2";
    public static String level_disease_3="3";
    public static String level_disease_4="4";
    public static String level_disease_1_name="高血压";
    public static String level_disease_2_name="糖尿病";
    public static String level_disease_3_name="糖尿病和高血压";
    public static String level_disease_4_name="健康人群";
    public static String getLevelAgeName(String key){
        switch (key){
@ -101,6 +103,9 @@ public class Constant {
            case "3":{
                return level_disease_3_name;
            }
            case "4":{
                return level_disease_4_name;
            }
        }
        return "";
    }

+ 23 - 3
src/main/java/com/yihu/wlyy/job/ConsultJob.java

@ -114,9 +114,9 @@ public class ConsultJob implements Job {
            }
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
@ -199,11 +199,26 @@ public class ConsultJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的咨询数据完成 ");
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的咨询数据完成  ,得到咨詢数目:"+consultTeams.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    /**
     * 保存方案
     * @param tjTownMap
     * @param city
     * @param cityName
     * @param town
     * @param townName
     * @param org
     * @param orgName
     * @param doctorCode
     * @param doctorName
     * @param doctorJob
     * @param level
     * @param key
     */
    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");
@ -230,6 +245,11 @@ public class ConsultJob implements Job {
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    /**
     * 统计方案
     * @param tjQkdoctorMap
     * @param doctorCode
     */
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);

+ 4 - 19
src/main/java/com/yihu/wlyy/job/CurrentDayAllQuotaJob.java

@ -208,8 +208,10 @@ public class CurrentDayAllQuotaJob implements Job {
            compute(townAgeMap, town, ageCode, diseaseType);
            //统计机构
            //统计站
            if (!"00".equals(hospital.getCode().substring(8))) {
                String orgCodeTemp = hospital.getCode().substring(0, 8) + "00";
            String orgCode=hospital.getCode();
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                //统计机构
                compute(orgAgeMap, orgCodeTemp, ageCode, diseaseType);
            } else {
@ -1585,21 +1587,4 @@ public class CurrentDayAllQuotaJob implements Job {
        }
    }
    public static void main(String[] args) {
        MyHashMap<String, String> tjCityMap = new MyHashMap<String, String>();//区级的统计map key 是区行政区划350200
        tjCityMap.put("1","1");
        tjCityMap.put("2","2");
        tjCityMap.put("4","4");
        Map<String, String> tjCityMap_1 =tjCityMap.clone();
        Map<String, String> tjCityMap_2 = tjCityMap.clone();
        tjCityMap.put("3","3");
        tjCityMap.remove("1");
        tjCityMap_1.put("33","33");
        tjCityMap_1.remove("2");
        tjCityMap_2.put("333","333");
        tjCityMap_2.remove("4");
        System.out.println(tjCityMap);
        System.out.println(tjCityMap_1);
        System.out.println(tjCityMap_2);
    }
}

+ 8 - 3
src/main/java/com/yihu/wlyy/job/FollowUpJob.java

@ -123,9 +123,9 @@ public class FollowUpJob implements Job {
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
@ -207,11 +207,16 @@ public class FollowUpJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的随访数据完成 ");
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的随访数据完成  ,得到隨訪数目:"+plans.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    /**
     * 统计方案
     * @param tjQkdoctorMap
     * @param doctorCode
     */
    private void compute(Map<String, Long> tjQkdoctorMap, String doctorCode) {
        if (tjQkdoctorMap.containsKey(doctorCode)) {
            tjQkdoctorMap.put(doctorCode, tjQkdoctorMap.get(doctorCode) + 1);

+ 8 - 4
src/main/java/com/yihu/wlyy/job/HealthGuideJob.java

@ -114,9 +114,9 @@ public class HealthGuideJob implements Job {
            }
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
@ -130,7 +130,6 @@ public class HealthGuideJob implements Job {
        }
        //保存统计的结果
        //保存全科医生和健康管理师的健康指导统计
        //保存全科医生的咨询统计
        for (Map.Entry<String, Doctor> entry : doctorsMap.entrySet()) {
            Doctor doctor = doctorsMap.get(entry.getKey());//得到健康管理师
            String city=Constant.city;
@ -199,11 +198,16 @@ public class HealthGuideJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计" + getYesterday() + " 的健康指导数据完成 ");
        quartzJobLog.setJobContent("统计" + getYesterday() + " 的健康指导数据完成  ,得到健康指导数目:"+patientHealthGuidances.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }
    /**
     * 统计方案
     * @param tjdoctorMap
     * @param doctorCode
     */
    private void compute(Map<String, Long> tjdoctorMap, String doctorCode) {
        if (tjdoctorMap.containsKey(doctorCode)) {
            tjdoctorMap.put(doctorCode, tjdoctorMap.get(doctorCode) + 1);

+ 0 - 27
src/main/java/com/yihu/wlyy/job/MyHashMap.java

@ -1,27 +0,0 @@
package com.yihu.wlyy.job;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
 * Created by Administrator on 2016.08.23.
 */
public class MyHashMap<S, J> extends HashMap {
    public MyHashMap() {
        super();
    }
    public MyHashMap(int initialCapacity) {
        super(initialCapacity);
    }
    public Map clone() {
        Map target = new HashMap();
        for (Iterator keyIt = this.keySet().iterator(); keyIt.hasNext(); ) {
            Object key = keyIt.next();
            target.put(key, this.get(key));
        }
        return target;
    }
}

+ 8 - 0
src/main/java/com/yihu/wlyy/job/QuartzHelper.java

@ -65,6 +65,14 @@ public class QuartzHelper {
        scheduler.deleteJob(jobName);// 删除任务
    }
    public boolean isExistJob(String jobKey) throws SchedulerException {
        JobKey jk = new JobKey("job-id:" + jobKey,"job-group:" + jobKey);
        if(scheduler.checkExists(jk)){
            return true;
        }else{
            return false;
        }
    }
    public void startNow(Class jobClass,  String id, Map<String, Object> params) throws Exception {
        JobDetail job = JobBuilder.newJob(jobClass).

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

@ -6,11 +6,8 @@ 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.DoctorDao;
import com.yihu.wlyy.repository.doctor.DoctorPatientGroupInfoDao;
import com.yihu.wlyy.repository.job.QuartzJobLogDao;
import com.yihu.wlyy.repository.organization.HospitalDao;
import com.yihu.wlyy.repository.patient.PatientDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.statistics.WlyyQuotaResultDao;
import com.yihu.wlyy.util.IdCardUtil;
@ -47,16 +44,10 @@ public class SignAgeGroupDiseaseJob implements Job {
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    @Autowired
    private HospitalDao hospitalDao;
    @Autowired
    private TownDao townDao;
    @Autowired
    private DoctorPatientGroupInfoDao doctorPatientGroupInfoDao;
    @Autowired
    private PatientDao patientDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private StringRedisTemplate redisTemplate;
@ -163,8 +154,10 @@ public class SignAgeGroupDiseaseJob implements Job {
                compute(townAgeMap, town, ageCode, diseaseType);
                //统计机构
                //统计站
                if (!"00".equals(hospital.getCode().substring(8))) {
                    String orgCodeTemp = hospital.getCode().substring(0, 8) + "00";
                String orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                    String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                    //统计机构
                    compute(orgAgeMap, orgCodeTemp, ageCode, diseaseType);
                } else {
@ -177,7 +170,7 @@ public class SignAgeGroupDiseaseJob implements Job {
            for (Map.Entry<String, Map<String, Map>> entry : cityAgeMap.entrySet()) {
               Map<String, Map> oneAgeMap = entry.getValue();
               for(int i=1;i<7;i++){
                   for(int j=1;j<4;j++){
                   for(int j=1;j<5;j++){
                       String key_2=i+"";
                       String key_3=j+"";
                       String city=Constant.city;
@ -196,7 +189,7 @@ public class SignAgeGroupDiseaseJob implements Job {
                Map<String, Map> oneAgeMap = townAgeMap.get(entry.getKey());//得到当个区的统计数据
                Town townObj = entry.getValue();//得到区级信息
                for(int i=1;i<7;i++){
                    for(int j=1;j<4;j++){
                    for(int j=1;j<5;j++){
                        String key_2=i+"";
                        String key_3=j+"";
                        String city=Constant.city;
@ -215,7 +208,7 @@ public class SignAgeGroupDiseaseJob implements Job {
                Map<String, Map> oneAgeMap = orgAgeMap.get(entry.getKey());//得到当个机构的统计数据
                Hospital hospital = entry.getValue();//得到机构信息
                for(int i=1;i<7;i++){
                    for(int j=1;j<4;j++){
                    for(int j=1;j<5;j++){
                        String key_2=i+"";
                        String key_3=j+"";
                        String city=Constant.city;
@ -229,7 +222,7 @@ public class SignAgeGroupDiseaseJob implements Job {
                }
            }
            wlyyJobLog.setJobEndTime(new Date());
            wlyyJobLog.setJobContent("统计" + getYesterday() + " 的签约患者年龄数据完成 ");
            wlyyJobLog.setJobContent("统计" + getYesterday() + " 的签约患者年龄数据完成,得到签约数目:"+signFamilies.size());
            wlyyJobLog.setJobType("1");
            quartzJobLogDao.save(wlyyJobLog);
        } catch (Exception e) {
@ -268,6 +261,13 @@ public class SignAgeGroupDiseaseJob implements Job {
        wlyyQuotaResultDao.save(wlyyQuotaResult);
    }
    /**
     * 统计方案
     * @param rootMap 数据存放的map
     * @param rootKey 数据的key 机构 区  市
     * @param ageCode 年龄的key
     * @param diseaseType 疾病类型 1是高血压 2是糖尿病 3是高血压和糖尿病 4是健康人群
     */
    private void compute(Map<String, Map<String, Map>> rootMap, String rootKey, String ageCode, String diseaseType) {
        if (rootMap.containsKey(rootKey)) {
            //得到市下面的所有的年龄map
@ -276,25 +276,25 @@ public class SignAgeGroupDiseaseJob implements Job {
                //得到这个年龄下的患者map
                Map<String,Long> mape= groupMapTemp.get(ageCode);
                if(mape.containsKey(diseaseType)){
                    mape.put(diseaseType,mape.get(diseaseType)+1L);
                    mape.put(diseaseType,mape.get(diseaseType)+1L); //key是三级维度
                }else{
                    mape.put(diseaseType,1L);
                    mape.put(diseaseType,1L); //key是三级维度
                }
            }else{
                //新增疾病的统计map
                Map<String, Long> groupMapTemp1 = new HashMap<String, Long>();
                groupMapTemp1.put(diseaseType, 1L);
                groupMapTemp.put(ageCode,groupMapTemp1);
                groupMapTemp1.put(diseaseType, 1L);//key是三级维度
                groupMapTemp.put(ageCode,groupMapTemp1);//key是二级维度
            }
        } else {
            //没有就新建统计数据  新增疾病的统计map
            Map<String, Long> groupMapTemp = new HashMap<String, Long>();
            groupMapTemp.put(diseaseType, 1L);
            groupMapTemp.put(diseaseType, 1L); //key是三级维度
            //把统计疾病的map放入对应的年龄组map中
            Map<String, Map> groupMapTemp2 = new HashMap<String, Map>();
            groupMapTemp2.put(ageCode,groupMapTemp);
            groupMapTemp2.put(ageCode,groupMapTemp); //key是二级维度
            //把年龄组map放入市的map里面
            rootMap.put(rootKey, groupMapTemp2);
            rootMap.put(rootKey, groupMapTemp2); //key是一级维度
        }
    }

+ 19 - 12
src/main/java/com/yihu/wlyy/job/SignJob.java

@ -150,8 +150,10 @@ public class SignJob implements Job {
                compute_level2_1(townSexMap,town, sex);
                //统计机构
                //统计站
                if (!"00".equals(hospitalCode.substring(8))) {
                    String orgCodeTemp = hospitalCode.substring(0, 8) + "00";
                String orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                    String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                    compute_level2_1(orgSexMap,orgCodeTemp, sex);
                } else {
                    //统计社区
@ -209,7 +211,7 @@ public class SignJob implements Job {
               }
            }
            QuartzJobLog.setJobEndTime(new Date());
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约性别数据完成 ");
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约性别数据完成 ,得到签约数目:"+signFamilys.size());
            QuartzJobLog.setJobType("1");
            quartzJobLogDao.save(QuartzJobLog);
        } catch (Exception e) {
@ -353,8 +355,10 @@ public class SignJob implements Job {
                    townGroupMap.put(town, groupMapTemp);
                }
                //统计站
                if (!"00".equals(hospital.getCode().substring(8))) {
                    String orgCodeTemp = hospital.getCode().substring(0, 8) + "00";
                String orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                    String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                    //统计机构
                    if (orgGroupMap.containsKey(orgCodeTemp)) {
                        Map<String, Long> groupMapTemp = orgGroupMap.get(orgCodeTemp);
@ -845,7 +849,7 @@ public class SignJob implements Job {
            }
            QuartzJobLog.setJobEndTime(new Date());
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约病人分组数据完成 ");
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约病人分组数据完成 ,得到签约数目:"+signFamilys.size());
            QuartzJobLog.setJobType("1");
            quartzJobLogDao.save(QuartzJobLog);
        } catch (Exception e) {
@ -913,8 +917,10 @@ public class SignJob implements Job {
                }
                //统计机构
                //统计站
                if (!"00".equals(hospital.getCode().substring(8))) {
                    String orgCodeTemp = hospital.getCode().substring(0, 8) + "00";
                String orgCode=hospital.getCode();
                if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                    //统计站
                    String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                    //统计机构
                    if (orgAgeMap.containsKey(orgCodeTemp)) {
                        Map<String, Long> groupMapTemp = orgAgeMap.get(hospital.getCode());
@ -1318,7 +1324,7 @@ public class SignJob implements Job {
            }
            QuartzJobLog.setJobEndTime(new Date());
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约患者年龄数据完成 ");
            QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约患者年龄数据完成 ,得到签约数目:"+signFamilys.size());
            QuartzJobLog.setJobType("1");
            quartzJobLogDao.save(QuartzJobLog);
        } catch (Exception e) {
@ -1377,8 +1383,9 @@ public class SignJob implements Job {
            String orgCode = doctor.getHospital();
            //统计机构
            //统计站
            if (!"00".equals(orgCode.substring(8))) {
                String orgCodeTemp = orgCode.substring(0, 8) + "00";
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute_level1(tjOrgMap, orgCodeTemp);
            } else {
                //统计社区
@ -1462,7 +1469,7 @@ public class SignJob implements Job {
        }
        QuartzJobLog.setJobEndTime(new Date());
        QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约数据完成 ");
        QuartzJobLog.setJobContent("统计" + getYesterday() + " 的签约数据完成 ,得到签约数目:"+signFamilys.size());
        QuartzJobLog.setJobType("1");
        quartzJobLogDao.save(QuartzJobLog);
    }

+ 3 - 6
src/main/java/com/yihu/wlyy/job/UnSignJob.java

@ -61,7 +61,6 @@ public class UnSignJob implements Job {
        wlyyJobConfig = (WlyyJobConfigVO) map.get("jobConfig");
        now= StringUtils.isEmpty(map.get("now"))?SignJob.getDayString(0):map.get("now").toString();
        yesterday= StringUtils.isEmpty(map.get("yesterday"))?SignJob.getDayString(-1):map.get("yesterday").toString();
        //计算指标
        computequota();
    }
@ -114,16 +113,14 @@ public class UnSignJob implements Job {
            Doctor doctor = doctorsMap.get(doctorCode);
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
                compute(tjOrgMap, orgCode);
            }
            String townCode = doctor.getTown();
            //统计区
            compute(tjTownMap, townCode);
@ -200,7 +197,7 @@ public class UnSignJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的解约数据完成 ");
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的解约数据完成 ,得到解约数目:"+signFamilys.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }

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

@ -115,9 +115,9 @@ public class WaitSignJob implements Job {
            }
            String orgCode = doctor.getHospital();
            //统计机构
            if(!"00".equals(orgCode.substring(8))){
            if(!"00".equals(orgCode.substring(orgCode.length()-2,orgCode.length()))){
                //统计站
                String orgCodeTemp=orgCode.substring(0,8)+"00";
                String orgCodeTemp=orgCode.substring(0,orgCode.length()-2)+"00";
                compute(tjOrgMap, orgCodeTemp);
            }else{
                //统计社区
@ -199,7 +199,7 @@ public class WaitSignJob implements Job {
        }
        quartzJobLog.setJobEndTime(new Date());
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的待签约数据完成 ");
        quartzJobLog.setJobContent("统计"+getYesterday()+" 的待签约数据完成 ,得到待签约数目:"+signFamilys.size());
        quartzJobLog.setJobType("1");
        quartzJobLogDao.save(quartzJobLog);
    }

+ 41 - 0
src/main/java/com/yihu/wlyy/job/consult/FamousConsultTimesJob.java

@ -0,0 +1,41 @@
package com.yihu.wlyy.job.consult;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.schedule.DoctorFamousConsultTimesRemain;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.repository.doctor.FamousDoctorTimesRemainDao;
import com.yihu.wlyy.service.app.account.DoctorInfoService;
import com.yihu.wlyy.service.app.scheduling.DoctorWorkTimeService;
import org.json.JSONObject;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
 * Created by lyr on 2016/9/21.
 */
@Component
public class FamousConsultTimesJob implements Job {
    @Autowired
    DoctorWorkTimeService workTimeService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        try {
            SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            workTimeService.consultTimesRemain(df.format(new Date()));
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

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

@ -118,4 +118,11 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    @Query("update Doctor set idcard = ?2 where code = ?1")
    int updateIdcard(String doctor, String idcard);
    List<Doctor> findByIsFamous(Integer isFamous);
    @Query("select p from Doctor p ,DoctorFamousConsultTimesRemain w where p.code=w.doctor and w.consultDate = ?1 and p.name like name order by w.timesRemain desc")
    Page<Doctor> famousDoctorList(String date, String name, Pageable pageRequest);
    @Query("select p from Doctor p ,DoctorFamousConsultTimesRemain w where p.code=w.doctor and w.consultDate = ?1 order by w.timesRemain desc")
    Page<Doctor> famousDoctorList(String date, Pageable pageRequest);
}

+ 99 - 10
src/main/java/com/yihu/wlyy/service/app/scheduling/DoctorWorkTimeService.java

@ -15,6 +15,7 @@ import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.print.Doc;
import javax.transaction.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
@ -46,11 +47,16 @@ public class DoctorWorkTimeService extends BaseService {
     */
    public JSONObject findDoctorWorkTime(String doctor) throws Exception {
        JSONObject result = new JSONObject();
        Doctor doc = doctorDao.findByCode(doctor);
        if(doc == null){
            throw new Exception("doctor not exist");
        }
        WlyyDoctorWorkTime workTime = doctorWorkTimeDao.findDoctorWorkTime(doctor);
        List<WlyyDoctorWorkWeek> workWeekList = doctorWorkWeekDao.findDoctorWorkWeeks(doctor);
        result.put("workTime", workTime != null ? new JSONObject(workTime) : "");
        result.put("workWeeks", workWeekList != null ? new JSONArray(workWeekList) : "");
        result.put("doctor", doc != null ? new JSONObject(doc) : "");
        return result;
    }
@ -92,16 +98,6 @@ public class DoctorWorkTimeService extends BaseService {
        map.put("workTime", workTime);
        map.put("workWeek", workWeek);
        if (doc.getIsFamous() == 1) {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            DoctorFamousConsultTimesRemain timesRemain = timesRemainDao.findByDoctorAndConsultDate(doctor, df.format(new Date()));
            if (timesRemain == null) {
                map.put("famousDoctorTimesRemain",workTime.getFamousConsultTimes());
            } else {
                map.put("famousDoctorTimesRemain",timesRemain.getTimesRemain());
            }
        }
        return map;
    }
@ -317,6 +313,70 @@ public class DoctorWorkTimeService extends BaseService {
        return json;
    }
    /**
     * 查询名医当天是否接受咨询
     *
     * @param doctor
     * @return
     * @throws Exception
     */
    public JSONObject isDoctorWorkingToday(String doctor) throws Exception {
        JSONObject json = new JSONObject();
        Calendar calendar = Calendar.getInstance();
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (week == 0) {
            week = 7;
        }
        // 医生工作时间设置
        Map<String, Object> result = findDoctorWeekWork(doctor, String.valueOf(week));
        if (result.get("workTime") == null) {
            // 医生未设置时,默认7*24小时工作
            json.put("status", "1");
            json.put("times", 0);
        } else {
            WlyyDoctorWorkTime doctorWorkTime = (WlyyDoctorWorkTime) result.get("workTime");
            if (doctorWorkTime.getReceiveConsult().equals("0")) {
                json.put("status", "0");
                json.put("times", 0);
            } else {
                if (result.get("workWeek") != null) {
                    WlyyDoctorWorkWeek workWeek = (WlyyDoctorWorkWeek)result.get("workWeek");
                    boolean flag = false;
                    if(StringUtils.isNotEmpty(workWeek.getMorning()) && workWeek.getMorning().equals("1")){
                        json.put("status", "1");
                        json.put("times", doctorWorkTime.getFamousConsultTimes());
                        flag = true;
                    }
                    if(StringUtils.isNotEmpty(workWeek.getAfternoon()) && workWeek.getAfternoon().equals("1")){
                        json.put("status", "1");
                        json.put("times", doctorWorkTime.getFamousConsultTimes());
                        flag = true;
                    }
                    if(StringUtils.isNotEmpty(workWeek.getNight()) && workWeek.getNight().equals("1")){
                        json.put("status", "1");
                        json.put("times", doctorWorkTime.getFamousConsultTimes());
                        flag = true;
                    }
                    if(!flag){
                        json.put("status", "0");
                        json.put("times", 0);
                    }
                } else {
                    json.put("status", "0");
                    json.put("times", doctorWorkTime.getFamousConsultTimes());
                }
            }
        }
        return json;
    }
    /**
     * 设置名医咨询次数
     *
@ -416,4 +476,33 @@ public class DoctorWorkTimeService extends BaseService {
            return false;
        }
    }
    /**
     * 名医咨询次数更新
     *
     * @param date
     */
    @Transactional
    public void consultTimesRemain(String date) {
        try {
            List<Doctor> doctors = doctorDao.findByIsFamous(1);
            for (Doctor doc : doctors) {
                JSONObject json = isDoctorWorkingToday(doc.getCode());
                if (json.getString("status").equals("1")) {
                    DoctorFamousConsultTimesRemain timesRemain = timesRemainDao.findByDoctorAndConsultDate(doc.getCode(),date);
                    if(timesRemain == null) {
                        timesRemain = new DoctorFamousConsultTimesRemain();
                    }
                    timesRemain.setDoctor(doc.getCode());
                    timesRemain.setConsultDate(date);
                    timesRemain.setTimesRemain(json.getInt("times"));
                    timesRemainDao.save(timesRemain);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

+ 13 - 5
src/main/java/com/yihu/wlyy/service/app/statistics/StatisticsService.java

@ -125,15 +125,19 @@ public class StatisticsService extends BaseService {
     * @param level   级别
     * @return
     */
    public String getSignRate(String endDate, String area, int level) throws Exception {
    public JSONObject getSignRate(String endDate, String area, int level) throws Exception {
        JSONObject json =  new JSONObject();
        long signAmount = getTotalAmount(endDate, area, level, SIGN);
        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(area, Calendar.getInstance().get(Calendar.YEAR));
        DecimalFormat df = new DecimalFormat("0.0000");
        if (peopleNum != null && peopleNum.getNum() > 0) {
            return df.format((signAmount * 1.0000) / peopleNum.getNum() * 100);
            json.put("rate",df.format((signAmount * 1.0000) / peopleNum.getNum() * 100));
            json.put("sign",signAmount);
            json.put("people", peopleNum.getNum());
            return json;
        } else {
            throw new Exception("户籍人口为0");
            throw new Exception("户籍任务人口数为0");
        }
    }
@ -145,13 +149,17 @@ public class StatisticsService extends BaseService {
     * @param level   级别
     * @return
     */
    public String getSignTaskRate(String endDate, String area, int level) throws Exception {
    public JSONObject getSignTaskRate(String endDate, String area, int level) throws Exception {
        JSONObject json =  new JSONObject();
        long signAmount = getTotalAmount(endDate, area, level, SIGN);
        PopulationBase peopleNum = peopleNumDao.findByCodeAndYear(area, Calendar.getInstance().get(Calendar.YEAR));
        DecimalFormat df = new DecimalFormat("0.0000");
        if (peopleNum != null && peopleNum.getTaskNum() > 0) {
            return df.format((signAmount * 1.0000) / peopleNum.getTaskNum() * 100);
            json.put("rate",df.format((signAmount * 1.0000) / peopleNum.getTaskNum() * 100));
            json.put("sign",signAmount);
            json.put("people", peopleNum.getTaskNum());
            return json;
        } else {
            throw new Exception("户籍人口任务数为0");
        }

+ 8 - 9
src/main/java/com/yihu/wlyy/service/common/account/DoctorService.java

@ -24,10 +24,8 @@ import com.yihu.wlyy.entity.security.Token;
import com.yihu.wlyy.repository.doctor.DoctorDao;
import com.yihu.wlyy.util.EncodesUtil;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 医生基本信息类.
@ -83,12 +81,13 @@ public class DoctorService extends TokenService {
		// 分页信息
		Pageable pageRequest = new PageRequest(page-1, pagesize);
		Calendar calendar = Calendar.getInstance();
		int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		if (week == 0) {
			week = 7;
		if (StringUtils.isNoneEmpty(name)) {
			name="%"+name+"%";
			return doctorDao.famousDoctorList(sdf.format(new Date()),name, pageRequest);
		}else{
			return doctorDao.famousDoctorList(sdf.format(new Date()), pageRequest);
		}
		return null;
	}
}

+ 38 - 0
src/main/java/com/yihu/wlyy/web/common/util/ManagerUtilController.java

@ -1,12 +1,20 @@
package com.yihu.wlyy.web.common.util;
import com.yihu.wlyy.job.QuartzHelper;
import com.yihu.wlyy.job.consult.FamousConsultTimesJob;
import com.yihu.wlyy.service.app.disease.PatientDiseaseService;
import com.yihu.wlyy.service.app.scheduling.DoctorWorkTimeService;
import com.yihu.wlyy.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.hash.HashMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
/**
 * Created by lyr on 2016/09/13.
 */
@ -18,6 +26,10 @@ public class ManagerUtilController extends BaseController{
    PatientDiseaseService diseaseService;
    @Autowired
    StringRedisTemplate redisTemplate;
    @Autowired
    QuartzHelper quartzHelper;
    @Autowired
    DoctorWorkTimeService workTimeService;
    /**
     * 更新到redis
@ -59,4 +71,30 @@ public class ManagerUtilController extends BaseController{
            return error(-1,"查询失败");
        }
    }
    @RequestMapping(value = "/famous_doctor/start_job")
    public String startConsultTimesJob(){
        try{
            if(!quartzHelper.isExistJob("famous-doctor-times")) {
                quartzHelper.addJob(FamousConsultTimesJob.class, "0 0 0 * * ?", "famous-doctor-times", new HashMap<String, Object>());
                return write(200,"启动成功");
            }else{
                return write(200,"任务已存在");
            }
        }catch (Exception e){
            e.printStackTrace();
            return error(-1,"启动失败");
        }
    }
    @RequestMapping(value = "/famous_doctor/times_update")
    public String famousConsultTimeUpdate(){
        try{
            workTimeService.consultTimesRemain(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
            return write(200,"更新成功");
        }catch (Exception e){
            e.printStackTrace();
            return error(-1,"更新失败");
        }
    }
}

+ 1 - 1
src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -203,7 +203,7 @@ public class StatisticsController extends BaseController {
    @ResponseBody
    public String getAreaRate(String endDate, String area, int level, String type) {
        try {
            String result = "0.00";
            JSONObject result = null;
            if (type.equals("1")) {
                result = statisticsService.getSignRate(endDate,area,level);