0

我有一个必须处理资源管理的 java web 应用程序。

例如

Dept      Min     Max   Resource    Effective Date      Last Date
 HR        1       3      Alex        08/19/2013        12/31/2013
 HR        1       3      Adam        08/19/2013        12/31/2013

 IT        2       5      Jade        08/19/2013        10/31/2013
 IT        2       5      Robert      11/01/2013        12/31/2013
 IT        2       5      Lisa        08/19/2013        12/31/2013

我有不同的部门,它们预设了我可以分配为经理的最小/最大员工。所以 HR 部门的最小值为 1,最大值为 3,我从今天到年底分配了 2 个。

在 IT 部门,我为 Jade 和 robert 分配了部分日期,以便在整个期间将它们计为 1。丽莎端到端。加起来是 2,在最小/最大范围内。

基本上,底线是在任何时候我都必须确保分配不会违反最小/最大规则。所以,我想要关于如何在 Java 应用程序中验证这些场景的建议。您发现有用的任何开源 API。

4

1 回答 1

1

如果我正确理解了您的问题,那么您基本上想找出哪些间隔重叠。关于日期,我通常倾向于使用http://joda-time.sourceforge.net/,因为与开箱即用的 java Date 相比,它有一个非常干净和漂亮的 API。

Joda time 还提供了间隔和检查间隔是否重叠的方法:http: //joda-time.sourceforge.net/apidocs/org/joda/time/Interval.html#overlap( org.joda.time.ReadableInterval)

然而它对我不起作用,因为我想每天检查一次,因此我必须自己实现它,使用 Joda time Intervals 作为基础对象:

public static boolean checkInteraction(Interval one, Interval another) {
    return  ((one.getEnd().equals(another.getStart()) || one.getEnd().isAfter(another.getStart())) &&
            (another.getEnd().isAfter(one.getStart()) || another.getEnd().equals(one.getStart())));
}

有了这个,您可以检查间隔并检查它们是否重叠/交互并检查它是否超过您的最大数量。

于 2013-08-19T13:06:37.673 回答