需求:

我们之前把采购单交给监督单位审核了,审通过的采购单就要受理。供货商决定采购单发不发货。

说明:

我们要查的就是登录的供货商的要提供的采购药品,我们查看的是采购单详细表,至于查询条件我们用的是就是采购单的查询条件,查出来的就是采购单里面的详细采购清单,我们在查询采购单里面的详细清单时是需要有约束条件。

我们设置一个YycgdCust对象。用来做查寻条件用。

如下:

这张单子里面的就是采购单详细表,这儿查出来的数据就只是特定于这个供货商的采购单详细表,一个区域里面只有一个供货商,有好几个医院,每个医院有好多个采购单。那么就是一个供货商有好几个采购单。供货商要看着每一个采购单的明细表才会去处理这个数据要不要发货。

我们先写Mapper:

我们写sql时要参考:

Mapper.xml如下:


<!-- 查询条件

我们之前在在Service传了一个YycdgmxCusom进来,并且这个YycgdmxCusom设置了一些条件,就是为了这里的查询。
-->

    <!-- 以表为单位定义sql片段 -->
    <!-- 采购单药品明细查询条件 -->
    <sql id="query_yycgdmx_where">
        <if test="yycgdmxCustom!=null">
            <if test="yycgdmxCustom.yycgdid!=null and yycgdmxCustom.yycgdid!=''">
                and yycgdmx.yycgdid = #{yycgdmxCustom.yycgdid}
            </if>
            <!-- 采购状态 -->
            <if test="yycgdmxCustom.cgzt!=null and yycgdmxCustom.cgzt!=''">
                and yycgdmx.cgzt = #{yycgdmxCustom.cgzt}
            </if>
            <!-- 供货商 id-->
            <if test="yycgdmxCustom.usergysid!=null and yycgdmxCustom.usergysid!=''">
                and yycgdmx.usergysid = #{yycgdmxCustom.usergysid}
            </if>
        </if>
    </sql>     <!-- 采购单查询条件 -->
    <sql id="query_yycgd_where">
        <if test="yycgdCustom!=null">
            <if test="yycgdCustom.id!=null and yycgdCustom.id!=''">
                and yycgd.id = #{yycgdCustom.id}
            </if>
            <if test="yycgdCustom.bm!=null and yycgdCustom.bm!=''">
                and yycgd.bm = #{yycgdCustom.bm}
            </if>
            <if test="yycgdCustom.mc!=null and yycgdCustom.mc!=''">
                and yycgd.mc like '%${yycgdCustom.mc}%'
            </if>
            <!-- 采购时间 ,根据采购单创建时间查询 -->
            <if test="yycgdCustom.cjtime_start!=null">
                and yycgd.cjtime>=#{yycgdCustom.cjtime_start}
            </if>
            <if test="yycgdCustom.cjtime_end!=null">
              <![CDATA[
               and yycgd.cjtime<=#{yycgdCustom.cjtime_end}
               ]]>
            </if>
            <!-- 根据医院id查询 -->
            <if test="yycgdCustom.useryyid!=null and yycgdCustom.useryyid!=''">
                and yycgd.useryyid = #{yycgdCustom.useryyid}
            </if>
            <!-- 采购单状态条件 -->
            <if test="yycgdCustom.zt!=null and yycgdCustom.zt!=''">
                and yycgd.zt = #{yycgdCustom.zt}
            </if>
        </if>
    </sql> <!-- 采购单药品明细查询列表 -->
<select id="findYycgdmxList" parameterType="yycg.business.pojo.vo.YycgdQueryVo"
resultType="yycg.business.pojo.vo.YycgdmxCustom">
<!-- 引入分页头 -->
<include refid="yycg.base.commonSql.page_start" /> select yycgdmx.id yycgdmxid,
useryy.id useryyid,
useryy.mc useryymc, yycgd.bm yycgdbm,
yycgd.mc yycgdmc,
yycgd.cjtime,
(select info
from dictinfo
where typecode = '010'
and dictcode = yycgd.zt) yycgdztmc,
ypxx.id,
ypxx.bm,
ypxx.mc,
ypxx.jx,
ypxx.gg,
ypxx.zhxs,
ypxx.scqymc,
ypxx.spmc, ypxx.jyzt, (select info
from
dictinfo
where ypxx.jyzt =
dictcode
and typecode = '003') jyztmc,
yycgdmx.zbjg,
yycgdmx.jyjg,
yycgdmx.cgl,
yycgdmx.cgje,
yycgdmx.cgzt,
(select info
from dictinfo
where
typecode = '011'
and dictcode =
yycgdmx.cgzt) cgztmc,
usergys.mc
usergysmc,
usergys.id usergysid from
yycgdmx${businessyear} yycgdmx,
yycgd${businessyear} yycgd, useryy,
ypxx, usergys
where yycgdmx.yycgdid
= yycgd.id
and yycgd.useryyid =
useryy.id
and yycgdmx.ypxxid = ypxx.id
and yycgdmx.usergysid =
usergys.id <!-- 只查询某个采购单下药品明细 -->
<include refid="query_yycgdmx_where" />
<!-- 采购单查询条件 -->
<include refid="query_yycgd_where" />
<!-- 药品查询条件 -->
<include refid="yycg.business.dao.mapper.YpxxMapperCustom.query_ypxx_where" /> <!-- 分页尾部 -->
<include refid="yycg.base.commonSql.page_end" />
</select>

