给通达OA2008人事档案导入功能增加自定义字段

终于加进去了。效果不错。嘿嘿。
<?php
/*********************/
/*                   */
/*  Version : 5.1.0  */
/*  Author  : RM     */
/*  Comment : 071223 */
/*                   */
/*********************/

include_once( "inc/auth.php" );
include_once( "inc/utility_all.php" );
?>
<html>
<head>
<title>导入数据</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body class="bodycolor" topmargin="5">
<?php
if ( $FILE_NAME == "" )
{
?>
<script Language="JavaScript">
function CheckForm()
{
   if(document.form1.CSV_FILE.value=="")
   { alert("请选择要导入的文件!");
     return (false);
   }

   if (document.form1.CSV_FILE.value!="")
   {
     var file_temp=document.form1.CSV_FILE.value,file_name;
     var Pos;
     Pos=file_temp.lastIndexOf("\\");
     file_name=file_temp.substring(Pos+1,file_temp.length);
     document.form1.FILE_NAME.value=file_name;
   }

   return (true);
}

</script>
  <table border="0" width="100%" cellspacing="0" cellpadding="3" class="small">
    <tr>
      <td class="Big"><img src="/images/sys_config.gif" align="absmiddle"><span class="big3"> 导入人事数据</span><br>
      </td>
    </tr>
  </table>
  <br>
  <br>
  <div align="center" class="Big1">
  <b>请指定用于导入的CSV文件:</b>
  <form name="form1" method="post" action="import.php?FLOW_ID=<?php echo $FLOW_ID;?>" enctype="multipart/form-data" onSubmit="return CheckForm();">
    <input type="file" name="CSV_FILE" class="BigInput" size="30">
    <input type="hidden" name="FILE_NAME">
    <input type="hidden" name="GROUP_ID" value="<?php echo $GROUP_ID;?>">
    <input type="submit" value="导入" class="BigButton">
  </form>
  请使用人事档案模板导入数据!<a href="#" onClick="window.location='templet_export.php'">人事档案模板下载</a>
  <br>
<?php
    if ( $FILE_NAME == "" )
    {
        message( "说明", "1)EXECL的人事报表的第一列必须为姓名,余下的列名称必须与人员档案基本信息相对应;<BR>2)将改好的EXECL人员信息报表另存为CSV格式的文件;" );
    }
?>
  </div>
<?php
    exit( );
}
if ( strtolower( substr( $FILE_NAME, -3 ) ) != "csv" )
{
    message( "错误", "只能导入CSV文件!" );
    button_back( );
    exit( );
}

$title = array( "姓名" => "USER_NAME", "用户名" => "USER_ID", "部门" => "DEPT_NAME", "编号" => "NO", "身份证号码" => "CARD_NO", "婚姻状况" => "MARRY", "民族" => "NATION", "籍贯" => "NATIVE_PLACE", "户口所在地" => "HUKOU_PLACE", "参加工作时间" => "WORK_DATE", "加入本单位时间" => "JOIN_DATE", "学历" => "EDUCATION", "专业" => "SPECIALITY", "毕业院校" => "SCHOOL", "政治面貌" => "POLITICS", "职务" => "POST", "职称" => "TECH_POST", "家庭住址" => "HOME_ADDR", "家庭电话" => "HOME_TEL", "职务情况" => "CERTIFICATE", "奖惩记录" => "REWARD", "培训记录" => "TRAIN", "教育背景" => "EDU", "工作简历" => "WORK", "社会关系" => "SOCIATY", "岗位变动情况" => "POST_CHANGE", "担保记录" => "SURETY", "劳动合同签订情况" => "CONTRACT", "社保缴纳情况" => "INSURE", "体检记录" => "BODY_EXAMIM", "备注" => "RESUME", "出生日期" => "HR_BIRTHDAY", "用工类型" => "CONTRACTTYPE", "性别" => "SEX", "合同开始日期" => "CONTRACT_DATE1", "合同结束日期" => "CONTRACT_DATE2", "电子邮件" => "EMAIL" );
$ROW_COUNT = 0;
$SUCC_COUNT = 0;
$data = file_get_contents( $CSV_FILE );
if ( !$data )
{
    message( "错误", "打开文件错误!" );
    button_back( );
    exit( );
}

