Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManager.java =================================================================== diff -u -r12811 -r12867 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManager.java (.../DisposableGoodsStockManager.java) (revision 12811) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManager.java (.../DisposableGoodsStockManager.java) (revision 12867) @@ -1,5 +1,8 @@ package com.forgon.disinfectsystem.diposablegoods.service; +import java.util.Collection; +import java.util.List; + import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsStock; @@ -16,6 +19,13 @@ */ public DisposableGoodsStock getDisposableGoodsStockByDisposableGoodsId(String disposableGoodsId,String wareHouseId); /** + * 获取指定仓库集合中的指定一次性物品的集合的一次性物品的库存 + * @param disposableGoodsIds 一次性物品定义的集合 + * @param warehouseIds 仓库id集合 + * @return 同时满足一次性物品定义的集合和仓库集合条件的一次性物品库存的集合 + */ + public List getDisposableGoodsStockList(Collection disposableGoodsIds,Collection warehouseIds); + /** * 验证库存 * @param id * @param name Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r12862 -r12867 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12862) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 12867) @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Set; import java.util.regex.Matcher; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletRequest; @@ -595,18 +596,21 @@ OrgUnit org = new OrgUnit(); org.setOrgUnitCoding(handleDepartCode); List list = wareHouseManager.getWareHouseListByOrgUnit(org); - for (DisposableGoods disposableGoods : disposableGoodsList) { - List goodsStocks = null; - if(StringUtils.isNotBlank(handleDepartCode)){ - if (list != null) { - goodsStocks = new ArrayList(); - for (WareHouse wareHouse : list) { - DisposableGoodsStock stock = disposableGoodsStockManager.getDisposableGoodsStockByDisposableGoodsId( - disposableGoods.getId() + "","" + wareHouse.getId()); - goodsStocks.add(stock); - } - } + + Set disposableGoodsIds = null; + Set warehouseIds = null; + if(StringUtils.isNotBlank(handleDepartCode)){ + if(disposableGoodsList != null){ + disposableGoodsIds = disposableGoodsList.stream().map((disposableGoods)->disposableGoods.getId() + "").collect(Collectors.toSet()); } + if(list != null){ + warehouseIds = list.stream().map((warehouse)->warehouse.getId() + "").collect(Collectors.toSet()); + } + } + + List goodsStocks = disposableGoodsStockManager.getDisposableGoodsStockList(disposableGoodsIds, warehouseIds); + + for (DisposableGoods disposableGoods : disposableGoodsList) { Map item = buildDisposableGoodsPropertyMap(disposableGoods,goodsStocks,floatPercent, showReferencePrice); if(item != null){ @@ -638,7 +642,10 @@ String displayName = ""; if(goodsStocks != null){ for (DisposableGoodsStock goodsStock : goodsStocks) { - + //如果不是当前一次性物品定义的库存,则跳过 + if(goodsStock.getDisposableGoodsID() != disposableGoods.getId()){ + continue; + } Object obj = temp.get("amount"); if (obj == null) { temp.put("amount", goodsStock.getAmount()); Index: forgon-tools/src/main/java/com/forgon/tools/SqlBuilder.java =================================================================== diff -u -r12331 -r12867 --- forgon-tools/src/main/java/com/forgon/tools/SqlBuilder.java (.../SqlBuilder.java) (revision 12331) +++ forgon-tools/src/main/java/com/forgon/tools/SqlBuilder.java (.../SqlBuilder.java) (revision 12867) @@ -145,7 +145,16 @@ public static String build_IN_Statement(String fieldName, int inOrNotIn, String... stringValues){ return build_IN_Statement(fieldName, inOrNotIn, Arrays.asList(stringValues)); } - public static String build_number_IN_Statement(String fieldName,int inOrNotIn,Collection numbers){ + /** + * 创建数字类型的in 语句 + * @param fieldName 字段名称 + * @param inOrNotIn 标志 + * @see com.forgon.tools.SqlBuilder.NOT_IN + * @param numbers 数字的值 + * @param T 类型参数,数字类型或者是字符串,但字符串得是数字 + * @return + */ + public static String build_number_IN_Statement (String fieldName,int inOrNotIn,Collection numbers){ if(StringUtils.isEmpty(fieldName) || CollectionUtils.isEmpty(numbers)) return "(1=1)"; StringBuilder sb = new StringBuilder(); @@ -160,7 +169,7 @@ sb.append(" IN "); } sb.append('('); - for(Long number : numbers){ + for(T number : numbers){ if(number != null){ sb.append(number); sb.append(","); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java =================================================================== diff -u -r12811 -r12867 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java (.../DisposableGoodsStockManagerImpl.java) (revision 12811) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java (.../DisposableGoodsStockManagerImpl.java) (revision 12867) @@ -1,13 +1,15 @@ package com.forgon.disinfectsystem.diposablegoods.service; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import net.sf.json.JSONObject; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.forgon.directory.acegi.tools.AcegiHelper; @@ -19,6 +21,7 @@ import com.forgon.security.tools.Util; import com.forgon.tools.Constants; import com.forgon.tools.MathTools; +import com.forgon.tools.SqlBuilder; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; @@ -61,7 +64,18 @@ } return null; } + @SuppressWarnings("unchecked") @Override + public List getDisposableGoodsStockList(Collection disposableGoodsIds,Collection warehouseIds){ + if(CollectionUtils.isNotEmpty(disposableGoodsIds) && CollectionUtils.isNotEmpty(warehouseIds)){ + String id1 = SqlBuilder.build_number_IN_Statement("disposableGoodsID", SqlBuilder.IN, disposableGoodsIds); + String id2 = SqlBuilder.build_number_IN_Statement("disposableGoodsID", SqlBuilder.IN, warehouseIds); + String sql = " where " + id1 + " and " + id2; + return objectDao.findBySql(DisposableGoodsStock.class.getSimpleName(), sql); + } + return null; + } + @Override public boolean verifyDiposableGoods(String id, String name, String specification) { String sql = "where po.name = '" + name + "'";