我们之前写过findYycgdmxList。我们这次要做的就是扩展查询条件,使的之前的findYycgdmxList可以继续用。

    <!-- 采购单药品明细查询列表总数 -->
<select id="findYycgdmxCount" parameterType="yycg.business.pojo.vo.YycgdQueryVo"
resultType="int"> select count(*) from yycgdmx${businessyear} yycgdmx,
yycgd${businessyear} yycgd, useryy,
ypxx, usergys
where yycgdmx.yycgdid
= yycgd.id
and yycgd.useryyid = useryy.id
and yycgdmx.ypxxid = ypxx.id
and yycgdmx.usergysid = usergys.id <!-- 只查询某个采购单下药品明细 -->
<include refid="query_yycgdmx_where" />
<!-- 采购单查询条件 -->
<include refid="query_yycgd_where" />
<!-- 药品查询条件 -->
<include refid="yycg.business.dao.mapper.YpxxMapperCustom.query_ypxx_where" /> </select>
findYycgdmxCount是对应查数量的,用来分页用的。

Service 如下:

@Override
public List<YycgdmxCustom> findDisposeYycgdList(String usergysid, String year,
YycgdQueryVo yycgdQueryVo) throws Exception {
//判断传机传进来的yycgdQueryVo是不是空的,空的那就新建一个对象。
yycgdQueryVo=yycgdQueryVo!=null?yycgdQueryVo:new YycgdQueryVo();//
YycgdmxCustom yycgdmxCustom=yycgdQueryVo.getYycgdmxCustom();
//因为之前那步的YycgdQuery如果是空的话,那么这里的yycgdmxCustom也是空的,
//所以如果是空的,那就要重新新建一个对象。
yycgdmxCustom=yycgdmxCustom!=null?yycgdmxCustom:new YycgdmxCustom();
yycgdmxCustom.setUsergysid(usergysid);//设置采购商的id,保证只能查看本采购商的采购单
String cgzt="1";
yycgdmxCustom.setCgzt(cgzt);//传入查询条件,保证采购单里面的采购药品明细状态是“未确认送货”
yycgdQueryVo.setYycgdmxCustom(yycgdmxCustom); yycgdQueryVo.setBusinessyear(year);
return yycgdMapperCustom.findYycgdmxList(yycgdQueryVo); } @Override
public int findDisposeYycgdCount(String usergysid, String year,
YycgdQueryVo yycgdQueryVo) throws Exception {
//判断传机传进来的yycgdQueryVo是不是空的,空的那就新建一个对象。
yycgdQueryVo=yycgdQueryVo!=null?yycgdQueryVo:new YycgdQueryVo();//
YycgdmxCustom yycgdmxCustom=yycgdQueryVo.getYycgdmxCustom();
//因为之前那步的YycgdQuery如果是空的话,那么这里的yycgdmxCustom也是空的,
//所以如果是空的,那就要重新新建一个对象。
yycgdmxCustom=yycgdmxCustom!=null?yycgdmxCustom:new YycgdmxCustom();
yycgdmxCustom.setUsergysid(usergysid);//设置采购商的id,保证只能查看本采购商的采购单
String cgzt="1";
yycgdmxCustom.setCgzt(cgzt);//传入查询条件,保证采购单里面的采购药品明细状态是“未确认送货”
yycgdQueryVo.setYycgdmxCustom(yycgdmxCustom); yycgdQueryVo.setBusinessyear(year);
return yycgdMapperCustom.findYycgdmxCount(yycgdQueryVo);
} @Override
public void saveSendStatus(String yycgdid, String ypxxid) throws Exception {
// 查询出采购药品记录
Yycgdmx yycgdmx = this.findYycgdmxByYycgdidAndYpxxid(yycgdid, ypxxid); if (yycgdmx == null) {
// 提示:找到采购药品明细记录
// ...
}
// 采购状态
String cgzt = yycgdmx.getCgzt();
if (!cgzt.equals("1")) {
// 提示:采购药品在未确定 送货时方可发货
// ...
} // 设置更新状态为已发货
yycgdmx.setCgzt("2");
// 年份
String year = yycgdid.substring(0, 4);
yycgdmx.setBusinessyear(year); yycgdmxMapper.updateByPrimaryKey(yycgdmx);
}

