采购单入库操作
2015-12-10 16:50
267 查看
入库:
第一步:查询待入库的药品信息
1、对已发货未入库 药品信息进行入库操作。
2、只对本医院发过来的药品进行入库。(注意操作范围的控制)
医院查询发货列表 医院只查询本医院采购信息由于查询的不直一个采购单所以要用YycgdCustom对象
本医院只查询本医院的发货列表
药品的采购状态应该为 “已发货” 2
接口参数: 医院id 年份 ,包装类
返回:采购单明细列表
查询内容:
本医院曾经下的采购单药品明细信息。
采购状态:已发货
第二步:执行入库提交
采用批量提交方法:
提交数据包括:yycgdid(采购单id)、ypxxid(药品信息id)、入库量、
入库金额 、发票号或入库单号 、药品批号 、药品有效期
将页面提交数据传入action的:List yycgdrk s中。
数据库操作:
更新医药采购单明细表的采购状态字段
插入新记录到采购单入库表:入库量、入库金额 、发票号或入库单号 、药品批号 、药品有效期
入库数据表:
yycgdmx(yycgdid+ypxxid)
采购单明细表
思考:
采购单明细表也是以采购单id和药品信息id作为唯一的主键,能否将入库的信息(入库量、入库金额,发票号。。)在采购单明细表加字段,还是新建一张入库表???
*如果在采购单明细表加字段,那么入库的相关信息全部都要设置为空,会有很大的安全问题。另外一个主要的原因是入库是单独一个业务,后边可能会有针对入库的其它业务操作,比如:入库审核、入库校验等等,为了保证系统的扩展性单独创建一张入库表。
新建一张入库表:
id、yycgdid,ypxxid,
入库量
入库金额
发票号或入库单号
药品批号
药品有效期
入库表按照年创建,每年创建一张入库表。表名:yycgdrk+4 位年,入库表年份与采购单年份对应。
Dao
参考采购单受理
Service
Action
第一步:查询待入库的药品信息
1、对已发货未入库 药品信息进行入库操作。
2、只对本医院发过来的药品进行入库。(注意操作范围的控制)
医院查询发货列表 医院只查询本医院采购信息由于查询的不直一个采购单所以要用YycgdCustom对象
本医院只查询本医院的发货列表
药品的采购状态应该为 “已发货” 2
接口参数: 医院id 年份 ,包装类
返回:采购单明细列表
查询内容:
本医院曾经下的采购单药品明细信息。
采购状态:已发货
第二步:执行入库提交
采用批量提交方法:
提交数据包括:yycgdid(采购单id)、ypxxid(药品信息id)、入库量、
入库金额 、发票号或入库单号 、药品批号 、药品有效期
将页面提交数据传入action的:List yycgdrk s中。
数据库操作:
更新医药采购单明细表的采购状态字段
插入新记录到采购单入库表:入库量、入库金额 、发票号或入库单号 、药品批号 、药品有效期
入库数据表:
yycgdmx(yycgdid+ypxxid)
采购单明细表
思考:
采购单明细表也是以采购单id和药品信息id作为唯一的主键,能否将入库的信息(入库量、入库金额,发票号。。)在采购单明细表加字段,还是新建一张入库表???
*如果在采购单明细表加字段,那么入库的相关信息全部都要设置为空,会有很大的安全问题。另外一个主要的原因是入库是单独一个业务,后边可能会有针对入库的其它业务操作,比如:入库审核、入库校验等等,为了保证系统的扩展性单独创建一张入库表。
新建一张入库表:
id、yycgdid,ypxxid,
入库量
入库金额
发票号或入库单号
药品批号
药品有效期
入库表按照年创建,每年创建一张入库表。表名:yycgdrk+4 位年,入库表年份与采购单年份对应。
Dao
参考采购单受理
Service
// 医院查询已发货采购单列表 public List<YycgdmxCustom> findYycgdReceivceList(String useryyid, String year, YycgdQueryVo yycgdQueryVo) throws Exception { // 放入医院id 医院只查询本医院采购信息由于查询的不直一个采购单所以要用YycgdCustom对象 YycgdCustom yycgdCustom = yycgdQueryVo.getYycgdCustom(); yycgdCustom = yycgdCustom != null ? yycgdCustom : new YycgdCustom(); yycgdCustom.setUseryyid(useryyid); yycgdQueryVo.setYycgdCustom(yycgdCustom); // 采购单状态 String zt = "2"; YycgdmxCustom yycgdmxCustom = yycgdQueryVo.getYycgdmxCustom(); yycgdmxCustom = yycgdmxCustom != null ? yycgdmxCustom : new YycgdmxCustom(); yycgdmxCustom.setCgzt(zt); yycgdQueryVo.setYycgdmxCustom(yycgdmxCustom); yycgdQueryVo.setBusinessyear(year); return yycgdMapperCustom.findYycgdmxList(yycgdQueryVo); } // 医院查询已发货采购单列表数目 @Override public int findYycgdReceivceCount(String useryyid, String year, YycgdQueryVo yycgdQueryVo) throws Exception { // 放入医院id 医院只查询本医院采购信息由于查询的不直一个采购单所以要用YycgdCustom对象 YycgdCustom yycgdCustom = yycgdQueryVo.getYycgdCustom(); yycgdCustom = yycgdCustom != null ? yycgdCustom : new YycgdCustom(); yycgdCustom.setUseryyid(useryyid); yycgdQueryVo.setYycgdCustom(yycgdCustom); // 采购单状态 String zt = "2"; YycgdmxCustom yycgdmxCustom = yycgdQueryVo.getYycgdmxCustom(); yycgdmxCustom = yycgdmxCustom != null ? yycgdmxCustom : new YycgdmxCustom(); yycgdmxCustom.setCgzt(zt); yycgdQueryVo.setYycgdmxCustom(yycgdmxCustom); yycgdQueryVo.setBusinessyear(year); return 0; } // 采购单入库操作(医院) @Override public void saveYycgdrk(String yycgdid, String ypxxid, YycgdrkCustom yycgdrkCustom) throws Exception { // 年份 String year = yycgdid.substring(0, 4); // 采购单药品明细状态为“已发货”,方可入库 Yycgdmx yycgdmx = this.findYycgdmxByYycgdIdAndYpxxId(yycgdid, ypxxid); if (yycgdmx == null) { // 提示:找不到采购药品明细记录 ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 509, null)); } // 采购状态 String cgzt = yycgdmx.getCgzt(); if (!cgzt.equals("2")) { // 提示:采购药品在已送货时方可入库 ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 562, null)); } // 入库量小于等于采购量方可入库 Integer cgl = yycgdmx.getCgl(); Integer rkl = yycgdrkCustom.getRkl(); if (rkl > cgl) { ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 519, null)); } // 更新采购单明细表状态为“已入库” yycgdmx.setCgzt("3");// 更新为已入库 // 设置年份 yycgdmx.setBusinessyear(year); yycgdmxMapper.updateByPrimaryKey(yycgdmx); Yycgdrk yycgdrk = new Yycgdrk(); // 将页面提交的入库信息设置到yycgdrk BeanUtils.copyProperties(yycgdrkCustom, yycgdrk); yycgdrk.setBusinessyear(year); yycgdrk.setId(UUIDBuild.getUUID());// 主键 yycgdrk.setYycgdid(yycgdid);// 采购单id yycgdrk.setYpxxid(ypxxid);// 药品id yycgdrk.setRktime(MyUtil.getNowDate());// 入库时间 // 入库金额= 入库量*交易价 // 采购药品交易价 Float jyjg = yycgdmx.getJyjg(); Float rkje = jyjg * rkl; yycgdrk.setRkl(rkl); // 设置入库金额 yycgdrk.setRkje(rkje); // 采购状态设置固定值 为3已入库,此字段为统计分析时数据聚合使用 yycgdrk.setCgzt("3"); yycgdrkMapper.insert(yycgdrk); }
Action
// 采购入库查询界面 @RequestMapping("/receiveyycgd") public String receiveyycgd(Model model) throws Exception { // 当前年份 model.addAttribute("year", MyUtil.get_YYYY(MyUtil.getDate())); return "/business/cgd/receiveyycgd"; } // 采购单入库列表结果集,json @RequestMapping("/receiveyycgd_result") public @ResponseBody DataGridResultInfo receiveyycgd_result(// HttpSession session, ActiveUser activeUser, String year,// 年份 YycgdQueryVo yycgdQueryVo,// 查询条件 int page, int rows) throws Exception { // 当前用户为医院 String useryyid = activeUser.getSysid();// 单位id // 列表的总数 int total = cgdService.findYycgdReceivceCount(useryyid, year, yycgdQueryVo); // 分页参数 PageQuery pageQuery = new PageQuery(); pageQuery.setPageParams(total, rows, page); yycgdQueryVo.setPageQuery(pageQuery);// 设置分页参数 // 分页查询列表 List<YycgdmxCustom> list = cgdService.findYycgdReceivceList(useryyid, year, yycgdQueryVo); DataGridResultInfo dataGridResultInfo = new DataGridResultInfo(); dataGridResultInfo.setTotal(total); dataGridResultInfo.setRows(list); return dataGridResultInfo; } //采购单入库提交 @RequestMapping("/receiveyycgdsubmit") public @ResponseBody SubmitResultInfo receiveyycgdsubmit(YycgdQueryVo yycgdQueryVo, int[] indexs // 页面选择序号 ) throws Exception { // 页面提交的业务数据(多个),要处理的业务数据,页面中传入的参数 List<YycgdrkCustom> list = yycgdQueryVo.getYycgdrkCustoms(); // 处理数据的总数 int count = indexs.length; // 处理成功的数量 int count_success = 0; // 处理失败的数量 int count_error = 0; // 处理失败的原因 List<ResultInfo> msgs_error = new ArrayList<ResultInfo>(); for (int i = 0; i < count; i++) { ResultInfo resultInfo = null; // 根据选中行的序号获取要处理的业务数据(单个) YycgdrkCustom yycgdrkCustom = list.get(indexs[i]); // 采购单id String yycgdid = yycgdrkCustom.getYycgdid(); // 药品id String ypxxid = yycgdrkCustom.getYpxxid(); System.out.println(yycgdid+"_____"+ypxxid); try { cgdService.saveYycgdrk(yycgdid, ypxxid, yycgdrkCustom); } 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++; } else { count_error++; // 记录失败原因 msgs_error.add(resultInfo); } } // 提示用户成功数量、失败数量、失败原因 // 改成返回详细信息 return ResultUtil.createSubmitResult( ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[] { count_success, count_error }), msgs_error); }
相关文章推荐
- watch os 语音输入
- php webp转jpg
- OCJP标准题库试题之————第二次
- Android selector 失效
- shell之cut
- Android的线程和线程池
- Mybatis 教程
- Linux(Centos)之安装Redis及注意事项
- XAML基础(一)
- 在局域网络内的某台主机用ping命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是
- 校验业务与主逻辑解耦设计探讨与实践(AOP篇)
- Linux学习笔记(二十二、管道符)
- Easy UI Combotree选中项样式问题的hack
- 在Ubuntu下解决 adb devices :???????????? no permissions 方法
- 端口映射,数据转发工具
- [Andriod官方API指南]连接之蓝牙
- UIButton文字位置显示
- MySQL慢查询日志
- dp重拾-01背包--HDU 2602
- 无向图的深度优先搜索(最终版)