菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
401
0

039医疗项目-模块四:采购单模块—采购单的创建-----------Dao层,service层,Acion层

原创
05/13 14:22
阅读数 90250

我们根据数据库里面的表格:生成对应的Mapper接口文件和...Mapperxml文件:

YYCGD:采购单模板表。

YYCGD2014:采购单动态生成表,由存储过程生成。

YYCGDMX:采购单明细模板表。

YYCGDMX2014:采购单明细表,由存储过程生成。

在逆向工程中:

    File configFile = new File("generatorConfig-business.xml")

---->

<table schema="" tableName="yycgd" >
        </table>
        
        <table schema="" tableName="yycgdmx" >
           <columnOverride column="zbjg" javaType="java.lang.Float" />
           <columnOverride column="jyjg" javaType="java.lang.Float" />
           <columnOverride column="cgl" javaType="java.lang.Integer" />
           <columnOverride column="cgje" javaType="java.lang.Float" />
        </table>

 

这么一来,对应的Mapper和Mapperxml文件,和PO类文件就生成了。如下:

PO类:

Mapper接口:

 

 和MapperXML文件:

前面说过我们采用的是分表的方法。所以在逆向工程自动生成的YycgdMapper.xml中把from YYCGD改为from YYCGD${businessyear}我们这样就是在操作动态的数据库表。

这样的话我们可以这么理解了。我们在数据库中可能会生成很多的表(由存储过程创建)比如YYCGD2014,YYCDG2015等。我们就要采用YYCGD${businessyear}这种形式去查找对应的表。

也就是YycgdMapper.java可以应对各种的表。

 

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------

正式开始采购单的业务:

 

 

 

 

 

我们在创建采购单时,需要填写采购单的基本信息。基本信息填写完成之后,再填写采购单明细信息。

采购单的基本信息填写如下:

 

 

采购单基本信息包括:采购年份、采购单名称、建单时间、提交时间、联系人、联系电话、备注、采购单状态。

 

 

我们来看一下他的Dao是怎么实现的:

我们针对的就是药品采购单的基本表。我们自定义Mapper:把逆向工程生成的Mapperl接口复制,改为YycgdMapperCusom.java,里面写我们自己的需求。然后把逆向工程生成的YycgdMapper.xml复制生成YycgdMapperCustom.xml文件。里面写我们自己的需求。

需求1:插入一条采购单记录

YycgdMapperCusom.java中我们先写第一个应用:我们要插入采购单记录的话,我们先要构造出采购单的基本信息啊,比如采购单的编号,采购单的状态等等。其他的信息都是

因为我们的药品采购单的采购编号是4位年+6位流水号

所以我们要想怎么去得到这个采购单编号呢。

我们在PL/SQL中写:

yycgdbm2014就是我们的序列。

select  yycgdbm2014.nextval bm from dual的结果是:

 

然后我们拼接我们的药品采购单的采购编号是4位年+6位流水号;

 

select  2014||yycgdbm2014.nextval bm from dual 

结果:

 

 2014100053就是我们的采购单的编号。

当然我们这是写死了年份2014,在后续的开发中我们的年份值是要传进来的。不能这么直接写死了。

所以在Mapperxml中可以这么写:

得到采购单的编号

<mapper namespace=" yycg.business.dao.mapper.YycgdMapperCustom" >

<
!-- 动态sql的拼接,相当于当传入的sring 是2014那么语句就变成了 select 2014||yycgdbm2014.nextval bm from dual 查出来的就是拼接而成的采购单的编号 --> <select id="getYycgdBm" parameterType="string" resultType="string" > select '${value}'||yycgdbm${value}.nextval bm from dual </select>

 

Dao层:YycgdMapperCustom.java:

public interface YycgdMapperCustom {
    //采购单编号生成
    public String getYycgdBm(String year)throws Exception;
    


}

Service 层:

package yycg.business.service.impl;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;

import yycg.business.dao.mapper.YycgdMapper;
import yycg.business.dao.mapper.YycgdMapperCustom;
import yycg.business.pojo.vo.YycgdCustom;
import yycg.business.service.YycdgService;