$lines = csv2array( $data, $title );
$lines_field = get_field_lines( $data, "HRMS" );
if ( count( $lines ) != count( $lines_field ) )
{
    message( "错误", "自定义字段数据不匹配" );
    button_back( );
    exit( );
}
$MSG_ERROR = array( );
$I = 0;
for ( ;    $I < count( $lines );    ++$I    )
{
    $line = $lines[$I];
    $DATA_NUM = count( $line );
    $STR_VALUE = "";
    $STR_Update = "";
    $STR_KEY = "";
    $STR_UpdateKEY = "";
    $MSG_ERROR[$ROW_COUNT] = "成功";
    $success = 1;
    foreach ( $line as $key => $value )
    {
        $value = ltrim( $value );
        if ($key != "DEPT_NAME" && $key != "USER_NAME" & $key != "USER_ID" )
        {
            $STR_KEY .= $key.",";
            $STR_UpdateKEY .= $key.",";
        }
        else
        {
            if ( $key == "DEPT_NAME" )
            {
                $DEPT_NAME = $value;
            }
            if ( $key == "USER_ID" )
            {
                $USER_ID = $value;
                if ( $value == "" )
                {
                    $MSG_ERROR[$ROW_COUNT] = "<font color=red>用户名为空,未导入</font>";
                    $success = 0;
                }
            }
            else
            {
                if ( $key == "USER_NAME" )
                {
                    $USER_NAME = $value;
                    if ( $value == "" )
                    {
                        $MSG_ERROR[$ROW_COUNT] = "<font color=red>姓名为空,未导入</font>";
                        $success = 0;
                    }
                }
            }
        }
        if ( $key == "HR_BIRTHDAY" )
        {
            $BIRTHDAY = $value;
        }
        if ( $key == "SEX" )
        {
            if ( $value == "男" )
            {
                $SEX = "0";
            }
            else
            {
                $SEX = "1";
            }
        }
        switch ( $value )
        {
        case "未婚" :
            $value = "0";
            break;
        case "已婚" :
            $value = "1";
            break;
        case "离异" :
            $value = "2";
            break;
        case "丧偶" :
            $value = "3";
            break;
        case "男" :
            $value = "0";
            break;
        case "女" :
            $value = "1";
        }

        if ( $key == "POLITICS" )
        {
            switch ( $value )
            {
            case "群众" :
                $value = "1";
                break;
            case "团员" :
                $value = "2";
                break;
            case "党员" :
                $value = "3";
                break;
            case "预备党员" :
                $value = "4";
            }
        }
        if (( $key != "DEPT_NAME" ) && ( $key != "USER_NAME" ) && ( $key != "USER_ID" ) )
        {
                if ( $key == "NATIVE_PLACE" || $key == "TECH_POST" || $key == "CONTRACTTYPE" )
                {
                    $query1 = "select CODE_NO from SYS_CODE where PARENT_NO='".$key."' and CODE_NAME='{$value}'";
                    if ( $key == "NATIVE_PLACE" )
                    {
                        $query1 = "select CODE_NO from SYS_CODE where PARENT_NO='AREA' and CODE_NAME='".$value."'";
                    }
                    $cursor1 = exequery( $connection, $query1 );
                    if ( $ROW = mysql_fetch_array( $cursor1 ) )
                    {
                        $value = $ROW['CODE_NO'];
                    }
                }
                $STR_VALUE .= "'".$value."',";
                $STR_Update .= "{$key}='{$value}',";
        }

    }
    if ( substr( $STR_KEY, -1 ) == "," )
    {
        $STR_KEY = substr( $STR_KEY, 0, -1 );
        $STR_UpdateKEY = substr( $STR_UpdateKEY, 0, -1 );
    }
    if ( substr( $STR_VALUE, -1 ) == "," )
    {
        $STR_VALUE = substr( $STR_VALUE, 0, -1 );
        $STR_Update = substr( $STR_Update, 0, -1 );
    }
    $query1 = "Select a.USER_ID,a.DEPT_ID from USER a left outer join DEPARTMENT b on a.DEPT_ID=b.DEPT_ID where a.USER_ID='".$USER_ID."'";
    $cursor1 = exequery( $connection, $query1 );
    if ( $ROW = mysql_fetch_array( $cursor1 ) )
    {
        $USER_ID = $ROW['USER_ID'];
        $MSG_ERROR[$ROW_COUNT] = "<font color=green>已有用户,资料已更新</font>";
        $query1 = "Select * from HRMS where USER_ID='".$USER_ID."'";
        $cursor = exequery( $connection, $query1 );
        if ( mysql_fetch_array( $cursor ) === FALSE )
        {
            $query = "insert into HRMS (USER_ID,".$STR_KEY.( ") values ('".$USER_ID."'," ).$STR_VALUE.")";
            exequery( $connection, $query );
        }
        else
        {
            $query1 = "update HRMS SET ".$STR_Update." where USER_ID='".$USER_ID."'";
            $cursor1 = exequery( $connection, $query1 );
            $query1 = "update USER SET SEX='".$SEX."' where USER_ID='".$USER_ID."'";
            $cursor1 = exequery( $connection, $query1 );
        }
    }
    else
    {
        $USER_ID = $USER_ID;
        $query1 = "select USER_ID from `USER` where USER_ID='".$USER_ID."'";
        $cursor1 = exequery( $connection, $query1 );
        if ( $ROW = mysql_fetch_array( $cursor1 ) )
        {
            $MSG_ERROR[$ROW_COUNT] = "<font color=red>用户已存在,未导入</font>";
            ++$ROW_COUNT;
            $success = 0;
        }
        else
        {
            $query1 = "select USER_PRIV from USER_PRIV order by PRIV_NO DESC";
            $cursor1 = exequery( $connection, $query1 );
            if ( $ROW = mysql_fetch_array( $cursor1 ) )
            {
                $USER_PRIV = $ROW['USER_PRIV'];
            }
            $query1 = "select DEPT_ID from DEPARTMENT where DEPT_NAME='".$DEPT_NAME."'";
            $cursor1 = exequery( $connection, $query1 );
            if ( $ROW = mysql_fetch_array( $cursor1 ) )
            {
                $DEPT_ID = $ROW['DEPT_ID'];
            }
            else
            {
                $MSG_ERROR[$ROW_COUNT] = "<font color=red>部门不存在,未导入</font>";
                ++$ROW_COUNT;
                $success = 0;
                continue;
            }
            $PASSWORD = crypt( "" );
            if ( $USER_NAME != "" && $USER_ID != "" )
            {
                $query1 = "insert into USER (USER_ID,USER_NAME,SEX,PASSWORD,USER_PRIV,POST_PRIV,POST_DEPT,CANBROADCAST,DEPT_ID,AVATAR,CALL_SOUND,DUTY_TYPE,SMS_ON,EMAIL_CAPACITY,FOLDER_CAPACITY,USER_PRIV_OTHER,USER_NO,NOT_LOGIN,NOT_VIEW_USER,NOT_VIEW_TABLE,BYNAME,BIRTHDAY,THEME,MOBIL_NO,MOBIL_NO_HIDDEN)
                      values ('".$USER_ID."','{$USER_NAME}','{$SEX}','{$PASSWORD}','{$USER_PRIV}','0','','0','{$DEPT_ID}','1','1','1','1',0,0,'','{$USER_NO}','1','1','1','','{$BIRTHDAY}','1','','')";
                exequery( $connection, $query1 );
                add_log( 6, $USER_ID, $LOGIN_USER_ID );
                $query = "insert into HRMS (USER_ID,".$STR_KEY.( ") values ('".$USER_ID."'," ).$STR_VALUE.")";
                exequery( $connection, $query );
            }
        }
    }
    if ( 0 < count( $lines_field[$I] ) )
    {
        save_field_data( "HRMS", $USER_ID, $lines_field[$I] );
    }
    ++$ROW_COUNT;
    if ( $success )
    {
        ++$SUCC_COUNT;
    }
}
if ( file_exists( $CSV_FILE ) )
{
    @unlink( $CSV_FILE );
}
?>
<br>
<table class="TableList" width="100%" align="center">
  <thead class="TableHeader">
    <td nowrap align="center">姓名</td>
    <td nowrap align="center">部门</td>
    <td nowrap align="center">性别</td>
    <td nowrap align="center">出生年月</td>
    <td nowrap align="center">民族</td>
    <td nowrap align="center">籍贯</td>
    <td nowrap align="center">政治面貌</td>
    <td nowrap align="center">身份证号码</td>
    <td nowrap align="center">备注</td>
    <td nowrap align="center">状态</td>
  </thead>
