package biz.policy.rule.action;
|
|
import java.util.ArrayList;
|
import java.util.HashSet;
|
import java.util.List;
|
import java.util.Set;
|
|
import biz.policy.OrderEvent;
|
import biz.policy.rule.CheckLevel;
|
import biz.policy.rule.CheckResult;
|
import biz.policy.rule.OnsiteRecord;
|
import biz.policy.rule.OnsiteRecords;
|
import biz.policy.rule.OrderCalculator;
|
import biz.policy.rule.RuleAction;
|
import foundation.dao.DataWriter;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.entity.Filter;
|
import foundation.data.object.DataObject;
|
import foundation.util.Util;
|
|
public class OnsiteQtyValidDateCheck extends RuleAction {
|
|
public static String remark = "即时买赠优惠效期限制";
|
|
public OnsiteQtyValidDateCheck() {
|
super();
|
}
|
|
@Override
|
public void createBoard(OrderCalculator calculator, CheckResult result) {
|
OnsiteRecords records = calculator.getOnsiteRecords();
|
|
if (records == null || records.size() == 0 ) {
|
return ;
|
}
|
|
Set<String> recordIds = new HashSet<String>();
|
recordIds.add(Util.quotedStr(""));
|
int cnt = 0;
|
|
for (OnsiteRecord record: records) {
|
if (record.isOnsiteQty()) {
|
recordIds.add(Util.quotedStr(record.getId()));
|
}
|
}
|
|
DataObject dataObject = DataObject.getInstance("agm_record_gift");
|
|
try {
|
Filter filter = new Filter();
|
filter = new Filter("suspend_date", "<", Util.StringToDate(Util.newDateStr()));
|
filter.add("id", "in", "(" + String.join(",", recordIds) + ")");
|
EntitySet invalidRebates = dataObject.getTableEntitySet(filter);
|
|
for (Entity entity: invalidRebates) {
|
String expireDate = Util.DataTimeToString(entity.getDate("suspend_date"), Util.NORMALFORMAT);
|
result.writeOneRemark("即时买赠编码:【" + entity.getString("record_no") + "】到期日期:" + expireDate);
|
cnt++;
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//5. 计算结果
|
boolean success = cnt < 1;
|
|
result.setSuccess(success);
|
|
if (success) {
|
result.clearRemarks();
|
}
|
}
|
|
@Override
|
public boolean check(OrderCalculator calculator, OrderEvent event, DataWriter dataWriter) {
|
OnsiteRecords records = calculator.getOnsiteRecords();
|
|
if (records == null || records.size() == 0 ) {
|
return true;
|
}
|
|
List<String> remarks = new ArrayList<String>();
|
Set<String> recordIds = new HashSet<String>();
|
recordIds.add(Util.quotedStr(""));
|
|
for (OnsiteRecord record: records) {
|
if (record.isOnsiteQty()) {
|
recordIds.add(Util.quotedStr(record.getId()));
|
}
|
}
|
|
DataObject dataObject = DataObject.getInstance("agm_record_gift");
|
|
try {
|
Filter filter = new Filter();
|
filter = new Filter("suspend_date", "<", Util.StringToDate(Util.newDateStr()));
|
filter.add("id", "in", "(" + String.join(",", recordIds) + ")");
|
EntitySet invalidRecords = dataObject.getTableEntitySet(filter);
|
|
for (Entity entity: invalidRecords) {
|
String expireDate = Util.DataTimeToString(entity.getDate("suspend_date"), Util.NORMALFORMAT);
|
remarks.add("即时买赠编码:【" + entity.getString("record_no") + "】到期日期:" + expireDate);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
//计算结果
|
boolean success = remarks.size() < 1;
|
|
if (!success) {
|
if(CheckLevel.Info.equals(meta.getLevel())) {
|
dataWriter.reportOneAlert("OnsiteQtyValidDateCheck", "即时买赠效期检查不通过:" + meta.getTitle());
|
for (String remark: remarks) {
|
dataWriter.reportOneAlert("OnsiteQtyValidDateCheck", " " + remark);
|
}
|
|
return true;
|
}
|
|
dataWriter.reportOneError("OnsiteQtyValidDateCheck", "即时买赠效期检查不通过:" + meta.getTitle());
|
for (String remark: remarks) {
|
dataWriter.reportOneError("OnsiteQtyValidDateCheck", " " + remark);
|
}
|
}
|
|
return success;
|
}
|
}
|