Quellcode durchsuchen

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

huangwenjie vor 7 Jahren
Ursprung
Commit
63729bc3cd

+ 29 - 0
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/HealthGuidanceConvert.java

@ -0,0 +1,29 @@
package com.yihu.wlyy.statistics.etl.convert.wlyy;
import com.yihu.wlyy.entity.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.statistics.etl.convert.Convert;
import com.yihu.wlyy.statistics.util.Contant;
import com.yihu.wlyy.statistics.vo.DataModel;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
 * 健康指导推送统计已读、未读
 * Created by zhangdan on 2017/10/26.
 */
public class HealthGuidanceConvert implements Convert {
    public List<DataModel> convert(JdbcTemplate jdbcTemplate, List<DataModel> oneList, String slaveLevel, WlyyDimensionQuota temp) {
        for (DataModel one : oneList) {
            try {
                Object value = DataModel.class.getMethod("get" + temp.getKey()).invoke(one);
                DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(one, value.toString());
            } catch (Exception e){
                e.printStackTrace();
            }
        }
        ;
        return oneList;
    }
}

+ 28 - 24
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/extract/db/Data2Save.java

@ -53,7 +53,7 @@ public class Data2Save {
        for (AdminTeam adminTeam : teams) {
            SaveModel saveModel = new SaveModel();
            saveModel.setCity("350206");
            saveModel.setCity("350200");
            saveModel.setCityName("厦门市");
            saveModel.setTown(adminTeam.getTownCode());
            saveModel.setTownName(adminTeam.getTownName());
@ -83,32 +83,36 @@ public class Data2Save {
    private List<SaveModel> setSlaveKey(int savleKeyNum, List<SaveModel> savelist, List<DictModel> dictModels,Map<String, DataModel> dataModelMap,int dimensize) {
        List<SaveModel> newSavelist = new ArrayList<>();
        savelist.stream().forEach(one -> {
            dictModels.stream().forEach(dict->{
                SaveModel newSaveModel = new SaveModel();
                BeanUtils.copyProperties(one, newSaveModel);
                try {
                    SaveModel.class.getMethod("setSlaveKey" + savleKeyNum , String.class).invoke(newSaveModel,dict.getCode());
                    SaveModel.class.getMethod("setSlaveKey" + savleKeyNum + "Name", String.class).invoke(newSaveModel,dict.getName());
                    if(savleKeyNum==dimensize){
                        StringBuilder sb = new StringBuilder();
                        sb.append(newSaveModel.getTeam());
                        for(int i=1;i<=dimensize;i++){
                            String invokeKey = (String) SaveModel.class.getMethod("getSlaveKey"+i).invoke(newSaveModel);
                            sb.append("-"+invokeKey);
                        }
                        DataModel dataModel = dataModelMap.get(sb.toString());
                        if(dataModel!=null){
                            newSaveModel.setResult1(dataModel.getResult1());
                        }
//        savelist.stream().forEach(one -> {
        for(SaveModel one:savelist) {
            for(DictModel dict:dictModels){
//            dictModels.stream().forEach(dict -> {
            SaveModel newSaveModel = new SaveModel();
            BeanUtils.copyProperties(one, newSaveModel);
            try {
                SaveModel.class.getMethod("setSlaveKey" + savleKeyNum, String.class).invoke(newSaveModel, dict.getCode());
                SaveModel.class.getMethod("setSlaveKey" + savleKeyNum + "Name", String.class).invoke(newSaveModel, dict.getName());
                if (savleKeyNum == dimensize) {
                    StringBuilder sb = new StringBuilder();
                    sb.append(newSaveModel.getTeam());
                    for (int i = 1; i <= dimensize; i++) {
                        String invokeKey = (String) SaveModel.class.getMethod("getSlaveKey" + i).invoke(newSaveModel);
                        sb.append("-" + invokeKey);
                    }
                    DataModel dataModel = dataModelMap.get(sb.toString());
                    if (dataModel != null) {
                        newSaveModel.setResult1(dataModel.getResult1());
                        newSaveModel.setResult2(dataModel.getResult1());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                newSavelist.add(newSaveModel);
            });
        });
            } catch (Exception e) {
                e.printStackTrace();
            }
//            });
//        });
        }
        }
        return newSavelist;
    }

+ 1 - 1
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/extract/db/ESExtract.java

@ -65,6 +65,6 @@ public class ESExtract<T> {
    //初始化时间
    public String initSql(String sql, String startTime, String endTime) {
        return sql.replace("[table]","health_edu_article_patient_test3").replace("[startTime]", startTime).replace("[endTime]", endTime);
        return sql.replace("[startTime]", startTime).replace("[endTime]", endTime);
    }
}

+ 5 - 19
patient-co/patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/vo/DataModel.java

@ -28,7 +28,7 @@ public class DataModel {
    private Double num = 1.0;//分数 如果是累加的计算 默认是1 如果是分数从数据库拿
    private String prescriptionCode;//处方code
    private String healthProblem;//诊断标签
    private Integer isRead;//是否已读
    private Integer readStatus;//已读状态
    private Double result1 = 0.0; //从ES统计的时候的数目
@ -163,20 +163,6 @@ public class DataModel {
        return null;
    }
    @Override
    public String toString() {
        return "DataModel{" +
                "businessId='" + businessId + '\'' +
                ", city='" + city + '\'' +
                ", town='" + town + '\'' +
                ", hospital='" + hospital + '\'' +
                ", team='" + team + '\'' +
                ", slaveKey1='" + slaveKey1 + '\'' +
                ", slaveKey2='" + slaveKey2 + '\'' +
                ", slaveKey3='" + slaveKey3 + '\'' +
                ", slaveKey4='" + slaveKey4 + '\'' +
                '}';
    }
    public String getPatient() {
        return patient;
@ -210,11 +196,11 @@ public class DataModel {
        this.result1 = result1;
    }
    public Integer getIsRead() {
        return isRead;
    public Integer getReadStatus() {
        return readStatus;
    }
    public void setIsRead(Integer isRead) {
        this.isRead = isRead;
    public void setReadStatus(Integer readStatus) {
        this.readStatus = readStatus;
    }
}

+ 177 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/statisticsES/StatisticsESService.java

@ -4945,4 +4945,181 @@ public class StatisticsESService {
        return resultList;
    }
    public JSONArray getArticleLowlevelTotal(String endDate, String area, int level, int sort, String lowLevel, String level2_type, String year) throws Exception {
        //83:健康文章,84:健康指导
        List<SaveModel> list_83_84 = elasticsearchUtil.findListDateQuotaLevel0(null, endDate, area, level, "83,84", SaveModel.timeLevel_DDL, lowLevel);
        List<SaveModel> list_read_83_84 = elasticsearchUtil.findListDateQuotaLevel1(endDate,area,level,"83,84", SaveModel.timeLevel_DDL, lowLevel, "1");
//        List<SaveModel> list_84 = elasticsearchUtil.findListDateQuotaLevel0(null, endDate, area, level, "84", SaveModel.timeLevel_ZL, lowLevel);
//        List<SaveModel> list_read_84 = elasticsearchUtil.findListDateQuotaLevel1(endDate,area,level,"84", SaveModel.timeLevel_DDL, lowLevel, "1");
//        Double readNum = 0.0;
        String readRate = "";
        DecimalFormat df = new DecimalFormat("0.00");
        List<Map<String, Object>> resultList = new ArrayList<>();
        for(SaveModel saveModel:list_83_84){
            Map<String, Object> map = new HashMap<>();
            if (SaveModel.OrgLevel.equals(lowLevel)) {
                map.put("code", saveModel.getHospital());
                map.put("name", saveModel.getHospitalName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getHospital().equals(saveModel2.getHospital())){
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
            } else if (SaveModel.townLevel.equals(lowLevel)) {
                map.put("code", saveModel.getTown());
                map.put("name", saveModel.getTownName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getTown().equals(saveModel2.getTown())){
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
            } else if (SaveModel.cityLevel.equals(lowLevel)) {
                map.put("code", saveModel.getCity());
                map.put("name", saveModel.getCityName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getCity().equals(saveModel2.getCity())){
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                map.put("code", saveModel.getTeam());
                map.put("name", saveModel.getTeamName());
                map.put("amount", saveModel.getResult1());
                Double readNum = 0.0;
                for(SaveModel saveModel2:list_read_83_84){
                    if(saveModel.getTeam().equals(saveModel2.getTeam())){
                        //获取阅读量
                        readNum = saveModel2.getResult1();
                        break;
                    }
                }
                readRate = df.format( readNum > 0.0? ((readNum)/(saveModel.getResult1() * 1.0000)*100):0.0);
                map.put("readNum", readNum.longValue());
                map.put("readRate", readRate+"%");
            }
            resultList.add(map);
        }
        // 结果为空时,自建结果集
        if (resultList == null || resultList.size() < 1) {
            resultList = new ArrayList<>();
            if (SaveModel.townLevel.equals(lowLevel)) {
                List<Town> towns = townDao.findByCityCode(area);
                if (towns != null) {
                    for (Town town : towns) {
                        Map<String, Object> obj = new HashMap<>();
                        obj.put("code", town.getCode());
                        obj.put("name", town.getName());
                        obj.put("amount", "0");
                        obj.put("readNum", 0);
                        obj.put("readRate", Double.valueOf("0.00")+"%");
                        resultList.add(obj);
                    }
                }
            } else if (SaveModel.OrgLevel.equals(lowLevel)) {
                List<Town> towns = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level + "")) {
                    towns = townDao.findByCityCode(area);
                } else if (SaveModel.townLevel.equals(level + "")) {
                    Town town = townDao.findByCode(area);
                    towns.add(town);
                }
                if (towns != null && towns.size() > 0) {
                    for (Town town : towns) {
                        List<Hospital> hospitals = hospitalDao.findByTownCode(town.getCode());
                        for (Hospital hos : hospitals) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", hos.getCode());
                            obj.put("name", hos.getName());
                            obj.put("amount", "0");
                            obj.put("readNum", 0);
                            obj.put("readRate", Double.valueOf("0.00")+"%");
                            resultList.add(obj);
                        }
                    }
                }
            } else if (SaveModel.teamLevel.equals(lowLevel)) {
                List<Hospital> hospitals = new ArrayList<>();
                if (SaveModel.cityLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByCity(area);
                } else if (SaveModel.townLevel.equals(level + "")) {
                    hospitals = hospitalDao.findByTownCode(area);
                } else {
                    Hospital hos = hospitalDao.findByCode(area);
                    if (hos != null) {
                        hospitals.add(hos);
                    }
                }
                if (hospitals != null && hospitals.size() > 0) {
                    for (Hospital hos : hospitals) {
                        List<AdminTeam> teams = adminTeamDao.findByOrgCode(hos.getCode());
                        for (AdminTeam team : teams) {
                            Map<String, Object> obj = new HashMap<>();
                            obj.put("code", String.valueOf(team.getId()));
                            obj.put("name", team.getName());
                            obj.put("amount", "0");
                            obj.put("readNum", 0);
                            obj.put("readRate", Double.valueOf("0.00")+"%");
                            resultList.add(obj);
                        }
                    }
                }
            }
        }
        if (SaveModel.OrgLevel.equals(level + "")) {
            statisticsAllService.translateTeamLeaderName(resultList);
        }
        Collections.sort(resultList, new Comparator<Map<String, Object>>() {
            public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                long map1value = 0L;
                long map2value = 0L;
                if(o1.get("amount")!=null && o1.get("amount")+""!=""){
                    map1value = ((Double)o1.get("amount")).longValue();
                }
                if(o2.get("amount")!=null && o2.get("amount")+""!=""){
                    map2value = ((Double)o2.get("amount")).longValue();
                }
                if (map1value - map2value > 0) {
                    return sort == 1 ? -1 : 1;
                } else if (map1value - map2value < 0) {
                    return sort == 1 ? 1 : -1;
                } else {
                    return 0;
                }
            }
        });
        return new JSONArray(resultList);
    }
}

+ 5 - 3
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ElasticsearchUtil.java

@ -325,7 +325,8 @@ public class ElasticsearchUtil {
            }
            sql.append(" and ");
        }
        sql.append(" quotaCode='" + index + "'  ");
//        sql.append(" quotaCode='" + index + "'  ");
        sql.append(" quotaCode in(" + index + ")  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        if (StringUtils.isNotEmpty(startDate)) {
@ -430,7 +431,8 @@ public class ElasticsearchUtil {
            }
            sql.append(" and ");
        }
        sql.append(" quotaCode='" + index + "'  ");
//        sql.append(" quotaCode='" + index + "'  ");
        sql.append(" quotaCode in(" + index + ")  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        if (StringUtils.isNotEmpty(startDate)) {
@ -548,7 +550,7 @@ public class ElasticsearchUtil {
            }
            sql.append(" and ");
        }
        sql.append(" quotaCode='" + index + "'  ");
        sql.append(" quotaCode in(" + index + ")  ");
        sql.append(" and timeLevel='" + timeLevel + "'  ");
        sql.append(" and areaLevel='5'");
        if (StringUtils.isNotEmpty(startDate)) {

+ 40 - 0
patient-co/patient-co-wlyy/src/main/java/com/yihu/wlyy/web/statistic/EsStatisticsController.java

@ -2088,4 +2088,44 @@ public class EsStatisticsController extends BaseController {
        }
    }
    /*==================================版本1.4.1统计优化结束 end=====================================*/
    /*==================================版本1.4.2统计健康指导、健康文章推送列表 start=====================================*/
    /**
     * 指标截止日期      增量
     * (如:待预约量)
     *
     * @param endDate     结束时间
     * @param area        父code
     * @param level       等级  1 团队,2 机构,3 区,4 市
     * @param sort        排序 1倒叙 2是 正序
     * @param lowLevel
     * @param level2_type 指标代码 例如性别 1 男 2 女  不传就返回男和女的总和
     * @return
     */
    @RequestMapping("/article_lowlevel_total")
    @ResponseBody
    public String getArticleLowlevelTotal(@RequestParam(required = true) String endDate,
                                        @RequestParam(required = true) String area,
                                        @RequestParam(required = true) int level,
//                                        @RequestParam(required = true) String index,
                                        @RequestParam(required = true) int sort,
                                        @RequestParam(required = false) String lowLevel,
                                        @RequestParam(required = false) String level2_type,
                                        @RequestParam(required = false) String year) {
        try{
            lowLevel = String.valueOf(StringUtils.isEmpty(lowLevel) ? (level - 1) : lowLevel);
            //新版与旧版统计适配
            level = elasticsearchUtil.changeLevel(level);
            if (StringUtils.isNotEmpty(lowLevel)) {
                lowLevel = elasticsearchUtil.changeLevel(Integer.parseInt(lowLevel)) + "";
            }
            JSONObject result = new JSONObject();
            result.put("",statisticsESService.getArticleLowlevelTotal(endDate, area, level, sort, lowLevel, level2_type, year));
            return write(200, "查询成功", "data", result);
        } catch (Exception e) {
            e.printStackTrace();
            return error(-1, "查询失败");
        }
    }
}