<?php
$I = 0;
for ( ;    $I < count( $lines );    ++$I    )
{
?>
  <tr align="center" style="<?php echo $TR_STYLE;?>" class="TableData">
    <td><?php echo $lines[$I]['USER_NAME'];?>(<?php echo $lines[$I]['USER_ID'];?>)</td>
    <td><?php echo $lines[$I]['DEPT_NAME'];?></td>
    <td><?php echo $lines[$I]['SEX'];?></td>
    <td><?php echo $lines[$I]['HR_BIRTHDAY'];?></td>
    <td><?php echo $lines[$I]['NATION'];?></td>    
    <td><?php echo $lines[$I]['NATIVE_PLACE'];?></td>
    <td><?php echo $lines[$I]['POLITICS'];?></td>
    <td><?php echo $lines[$I]['CARD_NO'];?></td>
    <td><?php echo $lines[$I]['RESUME'];?></td>
    <td align="left"><?php echo $MSG_ERROR[$I];?></td>
  </tr>
<?php
}
?>
</table>
<?php
message( "", "共".$SUCC_COUNT."条数据导入成功!" );
button_back( );
?>
</body>
</html>



function CSV2Array( $content, $title = array( ), $delimiter = ",", $enclosure = "\"", $optional = 1 )
{
    $content = trim( $content );
    $content = str_replace( "\r", "", $content );
    $csv_array = array( );
    $expr_line = "/\\n(?=(?:[^".$enclosure."]*".$enclosure."[^".$enclosure."]*".$enclosure.")*(?![^".$enclosure."]*".$enclosure."))/";
    $expr_field = "/".$delimiter."(?=(?:[^".$enclosure."]*".$enclosure."[^".$enclosure."]*".$enclosure.")*(?![^".$enclosure."]*".$enclosure."))/";
    $lines = preg_split( $expr_line, trim( $content ) );
    foreach ( $lines as $line )
    {
        $fields = preg_split( $expr_field, trim( $line ) );
        $csv_array[] = preg_replace( array( "/\"(.*)\"\$/s", "/\"\"/s" ), array( "\$1", "\"" ), $fields );
    }
    if ( !is_array( $title ) && count( $title ) == 0 || count( $csv_array ) == 0 )
    {
        return $csv_array;
    }
    $field_map = array( );
    while ( list( $key, $value ) = each( &$title ) )
    {
        if ( ( $index = array_search( $key, $csv_array[0] ) ) !== FALSE )
        {
            $field_map[$value] = $index;
        }
    }
    $lines = array( );
    $i = 1;
    for ( ;    $i < count( $csv_array );    ++$i    )
    {
        $line = array( );
        reset( &$field_map );
        while ( list( $key, $value ) = each( &$field_map ) )
        {
            $line[$key] = $csv_array[$i][$value];
        }
        $lines[] = $line;
    }
    return $lines;
}

