Browse Source

Merge branch 'dev' of http://192.168.1.220:10080/Amoy/patient-co-management into dev

yeshijie 7 years ago
parent
commit
431a51b9a1
22 changed files with 242 additions and 169 deletions
  1. 17 17
      patient-co-statistics-es/doc/sql/system_dict.sql
  2. 8 7
      patient-co-statistics-es/doc/sql/wlyy_dimension.sql
  3. 9 7
      patient-co-statistics-es/doc/sql/wlyy_dimension_quota.sql
  4. 39 40
      patient-co-statistics-es/doc/sql/wlyy_job_config.sql
  5. 6 1
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/quartz/SchedulerConfig.java
  6. 1 1
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/dao/QuartzJobConfigDao.java
  7. 5 5
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java
  8. 7 3
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/ConvertHelper.java
  9. 75 0
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/DiseaseLableConvert.java
  10. 5 2
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/HealthLableConvert.java
  11. 4 0
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/SimpleConvert.java
  12. 6 1
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/extract/ExtractHelper.java
  13. 2 2
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/save/es/ElasticFactory.java
  14. 7 10
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentMysqlToEsQuotaJob.java
  15. 22 16
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/MysqlToEsQuotaJob.java
  16. 1 1
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/model/job/QuartzJobConfig.java
  17. 11 11
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/service/JobService.java
  18. 3 3
      patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/util/QuartzHelper.java
  19. 8 36
      patient-co-statistics-es/src/main/resources/application.yml
  20. 2 1
      patient-co-statistics-es/src/main/resources/quartz.properties
  21. 4 4
      patient-co-statistics/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentDayAllQuotaJob.java
  22. 0 1
      patient-co-wlyy/src/main/java/com/yihu/wlyy/aop/UserFilterAOP.java

+ 17 - 17
patient-co-statistics-es/doc/sql/system_dict.sql

@ -4,20 +4,20 @@ INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`,
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''465'', ''RENEW_CHANGE_REASON'', ''4'', ''无获得感'', NULL, ''4'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''466'', ''RENEW_CHANGE_REASON'', ''5'', ''医生服务态度差'', NULL, ''5'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''467'', ''RENEW_CHANGE_REASON'', ''6'', ''其它'', NULL, ''6'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1000'', ''QUOTA_SEX_DICT'', ''1'', ''男'', NULL, ''1'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1001'', ''QUOTA_SEX_DICT'', ''2'', ''女'', NULL, ''2'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1003'', ''QUOTA_SEX_DICT'', ''3'', ''未知'', NULL, ''3'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1004'', ''QUOTA_AGE_DICT'', ''1'', ''0~6'', NULL, ''1'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1006'', ''QUOTA_AGE_DICT'', ''2'', ''7~18'', NULL, ''2'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1007'', ''QUOTA_AGE_DICT'', ''3'', ''19~30'', NULL, ''3'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1008'', ''QUOTA_AGE_DICT'', ''4'', ''31~50'', NULL, ''4'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1009'', ''QUOTA_AGE_DICT'', ''5'', ''51~65'', NULL, ''5'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1010'', ''QUOTA_AGE_DICT'', ''6'', ''>65'', NULL, ''6'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1011'', ''QUOTA_SIGN_EXPESEX'', ''0'', ''已扣费'', NULL, ''1'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1012'', ''QUOTA_SIGN_EXPESEX'', ''1'', ''已缴费'', NULL, ''2'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1013'', ''QUOTA_SIGN_EXPESEX'', ''2'', ''已退费'', NULL, ''3'');
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1014'', ''QUOTA_CONSULT_TIME'', ''1'', ''0~8'', NULL, NULL);
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1015'', ''QUOTA_CONSULT_TIME'', ''2'', ''8~12'', NULL, NULL);
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1016'', ''QUOTA_CONSULT_TIME'', ''3'', ''12~13'', NULL, NULL);
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1017'', ''QUOTA_CONSULT_TIME'', ''4'', ''13~18'', NULL, NULL);
INSERT INTO `data_for_stats`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES (''1018'', ''QUOTA_CONSULT_TIME'', ''5'', ''18~24'', NULL, NULL);
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1000', 'QUOTA_SEX_DICT', '1', '男', '', '1');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1001', 'QUOTA_SEX_DICT', '2', '女', '', '2');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1003', 'QUOTA_SEX_DICT', '3', '未知', '', '3');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1004', 'QUOTA_AGE_DICT', '1', '0~6', '', '1');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1006', 'QUOTA_AGE_DICT', '2', '7~18', '', '2');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1007', 'QUOTA_AGE_DICT', '3', '19~30', '', '3');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1008', 'QUOTA_AGE_DICT', '4', '31~50', '', '4');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1009', 'QUOTA_AGE_DICT', '5', '51~65', '', '5');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1010', 'QUOTA_AGE_DICT', '6', '>65', '', '6');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1011', 'QUOTA_SIGN_EXPESEX', '0', '已扣费', '', '1');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1012', 'QUOTA_SIGN_EXPESEX', '1', '已缴费', '', '2');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1013', 'QUOTA_SIGN_EXPESEX', '2', '已退费', '', '3');
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1014', 'QUOTA_CONSULT_TIME', '1', '0~8', '', NULL);
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1015', 'QUOTA_CONSULT_TIME', '2', '8~12', '', NULL);
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1016', 'QUOTA_CONSULT_TIME', '3', '12~13', '', NULL);
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1017', 'QUOTA_CONSULT_TIME', '4', '13~18', '', NULL);
INSERT INTO `wlyy_quota`.`system_dict` (`id`, `dict_name`, `code`, `value`, `py_code`, `sort`) VALUES ('1018', 'QUOTA_CONSULT_TIME', '5', '18~24', '', NULL);

+ 8 - 7
patient-co-statistics-es/doc/sql/wlyy_dimension.sql

@ -15,10 +15,11 @@ CREATE TABLE `wlyy_dimension` (
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('1', '1', '1', '患者性别维度', '1', '2017-07-11 09:42:33', NULL, NULL, '2017-06-02 14:19:25', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('2', '2', '2', '患者年龄维度', '1', '2017-07-11 09:42:34', NULL, NULL, '2017-06-02 14:19:27', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('3', '3', '3', '患者健康分布标签', '1', '2017-07-12 14:07:59', NULL, NULL, '2017-06-02 15:01:56', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('4', '4', '4', '签约扣费状态', '1', '2017-07-11 09:42:18', NULL, NULL, '2017-07-11 09:41:14', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('5', '5', '5', '签约服务类别', '1', '2017-07-12 12:05:40', NULL, NULL, '2017-07-11 09:41:44', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('6', '6', '6', '续签转签原因', '1', '2017-07-12 17:29:43', NULL, NULL, '2017-07-12 17:28:37', NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('7', '7', '7', '咨询回复时间分布', '1', '2017-07-12 17:29:45', NULL, NULL, '2017-07-12 17:28:39', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('1', '1', '1', '患者性别维度', '1', '2017-07-11 09:42:33', NULL, NULL, '2017-06-02 14:19:25', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('2', '2', '2', '患者年龄维度', '1', '2017-07-11 09:42:34', NULL, NULL, '2017-06-02 14:19:27', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('3', '3', '3', '患者健康分布标签', '1', '2017-07-12 14:07:59', NULL, NULL, '2017-06-02 15:01:56', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('4', '4', '4', '签约扣费状态', '1', '2017-07-11 09:42:18', NULL, NULL, '2017-07-11 09:41:14', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('5', '5', '5', '签约服务类别', '1', '2017-07-12 12:05:40', NULL, NULL, '2017-07-11 09:41:44', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('6', '6', '6', '续签转签原因', '1', '2017-07-12 17:29:43', NULL, NULL, '2017-07-12 17:28:37', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('7', '7', '7', '咨询回复时间分布', '1', '2017-07-12 17:29:45', NULL, NULL, '2017-07-12 17:28:39', NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension` (`id`, `code`, `type`, `name`, `status`, `create_time`, `create_user`, `create_user_name`, `update_time`, `update_user`, `update_user_name`, `remark`) VALUES ('8', '8', '8', '患者疾病标签', '1', '2017-07-19 16:53:44', NULL, NULL, '2017-07-19 16:53:46', NULL, NULL, NULL);

