diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java new file mode 100644 index 0000000..54c5ecf --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java @@ -0,0 +1,47 @@ +package org.springnewfiber.dataadapter.config; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.collect.HashBasedTable; + +import java.util.Date; +import java.util.Map; + +public class RequestDataHelper { + /** + * 请求参数存取 + */ + private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + +// private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + + /** + * 设置请求参数 + * + * @param requestData 请求参数 MAP 对象 + */ + public static void setRequestData(Map requestData) { + REQUEST_DATA.set(requestData); + } + + /** + * 获取请求参数 + * + * @param param 请求参数 + * @return 请求参数 MAP 对象 + */ + public static T getRequestData(String param) { + Map dataMap = getRequestData(); + if (CollUtil.isNotEmpty(dataMap)) { + return (T) dataMap.get(param); + } + return null; + } + /** + * 获取请求参数 + * + * @return 请求参数 MAP 对象 + */ + public static Map getRequestData() { + return REQUEST_DATA.get(); + } +} diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java new file mode 100644 index 0000000..54c5ecf --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java @@ -0,0 +1,47 @@ +package org.springnewfiber.dataadapter.config; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.collect.HashBasedTable; + +import java.util.Date; +import java.util.Map; + +public class RequestDataHelper { + /** + * 请求参数存取 + */ + private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + +// private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + + /** + * 设置请求参数 + * + * @param requestData 请求参数 MAP 对象 + */ + public static void setRequestData(Map requestData) { + REQUEST_DATA.set(requestData); + } + + /** + * 获取请求参数 + * + * @param param 请求参数 + * @return 请求参数 MAP 对象 + */ + public static T getRequestData(String param) { + Map dataMap = getRequestData(); + if (CollUtil.isNotEmpty(dataMap)) { + return (T) dataMap.get(param); + } + return null; + } + /** + * 获取请求参数 + * + * @return 请求参数 MAP 对象 + */ + public static Map getRequestData() { + return REQUEST_DATA.get(); + } +} diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java index 4c23aca..16fb503 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java @@ -31,6 +31,8 @@ StSlwtRData("StSlwtRData","其他水体监测数据"), dhgx_szq("dhgx_szq","东湖高新-水质船"), WhjkSzqData("WhjkSzqData","公司水质船"), + InwamntData("InwamntData","供水厂入水数据-水源地数据"), + OutwamntData("OutwamntData","供水厂出水数据"), ; private String code; private String remark; diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java new file mode 100644 index 0000000..54c5ecf --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java @@ -0,0 +1,47 @@ +package org.springnewfiber.dataadapter.config; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.collect.HashBasedTable; + +import java.util.Date; +import java.util.Map; + +public class RequestDataHelper { + /** + * 请求参数存取 + */ + private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + +// private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + + /** + * 设置请求参数 + * + * @param requestData 请求参数 MAP 对象 + */ + public static void setRequestData(Map requestData) { + REQUEST_DATA.set(requestData); + } + + /** + * 获取请求参数 + * + * @param param 请求参数 + * @return 请求参数 MAP 对象 + */ + public static T getRequestData(String param) { + Map dataMap = getRequestData(); + if (CollUtil.isNotEmpty(dataMap)) { + return (T) dataMap.get(param); + } + return null; + } + /** + * 获取请求参数 + * + * @return 请求参数 MAP 对象 + */ + public static Map getRequestData() { + return REQUEST_DATA.get(); + } +} diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java index 4c23aca..16fb503 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java @@ -31,6 +31,8 @@ StSlwtRData("StSlwtRData","其他水体监测数据"), dhgx_szq("dhgx_szq","东湖高新-水质船"), WhjkSzqData("WhjkSzqData","公司水质船"), + InwamntData("InwamntData","供水厂入水数据-水源地数据"), + OutwamntData("OutwamntData","供水厂出水数据"), ; private String code; private String remark; diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java index d6de312..5d29927 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java @@ -1,7 +1,9 @@ package org.springnewfiber.dataadapter.xf.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springnewfiber.dataadapter.xf.entity.DataAccessRecord; /** @@ -11,4 +13,6 @@ @Mapper public interface DataAccessRecordMapper extends BaseMapper { + int createTable(@Param("tableName") String tableName); + int selectTableExists(@Param("tableName") String tableName); } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java new file mode 100644 index 0000000..54c5ecf --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java @@ -0,0 +1,47 @@ +package org.springnewfiber.dataadapter.config; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.collect.HashBasedTable; + +import java.util.Date; +import java.util.Map; + +public class RequestDataHelper { + /** + * 请求参数存取 + */ + private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + +// private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + + /** + * 设置请求参数 + * + * @param requestData 请求参数 MAP 对象 + */ + public static void setRequestData(Map requestData) { + REQUEST_DATA.set(requestData); + } + + /** + * 获取请求参数 + * + * @param param 请求参数 + * @return 请求参数 MAP 对象 + */ + public static T getRequestData(String param) { + Map dataMap = getRequestData(); + if (CollUtil.isNotEmpty(dataMap)) { + return (T) dataMap.get(param); + } + return null; + } + /** + * 获取请求参数 + * + * @return 请求参数 MAP 对象 + */ + public static Map getRequestData() { + return REQUEST_DATA.get(); + } +} diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java index 4c23aca..16fb503 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java @@ -31,6 +31,8 @@ StSlwtRData("StSlwtRData","其他水体监测数据"), dhgx_szq("dhgx_szq","东湖高新-水质船"), WhjkSzqData("WhjkSzqData","公司水质船"), + InwamntData("InwamntData","供水厂入水数据-水源地数据"), + OutwamntData("OutwamntData","供水厂出水数据"), ; private String code; private String remark; diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java index d6de312..5d29927 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java @@ -1,7 +1,9 @@ package org.springnewfiber.dataadapter.xf.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springnewfiber.dataadapter.xf.entity.DataAccessRecord; /** @@ -11,4 +13,6 @@ @Mapper public interface DataAccessRecordMapper extends BaseMapper { + int createTable(@Param("tableName") String tableName); + int selectTableExists(@Param("tableName") String tableName); } diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml new file mode 100644 index 0000000..eff468a --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml @@ -0,0 +1,21 @@ + + + + + CREATE TABLE If Not Exists ${tableName} ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', + `access_type` varchar(32) DEFAULT NULL COMMENT '接入方式(实时 realtime | 历史 history)', + `data_type` varchar(32) DEFAULT NULL COMMENT '接入数据类型', + `content` text COMMENT '接入数据内容', + `content_hash` varchar(255) DEFAULT NULL COMMENT '接入数据内容摘要(用于比较是否重复推送)', + `time_consume` int(11) DEFAULT NULL COMMENT '耗时(毫秒)', + `result` text COMMENT '数据接入结果', + `create_datetime` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `access_type` (`access_type`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据接入记录' + + + diff --git a/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java new file mode 100644 index 0000000..03d2311 --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/MybatisPlusConfig.java @@ -0,0 +1,57 @@ +package org.springnewfiber.dataadapter.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springnewfiber.dataadapter.xf.XfDataEnum; +import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +@Configuration +public class MybatisPlusConfig { + + static List tableList(){ + List tables = new ArrayList<>(); +// for (XfDataEnum value : XfDataEnum.values()) { +// String tableName="t_data_access_record".concat("_").concat(value.getCode()); +// tables.add(tableName); +// } + tables.add("t_data_access_record"); + return tables; + } + @Resource + private DataAccessRecordMapper dataAccessRecordMapper; + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor paginationInterceptor = new MybatisPlusInterceptor(); + DynamicTableNameInnerInterceptor dynamicTableNameParser = new DynamicTableNameInnerInterceptor(); + dynamicTableNameParser.setTableNameHandlerMap(new HashMap(XfDataEnum.values().length) {{ + //metaObject 元对象 ;sql 执行的SQL ;tableName 表名 + //这里put的key就是需要替换的原始表名,也就是实体类的表名 + //这里的tableName就是我们定义的动态表名变量, + for (String table : tableList()) { + put(table, (sql, tableName) -> { + // 获取传入参数 tableName,tableName的值就是替换后的表名 + String newTable=RequestDataHelper.getRequestData(table); + //判断表是否存在 + if (newTable!=null){ + int count= dataAccessRecordMapper.selectTableExists(newTable); + if(count==0){ + dataAccessRecordMapper.createTable(newTable); + } + return newTable; + } + return table; + }); + } + }}); + paginationInterceptor.addInnerInterceptor(dynamicTableNameParser); + return paginationInterceptor; + } + } diff --git a/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java new file mode 100644 index 0000000..54c5ecf --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/config/RequestDataHelper.java @@ -0,0 +1,47 @@ +package org.springnewfiber.dataadapter.config; + +import cn.hutool.core.collection.CollUtil; +import com.google.common.collect.HashBasedTable; + +import java.util.Date; +import java.util.Map; + +public class RequestDataHelper { + /** + * 请求参数存取 + */ + private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + +// private static final ThreadLocal> REQUEST_DATA = new ThreadLocal<>(); + + /** + * 设置请求参数 + * + * @param requestData 请求参数 MAP 对象 + */ + public static void setRequestData(Map requestData) { + REQUEST_DATA.set(requestData); + } + + /** + * 获取请求参数 + * + * @param param 请求参数 + * @return 请求参数 MAP 对象 + */ + public static T getRequestData(String param) { + Map dataMap = getRequestData(); + if (CollUtil.isNotEmpty(dataMap)) { + return (T) dataMap.get(param); + } + return null; + } + /** + * 获取请求参数 + * + * @return 请求参数 MAP 对象 + */ + public static Map getRequestData() { + return REQUEST_DATA.get(); + } +} diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java index 4c23aca..16fb503 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/XfDataEnum.java @@ -31,6 +31,8 @@ StSlwtRData("StSlwtRData","其他水体监测数据"), dhgx_szq("dhgx_szq","东湖高新-水质船"), WhjkSzqData("WhjkSzqData","公司水质船"), + InwamntData("InwamntData","供水厂入水数据-水源地数据"), + OutwamntData("OutwamntData","供水厂出水数据"), ; private String code; private String remark; diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java index d6de312..5d29927 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.java @@ -1,7 +1,9 @@ package org.springnewfiber.dataadapter.xf.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springnewfiber.dataadapter.xf.entity.DataAccessRecord; /** @@ -11,4 +13,6 @@ @Mapper public interface DataAccessRecordMapper extends BaseMapper { + int createTable(@Param("tableName") String tableName); + int selectTableExists(@Param("tableName") String tableName); } diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml new file mode 100644 index 0000000..eff468a --- /dev/null +++ b/src/main/java/org/springnewfiber/dataadapter/xf/mapper/DataAccessRecordMapper.xml @@ -0,0 +1,21 @@ + + + + + CREATE TABLE If Not Exists ${tableName} ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号', + `access_type` varchar(32) DEFAULT NULL COMMENT '接入方式(实时 realtime | 历史 history)', + `data_type` varchar(32) DEFAULT NULL COMMENT '接入数据类型', + `content` text COMMENT '接入数据内容', + `content_hash` varchar(255) DEFAULT NULL COMMENT '接入数据内容摘要(用于比较是否重复推送)', + `time_consume` int(11) DEFAULT NULL COMMENT '耗时(毫秒)', + `result` text COMMENT '数据接入结果', + `create_datetime` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `access_type` (`access_type`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据接入记录' + + + diff --git a/src/main/java/org/springnewfiber/dataadapter/xf/service/DataAccessRecordService.java b/src/main/java/org/springnewfiber/dataadapter/xf/service/DataAccessRecordService.java index 6a3da3e..6cd49bd 100644 --- a/src/main/java/org/springnewfiber/dataadapter/xf/service/DataAccessRecordService.java +++ b/src/main/java/org/springnewfiber/dataadapter/xf/service/DataAccessRecordService.java @@ -1,10 +1,17 @@ package org.springnewfiber.dataadapter.xf.service; +import cn.hutool.core.date.DateUtil; import cn.hutool.crypto.digest.DigestUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.time.LocalDateTime; import java.util.Date; +import java.util.HashMap; +import java.util.Map; + import org.springframework.stereotype.Service; +import org.springnewfiber.dataadapter.config.RequestDataHelper; import org.springnewfiber.dataadapter.xf.entity.DataAccessRecord; import org.springnewfiber.dataadapter.xf.enums.EDataAccessType; import org.springnewfiber.dataadapter.xf.mapper.DataAccessRecordMapper; @@ -19,6 +26,11 @@ public class DataAccessRecordService extends ServiceImpl { public Integer save(EDataAccessType accessType, String dataType, String content){ + RequestDataHelper.setRequestData(new HashMap() {{ + int year=DateUtil.thisYear(); + int month=DateUtil.thisMonth(); + put("t_data_access_record", "t_data_access_record".concat("_").concat(String.valueOf(year)).concat(String.valueOf(month+1))); + }}); DataAccessRecord dataAccessRecord = new DataAccessRecord(); dataAccessRecord.setAccessType(accessType.getCode()); dataAccessRecord.setDataType(dataType); @@ -26,6 +38,7 @@ dataAccessRecord.setContentHash(DigestUtil.md5Hex(content)); dataAccessRecord.setCreateDatetime(new Date()); save(dataAccessRecord); + return dataAccessRecord.getId(); }