您的位置:首页 > 其它

采购系统(二)

2016-07-13 19:13 555 查看

一、用户列表

1.实体分析

(1)数据库表分析

系统用户表: SYSUSER

记录系统所有的用户。

Id: 主键

USERID: 账号

USERNAME: 名称

GROUPID: 用户类别 0:系统管理员 1:卫生局 2:卫生院 3:卫生室 4:供货商

SYSID: 系统用户所属的单位

 

监督单位表: USERJD

Id: 主键

MC: 单位名称

DQ: 管理区域

 

医院单位表: USERYY

Id: 主键

MC: 单位名称

DQ: 所属区域

 

供货商单位表: USERGYS

Id: 主键

Mc: 单位名称

 

2.需求

(1)自定义查询,查询用户信息





 

SQL语句:

第一种查询

select *
from (select SYSUSER.id,
SYSUSER.userid,
SYSUSER.username,
SYSUSER.groupid,
SYSUSER.sysid,

nvl(userjd.mc, nvl(useryy.mc, usergys.mc)) sysmc

from SYSUSER

left join userjd
on SYSUSER.Sysid = userjd.id

left join useryy
on SYSUSER.Sysid = useryy.id

left join usergys
on SYSUSER.Sysid = usergys.id

) u
where u.sysmc like '%高村%';


 

NVL函数

格式: NVL(E1,E2)

解释: 如果E1为NULL,则函数返回E2,否则就返回E1。

 

NVL2函数

格式: NVL2(E1,E2,E3)

解释: 如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

 

第二种查询

select *
from (select SYSUSER.id,
SYSUSER.userid,
SYSUSER.username,
SYSUSER.groupid,
SYSUSER.sysid,
decode(SYSUSER.Groupid,
'1',
(select mc from userjd where id = sysuser.sysid),
'2',
(select mc from userjd where id = sysuser.sysid),
'3',
(select mc from useryy where id = sysuser.sysid),
'4',
(select mc from usergys where id = sysuser.sysid)) sysmc

from SYSUSER)u
where u.sysmc like '%高村%'


 

DECODE函数

格式: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else)

解释: 如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2。

 

3.后台代码

(1)实体类

查询结果的包装类

SysuserCustom.java





 

查询条件的包装类

SysuserQueryVo.java





 

由于页面是DataGrid所以查询结果还要封装一个对象





 

(2)Mapper相关

SysuserMapperCustom.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="yycg.base.dao.mapper.SysuserMapperCustom">

<!-- sql片段 -->
<!-- 用户查询条件 -->
<sql id="quey_sysuser_where">
<if test="sysuserCustom != null">

<if test="sysuserCustom.sysmc != null and sysuserCustom.sysmc !=''">
and  sysuser.sysmc like '%${sysuserCustom.sysmc}%'
</if>

<if test="sysuserCustom.userid != null and sysuserCustom.userid !=''">
and  sysuser.userid = #{sysuserCustom.userid}
</if>

<if test="sysuserCustom.username != null and sysuserCustom.username !=''">
and  sysuser.username = #{sysuserCustom.username}
</if>

<if test="sysuserCustom.groupid != null and sysuserCustom.groupid !=''">
and  sysuser.groupid = #{sysuserCustom.groupid}
</if>

</if>
</sql>

<!-- 用户查询 -->
<select id="findSysuserList" parameterType="yycg.base.pojo.vo.SysuserQueryVo" resultType="yycg.base.pojo.vo.SysuserCustom">
select * from (
select SYSUSER.id,
SYSUSER.userid,
SYSUSER.username,
SYSUSER.groupid,
SYSUSER.userstate,
SYSUSER.sysid,
decode(SYSUSER.Groupid,
'1',
(select mc from userjd where id = sysuser.sysid),
'2',
(select mc from userjd where id = sysuser.sysid),
'3',
(select mc from useryy where id = sysuser.sysid),
'4',
(select mc from usergys where id = sysuser.sysid)
) sysmc

from SYSUSER
)sysuser

