瀏覽代碼

ORACLE数据接入到mysql

chenminghao 1 年之前
父節點
當前提交
4736f8aca8

+ 12 - 2
mq-crj-service/pom.xml

@@ -27,7 +27,17 @@
             <optional>true</optional>
             <version>1.18.20</version>
         </dependency>
-
+        <!-- oracle -->
+        <dependency>
+            <groupId>com.github.noraui</groupId>
+            <artifactId>ojdbc7</artifactId>
+            <version>12.1.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-dbutils</groupId>
+            <artifactId>commons-dbutils</artifactId>
+            <version>1.7</version>
+        </dependency>
         <!-- 海康SDK -->
         <dependency>
             <groupId>com.hikvision.ga</groupId>
@@ -54,7 +64,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.4.2</version>
+            <version>3.5.0</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.kafka</groupId>

+ 46 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/config/MybatisPlusConfig.java

@@ -0,0 +1,46 @@
+package cn.com.taiji.mqcrj.config;
+
+import cn.hutool.core.date.DateUtil;
+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.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.*;
+
+/**
+ * @author chen mh
+ * @date 2023/7/28 16:08
+ */
+@Configuration
+public class MybatisPlusConfig {
+    // 这里是存储需要动态变化的表,防止乱操作
+    static List<String> tableList(){
+        List<String> tables = new ArrayList<>();
+        //伪表名  可以为任意字符串 建议设置复杂度 避免重复    tables.add("C55EA8171877E962E08DFF63AA3678841");
+        tables.add("v_sg_");
+        return tables;
+    }
+    //拦截器,获取到表名给替换
+    @Bean
+    public MybatisPlusInterceptor dynamicTableNameInnerInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
+        dynamicTableNameInnerInterceptor.setTableNameHandler((sql, tableName) -> {
+            String newTable = null;
+            for (String table : tableList()) {
+                newTable = RequestDataHelper.getRequestData(table);
+                if (table.equals(tableName) && newTable!=null){
+                    tableName = newTable;
+                    break;
+                }
+            }
+            return tableName;
+        });
+        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
+        return interceptor;
+    }
+}
+
+

+ 51 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/config/RequestDataHelper.java

@@ -0,0 +1,51 @@
+package cn.com.taiji.mqcrj.config;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+
+import java.util.Map;
+
+/**
+ * @author chen mh
+ * @date 2023/7/28 16:10
+ */
+
+public class RequestDataHelper {
+    /**
+     * 请求参数存取
+     */
+    private static final ThreadLocal<Map<String, Object>> REQUEST_DATA = new ThreadLocal<>();
+
+    /**
+     * 设置请求参数
+     *
+     * @param requestData 请求参数 MAP 对象
+     */
+    public static void setRequestData(Map<String, Object> requestData) {
+        REQUEST_DATA.set(requestData);
+    }
+
+    /**
+     * 获取请求参数
+     *
+     * @param param 请求参数
+     * @return 请求参数 MAP 对象
+     */
+    public static <T> T getRequestData(String param) {
+        Map<String, Object> dataMap = getRequestData();
+        if (CollectionUtils.isNotEmpty(dataMap)) {
+            return (T) dataMap.get(param);
+        }
+        return null;
+    }
+
+    /**
+     * 获取请求参数
+     *
+     * @return 请求参数 MAP 对象
+     */
+    public static Map<String, Object> getRequestData() {
+        return REQUEST_DATA.get();
+    }
+}
+
+

+ 150 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/entity/AjxyrBean.java

