Browse Source

代码修改

LAPTOP-KB9HII50\70708 2 years ago
parent
commit
f6d776f4af

+ 5 - 3
common/common-entity/src/main/java/com/yihu/jw/entity/ehr/quota/TjQuota.java

@ -3,8 +3,10 @@ package com.yihu.jw.entity.ehr.quota;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yihu.jw.entity.IdEntity;
import javax.persistence.*;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
@ -28,7 +30,7 @@ public class TjQuota extends IdEntity {
    private String updateUser;
    private String updateUserName;
    private Integer status;
    private Integer dataLevel;
    private Integer dataLevel;//1 数据增量 2数据到达量 3或为空 增量和到达量同时存储
    private String remark;
    private Integer quotaType;
    private String metadataCode;

+ 21 - 0
common/common-util/src/main/java/com/yihu/jw/util/date/DateUtil.java

@ -1092,6 +1092,27 @@ public class DateUtil {
        return dateFormatter.format(localDate);
    }
    /**
     * 本年第一天
     * @return
     */
    public static String getFirstDayOfYear(){
        LocalDate localDate = LocalDate.now().with(TemporalAdjusters.firstDayOfYear());
        return dateFormatter.format(localDate);
    }
    public static String getFirstDayOfYear(Date date){
        LocalDate localDate = dateToLocalDate(date).with(TemporalAdjusters.firstDayOfYear());
        return dateFormatter.format(localDate);
    }
    /**
     * 本年最后一天
     */
    public static String getLastDayOfYearThisDate(Date date){
        LocalDate localDate = dateToLocalDate(date).with(TemporalAdjusters.lastDayOfYear());
        return dateFormatter.format(localDate);
    }
    /**
     * 根据日期对象返回星期几
     */

+ 0 - 23
svr/svr-quota/src/main/java/com/yihu/jw/quota/controller/JobController.java

@ -1,6 +1,5 @@
package com.yihu.jw.quota.controller;
import com.yihu.jw.elasticsearch.ElasticSearch7Util;
import com.yihu.jw.quota.constants.ServiceApi;
import com.yihu.jw.quota.service.job.JobService;
import io.swagger.annotations.Api;
@ -13,10 +12,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * 指标任务控制
@ -30,24 +25,6 @@ public class JobController extends BaseController {
    @Autowired
    private JobService jobService;
    @Resource
    private ElasticSearch7Util elasticSearch7Util;
    @ApiOperation(value = "初始执行指标")
    @RequestMapping(value = "getEsBySql", method = RequestMethod.GET)
    public boolean getEsBySql(
            @ApiParam(name = "id", value = "指标ID", required = true)
            @RequestParam(value = "id", required = true) Long id) {
        try {
            String sql = "select * from hlw_quota_test";
            List<Map<String,Object>> list = elasticSearch7Util.executeSQL(sql);
            return true;
        } catch (Exception e) {
            error(e);
            invalidUserException(e, -1, "初始执行指标发生异常:" + e.getMessage());
            return false;
        }
    }
    /**
     * 初始执行指标

+ 3 - 3
svr/svr-quota/src/main/java/com/yihu/jw/quota/etl/extract/ExtractHelper.java

@ -72,7 +72,7 @@ public class ExtractHelper {
     * @return
     * @throws Exception
     */
    public List<SaveModel> extractData(QuotaVo quotaVo, String startTime, String endTime,String timeLevel,String saasid) throws Exception {
    public List<SaveModel> extractData(QuotaVo quotaVo, String startTime, String endTime,String timeLevel,String dataLevel,String saasid) throws Exception {
        try {
            TjQuotaDataSource quotaDataSource = dataSourceService.findSourceByQuotaCode(quotaVo.getCode());
            if (quotaDataSource == null) {
@ -112,14 +112,14 @@ public class ExtractHelper {
                if( (!StringUtils.isEmpty(esConfig.getEspecialType())) && esConfig.getEspecialType().equals("orgHealthCategory")){
                    return esExtract.extractOrgHealthCategory(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel,saasid, quotaVo,esConfig);
                }else{
                    return esExtract.extract(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel,saasid, quotaVo,esConfig);
                    return esExtract.extract(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel,dataLevel,saasid, quotaVo,esConfig);
                }
            }else if( TjDataSource.type_solr.equals(quotaDataSource.getCode()) ){
                // 抽取 solr 统计值
//                return  solrExtract.extract(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel, quotaVo,esConfig);
            }else if( TjDataSource.type_mysql.equals(quotaDataSource.getCode()) ){
                // 抽取 mysql 统计值
                return  SpringUtil.getBean(MysqlExtract.class).extract(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel, quotaVo,esConfig);
                return  SpringUtil.getBean(MysqlExtract.class).extract(tjQuotaDimensionMains,tjQuotaDimensionSlaves,startTime,endTime,timeLevel,dataLevel, quotaVo,esConfig);
            }
            return null;
        } catch (Exception e) {

+ 1 - 1
svr/svr-quota/src/main/java/com/yihu/jw/quota/etl/extract/ExtractUtil.java

@ -308,7 +308,7 @@ public class ExtractUtil {
                        List<SaveModel> returnList,
                        Map<String, String> statisticsResultMap,
                        Map<String, String> daySlaveDictMap,
                        QuotaVo quotaVo) throws Exception {
                        QuotaVo quotaVo,String dataLevel) throws Exception {
        if (statisticsResultMap == null || statisticsResultMap.size() == 0) {
            logger.warn("没有查询到数据");
            return;

+ 6 - 3
svr/svr-quota/src/main/java/com/yihu/jw/quota/etl/extract/es/EsExtract.java

@ -49,6 +49,7 @@ public class EsExtract {
    private String startTime;
    private String endTime;
    private String timeLevel;
    private String dataLevel;
    private String saasid;
    private QuotaVo quotaVo;
    private EsConfig esConfig;
@ -61,6 +62,7 @@ public class EsExtract {
                                   String startTime,//开始时间
                                   String endTime, //结束时间
                                   String timeLevel, //时间维度  1日,2 周, 3 月,4 年
                                   String dataLevel, //1增量 2到达量
                                   String saasid,//saasid
                                   QuotaVo quotaVo,//指标code
                                   EsConfig esConfig //es配置
@ -68,6 +70,7 @@ public class EsExtract {
        this.startTime = startTime;
        this.endTime = endTime;
        this.timeLevel = timeLevel;
        this.dataLevel = dataLevel;
        this.saasid = saasid;
        this.quotaVo = quotaVo;
        this.esConfig = esConfig;
@ -79,7 +82,7 @@ public class EsExtract {
        logger.warn("查询sql:" + sql);
        //根据sql查询ES
        try {
            saveModels = queryEsBySql(sql,esConfig.getTimekey(),qdm, qds);
            saveModels = queryEsBySql(sql,esConfig.getTimekey(),qdm, qds,dataLevel);
        }catch (Exception e){
            throw new Exception("es 查询数据出错!" +e.getMessage() );
        }
@ -315,7 +318,7 @@ public class EsExtract {
        return  dimenSumList;
    }
    private  List<SaveModel> queryEsBySql(String sql,String timekey,List<TjQuotaDimensionMain> qdm,  List<TjQuotaDimensionSlave> qds) {
    private  List<SaveModel> queryEsBySql(String sql,String timekey,List<TjQuotaDimensionMain> qdm,  List<TjQuotaDimensionSlave> qds,String dataLevel) {
        List<SaveModel> returnList = new ArrayList<>();
        try {
            List<String> dimenList = new ArrayList<>();
@ -369,7 +372,7 @@ public class EsExtract {
                TjQuotaDimensionSlave tjQuotaDimensionSlave = new TjQuotaDimensionSlave();
                tjQuotaDimensionSlave.setQuotaCode(quotaVo.getCode());
                qds.add(tjQuotaDimensionSlave);
                extractUtil.compute(qdm, qds, returnList, resultMap, daySlaveDictMap, quotaVo);
                extractUtil.compute(qdm, qds, returnList, resultMap, daySlaveDictMap, quotaVo,dataLevel);
            }
        } catch (Exception e) {
            e.printStackTrace();

+ 21 - 12
svr/svr-quota/src/main/java/com/yihu/jw/quota/etl/extract/mysql/MysqlExtract.java

@ -3,7 +3,6 @@ package com.yihu.jw.quota.etl.extract.mysql;
import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionMain;
import com.yihu.jw.entity.ehr.quota.TjQuotaDimensionSlave;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.quota.etl.Contant;
import com.yihu.jw.quota.etl.ExtractConverUtil;
import com.yihu.jw.quota.etl.extract.ExtractUtil;
@ -11,6 +10,7 @@ import com.yihu.jw.quota.etl.model.EsConfig;
import com.yihu.jw.quota.vo.FilterModel;
import com.yihu.jw.quota.vo.QuotaVo;
import com.yihu.jw.quota.vo.SaveModel;
import com.yihu.jw.util.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,7 +19,6 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.time.LocalDate;
import java.util.*;
/**
@ -39,6 +38,7 @@ public class MysqlExtract {
    private String startTime;
    private String endTime;
    private String timeLevel;
    private String dataLevel;
    private EsConfig esConfig;
@ -47,19 +47,21 @@ public class MysqlExtract {
                                   String startTime,//开始时间
                                   String endTime, //结束时间
                                   String timeLevel, //时间维度  1日,2 周, 3 月,4 年
                                   String dataLevel, //1增量 2到达量
                                   QuotaVo quotaVo,//指标code
                                   EsConfig esConfig //es配置
    ) throws Exception {
        this.startTime = startTime;
        this.endTime = endTime;
        this.timeLevel = timeLevel;
        this.dataLevel = dataLevel;
        this.quotaVo = quotaVo;
        this.esConfig = esConfig;
        initParams(this.startTime ,this.endTime);
        List<SaveModel> returnList = new ArrayList<>();
        //获取mysql
        String mysql = getSql(qdm,qds);
        String mysql = getSql(qdm,qds,dataLevel);
        logger.warn(mysql);
        if( !StringUtils.isEmpty(mysql)){
            Map<String,String> resultMap = new HashMap<>();
@ -92,12 +94,12 @@ public class MysqlExtract {
                        String result = map.get("result").toString();
                        String mapKey = keyVal.substring(0, keyVal.length() - 1);
                        resultMap.put(mapKey, result);
                        daySlaveDictMap.put(mapKey, map.get("quotaDate").toString());
//                        daySlaveDictMap.put(mapKey, map.get("quotaDate").toString());
                    }
                    TjQuotaDimensionSlave tjQuotaDimensionSlave = new TjQuotaDimensionSlave();
                    tjQuotaDimensionSlave.setQuotaCode(quotaVo.getCode());
                    qds.add(tjQuotaDimensionSlave);
                    extractUtil.compute(qdm, qds, returnList, resultMap,daySlaveDictMap,quotaVo);
                    extractUtil.compute(qdm, qds, returnList, resultMap,daySlaveDictMap,quotaVo,dataLevel);
                }
            }
        }
@ -118,7 +120,7 @@ public class MysqlExtract {
     * @param tjQuotaDimensionSlaves
     * @return
     */
    private String getSql(List<TjQuotaDimensionMain> tjQuotaDimensionMains, List<TjQuotaDimensionSlave> tjQuotaDimensionSlaves) {
    private String getSql(List<TjQuotaDimensionMain> tjQuotaDimensionMains, List<TjQuotaDimensionSlave> tjQuotaDimensionSlaves,String dataLevel) {
        StringBuffer allField = new StringBuffer("");
        String tableName = esConfig.getTable();
        for (int j = 0; j < tjQuotaDimensionMains.size(); j++) {
@ -140,20 +142,27 @@ public class MysqlExtract {
        String whereGroupField = allField.toString();
        String timeKey = esConfig.getTimekey();
        if ( !StringUtils.isEmpty(timeKey)) {
            if ( !StringUtils.isEmpty(esConfig.getFullQuery() ) && esConfig.getFullQuery().equals("true")) {
            if ("2".equals(dataLevel)) {
                whereSql.append( " and " + timeKey + " < '" + endTime + "'");
                selectGroupField += " '"+ LocalDate.now().toString() +"' as quotaDate ,";
            }else{
                if ( !StringUtils.isEmpty(startTime) && !StringUtils.isEmpty(endTime)) {
                    whereSql.append(" and " + timeKey + " >= '" + startTime + "'");
                    whereSql.append( " and " + timeKey + " < '" + endTime + "'");
                }
                selectGroupField += " DATE_FORMAT(" + timeKey + ",'%Y-%m-%d') as quotaDate ,";
            }
            whereGroupField += timeKey;
        }else{
            whereGroupField = allField.substring(0,allField.length() - 1);
//            if ( !StringUtils.isEmpty(esConfig.getFullQuery() ) && esConfig.getFullQuery().equals("true")) {
//                whereSql.append( " and " + timeKey + " < '" + endTime + "'");
//                selectGroupField += " '"+ LocalDate.now().toString() +"' as quotaDate ,";
//            }else{
//                if ( !StringUtils.isEmpty(startTime) && !StringUtils.isEmpty(endTime)) {
//                    whereSql.append(" and " + timeKey + " >= '" + startTime + "'");
//                    whereSql.append( " and " + timeKey + " < '" + endTime + "'");
//                }
//                selectGroupField += " DATE_FORMAT(" + timeKey + ",'%Y-%m-%d') as quotaDate ,";
//            }
//            whereGroupField += timeKey;
        }
        whereGroupField = allField.substring(0,allField.length() - 1);
        //拼接整个sql 语法
        StringBuffer sql = new StringBuffer();
        if(StringUtils.isEmpty(esConfig.getAggregation())){

+ 81 - 11
svr/svr-quota/src/main/java/com/yihu/jw/quota/job/EsQuotaJob.java

@ -3,18 +3,19 @@ package com.yihu.jw.quota.job;
import com.yihu.jw.entity.ehr.quota.TjQuotaDataSource;
import com.yihu.jw.entity.ehr.quota.TjQuotaLog;
import com.yihu.jw.quota.dao.jpa.TjQuotaLogDao;
import com.yihu.jw.quota.etl.Contant;
import com.yihu.jw.quota.etl.extract.ExtractHelper;
import com.yihu.jw.quota.etl.model.EsConfig;
import com.yihu.jw.quota.etl.save.SaveHelper;
import com.yihu.jw.quota.etl.util.ElasticsearchUtil;
import com.yihu.jw.quota.service.source.TjDataSourceService;
import com.yihu.jw.quota.etl.Contant;
import com.yihu.jw.quota.util.SpringUtil;
import com.yihu.jw.quota.vo.QuotaVo;
import com.yihu.jw.quota.vo.SaveModel;
import com.yihu.jw.util.date.DateUtil;
import net.sf.json.JSONObject;
import org.elasticsearch.client.Client;
import org.elasticsearch.index.query.*;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.quartz.*;
import org.slf4j.Logger;
@ -28,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -46,6 +48,9 @@ public class EsQuotaJob implements Job {
    private String endTime; // 结束时间
    private String startTime; //开始时间
    private String timeLevel; //时间
    private String dataLevel;//1 数据增量 2数据到达量
    private String year;//要统计的年份
    private Date quotaDate;//统计的时间
    private String executeFlag; // 执行动作 1 手动执行 2 周期执行
    private int haveThreadCount = 0;//已完成线程数
    private int threadCount = 1;//总线程数
@ -87,7 +92,7 @@ public class EsQuotaJob implements Job {
            JSONObject obj = new JSONObject().fromObject(quotaDataSource.getConfigJson());
            EsConfig esConfig = (EsConfig) JSONObject.toBean(obj,EsConfig.class);
            //查询是否已经统计过,如果已统计 先删除后保存
            deleteRecord(quotaVo);
            deleteRecord(quotaVo,dataLevel);
            if(quotaDataSource.getSourceCode().equals("2") && esConfig.getAggregation()!= null && esConfig.getAggregation().equals("list")) {//来源solr
               /* moreThredQuota(tjQuotaLog,esConfig);*/
            }else{
@ -215,7 +220,7 @@ public class EsQuotaJob implements Job {
        }
    }
    private void deleteRecord(QuotaVo quotaVo) throws Exception {
    private void deleteRecord(QuotaVo quotaVo,String dataLevel) throws Exception {
        EsConfig esConfig = extractHelper.getEsConfig(quotaVo.getCode());
        EsConfig sourceEsConfig = extractHelper.getDataSourceEsConfig(quotaVo.getCode());
@ -239,6 +244,7 @@ public class EsQuotaJob implements Job {
        QueryStringQueryBuilder termQueryQuotaCode = QueryBuilders.queryStringQuery(quotaCodeTerm);
        QueryBuilder qb = QueryBuilders.boolQuery()
                .must(termQueryQuotaCode)
                .must(QueryBuilders.matchQuery("timeLevel", dataLevel))
                .must(QueryBuilders.boolQuery()
                        .should(rangeQuotaTime)
                        .should(rangeCreateTime)
@ -271,44 +277,108 @@ public class EsQuotaJob implements Job {
     * @return
     */
    private List<SaveModel> extract(QuotaVo quotaVo) throws Exception {
        return SpringUtil.getBean(ExtractHelper.class).extractData(quotaVo, startTime, endTime, timeLevel, saasid);
        return SpringUtil.getBean(ExtractHelper.class).extractData(quotaVo, startTime, endTime, timeLevel,dataLevel, saasid);
    }
    /**
     * 初始化参数
     * @param context
     */
    private void initParams(JobExecutionContext context) {
    private void initParams(JobExecutionContext context) throws Exception{
        JobDataMap map = context.getJobDetail().getJobDataMap();
        Map<String, Object> params = context.getJobDetail().getJobDataMap();
        Object object = map.get("quota");
        if (object != null) {
            BeanUtils.copyProperties(object, this.quotaVo);
        }
        this.saasid = map.getString("saasid");
        this.dataLevel = map.getString("dataLevel");
        // 默认按天,如果指标有配置时间维度,ES抽取过程中维度字典项转换为 SaveModel 时再覆盖。
        this.timeLevel = Contant.main_dimension_timeLevel.day;
        this.timeLevel = map.get("timeLevel")!=null?String.valueOf(map.get("timeLevel")):Contant.main_dimension_timeLevel.day;
        this.executeFlag = map.getString("executeFlag");
        if ("2".equals(executeFlag)) {
            if (StringUtils.isEmpty(map.getString("startTime"))) {
                startTime = Contant.main_dimension_timeLevel.getStartTime(timeLevel);
            } else {
                this.startTime = map.getString("startTime").split("T")[0] + "T00:00:00Z";
                this.startTime = map.getString("startTime").split("T")[0] + " 00:00:00";
            }
            if (StringUtils.isEmpty(map.getString("endTime"))) {
                endTime = LocalDate.now().toString("yyyy-MM-dd'T'00:00:00'Z'");
                endTime = LocalDate.now().toString("yyyy-MM-dd 00:00:00");
            } else {
                this.endTime = map.getString("endTime").split("T")[0] + "T23:59:59Z";
                this.endTime = map.getString("endTime").split("T")[0] + " 23:59:59";
            }
        }else{
            if (StringUtils.isEmpty(endTime)) {
                endTime = new LocalDate(new DateTime().minusDays(1)).toString("yyyy-MM-dd") + " 23:59:59"; //2017-06-01 17:00:00
            } else if (endTime.length()==10){
                endTime = endTime + " 23:59:59";
            }
            if("2".equals(timeLevel)){
                endTime =  DateUtil.getSundayOfThisWeek(DateUtil.strToDateLong(endTime));
            }else if("3".equals(timeLevel)){
                endTime=  DateUtil.getLastDayOfMonthThisDate((DateUtil.strToDateLong(endTime)));
            }else if("4".equals(timeLevel)){
                endTime=  DateUtil.getLastDayOfYearThisDate((DateUtil.strToDateLong(endTime)));
            }
            //初始化统计年份
            this.year = getNowYearByDate(endTime);
            //初始化开始时间
            if ("2".equals(dataLevel)) {
                //按年度到达量
                startTime = this.year + "-01-01 23:59:59";
            } else {
                //增量
                if (StringUtils.isEmpty(startTime)) {
                    getStartTime();
                } else {
                    startTime = startTime + " 23:59:59";
                }
            }
        }
        this.quotaDate = DateUtil.strToDate(endTime);
    }
    @Transactional
     TjQuotaLog saveLog(TjQuotaLog tjQuotaLog) {
    TjQuotaLog saveLog(TjQuotaLog tjQuotaLog) {
        TjQuotaLog log =  tjQuotaLogDao.save(tjQuotaLog);
        return  log;
    }
    /**
     * 获取现在时间属于那个年度
     *
     * @param date
     * @return
     */
    public static String getNowYearByDate(String date) throws Exception {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date today = simpleDateFormat.parse(date);
        String todayString = simpleDateFormat.format(today);
        String startDateString = (1900 + today.getYear()) + "-01-01";
        Date startDate = simpleDateFormat.parse(startDateString);
        if (simpleDateFormat.parse(todayString).after(startDate)) {
            return (1900 + today.getYear()) + "";
        } else {
            return (1900 + today.getYear() - 1) + "";
        }
    }
    public void getStartTime(){
        if("1".equals(this.timeLevel)){//日
            startTime = new LocalDate(new DateTime().minusDays(1)).toString("yyyy-MM-dd") + " 00:00:00";
        }else if("2".equals(this.timeLevel)){//周
            startTime = DateUtil.getMondayOfThisWeek(DateUtil.strToDateLong(endTime))+ " 00:00:00";
        }else if("3".equals(this.timeLevel)){//月
            startTime =DateUtil.getFristDayOfMonthThisDate(DateUtil.strToDateLong(endTime))+ " 00:00:00";
        }else if("4".equals(this.timeLevel)){//年
            startTime = DateUtil.getFirstDayOfYear(DateUtil.strToDateLong(endTime))+ " 00:00:00";
        }
    }
    /**
     * 保存数据
     *

+ 41 - 25
svr/svr-quota/src/main/java/com/yihu/jw/quota/service/job/JobService.java

@ -37,7 +37,7 @@ public class JobService {
     * @throws Exception
     */
    public void executeJob(Long id, String executeFlag, String startDate, String endDate) throws Exception {
        TjQuota tjQuota = quotaDao.getOne(id);
        TjQuota tjQuota = quotaDao.findById(id).orElse(null);
        if (tjQuota != null) {
            QuotaVo quotaVo = new QuotaVo();
            BeanUtils.copyProperties(tjQuota, quotaVo);
@ -46,32 +46,48 @@ public class JobService {
            params.put("executeFlag", executeFlag);
            params.put("startTime", startDate);
            params.put("endTime", endDate);
            //跑增量和到达量
            String quotaCode = quotaVo.getCode().replace("_", "");
            String quotaCodeImmediately = quotaCode + "immediately2";
            boolean existJob = quartzHelper.isExistJob(quotaCode);
            boolean existJobImmediately = quartzHelper.isExistJob(quotaCodeImmediately);
            if (existJob && "0".equals(quotaVo.getJobStatus())) {
                //周期执行jobKey
                quartzHelper.removeJob(quotaCode);
            }
            if (existJobImmediately) {
                //立即执行jobKey
                quartzHelper.removeJob(quotaCodeImmediately);
            int endNum = 2;
            int startNum = 1;
            if(tjQuota.getDataLevel()==null||tjQuota.getDataLevel()==3){
                startNum = 1;
                endNum = 2;
            }else if(tjQuota.getDataLevel()==1){
                startNum = 1;
                endNum = 1;
            }else if(tjQuota.getDataLevel()==2){
                startNum = 2;
                endNum = 2;
            }
            //往quartz框架添加任务
            if ((!StringUtils.isEmpty(executeFlag) && executeFlag.equals("1")) || // 初始执行
                    (!StringUtils.isEmpty(tjQuota.getJobClazz()) && tjQuota.getExecType().equals("1"))) { // 立即执行
               try {
                   quartzHelper.startNow(Class.forName(quotaVo.getJobClazz()), quotaCodeImmediately, params);
               }catch (Exception e){
                   e.printStackTrace();
                   throw  new ObjectAlreadyExistsException(quotaCodeImmediately + "," + tjQuota.getName() + "指标正在执行!");
               }
            } else {
                //周期执行指标 更新指标执行状态:0未开启,1执行中
                tjQuota.setJobStatus("1");
                quotaDao.save(tjQuota);
                quartzHelper.addJob(Class.forName(quotaVo.getJobClazz()), quotaVo.getCron(), quotaCode, params);
            for (int i = startNum; i <= endNum; i++){
                String quotaCodeImmediately = quotaCode + "immediately"+i;
                params.put("dataLevel", i+"");
                boolean existJob = quartzHelper.isExistJob(quotaCode);
                boolean existJobImmediately = quartzHelper.isExistJob(quotaCodeImmediately);
                if (existJob && "0".equals(quotaVo.getJobStatus())) {
                    //周期执行jobKey
                    quartzHelper.removeJob(quotaCode);
                }
                if (existJobImmediately) {
                    //立即执行jobKey
                    quartzHelper.removeJob(quotaCodeImmediately);
                }
                //往quartz框架添加任务
                if ((!StringUtils.isEmpty(executeFlag) && executeFlag.equals("1")) || // 初始执行
                        (!StringUtils.isEmpty(tjQuota.getJobClazz()) && tjQuota.getExecType().equals("1"))) { // 立即执行
                    try {
                        quartzHelper.startNow(Class.forName(quotaVo.getJobClazz()), quotaCodeImmediately, params);
                    }catch (Exception e){
                        e.printStackTrace();
                        throw  new ObjectAlreadyExistsException(quotaCodeImmediately + "," + tjQuota.getName() + "指标正在执行!");
                    }
                } else {
                    //周期执行指标 更新指标执行状态:0未开启,1执行中
                    tjQuota.setJobStatus("1");
                    quotaDao.save(tjQuota);
                    quartzHelper.addJob(Class.forName(quotaVo.getJobClazz()), quotaVo.getCron(), quotaCode, params);
                }
            }
        }
    }

+ 20 - 2
svr/svr-quota/src/main/java/com/yihu/jw/quota/vo/SaveModel.java

@ -58,8 +58,10 @@ public class SaveModel {
    private String slaveKey4;//从维度  4级维度
    private String slaveKey4Name;
    private String result;//统计结果
    private String timeLevel;// 1 日 2 周 3 月 4 年
    private String areaLevel;// 1 省 2 市 3 区县 4 机构 5团队
    private Double result1 = 0.0;//统计结果  总的累加结果 如果是平均分 那就是总分 其他指标都是和result2一样
    private Double result2 = 0.0;//统计结果  次数
    private String timeLevel;// 1 日 2 周 3 月 4 年  1增量 2到达量
    private String areaLevel;// 1 省 2 市 3 区县 4 机构 5团队 6医生
    private String year;
    private String yearName;
    private String orgHealthCategoryCode;     //卫生机构类型代码
@ -423,4 +425,20 @@ public class SaveModel {
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    public Double getResult1() {
        return result1;
    }
    public void setResult1(Double result1) {
        this.result1 = result1;
    }
    public Double getResult2() {
        return result2;
    }
    public void setResult2(Double result2) {
        this.result2 = result2;
    }
}