| | |
| | | <!-- <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> |
| | |
| | | <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>--> |
| | |
| | | <!-- <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>--> |
| | |
| | | <!-- <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>--> |
| | |
| | | <!-- <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>--> |
| | |
| | | <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> |
| | |
| | | } |
| | | public static void main(String[] args ) |
| | | { |
| | | // 设置默认编码为 UTF-8 |
| | | System.setProperty("file.encoding", "UTF-8"); |
| | | |
| | | App app = new App(); |
| | | app.init(); |
| | | app.start(); |
| | |
| | | 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("'"); // 字符串值加引号 |
| | | } |
| | |
| | | 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 |