/*
 * @Author: Kane
 * @Date: 2022-12-15 14:08:28
 * @LastEditors: Kane
 * @LastEditTime: 2023-03-26 22:26:21
 * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/account/CpicXIMStaffInfo.java
 * @Description: 产险厦门分公司员工信息对象
 *
 * Copyright (c) ${2022} by Kane, All Rights Reserved.
 */
package com.cpic.xim.utils.account;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/*****************************************************
 * 厦门太保员工信息
 * 使用工厂函数创建。
 *****************************************************/
public class CpicXIMStaffInfo
{

    /*****************************************************
     * 查询员工信息
     * @param uidOrCode p13账号或p09账号
     * @return 员工信息对象
     *****************************************************/
    public static CpicXIMStaffInfo getStaffInfo( String uidOrCode )
            throws SQLException, ClassNotFoundException
    {
        CpicXIMStaffInfo info = null;

        Connection connection = null;
        PreparedStatement stmt = null;
        ResultSet result = null;

        String jdbcURL = "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1";
        String userName = "dataex";
        String password = "cpic123456";
        String querySQL = "SELECT ry.staff_code,ry.staff_name,ry.p13uid,"
                + "               ry.department_code, bm.department_name,"
                + "               ry.section_office_code,ks.section_office_name "
                + "          FROM idst0.rydm_t ry,idst0.ks_t ks,idst0.bm_t bm "
                + "         WHERE ry.account_status = 0 AND (ry.staff_code = ? OR ry.p13uid = ?) "
                + "           and ry.section_office_code = ks.section_office_code "
                + "           and ry.department_code = bm.department_code ";

        try
        {
            Class.forName( "oracle.jdbc.driver.OracleDriver" );

            connection = DriverManager.getConnection( jdbcURL, userName, password );
            stmt = connection.prepareStatement( querySQL );
            stmt.setString( 1, uidOrCode );
            stmt.setString( 2, uidOrCode );

            result = stmt.executeQuery();

            if ( result.next() )
            {
                info = new CpicXIMStaffInfo();

                info.code = result.getString( 1 );
                info.name = result.getString( 2 );
                info.p13UID = result.getString( 3 );
                info.departmentCode = result.getString( 4 );
                info.departmentName = result.getString( 5 );
                info.sectionOfficeCode = result.getString( 6 );
                info.setctionOfficeName = result.getString( 7 );
            }
        }
        finally
        {
            try
            {
                if ( result != null )
                {
                    result.close();
                }
            }
            catch ( Exception exception )
            {
                exception.printStackTrace();
            }

            try
            {
                if ( stmt != null )
                {
                    stmt.close();
                }
            }
            catch ( Exception exception )
            {
                exception.printStackTrace();
            }

            try
            {
                if ( connection != null )
                {
                    connection.close();
                }
            }
            catch ( Exception exception )
            {
                exception.printStackTrace();
            }
        }

        return info;
    }

    private CpicXIMStaffInfo()
    {}

    public String getName()
    {
        return name;
    }

    public void setName( String name )
    {
        this.name = name;
    }

    public String getCode()
    {
        return code;
    }

    public void setCode( String code )
    {
        this.code = code;
    }

    public String getP13UID()
    {
        return p13UID;
    }

    public void setP13UID( String p13uid )
    {
        p13UID = p13uid;
    }

    public String getDepartmentCode()
    {
        return departmentCode;
    }

    public void setDepartmentCode( String departmentCode )
    {
        this.departmentCode = departmentCode;
    }

    public String getDepartmentName()
    {
        return departmentName;
    }

    public void setDepartmentName( String departmentName )
    {
        this.departmentName = departmentName;
    }

    public String getSectionOfficeCode()
    {
        return sectionOfficeCode;
    }

    public void setSectionOfficeCode( String sectionOfficeCode )
    {
        this.sectionOfficeCode = sectionOfficeCode;
    }

    public String getSetctionOfficeName()
    {
        return setctionOfficeName;
    }

    public void setSetctionOfficeName( String setctionOfficeName )
    {
        this.setctionOfficeName = setctionOfficeName;
    }

    @JsonProperty( "name" )
    private String name;

    @JsonProperty( "code" )
    private String code;

    @JsonProperty( "p13uid" )
    private String p13UID;

    @JsonProperty( "department_code" )
    private String departmentCode;

    @JsonProperty( "department_name" )
    private String departmentName;

    @JsonProperty( "section_office_code" )
    private String sectionOfficeCode;

    @JsonProperty( "section_office_name" )
    private String setctionOfficeName;
}
