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

📄 product.java

📁 工厂版本管理系统,STRUTS2框架,用于管理商品的版本,便于有效的控制版本
💻 JAVA
字号:
package com.bluesky.elecall.domain;

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;

public class Product {
	private String id;
	private String name;
	private Long imageFileId;
	private Long smallImageFileId;
	private String model;
	private Set attributes;
	private BigDecimal price;
	private Map<Long,BigDecimal> discountPolicies;
	private boolean hasInventory;
	private String detail;
	private String unit;
	private BigDecimal unitWeight;
	
	private Map attributeMap;
	

	public String getUnit() {
		return unit;
	}

	public void setUnit(String unit) {
		this.unit = unit;
	}

	private CategoryItem categoryItem;

	// we are lazy, directly use level 5 category as Product Series entity.
	private CategoryItem family;
	private Manufactory manufactory;

	public Manufactory getManufactory() {
		return manufactory;
	}

	public void setManufactory(Manufactory manufactory) {
		this.manufactory = manufactory;
	}

	public Product() {
		attributes = new HashSet();
		price = BigDecimal.ZERO;
		discountPolicies = new TreeMap<Long,BigDecimal>();
		family = new CategoryItem();
		manufactory = new Manufactory();

		attributeMap = new TreeMap<String, Object>();
		
	}

	public CategoryItem getFamily() {
		return family;
	}

	public void setFamily(CategoryItem family) {
		this.family = family;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}	


	public Long getImageFileId() {
		return imageFileId;
	}

	public void setImageFileId(Long imageFileId) {
		this.imageFileId = imageFileId;
	}

	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

	public Set getAttributes() {
		return attributes;
	}

	public void setAttributes(Set attributes) {
		this.attributes = attributes;
	}

	public BigDecimal getPrice() {
		return price;
	}

	public void setPrice(BigDecimal price) {
		this.price = price;
	}

	public Map getDiscountPolicies() {
		return discountPolicies;
	}

	public void setDiscountPolicies(Map discountPolicies) {
		this.discountPolicies = discountPolicies;
	}

	public Long getSmallImageFileId() {
		return smallImageFileId;
	}

	public void setSmallImageFileId(Long smallImageFileId) {
		this.smallImageFileId = smallImageFileId;
	}

	public BigDecimal getUnitWeight() {
		return unitWeight;
	}

	public void setUnitWeight(BigDecimal unitWeight) {
		this.unitWeight = unitWeight;
	}

	public boolean isHasInventory() {
		return hasInventory;
	}

	public void setHasInventory(boolean hasInventory) {
		this.hasInventory = hasInventory;
	}

	public String getDetail() {
		return detail;
	}

	public void setDetail(String detail) {
		this.detail = detail;
	}

	public CategoryItem getCategoryItem() {
		return categoryItem;
	}

	public void setCategoryItem(CategoryItem categoryItem) {
		this.categoryItem = categoryItem;
	}

	public ProductAttribute addAttribute(ProductAttribute attribute) {

		if (!attributeMap.containsKey(attribute.getName())) {
			attributeMap.put(attribute.getName(), attribute);
			getAttributes().add(attribute);
			attribute.setProduct(this);			
		
			return attribute;
		}

		return null;		
	}
	
	public String getShortDetail() {
		
		if(name!=null && name.trim().length()>0)
			return name;
		
		StringBuilder sb = new StringBuilder();

		sb.append(name);

		Iterator<ProductAttribute> paIt = attributes.iterator();
		int i=0;
		while (paIt.hasNext()) {
			ProductAttribute pa = paIt.next();
			
			if(i>0)
			sb.append(",");
			
			sb.append(pa.getValue());
			
			i++;
		}

		
		
		return sb.toString();
	}

	public static Product getSample(CategoryItem level4Item, CategoryItem family) {

		String[] names = new String[] { "电脑", "电视机", "洗衣机", "冰箱", "汽车" };
		String[] unitNames = new String[] { "个", "台", "卷", "枝", "公斤" };

		Random random = new Random();

		int index = random.nextInt(names.length);

		Product p = new Product();
		p.setName(names[random.nextInt(5)]);
		p.setDetail("no detail");
		
		int basePrice = random.nextInt(500);
		MathContext money = new MathContext(2);
		
		p.setPrice(new BigDecimal(basePrice,money));		
		p.getDiscountPolicies().put(5L, new BigDecimal(basePrice*0.9,money));
		p.getDiscountPolicies().put(50L, new BigDecimal(basePrice*0.85,money));
		p.getDiscountPolicies().put(100L, new BigDecimal(basePrice*0.80,money));
		
		p.getManufactory().setId(random.nextInt(5) + 1);

		p.addAttribute(ProductAttribute.getSample());
		p.addAttribute(ProductAttribute.getSample());

		p.setCategoryItem(level4Item);
		p.setFamily(family);
		p.setUnit(unitNames[random.nextInt(unitNames.length)]);
		p.setUnitWeight(new BigDecimal(random.nextInt(100)));
		

		return p;
	}

	public BigDecimal getUnitPrice(long quantity){
		BigDecimal rslt = price;
		
		//sort the base_quantity
		SortedSet<Long> sortedBaseQuantites = new TreeSet<Long>();
		
		//sortedBaseQuantites.add(1L);
		
		Iterator<Long> it = discountPolicies.keySet().iterator();
		while(it.hasNext())
			sortedBaseQuantites.add(it.next());
		
		long lastBaseQuantity = 1;
		Iterator<Long> it2 = sortedBaseQuantites.iterator();
		while(it2.hasNext()){
			long curBaseQty = it2.next();
			if(quantity >= lastBaseQuantity && quantity < curBaseQty)
				break;
			
			lastBaseQuantity = curBaseQty;
		}
		
		if(lastBaseQuantity==1)
			rslt = price;
		else
			rslt = discountPolicies.get(lastBaseQuantity);
		
		return rslt;
	}
}

⌨️ 快捷键说明

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