+ 9 - 7
patient-co-statistics-es/doc/sql/wlyy_dimension_quota.sql

@ -10,10 +10,12 @@ CREATE TABLE `wlyy_dimension_quota` (
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('1', '6', '1', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_SEX_DICT\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SexConvert', '1', 'Idcard');
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('2', '7', '3', NULL, NULL, NULL, NULL);
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('3', '8', '2', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_AGE_DICT\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.AgeConvert', '1', 'Idcard');
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('4', '30', '6', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'RENEW_CHANGE_REASON\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SimpleConvert', '1', 'slavekey1');
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('6', '36', '5', 'select DISTINCT code,name from wlyy_sign_dict where type=1', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SimpleConvert', '1', 'ServerType');
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('7', '15', '3', 'select label_code code,label_name name from wlyy_sign_patient_label where label_type=\'2\' and status=1', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SimpleConvert', '1', 'HealthLable');
INSERT INTO `wlyy`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('8', '24', '7', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_CONSULT_TIME\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.ConsultTimeConvert', '1', 'slavekey1');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('1', '6', '1', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_SEX_DICT\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SexConvert', '1', 'Idcard');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('2', '7', '3', NULL, NULL, NULL, NULL);
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('3', '8', '2', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_AGE_DICT\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.AgeConvert', '1', 'Idcard');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('4', '30', '6', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'RENEW_CHANGE_REASON\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SimpleConvert', '1', 'SlaveKey1');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('6', '36', '5', 'select DISTINCT code,name from wlyy_sign_dict where type=1', 'com.yihu.wlyy.statistics.etl.convert.wlyy.SimpleConvert', '1', 'ServerType');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('7', '15', '3', 'select label_code code,label_name name from wlyy_sign_patient_label where label_type=\'2\' and status=1', 'com.yihu.wlyy.statistics.etl.convert.wlyy.HealthLableConvert', '1', '');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('8', '24', '7', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_CONSULT_TIME\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.ConsultTimeConvert', '1', 'SlaveKey1');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('9', '12', '2', 'select s.code code,s.value name from system_dict s where  s.dict_name=\'QUOTA_AGE_DICT\'', 'com.yihu.wlyy.statistics.etl.convert.wlyy.AgeConvert', '1', 'Idcard');
INSERT INTO `wlyy_quota`.`wlyy_dimension_quota` (`id`, `quota_code`, `dimension_code`, `dict_sql`, `convert_clazz`, `sort`, `key`) VALUES ('10', '12', '8', 'select label_code code,label_name name from wlyy_sign_patient_label where label_type=\'3\' and status=1', 'com.yihu.wlyy.statistics.etl.convert.wlyy.DiseaseLableConvert', '2', NULL);

File diff suppressed because it is too large
+ 39 - 40
patient-co-statistics-es/doc/sql/wlyy_job_config.sql


+ 6 - 1
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/config/quartz/SchedulerConfig.java

@ -1,6 +1,7 @@
package com.yihu.wlyy.statistics.config.quartz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@ -23,12 +24,16 @@ public class SchedulerConfig {
    private JobFactory jobFactory;
    @Autowired
    private DataSource dataSource;
    @Value("${quartz.name}")
    private String quartzName;
    @Bean
    SchedulerFactoryBean schedulerFactoryBean_cwd() throws IOException {
    SchedulerFactoryBean schedulerFactoryBean() throws IOException {
        SchedulerFactoryBean bean = new SchedulerFactoryBean();
        bean.setJobFactory(jobFactory);
        bean.setApplicationContext(this.applicationContext);
        bean.setOverwriteExistingJobs(true);
        bean.setBeanName(quartzName);
        bean.setStartupDelay(20);// 延时启动
        bean.setAutoStartup(true);
        bean.setDataSource(dataSource);

+ 1 - 1
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/dao/QuartzJobConfigDao.java

@ -18,7 +18,7 @@ public interface QuartzJobConfigDao extends PagingAndSortingRepository<QuartzJob
    @Query(" FROM QuartzJobConfig a WHERE a.status=?1 and a.del='1'")
    List<QuartzJobConfig> findByAll(String s);
    @Query(" FROM QuartzJobConfig a WHERE  a.del='1' order by a.id asc")
    @Query(" FROM QuartzJobConfig a WHERE  a.del='1' and a.id !=11 order by a.id asc")
    List<QuartzJobConfig> findByIds();
    @Query(" FROM QuartzJobConfig a WHERE a.id=?1 and a.del='1'")

+ 5 - 5
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/compute/ComputeHelper.java

@ -30,18 +30,18 @@ public class ComputeHelper {
    /**
     * @param dataModels      过滤之后的数据
     * @param dimensionQuotas 指标的维度
     * @param wlyyJobConfigVO
     * @param wlyyJobCongId
     * @param endTime
     * @return
     */
    public List<SaveModel> compute(List<DataModel> dataModels, List<WlyyDimensionQuota> dimensionQuotas, WlyyJobConfigVO wlyyJobConfigVO, String endTime, String timeLevel) {
    public List<SaveModel> compute(List<DataModel> dataModels, List<WlyyDimensionQuota> dimensionQuotas, String wlyyJobCongId, String endTime, String timeLevel) {
        try {
            //得到全部团队
            List<AdminTeam> teams = findAllTeam();
            //计算数据 返回map key 根据团队和维度拼凑在map中的key   1-2-1  如果维度是长度是0返回团队id 1
            Map<String, List<DataModel>> computeMap = computeDataModel(dimensionQuotas, dataModels);
            //初始化map并且设置统计出来的数目
            List<SaveModel> savemodels = initAndSetResult(teams, dimensionQuotas, computeMap, wlyyJobConfigVO, endTime, timeLevel);
            List<SaveModel> savemodels = initAndSetResult(teams, dimensionQuotas, computeMap, wlyyJobCongId, endTime, timeLevel);
            return savemodels;
        } catch (Exception e) {
@ -127,7 +127,7 @@ public class ComputeHelper {
    /**
     * 初始化map
     */
    private List<SaveModel> initAndSetResult(List<AdminTeam> teams, List<WlyyDimensionQuota> dimensionQuotas, Map<String, List<DataModel>> countMap, WlyyJobConfigVO wlyyJobConfigVO, String endTime, String timeLevel) throws Exception {
    private List<SaveModel> initAndSetResult(List<AdminTeam> teams, List<WlyyDimensionQuota> dimensionQuotas, Map<String, List<DataModel>> countMap, String wlyyJobCongId, String endTime, String timeLevel) throws Exception {
        List<SaveModel> returnList = new ArrayList<>();
        Map<String, SaveModel> lastMaps = new HashMap<>();
@ -150,7 +150,7 @@ public class ComputeHelper {
                saveModel.setHospitalName(one.getOrgName());
                saveModel.setTeam(one.getId().toString());
                saveModel.setTeamName(one.getName());
                saveModel.setQuotaCode(wlyyJobConfigVO.getId());
                saveModel.setQuotaCode(wlyyJobCongId);
                saveModel.setCreateTime(new Date());
                saveModel.setTimeLevel(timeLevel);
                saveModel.setAreaLevel("5");//团队

+ 7 - 3
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/ConvertHelper.java

@ -27,24 +27,28 @@ public class ConvertHelper {
    private WlyyDimensionQuotaDao wlyyDimensionQuotaDao;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 把每个维度的key清洗到对应的slaveKey中
     * @param filterModel  过滤之后的model
     *
     * @param filterModel     过滤之后的model
     * @param dimensionQuotas 维度的列表
     * @return
     * @throws Exception
     */
    public FilterModel convert(FilterModel filterModel, List<WlyyDimensionQuota> dimensionQuotas) throws Exception {
        List<DataModel> data = filterModel.getData();
        for (int i = 0; i < dimensionQuotas.size(); i++) {
            WlyyDimensionQuota temp = dimensionQuotas.get(i);
            String clazz = temp.getConvertClazz();
            if (!StringUtils.isEmpty(clazz)) {
                //反射出对象并且调用convert方法去转换对应的slavekey
                Object obj = Class.forName(clazz).newInstance();
                Method method = obj.getClass().getMethod("convert",JdbcTemplate.class, List.class,String.class,WlyyDimensionQuota.class);
                method.invoke(obj,jdbcTemplate, filterModel.getData(), String.valueOf(i + 1),temp);
                Method method = obj.getClass().getMethod("convert", JdbcTemplate.class, List.class, String.class, WlyyDimensionQuota.class);
                data = (List<DataModel>) method.invoke(obj, jdbcTemplate, data, String.valueOf(i + 1), temp);
            }
        }
        filterModel.setData(data);
        return filterModel;
    }
}

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

@ -0,0 +1,75 @@
package com.yihu.wlyy.statistics.etl.convert.wlyy;
import com.yihu.wlyy.statistics.etl.convert.Convert;
import com.yihu.wlyy.statistics.etl.convert.wlyy.model.HealthLable;
import com.yihu.wlyy.statistics.model.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.statistics.util.IdCardUtil;
import com.yihu.wlyy.statistics.vo.DataModel;
import org.springframework.beans.BeanUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2017/6/5.
 */
public class DiseaseLableConvert implements Convert {
    /**
     * @param oneList    数据
     * @param slaveLevel 从1开始
     * @return
     */
    public List<DataModel> convert(JdbcTemplate jdbcTemplate, List<DataModel> oneList, String slaveLevel, WlyyDimensionQuota temp) {
        List<DataModel> returnList = new ArrayList<>();
        //得到全部的服务标签
        String sql = "SELECT " +
                "  spli.label AS health_lable, " +
                "  spli.patient " +
                "FROM " +
                "  wlyy_sign_patient_label_info spli " +
                "WHERE " +
                "  spli.label_type = '3' " +
                "AND spli. STATUS = '1'";
        List<HealthLable> healthLables = jdbcTemplate.query(sql, new BeanPropertyRowMapper(HealthLable.class));
        //疾病标签可能有多个 转mapkey是患者code value是服务标签的code
        Map<String, List<String>> healthLablesMap = new HashMap<>();
        healthLables.stream().forEach(one -> {
            List<String> value = new ArrayList<String>();
            if (healthLablesMap.containsKey(one.getPatient())) {
                value = healthLablesMap.get(one.getPatient());
            }
            value.add(one.getHealthLable());
            healthLablesMap.put(one.getPatient(),value);
        });
        //给DataModel复制维度数据
        oneList.stream().forEach(one -> {
            try {
                //如果没有标签信息默认在未分组
                List<String> value = healthLablesMap.get(one.getPatient());
                if(value==null||value.size()==0){
                    value=new ArrayList<String>();
                    value.add("0");
                }
                //如果
                for (int i = 0; i < value.size(); i++) {
                    DataModel dataModelTemp = new DataModel();
                    BeanUtils.copyProperties(one, dataModelTemp);
                    DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(dataModelTemp, value.get(i));
                    returnList.add(dataModelTemp);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
        return returnList;
    }
}

+ 5 - 2
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/convert/wlyy/HealthLableConvert.java

@ -8,6 +8,7 @@ import com.yihu.wlyy.statistics.util.IdCardUtil;
import com.yihu.wlyy.statistics.vo.DataModel;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
@ -44,8 +45,10 @@ public class HealthLableConvert implements Convert {
        oneList.stream().forEach(one -> {
            try {
                Object value = healthLablesMap.get(one.getPatient());
                String sex = IdCardUtil.getSexForIdcard(String.valueOf(value));
                DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(one, sex);
                if (StringUtils.isEmpty(value)) {
                    value="0";
                }
                DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(one, value);
            } catch (Exception e) {
                e.printStackTrace();
            }

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

@ -6,6 +6,7 @@ import com.yihu.wlyy.statistics.model.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.statistics.util.IdCardUtil;
import com.yihu.wlyy.statistics.vo.DataModel;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.StringUtils;
import java.util.List;
@ -23,6 +24,9 @@ public class SimpleConvert implements Convert {
        oneList.stream().forEach(one -> {
            try {
                Object value = DataModel.class.getMethod("get" + temp.getKey()).invoke(one);
                if(StringUtils.isEmpty(value)){
                    value="0";
                }
                DataModel.class.getMethod("setSlaveKey" + slaveLevel, String.class).invoke(one, value.toString());
            } catch (Exception e) {
                e.printStackTrace();

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

@ -1,6 +1,7 @@
package com.yihu.wlyy.statistics.etl.extract;
import com.yihu.wlyy.statistics.etl.extract.db.DBExtract;
import com.yihu.wlyy.statistics.model.job.QuartzJobConfig;
import com.yihu.wlyy.statistics.util.SpringUtil;
import com.yihu.wlyy.statistics.vo.DataModel;
import com.yihu.wlyy.statistics.vo.WlyyJobConfigVO;
@ -44,7 +45,7 @@ public class ExtractHelper {
     * @return
     * @throws Exception
     */
    public List<DataModel> extractData(WlyyJobConfigVO wlyyJobConfigVO, String startTime, String endTime, String year, String timeLevel) throws Exception {
    public List<DataModel> extractData(QuartzJobConfig wlyyJobConfigVO, String startTime, String endTime, String year, String timeLevel) throws Exception {
        try {
            this.startTime = startTime;
            this.endTime = endTime;
@ -56,6 +57,10 @@ public class ExtractHelper {
            } else {
                timeSql = wlyyJobConfigVO.getSqlDay();
            }
            //如果为null 初始化
            if(StringUtils.isEmpty(timeSql)){
                timeSql="";
            }
            //设置时间
            String sql = initSql(wlyyJobConfigVO.getSql() + "  " + timeSql, startTime, endTime, year);
            String sqlCount = initSql(wlyyJobConfigVO.getSqlCount() + "  " + timeSql, startTime, endTime, year);

+ 2 - 2
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/etl/save/es/ElasticFactory.java

@ -76,8 +76,8 @@ public class ElasticFactory {
    private synchronized void initTranClient() throws UnknownHostException {
        if (transportClient == null) {
            Settings settings = Settings.settingsBuilder()
                    .put("client.transport.sniff", true)
                    .put("cluster.name", StringUtils.isEmpty(clusterName) ? "jkzl" : clusterName)
                    .put("client.transport.sniff", true)//开启嗅探功能
                    .put("cluster.name", StringUtils.isEmpty(clusterName) ? "jkzl" : clusterName)//默认集群名字是jkzl
                    .build();
            transportClient = TransportClient.builder().settings(settings).build()

+ 7 - 10
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/CurrentMysqlToEsQuotaJob.java

@ -180,7 +180,8 @@ public class CurrentMysqlToEsQuotaJob implements Job {
                    new BoolQueryBuilder()
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("timeLevel", timeLevel))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))).size(10000);
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate)))
                    .size(50000);
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).addType(esType)
                    .build();
@ -243,9 +244,7 @@ public class CurrentMysqlToEsQuotaJob implements Job {
     */
    private List<SaveModel> compute(List<DataModel> dataModels, List<WlyyDimensionQuota> dimensionQuotas, String timeLevel, QuartzJobConfig quartzJobConfig) {
        try {
            WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
            BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
            return SpringUtil.getBean(ComputeHelper.class).compute(dataModels, dimensionQuotas, wlyyJobConfigVO, endTime, timeLevel);
            return SpringUtil.getBean(ComputeHelper.class).compute(dataModels, dimensionQuotas, quartzJobConfig.getId(), endTime, timeLevel);
        } catch (Exception e) {
            logger.error("compute error:" + e.getMessage());
        }
@ -274,21 +273,19 @@ public class CurrentMysqlToEsQuotaJob implements Job {
     */
    private List<DataModel> extract(QuartzJobConfig quartzJobConfig) {
        try {
            WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
            BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
            List<DataModel> dataModels = null;
            //先判断指标是否支持缓存
            if (StringUtils.isEmpty(wlyyJobConfigVO.getCacheKey())) {
            if (StringUtils.isEmpty(quartzJobConfig.getCacheKey())) {
                //不支持直接去数据库拿
                dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(wlyyJobConfigVO, startTime, endTime, year, timeLevel);
                dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(quartzJobConfig, startTime, endTime, year, timeLevel);
            } else {
                //缓存的key 是 时间+timelevel+key
                StringBuffer bu = new StringBuffer(DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + "-" + timeLevel + wlyyJobConfigVO.getCacheKey());
                StringBuffer bu = new StringBuffer(DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + "-" + timeLevel + quartzJobConfig.getCacheKey());
                //支持的话判断缓存有没有值
                dataModels = Cache.getCache(bu.toString());
                if (dataModels == null) {
                    //如果缓存是空的那么直接数据库拿 在放入缓存
                    dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(wlyyJobConfigVO, startTime, endTime, year, timeLevel);
                    dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(quartzJobConfig, startTime, endTime, year, timeLevel);
                    Cache.addCache(bu.toString(), dataModels);
                }
            }

+ 22 - 16
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/job/business/MysqlToEsQuotaJob.java

@ -1,5 +1,6 @@
package com.yihu.wlyy.statistics.job.business;
import com.yihu.wlyy.statistics.dao.QuartzJobConfigDao;
import com.yihu.wlyy.statistics.dao.QuartzJobLogDao;
import com.yihu.wlyy.statistics.dao.WlyyDimensionQuotaDao;
import com.yihu.wlyy.statistics.etl.cache.Cache;
@ -10,6 +11,7 @@ import com.yihu.wlyy.statistics.etl.filter.FilterHelper;
import com.yihu.wlyy.statistics.etl.save.SaveHelper;
import com.yihu.wlyy.statistics.etl.save.es.ElasticFactory;
import com.yihu.wlyy.statistics.model.dimension.WlyyDimensionQuota;
import com.yihu.wlyy.statistics.model.job.QuartzJobConfig;
import com.yihu.wlyy.statistics.model.job.QuartzJobLog;
import com.yihu.wlyy.statistics.util.DateUtil;
import com.yihu.wlyy.statistics.util.SpringUtil;
@ -54,7 +56,8 @@ public class MysqlToEsQuotaJob implements Job {
    private Logger logger = LoggerFactory.getLogger(MysqlToEsQuotaJob.class);
    private WlyyJobConfigVO wlyyJobConfigVO;//指标对象
    private String wlyyJobCongId;//指标对象
    private QuartzJobConfig quartzJobConfig;//指标对象
    private String endTime;//结束时间
    private String startTime;//开始时间
    private String year;//要统计的年份
@ -65,6 +68,8 @@ public class MysqlToEsQuotaJob implements Job {
    private QuartzJobLogDao quartzJobLogDao;//执行日志Dao
    @Autowired
    private WlyyDimensionQuotaDao dimensionQuotaDao;
    @Autowired
    private QuartzJobConfigDao quartzJobConfigDao;
    @Autowired
    private ElasticFactory elasticFactory;
@ -115,7 +120,7 @@ public class MysqlToEsQuotaJob implements Job {
        if ("2".equals(timeLevel)) {
            //按年度到达量
            startTime = this.year + "-06-30 17:00:00";
        }else{
        } 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
@ -126,8 +131,8 @@ public class MysqlToEsQuotaJob implements Job {
        this.quotaDate = DateUtil.strToDate(endTime, "yyyy-MM-dd");
        this.wlyyJobConfigVO = (WlyyJobConfigVO) map.get("jobConfig");
        this.wlyyJobCongId = map.getString("jobConfig");
        this.quartzJobConfig=quartzJobConfigDao.findById(wlyyJobCongId);
    }
    /**
@ -135,19 +140,19 @@ public class MysqlToEsQuotaJob implements Job {
     */
    private void computequota() {
        try {
            logger.info("========================quotaCode:" + wlyyJobConfigVO.getId() + ","+DateUtil.dateToStr(quotaDate, "yyyy-MM-dd")+",timeLevel:"+timeLevel+" start========================");
            logger.info("========================quotaCode:" + wlyyJobCongId + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + ",timeLevel:" + timeLevel + " start========================");
            QuartzJobLog tjQuotaLog = new QuartzJobLog();
            tjQuotaLog.setJobId(wlyyJobConfigVO.getId());
            tjQuotaLog.setJobId(wlyyJobCongId);
            tjQuotaLog.setJobStartTime(new Date());
            // 0 删除这天的数据
            deleteData(quotaDate, wlyyJobConfigVO.getId(), timeLevel);
            deleteData(quotaDate, wlyyJobCongId, timeLevel);
            //1..抽取数据 如果是累加就是 List<DataModel>  如果是相除 Map<String,List<DataModel>>
            List<DataModel> dataModels = extract();
            //2..根据规则过滤数据
            FilterModel filterModel = filter(dataModels);
            //得到该指标的维度
            List<WlyyDimensionQuota> dimensionQuotas = dimensionQuotaDao.findDimensionQuotasByQuotaCode(wlyyJobConfigVO.getId());
            List<WlyyDimensionQuota> dimensionQuotas = dimensionQuotaDao.findDimensionQuotasByQuotaCode(wlyyJobCongId);
            //2.1.从维度的key转换
            if (dimensionQuotas != null && dimensionQuotas.size() > 0) {
                filterModel = convert(filterModel, dimensionQuotas);
@ -161,7 +166,7 @@ public class MysqlToEsQuotaJob implements Job {
            tjQuotaLog.setJobEndTime(new Date());
            tjQuotaLog.setJobContent(JSONArray.fromObject(filterModel.getErrorModels()).toString());
            saveLog(tjQuotaLog);
            logger.info("========================quotaCode:" + wlyyJobConfigVO.getId() + ","+DateUtil.dateToStr(quotaDate, "yyyy-MM-dd")+" end========================");
            logger.info("========================quotaCode:" + wlyyJobCongId + "," + DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + " end========================");
        } catch (Exception e) {
            e.printStackTrace();
        }
@ -183,7 +188,8 @@ public class MysqlToEsQuotaJob implements Job {
                    new BoolQueryBuilder()
                            .must(QueryBuilders.matchQuery("quotaCode", quotaCode))
                            .must(QueryBuilders.matchQuery("timeLevel", timeLevel))
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))).size(10000);//一次取10000条
                            .must(QueryBuilders.matchQuery("quotaDate", quotaDate))
            ).size(50000);//一次取10000条
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(esIndex).addType(esType)
                    .build();
@ -240,7 +246,7 @@ public class MysqlToEsQuotaJob implements Job {
     */
    private List<SaveModel> compute(List<DataModel> dataModels, List<WlyyDimensionQuota> dimensionQuotas, String timeLevel) {
        try {
            return SpringUtil.getBean(ComputeHelper.class).compute(dataModels, dimensionQuotas, wlyyJobConfigVO, endTime, timeLevel);
            return SpringUtil.getBean(ComputeHelper.class).compute(dataModels, dimensionQuotas, wlyyJobCongId, endTime, timeLevel);
        } catch (Exception e) {
            logger.error("compute error:" + e.getMessage());
        }
@ -273,21 +279,21 @@ public class MysqlToEsQuotaJob implements Job {
        try {
            List<DataModel> dataModels = null;
            //先判断指标是否支持缓存
            if (StringUtils.isEmpty(wlyyJobConfigVO.getCacheKey())) {
            if (StringUtils.isEmpty(quartzJobConfig.getCacheKey())) {
                //不支持直接去数据库拿
                dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(wlyyJobConfigVO, startTime, endTime, year, timeLevel);
                dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(quartzJobConfig, startTime, endTime, year, timeLevel);
            } else {
                //缓存的key 是 时间+timelevel+key
                StringBuffer bu = new StringBuffer(DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + "-" + timeLevel + "-" + wlyyJobConfigVO.getCacheKey());
                StringBuffer bu = new StringBuffer(DateUtil.dateToStr(quotaDate, "yyyy-MM-dd") + "-" + timeLevel + "-" +quartzJobConfig.getCacheKey());
                //支持的话判断缓存有没有值
                dataModels = Cache.getCache(bu.toString());
                if (dataModels == null) {
                    //如果缓存是空的那么直接数据库拿 在放入缓存
                    dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(wlyyJobConfigVO, startTime, endTime, year, timeLevel);
                    dataModels = SpringUtil.getBean(ExtractHelper.class).extractData(quartzJobConfig, startTime, endTime, year, timeLevel);
                    Cache.addCache(bu.toString(), dataModels);
                }
            }
            logger.info("quotaCode:" + wlyyJobConfigVO.getId() + ",size:" + dataModels.size());
            logger.info("quotaCode:" + wlyyJobCongId + ",size:" + dataModels.size());
            return dataModels;
        } catch (Exception e) {
            logger.error("extract error:" + e.getMessage());

+ 1 - 1
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/model/job/QuartzJobConfig.java

@ -8,7 +8,7 @@ import javax.persistence.*;
 * 计划任务
 */
@Entity
@Table(name = "wlyy_job_config")
@Table(name = "wlyy_job_config_cwd")
public class QuartzJobConfig implements java.io.Serializable {
	private String id;

+ 11 - 11
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/service/JobService.java

@ -118,8 +118,8 @@ public class JobService {
        WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
        BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("jobConfig", wlyyJobConfigVO);
        Map<String, String> params = new HashMap<String, String>();
        params.put("jobConfig", wlyyJobConfigVO.getId());
        for (int i = 1; i <= 2; i++) {
            params.put("timeLevel", i + "");
            //往quartz框架添加任务
@ -137,8 +137,8 @@ public class JobService {
            WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
            BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("jobConfig", wlyyJobConfigVO);
            Map<String, String> params = new HashMap<String, String>();
            params.put("jobConfig", wlyyJobConfigVO.getId());
            for (int i = 1; i <= day; i++) {
                for (int j = 1; j <= 2; j++) {
                    params.put("timeLevel", j + "");
@ -179,8 +179,8 @@ public class JobService {
            WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
            BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("jobConfig", wlyyJobConfigVO);
            Map<String, String> params = new HashMap<String, String>();
            params.put("jobConfig", wlyyJobConfigVO.getId());
            //往quartz框架添加任务
            params.put("startTime", daybefore);
            params.put("endTime", yesterday);
@ -224,8 +224,8 @@ public class JobService {
        WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
        BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("jobConfig", wlyyJobConfigVO);
        Map<String, String> params = new HashMap<String, String>();
        params.put("jobConfig", wlyyJobConfigVO.getId());
        //往quartz框架添加任务
        params.put("startTime", daybefore);
@ -254,8 +254,8 @@ public class JobService {
        WlyyJobConfigVO wlyyJobConfigVO = new WlyyJobConfigVO();
        BeanUtils.copyProperties(quartzJobConfig, wlyyJobConfigVO);
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("jobConfig", wlyyJobConfigVO);
        Map<String, String> params = new HashMap<String, String>();
        params.put("jobConfig", wlyyJobConfigVO.getId());
        for (int i = 1; i <= day; i++) {
            //往quartz框架添加任务
            params.put("startTime", getYesterday(0 - i - 1));
@ -361,7 +361,7 @@ public class JobService {
        calendar.add(calendar.DATE, 1);//把日期往后增加一天.整数往后推,负数往前移动
        Date nowDate = calendar.getTime();   //这个时间就是日期往后推一天的结果
        String yesterday = new SimpleDateFormat("yyyy-MM-dd").format(nowDate.getTime());
        Map<String, Object> params = new HashMap<String, Object>();
        Map<String, String> params = new HashMap<String, String>();
        //往quartz框架添加任务
        params.put("now", yesterday);
        params.put("yesterday", day);

+ 3 - 3
patient-co-statistics-es/src/main/java/com/yihu/wlyy/statistics/util/QuartzHelper.java

@ -76,7 +76,7 @@ public class QuartzHelper {
     * @param params
     * @throws Exception
     */
    public void startNow(Class jobClass, String id, Map<String, Object> params) throws Exception {
    public void startNow(Class jobClass, String id, Map<String, String> params) throws Exception {
        startAt(new Date(), jobClass, id, params);
    }
@ -89,14 +89,14 @@ public class QuartzHelper {
     * @param params
     * @throws Exception
     */
    public void startAt(Date time, Class jobClass, String id, Map<String, Object> params) throws Exception {
    public void startAt(Date time, Class jobClass, String id, Map<String, String> params) throws Exception {
        JobDetail job = JobBuilder.newJob(jobClass).
                withIdentity("job-id:" + id, "job-group:" + id)
                .build();
        JobDataMap jobDataMap = job.getJobDataMap();
        if(null != params) jobDataMap.putAll(params);
        SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger-id:" + id, "group-group:" + id)
        SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger-id:" + id, "trigger-group:" + id)
                .startAt(time)
                .withSchedule(simpleSchedule().withIntervalInSeconds(10).withRepeatCount(0).withMisfireHandlingInstructionFireNow())
                .build();

+ 8 - 36
patient-co-statistics-es/src/main/resources/application.yml

@ -153,6 +153,9 @@ wlyy:
  im:
    databaseName: im_new
quartz:
  name: schedulerFactoryBean_test
---
spring:
@ -200,6 +203,9 @@ wlyy:
  im:
    databaseName: im
quartz:
  name: schedulerFactoryBean_prod
---
spring:
@ -257,40 +263,6 @@ wlyy:
  im:
    databaseName: im_new
---
  spring:
    profiles: lxx
    datasource:
      primaryReadWrite: #只读库 主库
        url: jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
        username: root
        password: 123456
      primaryRead: #只读库 从库
        url: jdbc:mysql://172.19.103.77/wlyy?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
        username: root
        password: 123456
      im: #im库
        url: jdbc:mysql://172.19.103.77/ichat?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
        username: root
        password: 123456
    redis:
      host: 172.19.103.88  # Redis server host.
      port: 6379 # Redis server port.
    followupMessage:
      cron : 0 5 0 * * ?
      jobId : FOLLOWUP_PLAN_JOB
  fv:
    jdbc:
      driver: com.mysql.jdbc.Driver
      url: jdbc:mysql://172.19.103.77/fv?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
      username: root
      password: 123456
quartz:
  name: schedulerFactoryBean_dev
  systemConfig:
    msg_push_server: http://172.19.103.76:3000

+ 2 - 1
patient-co-statistics-es/src/main/resources/quartz.properties

@ -7,7 +7,7 @@ org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
 
org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount: 20
org.quartz.threadPool.threadPriority: 5
@ -23,6 +23,7 @@ org.quartz.jobStore.misfireThreshold: 60000
# org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
# Configure JobStore Cluster
org.quartz.jobStore.class:org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.driverDelegateClass:org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#datasource׺
org.quartz.jobStore.tablePrefix:QRTZ_

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

@ -1656,7 +1656,7 @@ public class CurrentDayAllQuotaJob implements Job {
        if ("city_town_SQL".equals(code)) {
            //统计市级各区
            String city_town_SQL = "SELECT t.code,t.`name` ,ifnull(ROUND(AVG(s.score),1),80) as avgCount " +
            String city_town_SQL = "SELECT t.code,t.`name` ,ifnull(ROUND(AVG(s.score),1),0) as avgCount " +
                    " FROM wlyy_doctor d " +
                    " RIGHT JOIN dm_town t on t.code=d.town " +
                    " LEFT JOIN wlyy_evaluate_score s ON d.code = s.doctor " +
@ -1664,7 +1664,7 @@ public class CurrentDayAllQuotaJob implements Job {
            return city_town_SQL;
        } else if ("city_hos_SQL".equals(code)) {
            //统计市级各社区
            String city_hos_SQL = "SELECT  t.code,t.`name`,ifnull(ROUND(AVG(s.score),1),80) as avgCount " +
            String city_hos_SQL = "SELECT  t.code,t.`name`,ifnull(ROUND(AVG(s.score),1),0) as avgCount " +
                    " FROM wlyy_doctor d " +
                    " RIGHT JOIN dm_hospital t on t.code = d.hospital " +
                    " LEFT JOIN wlyy_evaluate_score s ON d.code = s.doctor " +
@ -1672,7 +1672,7 @@ public class CurrentDayAllQuotaJob implements Job {
            return city_hos_SQL;
        } else if ("town_hos_SQL".equals(code)) {
            //统计区级各社区
            String town_hos_SQL = "SELECT  t.code,t.`name`,ifnull(ROUND(AVG(s.score),1),80) as avgCount " +
            String town_hos_SQL = "SELECT  t.code,t.`name`,ifnull(ROUND(AVG(s.score),1),0) as avgCount " +
                    " FROM wlyy_doctor d " +
                    " RIGHT JOIN dm_hospital t on t.code = d.hospital " +
                    " LEFT JOIN wlyy_evaluate_score s ON d.code = s.doctor " +
@ -1680,7 +1680,7 @@ public class CurrentDayAllQuotaJob implements Job {
            return town_hos_SQL;
        } else if ("team_SQL".equals(code)) {
            //查找所有团队
            String team_SQL = "SELECT  t.id,t.`name` ,d.hospital,ifnull(ROUND(AVG(s.score),1),80) as avgCount " +
            String team_SQL = "SELECT  t.id,t.`name` ,d.hospital,ifnull(ROUND(AVG(s.score),1),0) as avgCount " +
                    " FROM wlyy_doctor d " +
                    " RIGHT JOIN wlyy_admin_team t on t.leader_code = d.code " +
                    " LEFT JOIN wlyy_evaluate_score s ON d.code = s.doctor " +

+ 0 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/aop/UserFilterAOP.java

@ -54,5 +54,4 @@ public class UserFilterAOP {
//			}
//		}
//	}
}