Newer
Older
irisDatabase / src / com / casic / birmm / ExtractPersonIrisDataFromMySQLSxmk.java
TAN YUE on 9 Oct 2020 4 KB 20201008 初始建立
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<Object[]> tempList = (List<Object[]>) 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();
            }
        }
    }
}