search.php

来自「通达OA2007SE源代码 非常好的」· PHP 代码 · 共 788 行 · 第 1/2 页

PHP
788
字号
<?
  include_once 'inc/auth.php';
  include_once 'inc/check_type.php';
  include_once 'inc/utility_all.php';
  echo '
<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).' 天的考勤记录'));
  echo '
<!------------------------------------- 上下班 ------------------------------->
<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">';
  echo '<s';
  echo 'pan class="big3"> 上下班统计</span>
    &nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="导出" class="BigButton" onclick="location=\'export_sxb.php?DEPARTMENT=';
  echo $DEPARTMENT;
  echo '&DUTY_TYPE=';
  echo $DUTY_TYPE;
  echo '&DATE1=';
  echo $DATE1;
  echo '&DATE2=';
  echo $DATE2;
  echo '\'" title="导出下班统计信息" name="button">
    </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';
  echo '>
    <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;
      }
      else
      {
        if (($DUTY_TYPE_I == 1))
        {
          ++$ATTEND_CONFIG[$DUTY_TYPE1]['DUTY_ON_TIMES'];
          continue;
        }
        else
        {
          ++$ATTEND_CONFIG[$DUTY_TYPE1]['DUTY_OFF_TIMES'];
          continue;
        }
        continue;
      }
    }
  }
  $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;
    }
    else
    {
      $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) + 86400)))
      {
        $WEEK = date ('w', strtotime ($J));
        $HOLIDAY = 0;
        $HOLIDAY1 = 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 ((0 < $HOLIDAY))
            {
              $HOLIDAY1 = 1;
            }
          }
        }
        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 ((0 < $HOLIDAY))
            {
              $HOLIDAY1 = 1;
            }
          }
        }
        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 ((0 < $HOLIDAY))
            {
              $HOLIDAY1 = 1;
            }
          }
        }
        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 ((0 < $HOLIDAY))
            {
              $HOLIDAY1 = 1;
            }
          }
        }
        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 (true)
        {
          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;
            }
            else
            {
              if (($DUTY_TYPE == '1'))
              {
                if ((compare_time ($REGISTER_TIME, $DUTY_TIME) < 1))
                {
                  ++$PERFECT_FLAG;
                }
                if (((0 < $HOLIDAY) AND ($HOLIDAY1 != 1)))
                {
                  ++$OVER_ON_COUNT;
                  continue;
                }
                else
                {
                  ++$DUTY_ON_COUNT;
                  if ((compare_time ($REGISTER_TIME, $DUTY_TIME) == 1))
                  {
                    ++$LATE_COUNT;
                    break;
                  }
                  break;
                }
                continue;
              }
              continue;
            }
          }
          break;
        }
        if ((($DUTY_ON_TIMES + $DUTY_OFF_TIMES) <= $PERFECT_FLAG))
        {
          ++$PERFECT_COUNT;
          continue;
        }
      }
      if ((($LINE_COUNT % 2) == 1))
      {
        $TableLine = 'TableLine1';
      }
      else
      {
        $TableLine = 'TableLine2';
      }
      echo '  <tr class="';
      echo $TableLine;
      echo '">
    <td nowrap align="center">';
      echo $USER_DEPT_NAME;
      echo '</td>
    <td nowrap align="center">';
      echo $USER_NAME;
      echo '</td>
    <td nowrap align="center">';
      echo $PERFECT_COUNT;
      echo '</td>
    <td nowrap align="center">';
      echo $LATE_COUNT;
      echo '</td>
    <td nowrap align="center">';
      echo ($DUTY_ON_TOTAL - $DUTY_ON_COUNT);
      echo '</td>
    <td nowrap align="center">';
      echo $EARLY_COUNT;
      echo '</td>
    <td nowrap align="center">';
      echo ($DUTY_OFF_TOTAL - $DUTY_OFF_COUNT);
      echo '</td>
    <td nowrap align="center">';
      echo $OVER_ON_COUNT;
      echo '</td>
    <td nowrap align="center">';
      echo $OVER_OFF_COUNT;
      echo '</td>
    <td nowrap align="center"><a href="user_duty.php?USER_ID=';
      echo $USER_ID;
      echo '&DATE1=';
      echo $DATE1;
      echo '&DATE2=';
      echo $DATE2;
      echo '">详细记录</a></td>
  </tr>
';
      continue;
    }
  }
  echo '</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" WIDT';
  echo 'H="22" HEIGHT="20" align="absmiddle">';
  echo '<s';
  echo 'pan class="big3"> 外出记录</span>
    &nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="导出" class="BigButton" onclick="location=\'export_wc.php?DEPARTMENT=';
  echo $DEPARTMENT;
  echo '&DUTY_TYPE=';
  echo $DUTY_TYPE;
  echo '&DATE1=';
  echo $DATE1;
  echo '&DATE2=';
  echo $DATE2;
  echo '\'" title="导出下班统计信息" name="button">
    </td>
  </tr>
</table>
';
  $query = (((((''.'SELECT * from ATTEND_OUT,USER,DEPARTMENT where DEPARTMENT.DEPT_ID=USER.DEPT_ID and ATTEND_OUT.USER_ID=USER.USER_ID and to_days(SUBMIT_TIME)>=to_days(\'$').$DATE1).'\') and to_days(SUBMIT_TIME)<=to_days(\'$').$DATE2).'\') order by DEPT_NO,USER_NO,USER_NAME');
  $cursor = exequery ($connection, $query);
  $OUT_COUNT = 0;
  while ($ROW = mysql_fetch_array ($cursor))
  {
    $USER_ID = $ROW['USER_ID'];
    $USER_NAME = $ROW['USER_NAME'];
    $OUT_TYPE = $ROW['OUT_TYPE'];
    $SUBMIT_TIME = $ROW['SUBMIT_TIME'];
    $SUBMIT_DATE = substr ($SUBMIT_TIME, 0, 10);
    $OUT_TIME1 = $ROW['OUT_TIME1'];
    $OUT_TIME2 = $ROW['OUT_TIME2'];
    $ALLOW = $ROW['ALLOW'];
    $STATUS = $ROW['STATUS'];
    $DEPT_ID = $ROW['DEPT_ID'];
    $LEADER_ID = $ROW['LEADER_ID'];

⌨️ 快捷键说明

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