Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r31068 -r31071 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31068) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31071) @@ -4180,7 +4180,7 @@ //物品预约单改进为支持显示库存数量以及可限制预约数量不能大于库存数量(已灭菌或者已消毒状态的物品的数量)SZYK-35 boolean notAllowReservationAmountGreaterThanStorageAmount = CssdUtils.getSystemSetConfigByNameBool("notAllowReservationAmountGreaterThanStorageAmount", false); if(notAllowReservationAmountGreaterThanStorageAmount && InvoicePlan.TYPE_GOODS_RESERVATION_FORM.equals(recyclingApplication.getType())){ - JSONObject checkResult = checkTousseAmountInReservation(srcTousseItemVoList); + JSONObject checkResult = checkTousseAmountInReservation(recyclingApplication, srcTousseItemVoList); if(checkResult != null){ return checkResult; } @@ -4406,7 +4406,7 @@ * @return */ private JSONObject checkTousseAmountInReservation( - Collection srcTousseItemVoList) { + RecyclingApplication recyclingApplication, Collection srcTousseItemVoList) { JSONObject obj = null; List tousseDefinitionIdList = new ArrayList(); @@ -4422,11 +4422,20 @@ StringBuffer result = new StringBuffer(); Map storageMap = new HashMap(); + + // 只显示当前供应室的库存 + String locationSql = ""; + if(StringUtils.isNotBlank(recyclingApplication.getHandleDepartCoding())){ + String warehousePredicate = String.format("select id from %s where orgUnitCode = '%s' ", + WareHouse.class.getSimpleName(),recyclingApplication.getHandleDepartCoding()); + locationSql = String.format(" AND (ti.orgUnitCoding = '%s' OR ti.location='%s' OR ti.wareHouseId in (%s))", + recyclingApplication.getHandleDepartCoding(),recyclingApplication.getHandleDepartCoding(),warehousePredicate); + } String sql = String.format("select count(*) storage, td.ancestorID from TousseInstance ti inner join TousseDefinition td on td.id=ti.tousseDefinition_id " - + "where %s and (ti.status='%s' or (td.tousseType='%s' and status='%s')) group by td.ancestorID;", + + "where %s and (ti.status='%s' or (td.tousseType='%s' and status='%s')) %s group by td.ancestorID;", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("td.ancestorID", tousseDefinitionIdList), TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, - TousseInstance.STATUS_DISINFECTED); + TousseInstance.STATUS_DISINFECTED, locationSql); ResultSet rs = null; rs = objectDao.executeSql(sql); try {