目的:
实现以上图片的功能
思路:
根据查询条件的不同,sql语句不同;
但是主要还是:
根据num可以查询出某个时间段内的信息,如果多条信息取第一和最后一个信息,如果只有一条就这样;
代码如下:
jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>华金矿业-人员考勤查询</title>
<!-- 首页 -->
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" type="text/css" href="css/index.css">
<link rel="stylesheet" type="text/css" href="css/Personnel_definition.css">
<script type="text/javascript">
function hide(){
var id=document.getElementById("center_img");
var name=id.getAttribute("name");
var left=document.getElementById("center-left");
if(name=="block"){
left.setAttribute("style", "display:none;");
id.setAttribute("name", "none");
}if(name=="none"){
left.setAttribute("style", "display:block;");
id.setAttribute("name", "block");
}
}
function display(a){
var elements=[];
//获得所有的li标签
var list=document.getElementsByTagName("li");
var len=list.length;//获得长度
//把class=sub-menu的li都放在集合里面
for(var i=0;i<len;i++){
if(list[i].className== "sub-menu"){
elements[elements.length]=list[i];
}
}
/*把所有的隐藏 */
for(var i=0;i<elements.length;i++){
//获得下面的ul
var ul=elements[i].childNodes[3];
/* 设置属性为隐藏 */
ul.setAttribute("style","display:none");
/* 点击当前元素的Ul设置可见 */
}
/* 对所有的input背景颜色设置 */
var tree=document.getElementsByName("tree");
for(var i=0;i<tree.length;i++){
tree[i].setAttribute("style", "background-color:#E1F1FD;");
}
var input=document.getElementById(a);
input.setAttribute("style", "background-color:#5094D6;");
var ula=input.parentNode;
var lla=ula.childNodes;
for(var i=0;i<lla.length;i++){
if(lla[i].nodeName=='UL'){
lla[i].setAttribute("style","display:block");
}
}
}
/*获取当前的日期和时间 */
function tm(){
var today = new Date();
var year=today.getFullYear();
var month=today.getMonth()+1;
var day=today.getDay();
var tm=year+"年"+month+"月"+day+"日"+" "+today.getHours() + ":"
+ today.getMinutes() + ":" + today.getSeconds(); ;
var rq=document.getElementById("rq");
rq.innerHTML=tm;
}
</script>
<script type="text/javascript">
function checktime() {
var stime=document.getElementById("stime").value;
var etime=document.getElementById("etime").value;
var submit=document.getElementById("submit");
if(stime!=null&&etime!=null&&stime!=""&&etime!=""){
submit.setAttribute("type","submit");
document.getElementById("error_info").innerHTML="";
}else{
submit.setAttribute("type","button");
document.getElementById("error_info").innerHTML="开始时间和结束时间不能为空";
}
}
</script>
</head>
<body onload="tm();">
<!-- 上 -->
<div id="up">
<div id="up_left">
<ul>
<li style="font-size:12px;">铜陵华金矿业有限责任公司</li>
<li>井下综合监管系统</li>
</ul>
</div>
<table id="up_right">
<tr>
<td class="prompt">您好!<%=request.getParameter("username") %></td>
<td class="prompt">[华金矿业]:</td>
<td class="prompt" id="rq"></td>
</tr>
<tr>
<td class="prompt">密码</td>
<td class="prompt">桌面</td>
<td class="prompt">注销</td>
</tr>
</table>
</div>
<div style="width:102%;height: 50px;background-color: #4891C6;position: relative;margin-top: -14px;margin-left: -7px;"></div>
<!--中 -->
<div id="centers">
<div id="center-left">
<input type="button" value="功能菜单" class="view">
<ul id="all">
<!-- 第一个菜单 -->
<li class="sub-menu">
<input type="button" value="图形展现" class="button" name="tree" id="jpg" onclick="display(this.id);">
<ul style="display: none;">
<li><a href="total_picture.jsp">实时总图</a></li>
<li><a href="role_position.jsp" >轨迹定位</a></li>
</ul>
</li>
<!-- 第二个菜单 -->
<li class="sub-menu">
<input type="button" value="人员定位" class="button" name="tree" id="people" onclick="display(this.id);">
<ul style="display: none;">
<li>井下人员状况</li>
<li>LED通知管理</li>
<li>LED显示管理</li>
<li>大屏幕输出</li>
<li>人员定位搜索</li>
<li>人员考勤搜索</li>
<li>调度统计</li>
</ul>
</li>
<!-- 第三个菜单 -->
<li class="sub-menu">
<input type="button" value="环境监测" class="button" name="tree" id="supervise" onclick="display(this.id);">
<ul style="display: none;">
<li>环境测试总图</li>
<li>环境监测数据查询</li>
<li>环境报警数据查询</li>
</ul>
</li>
<!-- 第四个菜单 -->
<li class="sub-menu">
<input type="button" value="查询统计" class="button" name="tree" id="select" onclick="display(this.id);">
<ul style="display: none;">
<li>人员报警查询</li>
<li>超时人员查询</li>
<li>设备工作状况</li>
<li>设备工作状态查询</li>
</ul>
</li>
<!-- 第五个菜单 -->
<li class="sub-menu">
<input type="button" value="基础信息管理" class="button" name="tree" id="information" onclick="display(this.id);">
<ul style="display: none;">
<li>基站定义</li>
<li>采集基站定义</li>
<li>采集设备定义</li>
<li><a href="/Socket/Personnel_definition">人员定义</a></li>
<li>工种定义</li>
<li>职务定义</li>
<li>带班领导定义</li>
</ul>
</li>
<!-- 第六个菜单 -->
<li class="sub-menu">
<input type="button" value="系统管理" class="button" name="tree" id="system" onclick="display(this.id)">
<ul style="display: none;">
<li>机构定义</li>
<li>用户定义</li>
</ul>
</li>
</ul>
<!--隐藏下面的具体字节 -->
</div>
<div id="center-right">
<!-- 人员信息界面-->
<form action="/Socket/Attendance_Search" method="post">
<div id="peo_head">人员考勤查询</div>
<span class="peo_left">人员名称:<input type="text" name="name"/></span>
<span class="peo_left" style="margin-left: 37px;">人员编号:<input type="text" name="number"/></span>
<span class="peo_left">所属机构:
<select id="tjn" >
<c:forEach items="${alllist}" var="i" varStatus="status">
<option value=${status.index }>${i}</option>
</c:forEach>
</select>
</span><input style="display: none;" name="part" id="part"/><br>
<span class="peo_left">开始时间:<input type="text" name="stime" id="stime" placeholder="yyyy-mm-dd hh:mm:ss" /></span>
<span class="peo_left">结束时间:<input type="text" name="etime" id="etime" placeholder="yyyy-mm-dd hh:mm:ss" /></span>
<span id="error_info" style="color:red;"></span><br>
<span id="button">
<input type="button" value="查询" class="select" id="submit" onclick="checktime();"/>
<input type="reset" value="重置" class="select"/>
<input type="button" value="人员报表" class="select"/>
</span>
</form>
<br>
<div id="peo_info" style="height: 419px;">
<table style="width: 99%;">
<tr><td>人员编号</td><td>人员名称</td><td>入井地点</td><td>入井时间</td><td>出井地点</td><td>出井时间</td><td>工作时间</td></tr>
<c:forEach items="${list}" var="i" varStatus="status">
<c:if test="${status.index % 2 == 0}">
<tr style="background-color: white"><td class="list_p">${i.name}</td><td class="list_p">${i.num}</td><td class="list_p">${i.sbs}</td><td class="list_p">${i.stime}</td><td class="list_p">${i.ebs}</td><td class="list_p">${i.etime}</td><td class="list_p">${i.wtime}</td></tr>
</c:if>
<c:if test="${status.index % 2 == 1}">
<tr style="background-color: #f2f7fa"><td class="list_p">${i.name}</td><td class="list_p">${i.num}</td><td class="list_p">${i.sbs}</td><td class="list_p">${i.stime}</td><td class="list_p">${i.ebs}</td><td class="list_p">${i.etime}</td><td class="list_p">${i.wtime}</td></tr>
</c:if>
</c:forEach>
</table>
</div>
</div>
<!-- 遍历数据库里面的集合-->
</div>
<!--下 -->
<div id="bottom">
诚信安天下-------铜陵力凡有限责任公司
</div>
</body>
<script type="text/javascript">
var my=document.getElementById("tjn");
//1:拿到select对象:
//2:拿到选中项的索引:
var index=my.selectedIndex ; // selectedIndex代表的是你所选中项的index
//3:拿到选中项options的value:
var ss=my.options[index].text;
document.getElementById("part").value=ss;
</script>
</html>
servlet代码:
package cn.com.servlet;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.gj.StringSeven;
import cn.com.lf.Attend;
import cn.com.lf.JdbcUtils;
public class Attendance_Search extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@SuppressWarnings("unused")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.获取前台jsp页面所有的查询条件的值
//名称
String name=request.getParameter("name");
name = URLEncoder.encode(name, "ISO-8859-1");
name = URLDecoder.decode(name, "UTF-8");
//编号
String number=request.getParameter("number");
number = URLEncoder.encode(number, "ISO-8859-1");
number = URLDecoder.decode(number, "UTF-8");
//部门
String part=request.getParameter("part");
part = URLEncoder.encode(part, "ISO-8859-1");
part = URLDecoder.decode(part, "UTF-8");
//开始时间
String stime=request.getParameter("stime");
stime = URLEncoder.encode(stime, "ISO-8859-1");
stime = URLDecoder.decode(stime, "UTF-8");
//结束时间
String etime=request.getParameter("etime");
etime = URLEncoder.encode(etime, "ISO-8859-1");
etime = URLDecoder.decode(etime, "UTF-8");
//判断条件
String sql = null;
List<String> lists=new ArrayList<String>();
List<StringSeven> listseven=new ArrayList<StringSeven>();
//1.根据姓名查询
if(part==null||part==""){
if(name!=null&&number==null&&name!=null&&number==""&&name!=null&&number==null||name!=""&&number==""){
sql="SELECT number FROM person_info WHERE name='"+name+"'";
ResultSet rs=JdbcUtils.select(sql, null);
try {
if(rs.next()){
number=rs.getString(1);
lists=Attend.common(stime, etime, name, number, listseven);
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}else{
//1.没有符合条件的结果
//查询所有部门的名称
response.sendRedirect("/Socket/All_Part?num=2");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//2.根据number查询name
if(name==null&&number!=null&&name==null&&number!=""&&name==""&&number!=null&&name==""&&number!=""){
sql="SELECT name FROM person_info WHERE number ='"+number+"' ";
ResultSet rs=JdbcUtils.select(sql, null);
try {
if(rs.next()){
name=rs.getString(1);
lists=Attend.common(stime, etime, name, number, listseven);
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}else{
//1.没有符合条件的结果
//查询所有部门的名称
response.sendRedirect("/Socket/All_Part?num=2");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(part!=null&&part!=""){
//3.根据部门查询
//注意根据部门可以查到多个Num是一个集合
if(name==null&&number==null||name==null&&number==""||name==null&&number==null||name==""&&number==""){
sql="SELECT DISTINCT number FROM person_info WHERE part='"+part+"'";
//不仅仅查询num还有name
ResultSet rs=JdbcUtils.select(sql, null);
int m=0;
try {
while(rs.next()){
m++;
number=rs.getString(1);
//获取名称和编号
String sqln="SELECT name FROM person_info WHERE number='"+number+"'";
ResultSet rsn=JdbcUtils.select(sqln, null);
if(rsn.next()){
name=rsn.getString(1);
lists=Attend.common(stime, etime, name, number, listseven);
}
//rsn.close();
}
if(m==0){
//查询所有部门的名称
response.sendRedirect("/Socket/All_Part?num=2");
}
if(m>0){
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(number!=null&&number!=""){
if(part!=null&&part!=""){
if(name!=null&&name!=""){
//7.根据name+num+part查询,是否符合,存在查询yh
sql="SELECT number FROM person_info WHERE name='"+name+"' and number='"+number+"' and part='"+part+"'";
ResultSet rs=JdbcUtils.select(sql, null);
try {
int m=0;
if(rs.next()){
m++;
number=rs.getString(1);
//获取名称和编号
lists=Attend.common(stime, etime, name, number, listseven);
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}
if(m==0){
//1.没有符合条件的结果
response.sendRedirect("/Socket/All_Part?num=2");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
//6.根据部门+num查询name,是否符合,存在查询yh
sql="SELECT name FROM person_info WHERE number='"+number+"' and part='"+part+"'";
ResultSet rs=JdbcUtils.select(sql, null);
try {
if(rs.next()){
name=rs.getString(1);
//获取名称和编号
lists=Attend.common(stime, etime, name, number, listseven);
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}else{
//1.没有符合条件的结果
response.sendRedirect("/Socket/All_Part?num=2");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//5.根据姓名+部门查询记录 num是否存在,存在查询yh
if(name!=null&&name!=""){
if(part!=null&&part!=""){
if(number==null||number==""){
sql="SELECT number FROM person_info WHERE name='"+name+"' and part='"+part+"'";
ResultSet rs=JdbcUtils.select(sql, null);
try {
if(rs.next()){
number=rs.getString(1);
//获取名称和编号
lists=Attend.common(stime, etime, name, number, listseven);
request.setAttribute("alllist", lists);
request.setAttribute("list", listseven);
request.getRequestDispatcher("Attendance_search.jsp").forward(request, response);
}else{
//1.没有符合条件的结果
response.sendRedirect("/Socket/All_Part?num=2");
} }catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//获取名称和编号
}
}
}
}
}
信息类:
package cn.com.gj;
public class StringSeven {
//人员考勤查询封装类
private String name;
private String num;
private String sbs;
private String stime;
private String ebs;
private String etime;
private String wtime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getSbs() {
return sbs;
}
public void setSbs(String sbs) {
this.sbs = sbs;
}
public String getStime() {
return stime;
}
public void setStime(String stime) {
this.stime = stime;
}
public String getEbs() {
return ebs;
}
public void setEbs(String ebs) {
this.ebs = ebs;
}
public String getEtime() {
return etime;
}
public void setEtime(String etime) {
this.etime = etime;
}
public String getWtime() {
return wtime;
}
public void setWtime(String wtime) {
this.wtime = wtime;
}
public StringSeven(String name, String num, String sbs, String stime,
String ebs, String etime, String wtime) {
super();
this.name = name;
this.num = num;
this.sbs = sbs;
this.stime = stime;
this.ebs = ebs;
this.etime = etime;
this.wtime = wtime;
}
@Override
public String toString() {
return "StringSeven [name=" + name + ", num=" + num + ", sbs=" + sbs
+ ", stime=" + stime + ", ebs=" + ebs + ", etime=" + etime
+ ", wtime=" + wtime + "]";
}
}