|
@@ -48,7 +48,7 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
.filter(productionProcesses -> {
|
|
|
return !productionProcesses.getOptionalEquipments().contains(productionProcesses.getEquipment().getId());
|
|
|
})
|
|
|
- .penalize(HardSoftScore.ONE_HARD,(productionProcesses) -> 100)
|
|
|
+ .penalize(HardSoftScore.ONE_HARD,(productionProcesses) -> 300)
|
|
|
.asConstraint("eqTypeSame");
|
|
|
}
|
|
|
|
|
@@ -338,7 +338,7 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
// 开始时间:最后一批次结束时间加流转时间,再往前倒排批次数减一乘以单批次生产时间
|
|
|
LocalDateTime startTime1 = endTime.plusMinutes(lzTimes).minusMinutes(productionProcesses.getUnitProduceTime() * (productionProcesses.getProducePcNum() - 1));
|
|
|
// 结束时间重新赋值
|
|
|
- productionProcesses.setEndTime(endTime.plusMinutes(lzTimes).plusMinutes(productionProcesses.getUnitProduceTime()));
|
|
|
+// productionProcesses.setEndTime(endTime.plusMinutes(lzTimes).plusMinutes(productionProcesses.getUnitProduceTime()));
|
|
|
if(productionProcesses.getStartTime().compareTo(startTime1)<0){
|
|
|
bln = true;
|
|
|
}
|
|
@@ -399,6 +399,10 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
if(equipmentRunTime.getStartRunTime() != null && equipmentRunTime.getEndRunTime() != null){
|
|
|
LocalDateTime startTime = equipmentRunTime.getStartRunTime();
|
|
|
LocalDateTime endRunTime = equipmentRunTime.getEndRunTime();
|
|
|
+ if(productionProcesses.getStartTime() == null || productionProcesses.getEndTime() == null){
|
|
|
+ bol = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
if((productionProcesses.getStartTime().compareTo(startTime)>=0 && productionProcesses.getStartTime().compareTo(endRunTime)<=0)
|
|
|
|| (productionProcesses.getEndTime().compareTo(startTime)>=0 && productionProcesses.getEndTime().compareTo(endRunTime)<=0)){
|
|
|
bol = true;
|
|
@@ -461,9 +465,6 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
boolean bol = false;
|
|
|
if(productionProcesses.getPreviousProcesses() != null && productionProcesses.getPreviousProcesses().size()>0){
|
|
|
for (ProductionProcesses previousProcess : productionProcesses.getPreviousProcesses()) {
|
|
|
- if(previousProcess.getEquipment() == null){
|
|
|
- continue;
|
|
|
- }
|
|
|
Integer lzTimes = 0;
|
|
|
if(previousProcess.getEquipment() == null){
|
|
|
System.out.println("previousProcess.getEquipment() == null");
|
|
@@ -505,6 +506,9 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
(StrUtil.isNotBlank(proc1.getMergeProcessMark()) && StrUtil.isNotBlank(proc2.getMergeProcessMark()) && proc1.getMergeProcessMark().equals(proc2.getMergeProcessMark()))){
|
|
|
return false;
|
|
|
}
|
|
|
+ if(proc1.getStartTime() == null || proc2.getStartTime() == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
Boolean b1 = (proc1.getStartTime().compareTo(proc2.getStartTime())<=0 && proc2.getStartTime().compareTo(proc1.getEndTime())<=0);
|
|
|
Boolean b2 = (proc2.getStartTime().compareTo(proc1.getStartTime())<=0 && proc1.getStartTime().compareTo(proc2.getEndTime())<=0);
|
|
|
return b1 || b2;
|
|
@@ -536,7 +540,9 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ if(productionProcesses.getEndTime() == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
Boolean bol = productionProcesses.getNextProcesses() == null &&
|
|
|
productionProcesses.getEndTime().atZone(zoneId).toInstant().toEpochMilli()>deliveryMinDate.getTime();
|
|
|
return bol;
|
|
@@ -599,6 +605,11 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
return constraintFactory.forEach(ProductionProcesses.class)
|
|
|
.groupBy(ProductionProcesses::getEquipmentId, ConstraintCollectors.toList())
|
|
|
.filter((equipmentId,processes) -> {
|
|
|
+ for (ProductionProcesses process : processes) {
|
|
|
+ if(process.getStartTime() == null){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
if(processes != null && processes.size()>1){
|
|
|
// 安装开始时间排序
|
|
|
Collections.sort(processes, Comparator.comparing(ProductionProcesses::getStartTime));
|