Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r29685 -r31073 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 29685) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 31073) @@ -570,4 +570,12 @@ * 如果不存在,则创建一张新的器械包申请单并打开。 */ public JSONObject limitTousseApply(); + + /** + * 计算器械包的库存数量(SZYK-35) + * @param tousseDefinitionIdList + * @param cssdOrgUnitCode + */ + public Map calStorageForTousseDefinition(List tousseDefinitionIdList, String cssdOrgUnitCode); + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java =================================================================== diff -u -r30923 -r31073 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 30923) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 31073) @@ -55,15 +55,13 @@ import com.forgon.disinfectsystem.entity.basedatamanager.departmentapplicationtemplate.TousseDefinitionTemplateItem; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceItem; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; import com.forgon.disinfectsystem.inventorymanagement.model.HrpInvoicePlan; -import com.forgon.disinfectsystem.project.model.ProjectDict; import com.forgon.disinfectsystem.project.service.ProjectManager; import com.forgon.disinfectsystem.recyclingapplication.result.LoadTousseLeaseItemsResultBuilder; import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanManager; @@ -664,8 +662,8 @@ ConfigUtils.getSystemSetConfigByNameBool("showTousseStorageAmountOfGoodsReservation"); if(showTousseStorageAmountOfGoodsReservation && StringUtils.equals(applicationFormType, InvoicePlan.TYPE_GOODS_RESERVATION_FORM)){ - left = calStorageForTousseDefinition(left); - right = calStorageForTousseDefinition(right); + left = calStorageForTousseDefinition(left, handleDepartCoding); + right = calStorageForTousseDefinition(right, handleDepartCoding); } leftStore.put("children", left); @@ -684,7 +682,7 @@ * 需要开启配置项showTousseStorageAmountOfGoodsReservation:true * @param templateJson */ - private String calStorageForTousseDefinition(String templateJson) { + private String calStorageForTousseDefinition(String templateJson, String cssdOrgUnitCode) { JSONArray jsonArray = JSONArray.fromObject(templateJson); List tousseDefinitionIdList = new ArrayList(); for (int i = 0, size = jsonArray.size(); i < size; i++) { @@ -698,25 +696,7 @@ if(CollectionUtils.isEmpty(tousseDefinitionIdList)){ return templateJson; } - Map storageMap = new HashMap(); - 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;", - SqlUtils.getNonStringFieldInLargeCollectionsPredicate("td.ancestorID", tousseDefinitionIdList), - TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, - TousseInstance.STATUS_DISINFECTED); - ResultSet rs = null; - rs = objectDao.executeSql(sql); - try { - while(rs.next()){ - Integer storage = rs.getInt("storage"); - Long tdId = rs.getLong("ancestorID"); - storageMap.put(tdId, storage); - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } + Map storageMap = recyclingApplicationManager.calStorageForTousseDefinition(tousseDefinitionIdList, cssdOrgUnitCode); if(!storageMap.isEmpty()){ for (int i = 0, size = jsonArray.size(); i < size; i++) { JSONObject jsonObject = jsonArray.optJSONObject(i); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r31071 -r31073 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31071) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 31073) @@ -4421,35 +4421,7 @@ } 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')) %s group by td.ancestorID;", - SqlUtils.getNonStringFieldInLargeCollectionsPredicate("td.ancestorID", tousseDefinitionIdList), - TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, - TousseInstance.STATUS_DISINFECTED, locationSql); - ResultSet rs = null; - rs = objectDao.executeSql(sql); - try { - while(rs.next()){ - Integer storage = rs.getInt("storage"); - Long tdId = rs.getLong("ancestorID"); - storageMap.put(tdId, storage); - } - } catch (SQLException e) { - e.printStackTrace(); - } finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - + Map storageMap = this.calStorageForTousseDefinition(tousseDefinitionIdList, recyclingApplication.getHandleDepartCoding()); for (TousseItemVo tousseItemVo : srcTousseItemVoList) { if(StringUtils.equals(tousseItemVo.getDiposable(), Constants.DIPOSABLE_TYPE_NO)){ Integer storage = storageMap.get(tousseItemVo.getTousseDefinitionID()); @@ -4477,19 +4449,10 @@ // for (TousseItemVo tousseItemVo : srcTousseItemVoList) { - // 只显示当前供应室的库存 - 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(*) from TousseInstance ti inner join TousseDefinition td on td.id=ti.tousseDefinition_id " - + "where td.ancestorID=%s and (ti.status='%s' or (td.tousseType='%s' and status='%s') %s )", + + "where td.ancestorID=%s and (ti.status='%s' or (td.tousseType='%s' and status='%s'))", tousseItemVo.getAncestorId(),TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, - TousseInstance.STATUS_DISINFECTED, locationSql); + TousseInstance.STATUS_DISINFECTED); int existingAmount = objectDao.countBySql(sql); Integer amount = tousseItemVo.getAmount(); if(amount > existingAmount){ @@ -9332,4 +9295,36 @@ } return JSONUtil.buildJsonObject(true); } + + @Override + public Map calStorageForTousseDefinition( + List tousseDefinitionIdList, String cssdOrgUnitCode) { + Map storageMap = new HashMap(); + String locationSql = ""; + if(StringUtils.isNotEmpty(cssdOrgUnitCode)){ + String warehousePredicate = String.format("select id from %s where orgUnitCode = '%s' ", + WareHouse.class.getSimpleName(),cssdOrgUnitCode); + locationSql = String.format(" AND (ti.orgUnitCoding = '%s' OR ti.location='%s' OR ti.wareHouseId in (%s))", + cssdOrgUnitCode,cssdOrgUnitCode,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')) %s and ti.tousseFixedBarcode = 0 group by td.ancestorID;", + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("td.ancestorID", tousseDefinitionIdList), + TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, + TousseInstance.STATUS_DISINFECTED, locationSql); + ResultSet rs = null; + rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + Integer storage = rs.getInt("storage"); + Long tdId = rs.getLong("ancestorID"); + storageMap.put(tdId, storage); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return storageMap; + } } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r31066 -r31073 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 31066) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 31073) @@ -2262,7 +2262,7 @@ Map storageMap = new HashMap(); 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')) %s group by td.ancestorID;", + + "where %s and (ti.status='%s' or (td.tousseType='%s' and status='%s')) %s and ti.tousseFixedBarcode = 0 group by td.ancestorID;", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("td.ancestorID", tousseDefinitionIds), TousseInstance.STATUS_STERILED,TousseDefinition.PACKAGE_TYPE_DISINFECTION, TousseInstance.STATUS_DISINFECTED, locationSql);