diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/util/ConnectionManager.java b/src/com/casic/birmm/util/ConnectionManager.java new file mode 100644 index 0000000..b783dd7 --- /dev/null +++ b/src/com/casic/birmm/util/ConnectionManager.java @@ -0,0 +1,179 @@ +package com.casic.birmm.util; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionManager { + + public static ComboPooledDataSource dsOracle; + public static ComboPooledDataSource dsSQLServer; + public static ComboPooledDataSource dsMySQL; + public static ComboPooledDataSource dsMySQLDest; + + static { + // 连接Oracle数据库 + try { + dsOracle = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.ORACLE.HOST", "localhost"); + String port = Configure.getProperty("DB.ORACLE.PORT", "1521"); + String dbname = Configure.getProperty("DB.ORACLE.SERVICE", "dxcg"); + String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbname; + System.out.println(url); + dsOracle.setJdbcUrl(url); + + dsOracle.setUser(Configure.getProperty("DB.ORACLE.USERNAME", "dxcg")); + dsOracle.setPassword(Configure.getProperty("DB.ORACLE.PASSWORD")); + + dsOracle.setDriverClass("oracle.jdbc.driver.OracleDriver"); + } catch (Exception e) { + dsOracle = null; + e.printStackTrace(); + } + + // 连接SQL Server数据库 + try { + dsSQLServer = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.SQLSERVER.HOST", "localhost"); + String port = Configure.getProperty("DB.SQLSERVER.PORT", "1433"); + String dbname = Configure.getProperty("DB.SQLSERVER.SERVICE", "IRIS_DEVICE"); + String url = "jdbc:sqlserver://" + host + ":" + port + ";DatabaseName=" + dbname; + System.out.println(url); + dsSQLServer.setJdbcUrl(url); + + String username = Configure.getProperty("DB.SQLSERVER.USERNAME", "sa"); + String password = Configure.getProperty("DB.SQLSERVER.PASSWORD", "sa"); + + dsSQLServer.setUser(username); + dsSQLServer.setPassword(password); + + dsSQLServer.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + dsSQLServer = null; + e.printStackTrace(); + } + + // 连接MySQL数据库 + try { + dsMySQL = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQL.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.PASSWORD", "root"); + + dsMySQL.setUser(username); + dsMySQL.setPassword(password); + + dsMySQL.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQL = null; + e.printStackTrace(); + } + + // 连接MySQL目标数据库 + try { + dsMySQLDest = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.DEST.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.DEST.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.DEST.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQLDest.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.DEST.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.DEST.PASSWORD", "root"); + + dsMySQLDest.setUser(username); + dsMySQLDest.setPassword(password); + + dsMySQLDest.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQLDest = null; + e.printStackTrace(); + } + } + + /** + * 从C3P0的连接池中获取Oracle数据库的jdbc连接 + * @return + */ + public static Connection getOracleConnectionFromC3P0() { + Connection conn = null; + if (null != dsOracle) { + try { + conn = dsOracle.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取SQLServer数据库的jdbc连接 + * @return + */ + public static Connection getSQLServerConnectionFromC3P0() { + Connection conn = null; + if (null != dsSQLServer) { + try { + conn = dsSQLServer.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL数据库的jdbc连接 + * @return + */ + public static Connection getMySQLConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQL) { + try { + conn = dsMySQL.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL目标数据库的jdbc连接 + * @return + */ + public static Connection getMySQLDestConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQLDest) { + try { + conn = dsMySQLDest.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + public static void main(String[] args) { + Connection conn1 = ConnectionManager.getOracleConnectionFromC3P0(); + Connection conn2 = ConnectionManager.getSQLServerConnectionFromC3P0(); + Connection conn3 = ConnectionManager.getMySQLConnectionFromC3P0(); + + System.out.println(conn1); + System.out.println(conn2); + System.out.println(conn3); + } +} \ No newline at end of file diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/util/ConnectionManager.java b/src/com/casic/birmm/util/ConnectionManager.java new file mode 100644 index 0000000..b783dd7 --- /dev/null +++ b/src/com/casic/birmm/util/ConnectionManager.java @@ -0,0 +1,179 @@ +package com.casic.birmm.util; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionManager { + + public static ComboPooledDataSource dsOracle; + public static ComboPooledDataSource dsSQLServer; + public static ComboPooledDataSource dsMySQL; + public static ComboPooledDataSource dsMySQLDest; + + static { + // 连接Oracle数据库 + try { + dsOracle = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.ORACLE.HOST", "localhost"); + String port = Configure.getProperty("DB.ORACLE.PORT", "1521"); + String dbname = Configure.getProperty("DB.ORACLE.SERVICE", "dxcg"); + String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbname; + System.out.println(url); + dsOracle.setJdbcUrl(url); + + dsOracle.setUser(Configure.getProperty("DB.ORACLE.USERNAME", "dxcg")); + dsOracle.setPassword(Configure.getProperty("DB.ORACLE.PASSWORD")); + + dsOracle.setDriverClass("oracle.jdbc.driver.OracleDriver"); + } catch (Exception e) { + dsOracle = null; + e.printStackTrace(); + } + + // 连接SQL Server数据库 + try { + dsSQLServer = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.SQLSERVER.HOST", "localhost"); + String port = Configure.getProperty("DB.SQLSERVER.PORT", "1433"); + String dbname = Configure.getProperty("DB.SQLSERVER.SERVICE", "IRIS_DEVICE"); + String url = "jdbc:sqlserver://" + host + ":" + port + ";DatabaseName=" + dbname; + System.out.println(url); + dsSQLServer.setJdbcUrl(url); + + String username = Configure.getProperty("DB.SQLSERVER.USERNAME", "sa"); + String password = Configure.getProperty("DB.SQLSERVER.PASSWORD", "sa"); + + dsSQLServer.setUser(username); + dsSQLServer.setPassword(password); + + dsSQLServer.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + dsSQLServer = null; + e.printStackTrace(); + } + + // 连接MySQL数据库 + try { + dsMySQL = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQL.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.PASSWORD", "root"); + + dsMySQL.setUser(username); + dsMySQL.setPassword(password); + + dsMySQL.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQL = null; + e.printStackTrace(); + } + + // 连接MySQL目标数据库 + try { + dsMySQLDest = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.DEST.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.DEST.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.DEST.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQLDest.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.DEST.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.DEST.PASSWORD", "root"); + + dsMySQLDest.setUser(username); + dsMySQLDest.setPassword(password); + + dsMySQLDest.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQLDest = null; + e.printStackTrace(); + } + } + + /** + * 从C3P0的连接池中获取Oracle数据库的jdbc连接 + * @return + */ + public static Connection getOracleConnectionFromC3P0() { + Connection conn = null; + if (null != dsOracle) { + try { + conn = dsOracle.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取SQLServer数据库的jdbc连接 + * @return + */ + public static Connection getSQLServerConnectionFromC3P0() { + Connection conn = null; + if (null != dsSQLServer) { + try { + conn = dsSQLServer.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL数据库的jdbc连接 + * @return + */ + public static Connection getMySQLConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQL) { + try { + conn = dsMySQL.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL目标数据库的jdbc连接 + * @return + */ + public static Connection getMySQLDestConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQLDest) { + try { + conn = dsMySQLDest.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + public static void main(String[] args) { + Connection conn1 = ConnectionManager.getOracleConnectionFromC3P0(); + Connection conn2 = ConnectionManager.getSQLServerConnectionFromC3P0(); + Connection conn3 = ConnectionManager.getMySQLConnectionFromC3P0(); + + System.out.println(conn1); + System.out.println(conn2); + System.out.println(conn3); + } +} \ No newline at end of file diff --git a/src/com/casic/birmm/util/IdWorker.java b/src/com/casic/birmm/util/IdWorker.java new file mode 100644 index 0000000..0cfcec3 --- /dev/null +++ b/src/com/casic/birmm/util/IdWorker.java @@ -0,0 +1,71 @@ +package com.casic.birmm.util; + +public class IdWorker { + private final long workerId; + private final static long twepoch = 1288834974657L; + private long sequence = 0L; + private final static long workerIdBits = 4L; + public final static long maxWorkerId = -1L ^ -1L << workerIdBits; + + private final static long sequenceBits = 10L; + private final static long workerIdShift = sequenceBits; + private final static long timestampLeftShift = sequenceBits + workerIdBits; + public final static long sequenceMask = -1L ^ -1L << sequenceBits; + private long lastTimestamp = -1L; + + public IdWorker(final long workerId) { + super(); + if (workerId > this.maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + this.maxWorkerId)); + } + this.workerId = workerId; + } + public synchronized long nextId() { + long timestamp = this.timeGen(); + if (this.lastTimestamp == timestamp) { + this.sequence = (this.sequence + 1) & this.sequenceMask; + if (this.sequence == 0) { + System.out.println("###########" + sequenceMask); + timestamp = this.tilNextMillis(this.lastTimestamp); + } + } else { + this.sequence = 0; + } + if (timestamp < this.lastTimestamp) { + try { + throw new Exception( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + this.lastTimestamp - timestamp)); + } catch (Exception e) { + e.printStackTrace(); + } + } + this.lastTimestamp = timestamp; + long nextId = ((timestamp - twepoch << timestampLeftShift)) + | (this.workerId << this.workerIdShift) | (this.sequence); + System.out.println("timestamp:" + timestamp + ",timestampLeftShift:" + + timestampLeftShift + ",nextId:" + nextId + ",workerId:" + + workerId + ",sequence:" + sequence); + return nextId; + } + private long tilNextMillis(final long lastTimestamp) { + long timestamp = this.timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = this.timeGen(); + } + return timestamp; + } + private long timeGen() { + return System.currentTimeMillis(); + } + + public static void main(String[] args){ + IdWorker worker2 = new IdWorker(2); + System.out.println(worker2.nextId()); + } + +} + diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/util/ConnectionManager.java b/src/com/casic/birmm/util/ConnectionManager.java new file mode 100644 index 0000000..b783dd7 --- /dev/null +++ b/src/com/casic/birmm/util/ConnectionManager.java @@ -0,0 +1,179 @@ +package com.casic.birmm.util; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionManager { + + public static ComboPooledDataSource dsOracle; + public static ComboPooledDataSource dsSQLServer; + public static ComboPooledDataSource dsMySQL; + public static ComboPooledDataSource dsMySQLDest; + + static { + // 连接Oracle数据库 + try { + dsOracle = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.ORACLE.HOST", "localhost"); + String port = Configure.getProperty("DB.ORACLE.PORT", "1521"); + String dbname = Configure.getProperty("DB.ORACLE.SERVICE", "dxcg"); + String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbname; + System.out.println(url); + dsOracle.setJdbcUrl(url); + + dsOracle.setUser(Configure.getProperty("DB.ORACLE.USERNAME", "dxcg")); + dsOracle.setPassword(Configure.getProperty("DB.ORACLE.PASSWORD")); + + dsOracle.setDriverClass("oracle.jdbc.driver.OracleDriver"); + } catch (Exception e) { + dsOracle = null; + e.printStackTrace(); + } + + // 连接SQL Server数据库 + try { + dsSQLServer = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.SQLSERVER.HOST", "localhost"); + String port = Configure.getProperty("DB.SQLSERVER.PORT", "1433"); + String dbname = Configure.getProperty("DB.SQLSERVER.SERVICE", "IRIS_DEVICE"); + String url = "jdbc:sqlserver://" + host + ":" + port + ";DatabaseName=" + dbname; + System.out.println(url); + dsSQLServer.setJdbcUrl(url); + + String username = Configure.getProperty("DB.SQLSERVER.USERNAME", "sa"); + String password = Configure.getProperty("DB.SQLSERVER.PASSWORD", "sa"); + + dsSQLServer.setUser(username); + dsSQLServer.setPassword(password); + + dsSQLServer.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + dsSQLServer = null; + e.printStackTrace(); + } + + // 连接MySQL数据库 + try { + dsMySQL = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQL.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.PASSWORD", "root"); + + dsMySQL.setUser(username); + dsMySQL.setPassword(password); + + dsMySQL.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQL = null; + e.printStackTrace(); + } + + // 连接MySQL目标数据库 + try { + dsMySQLDest = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.DEST.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.DEST.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.DEST.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQLDest.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.DEST.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.DEST.PASSWORD", "root"); + + dsMySQLDest.setUser(username); + dsMySQLDest.setPassword(password); + + dsMySQLDest.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQLDest = null; + e.printStackTrace(); + } + } + + /** + * 从C3P0的连接池中获取Oracle数据库的jdbc连接 + * @return + */ + public static Connection getOracleConnectionFromC3P0() { + Connection conn = null; + if (null != dsOracle) { + try { + conn = dsOracle.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取SQLServer数据库的jdbc连接 + * @return + */ + public static Connection getSQLServerConnectionFromC3P0() { + Connection conn = null; + if (null != dsSQLServer) { + try { + conn = dsSQLServer.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL数据库的jdbc连接 + * @return + */ + public static Connection getMySQLConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQL) { + try { + conn = dsMySQL.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL目标数据库的jdbc连接 + * @return + */ + public static Connection getMySQLDestConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQLDest) { + try { + conn = dsMySQLDest.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + public static void main(String[] args) { + Connection conn1 = ConnectionManager.getOracleConnectionFromC3P0(); + Connection conn2 = ConnectionManager.getSQLServerConnectionFromC3P0(); + Connection conn3 = ConnectionManager.getMySQLConnectionFromC3P0(); + + System.out.println(conn1); + System.out.println(conn2); + System.out.println(conn3); + } +} \ No newline at end of file diff --git a/src/com/casic/birmm/util/IdWorker.java b/src/com/casic/birmm/util/IdWorker.java new file mode 100644 index 0000000..0cfcec3 --- /dev/null +++ b/src/com/casic/birmm/util/IdWorker.java @@ -0,0 +1,71 @@ +package com.casic.birmm.util; + +public class IdWorker { + private final long workerId; + private final static long twepoch = 1288834974657L; + private long sequence = 0L; + private final static long workerIdBits = 4L; + public final static long maxWorkerId = -1L ^ -1L << workerIdBits; + + private final static long sequenceBits = 10L; + private final static long workerIdShift = sequenceBits; + private final static long timestampLeftShift = sequenceBits + workerIdBits; + public final static long sequenceMask = -1L ^ -1L << sequenceBits; + private long lastTimestamp = -1L; + + public IdWorker(final long workerId) { + super(); + if (workerId > this.maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + this.maxWorkerId)); + } + this.workerId = workerId; + } + public synchronized long nextId() { + long timestamp = this.timeGen(); + if (this.lastTimestamp == timestamp) { + this.sequence = (this.sequence + 1) & this.sequenceMask; + if (this.sequence == 0) { + System.out.println("###########" + sequenceMask); + timestamp = this.tilNextMillis(this.lastTimestamp); + } + } else { + this.sequence = 0; + } + if (timestamp < this.lastTimestamp) { + try { + throw new Exception( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + this.lastTimestamp - timestamp)); + } catch (Exception e) { + e.printStackTrace(); + } + } + this.lastTimestamp = timestamp; + long nextId = ((timestamp - twepoch << timestampLeftShift)) + | (this.workerId << this.workerIdShift) | (this.sequence); + System.out.println("timestamp:" + timestamp + ",timestampLeftShift:" + + timestampLeftShift + ",nextId:" + nextId + ",workerId:" + + workerId + ",sequence:" + sequence); + return nextId; + } + private long tilNextMillis(final long lastTimestamp) { + long timestamp = this.timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = this.timeGen(); + } + return timestamp; + } + private long timeGen() { + return System.currentTimeMillis(); + } + + public static void main(String[] args){ + IdWorker worker2 = new IdWorker(2); + System.out.println(worker2.nextId()); + } + +} + diff --git a/src/com/casic/birmm/util/RecIrisUtil.java b/src/com/casic/birmm/util/RecIrisUtil.java new file mode 100644 index 0000000..bc00f63 --- /dev/null +++ b/src/com/casic/birmm/util/RecIrisUtil.java @@ -0,0 +1,50 @@ +package com.casic.birmm.util; + +import sun.misc.BASE64Decoder; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class RecIrisUtil { + /** + * 与C#通信,获取虹膜编码 + * @param image 虹膜图片 + * @return 成功返回虹膜编码,失败返回null + */ + public static byte[] getIrisCode(byte[] imageBytes) throws IOException { + byte[] irisCode = new byte[1024]; + + InputStream fis = new ByteArrayInputStream(imageBytes); + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 20004); + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } +} diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/util/ConnectionManager.java b/src/com/casic/birmm/util/ConnectionManager.java new file mode 100644 index 0000000..b783dd7 --- /dev/null +++ b/src/com/casic/birmm/util/ConnectionManager.java @@ -0,0 +1,179 @@ +package com.casic.birmm.util; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionManager { + + public static ComboPooledDataSource dsOracle; + public static ComboPooledDataSource dsSQLServer; + public static ComboPooledDataSource dsMySQL; + public static ComboPooledDataSource dsMySQLDest; + + static { + // 连接Oracle数据库 + try { + dsOracle = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.ORACLE.HOST", "localhost"); + String port = Configure.getProperty("DB.ORACLE.PORT", "1521"); + String dbname = Configure.getProperty("DB.ORACLE.SERVICE", "dxcg"); + String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbname; + System.out.println(url); + dsOracle.setJdbcUrl(url); + + dsOracle.setUser(Configure.getProperty("DB.ORACLE.USERNAME", "dxcg")); + dsOracle.setPassword(Configure.getProperty("DB.ORACLE.PASSWORD")); + + dsOracle.setDriverClass("oracle.jdbc.driver.OracleDriver"); + } catch (Exception e) { + dsOracle = null; + e.printStackTrace(); + } + + // 连接SQL Server数据库 + try { + dsSQLServer = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.SQLSERVER.HOST", "localhost"); + String port = Configure.getProperty("DB.SQLSERVER.PORT", "1433"); + String dbname = Configure.getProperty("DB.SQLSERVER.SERVICE", "IRIS_DEVICE"); + String url = "jdbc:sqlserver://" + host + ":" + port + ";DatabaseName=" + dbname; + System.out.println(url); + dsSQLServer.setJdbcUrl(url); + + String username = Configure.getProperty("DB.SQLSERVER.USERNAME", "sa"); + String password = Configure.getProperty("DB.SQLSERVER.PASSWORD", "sa"); + + dsSQLServer.setUser(username); + dsSQLServer.setPassword(password); + + dsSQLServer.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + dsSQLServer = null; + e.printStackTrace(); + } + + // 连接MySQL数据库 + try { + dsMySQL = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQL.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.PASSWORD", "root"); + + dsMySQL.setUser(username); + dsMySQL.setPassword(password); + + dsMySQL.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQL = null; + e.printStackTrace(); + } + + // 连接MySQL目标数据库 + try { + dsMySQLDest = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.DEST.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.DEST.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.DEST.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQLDest.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.DEST.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.DEST.PASSWORD", "root"); + + dsMySQLDest.setUser(username); + dsMySQLDest.setPassword(password); + + dsMySQLDest.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQLDest = null; + e.printStackTrace(); + } + } + + /** + * 从C3P0的连接池中获取Oracle数据库的jdbc连接 + * @return + */ + public static Connection getOracleConnectionFromC3P0() { + Connection conn = null; + if (null != dsOracle) { + try { + conn = dsOracle.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取SQLServer数据库的jdbc连接 + * @return + */ + public static Connection getSQLServerConnectionFromC3P0() { + Connection conn = null; + if (null != dsSQLServer) { + try { + conn = dsSQLServer.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL数据库的jdbc连接 + * @return + */ + public static Connection getMySQLConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQL) { + try { + conn = dsMySQL.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL目标数据库的jdbc连接 + * @return + */ + public static Connection getMySQLDestConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQLDest) { + try { + conn = dsMySQLDest.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + public static void main(String[] args) { + Connection conn1 = ConnectionManager.getOracleConnectionFromC3P0(); + Connection conn2 = ConnectionManager.getSQLServerConnectionFromC3P0(); + Connection conn3 = ConnectionManager.getMySQLConnectionFromC3P0(); + + System.out.println(conn1); + System.out.println(conn2); + System.out.println(conn3); + } +} \ No newline at end of file diff --git a/src/com/casic/birmm/util/IdWorker.java b/src/com/casic/birmm/util/IdWorker.java new file mode 100644 index 0000000..0cfcec3 --- /dev/null +++ b/src/com/casic/birmm/util/IdWorker.java @@ -0,0 +1,71 @@ +package com.casic.birmm.util; + +public class IdWorker { + private final long workerId; + private final static long twepoch = 1288834974657L; + private long sequence = 0L; + private final static long workerIdBits = 4L; + public final static long maxWorkerId = -1L ^ -1L << workerIdBits; + + private final static long sequenceBits = 10L; + private final static long workerIdShift = sequenceBits; + private final static long timestampLeftShift = sequenceBits + workerIdBits; + public final static long sequenceMask = -1L ^ -1L << sequenceBits; + private long lastTimestamp = -1L; + + public IdWorker(final long workerId) { + super(); + if (workerId > this.maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + this.maxWorkerId)); + } + this.workerId = workerId; + } + public synchronized long nextId() { + long timestamp = this.timeGen(); + if (this.lastTimestamp == timestamp) { + this.sequence = (this.sequence + 1) & this.sequenceMask; + if (this.sequence == 0) { + System.out.println("###########" + sequenceMask); + timestamp = this.tilNextMillis(this.lastTimestamp); + } + } else { + this.sequence = 0; + } + if (timestamp < this.lastTimestamp) { + try { + throw new Exception( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + this.lastTimestamp - timestamp)); + } catch (Exception e) { + e.printStackTrace(); + } + } + this.lastTimestamp = timestamp; + long nextId = ((timestamp - twepoch << timestampLeftShift)) + | (this.workerId << this.workerIdShift) | (this.sequence); + System.out.println("timestamp:" + timestamp + ",timestampLeftShift:" + + timestampLeftShift + ",nextId:" + nextId + ",workerId:" + + workerId + ",sequence:" + sequence); + return nextId; + } + private long tilNextMillis(final long lastTimestamp) { + long timestamp = this.timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = this.timeGen(); + } + return timestamp; + } + private long timeGen() { + return System.currentTimeMillis(); + } + + public static void main(String[] args){ + IdWorker worker2 = new IdWorker(2); + System.out.println(worker2.nextId()); + } + +} + diff --git a/src/com/casic/birmm/util/RecIrisUtil.java b/src/com/casic/birmm/util/RecIrisUtil.java new file mode 100644 index 0000000..bc00f63 --- /dev/null +++ b/src/com/casic/birmm/util/RecIrisUtil.java @@ -0,0 +1,50 @@ +package com.casic.birmm.util; + +import sun.misc.BASE64Decoder; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class RecIrisUtil { + /** + * 与C#通信,获取虹膜编码 + * @param image 虹膜图片 + * @return 成功返回虹膜编码,失败返回null + */ + public static byte[] getIrisCode(byte[] imageBytes) throws IOException { + byte[] irisCode = new byte[1024]; + + InputStream fis = new ByteArrayInputStream(imageBytes); + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 20004); + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } +} diff --git a/src/log4j.properties b/src/log4j.properties new file mode 100644 index 0000000..b0502cd --- /dev/null +++ b/src/log4j.properties @@ -0,0 +1,19 @@ +###log4j config + +#logger +log4j.logger.com.casic=info, message, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%-4c{1}] %m%n + +#message logger +log4j.appender.message=org.apache.log4j.DailyRollingFileAppender +log4j.appender.message.file=E\:/backup/203/IRIS4SXMK.log +log4j.appender.message.layout=org.apache.log4j.PatternLayout +log4j.appender.message.layout.ConversionPattern=%m%n +log4j.appender.message.encoding=UTF-8 + +#other logger +log4j.logger.com.mchange=error \ No newline at end of file diff --git a/src/com/casic/birmm/CompareTwoDatabase.java b/src/com/casic/birmm/CompareTwoDatabase.java new file mode 100644 index 0000000..78974a2 --- /dev/null +++ b/src/com/casic/birmm/CompareTwoDatabase.java @@ -0,0 +1,144 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class CompareTwoDatabase { + public static void main(String[] args) { + + Logger logger = Logger.getLogger(CompareTwoDatabase.class.getName()); + + try { + String queryFromMysql = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id order by SIMPLENAME, p.ID"; + + Connection connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + Connection connSqlserver = ConnectionManager.getSQLServerConnectionFromC3P0(); + connSqlserver.setAutoCommit(false); + + // 从MySQL中查询所有的人 + QueryRunner runner = new QueryRunner(); + List personList = (List) runner.query(connMysql, queryFromMysql, new ArrayListHandler()); + System.out.println(personList.size()); + for (int i = 0; i < personList.size(); i++) { + Object[] person = personList.get(i); + String name = (String) person[0]; + String gender = (String) person[1]; + if (person[1].equals("1")) { + gender = "男"; + } else if (person[1].equals("2")) { + gender = "女"; + } + String dept = (String) person[2]; + + // 输出姓名 + logger.info(i + "\t" + name + "\t" + gender + "\t" + dept); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + + // 从SQL server中查询人员 + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 " + + "FROM dbo.person where Name='" + name + "' and Gender='" + gender + "' and Department='" + dept + "'"; + List tempList = (List) runner.query(connSqlserver, queryStr, new ArrayListHandler()); + if (tempList != null && tempList.size() == 1) { + Object[] personInSQLServer = tempList.get(0); + + String leftIris1SQLServer = ""; + if (personInSQLServer[6] != null) { + leftIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[6]); + } + if (leftIris1.equals(leftIris1SQLServer) == false) { + logger.info("M: " + leftIris1); + logger.info("S: " + leftIris1SQLServer); + } + + String rightIris1SQLServer = ""; + if (personInSQLServer[7] != null) { + rightIris1SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[7]); + } + if (rightIris1.equals(rightIris1SQLServer) == false) { + logger.info("M: " + rightIris1); + logger.info("S: " + rightIris1SQLServer); + } + + String leftIris2SQLServer = ""; + if (personInSQLServer[8] != null) { + leftIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[8]); + } + if (leftIris2.equals(leftIris2SQLServer) == false) { + logger.info("M: " + leftIris2); + logger.info("S: " + leftIris2SQLServer); + } + + String rightIris2SQLServer = ""; + if (personInSQLServer[9] != null) { + rightIris2SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[9]); + } + if (rightIris2.equals(rightIris2SQLServer) == false) { + logger.info("M: " + rightIris2); + logger.info("S: " + rightIris2SQLServer); + } + + String leftIris3SQLServer = ""; + if (personInSQLServer[10] != null) { + leftIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[10]); + } + if (leftIris3.equals(leftIris3SQLServer) == false) { + logger.info("M: " + leftIris3); + logger.info("S: " + leftIris3SQLServer); + } + + String rightIris3SQLServer = ""; + if (personInSQLServer[11] != null) { + rightIris3SQLServer = ByteUtil.binToHexString((byte[]) personInSQLServer[11]); + } + if (rightIris3.equals(rightIris3SQLServer) == false) { + logger.info("M: " + rightIris3); + logger.info("S: " + rightIris3SQLServer); + } + } else if (tempList.size() > 1) { + logger.info("same name: " + name); + } else { + logger.info("missing: " + name + gender + dept + tempList.size()); + logger.info(queryStr); + } + } + + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromMySQL.java b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java new file mode 100644 index 0000000..29d9b8f --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromMySQL.java @@ -0,0 +1,85 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.util.List; + +public class ExtractPersonDataFromMySQL { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromMySQL.class.getName()); + + String queryStr = "select name, sex, simplename, p.ID_CARD_NO, " + + "left_iris_code1, right_iris_code1, LEFT_IRIS_CODE2, RIGHT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE3 " + + "from sys_person p, iris_data i, sys_dept d where p.id = i.PERSON_ID and p.DEPTID = d.id and p.name='刘栋' order by SIMPLENAME, p.ID"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + content += person[0] + "\t"; + + if (person[1].equals("1")) { + content += "男" + "\t"; + } else { + content += "女" + "\t"; + } + + content += person[2] + "\t" + person[3]; + logger.info(content); + + String leftIris1 = ""; + if (person[4] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[5] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[6] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[7] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[8] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[9] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right3: " + rightIris3); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java new file mode 100644 index 0000000..c11fa3a --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonDataFromSQLServer.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class ExtractPersonDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(ExtractPersonDataFromSQLServer.class.getName()); + + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, CreationTime, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, FaceImage " + + "FROM dbo.person WHERE IId = 1895"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + content += i + "\t" + person[2] + "\t" + person[3] + "\t" + person[4] + "\t" + person[5]; + logger.info(content); + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = ((String) person[3]).equalsIgnoreCase("男") ? "1" : "2"; // 性别 + insertPersonParams[3] = 1273597266669056002L; // 所在部门 + insertPersonParams[4] = "110106199507280022"; // 身份证号 + insertPersonParams[5] = insertPersonParams[0]; + runner.update(mysqlConn, insertPerson, insertPersonParams); + + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(mysqlConn, insertExt, insertExtParams); + + String leftIris1 = ""; + if (person[6] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[6]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[7] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[8] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[9] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[10] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[11] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("right3: " + rightIris3); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + insertIrisParams[3] = (byte[]) person[6]; + insertIrisParams[4] = (byte[]) person[8]; + insertIrisParams[5] = (byte[]) person[10]; + insertIrisParams[6] = (byte[]) person[7]; + insertIrisParams[7] = (byte[]) person[9]; + insertIrisParams[8] = (byte[]) person[11]; + runner.update(mysqlConn, insertIris, insertIrisParams); +/* + String faceImageBytes = ""; + if (person[12] != null) { + String queryFaceImage = "select ImageBytes FROM dbo.Image where Guid = '" + (String) person[12] + "'"; + List faceImage = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + if (faceImage != null && faceImage.size() == 1) { + String base64Str = Base64.getEncoder().encodeToString((byte[]) faceImage.get(0)[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 插入iris_person_photo表 + String insertPhoto = "INSERT INTO IRIS_PERSON_PHOTO (PERSON_ID, PHOTO_DATA) VALUES (?, ?)"; + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = insertPersonParams[0]; + insertPhotoParams[1] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, insertPhoto, insertPhotoParams); + } + } +*/ + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java new file mode 100644 index 0000000..aa348d0 --- /dev/null +++ b/src/com/casic/birmm/ExtractPersonIrisDataFromMySQLSxmk.java @@ -0,0 +1,107 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import com.casic.birmm.util.RecIrisUtil; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class ExtractPersonIrisDataFromMySQLSxmk { + public static void main(String[] args) { + Connection conn = null; + Connection connDest = null; + Logger logger = Logger.getLogger(ExtractPersonIrisDataFromMySQLSxmk.class.getName()); + + String queryStr = "select b.u_id, b.id, b.name, b.worker_sn, b.gender, " + + "b.depart_id, b.create_time, i.img_left, i.img_right " + + "from base_worker_info b left join base_worker_iris i " + + "on b.id = i.worker_id where b.del_flag=0"; + + IdWorker worker = new IdWorker(1); + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + connDest = ConnectionManager.getMySQLDestConnectionFromC3P0(); + connDest.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + String content = ""; + + // 插入sys_person表 + String insertPerson = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, " + + "ID_CARD_NO, PERSON_TYPE, PERSON_CODE, OPRATION_ID, DUTY, NATION, CARD_TYPE) " + + "VALUES (?, '0', ?, ?, ?, ?, '1', ?, '1', '0', '0', '111')"; + Object[] insertPersonParams = new Object[6]; + insertPersonParams[0] = worker.nextId(); // id + insertPersonParams[1] = (String) person[2]; // 姓名 + insertPersonParams[2] = String.valueOf((Integer) person[4]); // 性别 + insertPersonParams[3] = person[5]; // 所在部门 + insertPersonParams[4] = ((String) person[0]).substring(0, 18); // 身份证号 + insertPersonParams[5] = person[3]; + runner.update(connDest, insertPerson, insertPersonParams); + + // 插入sys_person_ext表 + String insertExt = "INSERT INTO SYS_PERSON_EXT (ID, TARGET_ID) VALUES (?, ?)"; + Object[] insertExtParams = new Object[2]; + insertExtParams[0] = insertPersonParams[0]; + insertExtParams[1] = insertPersonParams[0]; + runner.update(connDest, insertExt, insertExtParams); + + content += i + "\t" + person[0] + "\t" + person[2] + "\t" + person[3] + "\t" + person[5]; + logger.info(content); + + if (null != person[7] && ((byte[] )person[7]).length > 0) { + // 调用虹膜编码服务 + byte[] leftCode = RecIrisUtil.getIrisCode((byte[]) person[7]); + byte[] rightCode = RecIrisUtil.getIrisCode((byte[]) person[8]); + + // 插入iris_data表 + String insertIris = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, RIGHT_IRIS_CODE1) " + + "VALUES (?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[5]; + insertIrisParams[0] = worker.nextId(); + insertIrisParams[1] = insertPersonParams[0]; + insertIrisParams[2] = insertPersonParams[4]; + + if (null != leftCode) { + logger.info("left: " + ByteUtil.binToHexString(leftCode)); + insertIrisParams[3] = leftCode; + } else { + logger.info("left code failed"); + } + if (null != rightCode) { + logger.info("right: " + ByteUtil.binToHexString(rightCode)); + insertIrisParams[4] = rightCode; + } else { + logger.info("right code failed"); + } + + runner.update(connDest, insertIris, insertIrisParams); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(connDest); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/InsertIntoTbl.java b/src/com/casic/birmm/InsertIntoTbl.java new file mode 100644 index 0000000..57db0b5 --- /dev/null +++ b/src/com/casic/birmm/InsertIntoTbl.java @@ -0,0 +1,75 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import com.casic.birmm.util.IdWorker; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.log4j.Logger; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +public class InsertIntoTbl { + public static void main(String[] args) { + Connection conn = null; + Logger logger = Logger.getLogger(InsertIntoTbl.class.getName()); + + String insertStr = "INSERT INTO tbl_iris_feature " + + "(USERID, EYE_TYPE, LEFT_TMP, RIGHT_TMP, GROUPID) " + + "VALUE (?, 3, ?, ?, 'default')"; + Object[] insertParams = new Object[3]; + + IdWorker worker = new IdWorker(2); + + List fileList = new ArrayList(10); + fileList.add(new File("D:\\temp\\20200813155336499-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163005565-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163151768-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163427973-success.bmp")); + fileList.add(new File("D:\\temp\\20200813163431674-success.bmp")); + fileList.add(new File("D:\\temp\\20200814160340449-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112637891-success.bmp")); + fileList.add(new File("D:\\temp\\20200817112653598-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132658922-success.bmp")); + fileList.add(new File("D:\\temp\\20200819132710961-success.bmp")); + + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + + for (int i = 0; i < 1000000; i++) { + fs = new FileInputStream(fileList.get((int) Math.random() * 10)); + + long id = worker.nextId(); + byte[] left = new byte[512]; + byte[] right = new byte[512]; + + fs.read(left, (int) Math.random() * i, 512); + fs.read(right, (int) Math.random() * i, 512); + + insertParams[0] = id; + insertParams[1] = left; + insertParams[2] = right; + + runner.update(conn, insertStr, insertParams); + } + } catch (Exception ex) { + ex.printStackTrace();; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/Main.java b/src/com/casic/birmm/Main.java new file mode 100644 index 0000000..c04dea9 --- /dev/null +++ b/src/com/casic/birmm/Main.java @@ -0,0 +1,37 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3 FROM IRIS_DEVICE.dbo.person where Name='余璨译'"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.get(0).length; i++) { + if (i < 2) { + System.out.println(tempList.get(0)[i]); + } else { + System.out.println(ByteUtil.binToHexString((byte[] )tempList.get(0)[i])); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/com/casic/birmm/TransCasicDatabase.java b/src/com/casic/birmm/TransCasicDatabase.java new file mode 100644 index 0000000..03855e0 --- /dev/null +++ b/src/com/casic/birmm/TransCasicDatabase.java @@ -0,0 +1,182 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 集团总部SQL server库转MySQL库 + */ +public class TransCasicDatabase { + + private Map deptMap = new HashMap<>(); + + public static void main(String[] args) { + Connection conn = null; + Connection connMysql = null; + + Logger logger = Logger.getLogger(TransCasicDatabase.class.getName()); + + TransCasicDatabase tcd = new TransCasicDatabase(); + tcd.initDept(); + + String queryStr = "SELECT IId, Id, Name, Gender, Department, IDCardNo, FaceImage, " + + "LIrisCodeData, RIrisCodeData, LIrisCodeData2, RIrisCodeData2, LIrisCodeData3, RIrisCodeData3, " + + "LIrisCodeData4, RIrisCodeData4, LIrisCodeData5, RIrisCodeData5, LIrisCodeData6, RIrisCodeData6 " + + "FROM dbo.person order by IId"; + + String base = "E:\\重装系统备份\\casic\\photo\\"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + connMysql = ConnectionManager.getMySQLConnectionFromC3P0(); + connMysql.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + Integer id = (Integer) person[0]; + String name = (String) person[2]; + String gender = (String) person[3]; + String department = (String) person[4]; + String faceImage = (String) person[6]; + + logger.info(id + "\t" + name + "\t" + gender + "\t" + department + "\t" + faceImage); + + // 1、插入人员表sys_person + String insertPersonStr = "INSERT INTO SYS_PERSON (ID, DELFLAG, NAME, SEX, DEPTID, ID_CARD_NO, PERSON_TYPE, CARD_TYPE) VALUES (?, '0', ?, ?, ?, ?, '1', '111')"; + Object[] insertPersonParams = new Object[5]; + insertPersonParams[0] = id; + insertPersonParams[1] = name; + insertPersonParams[2] = gender.equals("男") ? "1" : "2"; + insertPersonParams[3] = tcd.deptMap.containsKey(department) ? tcd.deptMap.get(department) : tcd.deptMap.get("其他"); + insertPersonParams[4] = id; + + int personCount = runner.update(connMysql, insertPersonStr, insertPersonParams); + System.out.println("insert person: " + personCount); + + // 2、插入人员图片 + File file = new File(base + faceImage); + if (file.exists() == true) { + String base64Str = UpdatePersonPhoto.byteConverterBASE64(file); + + if (null != base64Str && base64Str.equals("") == false) { + String insertPhotoStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] insertPhotoParams = new Object[2]; + insertPhotoParams[0] = id; + insertPhotoParams[1] = "data:image/jpeg;base64," + base64Str; + + int photoCount = runner.update(connMysql, insertPhotoStr, insertPhotoParams); + System.out.println("insert photo: " + photoCount); + } + } + + // 3、插入虹膜数据 + String leftIris1 = ""; + if (person[7] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[7]); + } + logger.info("left1: " + leftIris1); + + String rightIris1 = ""; + if (person[8] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[8]); + } + logger.info("right1: " + rightIris1); + + String leftIris2 = ""; + if (person[9] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[9]); + } + logger.info("left2: " + leftIris2); + + String rightIris2 = ""; + if (person[10] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[10]); + } + logger.info("right2: " + rightIris2); + + String leftIris3 = ""; + if (person[11] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[11]); + } + logger.info("left3: " + leftIris3); + + String rightIris3 = ""; + if (person[12] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[12]); + } + logger.info("right3: " + rightIris3); + + if (null != person[7] && null != person[8] && null != person[9] && + null != person[10] && null != person[11] && null != person[12]) { + String insertIrisStr = "INSERT INTO IRIS_DATA (ID, PERSON_ID, ID_CARD_NO, LEFT_IRIS_CODE1, LEFT_IRIS_CODE2, LEFT_IRIS_CODE3, RIGHT_IRIS_CODE1, RIGHT_IRIS_CODE2, RIGHT_IRIS_CODE3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; + Object[] insertIrisParams = new Object[9]; + insertIrisParams[0] = id; + insertIrisParams[1] = id; + insertIrisParams[2] = id; + insertIrisParams[3] = (byte[]) person[7]; + insertIrisParams[4] = (byte[]) person[9]; + insertIrisParams[5] = (byte[]) person[11]; + insertIrisParams[6] = (byte[]) person[8]; + insertIrisParams[7] = (byte[]) person[10]; + insertIrisParams[8] = (byte[]) person[12]; + + int irisCount = runner.update(connMysql, insertIrisStr, insertIrisParams); + System.out.println("insert iris: " + irisCount); + } + + logger.info(""); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(connMysql); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void initDept() { + deptMap.put("集团领导", 1236854643826184195L); + deptMap.put("办公厅(总助)", 1236854643826184196L); + deptMap.put("办公厅", 1236854643826184197L); + deptMap.put("计划发展部", 1236854643826184198L); + deptMap.put("科研生产部", 1236854643826184199L); + deptMap.put("科技与质量部", 1236854643826184200L); + deptMap.put("空间工程部", 1236854643826184201L); + deptMap.put("财务部", 1236854643826184202L); + deptMap.put("资产运营部", 1236854643826184203L); + deptMap.put("经济合作部", 1236854643826184204L); + deptMap.put("国际业务部", 1236854643826184205L); + deptMap.put("人力资源部", 1236854643826184206L); + deptMap.put("安全保障部", 1236854643826184207L); + deptMap.put("审计与风险管理部", 1236854643826184208L); + deptMap.put("纪检监察部", 1236854643826184209L); + deptMap.put("党群工作部", 1236854643826184210L); + deptMap.put("科信部", 1236854643826184211L); + deptMap.put("新闻中心", 1236854643826184212L); + deptMap.put("总部车队", 1236854643826184213L); + deptMap.put("其他", 1236854643826184214L); + } +} diff --git a/src/com/casic/birmm/TransPersonPhotoBirmm.java b/src/com/casic/birmm/TransPersonPhotoBirmm.java new file mode 100644 index 0000000..8410e4a --- /dev/null +++ b/src/com/casic/birmm/TransPersonPhotoBirmm.java @@ -0,0 +1,52 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class TransPersonPhotoBirmm { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, photo_data from sys_person"; + + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + for (int i = 0; i < tempList.size(); i++) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + if (null == tempList.get(i)[1]) { + continue; + } + Object[] params = new Object[2]; + params[0] = tempList.get(i)[0]; + + String base64Str = Base64.getEncoder().encodeToString((byte[]) tempList.get(i)[1]); + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + params[0]); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonIdCard.java b/src/com/casic/birmm/UpdatePersonIdCard.java new file mode 100644 index 0000000..065d2c2 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIdCard.java @@ -0,0 +1,146 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author TAN YUE + * 更新院本部人员身份证号 + */ +public class UpdatePersonIdCard { + public Map deptMap = new HashMap<>(); + public static void main(String[] args) { + Connection conn = null; + UpdatePersonIdCard upi = new UpdatePersonIdCard(); + upi.initDept(); + + String queryStr = "select p.id, name, fullname, id_card_no from sys_person p, sys_dept d where p.DEPTID = d.id"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + String deptname = (String) personList.get(i)[2]; + String id_card_no = (String) personList.get(i)[3]; + + String queryIdStr = "select name, comp, dept, idcard from sys_person_idcard where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + List idList = runner.query(conn, queryIdStr, new ArrayListHandler(), param); + + if (null == idList || idList.size() == 0) { + noPhotoList.add(name); + } else if (idList.size() == 1) { + // 部门 + String comp = (String) idList.get(0)[1]; + // 身份证号 + String idcard = (String) idList.get(0)[3]; + + // 更新员工编号 + String updateStr = "update sys_person set deptid = ?, id_card_no = ? where id = ?"; + Object[] uParams = new Object[3]; + uParams[0] = upi.deptMap.get(comp); + uParams[1] = idcard; + uParams[2] = personId; + runner.update(conn, updateStr, uParams); + + correctList.add(name); + } else { + renameList.add(name); + } + } + + System.out.println("正常更新:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void initDept() { + deptMap.put("部办公室", 1273594159444766722L); + deptMap.put("党委办公室", 1273594221398831106L); + deptMap.put("二部领导", 1273596061125423106L); + deptMap.put("发展计划处", 1273596168180838401L); + deptMap.put("科技委", 1273596218474737666L); + deptMap.put("质量技术处", 1273596278751080450L); + deptMap.put("科研处", 1273596324095700993L); + deptMap.put("生产处", 1273596364189052930L); + deptMap.put("技安处", 1273596404676669441L); + deptMap.put("产业发展处", 1273596444228956162L); + deptMap.put("人力资源处", 1273596496372543490L); + deptMap.put("财务处", 1273596539259301889L); + deptMap.put("保密处", 1273596591742627841L); + deptMap.put("行政处", 1273596632884555778L); + deptMap.put("保卫处", 1273596673338617858L); + deptMap.put("纪检审计风险处", 1273596714157584386L); + deptMap.put("工会办公室", 1273596757409247233L); + deptMap.put("离退休办公室", 1273596802867113986L); + deptMap.put("801办公室", 1273596848991875074L); + deptMap.put("805、810办公室", 1273596892813963266L); + deptMap.put("军贸代表室", 1273596937978228738L); + deptMap.put("精导/军仿专业组秘书", 1273596977723453441L); + deptMap.put("一室", 1273597017661616129L); + deptMap.put("二室", 1273597057184542722L); + deptMap.put("三室", 1273597093884702721L); + deptMap.put("四室", 1273597136117149697L); + deptMap.put("五室", 1273597179431727105L); + deptMap.put("六室", 1273597226969968642L); + deptMap.put("七室", 1273597266669056002L); + deptMap.put("八室", 1273597305634140161L); + deptMap.put("九室", 1273597344792162306L); + deptMap.put("十室", 1273597398907072513L); + deptMap.put("十一室", 1273597442120986625L); + deptMap.put("十三室", 1273597482361139201L); + deptMap.put("十五室", 1273597527693176834L); + deptMap.put("十六室", 1273597565945229314L); + deptMap.put("技术保障中心", 1273597608643244033L); + deptMap.put("档案情报资料室", 1273597649445433346L); + deptMap.put("售后服务保障事业部", 1273597687651348481L); + deptMap.put("空间工程技术研究室", 1273597726213779457L); + deptMap.put("仿真公司", 1273597790575374338L); + deptMap.put("仿真", 1273597790575374338L); + deptMap.put("其他", 1273597832560357377L); + } +} diff --git a/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java new file mode 100644 index 0000000..3cadc96 --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonIrisDataFromSQLServer.java @@ -0,0 +1,101 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.List; + +public class UpdatePersonIrisDataFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonIrisDataFromSQLServer.class.getName()); + + String queryStr = "SELECT LIrisCodeData, LIrisCodeData2, LIrisCodeData3, RIrisCodeData, RIrisCodeData2, RIrisCodeData3 " + + "FROM dbo.person WHERE IId = 839"; + + String updateStr = "UPDATE IRIS_DATA SET LEFT_IRIS_CODE1=?, LEFT_IRIS_CODE2=?, LEFT_IRIS_CODE3=?, " + + "RIGHT_IRIS_CODE1=?, RIGHT_IRIS_CODE2=?, RIGHT_IRIS_CODE3=? " + + "WHERE PERSON_ID=1210930803566186496"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String leftIris1 = ""; + if (person[0] != null) { + leftIris1 = ByteUtil.binToHexString((byte[]) person[0]); + } + logger.info("left1: " + leftIris1); + + String leftIris2 = ""; + if (person[1] != null) { + leftIris2 = ByteUtil.binToHexString((byte[]) person[1]); + } + logger.info("left2: " + leftIris2); + + String leftIris3 = ""; + if (person[2] != null) { + leftIris3 = ByteUtil.binToHexString((byte[]) person[2]); + } + logger.info("left3: " + leftIris3); + + String rightIris1 = ""; + if (person[3] != null) { + rightIris1 = ByteUtil.binToHexString((byte[]) person[3]); + } + logger.info("right1: " + rightIris1); + + String rightIris2 = ""; + if (person[4] != null) { + rightIris2 = ByteUtil.binToHexString((byte[]) person[4]); + } + logger.info("right2: " + rightIris2); + + String rightIris3 = ""; + if (person[5] != null) { + rightIris3 = ByteUtil.binToHexString((byte[]) person[5]); + } + logger.info("right3: " + rightIris3); + + // 更新iris_data表 + Object[] updateIrisParams = new Object[6]; + updateIrisParams[0] = (byte[]) person[0]; + updateIrisParams[1] = (byte[]) person[1]; + updateIrisParams[2] = (byte[]) person[2]; + updateIrisParams[3] = (byte[]) person[3]; + updateIrisParams[4] = (byte[]) person[4]; + updateIrisParams[5] = (byte[]) person[5]; + runner.update(mysqlConn, updateStr, updateIrisParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhoto.java b/src/com/casic/birmm/UpdatePersonPhoto.java new file mode 100644 index 0000000..bff967e --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhoto.java @@ -0,0 +1,150 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; + +import java.io.*; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhoto { + public static void main(String[] args) { + Connection conn = null; + + String queryStr = "select id, name from sys_person"; + try { + conn = ConnectionManager.getMySQLConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List personList = runner.query(conn, queryStr, new ArrayListHandler()); + + String base = "D:\\Download\\photo\\"; + + // 正确更新列表 + List correctList = new ArrayList<>(); + + // 没有照片列表 + List noPhotoList = new ArrayList<>(); + + // 重名列表 + List renameList = new ArrayList<>(); + + for (int i = 0; i < personList.size(); i++) { + Long personId = (Long) personList.get(i)[0]; + String name = (String) personList.get(i)[1]; + + // 查询工号 + String queryFileStr = "select name, filename from temp where name = ?"; + Object[] param = new Object[1]; + param[0] = name; + + List fileList = runner.query(conn, queryFileStr, new ArrayListHandler(), param); + if (null == fileList || fileList.size() == 0) { + noPhotoList.add(name); + } else if (fileList.size() == 1) { + String filename = (String) fileList.get(0)[1]; + + File file = null; + File file1 = new File(base + filename + ".jpg"); + File file2 = new File(base + filename + name + ".jpg"); + + if (file1.exists() == true) { + file = new File(base + filename + ".jpg"); + } else if (file2.exists() == true) { + file = new File(base + filename + name + ".jpg"); + } else { + // 没有找到照片 + noPhotoList.add(name); + continue; + } + + String base64Str = byteConverterBASE64(file); + if (null != base64Str && base64Str.equals("") == false) { + String insertStr = "insert into iris_person_photo (person_id, photo_data) values (?, ?)"; + + Object[] params = new Object[2]; + params[0] = personId; + params[1] = "data:image/jpg;base64," + base64Str; + + int count = runner.update(conn, insertStr, params); + System.out.println(count + " == " + name + "==" + filename); + + correctList.add(name); + + // 更新员工编号 + String updateStr = "update sys_person set person_code = ? where id = ?"; + Object[] uParams = new Object[2]; + uParams[0] = filename; + uParams[1] = personId; + runner.update(conn, updateStr, uParams); + } + } else { + renameList.add(name); + } + } + + System.out.println("正常录入照片:" + correctList.size()); + for(int i = 0; i < correctList.size(); i++) { + System.out.println(correctList.get(i)); + } + + System.out.println("没有找到照片:" + noPhotoList.size()); + for(int i = 0; i < noPhotoList.size(); i++) { + System.out.println(noPhotoList.get(i)); + } + + System.out.println("照片库重名:" + renameList.size()); + for(int i = 0; i < renameList.size(); i++) { + System.out.println(renameList.get(i)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public static String byteConverterBASE64(File file){ + long size = file.length(); + byte[] imageByte = new byte[(int)size]; + FileInputStream fs = null; + BufferedInputStream bis = null; + try { + fs = new FileInputStream(file); + bis = new BufferedInputStream(fs); + bis.read(imageByte); + } catch (FileNotFoundException e) { + System.out.println("文件"+file.getName()+"不能被找到:"+e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + System.out.println("byte转换BASE64出错:"+e.getMessage()); + e.printStackTrace(); + } finally{ + if(bis != null){ + try { + bis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(fs != null){ + try { + fs.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return (new sun.misc.BASE64Encoder()).encode(imageByte); + } +} diff --git a/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java new file mode 100644 index 0000000..d6edbdd --- /dev/null +++ b/src/com/casic/birmm/UpdatePersonPhotoFromSQLServer.java @@ -0,0 +1,61 @@ +package com.casic.birmm; + +import com.casic.birmm.util.ByteUtil; +import com.casic.birmm.util.ConnectionManager; +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Base64; +import java.util.List; + +public class UpdatePersonPhotoFromSQLServer { + + public static void main(String[] args) { + Connection conn = null; + Connection mysqlConn = null; + Logger logger = Logger.getLogger(UpdatePersonPhotoFromSQLServer.class.getName()); + + String queryFaceImage = "SELECT ImageBytes FROM dbo.Image where Guid = '0aaf1511-23ee-4028-b261-7fb8e7aa7423'"; + + String updateStr = "UPDATE IRIS_PERSON_PHOTO SET PHOTO_DATA=? WHERE PERSON_ID=1210932145873489920"; + + try { + conn = ConnectionManager.getSQLServerConnectionFromC3P0(); + conn.setAutoCommit(false); + + mysqlConn = ConnectionManager.getMySQLConnectionFromC3P0(); + mysqlConn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryFaceImage, new ArrayListHandler()); + + System.out.println(tempList.size()); + for (int i = 0; i < tempList.size(); i++) { + Object[] person = tempList.get(i); + + String base64Str = Base64.getEncoder().encodeToString((byte[]) person[0]); + logger.info("faceImage: " + "data:image/png;base64," + base64Str); + + // 更新iris_person_photo表 + Object[] updatePhotoParams = new Object[1]; + updatePhotoParams[0] = "data:image/png;base64," + base64Str; + runner.update(mysqlConn, updateStr, updatePhotoParams); + + logger.info("\n"); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + finally { + try { + DbUtils.commitAndClose(mysqlConn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/com/casic/birmm/util/ByteUtil.java b/src/com/casic/birmm/util/ByteUtil.java new file mode 100644 index 0000000..04f49a0 --- /dev/null +++ b/src/com/casic/birmm/util/ByteUtil.java @@ -0,0 +1,452 @@ +package com.casic.birmm.util; + +public class ByteUtil { + + /* BCD码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bcd码转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x33, 5, 4) = 3 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int bcdToInt(byte b, int highBit, int lowBit) { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 10) { + return -1; + } + return b2; + } + + /** + * bcd码转换为整数 错误则返回-1 + * 如ByteUtil.bcdToInt((byte) 0x73) = 73 + * + * @param b 输入字节,默认4位一组,先高后低 + * @return + */ + public static int bcdToInt(byte b) { + int pl = 0x0f; + int ph = 0xf0; + + int h = (ph & b) >> 4; + int l = (pl & b); + + if (h >= 10 || l >= 10) { + return -1; + } + return h * 10 + l; + } + + /** + * bcd码转换为long型整数 + * 如字节数组{0x25, 0x23}转换为2523 + * + * @param b + * @return + */ + public static long bcdToLong(byte[] bytes) { + if (ByteUtil.bcdToString(bytes).equals("") == false) + return Long.valueOf(ByteUtil.bcdToString(bytes)).longValue(); + else + return -1; + } + + + /** + * bcd码转换为字符串 按字节顺序 高位在前低位在后 + * 如字节数组{0x01, 0x02, 0x03}转换为"010203" + * + * @param bytes + * @return + */ + public static String bcdToString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + if (ByteUtil.bcdToInt(bytes[i], 7, 4) != -1 && ByteUtil.bcdToInt(bytes[i], 3, 0) != -1) { + sb.append(ByteUtil.bcdToInt(bytes[i], 7, 4)); + sb.append(ByteUtil.bcdToInt(bytes[i], 3, 0)); + } + } + + return sb.toString(); + } + + + /* BIN码转换为数值或字符 */ + + /** + * 单一字节中选择指定位bin码转换为整数 + * 如ByteUtil.binToInt((byte) 0xA3, 7, 7) = 1 + * + * @param b + * @param highBit 高位,最大7 + * @param lowBit 低位,从0开始 + * @return + */ + public static int binToInt(byte b, int highBit, int lowBit) throws RuntimeException { + int g = highBit - lowBit + 1; + int a = ((int) Math.pow(2, g) - 1) << lowBit; + int b2 = (b & a) >> lowBit; + if (b2 < 0 || b2 >= 16) { + throw new RuntimeException(); + } + return b2; + } + + /** + * BIN字节转换为整数 + * 如ByteUtil.bcdToInt((byte) 0x7B) = 123 + * + * @param b + * @return + */ + public static int binToInt(byte b) { + int i1 = 0x80 & b; + if (i1 == 0x80) { + int i2 = 0x7f & b; + return 128 + i2; + } else { + return b; + } + } + + /** + * BIN码转换为整数 高位在前低位在后 + * 如ByteUtil.bcdToInt(new byte[] {(byte) 0x7B, 0x22}) = 31522 + * + * @param bytes + * @return + */ + public static int binToInt(byte[] bytes) { + int i10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + i10 = i10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return i10; + } + + /** + * BIN码转换为LONG型整数 高位在前低位在后 + * 如ByteUtil.bcdToLong(new byte[] {(byte) 0x7B, 0x22, 0x32, 0x9A}) = 2065838746 + * + * @param bytes + * @return + */ + public static int binToLong(byte[] bytes) { + int l10 = 0; + if (null != bytes && bytes.length != 0) { + for (int i = 0; i < bytes.length; i++) { + l10 = l10 + new Double(Math.pow(16, (bytes.length - i - 1) * 2)).intValue() * ByteUtil.binToInt(bytes[i]); + } + } + return l10; + } + + /** + * 字节数组转换为16进制字符串 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * + * @param bytes + * @return + */ + public static String binToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + sb.append(Integer.toHexString(binToInt((byte) ((bytes[i] & 0xf0) >> 4))).toUpperCase()); + sb.append(Integer.toHexString(binToInt((byte) (bytes[i] & 0x0f))).toUpperCase()); + } + + return sb.toString(); + } + + /** + * 字节数组转换位16进制字符串 + * 按字节数组顺序转换 + * 如字节数组{0x21, 0x06, 0x01, 0x04, 0x40, (byte) 0xE2, 0x01}转换为"2106010440E201" + * start和end为substring方法的参数,表示从起始字符开始,截取到不包括结束字符的子串 + * + * @param bytes + * @param start + * @param end + * @return + */ + public static String binToHexString(byte[] bytes, int start, int end) { + String str = binToHexString(bytes); + + if (null != str && str.equals("") == false && str.length() >= end) + return str.substring(start, end); + + return ""; + } + + + /** + * BIN输出为二进制字符串 + * 如字节数组{0x01, 0x38}转换为字符串"0000000100111000" + * + * @param bytes + * @return + */ + public static String binToBinString(byte[] bytes) { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toBinaryString(binToInt(bytes[i])); + while (s.length() < 8) { + s = "0" + s; + } + sb.append(s); + } + + return sb.toString(); + } + + + /* int转换为BCD码或BIN码 */ + /** + * 两位整数转换成一个字节的BCD码 + * 大于100的整数取其十位和个位 十位在前个位在后 + * 如79转换为0x79 + * + * @param i + * @return + */ + public static byte intToBcd(int i) { + byte b = 0x00; + while (i > 99) { + i = i % 100; + } + + int l = i % 10; + int h = i / 10; + + b = (byte) (h << 4 | l); + + return b; + } + + /** + * 整数转换为字节数组 高位在前低位在后 + * 如 2379转换为0x23, 0x79 + * + * @param i + * @return + */ + public static byte[] intToBcds(long l) { + String str = String.valueOf(l); + Bytes bytes = new Bytes(); + + if (str.length() % 2 == 1) { + str = "0" + str; + } + + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BCD码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x34, 0x79, 指定6字节转换为0x00, 0x00, 0x03, 0x01, 0x34, 0x79 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcds(long l, int length) { + byte[] bts = intToBcds(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + /** + * 整数转换为指定字节数的BCD码数组 低位在前高位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0x79, 0x34, 指定6字节转换为0x79, 0x34, 0x01, 0x03, 0x00, 0x00 + * + * @param i + * @param length + * @return + */ + public static byte[] intToBcdsHL(long l, int length) { + Bytes bs = new Bytes(); + + for (int i = 0; i < length; i++) { + int low = (int) (l % 100); + bs.append(ByteUtil.intToBcd(low)); + l = l / 100; + } + + return bs.toBytes(); + } + + /** + * 整数转换为BIN码字节数组 高位在前低位在后 + * 如113479转换为0x01, 0xBB, 0x47 + * + * @param l + * @return + */ + public static byte[] intToBins(long l) { + String str = Long.toHexString(l); + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 整数转换为指定字节数的BIN码数组 高位在前低位在后 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如 3013479指定2字节转换为0xFB, 0x67, 指定6字节转换为0x00, 0x00, 0x00, 0x2D, 0xFB, 0x67 + * + * @param l + * @param length + * @return + */ + public static byte[] intToBins(long l, int length) { + byte[] bts = intToBins(l); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 16进制字符串转换为字节数组 */ + /** + * 16进制字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] hexStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append((byte) Integer.parseInt(s, 16)); + } + + return bytes.toBytes(); + } + + /** + * 16进制字符串顺序转换为指定字节数的BIN码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] hexStringToBytes(String str, int length) { + byte[] bts = hexStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } + + + /* 十进制BCD码字符串转换为字节数组 */ + /** + * 十进制BCD码字符串顺序转换为字节数组 + * 如字符串"13810411703"转换为字节数组{0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @return + */ + public static byte[] bcdStringToBytes(String str) { + if (str.length() % 2 == 1) { + str = "0" + str; + } + + Bytes bytes = new Bytes(); + for (int i = 0; i < str.length() - 1; i = i + 2) { + String s = str.substring(i, i + 2); + bytes.append(ByteUtil.intToBcd(Integer.parseInt(s))); + } + + return bytes.toBytes(); + } + + /** + * 十进制BCD码字符串顺序转换为指定字节数的BCD码数组 从低位开始计算长度 超出部分忽略 不足部分在高位补0 + * 如字符串"13810411703"转换为3字节数组{0x41, 0x17, 0x03}, 指定8字节转换为{0x00, 0x00, 0x01, 0x38, 0x10, 0x41, 0x17, 0x03} + * + * @param str + * @param length + * @return + */ + public static byte[] bcdStringToBytes(String str, int length) { + byte[] bts = bcdStringToBytes(str); + if (bts.length == length) { + return bts; + } else { + byte[] bytes = new byte[length]; + for (int j = length - 1; j >= 0; j--) { + if (j + bts.length - length >= 0) { + bytes[j] = bts[j + bts.length - length]; + } else { + bytes[j] = 0x00; + } + } + + return bytes; + } + } +} diff --git a/src/com/casic/birmm/util/Bytes.java b/src/com/casic/birmm/util/Bytes.java new file mode 100644 index 0000000..054c5c9 --- /dev/null +++ b/src/com/casic/birmm/util/Bytes.java @@ -0,0 +1,73 @@ +package com.casic.birmm.util; + +public class Bytes { + + private byte[] buffer = null; + + public Bytes() { + + } + + public Bytes append(byte b) { + byte[] nb = null; + if (buffer == null) { + nb = new byte[] { b }; + } else { + nb = new byte[buffer.length + 1]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + nb[nb.length - 1] = b; + } + buffer = nb; + return this; + } + + public Bytes append(byte[] bs) { + if (bs == null) + return this; + byte[] nb = null; + if (buffer == null) { + buffer = bs; + } else { + nb = new byte[buffer.length + bs.length]; + for (int i = 0; i < buffer.length; i++) { + nb[i] = buffer[i]; + } + for (int i = 0; i < bs.length; i++) { + nb[buffer.length + i] = bs[i]; + } + buffer = nb; + } + return this; + } + + public byte[] toBytes() { + return buffer; + } + + public byte[] toBytes(int l) { + Bytes bs = new Bytes(); + + for (int i = 0; i < l; i++) { + if (i < buffer.length) { + bs.append(buffer[i]); + } else { + bs.append((byte) 0x00); + } + } + + return bs.toBytes(); + } + + public static void main(String[] args) { + Bytes bytes = new Bytes(); + int i = 0xf2; + byte a = 0x68; + byte[] b = new byte[] { 0x11, 0x22 }; + byte c = (byte) i; + byte[] r = bytes.append(a).append(b).append(c).toBytes(); + System.out.println(r); + } + +} diff --git a/src/com/casic/birmm/util/Configure.java b/src/com/casic/birmm/util/Configure.java new file mode 100644 index 0000000..47f7955 --- /dev/null +++ b/src/com/casic/birmm/util/Configure.java @@ -0,0 +1,38 @@ +package com.casic.birmm.util; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Configure { + + private static Properties properties = new Properties(); + + static { + try { + ClassLoader cl = Configure.class.getClassLoader(); + InputStream is = cl.getResourceAsStream("sys.properties"); + properties.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return properties.getProperty(key); + } + + public static String getProperty(String key, String defaultValue) { + String value = properties.getProperty(key); + if (null == value) { + return defaultValue; + } else { + return value; + } + } + + public static void main(String[] args) { + + } + +} diff --git a/src/com/casic/birmm/util/ConnectionManager.java b/src/com/casic/birmm/util/ConnectionManager.java new file mode 100644 index 0000000..b783dd7 --- /dev/null +++ b/src/com/casic/birmm/util/ConnectionManager.java @@ -0,0 +1,179 @@ +package com.casic.birmm.util; + +import java.sql.Connection; +import java.sql.SQLException; + +import com.mchange.v2.c3p0.ComboPooledDataSource; + +public class ConnectionManager { + + public static ComboPooledDataSource dsOracle; + public static ComboPooledDataSource dsSQLServer; + public static ComboPooledDataSource dsMySQL; + public static ComboPooledDataSource dsMySQLDest; + + static { + // 连接Oracle数据库 + try { + dsOracle = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.ORACLE.HOST", "localhost"); + String port = Configure.getProperty("DB.ORACLE.PORT", "1521"); + String dbname = Configure.getProperty("DB.ORACLE.SERVICE", "dxcg"); + String url = "jdbc:oracle:thin:@" + host + ":" + port + ":" + dbname; + System.out.println(url); + dsOracle.setJdbcUrl(url); + + dsOracle.setUser(Configure.getProperty("DB.ORACLE.USERNAME", "dxcg")); + dsOracle.setPassword(Configure.getProperty("DB.ORACLE.PASSWORD")); + + dsOracle.setDriverClass("oracle.jdbc.driver.OracleDriver"); + } catch (Exception e) { + dsOracle = null; + e.printStackTrace(); + } + + // 连接SQL Server数据库 + try { + dsSQLServer = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.SQLSERVER.HOST", "localhost"); + String port = Configure.getProperty("DB.SQLSERVER.PORT", "1433"); + String dbname = Configure.getProperty("DB.SQLSERVER.SERVICE", "IRIS_DEVICE"); + String url = "jdbc:sqlserver://" + host + ":" + port + ";DatabaseName=" + dbname; + System.out.println(url); + dsSQLServer.setJdbcUrl(url); + + String username = Configure.getProperty("DB.SQLSERVER.USERNAME", "sa"); + String password = Configure.getProperty("DB.SQLSERVER.PASSWORD", "sa"); + + dsSQLServer.setUser(username); + dsSQLServer.setPassword(password); + + dsSQLServer.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (Exception e) { + dsSQLServer = null; + e.printStackTrace(); + } + + // 连接MySQL数据库 + try { + dsMySQL = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQL.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.PASSWORD", "root"); + + dsMySQL.setUser(username); + dsMySQL.setPassword(password); + + dsMySQL.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQL = null; + e.printStackTrace(); + } + + // 连接MySQL目标数据库 + try { + dsMySQLDest = new ComboPooledDataSource(); + + String host = Configure.getProperty("DB.MYSQL.DEST.HOST", "localhost"); + String port = Configure.getProperty("DB.MYSQL.DEST.PORT", "3306"); + String dbname = Configure.getProperty("DB.MYSQL.DEST.SERVICE", "casic_iris_birmm"); + String url = "jdbc:mysql://" + host + ":" + port + "/" + dbname + "?characterEncoding=utf8"; + System.out.println(url); + dsMySQLDest.setJdbcUrl(url); + + String username = Configure.getProperty("DB.MYSQL.DEST.USERNAME", "root"); + String password = Configure.getProperty("DB.MYSQL.DEST.PASSWORD", "root"); + + dsMySQLDest.setUser(username); + dsMySQLDest.setPassword(password); + + dsMySQLDest.setDriverClass("com.mysql.jdbc.Driver"); + } catch (Exception e) { + dsMySQLDest = null; + e.printStackTrace(); + } + } + + /** + * 从C3P0的连接池中获取Oracle数据库的jdbc连接 + * @return + */ + public static Connection getOracleConnectionFromC3P0() { + Connection conn = null; + if (null != dsOracle) { + try { + conn = dsOracle.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取SQLServer数据库的jdbc连接 + * @return + */ + public static Connection getSQLServerConnectionFromC3P0() { + Connection conn = null; + if (null != dsSQLServer) { + try { + conn = dsSQLServer.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL数据库的jdbc连接 + * @return + */ + public static Connection getMySQLConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQL) { + try { + conn = dsMySQL.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + /** + * 从C3P0的连接池中获取MySQL目标数据库的jdbc连接 + * @return + */ + public static Connection getMySQLDestConnectionFromC3P0() { + Connection conn = null; + if (null != dsMySQLDest) { + try { + conn = dsMySQLDest.getConnection(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return conn; + } + + public static void main(String[] args) { + Connection conn1 = ConnectionManager.getOracleConnectionFromC3P0(); + Connection conn2 = ConnectionManager.getSQLServerConnectionFromC3P0(); + Connection conn3 = ConnectionManager.getMySQLConnectionFromC3P0(); + + System.out.println(conn1); + System.out.println(conn2); + System.out.println(conn3); + } +} \ No newline at end of file diff --git a/src/com/casic/birmm/util/IdWorker.java b/src/com/casic/birmm/util/IdWorker.java new file mode 100644 index 0000000..0cfcec3 --- /dev/null +++ b/src/com/casic/birmm/util/IdWorker.java @@ -0,0 +1,71 @@ +package com.casic.birmm.util; + +public class IdWorker { + private final long workerId; + private final static long twepoch = 1288834974657L; + private long sequence = 0L; + private final static long workerIdBits = 4L; + public final static long maxWorkerId = -1L ^ -1L << workerIdBits; + + private final static long sequenceBits = 10L; + private final static long workerIdShift = sequenceBits; + private final static long timestampLeftShift = sequenceBits + workerIdBits; + public final static long sequenceMask = -1L ^ -1L << sequenceBits; + private long lastTimestamp = -1L; + + public IdWorker(final long workerId) { + super(); + if (workerId > this.maxWorkerId || workerId < 0) { + throw new IllegalArgumentException(String.format( + "worker Id can't be greater than %d or less than 0", + this.maxWorkerId)); + } + this.workerId = workerId; + } + public synchronized long nextId() { + long timestamp = this.timeGen(); + if (this.lastTimestamp == timestamp) { + this.sequence = (this.sequence + 1) & this.sequenceMask; + if (this.sequence == 0) { + System.out.println("###########" + sequenceMask); + timestamp = this.tilNextMillis(this.lastTimestamp); + } + } else { + this.sequence = 0; + } + if (timestamp < this.lastTimestamp) { + try { + throw new Exception( + String.format( + "Clock moved backwards. Refusing to generate id for %d milliseconds", + this.lastTimestamp - timestamp)); + } catch (Exception e) { + e.printStackTrace(); + } + } + this.lastTimestamp = timestamp; + long nextId = ((timestamp - twepoch << timestampLeftShift)) + | (this.workerId << this.workerIdShift) | (this.sequence); + System.out.println("timestamp:" + timestamp + ",timestampLeftShift:" + + timestampLeftShift + ",nextId:" + nextId + ",workerId:" + + workerId + ",sequence:" + sequence); + return nextId; + } + private long tilNextMillis(final long lastTimestamp) { + long timestamp = this.timeGen(); + while (timestamp <= lastTimestamp) { + timestamp = this.timeGen(); + } + return timestamp; + } + private long timeGen() { + return System.currentTimeMillis(); + } + + public static void main(String[] args){ + IdWorker worker2 = new IdWorker(2); + System.out.println(worker2.nextId()); + } + +} + diff --git a/src/com/casic/birmm/util/RecIrisUtil.java b/src/com/casic/birmm/util/RecIrisUtil.java new file mode 100644 index 0000000..bc00f63 --- /dev/null +++ b/src/com/casic/birmm/util/RecIrisUtil.java @@ -0,0 +1,50 @@ +package com.casic.birmm.util; + +import sun.misc.BASE64Decoder; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class RecIrisUtil { + /** + * 与C#通信,获取虹膜编码 + * @param image 虹膜图片 + * @return 成功返回虹膜编码,失败返回null + */ + public static byte[] getIrisCode(byte[] imageBytes) throws IOException { + byte[] irisCode = new byte[1024]; + + InputStream fis = new ByteArrayInputStream(imageBytes); + + //1.创建客户端Socket,指定服务器地址和端口 + Socket socket=new Socket("localhost", 20004); + //2.获取输出流,向服务器端发送信息 + OutputStream os=socket.getOutputStream();//字节输出流 + byte[] buf = new byte[4096]; + int len=0; + while((len = fis.read(buf))!=-1) { + os.write(buf, 0, len); + } + socket.shutdownOutput();//关闭输出流 + //3.获取输入流,读取服务器端的响应信息 + InputStream is=socket.getInputStream(); + byte[] bufIn = new byte[1024]; + int num =0; + int totalNum=0; + while ((num = is.read(bufIn))!=-1){ + System.arraycopy(bufIn,0,irisCode,totalNum,num); + totalNum = totalNum+num; + } + //4.关闭资源 + is.close(); + os.close(); + socket.close(); + if(totalNum==1024){ + return irisCode; + } + else return null; + } +} diff --git a/src/log4j.properties b/src/log4j.properties new file mode 100644 index 0000000..b0502cd --- /dev/null +++ b/src/log4j.properties @@ -0,0 +1,19 @@ +###log4j config + +#logger +log4j.logger.com.casic=info, message, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%-4c{1}] %m%n + +#message logger +log4j.appender.message=org.apache.log4j.DailyRollingFileAppender +log4j.appender.message.file=E\:/backup/203/IRIS4SXMK.log +log4j.appender.message.layout=org.apache.log4j.PatternLayout +log4j.appender.message.layout.ConversionPattern=%m%n +log4j.appender.message.encoding=UTF-8 + +#other logger +log4j.logger.com.mchange=error \ No newline at end of file diff --git a/src/sys.properties b/src/sys.properties new file mode 100644 index 0000000..3adcf3a --- /dev/null +++ b/src/sys.properties @@ -0,0 +1,49 @@ +#\u6570\u636e\u5e93\u8fde\u63a5\u53c2\u6570 +DB.ORACLE.USERNAME = fuzhou +DB.ORACLE.PASSWORD = fuzhou_203 +DB.ORACLE.PORT = 1521 +#DB.ORACLE.HOST = 192.168.0.203 +#DB.ORACLE.SERVICE = EYDB2 + +#DB.ORACLE.HOST = localhost +#DB.ORACLE.HOST = 223.84.218.107 +DB.ORACLE.HOST = 172.20.253.15 +DB.ORACLE.SERVICE = ORCL + +DB.SQLSERVER.HOST = 127.0.0.1 +DB.SQLSERVER.PORT = 1433 +DB.SQLSERVER.USERNAME = sa +DB.SQLSERVER.PASSWORD = sa +DB.SQLSERVER.SERVICE = IRIS_ERBU + +DB.MYSQL.HOST = 127.0.0.1 +DB.MYSQL.PORT = 3306 +DB.MYSQL.USERNAME = root +DB.MYSQL.PASSWORD = root +DB.MYSQL.SERVICE = iris + +DB.MYSQL.DEST.HOST = 127.0.0.1 +DB.MYSQL.DEST.PORT = 3306 +DB.MYSQL.DEST.USERNAME = root +DB.MYSQL.DEST.PASSWORD = root +DB.MYSQL.DEST.SERVICE = casic_iris_sxmk + +#\u57fa\u7840\u5b50\u7cfb\u7edf\u5730\u5740 +BASE.URL = http://223.84.218.107:9100/dcms + +#\u767e\u5ea6\u5730\u56fe\u8f6c\u6362\u63a5\u53e3\u5730\u5740 +#\u6b64\u767e\u5ea6\u5730\u56fe\u7684AK\u4e3a\u8c03\u8bd5\u4f7f\u7528\uff0c\u6b63\u5f0f\u90e8\u7f72\u8fd0\u884c\u5e94\u91cd\u65b0\u7533\u8bf7\uff0c\u5e76\u8bbe\u7f6e\u57df\u540d\u7684\u767d\u540d\u5355\uff0c\u4ee5\u9632\u88ab\u76d7\u7528\uff1b\u6b64\u5916\uff0c\u8fd8\u5e94\u8be5\u7533\u8bf7\u4e24\u4e2aAK\uff0c\u4e00\u4e2a\u7528\u4e8e\u524d\u7aef\u5c55\u793a\uff0c\u8bbe\u7f6e\u4e3a\u6d4f\u89c8\u5668\u6a21\u5f0f\uff0c\u53ea\u5f00\u542fjsapi\uff0c\u53e6\u4e00\u4e2a\u7528\u4e8e\u8c03\u7528\u5176\u4ed6\u63a5\u53e3 +BMAP.AK2 = c9GSEIXv6xb88X3vXPDNrVpnrgfNoW2l +BMAP.TRANSLATE.URL = http://api.map.baidu.com/geoconv/v1/ +BMAP.TRANSLATE.MAX.COORDS.COUNT = 100 + +#\u8f66\u724c\u53f7\u7684\u524d\u6bb5\u7f16\u7801 +CPH.PREFIX = \u8d63F + +MESSAGE_HOST = 127.0.0.1 +#MESSAGE_HOST = 172.20.253.17 +MESSAGE_PORT = 8087 + +#\u901a\u8fc7Web Service\u63a5\u53e3\u7684URL\u4ee5\u53ca\u53c2\u6570vKey +WS.URL = http://123.56.96.23:89/gpsonline/GPSAPI +WS.vKey = de78ca4ce39e4dd06106fa6fa215a61b \ No newline at end of file