kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
src/main/java/com/highdatas/mdm/util/DbUtils.java
@@ -1,11 +1,16 @@
package com.highdatas.mdm.util;
import com.baomidou.mybatisplus.annotations.TableName;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.highdatas.mdm.entity.Character;
import com.highdatas.mdm.entity.*;
import com.highdatas.mdm.mapper.MaintainDetailMapper;
import com.highdatas.mdm.mapper.TableInfoMapper;
import com.highdatas.mdm.pojo.MasterAuthorType;
import com.highdatas.mdm.pojo.Segment;
import com.highdatas.mdm.service.*;
import com.highdatas.mdm.util.pool.MqClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.mapping.BoundSql;
@@ -18,13 +23,13 @@
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.security.MessageDigest;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -41,6 +46,93 @@
public class DbUtils {
    private static UserRoleClient userRoleClient;
    public static MaintainDetailMapper maintainDetailMapper;
    public static IMaintainService maintainService;
    public static IMaintainDetailService maintainDetailService;
    public static ISysFieldService fieldService;
    public static IMaintainFieldService maintainFieldService;
    public static TableInfoMapper tableInfoMapper;
    public static ISysViewService viewService;
    public static MasterDataService masterDataService;
    public static IMasterAuthorService masterAuthorService;
    public static ISysMenuService menuService;
    public static MqClient mqClient;
    public static ISysDispenseLogsService dispenseLogsService;
    public static DispenseService dispenseService;
    public static AntianaphylaxisClient antianaphylaxisClient;
    @Autowired
    public void setAntianaphylaxisClient(AntianaphylaxisClient antianaphylaxisClient){
        DbUtils.antianaphylaxisClient = antianaphylaxisClient;
    }
    @Autowired
    public void setDispenseService(DispenseService dispenseService){
        DbUtils.dispenseService = dispenseService;
    }
    @Autowired
    public void setISysDispenseLogsService(ISysDispenseLogsService dispenseLogsService){
        DbUtils.dispenseLogsService = dispenseLogsService;
    }
    @Autowired
    public void setMqClient(MqClient mqClient){
        DbUtils.mqClient = mqClient;
    }
    @Autowired
    public void setISysMenuService(ISysMenuService menuService){
        DbUtils.menuService = menuService;
    }
    @Autowired
    public void setIMasterAuthorService(IMasterAuthorService masterAuthorService){
        DbUtils.masterAuthorService = masterAuthorService;
    }
    @Autowired
    public void setMasterDataService(MasterDataService masterDataService){
        DbUtils.masterDataService = masterDataService;
    }
    @Autowired
    public void setISysViewService(ISysViewService viewService){
        DbUtils.viewService = viewService;
    }
    @Autowired
    public void setTableInfoMapper(TableInfoMapper tableInfoMapper){
        DbUtils.tableInfoMapper = tableInfoMapper;
    }
    @Autowired
    public void setIMaintainFieldService(IMaintainFieldService maintainFieldService){
        DbUtils.maintainFieldService = maintainFieldService;
    }
    @Autowired
    public void setISysFieldService(ISysFieldService fieldService){
        DbUtils.fieldService = fieldService;
    }
    @Autowired
    public void setIMaintainDetailService(IMaintainDetailService maintainDetailService){
        DbUtils.maintainDetailService = maintainDetailService;
    }
    @Autowired
    public void setIMaintainService(IMaintainService maintainService){
        DbUtils.maintainService = maintainService;
    }
    @Autowired
    public void setMaintainDetailMapper(MaintainDetailMapper maintainDetailMapper){
        DbUtils.maintainDetailMapper = maintainDetailMapper;
    }
    @Autowired
    public void setUserRoleClient(UserRoleClient userRoleClient){
@@ -91,28 +183,25 @@
        return MessageFormat.format("V{0}.{1}",bigVersion, 0);
    }
    public static Integer getSubVersion(String baseVersion) {
        if (StringUtils.isEmpty(baseVersion)) {
            return null;
    public static <T> Map<String, Object> beanToMap(T bean) {
        Map<String, Object> map = Maps.newHashMap();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                map.put(key+"", beanMap.get(key));
            }
        }
        String[] split = baseVersion.split(Constant.Dot);
        if (split.length == 1) {
            return null;
        }
        return  Integer.valueOf(split[1]);
        return map;
    }
    public static Integer getBigVersion(String baseVersion) {
        if (StringUtils.isEmpty(baseVersion)) {
            return null;
        }
        String[] split = baseVersion.split(Constant.Dot);
        if (split.length == 0 || split[0].length() < 2) {
            return null;
        }
    public static HashMap<String, Object> JsonObjectToHashMap(JSONObject jsonObj){
        HashMap<String, Object> data = new HashMap<String, Object>();
        return  Integer.valueOf(split[0].substring(1));
        Set<String> keySet = jsonObj.keySet();
        for (String key : keySet) {
            data.put(key, jsonObj.get(key));
        }
        return data;
    }
@@ -130,29 +219,6 @@
        return segment.toString();
    }
    public static String getTableNameFromEntity(Object object) {
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            // 获取表名
            TableName table = object.getClass().getAnnotation(TableName.class);
            if (table != null) {
                String tableName = table.value();
                return tableName;
            }
        }
        return null;
    }
    public static Object toSqlToJava(String value, TableSchemaResult tableSchema) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException {
        String dbType = tableSchema.getDbType();
        String javaType = toSqlToJava(dbType);
        Class<?> baseWapperClaz = Class.forName("java.lang." + javaType);
        Object baseWapper = baseWapperClaz.newInstance();
        Method valueOfMethod = baseWapperClaz.getDeclaredMethod("valueOf");
        return null;
//        valueOfMethod.invoke(baseWapper, )
    }
    public static String toSqlToJava(String sqlType) {
        if( sqlType == null || sqlType.trim().length() == 0 ) return sqlType;
@@ -192,12 +258,6 @@
        return sqlType;
    }
    public static void sqlValueToJava(Object value, String dbType) throws Exception {
        String javaType = toSqlToJava(dbType);
        Class<?> baseWapperClaz = Class.forName("java.lang." + javaType);
        Object baseWapper = baseWapperClaz.newInstance();
        Method valueOfMethod = baseWapperClaz.getDeclaredMethod("valueOf");
    }
    public static String quotedStr(Object o) {
       return quotedStr(String.valueOf(o));
@@ -219,6 +279,14 @@
    public static String StrJoin(String... objects){
        ContentBuilder builder = new ContentBuilder(Constant.EMPTY);
        for (String object : objects) {
            builder.append(object);
        }
        return builder.toString();
    }
    public static String StrJoinLink(String link,String... objects){
        ContentBuilder builder = new ContentBuilder(link);
        for (String object : objects) {
            builder.append(object);
        }
@@ -260,15 +328,6 @@
        return orderNo + 1;
    }
    public static Date getDateByStart() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date zero = calendar.getTime();
        return zero;
    }
    public static Date getDateByEnd() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