Action层:

// 采购单受理页面
@RequestMapping("/disposeyycgd")
public String disposeyycgd(Model model) throws Exception { // 当前年份
model.addAttribute("year", MyUtil.get_YYYY(MyUtil.getDate())); return "/business/cgd/disposeyycgd";
} // 采购单受理列表结果集,json
@RequestMapping("/disposeyycgd_result")
public @ResponseBody
DataGridResultInfo disposeyycgd_result(// HttpSession session,
ActiveUser activeUser, String year,// 年份
YycgdQueryVo yycgdQueryVo,// 查询条件
int page, int rows) throws Exception { // 供货商id
String usergysid = activeUser.getSysid();// 单位id // 列表的总数
int total = cgdService.findDisposeYycgdCount(usergysid, year,
yycgdQueryVo); // 分页参数
PageQuery pageQuery = new PageQuery();
pageQuery.setPageParams(total, rows, page);
yycgdQueryVo.setPageQuery(pageQuery);// 设置分页参数 // 分页查询列表
List<YycgdmxCustom> list = cgdService.findDisposeYycgdList(usergysid,
year, yycgdQueryVo); DataGridResultInfo dataGridResultInfo = new DataGridResultInfo();
dataGridResultInfo.setTotal(total);
dataGridResultInfo.setRows(list); return dataGridResultInfo;
}

调试通过。

调试时遇到了问题:

页面如下:

ar columns = [ [ {
checkbox:true
},{
field : 'id',
hidden : true,
formatter: function(value,row,index){
return '<input type="hidden" name="yycgdmxCustoms['+index+'].ypxxid" value="'+value+'" />';
}
},{
field : 'yycgdid',
hidden : true,
formatter: function(value,row,index){
return '<input type="hidden" name="yycgdmxCustoms['+index+'].yycgdid" value="'+row.yycgdbm+'" />';
}
},

整体代码如下:

<!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"> var yycgddisposesubmit = function(){
_confirm('您确定要对选择的药品发货吗?',null,
function(){ var indexs = [];//提交记录的序号
var rows = $('#yycgdmxlist').datagrid('getSelections');
for(var i=0;i<rows.length;i++){
var index=$('#yycgdmxlist').datagrid('getRowIndex',rows[i]);
indexs.push(index);
}
if(rows.length>0){
$("#indexs").val(indexs.join(','));
jquerySubByFId('yycgddisposeForm', yycgddispose_callback, null);
}else{
alert_warn("请选择要发货的药品");
} }
) }; function yycgddispose_callback(data) {
var result = getCallbackData(data);
_alert(result);
yycgdmxquery();
}
/**
* 采购单查看
*/
function yycgdinfo(bm){
var sendUrl = "${baseurl}cgd/yycgdview.action?yycgdid="+bm;
parent.opentabwindow(bm+'采购单查看',sendUrl);//打开一个新标签 } //工具栏 var toolbar = [{
id : 'yycgddisposesubmit',
text : '确认发货',
iconCls : 'icon-add',
handler : yycgddisposesubmit
}]; var frozenColumns; //列的field定义的必须不一样!!!
var columns = [ [ {
checkbox:true
},{
field : 'id',
hidden : true,
formatter: function(value,row,index){
return '<input type="hidden" name="yycgdmxCustoms['+index+'].ypxxid" value="'+value+'" />';
}
},{
field : 'yycgdid',
hidden : true,
formatter: function(value,row,index){
return '<input type="hidden" name="yycgdmxCustoms['+index+'].yycgdid" value="'+row.yycgdbm+'" />';
}
},
{
field : 'useryymc',
title : '医院名称',
width : 100
},{
field : 'yycgdbm',
title : '采购单编号',
width : 80
},{
field : 'yycgdmc',
title : '采购单名称',
width : 150
},{
field : 'cjtime',
title : '建单时间',
width : 80,
formatter: function(value,row,index){
if(value){
try{
var date = new Date(value);
var y = date.getFullYear();
var m = date.getMonth()+1;
var d = date.getDate();
return y+"-"+m+"-"+d;
}catch(e){
alert(e);
}
} }
},{
field : 'bm',
title : '流水号',
width : 50
},{
field : 'mc',
title : '通用名',
width : 100
},{
field : 'jx',
title : '剂型',
width : 70
},{
field : 'gg',
title : '规格',
width : 70
},{
field : 'zhxs',
title : '转换系数',
width : 50
},{
field : 'zbjg',
title : '中标价',
width : 50
},{
field : 'jyjg',
title : '交易价',
width : 50
},{
field : 'cgl',
title : '采购量',
width : 50
},{
field : 'cgje',
title : '采购金额',
width : 50
},{
field : 'cgztmc',
title : '采购状态',
width : 60
},{
field : 'opt3',
title : '查看',
width : 60,
formatter:function(value, row, index){
return '<a href=javascript:yycgdinfo(\''+row.yycgdbm+'\')>查看</a>';
}
}]]; function initGrid(){
$('#yycgdmxlist').datagrid({
title : '采购单列表',
//nowrap : false,
striped : true,
//collapsible : true,
url : '${baseurl}cgd/disposeyycgd_result.action',
queryParams:{//jqueryeasyui提供传参
year:'${year}'
},
//sortName : 'code',
//sortOrder : 'desc',
//remoteSort : false,
idField : 'yycgdmxid',//如果值不是主键则影响获取checkbox选中个数
//frozenColumns : frozenColumns,
columns : columns,
autoRowHeight:true,
pagination : true,
rownumbers : true,
toolbar : toolbar,
loadMsg:"",
pageList:[15,30,50,100],
onClickRow : function(index, field, value) {
$('#yycgdmxlist').datagrid('unselectRow', index);
}
}); }
//进入页面执行该方法
$(function() {
initGrid(); }); function yycgdmxquery() {
var formdata = $("#yycgddisposeForm").serializeJson();
//alert(formdata);
$('#yycgdmxlist').datagrid('unselectAll');
$('#yycgdmxlist').datagrid('load', formdata);
}
$(function(){
//通过dwr加载年份
businessyearlist('year');
});
</script>
</HEAD>
<BODY>
<form id="yycgddisposeForm" name="yycgddisposeForm" method="post" action="${baseurl}cgd/disposesubmit.action">
<input type="hidden" name="indexs" id="indexs" />
<TABLE class="table_search">
<TBODY>
<TR>
<TD class="left">年份(如2014):</TD>
<td ><select id="year" name="year">
</select></td>
<TD class="left">医院名称:</TD>
<td ><INPUT type="text" name="useryyCustom.mc" /></td>
<TD class="left">采购单编号:</td>
<td><INPUT type="text" name="yycgdCustom.bm" /></TD>
<TD class="left">采购单名称:</TD>
<td ><INPUT type="text" name="yycgdCustom.mc" /></td>
</TR>
<TR>
<TD class="left">采购单状态:</TD>
<td >
审核通过
</td>
<TD class="left">采购时间:</TD>
<td >
<INPUT id="yycgdCustom.cjtime_start"
name="yycgdCustom.cjtime_start"
onfocus="WdatePicker({isShowWeek:false,skin:'whyGreen',dateFmt:'yyyy-MM-dd'})" style="width:80px"/>--
<INPUT id="yycgdCustom.cjtime_end"
name="yycgdCustom.cjtime_end"
onfocus="WdatePicker({isShowWeek:false,skin:'whyGreen',dateFmt:'yyyy-MM-dd'})" style="width:80px"/> </td>
<TD class="left">流水号:</TD>
<td ><INPUT type="text" name="ypxxCustom.bm" /></td>
<TD class="left">通用名:</td>
<td><INPUT type="text" name="ypxxCustom.mc" />
<a id="btn" href="#" onclick="yycgdmxquery()" 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="yycgdmxlist"></table>
</TD>
</TR>
</TBODY>
</TABLE>
</form> </BODY>
</HTML>

到这里为止采购单模块就结束了,下面其实还有入库的功能,还有退货结算的功能,我们就不讲了。

048医疗项目-模块四:采购单模块—采购单受理(Dao,Service,Action三层)的更多相关文章

  1. 047医疗项目-模块四:采购单模块—采购单审核提交(Dao,Service,Action三层)

    我们之前把采购单都审核了,这篇文章说的就是审核之后提交. 其实就是改变(update)采购单的审核状态. 需求: 用户要先查看采购单的内容. 查看采购单页面:页面布局同采购单修改页面. 选择审核结果. ...

  2. 043医疗项目-模块四:采购单模块—采购单明细查询(Dao,Service,Action三层)

    前一篇文章我们做的是在医院的角度上添加在采购单里面添加药品.这一篇文章是查看我们添加的采购单信息. 我们先看一下要实现的效果:当: 按下确认添加时,会在这里 显示出刚才添加的数据. 好,我们就来做这个 ...

  3. 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

    我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...

  4. 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

    当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...

  5. 045医疗项目-模块四:采购单模块—采购单提交(Dao,Service,Action三层)

    我们之前做的就是采购单的编辑,在采购单里面添加了药品,然后我们这篇文章要做的就是说提交这个采购单. 当我们创建完成采购单,确定采购单不再修改,需要提交采购单,由监管单位进行审核. 我们在提交这个采购单 ...

  6. 010医疗项目-模块一:用户添加的实现(Dao,Service,Action,增加页面调试,提交页面调试)

    要实现的效果:

  7. 模块四-shutil模块

    shutil模块 高级的文件处理模块 主要是文件的处理,移动,压缩和解压缩 shutil模块的使用方法: shutil.copyfile()#拷贝文件 shutil.copy()#拷贝文件和权限 sh ...

  8. 常见模块(四) os模块

    注: os模块是实现python程序对操作系统(operation system)的操作 1.对文件或者目录进行删除或者创建的相关操作 # os.rename("b"," ...

  9. 010商城项目:商品类目的选择——Dao,Service.Action层的分析

    我们现在开始写商品类选择这个功能: 先看效果: 当我们点击"新增商品"---->"选择目录"然后从数据库中查出来数据并显示了. 我们分析数据库的那张表: ...

随机推荐

  1. React Native学习笔记之1

    1:运行React Native报连接错误解决 解决方式: 在终端进入项目文件里,然后执行:(cd Pods/React; npm run start) 2:组件生命周期介绍 创建阶段 1. getD ...

  2. 学习Coding-iOS开源项目日志(三)

    继续前两篇,接着本第三篇<学习Coding-iOS开源项目日志(三)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的 ...

  3. 解决Windows 8系统假死的方法

    大部分半卡死的现象是因为Dynamic Tick的一个Bug.Dynamic Tick是NT 6.2内核的一个新功能(其实Linux早就有了),原理的话大概是在空闲的时候把CPU完全暂停,来节省电量. ...

  4. 【转】探索C#之布隆过滤器(Bloom filter)

    原文:蘑菇先生,http://www.cnblogs.com/mushroom/p/4556801.html 背景介绍 Bloom filter(后面简称BF)是Bloom在1970年提出的二进制向量 ...

  5. 简述MVC框架模式以及在你(Android)项目中的应用

    标题是阿里电话面试的问题,一直以为自己很清楚MVC模式,结果被问到时,居然没法将MVC和Android中各个组件对应起来,所以,面试肯定挂了,不过面试也是学习的一种方式,可以知道大公司看中什么,以及自 ...

  6. 使用Web.Config Transformation配置灵活的配置文件

    发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻 ...

  7. SQL Tune Report–sqltrpt.sql

    ORACLE 10g提供了一个脚本sqltrpt.sql用来查询最耗费资源的SQL语句,其输出的结果分为两部分: 15 Most expensive SQL in the cursor cache 1 ...

  8. SQLServer:删除log文件和清空日志的方法

    数据库的性能是DBA都需要重点关注的,日志文件的增多严重影响数据库的性能,本文将为您介绍SQL Server删除日志文件的方法,供您参考,希望对您有所帮助. 数据库在使用过程中会使日志文件不断增加,使 ...

  9. 将一列包含多个ID拆分多行

    看到个不常见的问题~然后在 Inner Sql Server2008 里面找到一个思路. 如果下面的表结构,如何拆分多行并对应员工号呢? 首先创建测试表 CREATE TABLE Department ...

  10. 烂泥:学习ssh之ssh密钥随身携带

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 在上一篇文章<烂泥:学习ssh之ssh无密码登陆>中,我们讲解了如何使用ssh密钥,免密码登陆服务器. 这篇文章我们再来讲解,如何把已经生成的 ...