医药采购之采购单明细添加提交方法

1      采购单明细添加提交

1.1     需求 :

 

医院从本区域供货商药品目录中挑选要采购的药品,相同的药品在每个采购单中只允许挑选一次。

在数据库级别有一个唯一约束:

在采购单明细表中:采购单id+药品id是唯一的

1.2     实现

1.2.1     dao

向采购单明细表中插入记录。

使用自动生成的mapper.

1.2.2     service

接口功能:采购药品添加

接口参数:采购单id、药品id、供货商id

两个方法一个插入  一个校验查询

// 采购单药品添加校验

   // 通过采购单id 和药品信息id查询采购单明细表中是否存在

   public YycgdmxfindYycgdmxByYycgdIdAndYpxxId(String yycgdid, String ypxxid)

         throws Exception {

 

      Stringyear = yycgdid.substring(0, 4);

      YycgdmxExampleyycgdmxExample = newYycgdmxExample();

      YycgdmxExample.Criteriacriteria = yycgdmxExample.createCriteria();

      criteria.andYycgdidEqualTo(yycgdid);

      criteria.andYpxxidEqualTo(ypxxid);

      yycgdmxExample.setBusinessyear(year);

      List<Yycgdmx>yycgdmx = yycgdmxMapper.selectByExample(yycgdmxExample);

      if (yycgdmx != null &&yycgdmx.size() == 1) {

         return yycgdmx.get(0);

      }

      return null;

   }

 

   // 采购单药品添加

   @Override

   public void insertYycgdmx(Stringyycgdid, String ypxxid, String usergysid)

         throws Exception {

 

      Stringyear = yycgdid.substring(0, 4);

      Ypxxypxx = ypxxMapper.selectByPrimaryKey(ypxxid);

      if (ypxx == null) {

         ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 326,

                null));

      }

 

      Yycgdmxyycgdmx = newYycgdmx();

      yycgdmx.setId(UUIDBuild.getUUID());

      yycgdmx.setYycgdid(yycgdid);

      yycgdmx.setYpxxid(ypxxid);

      yycgdmx.setUsergysid(usergysid);

      yycgdmx.setBusinessyear(year);

      yycgdmx.setZbjg(ypxx.getZbjg());

      yycgdmx.setJyjg(ypxx.getZbjg());

      yycgdmx.setCgzt("1");// 未确认发货

      // 校验

      Yycgdmxyycgdmx2 = this.findYycgdmxByYycgdIdAndYpxxId(yycgdid,ypxxid);

      if (yycgdmx2 != null) {

         //该药品已存在

         ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 508,

                null));

      }

 

      yycgdmxMapper.insert(yycgdmx);

 

   }

1.2.3     action

批量添加采购药品的参数:

 

采购单id:单个参数(在form定义hidden)

药品id:多个参数(需要在datagrid的列中定义)

供货商id:多个参数(需要在datagrid的列中定义)

对于多个参数使用List<YycgdmxCustom> yycgdmxCustoms接收。

在包装对象中添加list属性接收页面的批量参数:

public classYycgdQueryVo {

 

   // 接收页面批量参数

   privateList<YycgdmxCustom> yycgdmxCustoms;

 

批量添加采购药品:

 

   // 采购单添加药品信息提交

   @RequestMapping("/addyycgdmxsubmit")

   public @ResponseBody

   SubmitResultInfoaddyycgdmxsubmit(String yycgdid, int[] indexs,

         YycgdQueryVoyycgdQueryVo) throwsException {

 

      List<YycgdmxCustom>list = yycgdQueryVo.getYycgdmxCustoms();

 

      // 处理数据的总数

      int count = indexs.length;

      // 处理成功的数量

      int count_success = 0;

      // 处理失败的数量

      int count_error = 0;

      // 处理失败的原因

      List<ResultInfo>msgs_error = newArrayList<ResultInfo>();

 

      for (int i = 0; i < count;i++) {

         // 定义异常信息

         ResultInforesultInfo = null;

         // 根据选中行的序号获取要处理的业务数据(单个)

         YycgdmxCustomyycgdmxCustom = list.get(indexs[i]);

         Stringypxxid = yycgdmxCustom.getYpxxid();// 页面中传入的参数

         Stringusergysid = yycgdmxCustom.getUsergysid();

         try {

            cgdService.insertYycgdmx(yycgdid,ypxxid, usergysid);

         }catch(Exception e) {

            e.printStackTrace();

            // 进行异常解析

            if (e instanceofExceptionResultInfo) {// 自定义异常

                resultInfo= ((ExceptionResultInfo) e).getResultInfo();

            }else{

                resultInfo= ResultUtil.createFail(Config.MESSAGE, 900,

                      null);

            }

 

         }

         if (resultInfo == null) {// 执行成功

            count_success++;

         }else{

            count_error++;

            // 记录失败的原因

            msgs_error.add(resultInfo);

         }

 

      }

      // 提示用户成功数量、失败数量、失败原因

      return ResultUtil.createSubmitResult(// 并返回详细信息

            ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[] {

                   count_success,count_error }), msgs_error);

 

   }

 

1.2.4     页面

 

 

药品id:多个参数(需要在datagrid的列中定义)

供货商id:多个参数(需要在datagrid的列中定义)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值