Prechádzať zdrojové kódy

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

# Conflicts:
#	common/common-entity/sql记录
yeshijie 3 rokov pred
rodič
commit
0583bb0bc7

+ 14 - 0
svr/svr-statistics-es/doc/sql/初始统计数据.txt

@ -0,0 +1,14 @@
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f6fd9c0001', NULL, 'quota_org_type', '28', '4', '', '1', NULL, '2021-06-10 16:08:18.076', '123', NULL, '2021-06-10 16:08:18.076', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f729170002', NULL, 'quota_org_type', '29', '4', '', '2', NULL, '2021-06-10 16:08:29.207', '123', NULL, '2021-06-10 16:08:29.207', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f754fc0003', NULL, 'quota_org_type', '30', '4', '', '3', NULL, '2021-06-10 16:08:40.444', '123', NULL, '2021-06-10 16:08:40.444', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f7ab640004', NULL, 'quota_org_type', '31', '3', '', '4', NULL, '2021-06-10 16:09:02.564', '123', NULL, '2021-06-10 16:09:02.564', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f7d0ec0005', NULL, 'quota_org_type', '32', '3', '', '5', NULL, '2021-06-10 16:09:12.172', '123', NULL, '2021-06-10 16:09:12.172', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f7f09e0006', NULL, 'quota_org_type', '33', '3', '', '6', NULL, '2021-06-10 16:09:20.286', '123', NULL, '2021-06-10 16:09:20.286', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f837f30007', NULL, 'quota_org_type', '34', '4', '', '7', NULL, '2021-06-10 16:09:38.547', '123', NULL, '2021-06-10 16:09:38.547', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f856d40008', NULL, 'quota_org_type', '35', '4', '', '8', NULL, '2021-06-10 16:09:46.452', '123', NULL, '2021-06-10 16:09:46.452', '123', NULL, '', '统计机构类型');
INSERT INTO `base`.`wlyy_hospital_sys_dict` (`id`, `saas_id`, `dict_name`, `dict_code`, `dict_value`, `py_code`, `sort`, `hospital`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `img_url`, `model_name`) VALUES ('808080eb79f4d23c0179f4f884be0009', NULL, 'quota_org_type', '36', '4', '', '9', NULL, '2021-06-10 16:09:58.205', '123', NULL, '2021-06-10 16:09:58.205', '123', NULL, '', '统计机构类型');

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 192
svr/svr-statistics-es/doc/sql/统计相关表数据备份20171121.txt


