Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java =================================================================== diff -u -r18339 -r18599 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 18339) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 18599) @@ -6,6 +6,7 @@ import java.util.Collection; import java.util.Date; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; @@ -28,6 +29,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntry; import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.basedatamanager.operationRoom.OperationRoom; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; @@ -44,6 +46,7 @@ import com.forgon.tools.SqlBuilder; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.SqlUtils; /** * 仓库manager实现类 @@ -457,11 +460,19 @@ @Override public JSONArray searchWareHouseOrOperationRoom(String spell) { + List supplyRoomConfigList = supplyRoomConfigManager.getSupplyRoomList(SupplyRoomConfig.SUPPLYROOM_TYPE_6); + List orgUnitCodeList = new LinkedList(); + for (SupplyRoomConfig src : supplyRoomConfigList) { + orgUnitCodeList.add(src.getOrgUnitCoding()); + } // 手术间,或者仓库 - String sql1 = String.format(" select w.id, w.name,'仓库' as type,w.orgUnitCode as orgUnitCoding,w.orgUnitName from %s w ", WareHouse.class.getSimpleName()); - String sql2 = String.format(" select o.id,o.operationRoomName as name,'手术间' as type,o.orgUnitCoding,o.orgUnitName from %s o where o.parentOperationRoomId is not null ", OperationRoom.class.getSimpleName(),spell); + String sql1 = String.format(" select w.id, w.name,'仓库' as type,w.orgUnitCode as orgUnitCoding,w.orgUnitName from %s w where 1=1 %s ", + WareHouse.class.getSimpleName(), " and " + SqlUtils.getStringFieldInCollectionsPredicate("w.orgUnitCode", orgUnitCodeList)); + String sql2 = String.format(" select o.id,o.operationRoomName as name,'手术间' as type,o.orgUnitCoding,o.orgUnitName from %s o " + + "where id<>0 and o.id not in(select parentOperationRoomId from %s where id<>0) ", + OperationRoom.class.getSimpleName(),OperationRoom.class.getSimpleName(),spell); if(StringUtils.isNotBlank(spell)){ - sql1 += String.format(" where w.name like '%%%s%%' ", spell); + sql1 += String.format(" and w.name like '%%%s%%' ", spell); sql2 += String.format(" and o.operationRoomName like '%%%s%%' ", spell); } String sql = String.format("select * from ((%s) UNION ALL (%s)) u order by u.name", sql1,sql2);