Browse Source

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

chenweida 8 years ago
parent
commit
db6b87aabd

+ 14 - 9
patient-co-figure/pom.xml

@ -8,8 +8,8 @@
    <modelVersion>4.0.0</modelVersion>
    <artifactId>patient-co-figure</artifactId>
    <packaging>jar</packaging>
    <!--<packaging>war</packaging>-->
    <!--<packaging>jar</packaging>-->
    <packaging>war</packaging>
    <properties>
@ -371,7 +371,7 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>${version.spring-boot}</version>
            <!--<scope>provided</scope>-->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
@ -399,17 +399,22 @@
            <artifactId>jedis</artifactId>
            <version>${version.jedis}</version>
        </dependency>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!--打成war包需要的配置-->
            <!--<plugin>-->
                <!--<artifactId>maven-war-plugin</artifactId>-->
                <!--<configuration>-->
                    <!--<failOnMissingWebXml>false</failOnMissingWebXml>-->
                <!--</configuration>-->
            <!--</plugin>-->
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>

+ 39 - 21
patient-co-figure/src/main/java/com/yihu/figure/controller/patient/PortraitController.java

@ -320,8 +320,26 @@ public class PortraitController extends BaseController {
                    return1.put(one.getKey(), return2);
                }
            }
            //特殊处理
            if("2".equals(key)){
                return1 = new JSONObject();
                JSONObject return2 = new JSONObject();
                return2.put("count", "0");
                return2.put("scale", "0.2977");
                return1.put("患病人群", return2);
                return2 = new JSONObject();
                return2.put("count", "0");
                return2.put("scale", "0.0001");
                return1.put("恢复期人群", return2);
                return2 = new JSONObject();
                return2.put("count", "0");
                return2.put("scale", "0.7022");
                return1.put("健康人群", return2);
            }
            returnjo.put("data",return1);//数据
            String name=getNameByKey(key,return1);
@ -343,27 +361,27 @@ public class PortraitController extends BaseController {
                return "从居民近期疾病分析来看,高血压和糖尿病占比较高,需加强高血压和糖尿病人群健康预防和教育。";
            }
            case "2":{
                String message=" 根据市区内居民健康状况分布情况,患病人群占比{huanbing}%," +
                        " 恢复期人群占比{huifu}%,健康人群占比{jiankang}%。" +
                        " 从区域健康情况看{disease}占比较高,需加强{disease}健康管理和服务。";
                DecimalFormat df   = new DecimalFormat("######0.00");
                Double huanbing=return1.getJSONObject("患病人群").getDouble("scale");
                Double huifu=return1.getJSONObject("恢复期人群").getDouble("scale");
                Double jiankang=return1.getJSONObject("健康人群").getDouble("scale");
                message= message.replace("{huanbing}",df.format(huanbing*100));
                message=message.replace("{huifu}",df.format(huifu*100));
                message=message.replace("{jiankang}",df.format(jiankang*100));
                if(huanbing>huifu&&huanbing>jiankang){
                    message=message.replace("{disease}","患病人群");
                }else if(huifu>huanbing&&huifu>jiankang){
                    message=message.replace("{disease}","恢复期人群");
                }else if(jiankang>huanbing&&jiankang>huifu){
                    message=message.replace("{disease}","健康人群");
                }
                String message=" 根据市区内居民健康状况分布情况,患病人群占比29.77%," +
                        " 恢复期人群占比0.01%,健康人群占比70.22%。" ;
                        //" 从区域健康情况看{disease}占比较高,需加强{disease}健康管理和服务。";
//                DecimalFormat df   = new DecimalFormat("######0.00");
//
//                Double huanbing=return1.getJSONObject("患病人群").getDouble("scale");
//                Double huifu=return1.getJSONObject("恢复期人群").getDouble("scale");
//                Double jiankang=return1.getJSONObject("健康人群").getDouble("scale");
//
//                message= message.replace("{huanbing}",df.format(huanbing*100));
//                message=message.replace("{huifu}",df.format(huifu*100));
//                message=message.replace("{jiankang}",df.format(jiankang*100));
//
//                if(huanbing>huifu&&huanbing>jiankang){
//                    message=message.replace("{disease}","患病人群");
//                }else if(huifu>huanbing&&huifu>jiankang){
//                    message=message.replace("{disease}","恢复期人群");
//                }else if(jiankang>huanbing&&jiankang>huifu){
//                    message=message.replace("{disease}","健康人群");
//                }
                return message;
            }
        }