@@ -0,0 +1,150 @@
+package cn.com.taiji.mqcrj.entity;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 10:10
+ */
+@Data
+@TableName("v_sg_")
+public class AjxyrBean {
+    @TableField(value = "TRANSACT_CASE_CODE")
+    private String TRANSACT_CASE_CODE;
+    @TableField(value = "SUSPECT_NO")
+    private String SUSPECT_NO;
+    @TableField(value = "CASE_CODE")
+    private String CASE_CODE;
+    @TableField(value = "NAME")
+    private String NAME;
+    @TableField(value = "ALIAS")
+    private String ALIAS;
+    @TableField(value = "NICKNAME")
+    private String NICKNAME;
+    @TableField(value = "SEX")
+    private String SEX;
+    @TableField(value = "NATIONALITY")
+    private String NATIONALITY;
+    @TableField(value = "PEOPLES")
+    private String PEOPLES;
+    @TableField(value = "ID_CARD_CODE")
+    private String ID_CARD_CODE;
+    @TableField(value = "EDUCATE_DEGREE")
+    private String EDUCATE_DEGREE;
+    @TableField(value = "AGE_SECTION")
+    private String AGE_SECTION;
+    @TableField(value = "AGE")
+    private String AGE;
+    @TableField(value = "STATURE_SECT")
+    private String STATURE_SECT;
+    @TableField(value = "STATURE")
+    private String STATURE;
+    @TableField(value = "ADDRESS")
+    private String ADDRESS;
+    @TableField(value = "LINK_TEL")
+    private String LINK_TEL;
+    @TableField(value = "OCCUPATION")
+    private String OCCUPATION;
+    @TableField(value = "WORK_ORGNIZATION")
+    private String WORK_ORGNIZATION;
+    @TableField(value = "POPULATION_TYPE")
+    private String POPULATION_TYPE;
+    @TableField(value = "STATUS")
+    private String STATUS;
+    @TableField(value = "BLOOD_TYPE")
+    private String BLOOD_TYPE;
+    @TableField(value = "ACCOUNT")
+    private String ACCOUNT;
+    @TableField(value = "LAWSUIT_NODE")
+    private String LAWSUIT_NODE;
+    @TableField(value = "REGISTER_PLACE")
+    private String REGISTER_PLACE;
+    @TableField(value = "NATIVE_PLACE")
+    private String NATIVE_PLACE;
+    @TableField(value = "DUTY")
+    private String DUTY;
+    @TableField(value = "BIRTHDAY_DATE")
+    private String BIRTHDAY_DATE;
+    @TableField(value = "RESUME")
+    private String RESUME;
+    @TableField(value = "IF_MINOR")
+    private String IF_MINOR;
+    @TableField(value = "HOUSEHOLD_NAME")
+    private String HOUSEHOLD_NAME;
+    @TableField(value = "ACCUSAL")
+    private String ACCUSAL;
+    @TableField(value = "MEASURE_TYPE")
+    private String MEASURE_TYPE;
+    @TableField(value = "MEASURE_TIME")
+    private String MEASURE_TIME;
+    @TableField(value = "MEASURE_DAYS")
+    private String MEASURE_DAYS;
+    @TableField(value = "MEASURE_END_DATE")
+    private String MEASURE_END_DATE;
+    @TableField(value = "MEASURE_REASON")
+    private String MEASURE_REASON;
+    @TableField(value = "MEASURE_PLACE")
+    private String MEASURE_PLACE;
+    @TableField(value = "MEASURE_DEPT")
+    private String MEASURE_DEPT;
+    @TableField(value = "CHARACTER")
+    private String CHARACTER;
+    @TableField(value = "PASSPORT_TYPE")
+    private String PASSPORT_TYPE;
+    @TableField(value = "PASSPORT_CODE")
+    private String PASSPORT_CODE;
+    @TableField(value = "FAMILY_ADDRESS")
+    private String FAMILY_ADDRESS;
+    @TableField(value = "ID_CARD_NAME")
+    private String ID_CARD_NAME;
+    @TableField(value = "MEASURE_PERSONS")
+    private String MEASURE_PERSONS;
+    @TableField(value = "OVER_FLAG")
+    private String OVER_FLAG;
+    @TableField(value = "IF_STAY")
+    private String IF_STAY;
+    @TableField(value = "STAY_CARD_CODE")
+    private String STAY_CARD_CODE;
+    @TableField(value = "RULE_AREA")
+    private String RULE_AREA;
+    @TableField(value = "UPTOWN")
+    private String UPTOWN;
+    @TableField(value = "FEATURE_CHARACTER")
+    private String FEATURE_CHARACTER;
+    @TableField(value = "CRIME_RECORD")
+    private String CRIME_RECORD;
+    @TableField(value = "MAIN_ACCESSORY")
+    private String MAIN_ACCESSORY;
+    @TableField(value = "COMMIT_NUMBER")
+    private String COMMIT_NUMBER;
+    @TableField(value = "COMMIT_REASON")
+    private String COMMIT_REASON;
+    @TableField(value = "ARREST_NUM")
+    private String ARREST_NUM;
+    @TableField(value = "LAW_DOC_CODE")
+    private String LAW_DOC_CODE;
+    @TableField(value = "JCJ_CODE")
+    private String JCJ_CODE;
+    @TableField(value = "ID_CARD_NAME_CODE")
+    private String ID_CARD_NAME_CODE;
+    @TableField(value = "REGISTER_DATE")
+    private String REGISTER_DATE;
+    @TableField(value = "CATCH_DATE")
+    private String CATCH_DATE;
+    @TableField(value = "WORKADDRESSDETAIL")
+    private String WORKADDRESSDETAIL;
+    @TableField(value = "FOOTLENGTH")
+
+    private String FOOTLENGTH;
+    @TableField(value = "SHOESCODE")
+    private String SHOESCODE;
+
+    public static void main(String[] args) {
+        AjxyrBean ajxyrBean = new AjxyrBean();
+        System.out.println(JSON.toJSONString(ajxyrBean, SerializerFeature.WRITE_MAP_NULL_FEATURES));
+    }
+}