<where>
<include refid="quey_sysuser_where"/>
</where>

</select>

</mapper>


 

SysuserMapperCustom.java





 

(3)Service/Action





SqlMapconfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 指定使用的数据库 -->
<property name="dialect" value="oracle" />
</plugin>
</plugins>
</configuration>


 

SysuserAction.java





 

 

4.前台页面

JS

<script type="text/javascript">
//datagrid列定义
var columns_v = [ [ {
field : 'userid',//对应json中的key
title : '账号',
width : 120
}, {
field : 'username',//对应json中的key
title : '名称 ',
width : 180
}, {
field : 'groupid',//对应json中的key
title : '用户类型',
width : 120,
formatter : function(value, row, index) {


//通过此方法格式化显示内容,value表示从json中取出该单元格的值,row表示这一行的数据,是一个对象,index:行的序号
if(value =='1'){
return "卫生局";
}else if(value =='2'){
return "卫生院";
}else if(value =='3'){
return "卫生室";
}else if(value =='4'){
return "供货商";
}else if(value =='0'){
return "系统管理员";
}
}

}, {
field : 'sysmc',//对应json中的key
title : '所属单位',
width : 120
}, {
field : 'userstate',//对应json中的key
title : '状态',
width : 120,
formatter : function(value, row, index) {


//通过此方法格式化显示内容,value表示从json中取出该单元格的值,row表示这一行的数据,是一个对象,index:行的序号
if(value =='1'){
return "正常";
}else if(value =='0'){
return "暂停";
}
}
} ] ];

//定义 datagird工具
var toolbar_v = [ {//工具栏
id : 'btnadd',
text : '添加',
iconCls : 'icon-add',
handler : function() {
//打开一个窗口,用户添加页面
//参数:窗口的title、宽、高、url地址
createmodalwindow("添加用户信息", 800, 250, '${baseurl}user/queryuserlist.action');
}
} ];

//加载datagrid
$(function() {
$('#sysuserlist').datagrid({
title : '用户查询',//数据列表标题
nowrap : true,//单元格中的数据不换行,如果为true表示不换行,不换行情况下数据加载性能高,如果为false就是换行,换行数据加载性能不高
striped : true,//条纹显示效果
url : '${baseurl}user/queryuserlist.do',//加载数据的连接,引连接请求过来是json数据
idField : 'id',//此字段很重要,数据结果集的唯一约束(重要),如果写错影响 获取当前选中行的方法执行
loadMsg : '',
columns : columns_v,
pagination : true,//是否显示分页
rownumbers : true,//是否显示行号
pageList:[15,30,50],
toolbar : toolbar_v
});
});

//查询方法
function queryuser(){

var grid = $('#sysuserlist');
var options = grid.datagrid('getPager').data("pagination").options;
var page = options.pageNumber;
var rows = options.pageSize;
$('#page').val(page);
$('#rows').val(rows);

//datagrid的方法load方法要求传入json数据,最终将 json转成key/value数据传入action
//将form表单数据提取出来,组成一个json
var formdata = $("#sysuserqueryForm").serializeJson();
$('#sysuserlist').datagrid('load',formdata);

}
</script>

</head>
<body>

<!-- html的静态布局 -->
<form id="sysuserqueryForm" action="${baseurl}user/queryuserlist.do">
<!-- 查询条件 -->
<TABLE class="table_search">
<TBODY>
<TR>
<TD class="left">用户账号:</td>
<input type="hidden" name="page" id="page"/>
<input type="hidden" name="rows" id="rows"/>
<td><INPUT type="text" name="sysuserCustom.userid" /></TD>
<TD class="left">用户名称:</TD>
<td><INPUT type="text" name="sysuserCustom.username" /></TD>

