034医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service

Posted jim_shen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了034医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------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);

        }

    }

 

以上是关于034医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service的主要内容,如果未能解决你的问题,请参考以下文章

028医疗项目-模块三:药品供应商目录模块——需求分析

029医疗项目-模块三:药品供应商目录模块——Dao层:基本的查询语句的编写

031医疗项目-模块三:药品供应商目录模块——sql补充知识

032医疗项目-模块三:药品供应商目录模块——Service层和Action层和调试

037医疗项目-模块四:采购单模块—采购单模块的整体需求

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