|
@@ -329,7 +329,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
.withEntityClasses(ProductionProcesses.class)
|
|
|
.withConstraintProviderClass(ApsConstraintProvider.class)
|
|
|
// .withTerminationSpentLimit(Duration.ofSeconds(runPlanSeconds1))
|
|
|
- .withTerminationConfig(new TerminationConfig().withUnimprovedSecondsSpentLimit(120L))
|
|
|
+ .withTerminationConfig(new TerminationConfig().withUnimprovedSecondsSpentLimit(60L))
|
|
|
.withMoveThreadCount(cores)
|
|
|
);
|
|
|
Solver<ApsSolution> solver1 = solverFactory1.buildSolver();
|
|
@@ -596,36 +596,41 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 设置待合并退火的主ID
|
|
|
thps.get(i).setMergeThMainId(thps.get(0).getId());
|
|
|
otherThproces.add(thps.get(i));
|
|
|
- for (String previousProcessesId : thps.get(i).getPreviousProcessesIds()) {
|
|
|
- // 退火前一道作业设置下一作业ID
|
|
|
- ProductionProcesses prepro = allProMap.get(previousProcessesId);
|
|
|
- // 合并后关联关系重置
|
|
|
- if(!prepro.getNextProcessesIds().contains(thps.get(0).getId())){
|
|
|
- int i1 = prepro.getNextProcessesIds().indexOf(thps.get(i).getId());
|
|
|
- prepro.getNextProcessesIds().set(i1,thps.get(0).getId());
|
|
|
- }
|
|
|
- List<String> list = new ArrayList<>();
|
|
|
- Set<String> set = new LinkedHashSet<>();
|
|
|
- for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
- set.add(nextProcessesId);
|
|
|
- }
|
|
|
- list.addAll(set);
|
|
|
- prepro.setNextProcessesIds(list);
|
|
|
- List<ProductionProcesses> nextpros = new ArrayList<>();
|
|
|
- for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
- nextpros.add(allProMap.get(nextProcessesId));
|
|
|
- }
|
|
|
- prepro.setNextProcesses(nextpros);
|
|
|
+ if(thps.get(i).getPreviousProcessesIds() != null && thps.get(i).getPreviousProcessesIds().size()>0){
|
|
|
+ for (String previousProcessesId : thps.get(i).getPreviousProcessesIds()) {
|
|
|
+ // 退火前一道作业设置下一作业ID
|
|
|
+ ProductionProcesses prepro = allProMap.get(previousProcessesId);
|
|
|
+ // 合并后关联关系重置
|
|
|
+ if(!prepro.getNextProcessesIds().contains(thps.get(0).getId())){
|
|
|
+ int i1 = prepro.getNextProcessesIds().indexOf(thps.get(i).getId());
|
|
|
+ prepro.getNextProcessesIds().set(i1,thps.get(0).getId());
|
|
|
+ }
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ Set<String> set = new LinkedHashSet<>();
|
|
|
+ for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
+ set.add(nextProcessesId);
|
|
|
+ }
|
|
|
+ list.addAll(set);
|
|
|
+ prepro.setNextProcessesIds(list);
|
|
|
+ List<ProductionProcesses> nextpros = new ArrayList<>();
|
|
|
+ for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
+ nextpros.add(allProMap.get(nextProcessesId));
|
|
|
+ }
|
|
|
+ prepro.setNextProcesses(nextpros);
|
|
|
|
|
|
- // 当前合并退火作业设置前一道作业
|
|
|
- if(!thps.get(0).getPreviousProcessesIds().contains(prepro.getId())){
|
|
|
- thps.get(0).getPreviousProcessesIds().add(prepro.getId());
|
|
|
- }
|
|
|
- List<ProductionProcesses> previousProces = new ArrayList<>();
|
|
|
- for (String pid : thps.get(0).getPreviousProcessesIds()) {
|
|
|
- previousProces.add(allProMap.get(pid));
|
|
|
+ // 当前合并退火作业设置前一道作业
|
|
|
+ if(thps.get(0).getPreviousProcessesIds() == null){
|
|
|
+ thps.get(0).setPreviousProcessesIds(new ArrayList<>());
|
|
|
+ }
|
|
|
+ if(!thps.get(0).getPreviousProcessesIds().contains(prepro.getId())){
|
|
|
+ thps.get(0).getPreviousProcessesIds().add(prepro.getId());
|
|
|
+ }
|
|
|
+ List<ProductionProcesses> previousProces = new ArrayList<>();
|
|
|
+ for (String pid : thps.get(0).getPreviousProcessesIds()) {
|
|
|
+ previousProces.add(allProMap.get(pid));
|
|
|
+ }
|
|
|
+ thps.get(0).setPreviousProcesses(previousProces);
|
|
|
}
|
|
|
- thps.get(0).setPreviousProcesses(previousProces);
|
|
|
}
|
|
|
|
|
|
// 退火后一道作业设置上一道作业ID
|
|
@@ -1115,37 +1120,42 @@ public class ApsServiceImpl implements ApsService {
|
|
|
thps.get(0).getMergeRooprocess().add(thps.get(i).getRooprocess());
|
|
|
otherThproces.add(thps.get(i));
|
|
|
// 退火前一道作业设置下一作业ID
|
|
|
- ProductionProcesses prepro = allProMap.get(thps.get(i).getPreviousProcessesIds().get(0));
|
|
|
- // 历史关联关系备份
|
|
|
- List<String> oldNextProcessesIds = new ArrayList<>();
|
|
|
- oldNextProcessesIds.addAll(prepro.getNextProcessesIds());
|
|
|
-// prepro.setOldNextProcessesIds(oldNextProcessesIds);
|
|
|
- // 合并后关联关系重置
|
|
|
- if(!prepro.getNextProcessesIds().contains(thps.get(0).getId())){
|
|
|
- int i1 = prepro.getNextProcessesIds().indexOf(thps.get(i).getId());
|
|
|
- prepro.getNextProcessesIds().set(i1,thps.get(0).getId());
|
|
|
- }
|
|
|
- List<String> list = new ArrayList<>();
|
|
|
- Set<String> set = new LinkedHashSet<>();
|
|
|
- for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
- set.add(nextProcessesId);
|
|
|
+ if(thps.get(i).getPreviousProcessesIds() == null){
|
|
|
+ int a12 = 111;
|
|
|
}
|
|
|
- list.addAll(set);
|
|
|
- prepro.setNextProcessesIds(list);
|
|
|
- List<ProductionProcesses> nextpros = new ArrayList<>();
|
|
|
- for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
- nextpros.add(allProMap.get(nextProcessesId));
|
|
|
- }
|
|
|
- prepro.setNextProcesses(nextpros);
|
|
|
- // 当前合并退火作业设置前一道作业
|
|
|
- if(!thps.get(0).getPreviousProcessesIds().contains(prepro.getId())){
|
|
|
- thps.get(0).getPreviousProcessesIds().add(prepro.getId());
|
|
|
- }
|
|
|
- List<ProductionProcesses> previousProces = new ArrayList<>();
|
|
|
- for (String pid : thps.get(0).getPreviousProcessesIds()) {
|
|
|
- previousProces.add(allProMap.get(pid));
|
|
|
+ if(thps.get(i).getPreviousProcessesIds() != null && thps.get(i).getPreviousProcessesIds().size()>0){
|
|
|
+ ProductionProcesses prepro = allProMap.get(thps.get(i).getPreviousProcessesIds().get(0));
|
|
|
+ // 历史关联关系备份
|
|
|
+ List<String> oldNextProcessesIds = new ArrayList<>();
|
|
|
+ oldNextProcessesIds.addAll(prepro.getNextProcessesIds());
|
|
|
+// prepro.setOldNextProcessesIds(oldNextProcessesIds);
|
|
|
+ // 合并后关联关系重置
|
|
|
+ if(!prepro.getNextProcessesIds().contains(thps.get(0).getId())){
|
|
|
+ int i1 = prepro.getNextProcessesIds().indexOf(thps.get(i).getId());
|
|
|
+ prepro.getNextProcessesIds().set(i1,thps.get(0).getId());
|
|
|
+ }
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
+ Set<String> set = new LinkedHashSet<>();
|
|
|
+ for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
+ set.add(nextProcessesId);
|
|
|
+ }
|
|
|
+ list.addAll(set);
|
|
|
+ prepro.setNextProcessesIds(list);
|
|
|
+ List<ProductionProcesses> nextpros = new ArrayList<>();
|
|
|
+ for (String nextProcessesId : prepro.getNextProcessesIds()) {
|
|
|
+ nextpros.add(allProMap.get(nextProcessesId));
|
|
|
+ }
|
|
|
+ prepro.setNextProcesses(nextpros);
|
|
|
+ // 当前合并退火作业设置前一道作业
|
|
|
+ if(!thps.get(0).getPreviousProcessesIds().contains(prepro.getId())){
|
|
|
+ thps.get(0).getPreviousProcessesIds().add(prepro.getId());
|
|
|
+ }
|
|
|
+ List<ProductionProcesses> previousProces = new ArrayList<>();
|
|
|
+ for (String pid : thps.get(0).getPreviousProcessesIds()) {
|
|
|
+ previousProces.add(allProMap.get(pid));
|
|
|
+ }
|
|
|
+ thps.get(0).setPreviousProcesses(previousProces);
|
|
|
}
|
|
|
- thps.get(0).setPreviousProcesses(previousProces);
|
|
|
// 退火后一道作业设置上一道作业ID
|
|
|
if(thps.get(i).getNextProcessesIds() != null && thps.get(i).getNextProcessesIds().size()>0){
|
|
|
for (String nextProcessesId : thps.get(i).getNextProcessesIds()) {
|