Commit f7216ada authored by 王果's avatar 王果

系统人员和消防人员同步优化

parent 15a18369
......@@ -93,8 +93,11 @@ public class AdpterService {
@Value("${goal.jdbc.ip.project.role.seq}")
String projectRoleSeq;
@Value("${goal.jdbc.ip.project.user.rec-time}")
String systemUserRecTime;
public Map<String, String> handle() {
Map<String, String> rMap = new HashMap<>();
......@@ -148,19 +151,23 @@ public class AdpterService {
}
public Map<String, String> cpSysUserOrg() {
String time = systemUserRecTime;
Map<String, String> rMap = new HashMap<>();
String srcTableName = "auth_login_info";
String destTableName = "auth_login_info";
String id = "SEQUENCE_NBR";
startTime = System.currentTimeMillis();
Connection conn = getConnection(goalJdbcProject);
PreparedStatement pst = null;
//查询数据 只查询电力用户(AGENCY_CODE = 'STATE_GRID')
String sql = String.format("select * from %s where AGENCY_CODE = 'STATE_GRID'", srcTableName);
//查询数据
String sql = String.format("select * from %s ", srcTableName);
//查询数据
String sqlGoal = "select count(1) as num from " + destTableName + " where " + id + " = ";
String sqlGoal = "select SEQUENCE_NBR from " + destTableName;
List<Map<String, Object>> queryOld = query(sourceJdbcProject, sql);
if(ObjectUtils.isEmpty(queryOld)){
log.info("未查询到数据,执行结束================");
return null;
}
List<Map<String, Object>> query = new ArrayList<>();
//插入数据
String insertSql = "insert into %s(%s) values(%s)";
......@@ -169,35 +176,36 @@ public class AdpterService {
List<String> columns = new ArrayList<>();
List<List<Object>> params = new ArrayList<>();
List<String> sqlList = new ArrayList<>();
List<String> oldUserId = new ArrayList<>();
try {
pst = conn.prepareStatement(sqlGoal);
ResultSet resultSet = pst.executeQuery();
log.debug("重复数据查询:{}", sqlGoal );
while (resultSet.next()) {
oldUserId.add(resultSet.getString("SEQUENCE_NBR"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
if (pst != null && !pst.isClosed()) {
pst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 剔除已存在的数据
for (Map<String, Object> map : queryOld) {
map.put("SALT", "10ICG834E4");
map.put("PASSWORD", "ACCB2DE8AD752638D55F6F0FE7CA928");//设置密码为a1234560
// map.put("SALT", "10ICG834E4");//设置密码为a1234560
// map.put("PASSWORD", "ACCB2DE8AD752638D55F6F0FE7CA928");//设置密码为a1234560
map.put("AGENCY_CODE", "ONEPLOT");
map.put("REC_DATE", new Date());
try {
pst = conn.prepareStatement(sqlGoal + map.get(id));
ResultSet resultSet = pst.executeQuery();
log.debug("重复数据查询:{}", sqlGoal + map.get(id));
while (resultSet.next()) {
int num = resultSet.getInt("num");
if (num < 1) {
query.add(map);
}
}
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
try {
if (pst != null && !pst.isClosed()) {
pst.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
map.put("REC_DATE", time);
//去重
if(!oldUserId.contains(map.get("SEQUENCE_NBR").toString())){
query.add(map);
}
}
if (!query.isEmpty()) {
for (String column : query.get(0).keySet()) {
key.append(column).append(",");
......@@ -209,30 +217,34 @@ public class AdpterService {
key.substring(0, key.length() - 1),
value.substring(0, value.length() - 1));
List<String> userId = new ArrayList<>();
for (Map<String, Object> map : query) {
List<Object> param = new ArrayList<>();
for (String column : columns) {
param.add(map.get(column));
}
params.add(param);
//用户公司表数据、用户角色表数据、用户与应用关联表数据插入
if (map.containsKey("USER_ID") && !ObjectUtils.isEmpty(map.get("USER_ID"))) {
sqlList.add("INSERT INTO `privilege_group_user` (`SEQUENCE_NBR`, `GROUP_SEQ`, `USER_ID`, `AGENCY_CODE`, `REC_DATE`, `REC_USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", " + projectOrgSeq + ", '" + map.get("USER_ID") + "', 'ONEPLOT', '2025-05-19 11:18:44', '4950517', NULL)");
sqlList.add("INSERT INTO `privilege_user_org_role` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `USER_ID`, `COMPANY_SEQ`, `DEPARTMENT_SEQ`, `AGENCY_CODE`, `ROLE_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', '" + map.get("USER_ID") + "', " + projectRoleSeq + ", NULL, 'ONEPLOT', " + projectOrgSeq + ")");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', 'ONEPLOT', 'AMOS_STUDIO', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT_DP', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', 'ONEPLOT', 'AMOS_ADMIN', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '2025-05-19 11:18:44', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT_SP', '" + map.get("USER_ID") + "', NULL)");
if (map.containsKey("USER_ID") && !ObjectUtils.isEmpty(map.get("USER_ID"))&&!userId.contains(map.get("USER_ID").toString())) {
userId.add(map.get("USER_ID").toString());
sqlList.add("INSERT INTO `privilege_group_user` (`SEQUENCE_NBR`, `GROUP_SEQ`, `USER_ID`, `AGENCY_CODE`, `REC_DATE`, `REC_USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", " + projectRoleSeq + ", '" + map.get("USER_ID") + "', 'ONEPLOT', '"+ time +"', '4950517', NULL)");
sqlList.add("INSERT INTO `privilege_user_org_role` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `USER_ID`, `COMPANY_SEQ`, `DEPARTMENT_SEQ`, `AGENCY_CODE`, `ROLE_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', '" + map.get("USER_ID") + "', " + projectOrgSeq + ", NULL, 'ONEPLOT', " + projectRoleSeq + ")");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', 'ONEPLOT', 'AMOS_STUDIO', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT_DP', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', 'ONEPLOT', 'AMOS_ADMIN', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT', '" + map.get("USER_ID") + "', NULL)");
sqlList.add("INSERT INTO `privilege_user_application` (`SEQUENCE_NBR`, `REC_DATE`, `REC_USER_ID`, `AGENCY_CODE`, `APP_CODE`, `USER_ID`, `SUB_ORG_SEQ`) VALUES (" + HutoolIdGenerator.generate() + ", '"+ time +"', '4950517', 'ONEPLOT', 'AMOS_ONEPLOT_SP', '" + map.get("USER_ID") + "', NULL)");
}
}
int[] count = executeBatch(goalJdbcProject, insertSql, params, destTableName);
log.debug("复制表{}成功,用时:{}ms,复制数据行数:{}", destTableName, (System.currentTimeMillis() - startTime), count.length);
}
if(!ObjectUtils.isEmpty(sqlList)){
executeBySql(sqlList, goalJdbcProject, userName, pwd);
int batchSize = 50;
for (int i = 0; i < sqlList.size(); i += batchSize) {
List<String> subList = sqlList.subList(i, Math.min(i + batchSize, sqlList.size()));
executeBySql(subList, goalJdbcProject, userName, pwd);
}
log.debug("处理用户角色单位数据成功,用时:{}ms", (System.currentTimeMillis() - startTime));
}
copyUser(sourceJdbcProject, goalJdbcProject, "privilege_agency_user", "privilege_agency_user", "SEQUENCE_NBR", rMap);
......@@ -412,7 +424,7 @@ public class AdpterService {
List<String> list = new ArrayList<>();
//查询数据
String sql = String.format("select * from %s ", srcTableName);
String sql = String.format("select * from %s where AGENCY_CODE = 'STATE_GRID'", srcTableName);
//查询数据
String sqlGoal = "select count(*) as num from " + destTableName + " where " + id + " = ";
List<Map<String, Object>> queryOld = query(source, sql);
......@@ -947,14 +959,14 @@ public class AdpterService {
statement = connection.createStatement();
Statement finalStatement = statement;
for (String sql : sqlList) {
finalStatement.addBatch(sql);
log.debug("执sql:{}", sql);
finalStatement.addBatch(sql);
}
// 执行批处理
int[] result = statement.executeBatch();
// 提交事务
connection.commit();
System.out.println("批量插入完成,影响行数: " + Arrays.toString(result));
System.out.println("批量插入完成,影响行数: " + result.length);
} catch (SQLException e) {
if (connection != null) {
try {
......@@ -1199,7 +1211,7 @@ public class AdpterService {
for (Map<String, Object> objectMap : list2) {
if (map.get("sequence_nbr").toString().equals(objectMap.get("instance_id").toString())) {
if (objectMap.get("field_code").equals("personNumber") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) {
model.setCode(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString());
// model.setCode(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString());
model.setNum(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString());
}
if (objectMap.get("field_code").equals("peopleType") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) {
......
......@@ -4,7 +4,7 @@ import cn.hutool.core.util.IdUtil;
public class HutoolIdGenerator {
public static long generate() {
Snowflake snowflake = IdUtil.getSnowflake(1, 1); // 指定workerId和datacenterId
Snowflake snowflake = IdUtil.getSnowflake(1, 3); // 指定workerId和datacenterId
return snowflake.nextId();
}
......
......@@ -40,6 +40,8 @@ source.jdbc.ip.project=jdbc:mysql://39.100.71.139:3307/wh_project?useUnicode=tru
goal.jdbc.ip.project.org.seq=1921835551384690690
## 系统用户要同步角色的ID
goal.jdbc.ip.project.role.seq=1769904956711661569
## 系统用户同步数据插入时间(建议每个站不一样,方便恢复数据)
goal.jdbc.ip.project.user.rec-time=2011-11-11 11:11:52
yeejoin.user=root
yeejoin.pwd=Yeejoin@2020
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment