Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java =================================================================== diff -u -r22112 -r22116 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java (.../ExpensiveGoodsGodownEntryManagerImpl.java) (revision 22112) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsGodownEntryManagerImpl.java (.../ExpensiveGoodsGodownEntryManagerImpl.java) (revision 22116) @@ -1552,12 +1552,17 @@ */ @Override public void godownOutEntryAllPreInInstance(){ - String sql = String.format(" where po.status='%s' and po.entryType='%s' ", ExpensiveGoodsInstance.STATUS_IN_WAREHOUSE,ExpensiveGoodsInstance.ENTRY_TYPE_PREPARE); + String sql = String.format(" where po.entryType='%s' and po.useRecord.id is null ", ExpensiveGoodsInstance.ENTRY_TYPE_PREPARE); // String sql = String.format(" where po.status='%s' ", ExpensiveGoodsInstance.STATUS_PRE_IN_WAREHOUSE); - List list = objectDao.getBySql_ForUpdate2(ExpensiveGoodsInstance.class.getSimpleName(), sql); + + String expensiveGoodsSql = String.format(" where po.id in(select egi.expensiveGoods.id from %s egi where egi.entryType='%s' and egi.useRecord.id is null) ",ExpensiveGoodsInstance.class.getSimpleName(), ExpensiveGoodsInstance.ENTRY_TYPE_PREPARE); + List expensiveGoodsList = objectDao.getBySql_ForUpdate2(ExpensiveGoods.class.getSimpleName(), expensiveGoodsSql); + + List list = objectDao.findBySql(ExpensiveGoodsInstance.class.getSimpleName(), sql); if(CollectionUtils.isEmpty(list)){ throw new RuntimeException("没有需要退库的高值耗材!"); } + Date newDate = new Date(); ExpensiveGoodsGodownEntry entry = new ExpensiveGoodsGodownEntry(); entry.setOperator(AcegiHelper.getLoginUserFullName()); @@ -1593,6 +1598,27 @@ item.setWarehouseName(expensiveGoodsInstance.getWarehouseName()); itemsList.add(item); + // 库存处理 + Long expensiveGoodsModelStockId = expensiveGoodsInstance.getExpensiveGoodsModelStockId(); + Long expensiveGoodsStockId = expensiveGoodsInstance.getExpensiveGoodsStockId(); + if(expensiveGoodsModelStockId == null){ + throw new RuntimeException("型号库存id为空!"); + } + if(expensiveGoodsStockId == null){ + throw new RuntimeException("库存id为空!"); + } + ExpensiveGoodsModelStock expensiveGoodsModelStock = (ExpensiveGoodsModelStock)objectDao.getByProperty(ExpensiveGoodsModelStock.class.getSimpleName(), "id", expensiveGoodsModelStockId); + ExpensiveGoodsStock expensiveGoodsStock = (ExpensiveGoodsStock)objectDao.getByProperty(ExpensiveGoodsStock.class.getSimpleName(), "id", expensiveGoodsStockId); + if(expensiveGoodsModelStock == null){ + throw new RuntimeException("型号库存已被删除!"); + } + if(expensiveGoodsStock == null){ + throw new RuntimeException("库存已被删除!"); + } + expensiveGoodsModelStock.adjustAmount(-1); + expensiveGoodsStock.adjustAmount(-1); + objectDao.update(expensiveGoodsModelStock); + objectDao.update(expensiveGoodsStock); } entry.calculateTotalPrice(); objectDao.save(entry);