Collection 是有序的集合 mapnum.put(); mapprice.put(); mapbillno.put(); map.put(); map.get(); list转为数组: List<SaleInvoiceSubVO> vos; vos.toArray(new SaleInvoiceSubVO[vos.size()]; 方法二 List<SaleOutVO> lunSignList SaleOutVO[] notSignVOs = (SaleOutVO[])CollectionUtils.listToArray(lunSignList); HashMap.containkey(); div 除 multiply 乘 add 加 sub 减 map.containKey(vo.getCustomer){} map.put(vo.getCusomer,List<SaleInvoiceSubVO>) ; map集合中的value对应可以存放很多东西,类似string类型,int型,还要list集合都可以; 取值的话是通过 map.get(key);存值是通过 map.put(); 按照客户对一个集合进行分组:(//根据客户分组存储,一个客户一张发票) Map和Set不可存在重复元素 for(SaleInvoiceSubVO vos : vos){ if(map.containKey(vo.getCustomer())){ List<SaleInvoiceSubVO> list = map.get(vo.getCustomer()); list.add(vo); map.put(vo.getCustomer(),list); }else{ List<SaleInvoiceSubVO> list = new ArrayList<SaleInvoiceSubVO>(); list.add(vo); map.put(vo.getCustomer(),list); } } for(SaleInvoiceSubVO vo:vos) { if(map.containsKey(vo.getCustomer())) { List<SaleInvoiceSubVO> list=map.get(vo.getCustomer()); list.add(vo); map.put(vo.getCustomer(), list); }else { List<SaleInvoiceSubVO> list=new ArrayList<SaleInvoiceSubVO>(); list.add(vo); map.put(vo.getCustomer(), list); } } aggvo查询 IMDPersistenceQueryService dao=NCLocator.getInstance().lookup(IMDPersistenceQueryService.class); Collection<SaleOrderVO> vos=dao.queryBillOfVOByCond(SaleOrderVO.class, sql.toString(), false); UFDouble result = new UFDouble(0); 通过VO的方式去查询数据,SQL只需要写一半就可以了 String sql=" state = 0 and customer = '1001A110000000000ABN'"; Collection<SaleInvoiceSubVO> vos=new BaseDAO().retrieveByClause(SaleInvoiceSubVO.class, sql); 环境变量: InvocationInfoProxy.getInstance().getGroupId(); hashmap.entrySet(); 拉单功能: SaleInvoiceVO[] invoicebills = PfServiceScmUtil.executeVOChange("4C", "32", orders.toArray(new SaleOutVO[orders.size()])); --list.addAll(); ---用于将指定 collection 中的所有元素添加到列表的尾部。如果 List 集合对象由于调用 addAll 方法而发生更改,则返回 true。 Add方法是将传入的参数作为当前List中的一个item存储,即使你传入一个List也只会令当前的List增加1个元素 AddAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小 HashMap<String,List<SaleInvoiceSubVO>> vomap = querySaleInvoiceSubVO(); for(Entry<String,List<SaleInvoiceSubVO>> entry :vomap.entrySet()){ entry.getValue().get(0); } private void calQuantity(SaleInvoiceVO ordervo,List<SaleInvoiceSubVO> list){ HashMap<String,UFDouble> mapnum = new HashMap<String,UFDouble>();//主数量 HashMap<String,UFDouble> mapprice = new HashMap<String,UFDouble>();//单价 HashMap<String,String> mapbillno = new HashMap<String,String>();//销售发票 辅助项的自定义项一 for(SaleInvoiceSubVO svo : list) { mapnum.put(svo.getMaterial(),new UFDouble(svo. getSalenumber)); mapprice.put(svo.getMaterial(), new UFDouble(svo.getPrice())); mapbillno.put(svo.getMaterial(), svo.getVdef1()); } SaleInvoiceBVO[] bvos = ordervo.getChildrenVO(); } map.entrySet(); entry.getValue(); 用hashmap存储一个key的值,然后get这个key,这个key可以是物料,也可以是客户,可以是vo的具体某个值; BigDecimal比较建议用compareTo a<b, 返回-1 a=b,返回0 a>b, 返回1 --- new UFDouble().setScale(1, 4); //保留小数点后1位,并“四舍五入” static 静态修饰符