function get_field_lines( $data, $TABLENAME )
{
    $title = get_field_title( $TABLENAME );
    if ( !empty( $title ) )
    {
        $lines = csv2array( $data, $title );
    }
    else
    {
        $lines = array(
            array( )
        );
    }
    $field = get_field_info( $TABLENAME );
    $I = 0;
    for ( ;    $I < count( $lines );    ++$I    )
    {
        while ( list( $key, $value ) = each( &$lines[$I] ) )
        {
            $value = str_replace( ",", ",", trim( $value ) );
            if ( $field[$key]['STYPE'] == "R" || $field[$key]['STYPE'] == "D" )
            {
    $lines[$I][$key] = $field[$key]['CODE'][$value];
            }
            else
            {
    if ( !( $field[$key]['STYPE'] == "C" ) )
    {
        continue;
    }
    $lines[$I][$key] = "";
    $name_array = explode( ",", $value );
    $J = 0;
    for ( ;    $J < count( $name_array );    ++$J    )
    {
        $name = $name_array[$J];
        if ( !( $name == "" ) )
        {
            if ( $field[$key]['CODE'][$name] == "" )
            {
                break;
            }
        }
        else
        {
            continue;
        }
        $lines[$I][$key] .= $field[$key]['CODE'][$name].",";
    }
            }
        }
    }
    return $lines;
}

