Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r40599 -r40950 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 40599) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 40950) @@ -519,6 +519,7 @@ * @param useAssetsBelong 使用资产归属过滤 * @param tousseType 制定查询的包类型 只有isSeachTousse=true 才有效 * @param tousseDefinitionBelongDepartCode 包定义所属科室 + * @param appCodeForBlacklistWhitelist 使用黑白名单的科室 * @return */ public List> searchTousseOrDiposableGoodsBySpellAndWbCode( @@ -528,7 +529,7 @@ boolean includeForeignTousse, String pageIndex, String countOfLI, boolean showDisableGoods, boolean showExternalCodeOfDisposableGoods,String settleAccountsDepartCoding,String handleDepartCode,String specifyDisposableTypes,boolean useAssetsBelong - , String tousseType, String tousseDefinitionBelongDepartCode); + , String tousseType, String tousseDefinitionBelongDepartCode, String appCodeForBlacklistWhitelist); /** * 根据包定义查找包定义,因为可能会存在多个,这里取id最大的. * @param tousseDefinition Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r40751 -r40950 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 40751) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 40950) @@ -111,6 +111,7 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.useRecord.urgentreservation.UrgentReservationGroupTousse; import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager; +import com.forgon.disinfectsystem.goodFilterConfig.enums.ListType; import com.forgon.disinfectsystem.goodFilterConfig.service.GoodFilterConfigManager; import com.forgon.disinfectsystem.goodsBindingConfig.entity.GoodsBindingConfig; import com.forgon.disinfectsystem.goodsBindingConfig.enums.BidirectionalStatus; @@ -1784,8 +1785,35 @@ boolean showDisableGoods, boolean showExternalCodeOfDisposableGoods, String settleAccountsDepartCoding, String handleDepartCode, - String specifyDisposableTypes, boolean useAssetsBelong, String tousseType, String tousseDefinitionBelongDepartCode) { + String specifyDisposableTypes, boolean useAssetsBelong, String tousseType, String tousseDefinitionBelongDepartCode, String appCodeForBlacklistWhitelist) { + + String appIsUseBwList = CssdUtils.getSystemSetConfigByName("appIsUseBwList"); + String blacklistWhiteSql = ""; + appIsUseBwList = "true"; + if (StringUtils.isNotBlank(appIsUseBwList) && "true".equals(appIsUseBwList)){ + // 根据申请科室编码查找黑白名单并根据黑白名单过滤物品(ZJJSRM-2) + if (StringUtils.isNotBlank(appCodeForBlacklistWhitelist)){ + List whiteList = goodFilterConfigManagerImpl.findFilterGoodByType(ListType.WHITE, appCodeForBlacklistWhitelist); + List blackList = goodFilterConfigManagerImpl.findFilterGoodByType(ListType.BLACK, appCodeForBlacklistWhitelist); + if (CollectionUtils.isNotEmpty(whiteList)) { + if (CollectionUtils.isNotEmpty(blackList)) { + //如果黑白名单不为空,则用白名单减去黑名单 + whiteList = (List) CollectionUtils.subtract(whiteList, blackList); + } + if (whiteList.size() == 0) { + //如果白名单减黑名单等于0,则用黑名单过滤 + blacklistWhiteSql = SqlUtils.getNonStringFieldNotInSql("po.id", blackList); + }else{ + //使用白名单减去黑名单后的名单过滤 + blacklistWhiteSql = SqlUtils.getInLongListSql("po.id", whiteList); + } + }else if(CollectionUtils.isNotEmpty(blackList)){//如果只有黑名单,则用黑名单过滤 + //如果白名单减黑名单等于0,则用黑名单过滤 + blacklistWhiteSql = SqlUtils.getNonStringFieldNotInSql("po.id", blackList); + } + } + } // 有些输入法会输入"'",要过滤掉,不过滤执行sql会报异常 if(StringUtils.isNotBlank(simpleSpell)){ simpleSpell = simpleSpell.replace("'", ""); @@ -1799,6 +1827,7 @@ sql += " and po.handlerDepartCode = '" + handlerDepartCode + "' "; } }*/ + sql += blacklistWhiteSql; List> mapList = new ArrayList>(); if (isSeachTousse) { if (onlySearchRecyclingTousse){ @@ -2453,18 +2482,9 @@ simpleSpell, true, false, true , !showNonRecyclableTousseInRecycle,false, false, pages, countOfLI,false ,false,null,null,null,true,tousseType - , onlyQueryAppCode != null && onlyQueryAppCode?appCode:null); + , onlyQueryAppCode != null && onlyQueryAppCode?appCode:null, appCode); JSONArray array = new JSONArray(); int countOfLIInt = Integer.valueOf(countOfLI); - String appIsUseBwList = CssdUtils.getSystemSetConfigByName("appIsUseBwList"); - if (StringUtils.isNotBlank(appIsUseBwList) && "true".equals(appIsUseBwList)){ - // 根据申请科室编码查找黑白名单并根据黑白名单过滤物品(ZJJSRM-2) - if (StringUtils.isNotBlank(appCode)){ - logger.debug("黑白名单过滤前大小:" + mapList.size()); - mapList = goodFilterConfigManagerImpl.handleBWList(mapList, appCode); - logger.debug("黑白名单过滤后大小:" + mapList.size()); - } - } if (mapList != null) { int count = mapList.size(); if(countOfLIInt > 0){ @@ -8800,6 +8820,6 @@ boolean showExternalCodeOfDisposableGoods, String settleAccountsDepartCoding, String handleDepartCode, String specifyDisposableTypes, boolean useAssetsBelong, String tousseType) { - return searchTousseOrDiposableGoodsBySpellAndWbCode(simpleSpell, isSeachTousse, includeCoustomTousse, searchTousseBelonged, onlySearchRecyclingTousse, displayPrice, includeForeignTousse, pageIndex, countOfLI, showDisableGoods, showExternalCodeOfDisposableGoods, settleAccountsDepartCoding, handleDepartCode, specifyDisposableTypes, useAssetsBelong, tousseType, null); + return searchTousseOrDiposableGoodsBySpellAndWbCode(simpleSpell, isSeachTousse, includeCoustomTousse, searchTousseBelonged, onlySearchRecyclingTousse, displayPrice, includeForeignTousse, pageIndex, countOfLI, showDisableGoods, showExternalCodeOfDisposableGoods, settleAccountsDepartCoding, handleDepartCode, specifyDisposableTypes, useAssetsBelong, tousseType, null, null); } }