+ 29 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/entity/MqwgrBean.java

@@ -0,0 +1,29 @@
+package cn.com.taiji.mqcrj.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 10:33
+ */
+@Data
+@TableName("v_sg_")
+public class MqwgrBean {
+    private String xm;
+    private String gmsfhm;
+    private String xb;
+    private String csrq;
+    private String djsj;
+    private String famc;
+    private String gxzrdw;
+    private String gj;
+    @TableField("CRSJ")
+    private String CRSJ;
+    @TableField("CJSJ")
+    private String CJSJ;
+    private String bkzt;
+    private String bz ;
+    private String rjka ;
+}

+ 13 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/mapper/AjxyrMapper.java

@@ -0,0 +1,13 @@
+package cn.com.taiji.mqcrj.mapper;
+
+import cn.com.taiji.mqcrj.entity.AjxyrBean;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 16:36
+ */
+@Mapper
+public interface AjxyrMapper extends BaseMapper<AjxyrBean> {
+}

+ 30 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/mapper/BaseCreateNewTableMapper.java

@@ -0,0 +1,30 @@
+package cn.com.taiji.mqcrj.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 15:45
+ */
+@Mapper
+public interface BaseCreateNewTableMapper {
+
+    /**
+     * 创建数据库表
+     *
+     * @param tableName 表名称
+     */
+    void createTableAjxyr(String tableName);
+
+    void createTableMqwgr(String tableName);
+
+    /**
+     * 修改表名
+     * @param newTable
+     * @param oldTable
+     */
+    void modifyTableName(String newTable,String oldTable);
+
+
+    void dropTable(String tableName);
+}

+ 13 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/mapper/MqwgrMapper.java

@@ -0,0 +1,13 @@
+package cn.com.taiji.mqcrj.mapper;
+
+import cn.com.taiji.mqcrj.entity.MqwgrBean;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 16:37
+ */
+@Mapper
+public interface MqwgrMapper extends BaseMapper<MqwgrBean> {
+}

+ 11 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/service/AjxyrService.java

@@ -0,0 +1,11 @@
+package cn.com.taiji.mqcrj.service;
+
+import cn.com.taiji.mqcrj.entity.AjxyrBean;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author chen mh
+ * @date 2023/7/27 10:43
+ */
+public interface AjxyrService extends IService<AjxyrBean> {
+}

+ 11 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/service/MqwgrService.java

@@ -0,0 +1,11 @@
+package cn.com.taiji.mqcrj.service;
+
+import cn.com.taiji.mqcrj.entity.MqwgrBean;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author chen mh
+ * @date 2023/7/27 10:49
+ */
+public interface MqwgrService extends IService<MqwgrBean> {
+}