function get_field_title( $TABLENAME )
{
    global $connection;
    $USERDEF_FIELD = array( );
    $query = "select * from FIELDSETTING where TABLENAME='".$TABLENAME."' order by orDERNO;";
    $cursor = exequery( $connection, $query );
    while ( $ROW = mysql_fetch_array( $cursor ) )
    {
        $FIELDNO = $ROW['FIELDNO'];
        $FIELDNAME = $ROW['FIELDNAME'];
        $USERDEF_FIELD[trim( $FIELDNAME )] = $FIELDNO;
    }
    return $USERDEF_FIELD;
}

function get_field_info( $TABLENAME )
{
    global $connection;
    $USERDEF_FIELD = array( );
    $query = "select * from FIELDSETTING where TABLENAME='".$TABLENAME."' order by orDERNO;";
    $cursor = exequery( $connection, $query );
    while ( $ROW = mysql_fetch_array( $cursor ) )
    {
        $FIELDNO = $ROW['FIELDNO'];
        $STYPE = $ROW['STYPE'];
        $TYPENAME = $ROW['TYPENAME'];
        $TYPEVALUE = $ROW['TYPEVALUE'];
        $TYPECODE = $ROW['TYPECODE'];
        $FIELD_INFO = array(
            "STYPE" => $STYPE,
            "CODE" => array( )
        );
        if ( $STYPE == "C" || $STYPE == "R" || $STYPE == "D" )
        {
            if ( $TYPECODE != "" )
            {
    $FIELD_INFO['CODE'] = get_code_array( $TYPECODE, TRUE );
            }
            else
            {
    $NAME_ARRAY = explode( ",", $TYPENAME );
    $VALUE_ARRAY = explode( ",", $TYPEVALUE );
    $I = 0;
    for ( ;    $I < count( $NAME_ARRAY );    ++$I    )
    {
        if ( !( $NAME_ARRAY[$I] == "" ) )
        {
            $FIELD_INFO['CODE'][$NAME_ARRAY[$I]] = $VALUE_ARRAY[$I];
        }
    }
            }
        }
        $USERDEF_FIELD[$FIELDNO] = $FIELD_INFO;
    }
    return $USERDEF_FIELD;
}


[本日志由 小戒 于 2009-08-13 05:40 PM 编辑]
上一篇: Alimama超强的Banner Maker
下一篇: 破解软件详细教程
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 通达 OA 人事 档案 导入 功能 增加 自定义 字段
相关日志:
评论: 3 | 引用: 0 | 查看次数: -
ROY
回复回复ROY[2010-07-14 04:27 PM | | | del]
帅哥,你几时有时间帮帮我一下啊
ROY
回复回复ROY[2010-05-20 11:00 AM | | | del]
使用的是OFFICE2003啊,   我从OA上下载的模板完成后,立即直接上传也出现同样的错误。这应该和模板本身有关吧?      能否将一个模板MAIL给我呢??
ROY
回复回复ROY[2010-05-12 12:44 AM | | | del]
你好!~  我在2008版里为什么不能导入人事档案呢? 我直接下载模板上传也出现一样的错误。
    错误
不要以修改文件扩展名的方式导入非CSV格式的文件!请使用Excel文件菜单下的"另存为"来选择保存格式。


能否加我QQ,请教一下啊   41466021
回复来自 小戒 的评论 小戒 于 2010-05-12 10:09 PM 回复
你的EXCEL是什么版本?
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.