<TD class="left">单位名称:</TD>
<td><INPUT type="text" name="sysuserCustom.sysmc" /></TD>
<TD class="left">用户类型:</TD>
<td><select name="sysuserCustom.groupid">
<option value="">请选择</option>
<option value="1">卫生局</option>
<option value="2">卫生院</option>
<option value="3">卫生室</option>
<option value="4">供货商</option>
<option value="0">系统管理员</option>

</select></TD>
<td><a id="btn" href="#" onclick="queryuser()"
class="easyui-linkbutton" iconCls='icon-search'>查询</a></td>
</TR>

</TBODY>
</TABLE>

<!-- 查询列表 -->
<TABLE border=0 cellSpacing=0 cellPadding=0 width="99%" align=center>
<TBODY>
<TR>
<TD>
<table id="sysuserlist"></table>
</TD>
</TR>
</TBODY>
</TABLE>
</form>
</body>
</html>


 

//form表单数据转成json
(function($){
$.fn.serializeJson=function(){
var serializeObj={};
var array=this.serializeArray();
var str=this.serialize();
$(array).each(function(){
if(serializeObj[this.name]){
if($.isArray(serializeObj[this.name])){
serializeObj[this.name].push(this.value);
}else{
serializeObj[this.name]=[serializeObj[this.name],this.value];
}
}else{
serializeObj[this.name]=this.value;
}
});
return serializeObj;
};
})(jQuery);


 

5.Orcale分页查询

SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (SELECT * FROM sysuser) A
WHERE ROWNUM <= 40)
WHERE RN >= 21


 

二、保存用户

1.需求

    



 

2.后台代码

(1)Service层

@Override
public void insertSysuser(SysuserCustom sysuser) throws Exception{
Sysuser user = findSysuserByUserId(sysuser.getUserid());

if(user != null){
throw new Exception("账号已经存在了");
}

String groupid = sysuser.getGroupid();
String mc = sysuser.getSysmc();
String mcID = null;
if(groupid.equals("1") || groupid.equals("2")){
// 监督单位
Userjd userjd = findUserjdByMc(mc);
if(userjd == null){
// 抛出异常
throw new Exception("用户单位不存在");
}
mcID = userjd.getId();
}else if(groupid.equals("3")){
// 监督单位
Useryy useryy = findUseryyByMc(mc);
if(useryy == null){
// 抛出异常
throw new Exception("用户单位不存在");
}
mcID = useryy.getId();
}else if(groupid.equals("4")){
// 监督单位
Usergys usergys = findUsergysByMc(mc);
if(usergys == null){
// 抛出异常
throw new Exception("用户单位不存在");
}
mcID = usergys.getId();
}

// 设置主键
UUID uuid = UUID.randomUUID();
String uuid32 = uuid.toString().replace("-", "");
sysuser.setId(uuid32);
sysuser.setSysid(mcID);
sysuserMapoer.insert(sysuser);
}


 

(2)Action层





 

3.前台页面

(1)JS代码





表单Ajax提交JS代码

var pathName = window.location.pathname.substring(1);
var webName = pathName == '' ? '' : pathName.substring(0, pathName.indexOf('/'));
var BaseUrl= window.location.protocol + '//' + window.location.host + '/'+ webName + '/';

