矿山六大系统之人员定位查询

在这里插入图片描述
我要实现的是以上图片的功能
mysql的模块设计:

怎么设置修改一个表中的数据另一个表中相关的数据也更改了?
mysql语句:
UPDATE person_info SET person_info.name=information.name FROM person_info,information WHERE person_info .num=information.num

改良:在实际操作中是用不到那么多查询的,更多的是 名称 编号 机构 时间
时间区间查询的sql语句:
在这里插入图片描述

这个功能涉及到两张表
在这里插入图片描述
在这里插入图片描述
所有涉及数据库的无非就是sql语句的问题,增删改查

查询表中不重复的数据:
SELECT DISTINCT part FROM person_info
我的sql语句思路如下:

//根据名字查询+时间
SELECT number FROM person_info WHERE NAME=‘田江南’
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;

//根据number查询+时间
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;

//根据机构查询+时间
SELECT number FROM person_info WHERE part=‘公司’
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;

//根据名字+number查询
SELECT number FROM person_info WHERE NAME=‘田江南’
IF(number==所获取到的number是否一致){一致就执行下一句;不一致返回错误信息,名称与编号不一致}
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;

//根据名称和机构也是一样的

//根据机构和number也是一样的
jsp页面的设计:
1.在点击提交按钮的时候,如果时间是空的话就提示不可为空!
开始时间和结束时间都要填;
js代码如下

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

相关jsp代码如下:

<span class="peo_left">开始时间:<input type="text"  name="stime" id="stime" placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<span id="error_info" style="color:red;"></span>
<br>
<span class="peo_left">结束时间:<input type="text"  name="etime" id="etime"  placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<input type="button" value="查询" class="select" id="submit" onclick="checktime();"/>

2.选择部门的时候,就是查询表部门里面所有的名称;
在这个页面加载的时候就应该出现;

package cn.com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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.lf.JdbcUtils;

public class All_Part extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	doPost(request, response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    //查询所有部门的名称
		String sql="SELECT DISTINCT part FROM person_info" ;
		ResultSet rs=JdbcUtils.select(sql, null);
		List<String> list=new ArrayList<String>();
		try {
			while(rs.next()){
				list.add(rs.getString(1));
	
			}
			request.setAttribute("alllist", list);
			request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
}

相关jsp代码

<span class="peo_left">所属机构:
<select>
<option>请选择</option>
 <c:forEach items="${alllist}" var="i"  varStatus="status">
<option>${i}</option>
</c:forEach>
</select>
</span>

历时6个小时终于结束了:
附上完整代码和页面图片:
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/SearchPosition" method="post">
<div id="peo_head">人员信息管理</div>
<span class="peo_left">人员名称:<input type="text" name="name"/></span>
<span class="peo_left" style="margin-left: 117px;">人员编号:<input type="text"  name="number"/></span>
<br>
<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="年年年年-月月-日日 时时:分分:秒秒" /></span>
<span id="error_info" style="color:red;"></span>
<br>
<span class="peo_left">结束时间:<input type="text"  name="etime" id="etime"  placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<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">
<table  style="width: 99%;">
<tr><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.a}</td><td class="list_p">${i.d}</td><td class="list_p">${i.e}</td><td class="list_p">${i.b}</td><td class="list_p">${i.c}</td></tr>
 </c:if>
 <c:if test="${status.index % 2 == 1}">
 <tr style="background-color: #f2f7fa"><td class="list_p">${i.a}</td><td class="list_p">${i.d}</td><td class="list_p">${i.e}</td><td class="list_p">${i.b}</td><td class="list_p">${i.c}</td></tr>
 </c:if>
 </c:forEach>
</table>
 <span style="color:red;"><%=request.getAttribute("error_xx") %></span>
</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.io.PrintWriter;
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.Leader;
import cn.com.gj.StringFive;
import cn.com.lf.JdbcUtils;

