kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -58,7 +58,14 @@
    AntianaphylaxisClient antianaphylaxisClient;
    /**
     *
     * @description:  根据表名和id获取数据
     * @param tableName 表名
     * @param id 数据id
     * @return: 数据
     *
     */
    @Override
    public Result selectById(String tableName, String id) {
        try{
@@ -82,28 +89,71 @@
            return Result.error(CodeMsg.SELECT_ERROR);
        }
    }
    /**
     *
     * @description:  根据用户和表名获取数据
     * @param tableName 表名
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character, String tableName) {
        return selectList(character, tableName, null,null, (maintainService.getNowVersion(tableName).getVersion()));
    }
    /**
     *
     * @description:  根据用户和表名,筛选条件获取数据
     * @param tableName 表名
     * @param whereSegment 筛选条件
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character, String tableName, String whereSegment) {
        return selectList(character,tableName, whereSegment, (maintainService.getNowVersion(tableName).getVersion()));
    }
    /**
     *
     * @description:  根据用户和表名,筛选条件,数据版本获取数据
     * @param tableName 表名
     * @param whereSegment 筛选条件
     * @param version 数据版本
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character,String tableName, String whereSegment, String version) {
        return selectList(character, tableName, null, whereSegment, version);
    }
    /**
     *
     * @description:  根据用户,字段,表名,筛选条件获取数据
     * @param tableName 表名
     * @param whereSegment 筛选条件
     * @param fieldList 字段
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character, String tableName, List<String> fieldList, String whereSegment) {
        return selectList(character, tableName, fieldList, whereSegment, maintainService.getNowVersion(tableName).getVersion());
    }
    /**
     *
     * @description:  根据用户,字段,表名,筛选条件,数据版本获取数据
     * @param tableName 表名
     * @param whereSegment 筛选条件
     * @param fieldList 字段
     * @param version 数据版本
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character, String tableName,List<String> fieldList, String whereSegment, String version) {
        try{
@@ -130,12 +180,27 @@
        }
    }
    /**
     *
     * @description:  根据用户,字段,表名获取数据
     * @param tableName 表名
     * @param fieldList 字段
     * @param character 用户
     * @return: 数据
     *
     */
    @Override
    public Result selectList(Character character, String tableName, List<String> fields) {
        return selectList(character, tableName,fields,Constant.WHERE_DEFAULT,(maintainService.getNowVersion(tableName).getVersion()));
    }
    /**
     *
     * @description:  根据表名,筛选条件获取数据条数
     * @param tableName 表名
     * @param whereSegment 筛选条件
     * @return: 数据条数
     *
     */
    public Long getCount(String tableName, String whereSegment) {
        try{
            if (StringUtils.isEmpty(whereSegment)) {
@@ -149,7 +214,21 @@
            return null;
        }
    }
    /**
     *
     * @description:  根据条件获取数据条数
     * @param maintainId 数据版本
     * @param tableName 表名
     * @param tableTempName 临时表名
     * @param whereSegment 筛选条件
     * @param fieldList 字段
     * @param version 数据版本
     * @param character 用户
     * @param fromOrderNo 从哪个版本开始往前推
     * @param toOrderNo 到哪个版本结束往前推
     * @return: 数据条数
     *
     */
    @Override
    public Long getCountByVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
        try{
@@ -173,7 +252,19 @@
            return null;
        }
    }
    /**
     *
     * @description:  根据条件获取最大版本的数据条数
     * @param maintainId 数据版本
     * @param tableName 表名
     * @param tableTempName 临时表名
     * @param whereSegment 筛选条件
     * @param fieldList 字段
     * @param version 数据版本
     * @param character 用户
     * @return: 数据条数
     *
     */
    public Long getCountByMaxVersion (Character character, String maintainId, String tableName,String tableTempName,Integer fromOrderNo, String whereSegment) {
        try{
            Maintain maintain = maintainService.selectById(maintainId);
@@ -196,23 +287,54 @@
        }
    }
    /**
     *
     * @description:  根据表名获取字段sql
     * @param tableName 表名
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(String tableName) {
        return getFields(tableName, Constant.EMPTY_Str);
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取字段sql
     * @param tableName 表名
     * @param character 用户
     * @param maintain 版本
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(Character character, String tableName, Maintain maintain) {
        return getFields(character, tableName, null, maintain);
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取字段sql
     * @param tableName 表名
     * @param character 用户
     * @param maintain 版本
     * @param uuid 请求唯一标识,log中查询时间使用
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(Character character, String tableName, Maintain maintain, String uuid) {
        return getFields(character, tableName, null, maintain, uuid);
    }
    /**
     *
     * @description:  根据表名 用户, 版本组装 casewhen 字段sql
     * @param tableName 表名
     * @return: 字段sql
     *
     */
    private String getCaseWhenFields(String tableName) {
        List<TableSchemaResult> tableField = mapper.getTableField(tableName);
        ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
@@ -226,6 +348,14 @@
        }
        return contentBuilder.toString();
    }
    /**
     *
     * @description:  根据表名 ,获取字段sql并添加别名
     * @param tableName 表名
     * @param alias 别名
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(String tableName, String alias) {
        List<TableSchemaResult> tableField = mapper.getTableField(tableName);
@@ -245,11 +375,32 @@
        }
        return contentBuilder.toString();
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取字段sql,并添加别名
     * @param tableName 表名
     * @param character 用户
     * @param maintain 版本
     * @param alias 别名
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(Character character, String tableName, String alias, Maintain maintain) {
        return getFields(character, tableName, alias, maintain, null);
    }
        @Override
    /**
     *
     * @description:  根据表名 用户, 版本获取字段sql,并添加别名
     * @param tableName 表名
     * @param character 用户
     * @param maintain 版本
     * @param alias 别名
     * @param uuid 请求唯一标识,log中查询时间使用
     * @return: 字段sql
     *
     */
    @Override
    public String getFields(Character character, String tableName, String alias, Maintain maintain, String uuid) {
        List<SysField> fields;
        if (character == null) {
@@ -282,15 +433,41 @@
        return contentBuilder.toString();
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取临时表字段sql,并添加别名
     * @param tableName 临时表名
     * @param character 用户
     * @param maintain 版本
     * @return: 字段sql
     *
     */
    @Override
    public String getTempFields(Character character, String tableName, Maintain maintain) {
        return getTempFields(character, tableName, null, maintain);
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取临时表字段sql,并添加别名
     * @param tableName 临时表名
     * @param character 用户
     * @return: 字段sql
     *
     */
    @Override
    public String getTempFields(Character character, String tableName) {
        return getTempFields(character, tableName, Constant.EMPTY_Str);
    }
    /**
     *
     * @description:  根据表名 用户获取临时表字段sql,并添加自定义别名
     * @param tableName 临时表名
     * @param character 用户
     * @param alias 别名
     * @return: 字段sql
     *
     */
    @Override
    public String getTempFields(Character character, String tableName, String alias) {
        List<TableSchemaResult> tableField = mapper.getTableField(tableName);
@@ -314,7 +491,16 @@
        }
        return contentBuilder.toString();
    }
    /**
     *
     * @description:  根据表名 用户, 版本获取临时表字段sql,并添加自定义别名
     * @param tableName 临时表名
     * @param character 用户
     * @param maintain 版本
     * @param alias 别名
     * @return: 字段sql
     *
     */
    @Override
    public String getTempFields(Character character, String tableName, String alias, Maintain maintain) {
        List<SysField> fields;
@@ -376,49 +562,160 @@
        }
        return fieldList.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.toList());
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param pageNo 页数
     * @param pageSize 每页数据量
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, Integer pageSize, boolean findMax) {
        return selectListByPageByVersion(character, tableName,Constant.WHERE_DEFAULT,pageNo,pageSize, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页数据量
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null, whereSegment,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param pageNo 页数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @param uuid 请求唯一标识,log中查询时间使用
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, String version, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, version, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param pageNo 页数
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, Integer pageNo, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, null, String.valueOf(maintainService.getNowVersion(tableName).getVersion()), findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页数据量
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, Integer pageSize, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo,pageSize, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param fieldList 筛选字段
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页数据量
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null,whereSegment,pageNo, null, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param fieldList 字段列表
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, Integer pageNo, boolean findMax) {
        return selectListByPageByVersion(character, tableName,null,Constant.WHERE_DEFAULT,pageNo, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax) {
        return selectListByPageByVersion(character, tableName, null,whereSegment, pageNo, null,version, findMax);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @param uuid 日志使用
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, String whereSegment, Integer pageNo, String version, boolean findMax, String uuid) {
        return selectListByPageByVersion(character, tableName, null,whereSegment, pageNo, null,version, findMax, uuid);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public List<Map<String, Object>> selectListByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
@@ -477,7 +774,17 @@
        return result;
    }
    /**
     *
     * @description:  根据条件获取数据sql语句
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据sql语句
     *
     */
    @Override
    public String selectByVersionSql(Character character, String tableName, List<String> fieldList, String whereSegment, String version, boolean findMax) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
@@ -577,6 +884,17 @@
        return result;
    }
    /**
     *
     * @description:  根据条件获取数据量
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据量
     *
     */
    @Override
    public Long getCountByVersion(Character character, String tableName, String whereSegment,  String version, boolean findMax) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
@@ -609,15 +927,56 @@
        }
        return count;
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页条数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) {
        return selectListByPageByVersion(character, tableName, fieldList, whereSegment, pageNo, pageSize, version, findMax, null);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param fieldList 字段列表
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页条数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax, String uuid) {
        return selectListByPageByVersion(character, tableName, fieldList, whereSegment, pageNo, pageSize, version, findMax, uuid, null);
    }
    /**
     *
     * @description:  根据条件获取数据
     * @param tableName 临时表名
     * @param character 用户
     * @param whereSegment 筛选条件
     * @param pageNo 页数
     * @param pageSize 每页条数
     * @param version 版本号
     * @param findMax 是否查询的最大版本的数据
     * @param uuid 供日志使用
     * @param page 已经计算好的分页对象
     * @return: 数据
     *
     */
    @Override
    public Result selectListByPageByVersion(Character character, String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax, String uuid, Page page) {
        String fieldStr = "";
@@ -781,11 +1140,29 @@
        return Result.success(resultobject);
    }
    /**
     *
     * @description:  上传数据后的操作
     * @param tableName 临时表名
     * @param uploadType 更新类型
     * @param userId 用户id
     * @return: 生成后的版本
     *
     */
    @Override
    public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId) {
        return uploadedData(tableName, uploadType, userId, true);
    }
    /**
     *
     * @description:  上传数据后的操作
     * @param tableName 临时表名
     * @param uploadType 更新类型
     * @param bigVersion 是否生成大版本
     * @param userId 用户id
     * @return: 生成后的版本
     *
     */
    @Override
    public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId, boolean bigVersion) {
        MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName));
