• 采购系统(二)


    一、用户列表

    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="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>
  • 相关阅读:
    P5331 [SNOI2019]通信
    P3700 [CQOI2017]小Q的表格
    Linux
    P3268 [JLOI2016]圆的异或并
    P3317 [SDOI2014]重建
    P5492 [PKUWC2018]随机算法
    P3210 [HNOI2010]取石头游戏
    支配树
    P5401 [CTS2019]珍珠
    P4027 [NOI2007]货币兑换
  • 原文地址:https://www.cnblogs.com/yangang2013/p/5667976.html
Copyright © 2020-2023  润新知