这篇文章我们重点介绍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); } }