Index: ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java =================================================================== diff -u -r20831 -r20833 --- ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java (.../ExpensiveGoodsStockManagerImpl.java) (revision 20831) +++ ssts-expensivegoods/src/main/java/com/forgon/disinfectsystem/expensiveGoods/service/ExpensiveGoodsStockManagerImpl.java (.../ExpensiveGoodsStockManagerImpl.java) (revision 20833) @@ -338,143 +338,5 @@ } return storage; } - - @Override - public void lockAndGetExpensiveGoodsResources( - ExpensiveGoodsServiceContext expensiveGoodssServiceContext) { - expensiveGoodssServiceContext.validateParams(); - String warehouseId = expensiveGoodssServiceContext.getWarehouseId(); - Set expensiveGoodssIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsIdsSet(); - Set diposableGoodsStockIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsStockIdsSet(); - Set expensiveDisposablegoodsIdsSet = expensiveGoodssServiceContext.getExpensiveExpensiveGoodsIdsSet(); - Set expensiveGoodssBatchIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsBatchIdsSet(); - Set expensiveGoodssBatchStockIDsSet = expensiveGoodssServiceContext.getExpensiveGoodsBatchStockIdsSet(); - Set identificationIdsSet = expensiveGoodssServiceContext.getIdentificationIdsSet(); - Map idToDiposableGoodsMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsMap(); - Map expensiveGoodssIDToExpensiveGoodsStockMap = expensiveGoodssServiceContext.getExpensiveGoodsIDToExpensiveGoodsStockMap(); - Map idToExpensiveGoodsStockMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsStockMap(); - Map idToExpensiveDisposablegoodsMap = expensiveGoodssServiceContext.getIdToExpensiveExpensiveGoodsMap(); - Map barcodeToExpensiveDisposablegoodsMap = expensiveGoodssServiceContext.getBarcodeToExpensiveDisposablegoodsMap(); - Map idToExpensiveGoodsBatchMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsBatchMap(); - Map barcodeToExpensiveGoodsBatchMap = expensiveGoodssServiceContext.getBarcodeToExpensiveGoodsBatchMap(); - Map idToExpensiveGoodsBatchStockMap = expensiveGoodssServiceContext.getIdToExpensiveGoodsBatchStockMap(); - Map barcodeToExpensiveGoodsBatchStockMap = expensiveGoodssServiceContext.getBarcodeToExpensiveGoodsBatchStockMap(); - Map idToIdentificationMap = expensiveGoodssServiceContext.getIdToIdentificationMap(); - - // 锁定一次性物品 - List expensiveGoodssList = getExpensiveGoodsByExpensiveGoodsIDs_ForUpdate(expensiveGoodssIDsSet); - if (expensiveGoodssList == null - || expensiveGoodssList.size() != expensiveGoodssIDsSet.size()) { - throw new RuntimeException("某些物品已被删除!"); - } - for (ExpensiveGoods expensiveGoodss : expensiveGoodssList) { - idToDiposableGoodsMap.put(expensiveGoodss.getId(), expensiveGoodss); - } - // 获取物品库存 - List expensiveGoodssStockList = null; - if(expensiveGoodssServiceContext.sceneInvoiceAutoDeduction()){ - // 发货自动扣减库存,根据物品定义id和仓库来获取物品库存 - Date validUntil = new Date(); - String validUntilSql = " " - + dateQueryAdapter.dateConverAdapter2(com.forgon.Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMMSS.format(validUntil), - "yyyy-mm-dd HH24:MI:SS"); - String validUntilStr = String.format(" ( %s > %s) ", "b.expDate", validUntilSql); - String queryString = String - .format("select distinct po from %s po inner join fetch po.goodsBatchs b inner join fetch b.identifications i where %s and i.amount>0 and po.warehouseID=%s and (%s) ", - ExpensiveGoodsStock.class.getSimpleName(),validUntilStr,warehouseId,SqlUtils.getStringFieldInCollectionsPredicate("po.expensiveGoodssID", expensiveGoodssIDsSet)); - expensiveGoodssStockList = objectDao.findByHql(queryString); - }else{ - if (!diposableGoodsStockIDsSet.isEmpty()) { - expensiveGoodssStockList = getExpensiveGoodsStockByExpensiveGoodsStockIDs(diposableGoodsStockIDsSet); - if (expensiveGoodssStockList == null - || expensiveGoodssStockList.size() != diposableGoodsStockIDsSet - .size()) { - throw new RuntimeException("某些物品库存已被删除!"); - } - } - } - // 设置物品库存到map - if(expensiveGoodssStockList != null){ - expensiveGoodssServiceContext.setExpensiveGoodsStockList(expensiveGoodssStockList); - for (ExpensiveGoodsStock expensiveGoodssStock : expensiveGoodssStockList) { - idToExpensiveGoodsStockMap.put(expensiveGoodssStock.getId(), expensiveGoodssStock); - expensiveGoodssIDToExpensiveGoodsStockMap.put(expensiveGoodssStock.getExpensiveGoodsID(), expensiveGoodssStock); - } - } - - //设置高值耗材 - if (!expensiveDisposablegoodsIdsSet.isEmpty()) { - List expensiveDisposablegoodsList = getExpensiveDisposablegoodsByIds(expensiveDisposablegoodsIdsSet); - if (expensiveDisposablegoodsList == null - || expensiveDisposablegoodsList.size() != expensiveDisposablegoodsIdsSet - .size()) { - throw new RuntimeException("某些高值耗材已被删除!"); - } - expensiveGoodssServiceContext.setExpensiveDisposablegoodsList(expensiveDisposablegoodsList); - if (expensiveDisposablegoodsList != null) { - for (ExpensiveDisposablegoods expensiveDisposablegoods : expensiveDisposablegoodsList) { - barcodeToExpensiveDisposablegoodsMap.put(expensiveDisposablegoods.getBarcode(), expensiveDisposablegoods); - idToExpensiveDisposablegoodsMap.put(expensiveDisposablegoods.getId(), expensiveDisposablegoods); - } - } - } - - // 加载所有的批次定义 - if(!expensiveGoodssBatchIDsSet.isEmpty()){ - String getExpensiveGoodsBatchSql = String.format(" where %s ", - SqlUtils.getNonStringFieldInCollectionsPredicate("po.id", expensiveGoodssBatchIDsSet)); - List expensiveGoodssBatchs = objectDao.findBySql(ExpensiveGoodsBatch.class.getSimpleName(), getExpensiveGoodsBatchSql); - if (expensiveGoodssBatchs == null - || expensiveGoodssBatchs.size() != expensiveGoodssBatchIDsSet - .size()) { - throw new RuntimeException("某些批次定义已被删除!"); - } - if (expensiveGoodssBatchs != null) { - for (ExpensiveGoodsBatch expensiveGoodssBatch : expensiveGoodssBatchs) { - idToExpensiveGoodsBatchMap.put(expensiveGoodssBatch.getId(), expensiveGoodssBatch); - barcodeToExpensiveGoodsBatchMap.put(expensiveGoodssBatch.getBarcode(), expensiveGoodssBatch); - } - } - } - - // 获取批次库存 - if(!expensiveGoodssBatchStockIDsSet.isEmpty()){ - String batchStockSql = String.format(" where %s ", SqlUtils - .getStringFieldInCollectionsPredicate("po.id", - expensiveGoodssBatchStockIDsSet)); - List expensiveGoodssBatchStocks = objectDao - .findBySql(ExpensiveGoodsBatchStock.class.getSimpleName(), - batchStockSql); - - if (expensiveGoodssBatchStocks == null || expensiveGoodssBatchStocks.size() != expensiveGoodssBatchStockIDsSet.size()) { - throw new RuntimeException("某些批次库存已被删除!"); - } - expensiveGoodssServiceContext.setExpensiveGoodsBatchStockList(expensiveGoodssBatchStocks); - for (ExpensiveGoodsBatchStock diposableGoodBatchStock : expensiveGoodssBatchStocks) { - idToExpensiveGoodsBatchStockMap.put(diposableGoodBatchStock.getId(), diposableGoodBatchStock); - barcodeToExpensiveGoodsBatchStockMap.put(diposableGoodBatchStock.getBarcode(), diposableGoodBatchStock); - } - } - - //设置一次性物品标识号 - if (!identificationIdsSet.isEmpty()) { - String getIdentificationSql = String.format(" where %s ", SqlUtils - .getNonStringFieldInCollectionsPredicate("po.id", - identificationIdsSet)); - List identifications = objectDao - .findBySql( - ExpensiveGoodsIdentification.class.getSimpleName(), - getIdentificationSql); - - if (identifications == null - || identifications.size() != identificationIdsSet.size()) { - throw new RuntimeException("某些标识号已被删除!"); - } - for (ExpensiveGoodsIdentification identificationOfDiposableGoods : identifications) { - idToIdentificationMap.put(identificationOfDiposableGoods.getId(), identificationOfDiposableGoods); - } - } - } - }