Index: ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java =================================================================== diff -u -r13224 -r13387 --- ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java (.../InventoryRecordTableManager.java) (revision 13224) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/inventoryrecord/dwr/table/InventoryRecordTableManager.java (.../InventoryRecordTableManager.java) (revision 13387) @@ -1,7 +1,9 @@ package com.forgon.disinfectsystem.inventoryrecord.dwr.table; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.commons.lang.StringUtils; @@ -11,6 +13,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.warehouse.WareHouse; import com.forgon.disinfectsystem.entity.stocktakemanager.InventoryRecord; import com.forgon.disinfectsystem.inventoryrecord.service.InventoryRecordManager; +import com.forgon.tools.util.SqlUtils; /** * @author qjw @@ -39,13 +42,11 @@ public String findInventoryRecordList( Map> parameterListMap) { String orgUnitCode = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); - WareHouse warehouse = wareHouseManager.getDefaultWareHouseByUnitCode(orgUnitCode); - + List warehouseIds = wareHouseManager.getWareHouseIdsByUnitCode(orgUnitCode); Map sqlWhereParamMap = gridManager .getParamFromView(parameterListMap); - String type = sqlWhereParamMap.get("type"); - String sql = "where po.wareHouseId = " + warehouse.getId(); + String sql = String.format("where %s " , SqlUtils.getNonStringFieldInCollectionsPredicate("po.wareHouseId", warehouseIds)); if(StringUtils.isNotBlank(type)){ if("material".equals(type)){ sql += " and po.type = '"+InventoryRecord.TYPE_MATERIALENTRY+"'"; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java =================================================================== diff -u -r13160 -r13387 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 13160) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManagerImpl.java (.../WareHouseManagerImpl.java) (revision 13387) @@ -100,6 +100,12 @@ orgUnit.setOrgUnitCoding(orgUnitCode); return getDefaultWareHouseListByOrgUnit(orgUnit); } + + public List getWareHouseListByUnitCode(String orgUnitCode){ + OrgUnit orgUnit = new OrgUnit(); + orgUnit.setOrgUnitCoding(orgUnitCode); + return getWareHouseListByOrgUnit(orgUnit); + } /** * 查询科室下的仓库,按sequence排序,返回集合的第1条就是默认仓库 * @param orgUnit 默认按科室id,如果id为空,则按code查询 @@ -109,22 +115,32 @@ public List getWareHouseListByOrgUnit(OrgUnit orgUnit){ String sql = " where 1=1 "; if(orgUnit != null){ - //如果科室id与编码都不为空 - if(orgUnit.getId() != null && orgUnit.getId() != 0 && StringUtils.isNotBlank(orgUnit.getOrgUnitCoding())){ - sql += " and (orgUnitId = " + orgUnit.getId() + " or orgUnitCode = '" + orgUnit.getOrgUnitCoding() + "')"; - }else if(orgUnit.getId() != null && orgUnit.getId() != 0){ - sql += " and orgUnitId = " + orgUnit.getId(); - }else if(StringUtils.isNotBlank(orgUnit.getOrgUnitCoding())){ - sql += " and orgUnitCode = '" + orgUnit.getOrgUnitCoding() + "'"; - }else{ + String findWareHouseSql = buildFindWareHouseSqlByOrgUnit(orgUnit); + if(findWareHouseSql == null){ return null; } + sql += " and "+ findWareHouseSql; sql += " order by sequence"; }else{ return null; } return objectDao.findBySql(WareHouse.class.getSimpleName(), sql); } + private String buildFindWareHouseSqlByOrgUnit(OrgUnit orgUnit){ + String sql = null; + if(orgUnit == null){ + return sql; + } + //如果科室id与编码都不为空 + if(orgUnit.getId() != null && orgUnit.getId() != 0 && StringUtils.isNotBlank(orgUnit.getOrgUnitCoding())){ + sql = " (orgUnitId = " + orgUnit.getId() + " or orgUnitCode = '" + orgUnit.getOrgUnitCoding() + "')"; + }else if(orgUnit.getId() != null && orgUnit.getId() != 0){ + sql = " orgUnitId = " + orgUnit.getId(); + }else if(StringUtils.isNotBlank(orgUnit.getOrgUnitCoding())){ + sql = " orgUnitCode = '" + orgUnit.getOrgUnitCoding() + "'"; + } + return sql; + } @SuppressWarnings("unchecked") public List getWareHouseListByOrgUnit(Collection orgUnitCodes){ if(orgUnitCodes != null && !orgUnitCodes.isEmpty()){ @@ -390,4 +406,19 @@ } return null; } + + public List getWareHouseIdsByUnitCode(String orgUnitCode){ + OrgUnit orgUnit = new OrgUnit(); + orgUnit.setOrgUnitCoding(orgUnitCode); + return getWareHouseIdsByOrgUnit(orgUnit); + } + + public List getWareHouseIdsByOrgUnit(OrgUnit orgUnit){ + String findWareHouseSql = buildFindWareHouseSqlByOrgUnit(orgUnit); + if(findWareHouseSql == null){ + return null; + } + String hql = String.format(" select po.id from %s po where %s", WareHouse.class.getSimpleName(),findWareHouseSql); + return objectDao.findByHql(hql); + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java =================================================================== diff -u -r12914 -r13387 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java (.../WareHouseManager.java) (revision 12914) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/warehouse/service/WareHouseManager.java (.../WareHouseManager.java) (revision 13387) @@ -39,7 +39,7 @@ * @return */ public WareHouse getDefaultWareHouseByUnitCode(String orgUnitCode); - + public List getWareHouseListByUnitCode(String orgUnitCode); /** * 查询科室下的仓库,按sequence排序,返回集合的第1条就是默认仓库 * @param orgUnit 默认按科室id,如果id为空,则按code查询 @@ -112,4 +112,6 @@ * @return */ public Set getCurrentUserOrgUnitWarehouseIds(); + + public List getWareHouseIdsByUnitCode(String orgUnitCode); }