⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.php

📁 极限网络智能办公系统 Office Automation V3.0官方100%源代码.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?
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;
  }

 $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>

<table border="0" cellspacing="1" width="95%" class="small" bgcolor="#000000" cellpadding="3">
  <tr 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">上班<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>
<?
 $query = "SELECT * from SYS_PARA where PARA_NAME='NO_DUTY_USER'";
 $cursor= exequery($connection,$query);
 if($ROW=mysql_fetch_array($cursor))
    $NO_DUTY_USER=$ROW["PARA_VALUE"];

//---- 取规定上下班时间 -----
$query1 = "SELECT * from ATTEND_CONFIG";
$cursor1= exequery($connection,$query1);
while($ROW=mysql_fetch_array($cursor1))
{
   $DUTY_TYPE1=$ROW["DUTY_TYPE"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_NAME"]=$ROW["DUTY_NAME"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["GENERAL"]=$ROW["GENERAL"];

   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME1"]=$ROW["DUTY_TIME1"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME2"]=$ROW["DUTY_TIME2"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME3"]=$ROW["DUTY_TIME3"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME4"]=$ROW["DUTY_TIME4"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME5"]=$ROW["DUTY_TIME5"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TIME6"]=$ROW["DUTY_TIME6"];

   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE1"]=$ROW["DUTY_TYPE1"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE2"]=$ROW["DUTY_TYPE2"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE3"]=$ROW["DUTY_TYPE3"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE4"]=$ROW["DUTY_TYPE4"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE5"]=$ROW["DUTY_TYPE5"];
   $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_TYPE6"]=$ROW["DUTY_TYPE6"];
   
   for($I=1;$I<=6;$I++)
   {
     $DUTY_TIME_I=$ROW["DUTY_TIME".$I];
     $DUTY_TYPE_I=$ROW["DUTY_TYPE".$I];
   
     if($DUTY_TIME_I=="")
        continue;
   
     if($DUTY_TYPE_I==1)
        $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_ON_TIMES"]++;
     else
        $ATTEND_CONFIG[$DUTY_TYPE1]["DUTY_OFF_TIMES"]++;
   }
}

 //---- 查询用户的上下班时间 -----
 $query = "SELECT * from USER,USER_PRIV,DEPARTMENT where USER.NOT_LOGIN='0' and not find_in_set(USER.USER_ID,'$NO_DUTY_USER') and DEPARTMENT.DEPT_ID=USER.DEPT_ID ";
 if($DEPARTMENT!="ALL_DEPT")
    $query.=" and DEPARTMENT.DEPT_ID='$DEPARTMENT' ";

 if($DUTY_TYPE!="ALL_TYPE")
    $query.=" and DUTY_TYPE='$DUTY_TYPE' ";

 $query.= " and  USER.USER_PRIV=USER_PRIV.USER_PRIV order by DEPT_NO,PRIV_NO,USER_NO,USER_NAME";

 $cursor= exequery($connection,$query);
 $LINE_COUNT=0;
 while($ROW=mysql_fetch_array($cursor))
 {
    $USER_ID=$ROW["USER_ID"];
    $DEPT_ID=$ROW["DEPT_ID"];
    $USER_NAME=$ROW["USER_NAME"];
    $DUTY_TYPE=$ROW["DUTY_TYPE"];
    $USER_DEPT_NAME=$ROW["DEPT_NAME"];

    if(!is_dept_priv($DEPT_ID))
       continue;
       
    $DUTY_NAME=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_NAME"];
    $GENERAL=$ATTEND_CONFIG[$DUTY_TYPE]["GENERAL"];
    $DUTY_ON_TIMES=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_ON_TIMES"];
    $DUTY_OFF_TIMES=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_OFF_TIMES"];

    $DUTY_TIME1=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME1"];
    $DUTY_TIME2=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME2"];
    $DUTY_TIME3=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME3"];
    $DUTY_TIME4=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME4"];
    $DUTY_TIME5=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME5"];
    $DUTY_TIME6=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TIME6"];

    $DUTY_TYPE1=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE1"];
    $DUTY_TYPE2=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE2"];
    $DUTY_TYPE3=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE3"];
    $DUTY_TYPE4=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE4"];
    $DUTY_TYPE5=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE5"];
    $DUTY_TYPE6=$ATTEND_CONFIG[$DUTY_TYPE]["DUTY_TYPE6"];
    
    $LINE_COUNT++;

   $PERFECT_COUNT="";
   $EARLY_COUNT="";
   $LATE_COUNT="";
   $DUTY_ON_COUNT="";
   $DUTY_OFF_COUNT="";
   $DUTY_ON_TOTAL="";
   $DUTY_OFF_TOTAL="";
   $OVER_ON_COUNT="";
   $OVER_OFF_COUNT="";
   
   for($J=$DATE1;$J<=$DATE2;$J=date("Y-m-d",strtotime($J)+24*3600))
   {
      $WEEK=date("w",strtotime($J));
      $HOLIDAY=0;
      if(find_id($GENERAL,$WEEK))
         $HOLIDAY=1;
      if($HOLIDAY==0)
      {
         $query="select count(*) from ATTEND_HOLIDAY where BEGIN_DATE <='$J' and END_DATE>='$J'";
         $cursor1= exequery($connection,$query);
         if($ROW=mysql_fetch_array($cursor1))
            $HOLIDAY=$ROW[0];
      }
      if($HOLIDAY==0)
      {
         $query="select count(*) 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')";
         $cursor1= exequery($connection,$query);
         if($ROW=mysql_fetch_array($cursor1))
            $HOLIDAY=$ROW[0];
      }
      if($HOLIDAY==0)
      {
         $query="select count(*) from ATTEND_LEAVE where USER_ID='$USER_ID' and ALLOW='1' and LEAVE_DATE1<='$J $DUTY_TIME' and LEAVE_DATE2>='$J $DUTY_TIME'";
         $cursor1= exequery($connection,$query);
         if($ROW=mysql_fetch_array($cursor1))
            $HOLIDAY=$ROW[0];
      }
      if($HOLIDAY==0)
      {
         $query="select count(*) 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,":"))."'";
         $cursor1= exequery($connection,$query);
         if($ROW=mysql_fetch_array($cursor1))
            $HOLIDAY=$ROW[0];
      }

      if($HOLIDAY==0)
      {
          $DUTY_ON_TOTAL+=$DUTY_ON_TIMES;
          $DUTY_OFF_TOTAL+=$DUTY_OFF_TIMES;
      }
      
      $PERFECT_FLAG=0;
      $query1 = "SELECT * from ATTEND_DUTY where USER_ID='$USER_ID' and to_days(REGISTER_TIME)=to_days('$J')";
      $cursor1= exequery($connection,$query1);
      while($ROW=mysql_fetch_array($cursor1))
      {
         $REGISTER_TYPE=$ROW["REGISTER_TYPE"];
         $REGISTER_TIME=$ROW["REGISTER_TIME"];
         $SOME_DATE=strtok($REGISTER_TIME," ");
         $REGISTER_TIME=strtok(" ");
         
         $STR="DUTY_TIME".$REGISTER_TYPE;
         $DUTY_TIME=$$STR;
         
         $STR="DUTY_TYPE".$REGISTER_TYPE;
         $DUTY_TYPE=$$STR;
         
         if($DUTY_TIME=="")
            continue;
         
         if($DUTY_TYPE=="1")
         {
           if(compare_time($REGISTER_TIME,$DUTY_TIME)< 1)
              $PERFECT_FLAG++;
              
           if($HOLIDAY>0)
           {
             $OVER_ON_COUNT++;
             continue;
           }
      
           $DUTY_ON_COUNT++;
           if(compare_time($REGISTER_TIME,$DUTY_TIME)==1)
              $LATE_COUNT++;
         }
      
         if($DUTY_TYPE=="2")
         {
           if(compare_time($REGISTER_TIME,$DUTY_TIME)>-1)
              $PERFECT_FLAG++;
              
           if($HOLIDAY>0)
           {
             $OVER_OFF_COUNT++;
             continue;
           }
      
            $DUTY_OFF_COUNT++;
            if(compare_time($REGISTER_TIME,$DUTY_TIME)==-1)
               $EARLY_COUNT++;
         }
      }
      
      if($PERFECT_FLAG>=$DUTY_ON_TIMES+$DUTY_OFF_TIMES)
         $PERFECT_COUNT++;
   }

  if($LINE_COUNT%2==1)
     $TableLine="TableLine1";
  else
     $TableLine="TableLine2";
?>
  <tr class="<?=$TableLine?>">
    <td nowrap align="center"><?=$USER_DEPT_NAME?></td>
    <td nowrap align="center"><?=$USER_NAME?></td>
    <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>
    <td nowrap align="center"><?=$EARLY_COUNT?></td>
    <td nowrap align="center"><?=$DUTY_OFF_TOTAL-$DUTY_OFF_COUNT?></td>
    <td nowrap align="center"><?=$OVER_ON_COUNT?></td>
    <td nowrap align="center"><?=$OVER_OFF_COUNT?></td>
    <td nowrap align="center"><a href="user_duty.php?USER_ID=<?=$USER_ID?>&DATE1=<?=$DATE1?>&DATE2=<?=$DATE2?>">详细记录</a></td>
  </tr>
<?
 }
?>
</table>

<br>
<table width="95%" border="0" cellspacing="0" cellpadding="0" height="3">
 <tr>
   <td background="/images/dian1.gif" width="100%"></td>
 </tr>
</table>
<!------------------------------------- 外出记录 ------------------------------->


<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 ATTEND_OUT,USER,DEPARTMENT where DEPARTMENT.DEPT_ID=USER.DEPT_ID ";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -