Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/dev-1.13.0' into dev-1.13.0

jkzlzhoujie 6 rokov pred
rodič
commit
e07c4c0727

+ 1 - 0
src/main/java/com/yihu/quota/contants/MicroServiceApi.java

@ -11,6 +11,7 @@ public interface MicroServiceApi {
    interface Resource {
        String DICT_ENTRY = "cache/dict-entry";
        String DICT_ENTRIES = "cache/dict-entries";
    }
    interface Redis {

+ 1 - 1
src/main/java/com/yihu/quota/etl/formula/AgeGroup.java

@ -3,7 +3,7 @@ package com.yihu.quota.etl.formula;
/**
 * @author l4qiang
 */
public class AgeGroup implements Functioner {
public class AgeGroupFunc implements Functioner {
    public static final String level_age_1_name = "0~6";
    public static final String level_age_2_name = "7~17";
    public static final String level_age_3_name = "18~40";

+ 4 - 4
src/main/java/com/yihu/quota/etl/formula/DateFunc.java

@ -10,14 +10,14 @@ public class DateFunc implements Functioner {
     * @return
     */
    @Override
    public Integer execute(Object... args) {
    public Integer execute(Object... args) throws Exception {
        if (args.length < 2) {
            return 0;
            throw new Exception("args error");
        }
        Date date = (Date) args[0];
        Integer span = (Integer) args[0];
        if (span != Calendar.YEAR && span != Calendar.MONTH && span != Calendar.DAY_OF_MONTH){
        Integer span = (Integer) args[1];
        if (span != Calendar.YEAR && span != Calendar.MONTH && span != Calendar.DAY_OF_MONTH) {
            return 0;
        }

+ 1 - 1
src/main/java/com/yihu/quota/etl/formula/Days.java

@ -8,7 +8,7 @@ import java.util.Date;
/**
 * @author l4qiang
 */
public class Days implements Functioner {
public class DaysFunc implements Functioner {
    @Override
    public Long execute(Object... args) {
        if (args.length < 2) {

+ 19 - 0
src/main/java/com/yihu/quota/etl/formula/DictFunc.java

@ -0,0 +1,19 @@
package com.yihu.quota.etl.formula;
import com.yihu.quota.feign.RsDictClient;
import com.yihu.quota.util.SpringUtil;
public class DictFunc implements Functioner {
    @Override
    public String execute(Object... args) throws Exception {
        if (args.length < 2) {
            throw new Exception("args error");
        }
        String dict = (String) args[0];
        String code = (String) args[1];
        RsDictClient rsDictClient = SpringUtil.getBean(RsDictClient.class);
        return rsDictClient.getCacheValue(dict, code);
    }
}

+ 3 - 3
src/main/java/com/yihu/quota/etl/formula/Division.java

@ -6,16 +6,16 @@ import com.yihu.quota.util.SpringUtil;
/**
 * @author l4qiang
 */
public class Division implements Functioner {
public class DivisionFunc implements Functioner {
    /**
     * @param args args[0] orgCode
     *             args[1] level 1-区县,2-市,3-省,4-国家
     * @return
     */
    @Override
    public String execute(Object... args) {
    public String execute(Object... args) throws Exception {
        if (args.length < 2) {
            return "";
            throw new Exception("args error");
        }
        String orgCode = (String) args[0];

+ 77 - 0
src/main/java/com/yihu/quota/etl/formula/FormulaExecutor.java

@ -0,0 +1,77 @@
package com.yihu.quota.etl.formula;
import com.yihu.ehr.util.datetime.DateUtil;
import java.util.HashMap;
/**
 * 算法执行器
 *
 * @author l4qiang
 */
public class FormulaExecutor {
    static HashMap<String, Functioner> functionerHashMap;
    /**
     * @param clazz  算法类名,包含完整路径,在配置时维护。如:com.yihu.quota.etl.formula.DivisionFunc
     * @param args   参数,需要替换参数使用${code}方式进行标识,在配置时维护.如:string:${province};number:1
     * @param values 值,需要赋值的值使用${code}方式进行标识
     * @throws Exception
     */
    public void run(String clazz, String args, HashMap<String, String> values) throws Exception {
        Functioner functioner = functionerHashMap.get(clazz);
        if (functioner == null) {
            functioner = (Functioner) Class.forName(clazz).newInstance();
            functionerHashMap.put(clazz, functioner);
        }
        if (functioner != null) {
            String[] metaList = args.split(";");
            Object[] parameter = new Object[metaList.length];
            for (int i = 0; i < metaList.length; i++) {
                String arg = metaList[i];
                String[] split = arg.split(":");
                if (split.length != 2) {
                    throw new Exception("wrong args");
                }
                switch (split[0]) {
                    case "number": {
                        String temp = getValue(values, split[1]);
                        parameter[i] = Integer.parseInt(temp);
                        break;
                    }
                    case "string": {
                        String temp = getValue(values, split[1]);
                        parameter[i] = temp;
                        break;
                    }
                    case "date": {
                        String temp = getValue(values, split[1]);
                        parameter[i] = DateUtil.formatCharDateYMD(temp);
                        break;
                    }
                    default:
                        break;
                }
            }
            functioner.execute(parameter);
        }
    }
    private String getValue(HashMap<String, String> values, String defaultValue) {
        String value = values.get(defaultValue);
        if (value != null) {
            return value;
        }
        return defaultValue;
    }
}

+ 1 - 1
src/main/java/com/yihu/quota/etl/formula/Functioner.java

@ -4,5 +4,5 @@ package com.yihu.quota.etl.formula;
 * @author l4qiang
 */
public interface Functioner {
    Object execute(Object... args);
    Object execute(Object... args) throws Exception;
}

+ 8 - 0
src/main/java/com/yihu/quota/feign/RsDictClient.java

@ -10,6 +10,9 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
import java.io.Serializable;
import java.util.List;
/**
 * @author l4qiang
 */
@ -23,6 +26,11 @@ public interface RsDictClient {
            @ApiParam(name = "dict") @RequestParam(value = "dict") String dict,
            @ApiParam(name = "code") @RequestParam(value = "code") String code);
    @RequestMapping(value = MicroServiceApi.Resource.DICT_ENTRIES, method = RequestMethod.GET)
    @ApiOperation(value = "根据dict从缓存获取字典项")
    List<Serializable> getCacheEntries(
            @ApiParam(name = "dict") @RequestParam(value = "dict") String dict);
    @RequestMapping(value = MicroServiceApi.Resource.DICT_ENTRY, method = RequestMethod.DELETE)
    @ApiOperation(value = "清空缓存字典项")
    void deleteCacheValue(