⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 productdisplayworker.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    Collection orderRoles = delegator.findByAnd("OrderRole", UtilMisc.toMap("partyId", userLogin.get("partyId"), "roleTypeId", USER_ORDER_ROLE_TYPES[i]), null);                    Iterator ordersIter = UtilMisc.toIterator(orderRoles);                    while (ordersIter != null && ordersIter.hasNext()) {                        GenericValue orderRole = (GenericValue) ordersIter.next();                        // for each order role get all order items                        Collection orderItems = orderRole.getRelated("OrderItem");                        Iterator orderItemsIter = UtilMisc.toIterator(orderItems);                        while (orderItemsIter != null && orderItemsIter.hasNext()) {                            GenericValue orderItem = (GenericValue) orderItemsIter.next();                            // for each order item get the associated product                            GenericValue product = orderItem.getRelatedOneCache("Product");                            products.put(product.get("productId"), product);                            Integer curQuant = (Integer) productQuantities.get(product.get("productId"));                            if (curQuant == null) curQuant = new Integer(0);                            Double orderQuant = orderItem.getDouble("quantity");                            if (orderQuant == null) orderQuant = new Double(0.0);                            productQuantities.put(product.get("productId"), new Integer(curQuant.intValue() + orderQuant.intValue()));                            Integer curOcc = (Integer) productOccurances.get(product.get("productId"));                            if (curOcc == null) curOcc = new Integer(0);                            productOccurances.put(product.get("productId"), new Integer(curOcc.intValue() + 1));                        }                    }                }                // go through each product quantity and divide it by the occurances to get the average                Iterator quantEntries = productQuantities.entrySet().iterator();                while (quantEntries.hasNext()) {                    Map.Entry entry = (Map.Entry) quantEntries.next();                    Object prodId = entry.getKey();                    Integer quantity = (Integer) entry.getValue();                    Integer occs = (Integer) productOccurances.get(prodId);                    int nqint = quantity.intValue() / occs.intValue();                    if (nqint < 1) nqint = 1;                    productQuantities.put(prodId, new Integer(nqint));                }                httpRequest.getSession().setAttribute("_QUICK_REORDER_PRODUCTS_", new HashMap(products));                httpRequest.getSession().setAttribute("_QUICK_REORDER_PRODUCT_QUANTITIES_", new HashMap(productQuantities));                httpRequest.getSession().setAttribute("_QUICK_REORDER_PRODUCT_OCCURANCES_", new HashMap(productOccurances));            } else {                // make a copy since we are going to change them                products = new HashMap(products);                productQuantities = new HashMap(productQuantities);                productOccurances = new HashMap(productOccurances);            }            // remove all products that are already in the cart            ShoppingCart cart = (ShoppingCart) httpRequest.getSession().getAttribute("shoppingCart");            if (cart != null && cart.size() > 0) {                Iterator cartiter = cart.iterator();                while (cartiter.hasNext()) {                    ShoppingCartItem item = (ShoppingCartItem) cartiter.next();                    String productId = item.getProductId();                    products.remove(productId);                    productQuantities.remove(productId);                    productOccurances.remove(productId);                }            }            // if desired check view allow category            //if (checkViewAllow) {                List prodKeyList = new ArrayList(products.keySet());                //Set prodKeySet = products.keySet();                String currentCatalogId = CatalogWorker.getCurrentCatalogId(request);                String viewProductCategoryId = CatalogWorker.getCatalogViewAllowCategoryId(delegator, currentCatalogId);                if (viewProductCategoryId != null) {                    Iterator valIter = prodKeyList.iterator();                    while (valIter.hasNext()) {                        String productId = (String) valIter.next();                        if (!CategoryWorker.isProductInCategory(delegator, productId, viewProductCategoryId)) {                            products.remove(productId);                            productQuantities.remove(productId);                            productOccurances.remove(productId);                        }                    }                }            //}                        List reorderProds = new ArrayList(products.values());            /*             //randomly remove products while there are more than 5             while (reorderProds.size() > 5) {             int toRemove = (int)(Math.random()*(double)(reorderProds.size()));             reorderProds.remove(toRemove);             }             */            // sort descending by new metric...            double occurancesModifier = 1.0;            double quantityModifier = 1.0;            Map newMetric = new HashMap();            Iterator occurEntries = productOccurances.entrySet().iterator();            while (occurEntries.hasNext()) {                Map.Entry entry = (Map.Entry) occurEntries.next();                Object prodId = entry.getKey();                Integer quantity = (Integer) entry.getValue();                Integer occs = (Integer) productQuantities.get(prodId);                double nqdbl = quantity.doubleValue() * quantityModifier + occs.doubleValue() * occurancesModifier;                newMetric.put(prodId, new Double(nqdbl));            }            reorderProds = productOrderByMap(reorderProds, newMetric, true);            // remove extra products - only return 5            while (reorderProds.size() > 5) {                reorderProds.remove(reorderProds.size() - 1);            }            results.put("products", reorderProds);            results.put("quantities", productQuantities);        } catch (GenericEntityException e) {            Debug.logWarning(e, module);        }                return results;    }        public static List productOrderByMap(Collection values, Map orderByMap, boolean descending) {        if (values == null)  return null;        if (values.size() == 0) return UtilMisc.toList(values);        List result = new ArrayList(values);        Collections.sort(result, new ProductByMapComparator(orderByMap, descending));        return result;    }    static class ProductByMapComparator implements Comparator {        private Map orderByMap;        private boolean descending;        ProductByMapComparator(Map orderByMap, boolean descending) {            this.orderByMap = orderByMap;            this.descending = descending;        }        public int compare(java.lang.Object prod1, java.lang.Object prod2) {            int result = compareAsc((GenericEntity) prod1, (GenericEntity) prod2);            if (descending) {                result = -result;            }            return result;        }        private int compareAsc(GenericEntity prod1, GenericEntity prod2) {            Object value = orderByMap.get(prod1.get("productId"));            Object value2 = orderByMap.get(prod2.get("productId"));            // null is defined as the smallest possible value            if (value == null) return value2 == null ? 0 : -1;            return ((Comparable) value).compareTo(value2);        }        public boolean equals(java.lang.Object obj) {            if ((obj != null) && (obj instanceof ProductByMapComparator)) {                ProductByMapComparator that = (ProductByMapComparator) obj;                return this.orderByMap.equals(that.orderByMap) && this.descending == that.descending;            } else {                return false;            }        }    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -