这篇文章我们来讲Action层:

我们先讲开发步骤:

1:我们要根据Service层里面要传的参数,在Action层传入对应的参数。

Service层是:public void insertGysympl(String usergysid, String ypxxid) throws Exception

2:我们把从页面传入的多个药品类保存起来,且把选中的行号也得到。

3:捕获插入数据时的异常。并根据异常解析是自定义的异常,还是未知异常,做相应的处理。

Action层具体代码如下:

/**
*
* @author Sxq
* @Title: addgysSubmit
* @Description: TODO
* @param @param session
* @param @param indexs 接受页面选中的行序号
* @param @param gysypmlQueryVo页面提交的数据保存在list中
* @param @return
* @param @throws Exception
* @return SubmitResultInfo
* @throws
*/
@RequestMapping("addgysypmlsubmit")
public@ResponseBody SubmitResultInfo addgysSubmit(HttpSession session,int[] indexs,GysypmlQueryVo gysypmlQueryVo)
{
ActiveUser activeUser=(ActiveUser)session.getAttribute(Config.ACTIVEUSER_KEY);//从session中去得到用户保存的信息
String usergysid=activeUser.getSysid();//得到药品供应商的id,
//从前台页面传入的药品类
List<YpxxCustom> list=gysypmlQueryVo.getYpxxCustoms();
int count=indexs.length;//处理数据的总数
int count_success=0;//处理成功的数量
int count_error=0;//处理失败的数量
List<ResultInfo> mess_error=new ArrayList<ResultInfo>();//处理失败的原因 for(int i=0;i<count;i++)
{ ResultInfo resultInfo=null;
YpxxCustom ypxxCustom=list.get(indexs[i]);
String ypid=ypxxCustom.getId();//得到药品的id
try {
gysymplService.insertGysympl(usergysid, ypid);////调用servcie层插入数据。
} catch (Exception e) {
e.printStackTrace();
/*
* 接下来的步骤就是解析我们的异常,看是不是我们自己定义的异常
*/
if(e instanceof ExceptionResultInfo)//判断是不是我们自己定义的异常
{
resultInfo=((ExceptionResultInfo)e).getResultInfo();//是我们自己的异常的话就得到错误信息 }else {
resultInfo=ResultUtil.createFail(Config.MESSAGE, 900, null);//不是我们自己定义的异常,那么就要创建一个未知异常。
} } if(resultInfo==null)//说明没有抛出异常,那么就在代表成功的count_success加1.
{
count_success++;
}else {
count_error++;//说明抛出了异常,那么就要异常加一
mess_error.add(resultInfo);//把异常都收集起来 } } //这里有mess_error所以当我添加失败时会给出具体的失败原因。
return ResultUtil.createSubmitResult(ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[]{count_success,count_error}),mess_error);
}

调试结果:

 
点击添加药品之后:

点击“确认添加”之后:

 

前面的是正常添加的情况,接下来我们看一下如果添加那些暂停交易的药品时会出现什么情况(暂停交易的药品是不能被添加进去的):

详细的列出了不能添加的理由。

036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第三十三课 后台文章标签查询提交到前台,删除功能实现(课堂笔记)

    在视图中创建个类,要实现此功能,并把结果返回前台 , from django.shortcuts import render from django.views import View from dj ...

  2. 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试

    什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...

  3. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  4. 032医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Service层和Action层和调试

    我们上一篇文章讲了Dao层代码: 这一篇我们讲解Service层和Action层: Service层: 分为接口和实现类,我们主要看实现类:GysemplServiceImpl package yyc ...

  5. 027医疗项目-模块二:药品目录的导入导出-导入功能的Action的编写

    前一篇文章我们写了Service层,这篇文章我们写一下Action层. 实现的功能: 1:我们先下载模板:然后按照模板里面的规则,插入数据.比如存在d盘. 2:然后浏览找到那个文件,上传上去. 然后把 ...

  6. 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

    我们要实现的效果:     进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格.  点击"导出"之后 ...

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

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

  8. 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句

    这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:

  9. SSH项目搭建(三)——Maven多模块搭建项目

    多模块开发,大致的思想就是把一个项目按某种方式分成多个模块,再把模块们连接成一个整体,我们在开发的时候,可以很清晰的操作每一个模块,可以大大提高开发的效率. Java web项目,最常见的就是按代码的 ...

随机推荐

  1. 1.10 基础知识——GP3.1 制度化 & GP3.2 收集改进信息

    摘要: GP3.1是要求建立组织级的关于该过程的制度.标准.模版等全套体系,要求覆盖该PA所有的SP和GP.GP3.2 体现的是持续改进,每个过程都应该收集相应的改进信息. 正文: GP3.1 Est ...

  2. (视频) 开源,免费和跨平台 - MVP ComCamp 2015 KEYNOTE

    2015年1月31日,作为KEYNOTE演讲嘉宾,我和来自全国各地的开发人员分享了作为一名MVP的一些体会. Keynote – Open Source, Free Tools and Cross P ...

  3. Apache 反向代理实现为http添加https的外衣

    Apache 反向代理 金天:坚持写东西,不是一件容易的事,换句话说其实坚持本身都不是一件容易的事.如果学习有捷径,那就是不断实践,不断积累.写笔记,其实是给自己看的,是体现积累的一种方式,要坚持. ...

  4. SQL Server 2012实施与管理实战指南(笔记)——Ch3Alwayson可用组

    3.AlwaysOn可用组 Alwayson支持的,是一个可用性组,每个可用性组是包含了多个用户数据库的容器,可用性组内的数据库可以作为一个整体进行故障转移. AlwaysOn关键特性: 一.类似集群 ...

  5. 编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒) 进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义 一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这 些对象调用方法show()来显示时钟的时间。

    package com.hanqi.test; public class Clock { int hh; int mm; int ss; String time; Clock(int h,int m, ...

  6. 0016 Java学习笔记-异常-如果try-catch-finally中都存在return语句会怎样?

    上午在搜索"System.runFinalization"的时候,搜到 http://www.cnblogs.com/Skyar/p/5962253.html ,其中有关于try- ...

  7. 【hadoop】——修改hadoop FileUtil.java,解决权限检查的问题

    在Hadoop Eclipse开发环境搭建这篇文章中,第15.)中提到权限相关的异常,如下: 15/01/30 10:08:17 WARN util.NativeCodeLoader: Unable ...

  8. Iframe指定页面,并使其与该页面显示一致

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. 烂泥:KVM、kickstart与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章介绍了FTP.NFS与KVM.kickstart集成的案例,从这篇文章开始,我们来介绍HTTP方式与KVM.kickstart集成. HTTP ...

  10. TCP的关闭,到底是几次握手,每次的标志位到底是什么!

    做题的时候遇到一个问题,TCP关闭的时候到底是三次还是四次握手,如果是三次,少了哪部分?   按照 <计算机网络> -第五版-谢希仁       然而对于TCP关闭, 有的地方能找到   ...