[英]How to get a maximum date among the list of past dates in drools?
从订单列表中,我需要收集到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;
}
-9223372036854775808是Long.MIN_VALUE。 这是结论性的,表明累加器没有找到任何定单。
确保您插入一些匹配的订单事实。
添加一个警戒,使maxEffDate为!= Long.MIN_VALUE。
停止使用Date作为一天中的时间值:要么使用LocalDate和LocalTime,要么将日期和时间组合为单个Date值。
请注意,日期和时间的转换不受您的语言环境设置的影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.