您的位置:首页 > 其它

采购单入库操作

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

// 医院查询已发货采购单列表
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: