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 + -
显示快捷键?