HashMap<T,T>用法用例

来源:互联网 发布:数据仿真 编辑:程序博客网 时间:2024/05/18 02:08
<span style="font-size:14px;">public HashMap<String, BigDecimal> compareQuantity(String gdk006,String gdk001) throws BusinessException{//得到发货gd003上的数量String gd003Sql="SELECT T1.* FROM gd003 T1 WHERE T1.GDK001='"+gdk001+"'";RowsetXML gd003RowsetXML = QueryHelper.executeQuery("", gd003Sql);//发货确认商品列表<span style="color:#ff0000;">HashMap<String, BigDecimal> mapGd003 = new HashMap<String, BigDecimal>();//  发货确认商品列表</span>while (gd003RowsetXML.next()) {Gd003 gd003 = new Gd003();gd003RowsetXML.writeToBean(gd003, false);<span style="color:#ff0000;">mapGd003.put(gd003.getGdk003(), gd003.getGdn001());</span>}//得到本次确认的gdk006的商品明细(T2.ACK001,T2.GDN015)//String gd008Sql="SELECT T2.GDK003,SUM(T2.Gdn015) GDN015 FROM gd006 T1,GD008 T2 WHERE T1.GDK006=T2.Gdk006 AND T1.GDK006='"+gdk006+"' GROUP BY T2.GDK003";String gd008Sql ="SELECT T2.GDK003,SUM(T2.Gdn015) GDN015 FROM GD008 T2 WHERE T2.GDK006='"+gdk006+"' GROUP BY T2.GDK003";RowsetXML gd008RowsetXML = QueryHelper.executeQuery("", gd008Sql);//发货确认商品列表HashMap<String, BigDecimal> mapGd008 = new HashMap<String, BigDecimal>();//  发货确认商品列表//HashMap<String, BigDecimal> retMapGd008 = new HashMap<String, BigDecimal>();//  发货确认商品列表返回值while (gd008RowsetXML.next()) {mapGd008.put(gd008RowsetXML.getString("GDK003"),gd008RowsetXML.getBigDecimal("GDN015"));//retMapGd008.put(gd008RowsetXML.getString("GDK003"), gd008RowsetXML.getBigDecimal("GDN015"));}//得到gdk003对应的已开票数量String ge002Sql1="SELECT T3.GDK003,SUM(T3.Gbn007) GBN007 FROM ge002 T3 WHERE T3.GDK003 IN(SELECT T2.GDK003 FROM  GD003 T2 WHERE T2.GDK001 = '"+gdk001+"') GROUP BY T3.GDK003";RowsetXML ge002RowsetXML = QueryHelper.executeQuery("", ge002Sql1);//发货确认商品列表对应的开票HashMap<String, BigDecimal> mapGe002 = new HashMap<String, BigDecimal>();//  开票商品列表while (ge002RowsetXML.next()) {mapGe002.put(ge002RowsetXML.getString("GDK003"),ge002RowsetXML.getBigDecimal("GBN007"));}<span style="color:#ff0000;">//比较是否有本次确认数量大于未开票数量  有就返回falseIterator<String> iterator = mapGd003.keySet().iterator();while (iterator.hasNext()) {// 主键为空的,直接新增;主键不为空,覆盖原来的数据后更新。String goodsId = iterator.next();boolean flag=mapGe002.get(goodsId)!=null&&mapGd008.get(goodsId)!=null&&mapGd003.get(goodsId).subtract(mapGe002.get(goodsId)).compareTo(mapGd008.get(goodsId))<0;if(flag){//开票表和确认表都有该商品且本次确认数量大于未开票数量mapGd008.put("flag", BigDecimal.ZERO);return mapGd008;}}</span>mapGd008.put("flag", BigDecimal.ONE);return mapGd008;</span>

0 0