TransportOrderEquipmentRequirementConstraint.java
package com.v1rex.liftnexus.planning.constraints;
import ai.timefold.solver.core.api.score.HardSoftScore;
import ai.timefold.solver.core.api.score.stream.Constraint;
import ai.timefold.solver.core.api.score.stream.ConstraintFactory;
import com.v1rex.liftnexus.transportorder.domain.TransportOrder;
public class TransportOrderEquipmentRequirementConstraint {
public static Constraint equipmentType(ConstraintFactory factory) {
return factory
.forEach(TransportOrder.class)
.filter(order -> order.getAssignedForklift() != null)
.filter(order -> order.getRequiredEquipment() != null)
.filter(
order ->
!order
.getRequiredEquipment()
.equals(order.getAssignedForklift().getForkliftType().getEquipmentType()))
.penalize(HardSoftScore.ONE_HARD)
.asConstraint("Transport order equipment requirement");
}
}