+ 31 - 52
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -25,6 +25,11 @@ public class ComputeHelper {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public String findOrgType(String wlyyJobCongId){
        String sql = "SELECT IFNULL(dict_value,'') from wlyy_hospital_sys_dict WHERE dict_name = 'quota_org_type' and dict_code = '"+wlyyJobCongId+"'";
        String orgType = jdbcTemplate.queryForObject(sql,String.class);
        return orgType;
    }
    /**
     * @param dataModels      过滤之后的数据
@ -35,8 +40,10 @@ public class ComputeHelper {
     */
    public List<SaveModel> compute(List<DataModel> dataModels, List<BaseDimensionQuota> dimensionQuotas, String wlyyJobCongId, String endTime, String timeLevel) {
        try {
            //得到机构类型
            String orgType = findOrgType(wlyyJobCongId);
            //得到全部团队
            List<BaseDoctorDO> doctors = findAllDoctor();
            List<BaseDoctorDO> doctors = findAllDoctor(orgType);
            //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
            Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
            //初始化map并且设置统计出来的数目
@ -102,7 +109,7 @@ public class ComputeHelper {
     *
     * @return
     */
    private List<BaseDoctorDO> findAllDoctor() {
    private List<BaseDoctorDO> findAllDoctor(String orgType) {
        String sql = "SELECT " +
                "bd.id AS code , " +
                "bd.name ," +
@ -120,15 +127,14 @@ public class ComputeHelper {
                " WHERE bdh.doctor_code = bd.id  " +
                "AND hd.code= bdh.dept_code " +
                "AND o.code = bdh.org_code " +
                "AND bdh.del=1 AND hd.CONSULT_DEPT_FLAG='1' AND bd.job_title_code IN('1201','1301','1401','1101','066','067','061','1310','061','065','1','2','3','4')";
                "AND bdh.del=1 and o.code not in('fxty')";
        if(StringUtils.isNotBlank(orgType)){
            sql += " and o.type = '"+orgType+"'";
        }
        List<BaseDoctorDO> doctorDOS = jdbcTemplate.query(sql, new BeanPropertyRowMapper(BaseDoctorDO.class));
        return doctorDOS;
    }
    public static void main(String[] args) {
        System.out.println("3502060200".substring(0, 8));
    }
    /**
     * 初始化map
     */
@ -140,34 +146,30 @@ public class ComputeHelper {
        for (int i = 0; i < doctors.size(); i++) {
            BaseDoctorDO one = doctors.get(i);
            //排除测试机构
            if (one.getOrgCode().length() >= 11) {
                SaveModel saveModel = new SaveModel();
                saveModel.setCity("350200");
                saveModel.setCityName("厦门市");
                saveModel.setTown(one.getTownCode());
                saveModel.setTownName(one.getTownName());
                //把末尾不是00的机构转换成00
                String orgCode = one.getOrgCode();
                saveModel.setHospital(orgCode);
                saveModel.setHospitalName(one.getOrgName());
                saveModel.setDoctor(one.getCode());
                saveModel.setDoctorName(one.getName());
                saveModel.setDept(one.getDeptCode());
                saveModel.setDeptName(one.getDeptName());
                saveModel.setQuotaCode(wlyyJobCongId);
                saveModel.setCreateTime(new Date());
                saveModel.setTimeLevel(timeLevel);
                saveModel.setAreaLevel("6");//医生
                saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
                lastMaps.put(one.getCode(), saveModel);
            }
            SaveModel saveModel = new SaveModel();
            saveModel.setCity("330100");
            saveModel.setCityName("杭州市");
            saveModel.setTown(one.getTownCode());
            saveModel.setTownName(one.getTownName());
            String orgCode = one.getOrgCode();
            saveModel.setHospital(orgCode);
            saveModel.setHospitalName(one.getOrgName());
            saveModel.setDoctor(one.getCode());
            saveModel.setDoctorName(one.getName());
            saveModel.setDept(one.getDeptCode());
            saveModel.setDeptName(one.getDeptName());
            saveModel.setQuotaCode(wlyyJobCongId);
            saveModel.setCreateTime(new Date());
            saveModel.setTimeLevel(timeLevel);
            saveModel.setAreaLevel("6");//医生
            saveModel.setQuotaDate(DateUtil.strToDate(endTime, "yyyy-MM-dd"));
            lastMaps.put(one.getCode(), saveModel);
        }
        //根据维度初始化数据
            for (int i = 0; i < dimensionQuotas.size(); i++) {
                Map<String, SaveModel> mapTemp = new HashMap<>();
                BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
//                List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
                List<Map<String, Object>> listMap = jdbcTemplate.queryForList(dimensionQuota.getDictSql());
                for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
                    for (int j = 0; j < listMap.size(); j++) {
@ -188,29 +190,6 @@ public class ComputeHelper {
            }
            lastMaps = mapTemp;
        }
//        for (int i = 0; i < dimensionQuotas.size(); i++) {
//            Map<String, SaveModel> mapTemp = new HashMap<>();
//            BaseDimensionQuota dimensionQuota = dimensionQuotas.get(i);
//            List<DictModel> dictModels = jdbcTemplate.query(dimensionQuota.getDictSql(), new BeanPropertyRowMapper(DictModel.class));
//            for (Map.Entry<String, SaveModel> oneSaveModel : lastMaps.entrySet()) {
//                for (int j = 0; j < dictModels.size(); j++) {
//                    SaveModel saveModelTemp = new SaveModel();
//                    DictModel dictModel = dictModels.get(j);
//
//                    BeanUtils.copyProperties(oneSaveModel.getValue(), saveModelTemp);
//                    SaveModel.class.getMethod("setSlaveKey" + (i + 1) + "Name", String.class).invoke(saveModelTemp, dictModel.getName());
//                    SaveModel.class.getMethod("setSlaveKey" + (i + 1), String.class).invoke(saveModelTemp, dictModel.getCode());
//                    //根据维度生成新的key
//                    StringBuffer strKey = new StringBuffer(oneSaveModel.getKey() + "-" + dictModel.getCode());
//                    mapTemp.put(strKey.toString(), saveModelTemp);
//                }
//            }
//            //如果字典长度是0 抛出异常
//            if (dictModels.size() == 0) {
//                throw new Exception("dict size:0,sql:" + dimensionQuota.getDictSql());
//            }
//            lastMaps = mapTemp;
//        }
        //设置值
        for (Map.Entry<String, SaveModel> one : lastMaps.entrySet()) {

+ 4 - 26
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentMysqlToEsQuotaJob.java

@ -80,7 +80,7 @@ public class CurrentMysqlToEsQuotaJob implements Job {
    private Data2Save data2Save;
    private String incrementInterval;//增量的时间间隔(天)
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try {
@ -89,7 +89,9 @@ public class CurrentMysqlToEsQuotaJob implements Job {
            //初始化参数
            initParams(context);
            //统计指标
            computequota();
            if(Integer.valueOf(wlyyJobCongId)>27){
                computequota();
            }
        } catch (Exception e) {
            //如果出錯立即重新執行
            JobExecutionException e2 = new JobExecutionException(e);
@ -134,7 +136,6 @@ public class CurrentMysqlToEsQuotaJob implements Job {
        } else {
            //增量
            if (StringUtils.isEmpty(startTime)) {
//                startTime = new LocalDate(new DateTime().minusDays(2)).toString("yyyy-MM-dd") + " 17:00:00"; //2017-06-01 17:00:00
                getStartTime();
            } else {
                startTime = startTime + " 23:59:59";
@ -183,7 +184,6 @@ public class CurrentMysqlToEsQuotaJob implements Job {
        }
        this.quotaDate = DateUtil.strToDate(endTime, "yyyy-MM-dd");
        one.setStartTime(startTime);
        one.setEndTime(endTime);
        logger.info("========================quotaCode:" + one.getQuotaId() + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + ",timeLevel:" + timeLevel + " start========================");
@ -199,7 +199,6 @@ public class CurrentMysqlToEsQuotaJob implements Job {
        tjQuotaLog.setJobType(success ? "1" : "0");
        tjQuotaLog.setJobEndTime(new Date());
        //tjQuotaLog.setJobContent(JSONArray.fromObject(filterModel.getErrorModels()).toString());
        saveLog(tjQuotaLog);
        logger.info("========================quotaCode:" +  one.getQuotaId() + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + " end========================");
@ -420,36 +419,15 @@ public class CurrentMysqlToEsQuotaJob implements Job {
        }
    }
    public static void main(String[] args) {
        SimpleDateFormat s=new SimpleDateFormat("");
        System.out.println(s.format(new Date()));
    }
//    public void getStartTime() throws Exception{
//        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//        if("1".equals(this.incrementInterval)){//日
//            startTime = new LocalDate(new DateTime().minusDays(1)).toString("yyyy-MM-dd") + " 17:00:00";
//        }else if("2".equals(this.incrementInterval)){//周
//            Date monday = DateUtil.getMondayOfThisDayToDate(sf.parse(endTime));
////            startTime =sf.format(monday)+ " 17:00:00";
//            startTime =DateUtil.getNextDay(monday,-1)+ " 17:00:00";
//        }else if("3".equals(this.incrementInterval)){//月
//            Date fristDay = DateUtil.getFristDayOfMonthToDate(sf.parse(endTime));
////            startTime = sf.format(fristDay)+ " 17:00:00";
//            startTime =DateUtil.getNextDay(fristDay,-1)+ " 17:00:00";
//        }
//    }
    public void getStartTime() throws Exception{
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        if("1".equals(this.incrementInterval)){//日
            startTime = new LocalDate(new DateTime().minusDays(1)).toString("yyyy-MM-dd") + " 23:59:59";
        }else if("2".equals(this.incrementInterval)){//周
            Date monday = DateUtil.getMondayOfThisDayToDate(sf.parse(endTime));
    //            startTime =sf.format(monday)+ " 17:00:00";
            startTime =DateUtil.getNextDay(monday,-1)+ " 23:59:59";
        }else if("3".equals(this.incrementInterval)){//月
            Date fristDay = DateUtil.getFristDayOfMonthToDate(sf.parse(endTime));
    //            startTime = sf.format(fristDay)+ " 17:00:00";
            startTime =DateUtil.getNextDay(fristDay,-1)+ " 23:59:59";
        }
    }

+ 4 - 3
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/EsToEsQuotaJob.java

@ -71,6 +71,7 @@ public class EsToEsQuotaJob implements Job {
    @Autowired
    private Data2Save data2Save;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try {
@ -79,7 +80,9 @@ public class EsToEsQuotaJob implements Job {
            //初始化参数
            initParams(context);
            //统计指标
            computequota();
            if(Integer.valueOf(wlyyJobCongId)>27){
                computequota();
            }
        } catch (Exception e) {
            //如果出錯立即重新執行
            JobExecutionException e2 = new JobExecutionException(e);
@ -122,7 +125,6 @@ public class EsToEsQuotaJob implements Job {
            }
        }
        this.quotaDate = DateUtil.strToDate(endTime, "yyyy-MM-dd");
        this.wlyyJobCongId = map.getString("jobConfig");
        this.quartzJobConfig = quartzJobConfigDao.findById(wlyyJobCongId);
@ -152,7 +154,6 @@ public class EsToEsQuotaJob implements Job {
            tjQuotaLog.setJobType(success ? "1" : "0");
            tjQuotaLog.setJobEndTime(new Date());
            //tjQuotaLog.setJobContent(JSONArray.fromObject(filterModel.getErrorModels()).toString());
            saveLog(tjQuotaLog);
            logger.info("========================quotaCode:" + wlyyJobCongId + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + " end========================");
        } catch (Exception e) {

+ 5 - 7
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/MysqlToEsQuotaJob.java

@ -75,6 +75,7 @@ public class MysqlToEsQuotaJob implements Job {
    @Value("${es.index}")
    private String esIndex;
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        try {
@ -83,7 +84,9 @@ public class MysqlToEsQuotaJob implements Job {
            //初始化参数
            initParams(context);
            //统计指标
            computequota();
            if(Integer.valueOf(wlyyJobCongId)>27){
                computequota();
            }
        } catch (Exception e) {
            //如果出錯立即重新執行
            JobExecutionException e2 = new JobExecutionException(e);
@ -128,7 +131,6 @@ public class MysqlToEsQuotaJob implements Job {
        } else {
            //增量
            if (StringUtils.isEmpty(startTime)) {
//                startTime = new LocalDate(new DateTime().minusDays(2)).toString("yyyy-MM-dd") + " 17:00:00"; //2017-06-01 17:00:00
                getStartTime();
            } else {
                startTime = startTime + " 23:59:59";
@ -152,8 +154,6 @@ public class MysqlToEsQuotaJob implements Job {
            // 0 删除这天的数据
            deleteData(quotaDate, wlyyJobCongId, timeLevel);
            //1..抽取数据 如果是累加就是 List<DataModel>  如果是相除 Map<String,List<DataModel>>
        /*    if (quotaDate.equals(DateUtil.strToDate("2018-12-16", "yyyy-MM-dd"))){
*/
            List<DataModel> dataModels = extract();
            //2..根据规则过滤数据
            FilterModel filterModel = filter(dataModels);
@ -173,7 +173,7 @@ public class MysqlToEsQuotaJob implements Job {
            tjQuotaLog.setJobContent(JSONArray.fromObject(filterModel.getErrorModels()).toString());
            saveLog(tjQuotaLog);
            logger.info("========================quotaCode:" + wlyyJobCongId + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + " end========================");
    /*        }*/
        } catch (Exception e) {
            e.printStackTrace();
        }
@ -340,11 +340,9 @@ public class MysqlToEsQuotaJob implements Job {
            startTime = new LocalDate(new DateTime().minusDays(2)).toString("yyyy-MM-dd") + " 23:59:59";
        }else if("2".equals(this.incrementInterval)){//周
            Date monday = DateUtil.getMondayOfThisDayToDate(sf.parse(endTime));
//            startTime =sf.format(monday)+ " 17:00:00";
            startTime =DateUtil.getNextDay(monday,-1)+ " 23:59:59";
        }else if("3".equals(this.incrementInterval)){//月
            Date fristDay = DateUtil.getFristDayOfMonthToDate(sf.parse(endTime));
//            startTime = sf.format(fristDay)+ " 17:00:00";
            startTime =DateUtil.getNextDay(fristDay,-1)+ " 23:59:59";
        }
    }

+ 7 - 0
svr/svr-statistics-es/src/main/java/com/yihu/wlyy/statistics/vo/BaseDimensionQuota.java

@ -3,6 +3,7 @@ package com.yihu.wlyy.statistics.vo;
import com.yihu.jw.entity.iot.gateway.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
@ -20,6 +21,7 @@ public class BaseDimensionQuota extends IdEntity {
    private String convertClazz;
    private String key;
    @Column(name = "quota_code")
    public String getQuotaCode() {
        return quotaCode;
    }
@ -28,6 +30,7 @@ public class BaseDimensionQuota extends IdEntity {
        this.quotaCode = quotaCode;
    }
    @Column(name = "dimension_code")
    public String getDimensionCode() {
        return dimensionCode;
    }
@ -36,6 +39,7 @@ public class BaseDimensionQuota extends IdEntity {
        this.dimensionCode = dimensionCode;
    }
    @Column(name = "dict_sql")
    public String getDictSql() {
        return dictSql;
    }
@ -44,6 +48,7 @@ public class BaseDimensionQuota extends IdEntity {
        this.dictSql = dictSql;
    }
    @Column(name = "sort")
    public Integer getSort() {
        return sort;
    }
@ -52,6 +57,7 @@ public class BaseDimensionQuota extends IdEntity {
        this.sort = sort;
    }
    @Column(name = "convert_clazz")
    public String getConvertClazz() {
        return convertClazz;
    }
@ -60,6 +66,7 @@ public class BaseDimensionQuota extends IdEntity {
        this.convertClazz = convertClazz;
    }
    @Column(name = "key")
    public String getKey() {
        return key;
    }

+ 5 - 5
svr/svr-statistics-es/src/main/resources/application-test.yml

@ -21,14 +21,14 @@ spring:
    port: 6379 # Redis server port.
systemConfig:
  msg_push_server: http://127.0.0.1:3000
  msg_push_server: http://127.:3000
es:
  pwflag: 1 # 1需要密码,0不需要密码
  index: hlw_quota_test
  type: hlw_quota_test
  host: http://172.26.0.55:9000
  tHost: 172.26.0.55:9300
  host: http://172.26.0.112:9200
  tHost: 172.26.0.112:9300
  clusterName: jkzl
  securityUser: lion:jkzlehr
  user: lion
@ -36,10 +36,10 @@ es:
wlyy:
  im:
    databaseName: im_new
    databaseName: im_internet_hospital
quartz:
  name: schedulerFactoryBean_cwd
  name: schedulerFactoryBean_care
hibernate:
  dialect: org.hibernate.dialect.MySQL5Dialect