/*
*jquery预读方法
*/
jQuery(document).ready(function(){
loadingReady();
});
function loading(){
$("body").append('<div  id="load" style="width:100%;position:absolute;top:250px;text-align:center;"><img src="'+BaseUrl+'images/loading2.gif" /></div>');
}
function removeLoading(){
$("#load").remove();
}
function loadingReady(){
jQuery("body").ajaxSend(function(request,settings,uu){
loading();
});
jQuery("body").ajaxComplete(function(request, settings){
removeLoading();

});
jQuery("body").ajaxError(function(request, settings){
removeLoading();
});
}
/*
*form提交(post方式)
*formname form Name
*callbackfn 回调函数名(要求函数必须有参数且不能多与两个,一个参数时参数为响应文本,两个参数时第一个参数为响应文本)
*param 回调函数参数(如果为null,那么调用一个参数的回调函数,否则调用两个参数的回调函数)
*/
function jquerySubByFName(formName,callbackFn,param){
var formObj = jQuery("form[@name=" + formName + "]");
var options = {success: function(responseText) {
if(param === null){
callbackFn(responseText);
}else{
callbackFn(responseText,param);
}
}};
formObj.ajaxSubmit(options);
}
/*
*form提交(post方式)
*formId form Id
*callbackfn 回调函数名(要求函数必须有参数且不能多与两个,一个参数时参数为响应文本,两个参数时第一个参数为响应文本)
*param 回调函数参数(如果为null,那么调用一个参数的回调函数,否则调用两个参数的回调函数)
*/
function jquerySubByFId(formId,callbackFn,param,dataType){
var formObj = jQuery("#" + formId);
var options = {
dataType:  ("undefined"!=dataType && null!=dataType)?dataType:"json",
success: function(responseText) {
if(param === null){
callbackFn(responseText);
}else{
callbackFn(responseText,param);
}
}
};
formObj.ajaxSubmit(options);
}


 

(2)JSP代码

<form id="userform" action="${baseurl}user/addsysusersubmit.do" method="post">
<table border=0 cellSpacing=0 cellPadding=0 width="100%" bgColor=#c4d8ed>

<tbody>
<tr>
<td background=images/r_0.gif width="100%">
<table cellSpacing=0 cellPadding=0 width="100%">
<tbody>
<tr>
<td> 系统用户信息</td>
<td align=right> </td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="toptable grid" border=1 cellSpacing=1 cellPadding=4 align=center>
<tbody>

<tr>
<td height=30 width="15%" align=right >用户账号:</td>
<td class=category width="35%">
<div>
<input type="text" id="sysuser_userid" name="sysuserCustom.userid"  />
</div>
<!-- sysuser_useridTip用于显示提示信息,提示div的id等于校验input的id+Tip -->
<div id="sysuser_useridTip"></div>
</td>

<td height=30 width="15%" align=right >用户名称:</td>
<td class=category width="35%">
<div>
<input type="text" id="sysuser_username" name="sysuserCustom.username"  />
</div>
<div id="sysuser_usernameTip"></div>
</td>
</tr>

<tr>
<td height=30 width="15%" align=right >用户密码:</td>
<td class=category width="35%">
<div>
<input type="password" id="sysuser_password" name="sysuserCustom.pwd" />
</div>
<div id="sysuser_passwordTip"></div>
</td>
<td height=30 width="15%" align=right >用户类型:</td>
<td class=category width="35%">
<div>
<select name="sysuserCustom.groupid" id="sysuser_groupid">

<option value="">请选择</option>
<option value="1">卫生局</option>
<option value="2">卫生院</option>
<option value="3">卫生室</option>
<option value="4">供货商</option>
<option value="0">系统管理员</option>

</select>
</div>
<div id="sysuser_groupidTip"></div>
</td>

</tr>
<tr>
<td height=30 width="15%" align=right >用户单位名称:</td><!-- 用处:根据名称获取单位id -->
<td class=category width="35%">
<input type="text" name="sysuserCustom.sysmc" />
</td>
<td height=30 width="15%" align=right>用户状态:</td>
<td class=category width="35%">
<input type="radio" name="sysuserCustom.userstate" value="1" />正常
<input type="radio" name="sysuserCustom.userstate" value="0" />暂停
</td>

</tr>
<tr>
<td colspan=4 align=center class=category>
<a id="submitbtn"  class="easyui-linkbutton"   iconCls="icon-ok" href="#" onclick="sysusersave()">提交</a>
<a id="closebtn"  class="easyui-linkbutton" iconCls="icon-cancel"


href="#" onclick="parent.closemodalwindow()">关闭</a>
</td>
</tr>

</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: