Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java =================================================================== diff -u -r13035 -r13339 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java (.../DiposableGoodBatchStockManagerImpl.java) (revision 13035) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManagerImpl.java (.../DiposableGoodBatchStockManagerImpl.java) (revision 13339) @@ -3,6 +3,7 @@ */ package com.forgon.disinfectsystem.diposablegoods.service; +import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; @@ -260,7 +261,40 @@ } return vos; } - + public Double getEarliestPrice(Long disposableGoodsStockId,Double referencePrice){ + Double retPrice = 0d; + if(referencePrice != null){ + retPrice = referencePrice; + } + if(DatabaseUtil.isPoIdValid(disposableGoodsStockId)){ + String sql = ""; + String database = dbConnection.getDatabase(); + if (DatabaseUtil.isSqlServer(database)) { + sql = "select * from (select top 1 d.cost from DisposableGoodsBatchStock d where d.diposableGoods_id = " + + disposableGoodsStockId + + " and storage > 0 order by d.id asc) as temp"; + } else if (DatabaseUtil.isOracle(database)) { + sql = "select * from (select d.cost from DisposableGoodsBatchStock d where d.diposableGoods_id = " + + disposableGoodsStockId + + " and storage > 0 order by d.id asc) where rownum =1"; + } + ResultSet rs = objectDao.executeSql(sql); + BigDecimal returnValue = null; + try { + while (rs.next()) { + returnValue = rs.getBigDecimal("cost"); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + if(returnValue != null){ + retPrice = returnValue.doubleValue(); + } + } + return retPrice; + } /** * 拿失效日期最大的那个批次的价格 * @@ -271,39 +305,7 @@ // 2015-07-25 @Override public Double getEarliestPrice(DisposableGoodsStock disposableGoodsStock) { - - String sql = ""; - String database = dbConnection.getDatabase(); - if (DatabaseUtil.isSqlServer(database)) { - sql = "select * from (select top 1 d.cost from DisposableGoodsBatchStock d where d.diposableGoods_id = " - + disposableGoodsStock.getId() - + " and storage > 0 order by d.id asc) as temp"; - } else if (DatabaseUtil.isOracle(database)) { - sql = "select * from (select d.cost from DisposableGoodsBatchStock d where d.diposableGoods_id = " - + disposableGoodsStock.getId() - + " and storage > 0 order by d.id asc) where rownum =1"; - } - ResultSet rs = objectDao.executeSql(sql); - Double returnValue = null; - try { - while (rs.next()) { - returnValue = rs.getDouble("cost"); - } - } catch (SQLException e) { - e.printStackTrace(); - }finally { - DatabaseUtil.closeResultSetAndStatement(rs); - } - // 如果无价格,使用一次性物品指导价 - if (returnValue == null) { - returnValue = disposableGoodsStock.getReferencePrice(); - if (returnValue == null) { - returnValue = 0d; - } - } - - - return returnValue; + return getEarliestPrice(disposableGoodsStock.getId(),disposableGoodsStock.getReferencePrice()); } @SuppressWarnings("unchecked") Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java =================================================================== diff -u -r13028 -r13339 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java (.../DiposableGoodBatchStockManager.java) (revision 13028) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodBatchStockManager.java (.../DiposableGoodBatchStockManager.java) (revision 13339) @@ -60,6 +60,13 @@ DisposableGoodsStock disposableGoodsStock); public Double getEarliestPrice(DisposableGoodsStock disposableGoodsStock); + /** + * 获取一次性物品库存的最近一次价格 + * @param disposableGoodsStockId + * @param referencePrice + * @return + */ + public Double getEarliestPrice(Long disposableGoodsStockId,Double referencePrice); public List getIdentificationsWithNoZeroStroge( Long disposableGoodsBatchStockId); Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java =================================================================== diff -u -r13025 -r13339 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java (.../DisposableGoodsStockManagerImpl.java) (revision 13025) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DisposableGoodsStockManagerImpl.java (.../DisposableGoodsStockManagerImpl.java) (revision 13339) @@ -1,5 +1,8 @@ package com.forgon.disinfectsystem.diposablegoods.service; +import java.math.BigDecimal; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -115,18 +118,25 @@ @SuppressWarnings("unchecked") private List> getDisposableGoodsStockListInternal( String wareHouseId, String sql,boolean showReferencePrice) { - List disposableGoodsStockList = objectDao.findBySql( - DisposableGoodsStock.class.getSimpleName(), sql); - + /*List disposableGoodsStockList = objectDao.findBySql( + DisposableGoodsStock.class.getSimpleName(), sql);*/ SupplyRoomConfig config = supplyRoomConfigManager.getSystemParamsObj(); double floatPercent = config.getDiposablePriceFluctuation();// 一次性物品浮动价格系数/ List> mapList = new ArrayList>(); - for (DisposableGoodsStock disposableGoodsStock : disposableGoodsStockList) { - Map item = buildDisposableGoodsStockPropertyMap(disposableGoodsStock,floatPercent, - showReferencePrice); - if(item != null){ - mapList.add(item); + System.out.println("sql:" + sql); + ResultSet resultSet = objectDao.executeSql(sql); + try { + while (resultSet.next()) { + Map item = buildDisposableGoodsStockPropertyMap(resultSet,floatPercent, + showReferencePrice); + if(item != null){ + mapList.add(item); + } } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(resultSet); } return mapList; } @@ -138,11 +148,12 @@ */ private String buildGetDisposableGoodsStockSql(String simpleSpell, String allItems) { - String sql; + String sql = "select po.* from " + DisposableGoodsStock.class.getSimpleName() + " po "; + sql += " left join " + DisposableGoods.class.getSimpleName() + " dg on dg.id = po.disposableGoodsID "; if (StringUtils.equals(allItems, "yes")) { - sql = "where 1=1"; + sql += " where 1=1 "; } else { - sql = " where po.isApplicationMaterial = '" + sql += " where dg.isApplicationMaterial = '" + DisposableGoods.CONSTANT_YES + "'"; } @@ -165,42 +176,46 @@ * @param floatPercent * @param showReferencePrice * @return + * @throws SQLException */ private Map buildDisposableGoodsStockPropertyMap( - DisposableGoodsStock disposableGoodsStock,double floatPercent,boolean showReferencePrice) { + ResultSet resultSet,double floatPercent,boolean showReferencePrice) throws SQLException { Map temp = new HashMap(); - if(disposableGoodsStock == null) + if(resultSet == null) return temp; - - - String goodsName = DisposableGoodsUtils.getDisposableGoodsFullName(disposableGoodsStock.getName(), - disposableGoodsStock.getSpecification()) ; - - temp.put("id", disposableGoodsStock.getId()); + String name = resultSet.getString("name"); + String specification = resultSet.getString("specification"); + String goodsName = DisposableGoodsUtils.getDisposableGoodsFullName(name,specification); + String packageSpec = resultSet.getString("packageSpec"); + BigDecimal amount = resultSet.getBigDecimal("amount"); + Long damount = (amount==null?null:amount.longValue()); + long disposableGoodsStockId = resultSet.getLong("id"); + temp.put("id", disposableGoodsStockId); // TousseDefintionManagerImpl中的查询加上了type,需确认是否可以去掉 temp.put("type", "一次性物品"); temp.put("name", goodsName); - temp.put("spelling", disposableGoodsStock.getSpelling()); - temp.put("amount", disposableGoodsStock.getAmount()); - temp.put("externalCode", disposableGoodsStock.getExternalCode()); - temp.put("minApplyAmount", disposableGoodsStock.getMinApplyAmount()); - temp.put("unit", StringTools.getDefaultString(disposableGoodsStock.getUnit())); + temp.put("spelling", resultSet.getString("spelling")); + temp.put("amount", damount == null?0:damount); + temp.put("externalCode", resultSet.getString("externalCode")); + temp.put("minApplyAmount", resultSet.getInt("minApplyAmount")); + temp.put("unit", StringTools.getDefaultString(resultSet.getString("unit"))); temp.put("tousseType", "一次性物品"); - temp.put("packageSpec", disposableGoodsStock.getPackageSpec()); + temp.put("packageSpec", packageSpec); String displayName; if (showReferencePrice) { - temp.put("referencePrice", disposableGoodsStock.getReferencePrice()); + double referencePrice = resultSet.getDouble("referencePrice"); + temp.put("referencePrice", referencePrice); // 价格修改为浮动价格 - Double price = diposableGoodBatchStockManager.getEarliestPrice(disposableGoodsStock); + Double price = diposableGoodBatchStockManager.getEarliestPrice(disposableGoodsStockId,referencePrice); price = MathTools.mul(price, floatPercent, 2); temp.put("price", price); - displayName = getDisposableGoodsStockDisplayName(disposableGoodsStock,price); + displayName = getDisposableGoodsStockDisplayName(name,specification,price,packageSpec,damount); }else{ - displayName = getDisposableGoodsStockDisplayName(disposableGoodsStock); + displayName = getDisposableGoodsStockDisplayName(name,specification,damount); } temp.put("displayName", displayName); @@ -212,14 +227,13 @@ * @param disposableGoodsStock * @return */ - private String getDisposableGoodsStockDisplayName(DisposableGoodsStock disposableGoodsStock){ - if(disposableGoodsStock == null){ + private String getDisposableGoodsStockDisplayName(String name,String Specification,Long amount){ + if(StringUtils.isBlank(name)){ return StringTools.EMPTY; } - String displayName = DisposableGoodsUtils.getDisposableGoodsFullName( - disposableGoodsStock.getName(),disposableGoodsStock.getSpecification()); + String displayName = DisposableGoodsUtils.getDisposableGoodsFullName(name,Specification); displayName += "(库存:"; - displayName += disposableGoodsStock.getAmount(); + displayName += (amount == null?0:amount); displayName += ")"; return displayName; } @@ -234,10 +248,17 @@ if(disposableGoodsStock == null){ return StringTools.EMPTY; } + return getDisposableGoodsStockDisplayName(disposableGoodsStock.getName(),disposableGoodsStock.getSpecification(), + price,disposableGoodsStock.getPackageSpec(),disposableGoodsStock.getAmount()); + } + private String getDisposableGoodsStockDisplayName(String name,String Specification,Double price, + String packageSpec,Long amount){ + if(StringUtils.isBlank(name)){ + return StringTools.EMPTY; + } String displayName = DisposableGoodsUtils.getDisposableGoodsFullName( - disposableGoodsStock.getName(),disposableGoodsStock.getSpecification()); + name,Specification); if(price != null){ - String packageSpec = disposableGoodsStock.getPackageSpec(); if (StringUtils.isBlank(packageSpec)) { packageSpec = ""; } else { @@ -246,7 +267,7 @@ } displayName = displayName + packageSpec + "(参考价:" + price + ")(库存:" - + disposableGoodsStock.getAmount() + ")"; + + (amount == null?0:amount) + ")"; } return displayName; }