|
@@ -79,18 +79,30 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
* @param process
|
|
|
*/
|
|
|
private void setNextAllStartTime(ScoreDirector<ApsSolution> scoreDirector,ProductionProcesses process){
|
|
|
- /*if("d49913c98e6945ca851f8231b62d9ea9".equals(process.getId()) && "0001be252874536843730b100021".equals(process.getEquipment().getId())){
|
|
|
- System.out.println(process.getId());
|
|
|
- }*/
|
|
|
- LocalDateTime startDateTime = startTimeSet(process);
|
|
|
- scoreDirector.beforeVariableChanged(process, "startTime");
|
|
|
- process.setStartTime(startDateTime);
|
|
|
- scoreDirector.afterVariableChanged(process, "startTime");
|
|
|
- if(process.getNextProcesses() != null && process.getNextProcesses().size()>0){
|
|
|
- for (ProductionProcesses nextProcess : process.getNextProcesses()) {
|
|
|
- setNextAllStartTime(scoreDirector,nextProcess);
|
|
|
+ if(process.getEquipment() != null){
|
|
|
+ /*if("5ba50382a57648aebbcfce233160e4c5".equals(process.getId()) && "0001be252874536843730b100016".equals(process.getEquipment().getId())){
|
|
|
+ process.getId();
|
|
|
+ }*/
|
|
|
+ LocalDateTime startDateTime = startTimeSet(process);
|
|
|
+ if(process.getDelay() != null && process.getDelay()>0){
|
|
|
+ if(process.getProduceTime()>1000){
|
|
|
+ int bc = (int) Math.ceil((double) process.getProduceTime() / 20);
|
|
|
+ startDateTime = startDateTime.plusMinutes(process.getDelay() * bc);
|
|
|
+ }else{
|
|
|
+ startDateTime = startDateTime.plusMinutes(process.getDelay() * 20);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ scoreDirector.beforeVariableChanged(process, "startTime");
|
|
|
+ process.setStartTime(startDateTime);
|
|
|
+ scoreDirector.afterVariableChanged(process, "startTime");
|
|
|
+ if(process.getNextProcesses() != null && process.getNextProcesses().size()>0){
|
|
|
+ for (ProductionProcesses nextProcess : process.getNextProcesses()) {
|
|
|
+ setNextAllStartTime(scoreDirector,nextProcess);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
// 前置任务最大等待时间修正
|
|
|
// preProcessCheck(scoreDirector,process);
|
|
|
}
|
|
@@ -367,8 +379,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
allRunTimes.add(copy);
|
|
|
}
|
|
|
}
|
|
|
- if(process.getEquipment().getProcessesList() != null && process.getEquipment().getProcessesList().size()>0){
|
|
|
-// System.out.println("process.getEquipment().getProcessesList():"+process.getEquipment().getProcessesList().size());
|
|
|
+ /*if(process.getEquipment().getProcessesList() != null && process.getEquipment().getProcessesList().size()>0){
|
|
|
for (ProductionProcesses productionProcesses : process.getEquipment().getProcessesList()) {
|
|
|
if(productionProcesses.getStartTime() != null && productionProcesses.getEndTime() != null && !productionProcesses.getId().equals(process.getId())){
|
|
|
EquipmentRunTime copy = new EquipmentRunTime();
|
|
@@ -377,11 +388,11 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
allRunTimes.add(copy);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
// 按照开始时间排序
|
|
|
allRunTimes.sort(Comparator.comparing(EquipmentRunTime::getStartRunTime));
|
|
|
|
|
|
- /*if(allRunTimes.size()>0){
|
|
|
+ if(allRunTimes.size()>0){
|
|
|
for (EquipmentRunTime equipmentRunTime : allRunTimes) {
|
|
|
if(proStartTime.compareTo(equipmentRunTime.getEndRunTime())>0 || proEndTime.compareTo(equipmentRunTime.getStartRunTime())<0){
|
|
|
continue;
|
|
@@ -390,7 +401,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
proEndTime = proStartTime.plusMinutes(process.getProduceTime());
|
|
|
}
|
|
|
}
|
|
|
- }*/
|
|
|
+ }
|
|
|
|
|
|
toUpdateStartTime = proStartTime;
|
|
|
}
|
|
@@ -408,7 +419,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
allRunTimes.add(copy);
|
|
|
}
|
|
|
}
|
|
|
- if(process.getEquipment().getProcessesList() != null && process.getEquipment().getProcessesList().size()>0){
|
|
|
+ /*if(process.getEquipment().getProcessesList() != null && process.getEquipment().getProcessesList().size()>0){
|
|
|
for (ProductionProcesses productionProcesses : process.getEquipment().getProcessesList()) {
|
|
|
if(productionProcesses.getStartTime() != null && productionProcesses.getEndTime() != null && !productionProcesses.getId().equals(process.getId())){
|
|
|
EquipmentRunTime copy = new EquipmentRunTime();
|
|
@@ -417,10 +428,10 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
allRunTimes.add(copy);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
allRunTimes.sort(Comparator.comparing(EquipmentRunTime::getStartRunTime));
|
|
|
|
|
|
- /*if(allRunTimes.size()>0){
|
|
|
+ if(allRunTimes.size()>0){
|
|
|
for (EquipmentRunTime equipmentRunTime : allRunTimes) {
|
|
|
if(proStartTime.compareTo(equipmentRunTime.getEndRunTime())>0 || proEndTime.compareTo(equipmentRunTime.getStartRunTime())<0){
|
|
|
continue;
|
|
@@ -429,7 +440,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
|
|
|
proEndTime = proStartTime.plusMinutes(process.getProduceTime());
|
|
|
}
|
|
|
}
|
|
|
- }*/
|
|
|
+ }
|
|
|
toUpdateStartTime = proStartTime;
|
|
|
}
|
|
|
|