Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java =================================================================== diff -u -r14348 -r14355 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14348) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/service/PackingManagerImpl.java (.../PackingManagerImpl.java) (revision 14355) @@ -2401,15 +2401,18 @@ } /** * 装配时扣减材料(一次性物品)库存 + * @param needPackingAmount 器械包装配数量 * @param td 器械包定义 * @param disposableGoods 一次性物品定义 - * @param amount 待扣减数量 + * @param diposableGoodsAmount 待扣减一次性物品数量 * @param config 科室供应室配置 * @param packingRecordOutItemList 装配器械包后扣减一次性物品明细 * @param diposableGoodsItemList 装配器械包后扣减一次性物品详细明细 - * @return + * @return JSONObject + * @author shuyongfu + * @since 2016-07-28 */ - private JSONObject outDisposableGoodsStock(TousseDefinition td , DisposableGoods disposableGoods , Integer amount,SupplyRoomConfig config, + private JSONObject outDisposableGoodsStock(int needPackingAmount ,TousseDefinition td , DisposableGoods disposableGoods , Integer diposableGoodsAmount,SupplyRoomConfig config, List packingRecordOutItemList ,List diposableGoodsItemList) throws SQLException{ JSONObject jsonObject = new JSONObject(); jsonObject.put("success", true); @@ -2439,8 +2442,10 @@ } sql += " order by db.expDate"; - int needOutAmount = amount.intValue(); - int sumAmount = objectDao.countBySql(sumAmountSql); + //该一次性物品总的装配数量 + int totalOutAmount = needPackingAmount * diposableGoodsAmount.intValue(); + int needOutAmount = totalOutAmount;//待装配数量(可能会动态运算) + int sumAmount = objectDao.countBySql(sumAmountSql);//实际库存中的装配数量 if(sumAmount < needOutAmount){ jsonObject.put("success", false); jsonObject.put("type", "stockNotEnough"); @@ -2450,7 +2455,7 @@ PackingRecordOutItem outItem = new PackingRecordOutItem(); outItem.setTousseDefinitionId(td.getId()); outItem.setTousseName(td.getName()); - outItem.setAmount(amount); + outItem.setAmount(totalOutAmount); outItem.setDisposableGoodsId(disposableGoodsId); outItem.setDisposableGoodsName(disposableGoodsName); objectDao.saveOrUpdate(outItem); @@ -2709,11 +2714,12 @@ List packingRecordOutItemList = null; List diposableGoodsItemList = null; /* - * 先判断装配任务对应的器械包定义是否需要扣一次性物品库存 + * 先判断装配任务对应的器械包定义是否需要扣一次性物品库存(目前只针对普通器械包和敷料包进行扣减,后期在器械包定义的页界加以限制,其它类型的器械包定义的装配扣一次性物品库存的属性只能为否) */ if(CollectionUtils.isNotEmpty(packingTasks)){ - //如果该包定义需要扣减一次性物品库存的话 - if(TousseDefinition.STR_YES.equals(td.getAutoOutStockForPacking())){ + //如果该包定义的类型为器械包或消毒物品或配置需要扣减一次性物品库存的话 + if((TousseDefinition.PACKAGE_TYPE_INSIDE.equals(td.getTousseType()) || TousseDefinition.PACKAGE_TYPE_DRESSING.equals(td.getTousseType())) + && TousseDefinition.STR_YES.equals(td.getAutoOutStockForPacking())){ //判断对应的各一次性是否库存数量是否够扣,如果够扣的话 List diposableGoodsItems = td.getDiposableGoodsItems(); if(CollectionUtils.isNotEmpty(diposableGoodsItems)){ @@ -2722,10 +2728,10 @@ for(DiposableGoodsInstance diposableGoodsInstance : diposableGoodsItems){ //扣减库存 DisposableGoods disposableGoods = diposableGoodsInstance.getDiposableGoods(); - Integer amount = diposableGoodsInstance.getAmount(); - if(disposableGoods != null && amount != null && amount > 0){ + Integer diposableGoodsAmount = diposableGoodsInstance.getAmount(); + if(disposableGoods != null && diposableGoodsAmount != null && diposableGoodsAmount > 0){ try { - json = outDisposableGoodsStock(td, disposableGoods , amount , supplyRoomConfigParams, + json = outDisposableGoodsStock(needPackingAmount , td, disposableGoods , diposableGoodsAmount , supplyRoomConfigParams, packingRecordOutItemList , diposableGoodsItemList); } catch (SQLException e) { // TODO Auto-generated catch block