Commit 2969d16f authored by 王果's avatar 王果

36671 子 【一张图替换站端系统】-自动化数据处理 / 数据同步:系统账号

parent e6f2ffd0
...@@ -59,6 +59,12 @@ ...@@ -59,6 +59,12 @@
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>5.2.3</version> <version>5.2.3</version>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.21</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -7,6 +7,7 @@ import com.yeejoin.amos.adpter.model.AreaExcelModel; ...@@ -7,6 +7,7 @@ import com.yeejoin.amos.adpter.model.AreaExcelModel;
import com.yeejoin.amos.adpter.model.DeviceExcelModel; import com.yeejoin.amos.adpter.model.DeviceExcelModel;
import com.yeejoin.amos.adpter.model.PersonExcelModel; import com.yeejoin.amos.adpter.model.PersonExcelModel;
import com.yeejoin.amos.adpter.model.SystemExcelModel; import com.yeejoin.amos.adpter.model.SystemExcelModel;
import com.yeejoin.amos.adpter.util.HutoolIdGenerator;
import org.apache.ibatis.io.Resources; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.RuntimeSqlException; import org.apache.ibatis.jdbc.RuntimeSqlException;
import org.apache.ibatis.jdbc.ScriptRunner; import org.apache.ibatis.jdbc.ScriptRunner;
...@@ -86,6 +87,14 @@ public class AdpterService { ...@@ -86,6 +87,14 @@ public class AdpterService {
@Value("${goal.jdbc.ip.project}") @Value("${goal.jdbc.ip.project}")
String goalJdbcProject; String goalJdbcProject;
@Value("${goal.jdbc.ip.project.org.seq}")
String projectOrgSeq;
@Value("${goal.jdbc.ip.project.role.seq}")
String projectRoleSeq;
public Map<String, String> handle() { public Map<String, String> handle() {
Map<String, String> rMap = new HashMap<>(); Map<String, String> rMap = new HashMap<>();
...@@ -137,83 +146,95 @@ public class AdpterService { ...@@ -137,83 +146,95 @@ public class AdpterService {
log.info("执行结束================"); log.info("执行结束================");
return rMap; return rMap;
} }
public Map<String, String> cpSysUserOrg() { public Map<String, String> cpSysUserOrg() {
Map<String, String> rMap = new HashMap<>(); Map<String, String> rMap = new HashMap<>();
// //同步amos_project库用户表 String srcTableName = "auth_login_info";
//// copy(goalJdbcProject, sourceJdbcProject, "auth_login_info", "auth_login_info", "SEQUENCE_NBR", rMap); String destTableName = "auth_login_info";
// String srcTableName = "auth_login_info"; String id = "SEQUENCE_NBR";
// String destTableName = "auth_login_info"; startTime = System.currentTimeMillis();
// String id = "SEQUENCE_NBR"; Connection conn = getConnection(goalJdbcProject);
// startTime = System.currentTimeMillis(); PreparedStatement pst = null;
//
// Connection conn = null; //查询数据
// PreparedStatement pst = null; String sql = String.format("select * from %s ", srcTableName);
// conn = getConnection(goalJdbcProject); //查询数据
// String sqlGoal = "select count(1) as num from " + destTableName + " where " + id + " = ";
//// int count[] = new int[0]; List<Map<String, Object>> queryOld = query(sourceJdbcProject, sql);
// List<String> list = new ArrayList<>(); List<Map<String, Object>> query = new ArrayList<>();
// //插入数据
// //查询数据 String insertSql = "insert into %s(%s) values(%s)";
// String sql = String.format("select * from %s ", srcTableName); StringBuilder key = new StringBuilder();
// //查询数据 StringBuilder value = new StringBuilder();
// String sqlGoal = "select count(1) as num from " + destTableName + " where " + id + " = "; List<String> columns = new ArrayList<>();
// List<Map<String, Object>> queryOld = query(sourceJdbcProject, sql); List<List<Object>> params = new ArrayList<>();
// List<Map<String, Object>> query = new ArrayList<>(); List<String> sqlList = new ArrayList<>();
// //插入数据 // 剔除已存在的数据
// String insertSql = "insert into %s(%s) values(%s)"; for (Map<String, Object> map : queryOld) {
// StringBuilder key = new StringBuilder(); map.put("SALT", "10ICG834E4");
// StringBuilder value = new StringBuilder(); map.put("PASSWORD", "ACCB2DE8AD752638D55F6F0FE7CA928");//设置密码为a1234560
// List<String> columns = new ArrayList<>(); map.put("AGENCY_CODE", "ONEPLOT");
// List<List<Object>> params = new ArrayList<>(); map.put("REC_DATE", new Date());
//// 剔除已存在的数据 try {
// for (Map<String, Object> map : queryOld) { pst = conn.prepareStatement(sqlGoal + map.get(id));
// map.put("SALT", "10ICG834E4"); ResultSet resultSet = pst.executeQuery();
// map.put("PASSWORD", "ACCB2DE8AD752638D55F6F0FE7CA928");//设置密码为a1234560 log.debug("重复数据查询:{}", sqlGoal + map.get(id));
// map.put("AGENCY_CODE", "ONEPLOT"); while (resultSet.next()) {
// try { int num = resultSet.getInt("num");
// pst = conn.prepareStatement(sqlGoal + map.get(id)); if (num < 1) {
// ResultSet resultSet = pst.executeQuery(); query.add(map);
// log.debug("严重重复数据查询:{}", sqlGoal + map.get(id)); }
// while (resultSet.next()) { }
// int num = resultSet.getInt("num"); } catch (SQLException throwables) {
// if (num < 1) { throwables.printStackTrace();
// query.add(map); } finally {
// } try {
// } if (pst != null && !pst.isClosed()) {
// } catch (SQLException throwables) { pst.close();
// throwables.printStackTrace(); }
// } finally { } catch (SQLException e) {
// try { e.printStackTrace();
// if (pst != null && !pst.isClosed()) { }
// pst.close(); }
// } }
// } catch (SQLException e) {
// e.printStackTrace(); if (!query.isEmpty()) {
// } for (String column : query.get(0).keySet()) {
// } key.append(column).append(",");
// } value.append("?,");
// columns.add(column);
// if (!query.isEmpty()) { }
// for (String column : query.get(0).keySet()) { insertSql = String.format(insertSql,
// key.append(column).append(","); destTableName,
// value.append("?,"); key.substring(0, key.length() - 1),
// columns.add(column); value.substring(0, value.length() - 1));
// }
// insertSql = String.format(insertSql, for (Map<String, Object> map : query) {
// destTableName, List<Object> param = new ArrayList<>();
// key.substring(0, key.length() - 1), for (String column : columns) {
// value.substring(0, value.length() - 1)); param.add(map.get(column));
// }
// for (Map<String, Object> map : query) {
// List<Object> param = new ArrayList<>(); params.add(param);
// for (String column : columns) { //用户公司表数据、用户角色表数据、用户与应用关联表数据插入
// param.add(map.get(column)); 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)");
// params.add(param); 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)");
// int[] count = executeBatch(goalJdbcProject, insertSql, params, destTableName); 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)");
// log.debug("复制表{}成功,用时:{}ms,复制数据行数:{}", destTableName, (System.currentTimeMillis() - startTime), count.length); 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)");
}
}
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);
log.debug("处理用户角色单位数据成功,用时:{}ms", (System.currentTimeMillis() - startTime));
}
copyUser(sourceJdbcProject, goalJdbcProject, "privilege_agency_user", "privilege_agency_user", "SEQUENCE_NBR", rMap); copyUser(sourceJdbcProject, goalJdbcProject, "privilege_agency_user", "privilege_agency_user", "SEQUENCE_NBR", rMap);
log.info("执行结束================"); log.info("执行结束================");
return rMap; return rMap;
...@@ -405,9 +426,10 @@ public class AdpterService { ...@@ -405,9 +426,10 @@ public class AdpterService {
// 剔除已存在的数据 // 剔除已存在的数据
for (Map map : queryOld) { for (Map map : queryOld) {
map.put("AGENCY_CODE","ONEPLOT"); map.put("AGENCY_CODE", "ONEPLOT");
map.put("PASSWORD_RESET",0); map.put("PASSWORD_RESET", 0);
map.put("SUPER_ORG_CODE","10*11"); map.put("SUPER_ORG_CODE", "10*11");
map.put("REC_DATE", new Date());
try { try {
pst = conn.prepareStatement(sqlGoal + map.get(id)); pst = conn.prepareStatement(sqlGoal + map.get(id));
ResultSet resultSet = pst.executeQuery(); ResultSet resultSet = pst.executeQuery();
...@@ -461,6 +483,7 @@ public class AdpterService { ...@@ -461,6 +483,7 @@ public class AdpterService {
} }
return count; return count;
} }
/** /**
* 批量执行一个 SQL 语句,可以传不同的参数 * 批量执行一个 SQL 语句,可以传不同的参数
* *
...@@ -914,6 +937,44 @@ public class AdpterService { ...@@ -914,6 +937,44 @@ public class AdpterService {
} }
private void executeBySql(List<String> sqlList, String url, String username, String password) {
Connection connection = null;
Statement statement = null;
try {
// 获取数据库连接
connection = DriverManager.getConnection(url, username, password);
connection.setAutoCommit(false);
statement = connection.createStatement();
Statement finalStatement = statement;
for (String sql : sqlList) {
finalStatement.addBatch(sql);
log.debug("执sql:{}", sql);
}
// 执行批处理
int[] result = statement.executeBatch();
// 提交事务
connection.commit();
System.out.println("批量插入完成,影响行数: " + Arrays.toString(result));
} catch (SQLException e) {
if (connection != null) {
try {
connection.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
// 关闭资源
try {
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private void execute(List<Map<String, Object>> params, String url, String username, String password) { private void execute(List<Map<String, Object>> params, String url, String username, String password) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Connection connection = null; Connection connection = null;
...@@ -1125,7 +1186,7 @@ public class AdpterService { ...@@ -1125,7 +1186,7 @@ public class AdpterService {
sql2 = sql2 + String.join(",", arrayList) + ") and field_value is not NULL and field_value !=''"; sql2 = sql2 + String.join(",", arrayList) + ") and field_value is not NULL and field_value !=''";
List<Map<String, Object>> list2 = query(dlCom, sql2); List<Map<String, Object>> list2 = query(dlCom, sql2);
ArrayList<PersonExcelModel> models = new ArrayList<>(); ArrayList<PersonExcelModel> models = new ArrayList<>();
String sql3 = "select * from cb_firefighters_post where org_usr_id in ("+ String.join(",", arrayList) + ")"; String sql3 = "select * from cb_firefighters_post where org_usr_id in (" + String.join(",", arrayList) + ")";
List<Map<String, Object>> list3 = query(dlCom, sql3); List<Map<String, Object>> list3 = query(dlCom, sql3);
String sql4 = "select CONCAT(b.name,'-',a.name) as name from cb_data_dictionary a " + String sql4 = "select CONCAT(b.name,'-',a.name) as name from cb_data_dictionary a " +
"left join cb_data_dictionary b on a.parent = b.sequence_nbr " + "left join cb_data_dictionary b on a.parent = b.sequence_nbr " +
...@@ -1157,7 +1218,8 @@ public class AdpterService { ...@@ -1157,7 +1218,8 @@ public class AdpterService {
model.setGender(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString()); model.setGender(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString());
} }
if (objectMap.get("field_code").equals("certificatesTypeCode") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) { if (objectMap.get("field_code").equals("certificatesTypeCode") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) {
model.setIdType(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString()); String s = ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString();
model.setIdType("120".equals(s) ? "身份证" : s);
} }
if (objectMap.get("field_code").equals("certificatesNumber") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) { if (objectMap.get("field_code").equals("certificatesNumber") && !ObjectUtils.isEmpty(objectMap.get("field_value"))) {
model.setIdNum(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString()); model.setIdNum(ObjectUtils.isEmpty(objectMap.get("field_value_label")) ? objectMap.get("field_value").toString() : objectMap.get("field_value_label").toString());
...@@ -1178,21 +1240,21 @@ public class AdpterService { ...@@ -1178,21 +1240,21 @@ public class AdpterService {
} }
for (Map<String, Object> objectMap : list3) { for (Map<String, Object> objectMap : list3) {
if (map.get("sequence_nbr").toString().equals(objectMap.get("org_usr_id").toString())) { if (map.get("sequence_nbr").toString().equals(objectMap.get("org_usr_id").toString())) {
if(!ObjectUtils.isEmpty(objectMap.get("post_qualification"))){ if (!ObjectUtils.isEmpty(objectMap.get("post_qualification"))) {
String qualification = objectMap.get("post_qualification").toString(); String qualification = objectMap.get("post_qualification").toString();
List<Map<String, Object>> maps = list4.stream().filter(v -> v.get("name").toString().contains(qualification)).collect(Collectors.toList()); List<Map<String, Object>> maps = list4.stream().filter(v -> v.get("name").toString().contains(qualification)).collect(Collectors.toList());
if(!ObjectUtils.isEmpty(maps)){ if (!ObjectUtils.isEmpty(maps)) {
model.setQualification(maps.get(0).get("name").toString()); model.setQualification(maps.get(0).get("name").toString());
} }
} }
if(!ObjectUtils.isEmpty(objectMap.get("qualification_certificate"))){ if (!ObjectUtils.isEmpty(objectMap.get("qualification_certificate"))) {
model.setFirePost(objectMap.get("qualification_certificate").toString()); model.setFirePost(objectMap.get("qualification_certificate").toString());
} }
if(!ObjectUtils.isEmpty(objectMap.get("job_title"))){ if (!ObjectUtils.isEmpty(objectMap.get("job_title"))) {
model.setPost(objectMap.get("job_title").toString()); model.setPost(objectMap.get("job_title").toString());
} }
} }
} }
model.setObjType("人员"); model.setObjType("人员");
models.add(model); models.add(model);
} }
......
package com.yeejoin.amos.adpter.util;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
public class HutoolIdGenerator {
public static long generate() {
Snowflake snowflake = IdUtil.getSnowflake(1, 1); // 指定workerId和datacenterId
return snowflake.nextId();
}
// 示例调用
public static void main(String[] args) {
long id = HutoolIdGenerator.generate();
System.out.println("Hutool生成的ID: " + id);
}
}
\ No newline at end of file
...@@ -36,6 +36,10 @@ goal.jdbc.ip.dlcom=jdbc:mysql://172.16.11.201:3307/gusu_common?allowMultiQueries ...@@ -36,6 +36,10 @@ goal.jdbc.ip.dlcom=jdbc:mysql://172.16.11.201:3307/gusu_common?allowMultiQueries
goal.jdbc.ip.project=jdbc:mysql://39.100.71.139:3307/amos_project?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai goal.jdbc.ip.project=jdbc:mysql://39.100.71.139:3307/amos_project?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
source.jdbc.ip.project=jdbc:mysql://39.100.71.139:3307/wh_project?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai source.jdbc.ip.project=jdbc:mysql://39.100.71.139:3307/wh_project?useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
## 系统用户要同步公司的ID
goal.jdbc.ip.project.org.seq=1921835551384690690
## 系统用户要同步角色的ID
goal.jdbc.ip.project.role.seq=1921835551384690690
yeejoin.user=root yeejoin.user=root
yeejoin.pwd=Yeejoin@2020 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