+ 15 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/service/impl/AjxyrServiceImpl.java

@@ -0,0 +1,15 @@
+package cn.com.taiji.mqcrj.service.impl;
+
+import cn.com.taiji.mqcrj.entity.AjxyrBean;
+import cn.com.taiji.mqcrj.mapper.AjxyrMapper;
+import cn.com.taiji.mqcrj.service.AjxyrService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author chen mh
+ * @date 2023/7/27 10:44
+ */
+@Service
+public class AjxyrServiceImpl extends ServiceImpl<AjxyrMapper, AjxyrBean> implements AjxyrService {
+}

+ 15 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/service/impl/MqwgrServiceImpl.java

@@ -0,0 +1,15 @@
+package cn.com.taiji.mqcrj.service.impl;
+
+import cn.com.taiji.mqcrj.entity.MqwgrBean;
+import cn.com.taiji.mqcrj.mapper.MqwgrMapper;
+import cn.com.taiji.mqcrj.service.MqwgrService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author chen mh
+ * @date 2023/7/27 10:49
+ */
+@Service
+public class MqwgrServiceImpl extends ServiceImpl<MqwgrMapper, MqwgrBean> implements MqwgrService {
+}

+ 181 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/task/OracleScheduleTask.java

@@ -0,0 +1,181 @@
+package cn.com.taiji.mqcrj.task;
+
+import cn.com.taiji.mqcrj.config.RequestDataHelper;
+import cn.com.taiji.mqcrj.entity.AjxyrBean;
+import cn.com.taiji.mqcrj.entity.MqwgrBean;
+import cn.com.taiji.mqcrj.mapper.BaseCreateNewTableMapper;
+import cn.com.taiji.mqcrj.mapper.MqwgrMapper;
+import cn.com.taiji.mqcrj.service.AjxyrService;
+import cn.com.taiji.mqcrj.service.MqwgrService;
+import cn.com.taiji.mqcrj.utils.JDBCUtils;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author chen mh
+ * @date 2023/7/26 8:36
+ */
+@Slf4j
+@Component
+public class OracleScheduleTask {
+
+
+    @Resource
+    private BaseCreateNewTableMapper baseCreateNewTableMapper;
+
+    @Resource
+    private AjxyrService ajxyrService;
+
+    @Resource
+    private MqwgrService mqwgrService;
+
+    @Scheduled(cron = "2 55 2 * * ?")
+    public void AjxyrTask() {
+        log.info("执行定时任务 AjxyrTask -{}",DateUtil.date());
+        Connection connection = JDBCUtils.getConnection();
+        String sqlCount = "select count(*) from hndmc.v_ajxyr";
+        PreparedStatement ps = null;
+        ResultSet rs = null;
+
+        PreparedStatement preparedStatement = null;
+        ResultSet resultSet = null;
+        try {
+            ps = connection.prepareStatement(sqlCount);
+            rs = ps.executeQuery();
+            int count;
+            if(rs.next()){
+                count = rs.getInt(1);
+                log.info("数据总量是:{}",count);
+                if(count>0){
+                    //创建新表
+                    String format = DateUtil.format(DateUtil.yesterday(), "YYYYMMdd");
+                    baseCreateNewTableMapper.createTableAjxyr("v_sg_ajxyr_"+format);
+                }else {
+                    return;
+                }
+            }else {
+                return;
+            }
+            for(int x = 0;x<count/10000+1;x++){
+                int max = (x+1)*10000;
+                int min = x*10000;
+                String sql = "select * from (select v.*,rownum rn from hndmc.v_ajxyr v where ROWNUM <= "+max+") where rn>"+min;
+                preparedStatement = connection.prepareStatement(sql);
+                resultSet = preparedStatement.executeQuery();
+
+                // 获取ResultSet对象的列的数量、类型和属性。
+                ResultSetMetaData md = resultSet.getMetaData();
+                int columnCount = md.getColumnCount();
+                // 将ResultSet对象的列名和值存到map中,再将map转换为json字符串,最后将json字符串转换为实体类对象
+                List<AjxyrBean> objectBeanList = new ArrayList<>();
+                Map<String, Object> rowData = new HashMap<>(16);
+                while (resultSet.next()) {
+                    for (int i = 1; i <= columnCount; i++) {
+                        rowData.put(md.getColumnLabel(i), resultSet.getObject(i));
+                    }
+                    String jsonStr = JSONObject.toJSONString(rowData);
+                    AjxyrBean objectBean = JSONObject.parseObject(jsonStr, AjxyrBean.class);
+                    objectBeanList.add(objectBean);
+                }
+                RequestDataHelper.setRequestData(new HashMap<String, Object>() {{
+                    put("v_sg_", "v_sg_ajxyr_"+DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"));
+                }});
+                ajxyrService.saveBatch(objectBeanList);
+                preparedStatement.close();
+                resultSet.close();
+            }
+            log.info("数据导入结束后表名修改");
+            //数据导入结束后表名修改
+            baseCreateNewTableMapper.modifyTableName("v_sg_ajxyr_his"+DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"),"v_sg_ajxyr");
+            baseCreateNewTableMapper.modifyTableName("v_sg_ajxyr","v_sg_ajxyr_"+DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"));
+            //删除七天前的数据表
+            baseCreateNewTableMapper.dropTable("v_sg_ajxyr_his"+DateUtil.format(DateUtil.offsetDay(DateUtil.date(),-8), "YYYYMMdd"));
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }finally {
+            JDBCUtils.closeResource(connection,ps,rs);
+            JDBCUtils.closeResource(connection,preparedStatement,resultSet);
+        }
+
+    }
+
+
+    @Scheduled(cron = "25 53 1 * * ?")
+    public void MqwgrTask() {
+        log.info("执行定时任务 MqwgrTask -{}",DateUtil.date());
+        Connection connection = JDBCUtils.getConnection();
+        String sqlCount = "select count(*) from hndmc.v_sg_mqwgr";
+        PreparedStatement ps = null;
+        ResultSet rs = null;
+        PreparedStatement preparedStatement = null;
+        ResultSet resultSet = null;
+        try {
+            ps = connection.prepareStatement(sqlCount);
+            rs = ps.executeQuery();
+            int count;
+            if(rs.next()){
+                count = rs.getInt(1);
+                log.info("数据总量是:{}",count);
+                if(count>0){
+                    //创建新表
+                    String format = DateUtil.format(DateUtil.yesterday(), "YYYYMMdd");
+                    baseCreateNewTableMapper.createTableMqwgr("v_sg_mqwgr_"+format);
+                }else {
+                    return;
+                }
+            }else {
+                return;
+            }
+            for(int x = 0;x<count/10000+1;x++) {
+                int max = (x + 1) * 10000;
+                int min = x * 10000;
+                String sql = "select * from (select v.*,rownum rn from hndmc.v_sg_mqwgr v where ROWNUM <= "+max+") where rn>"+min;
+                preparedStatement = connection.prepareStatement(sql);
+                resultSet = preparedStatement.executeQuery();
+
+                // 获取ResultSet对象的列的数量、类型和属性。
+                ResultSetMetaData md = resultSet.getMetaData();
+                int columnCount = md.getColumnCount();
+                // 将ResultSet对象的列名和值存到map中,再将map转换为json字符串,最后将json字符串转换为实体类对象
+                List<MqwgrBean> mqwgrBeans = new ArrayList<>();
+                Map<String, Object> rowData = new HashMap<>(16);
+                while (resultSet.next()) {
+                    for (int i = 1; i <= columnCount; i++) {
+                        rowData.put(md.getColumnLabel(i), resultSet.getObject(i));
+                    }
+                    String jsonStr = JSONObject.toJSONString(rowData);
+                    MqwgrBean objectBean = JSONObject.parseObject(jsonStr, MqwgrBean.class);
+                    mqwgrBeans.add(objectBean);
+                }
+                RequestDataHelper.setRequestData(new HashMap<String, Object>() {{
+                    put("v_sg_", "v_sg_mqwgr_" + DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"));
+                }});
+                mqwgrService.saveBatch(mqwgrBeans);
+                preparedStatement.close();
+                resultSet.close();
+            }
+            log.info("数据导入结束后表名修改");
+            //数据导入结束后表名修改
+            baseCreateNewTableMapper.modifyTableName("v_sg_mqwgr_his"+DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"),"v_sg_mqwgr");
+            baseCreateNewTableMapper.modifyTableName("v_sg_mqwgr","v_sg_mqwgr_"+DateUtil.format(DateUtil.yesterday(), "YYYYMMdd"));
+
+            //删除七天前的数据表
+            baseCreateNewTableMapper.dropTable("v_sg_mqwgr_his"+DateUtil.format(DateUtil.offsetDay(DateUtil.date(),-8), "YYYYMMdd"));
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }finally {
+            JDBCUtils.closeResource(connection,ps,rs);
+            JDBCUtils.closeResource(connection,preparedStatement,resultSet);
+        }
+    }
+}

+ 66 - 0
mq-crj-service/src/main/java/cn/com/taiji/mqcrj/utils/JDBCUtils.java

@@ -0,0 +1,66 @@
+package cn.com.taiji.mqcrj.utils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.sql.*;
+
+/**
+ * @author chen mh
+ * @date 2023/7/25 17:59
+ */
+@Slf4j
+public class JDBCUtils {
+
+
+    private static final String user = "TO_SG";
+    private static final String password = "TO_SG@6677";
+    private static final String url ="jdbc:oracle:thin:@//74.6.50.235:1521/ORCL";
+    private static final String driverClass ="oracle.jdbc.driver.OracleDriver";
+
+    public static Connection getConnection(){
+        Connection con = null;
+        try {
+            //获取参数
+            log.info("数据库参数:"+user +password +url +driverClass);
+            //2.加载驱动
+            Class.forName(driverClass);
+            //3.获取连接
+            con = DriverManager.getConnection(url,user,password);
+        } catch (Exception e) {
+            log.info("数据库连接错误"+e);
+            throw new RuntimeException(e);
+        }
+        return con;
+    }
+
+    /**
+     * 关闭连接、Statement和ResultSet
+     * @param con
+     * @param ps
+     */
+    public static void closeResource(Connection con, Statement ps, ResultSet rs) {
+        //资源关闭
+        try {
+            if(ps != null){
+                ps.close();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        try {
+            if(con != null){
+                con.close();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        try {
+            if(rs != null){
+                rs.close();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 1 - 1
mq-crj-service/src/main/resources/application-gaxxw.yml

@@ -1,5 +1,5 @@
 server:
-  port: 9099
+  port: 9091
 
 spring:
   datasource:

+ 104 - 0
mq-crj-service/src/main/resources/mapper/CreateNewTableMapper.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.taiji.mqcrj.mapper.BaseCreateNewTableMapper">
+
+    <update id="createTableAjxyr" parameterType="string">
+        CREATE TABLE `${tableName}` (
+                                         `WORK_ORGNIZATION` VARCHAR(50),
+                                         `POPULATION_TYPE` VARCHAR(5),
+                                         `REGISTER_PLACE` VARCHAR(255),
+                                         `HOUSEHOLD_NAME` VARCHAR(255),
+                                         `MEASURE_END_DATE` VARCHAR(255),
+                                         `MEASURE_REASON` TEXT,
+                                         `MEASURE_PERSONS` VARCHAR(255),
+                                         `TRANSACT_CASE_CODE` VARCHAR(255),
+                                         `STAY_CARD_CODE` VARCHAR(255),
+                                         `FEATURE_CHARACTER` VARCHAR(255),
+                                         `EDUCATE_DEGREE` VARCHAR(255),
+                                         `FAMILY_ADDRESS` VARCHAR(255),
+                                         `MAIN_ACCESSORY` VARCHAR(255),
+                                         `ID_CARD_NAME_CODE` VARCHAR(255),
+                                         `WORKADDRESSDETAIL` VARCHAR(255),
+                                         `ACCUSAL` VARCHAR(255),
+                                         `RESUME` TEXT,
+                                         `BLOOD_TYPE` VARCHAR(255),
+                                         `COMMIT_NUMBER` VARCHAR(255),
+                                         `NAME` VARCHAR(100),
+                                         `NATIVE_PLACE` VARCHAR(255),
+                                         `IF_MINOR` VARCHAR(5),
+                                         `MEASURE_DEPT` VARCHAR(255),
+                                         `IF_STAY` VARCHAR(255),
+                                         `ID_CARD_CODE` VARCHAR(255),
+                                         `SUSPECT_NO` VARCHAR(255),
+                                         `SEX` VARCHAR(5),
+                                         `AGE_SECTION` VARCHAR(255),
+                                         `STATURE` VARCHAR(255),
+                                         `ADDRESS` VARCHAR(255),
+                                         `CASE_CODE` VARCHAR(255),
+                                         `OCCUPATION` VARCHAR(255),
+                                         `NICKNAME` VARCHAR(255),
+                                         `STATURE_SECT` VARCHAR(255),
+                                         `AGE` VARCHAR(255),
+                                         `ACCOUNT` VARCHAR(255),
+                                         `MEASURE_TIME` VARCHAR(255),
+                                         `MEASURE_DAYS` VARCHAR(255),
+                                         `CHARACTER` VARCHAR(255),
+                                         `LAW_DOC_CODE` VARCHAR(255),
+                                         `CATCH_DATE` VARCHAR(255),
+                                         `CRIME_RECORD` TEXT,
+                                         `DUTY` VARCHAR(20),
+                                         `PASSPORT_TYPE` VARCHAR(255),
+                                         `PEOPLES` VARCHAR(255),
+                                         `RULE_AREA` VARCHAR(255),
+                                         `BIRTHDAY_DATE` VARCHAR(255),
+                                         `REGISTER_DATE` VARCHAR(255),
+                                         `FOOTLENGTH` VARCHAR(255),
+                                         `SHOESCODE` VARCHAR(10),
+                                         `LAWSUIT_NODE` VARCHAR(255),
+                                         `ID_CARD_NAME` VARCHAR(255),
+                                         `ALIAS` VARCHAR(255),
+                                         `MEASURE_TYPE` VARCHAR(255),
+                                         `JCJ_CODE` VARCHAR(255),
+                                         `PASSPORT_CODE` VARCHAR(255),
+                                         `NATIONALITY` VARCHAR(255),
+                                         `STATUS` VARCHAR(255),
+                                         `COMMIT_REASON` VARCHAR(255),
+                                         `MEASURE_PLACE` VARCHAR(255),
+                                         `LINK_TEL` VARCHAR(255),
+                                         `ARREST_NUM` VARCHAR(255),
+                                         `OVER_FLAG` VARCHAR(255),
+                                         `UPTOWN` VARCHAR(100),
+                                         INDEX INDEX_ID(`ID_CARD_CODE`)
+        )
+    </update>
+
+    <update id="createTableMqwgr" parameterType="string">
+        CREATE TABLE `${tableName}` (
+                                         `xm` VARCHAR(50),
+                                         `gmsfhm` VARCHAR(100),
+                                         `xb` VARCHAR(10),
+                                         `csrq` VARCHAR(255),
+                                         `djsj` VARCHAR(255),
+                                         `famc` VARCHAR(20),
+                                         `gxzrdw` VARCHAR(255),
+                                         `gj` VARCHAR(20),
+                                         `CRSJ` VARCHAR(20),
+                                         `CJSJ` VARCHAR(20),
+                                         `bkzt` VARCHAR(10),
+                                         `bz` VARCHAR(255),
+                                         `rjka` VARCHAR(100),
+                                         INDEX INDEX_SFHM(`gmsfhm`)
+                                     )
+    </update>
+
+    <update id="modifyTableName" parameterType="string">
+        RENAME TABLE ${oldTable} TO ${newTable}
+    </update>
+
+
+    <update id="dropTable" parameterType="string">
+        DROP TABLE IF EXISTS ${tableName}
+    </update>
+</mapper>