search.php
来自「极限网络智能办公系统 Office Automation V3.0官方100%源」· PHP 代码 · 共 574 行 · 第 1/2 页
PHP
574 行
<?
include_once("inc/auth.php");
include_once("inc/check_type.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">
<?
//----------- 合法性校验 ---------
if($DATE1!="")
{
$TIME_OK=is_date($DATE1);
if(!$TIME_OK)
{ Message("错误","起始日期格式不对,应形如 1999-1-2");
Button_Back();
exit;
}
}
if($DATE2!="")
{
$TIME_OK=is_date($DATE2);
if(!$TIME_OK)
{ Message("错误","截止日期格式不对,应形如 1999-1-2");
Button_Back();
exit;
}
}
if(compare_date($DATE1,$DATE2)==1)
{ Message("错误","查询的起始日期不能晚于截止日期");
Button_Back();
exit;
}
$connection=OpenConnection();
$CUR_DATE=date("Y-m-d",time());
$query = "SELECT to_days('$DATE2')-to_days('$DATE1') from ATTEND_CONFIG";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$DAY_TOTAL=$ROW[0]+1;
message("","查询从 ".format_date($DATE1)." 至 ".format_date($DATE2)." 共 ".$DAY_TOTAL." 天的考勤记录");
?>
<!------------------------------------- 上下班 ------------------------------->
<table border="0" width="100%" cellspacing="0" cellpadding="3" class="small">
<tr>
<td class="Big"><img src="/images/menu/attendance.gif" WIDTH="22" HEIGHT="20" align="absmiddle"><span class="big3"> 上下班统计</span><br>
</td>
</tr>
</table>
<?
$query = "SELECT * from USER where USER_ID='$USER_ID'";
$cursor= exequery($connection,$query);
$LINE_COUNT=0;
if($ROW=mysql_fetch_array($cursor))
{
$USER_ID=$ROW["USER_ID"];
$USER_NAME=$ROW["USER_NAME"];
$DUTY_TYPE=$ROW["DUTY_TYPE"];
}
//---- 取规定上下班时间 -----
$query1 = "SELECT * from ATTEND_CONFIG where DUTY_TYPE=$DUTY_TYPE";
$cursor1= exequery($connection,$query1);
if($ROW=mysql_fetch_array($cursor1))
{
$DUTY_NAME=$ROW["DUTY_NAME"];
$GENERAL=$ROW["GENERAL"];
$DUTY_TIME1=$ROW["DUTY_TIME1"];
$DUTY_TIME2=$ROW["DUTY_TIME2"];
$DUTY_TIME3=$ROW["DUTY_TIME3"];
$DUTY_TIME4=$ROW["DUTY_TIME4"];
$DUTY_TIME5=$ROW["DUTY_TIME5"];
$DUTY_TIME6=$ROW["DUTY_TIME6"];
$DUTY_TYPE1=$ROW["DUTY_TYPE1"];
$DUTY_TYPE2=$ROW["DUTY_TYPE2"];
$DUTY_TYPE3=$ROW["DUTY_TYPE3"];
$DUTY_TYPE4=$ROW["DUTY_TYPE4"];
$DUTY_TYPE5=$ROW["DUTY_TYPE5"];
$DUTY_TYPE6=$ROW["DUTY_TYPE6"];
}
$EARLY_COUNT="";
$LATE_COUNT="";
$DUTY_ON_COUNT="";
$DUTY_OFF_COUNT="";
$DUTY_ON_TOTAL="";
$DUTY_OFF_TOTAL="";
$OVER_ON_COUNT="";
$OVER_OFF_COUNT="";
for($I=1;$I<=6;$I++)
{
$STR="DUTY_TIME".$I;
$DUTY_TIME=$$STR;
$STR="DUTY_TYPE".$I;
$DUTY_TYPE=$$STR;
if($DUTY_TIME=="")
continue;
if($DUTY_TYPE==1)
$DUTY_ON_TOTAL+=$DAY_TOTAL;
else
$DUTY_OFF_TOTAL+=$DAY_TOTAL;
for($J=$DATE1;$J<=$DATE2;$J=date("Y-m-d",strtotime($J)+24*3600))
{
$WEEK=date("w",strtotime($J));
$HOLIDAY=0;
$query="select * from ATTEND_HOLIDAY where BEGIN_DATE <='$J' and END_DATE>='$J'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
else
if(find_id($GENERAL,$WEEK))
$HOLIDAY=1;
if($HOLIDAY==0)
{
$query="select * from ATTEND_EVECTION where USER_ID='$USER_ID' and ALLOW='1' and to_days(EVECTION_DATE1)<=to_days('$J') and to_days(EVECTION_DATE2)>=to_days('$J')";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($HOLIDAY==0)
{
$query="select * from ATTEND_LEAVE where USER_ID='$USER_ID' and ALLOW='1' and LEAVE_DATE1<='$J $DUTY_TIME' and LEAVE_DATE2>='$J $DUTY_TIME'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($HOLIDAY==0)
{
$query="select * from ATTEND_OUT where USER_ID='$USER_ID' and ALLOW='1' and to_days(SUBMIT_TIME)=to_days('$J') and OUT_TIME1<='".substr($DUTY_TIME,0,strrpos($DUTY_TIME,":"))."' and OUT_TIME2>='".substr($DUTY_TIME,0,strrpos($DUTY_TIME,":"))."'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($HOLIDAY==1)
{
if($DUTY_TYPE==1)
$DUTY_ON_TOTAL--;
else
$DUTY_OFF_TOTAL--;
}
}
$query1 = "SELECT * from ATTEND_DUTY where USER_ID='$USER_ID' and to_days(REGISTER_TIME)>=to_days('$DATE1') and to_days(REGISTER_TIME)<=to_days('$DATE2') and REGISTER_TYPE='$I'";
$cursor1= exequery($connection,$query1);
while($ROW=mysql_fetch_array($cursor1))
{
$REGISTER_TIME=$ROW["REGISTER_TIME"];
$SOME_DATE=strtok($REGISTER_TIME," ");
$REGISTER_TIME=strtok(" ");
$WEEK=date("w",strtotime($REGISTER_TIME));
$HOLIDAY=0;
$query="select * from ATTEND_HOLIDAY where BEGIN_DATE <='$SOME_DATE' and END_DATE>='$SOME_DATE'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
else
{
if(find_id($GENERAL,$WEEK))
$HOLIDAY=1;
}
if($HOLIDAY==0)
{
$query="select * from ATTEND_EVECTION where USER_ID='$USER_ID' and ALLOW='1' and to_days(EVECTION_DATE1)<=to_days('$SOME_DATE') and to_days(EVECTION_DATE2)>=to_days('$SOME_DATE')";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($HOLIDAY==0)
{
$query="select * from ATTEND_LEAVE where USER_ID='$USER_ID' and ALLOW='1' and LEAVE_DATE1<='$SOME_DATE $DUTY_TIME' and LEAVE_DATE2>='$SOME_DATE $DUTY_TIME'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($HOLIDAY==0)
{
$query="select * from ATTEND_OUT where USER_ID='$USER_ID' and ALLOW='1' and to_days(SUBMIT_TIME)=to_days('$SOME_DATE') and OUT_TIME1<='".substr($DUTY_TIME,0,strrpos($DUTY_TIME,":"))."' and OUT_TIME2>='".substr($DUTY_TIME,0,strrpos($DUTY_TIME,":"))."'";
$cursor= exequery($connection,$query);
if($ROW=mysql_fetch_array($cursor))
$HOLIDAY=1;
}
if($DUTY_TYPE=="1")
{
if($HOLIDAY==1)
{
$OVER_ON_COUNT++;
continue;
}
$DUTY_ON_COUNT++;
if(compare_time($REGISTER_TIME,$DUTY_TIME)==1)
$LATE_COUNT++;
}
if($DUTY_TYPE=="2")
{
if($HOLIDAY==1)
{
$OVER_OFF_COUNT++;
continue;
}
$DUTY_OFF_COUNT++;
if(compare_time($REGISTER_TIME,$DUTY_TIME)==-1)
$EARLY_COUNT++;
}
}
}//for
for($J=$DATE1;$J<=$DATE2;$J=date("Y-m-d",strtotime($J)+24*3600))
{
$COUNT=0;
$query="";
for($I=1;$I<=6;$I++)
{
$STR="DUTY_TIME".$I;
$DUTY_TIME=$$STR;
$STR="DUTY_TYPE".$I;
$DUTY_TYPE=$$STR;
if($DUTY_TIME!="")
{
$COUNT++;
if($DUTY_TYPE=="1")
$query.=" REGISTER_TYPE='$I' and to_days(REGISTER_TIME)=to_days('$J') and REGISTER_TIME<='$J $DUTY_TIME' or";
else
$query.=" REGISTER_TYPE='$I' and to_days(REGISTER_TIME)=to_days('$J') and REGISTER_TIME>='$J $DUTY_TIME' or";
}
}
$query=substr($query,0,-3);
$query1 = "SELECT count(*) from ATTEND_DUTY where USER_ID='$USER_ID'";
if($query!="")
$query1 .= " and (".$query.")";
$cursor1= exequery($connection,$query1);
if($ROW=mysql_fetch_array($cursor1))
$REG_COUNT=$ROW[0];
if($REG_COUNT>=$COUNT)
$PERFECT_COUNT++;
}
?>
<table border="0" cellspacing="1" width="100%" class="small" bgcolor="#000000" cellpadding="3">
<tr class="TableHeader">
<td nowrap align="center">全勤(天)</td>
<td nowrap align="center">迟到</td>
<td nowrap align="center">上班<br>未登记</td>
<td nowrap align="center">早退</td>
<td nowrap align="center">下班<br>未登记</td>
<td nowrap align="center">加班<br>上班登记</td>
<td nowrap align="center">加班<br>下班登记</td>
<td nowrap align="center">操作</td>
</tr>
<tr class="TableData">
<td nowrap align="center"><?=$PERFECT_COUNT?></td>
<td nowrap align="center"><?=$LATE_COUNT?></td>
<td nowrap align="center"><?=$DUTY_ON_TOTAL-$DUTY_ON_COUNT?></td>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?