@@ -891,6 +1268,7 @@
    //bak
    @Deprecated
    public Result selectListByPage(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
        long changeCount = maintainService.countVersionOperatorByType(tableName + Constant.RECORD, whereSegment, maintainFromVersion.getId(), Operate.create);
@@ -1244,7 +1622,14 @@
            return Result.error(CodeMsg.DELETE_ERROR);
        }
    }
    /**
     *
     * @description:  获取表中distinct后的值
     * @param tableName 临时表名
     * @param field 字段名
     * @return: 去重后的数据
     *
     */
    @Override
    public Set<String> getFieldValByTable(String tableName, String field) {
        //查缓存
@@ -1274,7 +1659,15 @@
        redisClient.putRedisList(key, new ArrayList(result));
        return result;
    }
    /**
     *
     * @description:  获取表中distinct后的值
     * @param maintainFieldId 字段版本id
     * @param tableName 表名
     * @param field 字段名
     * @return: 去重后的数据
     *
     */
    @Override
    public Set<String> getFieldValByMaintainField(String maintainFieldId, String field, String tableName) {
        //查缓存
@@ -1316,7 +1709,13 @@
        return result;
    }
    /**
     *
     * @description:  创建索引
     * @param recordTableName 记录表名称
     * @return:
     *
     */
    @Override
    public void createIdx(String recordTableName) {
        String idxName = MessageFormat.format(Constant.IDX_TEMPLATE, recordTableName, Constant.STD_ID);