public class YycdgServiceImpl implements YycdgService{
    @Autowired
    YycgdMapper yycgdMapper;
    @Autowired
    YycgdMapperCustom yycgdMapperCustom;
    /**
     * 从页面上传入年份。用这个年份来生成采购单的编号。
     * 这里面传入了YycgdCusom这个对象,但是传入的对象里面的属性是不完整的。我们在这个insertYycgd方法里面
     * 设置好其余的属性,然后插入到数据库中。
     */
    @Override
    public void insertYycgd(String useryyid, String year,
            YycgdCustom yycgdCustom) throws Exception {
        String bm=yycgdMapperCustom.getYycgdBm(year);//生成采购单的编号
        yycgdCustom.setBm(bm);//设置采购单的编号
        yycgdCustom.setBusinessyear(year);//把年加入,这样就可以在MapperXml中使用这个year.用来拼接
        yycgdCustom.setId(bm);//采购单id的主键和bm一致,目的是为了方便操作采购单。
        yycgdCustom.setUseryyid(useryyid);//创建采购单医院
        yycgdCustom.setCjtime(new Date());//创建时间
        yycgdCustom.setZt("1");//设置状态
        /*
         *调用原生自带的Mapper接口,把这个数据插入到数据库中。
         *insert里面的参数是Yycgd。那我们在这里插入的是YycgdCustom类型的
         *没事啊,这是多态么,子类就是父类。当然可以把这个数据插入进去。
         *
         */
        yycgdMapper.insert(yycgdCustom);    //调用逆向工程自动生成的Mapper来插入数据    
        
        
        
        
    }

}

 

Action层:

总体顺序:先经过Action,进入到addcgd函数,在addcgd函数里面会得到有些数据然后跳转到新增页面(在新增页面上显示刚才得到的数据),然后在新增页面上输入数据。然后跳转到插入函数。

 

在menu.json中:

{"icon" : "icon-sys","menuid" : "1","menuname" : "采购单管理 ","url" : "","menus" : [
                 {"icon" : "icon-log","menuid" : "1_1","menuname" : "创建采购单","url" : "/yycgproject/cgd/addcgd.action"
                 }]

点击按钮之后执行 "/yycgproject/cgd/addcgd.action

 

 

 

 

 

/**
 * 
* @author Sxq
* @Title: addcgd 
* @Description: 
* 1:得到当前登录单位的名称
* 2:生成采购单的名称
* 3:跳转到新增页面。
* @param @return   
* @return String    
* @throws
 */
@RequestMapping("/addcgd")
public String addcgd(HttpSession session,Model model)
{
    ActiveUser activeUser=(ActiveUser)session.getAttribute(Config.ACTIVEUSER_KEY);
    String sysmc=activeUser.getSysmc();//得到所属单位的名称
    
    //准备页面所需要的数据:因为我们在采购单页面上显示两个内容:
    //1:药品的采购时间(年)
    //2:采购单的名称
    //所以我们要把这些数据加入到Modele,然后把这些数据传入到下一个页面。
    
    String yycgdmc=sysmc+MyUtil.getDate()+"采购单";
    model.addAttribute("yycgdmc",yycgdmc);
    String year=MyUtil.get_YYYY(MyUtil.getDate());//得到年
    model.addAttribute("year",year);
    return "/business/cgd/addcgd";//跳转到新增页面
}

 

 

 

 

 

跳转到新增页面之后,输入数据,然后按下保存按钮。就会进入到提交函数(如下):

    // 创建采购单基本信息保存方法
    @RequestMapping("/addcgdsubmit")
    public @ResponseBody
    SubmitResultInfo addcgdsubmit(HttpSession session, String year,
            YycgdQueryVo yycgdQueryVo) throws Exception {
        ActiveUser activeUser = (ActiveUser) session
                .getAttribute(Config.ACTIVEUSER_KEY);
        // 医院id
        String useryyid = activeUser.getSysid();
        // 获取采购单id
        String yycgdid = cgdService.insertYycgd(useryyid, year,
                yycgdQueryVo.getYycgdCustom());

        ResultInfo resultInfo = ResultUtil.createSuccess(Config.MESSAGE, 906,
                null);
        // 获取采购单id,将id通过ResultInfo中sysdata传到页面
        resultInfo.getSysdata().put("yycgdid", yycgdid);

        return ResultUtil.createSubmitResult(resultInfo);

    }

 

 

这个提交函数调用完之后会执行jisp页面上的回调函数 。回调函数里面就会跳转到采购单修改页面。

function yycgdsave_callback(data) {
    //由服务端统一返回submitResultInfo的json数据,所以客户端统一使用_alert统一解析方法
    _alert(data.resultInfo);
    
    //获取新添加的采购单的id
    
    //alert(data.resultInfo.sysdata.yycgdid);
    //在这里必须拿新添加的 采购单的id
      if(data.resultInfo.type==TYPE_RESULT_SUCCESS){//如果成功跳转至修改页面
        //alert(data.resultInfo.sysdata.yycgdid);
        var yycgdid=data.resultInfo.sysdata.yycgdid;
        window.location='${baseurl}cgd/editcgd.action?id='+yycgdid;
    }  
     
}

 下面一篇博客就要讲采购单明细表了,就从editcgd.action为入口讲。

 到这里基本采购单就创建好了。信息也插入到了数据库中。

数据库信息如下:

 

 --------------------------------------------------------------------------------------------------------------------------------------------

addcgd.jsp页面的代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ include file="/WEB-INF/jsp/base/tag.jsp"%>
<html> 
<head>
<title>采购单创建</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<%@ include file="/WEB-INF/jsp/base/common_css.jsp"%>
<%@ include file="/WEB-INF/jsp/base/common_js.jsp"%>

<script type="text/javascript">

//采购单保存
function yycgdsave(){
    jquerySubByFId('yycgdsaveForm', yycgdsave_callback, null);
}
/**
 * 采购单保存回调
 * data是服务端响应的数据,服务端统一响应了submitResultInfo对象的json数据
 */
function yycgdsave_callback(data) {
    //由服务端统一返回submitResultInfo的json数据,所以客户端统一使用_alert统一解析方法
    _alert(data.resultInfo);
    
    //获取新添加的采购单的id
    
    //alert(data.resultInfo.sysdata.yycgdid);
    //在这里必须拿新添加的 采购单的id
      if(data.resultInfo.type==TYPE_RESULT_SUCCESS){//如果成功跳转至修改页面
        //alert(data.resultInfo.sysdata.yycgdid);
        var yycgdid=data.resultInfo.sysdata.yycgdid;
        window.location='${baseurl}cgd/editcgd.action?id='+yycgdid;
    }  
     
}

</script>
</HEAD>
<BODY>

<form id="yycgdsaveForm" name="yycgdsaveForm" action="${baseurl}cgd/addcgdsubmit.action" method="post">
<TABLE border=0 cellSpacing=0 cellPadding=0 width="70%" bgColor=#c4d8ed align=center>
        <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>药品采购年份<br>(如2014):</TD>
                                <TD class=category width="35%">
                                ${year}
                                <input type="hidden" name="year" value="${year}" />
                                </TD>
                                <TD height=30 width="15%" align=right >采购单名称:</TD>
                                <TD class=category width="35%">
                                <div>
                                <input type="text" id="yycgd_mc" name="yycgdCustom.mc" value="${yycgdmc}"  style="width:260px" />
                                </div>
                                <div id="yycgd_mcTip"></div>
                                </TD>
                            </TR>
                            <TR>
                               <TD height=30 width="15%" align=right >建单时间:</TD>
                                <TD class=category width="35%">
                                    
                                </TD>
                                <TD height=30 width="15%" align=right >提交时间:</TD>
                                <TD class=category width="35%">
                                
                                </TD>
                                
                            </TR>
                            <TR>
                                <TD height=30 width="15%" align=right>联系人:</TD>
                                <TD class=category width="35%">
                                <input type="text" name="yycgdCustom.lxr" id="yycgdCustom.lxr"  style="width:260px" />
                                </TD>
                                <TD height=30 width="15%" align=right >联系电话:</TD>
                                <TD class=category width="35%">
                                <input type="text" name="yycgdCustom.lxdh" id="yycgdCustom.lxdh" style="width:260px" />
                                </TD>
                            </TR>
                            <TR>
                                <TD height=30 width="15%" align=right>采购单状态:</TD>
                                <TD class=category width="35%">
                                
                                </TD>
                                <TD height=30 width="15%" align=right>备注:</TD>
                                <TD colspan=3>
                                    <textarea rows="2" cols="30" name="yycgdCustom.bz"></textarea>
                                </TD>
                            </TR>
                            
                            <TR>
                                <TD height=30 width="15%" align=right>审核时间:</TD>
                                <TD class=category width="35%">
                                
                                </TD>
                                <TD height=30 width="15%" align=right >审核意见:</TD>
                                <TD class=category width="35%">
                                
                                </TD>
                            </TR>
                            
                            <tr>
                              <td colspan=4 align=center class=category>
                                <a  href="#" onclick="yycgdsave()" class="easyui-linkbutton" iconCls='icon-save'>保存</a>
                                
                              </td>
                            </tr>
                        </TBODY>
                    </TABLE>
                </TD>
            </TR>
        </TBODY>
    </TABLE>
</form>

</BODY>
</HTML>

 

结束。

 

发表评论

0/200
401 点赞
0 评论
收藏
为你推荐 换一批