+ 28 - 20
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java

@ -201,20 +201,22 @@ public class CurrentDayAllQuotaJob implements Job {
        String quotaId="22";
        try{
            //查找Im库中的所有的医生ID
            Map<String, String> consultIdMaps = getConsultIdsByIm();
            List<String> consultIdMaps = getConsultIdsByIm();
            StringBuffer sb=new StringBuffer("");
            for(int i=0;i<consultIdMaps.size();i++){
                sb.append(consultIdMaps.get(i));
                if(i<(consultIdMaps.size()-1)){
                    sb.append(",");
                }
            }
            //找出今天的咨询信息
            String sql=" select admin_team_code,id,consult from wlyy_consult_team a where  a.czrq>= '"+now+"'and a.czrq< '"+tomorrow+"'";
            String sql=" select admin_team_code,id,consult from wlyy_consult_team a where  a.czrq< '"+tomorrow+"' and a.consult in ("+sb.toString()+")";
            //抽取數據
            List<ConsultTeam> consultTeams= SpringUtil.getBean(DBExtract.class).extract(ConsultTeam.class,sql);
            List<ConsultTeam> unReyconsultTeams = new ArrayList<>();
            consultTeams.stream().forEach(ct -> {
                //判断未回复的consultID是否存在
                if(consultIdMaps.containsKey(ct.getConsult())){
                    unReyconsultTeams.add(ct);
                }
            });
            System.out.println("consultTeams num:"+consultTeams.size());
            //過濾數據
            FilterModel etlModels= consultDataFilter.filter(unReyconsultTeams,sql,null);
            FilterModel etlModels= consultDataFilter.filter(consultTeams,sql,null);
            //统计数据
            List<Map<String, List<ETLModel>>>  returnDatas= SpringUtil.getBean(Level1Role.class).elt(etlModels.getEtlModelList());
            //保存数据
@ -227,31 +229,37 @@ public class CurrentDayAllQuotaJob implements Job {
        allContent.append("----------22-----------");
    }
    /**
     * 找出 im中的所有未回复的topic
     *
     * @return
     */
    public Map<String, String> getConsultIdsByIm() {
        String sql = "SELECT  t.id consultId" +
    public List<String> getConsultIdsByIm() {
        String sql = "SELECT  DISTINCT t.id consultId " +
                " FROM " +
                " topics t, " +
                " participants p, " +
                " doctors d " +
                " doctors d ," +
                " sessions s " +
                " WHERE " +
                " p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.`reply`=0 " +
                " AND t.create_time >='" + now +
                "'  AND t.create_time< '" + tomorrow + "'";
                " AND t.create_time< '" + tomorrow + "'";
        List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
        //得到医生的id
        Map<String, String> ids = new HashMap<>();
        ims.parallelStream().forEach(map -> {
        List<String> ids=new ArrayList<>();
        ims.stream().forEach(map -> {
            if (map.containsKey("consultId")) {
                ids.put(String.valueOf(map.get("consultId")), String.valueOf(map.get("consultId")));
                ids.add(String.valueOf("'"+map.get("consultId")+"'"));
            }
        });
        System.out.println("22 ims 实时:" +ims.size());
        System.out.println("22 实时sql:" +sql);
        System.out.println("22 ids 实时:" +ids.size());
        return ids;
    }
    private void computequota_21() {
@ -284,7 +292,7 @@ public class CurrentDayAllQuotaJob implements Job {
            e.printStackTrace();
            allContent.append("统计失败:"+e.getMessage());
        }
        allContent.append("-----------1----------");
        allContent.append("-----------21----------");
    }
    private void computequota_20() {
@ -315,7 +323,7 @@ public class CurrentDayAllQuotaJob implements Job {
            e.printStackTrace();
            allContent.append("统计失败:"+e.getMessage());
        }
        allContent.append("-----------1----------");
        allContent.append("-----------20----------");
    }
    private void initCurrentExpire() {

+ 24 - 23
patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/NoReyConsultJob.java

@ -95,23 +95,21 @@ public class NoReyConsultJob implements Job {
            quartzJobLog.setJobId(wlyyJobConfig.getId());
            quartzJobLog.setJobName(wlyyJobConfig.getJobName());
            //查找Im库中的所有的医生ID
            Map<String, String> consultIdMaps = getConsultIdsByIm();
            List<String> consultIdMaps = getConsultIdsByIm();
            StringBuffer sb=new StringBuffer("");
            for(int i=0;i<consultIdMaps.size();i++){
                sb.append(consultIdMaps.get(i));
                if(i<(consultIdMaps.size()-1)){
                    sb.append(",");
                }
            }
            String sql = " select admin_team_code,id,consult from wlyy_consult_team a where  " +
                    " a.czrq>='" + daybefore + Constant.quota_date_last + "' and a.czrq< '" + yesterday + Constant.quota_date_last + "'";
            String sql = " select admin_team_code,id,consult from wlyy_consult_team a where  a.czrq< '" + yesterday + Constant.quota_date_last + "' and a.consult in ("+sb.toString()+")";
            //抽取數據
            List<ConsultTeam> consultTeams = dbExtract.extract(ConsultTeam.class, sql);
            List<ConsultTeam> unReyconsultTeams = new ArrayList<>();
            consultTeams.stream().forEach(ct -> {
                //判断未回复的consultID是否存在
                if(consultIdMaps.containsKey(ct.getConsult())){
                    unReyconsultTeams.add(ct);
                }
            });
            System.out.println("consultTeams num"+consultTeams.size());
            //過濾數據
            FilterModel etlModels = consultDataFilter.filter(unReyconsultTeams, sql, yesterday);
            FilterModel etlModels = consultDataFilter.filter(consultTeams, sql, yesterday);
            //统计数据
            List<Map<String, List<ETLModel>>> returnDatas = levelRole.elt(etlModels.getEtlModelList());
            //保存数据
@ -137,31 +135,34 @@ public class NoReyConsultJob implements Job {
    /**
     * 找出 im中的所有未回复的topic
     *
     * 名医有算 求助没有
     * @return
     */
    public Map<String, String> getConsultIdsByIm() {
        String sql = "SELECT  t.id consultId " +
    public List<String> getConsultIdsByIm() {
        String sql = "SELECT DISTINCT t.id consultId " +
                " FROM " +
                " topics t, " +
                " participants p, " +
                " doctors d " +
                " doctors d ," +
                " sessions s " +
                " WHERE " +
                " p.participant_id = d.id " +
                " AND t.session_id = p.session_id " +
                " AND t.session_id = s.id " +
                " AND s.type = 1 " +
                " AND t.`reply`=0 " +
                " AND t.create_time >='" + daybefore + Constant.quota_date_last +
                "'  AND t.create_time< '" + yesterday + Constant.quota_date_last + "'";
                "  AND t.create_time< '" + yesterday + Constant.quota_date_last + "'";
        List<Map<String, Object>> ims = imjdbcTemplate.queryForList(sql);
        //得到医生的id
        Map<String, String> ids = new HashMap<>();
        ims.parallelStream().forEach(map -> {
        List<String> ids = new ArrayList<>();
        ims.stream().forEach(map -> {
            if (map.containsKey("consultId")) {
                ids.put(String.valueOf(map.get("consultId")), String.valueOf(map.get("consultId")));
                ids.add("'"+ String.valueOf(map.get("consultId"))+"'");
            }
        });
        System.out.println("ims num:"+ims.size());
        System.out.println("sql:"+sql);
        System.out.println("im num:"+ids.size());
        System.out.println("ids num:"+ids.size());
        return ids;
    }
}

+ 8 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/StatisticsController.java

@ -179,7 +179,7 @@ public class StatisticsController extends BaseController {
    }
    /**
     * 指标截止日期累积量
     * 指标截止日期增量
     *
     * @param endDate
     * @param area
@ -232,10 +232,13 @@ public class StatisticsController extends BaseController {
            JSONObject result = new JSONObject();
            JSONArray returnJa = new JSONArray();
            List<JSONArray> jsonArrays = new ArrayList<>();
            for (String idx : indexes) {
                JSONArray jsonArray = statisticsService.getLowLevelTotalDetail(endDate, area, level, idx, sort, lowLevel);
                jsonArrays.add(jsonArray);
            }
            JSONArray jsonArray1 = statisticsService.getLowLevelTotalDetail(endDate, area, level, indexes[0], sort, lowLevel);
            jsonArrays.add(jsonArray1);
            JSONArray jsonArray2= statisticsService.getLowLevelIncrementDetail(endDate, endDate, area, level, indexes[1], sort, lowLevel);
            jsonArrays.add(jsonArray2);
            //遍历合并2个指标中key值一样的
            for (int i = 0; i < jsonArrays.get(0).length(); i++) {
                if (jsonArrays.get(1).length() == 0) {