采购系统(二)

一、用户列表

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)自定义查询,查询用户信息

image

 

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

image

 

查询条件的包装类

SysuserQueryVo.java

image

 

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

image

 

(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

image

 

(3)Service/Action

image

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

image

 

 

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.需求

     image

 

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层

image

 

3.前台页面

(1)JS代码

image

表单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>&nbsp;系统用户信息</td>
                            <td align=right>&nbsp;</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>
posted @ 2016-07-13 19:13  ✈✈✈  阅读(412)  评论(0编辑  收藏  举报