从订单列表中,我需要收集过去的日期到requesteffDate和requesteffTime,并采用过去日期的最大值。
function boolean dateCheck(Date effdt, Date efftm) {
String efffdt = new SimpleDateFormat("yyyyMMdd").format(effdt);
String effftm = new SimpleDateFormat("HHmm").format(efftm);
Date effdttm = new SimpleDateFormat("yyyyMMddHHmm").parse(efffdt + "" + effftm);
return effdttm.before(new Date());
}
rule "finding past maximum date"
when
$company : Company( $date:requesteffDate, $time:requesteffTime, $reqdt : requesteffDate.getTime(), $reqtm : requesteffTime.getTime() )
eval(dateCheck($date,$time))
accumulate(Orders( effectiveDate != null,
effdate:effectiveDate.getTime()<$reqdt),
maxEffDate:max(effdate))
then
//error
执行此操作时,
accumulate(Orders(effectiveDate!=null,
effdate:effectiveDate.getTime()<$reqdt),
maxEffDate:max(effdate))
我的maxEffDate为-9223372036854775808,转换时显示为1940
同样我尝试使用min functionn它显示2262。
我的班级就是这样。
Class Company{
private Date requesteffDate;
private Date requesteffTime;
private Employee emp;
private List<Orders> orderlist;
}
Class Orders{
private Date effectiveDate;
private Date effectiveTime;
}
答案 0 :(得分:0)
-9223372036854775808是Long.MIN_VALUE。这是确定的,表明累积没有找到任何订单。
确保插入一些匹配的订单事实。
添加一个maxEffDate的守卫!= Long.MIN_VALUE。
停止使用Date作为时间值:使用LocalDate和LocalTime或将日期和时间组合到单个Date值中。
请注意日期和时间的转换不受您的区域设置的影响。