Esempio n. 1
0
	public String getDiscountDate() {
		StringBuilder sb = new StringBuilder();
		for (DiscountFile discountFile : discountFiles) {
			sb.append("[createDate:" + discountFile.getCreatedDate() + ",enableDate:" + discountFile.getEnableDate() + "] ");
		}
		return sb.toString();
	}
Esempio n. 2
0
	public String getDiscountInfo() {
		StringBuilder sb = new StringBuilder();
		sb.append(discountFiles.size() + " discountfile ");
		for (DiscountFile discountFile : discountFiles) {
			sb.append("[ver:" + discountFile.getVersion() + ",enableDate:" + discountFile.getEnableDate() + "] ");
		}
		return sb.toString();
	}
Esempio n. 3
0
	public byte[] getDiscountData(byte discountNo, String discountVer, short reqPackNo) {
		if (!isDealNewDiscountFile) {
			if (this.discountFiles.size() < discountNo + 1)
				return null;
			DiscountFile discountFile = this.discountFiles.get(discountNo);
			if (discountVer.equals(discountFile.getVersion())) {
				return discountFile.getDiscountData(reqPackNo);
			} else {
				return null;
			}
		} else {
			if (this.discountFilesCopy.size() < discountNo + 1)
				return null;
			DiscountFile discountFile = this.discountFilesCopy.get(discountNo);
			if (discountVer.equals(discountFile.getVersion())) {
				return discountFile.getDiscountData(reqPackNo);
			} else {
				return null;
			}
		}
	}
Esempio n. 4
0
	@SuppressWarnings("unchecked")
	public void dealNewDiscount(DiscountFile discountFile) {
		this.discountFilesCopy = (ArrayList<DiscountFile>)this.discountFiles.clone();
		this.isDealNewDiscountFile = true;
		boolean bRefreshData = true;
		try {
			if (discountFiles.size() == 0) {//当前还没有折扣率文件,直接添加
				discountFiles.add(discountFile);
				return;
			} else {
				DiscountFile discountFile1 = discountFiles.get(0);
				if (discountFiles.size() == 1) {//只有一个折扣率文件
					if (KKTool.isDateBeforeToday(discountFile1.getEnableDate())) {//当前折扣率文件1已经启用
						if (discountFile.getEnableDate().compareTo(discountFile1.getEnableDate()) < 0) {
							bRefreshData = false;
							return;//服务器端的折扣率文件启用日期比当前正在使用的还早,则不予处理
						} else if (discountFile.getEnableDate().compareTo(discountFile1.getEnableDate()) == 0) {
							if (discountFile.getCreatedDate().compareTo(discountFile1.getCreatedDate()) > 0) {
								discountFiles.clear();
								discountFiles.add(discountFile);
							} else {
								bRefreshData = false;
								return;
							}
						} else {
							if (KKTool.isDateBeforeToday(discountFile.getEnableDate())) {
								discountFiles.clear();
								discountFiles.add(discountFile);
							} else {//新的折扣率文件在属于未来启用的,则添加,变成折扣率文件2;
								discountFiles.add(discountFile);
							}
						}
					} else {//当前折扣率文件1还未启用,属于不正常情况,但也需处理
						if (KKTool.isDateBeforeToday(discountFile.getEnableDate())) {//新折扣率文件启用日期在当前日期之前,则将其作为折扣率文件1
							discountFiles.add(0, discountFile);
						} else if (discountFile.getEnableDate().compareTo(discountFile1.getEnableDate())< 0 ) {//新折扣率文件启用日期在当前日期之后,如果比当前折扣率文件1早则替代,否则抛弃该折扣率文件
							discountFiles.clear();
							discountFiles.add(discountFile);
						}
					}
				} else {//有两个折扣率文件
					DiscountFile discountFile2 = discountFiles.get(1);
					if (KKTool.isDateBeforeToday(discountFile1.getEnableDate())) {//当前折扣率文件1已经启用
						if (discountFile.getEnableDate().compareTo(discountFile1.getEnableDate()) < 0) {
							bRefreshData = false;
							return;//服务器端的折扣率文件启用日期比当前正在使用的还早,则不予处理
						} else if (discountFile.getEnableDate().compareTo(discountFile1.getEnableDate()) == 0) {
							if (discountFile.getCreatedDate().compareTo(discountFile1.getCreatedDate()) > 0) {
								discountFiles.remove(0);
								discountFiles.add(0, discountFile);
							} else {
								bRefreshData = false;
								return;
							}
						} else {
							if (KKTool.isDateBeforeToday(discountFile.getEnableDate())) {//属于不正常情况
								discountFiles.remove(0);
								discountFiles.add(0, discountFile);
							} else if (discountFile.getEnableDate().compareTo(discountFile2.getEnableDate()) < 0){//新的折扣率文件在属于未来启用的,则添加,变成折扣率文件2;
								discountFiles.remove(1);
								discountFiles.add(discountFile);
							}					
						}
					} else {//两个都未启用的不存在,不处理
						bRefreshData = false;
					}
				}
	
			}
		} finally {
			if (bRefreshData) {
				refreshData();
			}
			this.isDealNewDiscountFile = false;
		}
	}
