linwei
2026-02-09 447b83515ae498f46e9d959e7c07f733647fdf06
init
4 files modified
87 ■■■■ changed files
jobs.xml 28 ●●●●● patch | view | raw | blame | history
pom.xml 10 ●●●●● patch | view | raw | blame | history
src/main/java/cn/net/communion/dbdatasync/App.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java 46 ●●●●● patch | view | raw | blame | history
jobs.xml
@@ -59,7 +59,7 @@
<!--            <destTableKey>id</destTableKey>-->
<!--            <destTableUpdate>tenant_id,parent_id,code,dict_key,dict_value,sort,remark,is_sealed,is_deleted</destTableUpdate>-->
<!--        </job>-->
        <job>
        <!-- <job>
            <name>ja_fw_alarm_favorite_sync</name>
            <cron>0/10 * * * * ?</cron>
            <srcSql>SELECT * from ja_fw_alarm_favorite</srcSql>
@@ -67,7 +67,7 @@
            <destTableFields>id,alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableFields>
            <destTableKey>id</destTableKey>
            <destTableUpdate>alarm_record_id,user_id,title,remark,create_time,create_user,create_dept,update_user,update_time,status,is_deleted</destTableUpdate>
        </job>
        </job> -->
<!--        <job>-->
<!--            <name>ja_fw_area_divide_sync</name>-->
<!--            <cron>0/10 * * * * ?</cron>-->
@@ -293,15 +293,17 @@
<!--            <destTableKey>id</destTableKey>-->
<!--            <destTableUpdate>matter_name,matter_code,area_code,area_name,org_code,org_name,catalog_code,implement_code,implement_name,process_definition_id,process_instance_id,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
<!--        </job>-->
<!--        <job>-->
<!--            <name>ja_gd_manage_device_sync</name>-->
<!--            <cron>0/10 * * * * ?</cron>-->
<!--            <srcSql>SELECT * from ja_gd_manage_device</srcSql>-->
<!--            <destTable>ja_gd_manage_device</destTable>-->
<!--            <destTableFields>id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>-->
<!--            <destTableKey>id</destTableKey>-->
<!--            <destTableUpdate>airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
<!--        </job>-->
        <job>
           <name>ja_gd_manage_device_sync</name>
           <cron>0/10 * * * * ?</cron>
           <srcSql>SELECT id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,ST_AsText(geom) as geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted from ja_gd_manage_device</srcSql>
           <destTable>ja_gd_manage_device</destTable>
           <destTableFields>id,airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableFields>
           <destTableKey>id</destTableKey>
           <destTableUpdate>airport_id,device_sn,child_sn,device_name,longitude,latitude,nickname,device_type,device_payload,geom,firmware_version,mode_code,insure_expired_time,traffic_remaining,traffic_expire_time,location,height,is_with_dock,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>
       </job>
<!--        <job>-->
<!--            <name>ja_gd_material_sync</name>-->
<!--            <cron>0/10 * * * * ?</cron>-->
@@ -374,6 +376,8 @@
<!--            <destTableKey>id</destTableKey>-->
<!--            <destTableUpdate>implement_list_id,material_id,sort,scenario_config,status,create_user,create_dept,create_time,update_user,update_time,is_deleted</destTableUpdate>-->
<!--        </job>-->
<!--        <job>-->
<!--            <name>ja_gd_work_order_sync</name>-->
<!--            <cron>0/10 * * * * ?</cron>-->
@@ -383,6 +387,8 @@
<!--            <destTableKey>id</destTableKey>-->
<!--            <destTableUpdate>work_order_name,work_order_code,work_order_type,device_load_demand,recommend_device_ids,work_order_status,execute_start_time,execute_end_time,service_party,geom,remark,reject_reason,full_snapshot,area_code,create_user,create_dept,create_time,update_user,update_time,status,is_deleted</destTableUpdate>-->
<!--        </job>-->
<!--        <job>-->
<!--            <name>ja_gd_work_order_flow_sync</name>-->
<!--            <cron>0/10 * * * * ?</cron>-->
pom.xml
@@ -71,7 +71,17 @@
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
src/main/java/cn/net/communion/dbdatasync/App.java
@@ -106,6 +106,9 @@
    }
    public static void main(String[] args )
    {
        // 设置默认编码为 UTF-8
        System.setProperty("file.encoding", "UTF-8");
        App app = new App();
        app.init();
        app.start();
src/main/java/cn/net/communion/dbdatasync/dbhelper/impl/PostgreSql.java
@@ -27,9 +27,14 @@
        while (rs.next()) {
            sql.append("(");
            for (int index = 0; index < fields.length; index++) {
                String value = rs.getString(fields[index]);
                String fieldName = fields[index].trim();
                String value = rs.getString(fieldName);
                if (value == null) {
                    sql.append("NULL"); // 显式处理 NULL 值
                } else if (isGeometryField(fieldName)) {
                    // 处理几何类型字段,使用 ST_GeomFromText 函数
                    logger.debug("Processing geometry field: " + fieldName + " with value: " + value);
                    sql.append(handleGeometryData(value));
                } else {
                    sql.append("'").append(value).append("'"); // 字符串值加引号
                }
@@ -55,6 +60,45 @@
        return null;
    }
    /**
     * 判断是否为几何类型字段
     *
     * @param fieldName 字段名
     * @return 是否为几何类型字段
     */
    private boolean isGeometryField(String fieldName) {
        // 常见的几何类型字段名
        return fieldName.equalsIgnoreCase("geom") ||
               fieldName.contains("geometry") ||
               fieldName.contains("geom_");
    }
    /**
     * 处理几何类型数据
     *
     * @param value 几何数据值
     * @return 处理后的几何数据
     */
    private String handleGeometryData(String value) {
        logger.debug("原始几何数据值: " + value);
        if (value == null || value.isEmpty()) {
            logger.debug("几何数据为空,返回 NULL");
            return "NULL";
        }
        // 尝试不同的几何数据格式处理
        try {
            // 直接尝试使用 ST_GeomFromText 函数来转换几何数据
            // 不再检查是否为标准的 WKT 格式,因为 MySQL 的 ST_AsText 函数已经保证返回标准的 WKT 格式
            logger.debug("尝试使用 ST_GeomFromText 函数转换几何数据: " + value.substring(0, Math.min(value.length(), 50)) + "...");
            return "ST_GeomFromText('" + value + "')";
        } catch (Exception e) {
            logger.error("处理几何数据时出错: " + e.getMessage() + ", 原始值: " + value);
            return "NULL"; // 出错时返回 NULL
        }
    }
    @Override