public class SearchPosition extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

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;
	String sz []=new String [2];
	//1.根据名字查询+时间
	if(part==null||part==""){
		if(name!=null&&number==null||name!=null&&number==""||name!=null&&number==null||name!=null&&number==""){
			sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and  number in (SELECT number FROM person_info WHERE NAME='"+name+"')";
			sz[0]=stime;
			sz[1]=etime;
		          }
		//2.根据number查询+时间
		if(name==null&&number!=null&&name==null&&number!=""&&name==null&&number!=null&&name==null&&number!=""){
		sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? WHERE number='"+number+"'";
		sz[0]=stime;
		sz[1]=etime;
		         }	
		 //根据名字+number查询
		if(name!=null&&number!=null&&name!=null&&number!=""&&name!=""&&number!=""&&name!=""&&number!=null){
		 sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and  number in (SELECT number FROM person_info WHERE NAME='"+name+"' and number='"+part+"')";
		 sz[0]=stime;
			sz[1]=etime;
		         }
                           	}
	
	
	//根据机构查询+时间
	if(name==null||name==""){
		if(part!=null&&number==null||part!=null&&number==""||part!=null&&number==""||part!=null&&number==""){
			sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and  number in (SELECT number FROM person_info WHERE part='"+part+"')";
			sz[0]=stime;
			sz[1]=etime;
		}
		//根据机构和number也是一样的	
		if(part!=null&&number!=null&&part!=null&&number!=""&&part!=""&&number!=null&&part!=""&&number!=""){
			 sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and  number in (SELECT number FROM person_info WHERE part='"+part+"' and number='"+number+"')";
			 sz[0]=stime;
				sz[1]=etime;
		}
		
	                     }
	//根据名称和机构也是一样的

if(numbernull||number""){
if(part!=null&&name!=null&&part!=null&&name!=""&&part!=null&&name!=null&&part!=null&&name!=""){
sql=“SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE part=’”+part+"’ and name=’"+name+"’)";
sz[0]=stime;
sz[1]=etime;
}

                         }

List list=new ArrayList() ;
ResultSet rs=JdbcUtils.select(sql, sz);
int m=0;

	try {
		while(rs.next()){
			m++;
			String num= rs.getString(1) ;
			String bs= rs.getString(2) ;
			String time= rs.getString(8) ;
			String sqls="select * from person_info where number='"+num+"'";
			   ResultSet rs2=JdbcUtils.select(sqls, null);
			   String names=null;
			   String parts=null;
			   if(rs2.next()){
				   names= rs2.getString(1) ;
				    parts= rs2.getString(3) ;
				    
			                 }
			 StringFive sf=new StringFive(num, bs, time, names, parts);  
		       list.add(sf);  
		              }
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	if(m>0){
		 //查询所有部门的名称
		String sqls="SELECT DISTINCT part FROM person_info" ;
		ResultSet rss=JdbcUtils.select(sqls, null);
		List<String> lists=new ArrayList<String>();
		try {
			while(rss.next()){
				lists.add(rss.getString(1));
	
			}
			request.setAttribute("alllist", lists);
			request.setAttribute("list", list);
			request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}else{
		//没有符合条件的结果
		 //查询所有部门的名称
		response.sendRedirect("/Socket/All_Part");	
	}

}

查询数据库中数据显示在前台select-option标签中:

package cn.com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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.lf.JdbcUtils;

public class All_Part extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

	doPost(request, response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
    //查询所有部门的名称
		String sql="SELECT DISTINCT part FROM person_info" ;
		ResultSet rs=JdbcUtils.select(sql, null);
		List<String> list=new ArrayList<String>();
		try {
			while(rs.next()){
				list.add(rs.getString(1));
	
			}
			request.setAttribute("alllist", list);
			request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	
}

封装信息类信息:

package cn.com.gj;

public class StringFive {
private String a;
private String b;
private String c;
private String d;
private String e;
public String getA() {
	return a;
}
public void setA(String a) {
	this.a = a;
}
public String getB() {
	return b;
}
public void setB(String b) {
	this.b = b;
}
public String getC() {
	return c;
}
public void setC(String c) {
	this.c = c;
}
public String getD() {
	return d;
}
public void setD(String d) {
	this.d = d;
}
public String getE() {
	return e;
}
public void setE(String e) {
	this.e = e;
}
public StringFive(String a, String b, String c, String d, String e) {
	super();
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
	this.e = e;
}

}

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/82896225