diff --git a/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceDataCenterController.java b/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceDataCenterController.java index f68bc6b2c..1773ac841 100644 --- a/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceDataCenterController.java +++ b/src/main/java/com/zhgd/xmgl/modules/risk/controller/RiskListSourceDataCenterController.java @@ -175,8 +175,8 @@ public class RiskListSourceDataCenterController { if (CollUtil.isEmpty(sourceVos)) { return Result.ok(); } - Date begin = DateUtil.parseDateTime(MapUtils.getString(param, "effectiveTimeEnd_begin")); - Date end = DateUtil.parseDateTime(MapUtils.getString(param, "effectiveTimeBegin_end")); + Date begin = DateUtil.parseDate(MapUtils.getString(param, "effectiveTimeEnd_begin")); + Date end = DateUtil.parseDate(MapUtils.getString(param, "effectiveTimeBegin_end")); List checkNumBos = getSourceCheckNumBo(sourceVos); //1. 计算有效期内的source的应排查、(未施工+已排查)数量 for (RiskListSourceVo sourceVo : sourceVos) { diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityDangerItemRecordController.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityDangerItemRecordController.java index b5c7f4928..2936e063a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityDangerItemRecordController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/controller/XzSecurityDangerItemRecordController.java @@ -170,6 +170,9 @@ public class XzSecurityDangerItemRecordController { } @ApiOperation(value = "查询我使用过的最近三天的三条数据", notes = "查询我使用过的最近三天的三条数据", httpMethod = "GET") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目唯一标识", paramType = "body", required = true, dataType = "String"), + }) @GetMapping(value = "/getNewestUseRecords") public Result> getNewestUseRecords(@ApiIgnore @RequestParam HashMap param) { List list = dangerItemRecordService.getNewestUseRecords(param); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityDangerItemRecordMapper.xml b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityDangerItemRecordMapper.xml index 9cf05ca77..bcae38780 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityDangerItemRecordMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/mapper/xml/XzSecurityDangerItemRecordMapper.xml @@ -40,12 +40,14 @@ diff --git a/src/main/java/com/zhgd/xmgl/util/MysqlUrlReplacer.java b/src/main/java/com/zhgd/xmgl/util/MysqlUrlReplacer.java new file mode 100644 index 000000000..bb04676ea --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/util/MysqlUrlReplacer.java @@ -0,0 +1,138 @@ +package com.zhgd.xmgl.util; + +import cn.hutool.db.Db; +import cn.hutool.db.Entity; +import cn.hutool.db.ds.simple.SimpleDataSource; + +import javax.sql.DataSource; +import java.sql.SQLException; +import java.util.List; + +public class MysqlUrlReplacer { + + private DataSource dataSource; + + public MysqlUrlReplacer(String url, String username, String password) { + this.dataSource = new SimpleDataSource(url, username, password); + } + + /** + * 批量替换所有表中的HTTP URL + */ + public void batchReplaceUrls(String oldDomain, String newDomain) throws SQLException { + // 获取所有表名 + List tables = Db.use(dataSource).query( + "SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE()" + ); + + for (Entity table : tables) { + String tableName = table.getStr("table_name"); + processTable(tableName, oldDomain, newDomain); + } + } + + /** + * 处理单个表 + */ + private void processTable(String tableName, String oldDomain, String newDomain) throws SQLException { + // 获取表的字符串类型字段 + List columns = Db.use(dataSource).query( + "SELECT column_name FROM information_schema.columns " + + "WHERE table_schema = DATABASE() AND table_name = ? " + + "AND data_type IN ('varchar', 'text', 'longtext', 'mediumtext', 'char')", + tableName + ); + + for (Entity column : columns) { + String columnName = column.getStr("column_name"); + replaceColumnData(tableName, columnName, oldDomain, newDomain); + } + } + + /** + * 替换单个字段的数据 + */ + private void replaceColumnData(String tableName, String columnName, + String oldDomain, String newDomain) throws SQLException { + String sql = String.format( + "UPDATE %s SET %s = REPLACE(%s, ?, ?) WHERE %s LIKE ?", + tableName, columnName, columnName, columnName + ); + + int affectedRows = Db.use(dataSource).execute( + sql, + oldDomain, + newDomain, + "%" + oldDomain + "%" + ); + + if (affectedRows > 0) { + System.out.printf("表 %s 的字段 %s 更新了 %d 行数据%n", + tableName, columnName, affectedRows); + } + } + + /** + * 安全模式:先查询再更新(推荐用于生产环境) + */ + public void safeBatchReplaceUrls(String oldDomain, String newDomain) throws SQLException { + List tables = Db.use(dataSource).query( + "SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE()" + ); + + for (Entity table : tables) { + String tableName = table.getStr("table_name"); + safeProcessTable(tableName, oldDomain, newDomain); + } + } + + private void safeProcessTable(String tableName, String oldDomain, String newDomain) throws SQLException { + List columns = Db.use(dataSource).query( + "SELECT column_name FROM information_schema.columns " + + "WHERE table_schema = DATABASE() AND table_name = ? " + + "AND data_type IN ('varchar', 'text', 'longtext', 'mediumtext', 'char')", + tableName + ); + + for (Entity column : columns) { + String columnName = column.getStr("column_name"); + // 先查询受影响的数据 + List affectedData = Db.use(dataSource).query( + String.format("SELECT COUNT(*) as count FROM %s WHERE %s LIKE ?", + tableName, columnName), + "%" + oldDomain + "%" + ); + + long count = affectedData.get(0).getLong("count"); + if (count > 0) { + System.out.printf("表 %s 字段 %s 有 %d 条数据需要更新%n", + tableName, columnName, count); + + // 确认后再更新 + replaceColumnData(tableName, columnName, oldDomain, newDomain); + } + } + } + + + public static void main(String[] args) throws SQLException { + // 使用方法2 + MysqlUrlReplacer replacer = new MysqlUrlReplacer( + "jdbc:mysql://localhost:3306/uface", + "root", + "root" + ); + + // 批量替换 +// replacer.batchReplaceUrls( +// "http://jxj.zhgdyun.com:21000", +// "http://new.domain.com:8080" +// ); + + // 或者安全模式批量替换 + replacer.safeBatchReplaceUrls( + "http://jxj.zhgdyun.com:21000", + "http://new.domain.com:8080" + ); + } +}