Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java =================================================================== diff -u -r37546 -r37569 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 37546) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 37569) @@ -36,14 +36,14 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.SetCode_Barcode; import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; import com.forgon.disinfectsystem.common.CssdUtils; -import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance; import com.forgon.disinfectsystem.entity.basedatamanager.materialdefinition.MaterialDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.sterilizer.Sterilizer; @@ -65,6 +65,7 @@ import com.forgon.disinfectsystem.packing.service.PackingManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; +import com.forgon.security.service.OperationManager; import com.forgon.timeout.model.TimeoutSetting; import com.forgon.timeout.service.TimeoutManager; import com.forgon.tools.SqlBuilder; @@ -112,6 +113,12 @@ private OrgUnitManager orgUnitManager; + private OperationManager operationManager; + + public void setOperationManager(OperationManager operationManager) { + this.operationManager = operationManager; + } + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { this.orgUnitManager = orgUnitManager; } @@ -449,11 +456,23 @@ currentOrgUnitCode = sqlWhereParamMap.get("deptCode"); orgUnitCodingFromSupplyRoomConfig = currentOrgUnitCode; } + String currentOrgUnitCodeSql = ""; + String orgUnitCodingFromSupplyRoomConfigSql = ""; + //查看子科室器械包的权限NYSY-62 + boolean searchChildOrgUnitTousseInstance = operationManager.isCurrentUserHaveAnyOperation("SSTS_TousseInstanceManager_SelectChildren"); + if(searchChildOrgUnitTousseInstance){ + currentOrgUnitCodeSql = String.format("select orgUnitCoding from %s where parent.orgUnitCoding = '%s' or orgUnitCoding = '%s'", OrgUnit.class.getSimpleName(), currentOrgUnitCode, currentOrgUnitCode); + orgUnitCodingFromSupplyRoomConfigSql = currentOrgUnitCodeSql; + }else{ + currentOrgUnitCodeSql = String.format("'%s'", currentOrgUnitCode); + orgUnitCodingFromSupplyRoomConfigSql = String.format("'%s'", orgUnitCodingFromSupplyRoomConfig); + } + if(StringUtils.isNotBlank(currentOrgUnitCode)){ - String warehousePredicate = String.format("select id from %s where orgUnitCode = '%s' ", - WareHouse.class.getSimpleName(),currentOrgUnitCode); - sqlBuilder.append(String.format(" AND (po.orgUnitCoding = '%s' OR po.location='%s' OR po.wareHouseId in (%s))", - orgUnitCodingFromSupplyRoomConfig,currentOrgUnitCode,warehousePredicate)); + String warehousePredicate = String.format("select id from %s where orgUnitCode in (%s) ", + WareHouse.class.getSimpleName(),currentOrgUnitCodeSql); + sqlBuilder.append(String.format(" AND (po.orgUnitCoding in (%s) OR po.location in (%s) OR po.wareHouseId in (%s))", + orgUnitCodingFromSupplyRoomConfigSql,currentOrgUnitCodeSql,warehousePredicate)); }else{ sqlBuilder.append(String.format(" AND 1=0 ")); }