035医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service
这篇文章我们重点介绍Service层。因为Dao层就是用Gysypml逆向生成的Mapper就可以了。所以这里重点讲解Service层。
业务逻辑如下:
1:我们从前端页面传入有两个值:1:usergysid(供应商的id),2:YPPxxID(药品的目录id)
我们看一下我们要插入数据的表:
我们要做的就是把这两个字段插入。
2:我们看这样表的设计:
这里有这么一个约束,那就是YPXXID和USERGYSID两个字段成为一个主键。
我们在Service层应该做的步骤如下:
1:我们根据传入的usergysid(供应商id)和药品id去供应商药品表中去查找记录,有查到记录那就抛出异常。
2:然后根据药品id去药品表中查找此药品,能找到就是没问题,如果没找到那就抛异常。
3:往Gysypml表里面插入数据。
4:我们验证完了供应商药品表,我们还要验证供应商药品目录控制表。
(1):根据传入的usergysid和药品id去查找供应商药品目录控制表中有没有已经存在的记录。
有那就抛异常,没有就ok.
具体代码如下:
/**
*
* @author Sxq
* @Title: findGysymplByGysyisAndYpxxid
* @Description: 在Gysymld查找记录
* @param @param usergysid
* @param @param ypxxid
* @param @return
* @return Gysypml
* @throws
*/
public Gysypml findGysymplByGysyisAndYpxxid(String usergysid, String ypxxid) {
GysypmlExample gysypmlExample = new GysypmlExample();
GysypmlExample.Criteria criteria = gysypmlExample.createCriteria();
criteria.andUsergysidEqualTo(usergysid);
criteria.andYpxxidEqualTo(ypxxid); List<Gysypml> gysypmllist = gysypmlMapper
.selectByExample(gysypmlExample);
if (gysypmllist.size() == 1) { return gysypmllist.get(0);
} else {
return null;
} } // 在GysypmlControl表中查找GysypmlControl public GysypmlControl findGysypmlControlByGysyisAndYpxxid(String usergysid,
String ypxxid) { GysypmlControlExample gysypmlControlExample = new GysypmlControlExample();
GysypmlControlExample.Criteria criteria = gysypmlControlExample
.createCriteria();
criteria.andUsergysidEqualTo(usergysid);
criteria.andYpxxidEqualTo(ypxxid); List<GysypmlControl> gysypmlControls = gysypmlControlMapper
.selectByExample(gysypmlControlExample);
if (gysypmlControls.size() == 1) { return gysypmlControls.get(0);
} else {
return null;
} } /**
*
* @author Sxq
* @Title: insertGysympl
* @Description: 往供应商药品目录表中和供应商药品目录控制表插入数据
* @param @param usergysid
* @param @param ypxxid
* @param @throws Exception
* @return void
* @throws
*/
@Override
public void insertGysympl(String usergysid, String ypxxid) throws Exception { // 供应商药品目录表的验证(Gysypml表)
// 根据传进来的usergysid和ypxxid去Gysypml表去查询有没有这条数据,因为供货商目录表只能添加之前不存在的数据
// 已经存在在表里的数据是不能被插入了,这样会违反主键约束,
Gysypml gysypml = this.findGysymplByGysyisAndYpxxid(usergysid, ypxxid);
if (gysypml != null)// 如果查出来为空,说明实现已经存在这条数据了,那么我们就要抛异常了。
{
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 41,
null)); }
// 查找这个药品
Ypxx ypxx = ypxxMapper.selectByPrimaryKey(ypxxid);
if (ypxx == null) {
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 41,
null)); }
// 药品交易状态的验证
String jyzt = ypxx.getJyzt();
if (jyzt.equals("2")) {
// 药品状态为暂停不允许添加
ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 403,
new Object[] { ypxx.getBm(), ypxx.getMc() })); } // 如果前面的验证都通过了那么进行插入数据,我们之前提过插入数据的其实向两张表插入式数据
// 一张是药品管理目录表,一张是药品目录控制表
Gysypml gysypml2 = new Gysypml();
gysypml2.setId(UUIDBuild.getUUID());// 设置主键
gysypml2.setUsergysid(usergysid);
gysypml2.setId(ypxxid);
gysypmlMapper.insert(gysypml2);// 把数据插入到药品管理目录表 // 药品控制表(GysypmlControl表)的验证
GysypmlControl gysypmlControl = this
.findGysypmlControlByGysyisAndYpxxid(usergysid, ypxxid);
if (gysypmlControl == null)// 如果查出来为空,说明还不存在这条数据了,我们就可以插入数据了。
{ String cotrol = systemConfigService.findBasicinfoById("00101").getValue();//设置药品的控制状态。默认是1(正常状态)。
//但是为了去除硬编码,我们从系统文件中去读取控制信息。
GysypmlControl gysypmlControl2 = new GysypmlControl();
gysypmlControl2.setId(UUIDBuild.getUUID());// 设置uuid的主键
gysypmlControl2.setUsergysid(usergysid);
gysypmlControl2.setYpxxid(ypxxid);
gysypmlControl2.setControl(cotrol);
gysypmlControlMapper.insert(gysypmlControl2); } }
035医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service的更多相关文章
- 潭州课堂25班:Ph201805201 django 项目 第三十三课 后台文章标签查询提交到前台,删除功能实现(课堂笔记)
在视图中创建个类,要实现此功能,并把结果返回前台 , from django.shortcuts import render from django.views import View from dj ...
- 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写
我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...
- 036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层
这篇文章我们来讲Action层: 我们先讲开发步骤: 1:我们要根据Service层里面要传的参数,在Action层传入对应的参数. Service层是:public void insertGysym ...
- 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)
我们要实现的效果: 进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格. 点击"导出"之后 ...
- 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)
我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...
- 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句
这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:
- 045医疗项目-模块四:采购单模块—采购单提交(Dao,Service,Action三层)
我们之前做的就是采购单的编辑,在采购单里面添加了药品,然后我们这篇文章要做的就是说提交这个采购单. 当我们创建完成采购单,确定采购单不再修改,需要提交采购单,由监管单位进行审核. 我们在提交这个采购单 ...
- 043医疗项目-模块四:采购单模块—采购单明细查询(Dao,Service,Action三层)
前一篇文章我们做的是在医院的角度上添加在采购单里面添加药品.这一篇文章是查看我们添加的采购单信息. 我们先看一下要实现的效果:当: 按下确认添加时,会在这里 显示出刚才添加的数据. 好,我们就来做这个 ...
- 010医疗项目-模块一:用户添加的实现(Dao,Service,Action,增加页面调试,提交页面调试)
要实现的效果:
随机推荐
- 基于微软平台IIS/ASP.NET开发的大型网站有哪些?
首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/Java平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大M ...
- 为什么Java中字符串是不可变的
前言 在Java中,字符串是一个不可变的类,一个不可变的类指的是它的实例对象不能被修改,所有关于这个对象的信息在这个对象被创建时已初始化且不能被改变. 不可变类有很多优势,这篇文章总结了字符串类之所以 ...
- 深入理解“HelloWorld”小程序
对于每个Java程序员来说,HelloWorld是一个再熟悉不过的程序.它很简单,但是这段简单的代码能指引我们去深入理解一些复杂的概念.这篇文章,我将探索我们能从这段简单的代码中学到什么.如果你对He ...
- ORACLE口令管理
口令文件介绍 在ORALCE数据库系统中,用户如果要以特权用户身份(SYS/SYSDBA/SYSOPER)登录ORALCE数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用ORALC ...
- 十五天精通WCF——第十三天 用WCF来玩Rest
在我们玩wcf的时候,都会潜意识的觉得wcf就是通过soap协议交换消息的,并且可以在basic,tcp,msmq等等绑定中任意切换, 牛逼的一塌糊涂,但是呢,如果说哪一天wcf不再使用soap协议, ...
- 0022 Java学习笔记-面向对象-继承、多态、组合
继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...
- MySQL调优系列基础篇
前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...
- 3.Docker - 镜像管理
一.使用容器生成镜像 1.进入容器,安装软件包(任意包) 1 2 3 4 5 6 7 bash-3.2# docker ps -a CONTAINER ID IMAGE ...
- java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
今天把sql server 2008 r2装了起来,64位的,然后就迫不及待地体验连接数据库的操作,编程语言是java.我一开始学了一种非常老的连接方式,使用JDBC-ODBC桥.初次使用不太熟练,所 ...
- 【JAVA 小结】Java关于类与对象的代码
分别建立2个类class works 和 Person import java.io.*; public class works { public static void main(String[] ...