Newer
Older
irisDatabase / src / com / casic / birmm / UpdatePersonPhoto.java
TAN YUE on 9 Oct 2020 5 KB 20201008 初始建立
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<Object[]> personList = runner.query(conn, queryStr, new ArrayListHandler());

            String base = "D:\\Download\\photo\\";

            // 正确更新列表
            List<String> correctList = new ArrayList<>();

            // 没有照片列表
            List<String> noPhotoList = new ArrayList<>();

            // 重名列表
            List<String> 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<Object[]> 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);
    }
}