@@ -384,9 +443,18 @@
    public static List<String> split(String redisVal) {
        if (StringUtils.isEmpty(redisVal)) {
            return null;
            return new ArrayList<>();
        }
        String[] split = redisVal.split(Constant.SEMICOLON);
        List<String> strings = Arrays.asList(split);
        return  new ArrayList<String>(strings);
    }
    public static List<String> split(String redisVal, String spilt) {
        if (StringUtils.isEmpty(redisVal)) {
            return new ArrayList<>();
        }
        String[] split = redisVal.split(spilt);
        List<String> strings = Arrays.asList(split);
        return strings;
    }
@@ -447,6 +515,7 @@
    }
    public static TUser getUserById(String userId) {
        TUser tUserById = userRoleClient.getTUserById(userId);
        return tUserById;
    }
@@ -466,6 +535,24 @@
        }
        Set<String> collect = tRoleListByUserId.stream().map(tRole -> tRole.getRoleId()).collect(Collectors.toSet());
        return collect;
    }
    public static Set<TUser> getAllUser() {
        List<TUser> tRoleListByUserId = userRoleClient.listUserRoleGroup();
        if (tRoleListByUserId == null) {
            return new HashSet<>();
        }
        return new HashSet<TUser>(tRoleListByUserId);
    }
    public static Set<String> getUserByRole(String roleId) {
        List<String> userListByRole = userRoleClient.getUserListByRole(roleId);
        if (userListByRole == null) {
            return new HashSet<>();
        }
        HashSet<String> result = new HashSet<>(userListByRole);
        return result;
    }
    public static Set<String> getGroupByUser(String userId) {
@@ -535,4 +622,61 @@
        return ibatisSql;
    }
    public static String getNowDateStr() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = format.format(new Date());
        return time;
    }
    public static Set<String> getRoleByUser(String userId, String uuid) {
        Date start = new Date();
        List<TRole> tRoleListByUserId = userRoleClient.getTRoleListByUserId(userId);
        Date end = new Date();
        log.info(MessageFormat.format("master tag:{0} form userId select role :{1} ms",uuid, (end.getTime() - start.getTime())));
        if (tRoleListByUserId == null || tRoleListByUserId.isEmpty()){
            return new HashSet<>();
        }
        Set<String> collect = tRoleListByUserId.stream()
                .filter(tRole -> tRole != null).map(tRole -> tRole.getRoleId()).collect(Collectors.toSet());
        return collect;
    }
    public static Set<String> getGroupByUser(String userId, String uuid) {
        Date start = new Date();
        List<TUserGroup> tRoleListByUserId = userRoleClient.getUserGroupByUserId(userId);
        Date end = new Date();
        log.info(MessageFormat.format("master tag:{0} form userId select group :{1} ms",uuid, (end.getTime() - start.getTime())));
        if (tRoleListByUserId == null || tRoleListByUserId.isEmpty()){
            return new HashSet<>();
        }
        Set<String> collect = tRoleListByUserId.stream().map(tRole -> tRole.getGroupId()).collect(Collectors.toSet());
        return collect;
    }
    public static Set<String> getRoleByGroup(String groupId, String uuid) {
        Date start = new Date();
        List<TRole> tRoleListByUserId = userRoleClient.getRoleListByGroupId(groupId);
        Date end = new Date();
        log.info(MessageFormat.format("master tag:{0} form groupId select role :{1} ms",uuid, (end.getTime() - start.getTime())));
        if (tRoleListByUserId == null || tRoleListByUserId.isEmpty()){
            return new HashSet<>();
        }
        Set<String> collect = tRoleListByUserId.stream().map(tRole -> tRole.getRoleId()).collect(Collectors.toSet());
        return collect;
    }
}