Esempio n. 5
0
	public boolean checkNewDiscountValid(String newDate, String createdTime) {
		if (discountFiles.size() == 0)
			return true;
		DiscountFile discountFile1 = discountFiles.get(0);
		if (discountFiles.size() == 1) {//只有一个折扣率文件
			if (KKTool.isDateBeforeToday(discountFile1.getEnableDate())) {//当前折扣率文件1已经启用
				if (newDate.compareTo(discountFile1.getEnableDate()) < 0) {
					return false;//服务器端的折扣率文件启用日期比当前正在使用的还早,则不予处理
				}
				
				if (newDate.compareTo(discountFile1.getEnableDate()) == 0) {//启用日期一样时需要看文件的产生时间是否有更新
					return createdTime.compareTo(discountFile1.getCreatedDate()) > 0;//文件的生成时间比折扣率1文件的生成时间晚,则更新
				}
				
				if (KKTool.isDateBeforeToday(newDate)) {
					return true;
				} else {//新的折扣率文件在属于未来启用的,则添加,变成折扣率文件2;
					return true;
				}
			} else {//当前折扣率文件1还未启用,属于不正常情况,但也需处理
				if (KKTool.isDateBeforeToday(newDate)) {//新折扣率文件启用日期在当前日期之前,则将其作为折扣率文件1
					return true;
				} else if (newDate.compareTo(discountFile1.getEnableDate())< 0 ) {//新折扣率文件启用日期在当前日期之后,如果比当前折扣率文件1早则替代,否则抛弃该折扣率文件
					return true;
				}
			}
		} else {//有两个折扣率文件
			DiscountFile discountFile2 = discountFiles.get(1);
			if (KKTool.isDateBeforeToday(discountFile1.getEnableDate())) {//当前折扣率文件1已经启用
				if (newDate.compareTo(discountFile1.getEnableDate()) < 0) {
					return false;//服务器端的折扣率文件启用日期比当前正在使用的还早,则不予处理
				}
				
				if (newDate.compareTo(discountFile1.getEnableDate()) == 0) {//启用日期一样时需要看文件的产生时间是否有更新
					return createdTime.compareTo(discountFile1.getCreatedDate()) > 0;//文件的生成时间比折扣率1文件的生成时间晚,则更新
				}
				
				if (KKTool.isDateBeforeToday(newDate)) {//属于不正常情况
					return true;
				} else if (newDate.compareTo(discountFile2.getEnableDate()) < 0){//新的折扣率文件在属于未来启用的,则添加,变成折扣率文件2;
					return true;
				}					
			} else {//两个都未启用的不存在,不处理
				return false;
			}
		}
		return false;
	}
Esempio n. 6
0
	/**
	 * 重新生成折扣率数据,供pos机直接获取
	 */
	private void refreshData() {
		for (DiscountFile df : discountFiles)
			df.genDiscountData();
	}