public String getDiscountDate() { StringBuilder sb = new StringBuilder(); for (DiscountFile discountFile : discountFiles) { sb.append("[createDate:" + discountFile.getCreatedDate() + ",enableDate:" + discountFile.getEnableDate() + "] "); } return sb.toString(); }
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(); }
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; } } }
@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; } }
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; }
/** * 重新生成折扣率数据,供pos机直接获取 */ private void refreshData() { for (DiscountFile df : discountFiles) df.genDiscountData(); }