|
@@ -1,6 +1,7 @@
|
|
|
package com.rongwei.rwapsserver.aps.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.rongwei.rwapsserver.aps.domain.ApsOverallConfig;
|
|
|
import com.rongwei.rwapsserver.aps.domain.ApsSolution;
|
|
@@ -130,8 +131,8 @@ public class DdApsServiceImpl implements DdApsService {
|
|
|
}
|
|
|
if(mergePro.getPreviousProcesses() != null && mergePro.getPreviousProcesses().size()>0){
|
|
|
// 合并作业的上一道工序
|
|
|
- mergePro.getPreviousProcesses().addAll(mergePres.get(i).getPreviousProcesses());
|
|
|
- mergePro.getPreviousProcessesIds().addAll(mergePres.get(i).getPreviousProcessesIds());
|
|
|
+ CollUtil.addAllIfNotContains(mergePro.getPreviousProcesses(),mergePres.get(i).getPreviousProcesses());
|
|
|
+ CollUtil.addAllIfNotContains(mergePro.getPreviousProcessesIds(),mergePres.get(i).getPreviousProcessesIds());
|
|
|
// 合并作业上一道工序的下一道工序设置为当前合并作业
|
|
|
for (ProductionProcesses previousProcess : mergePres.get(i).getPreviousProcesses()) {
|
|
|
previousProcess.getNextProcesses().clear();
|
|
@@ -661,6 +662,8 @@ public class DdApsServiceImpl implements DdApsService {
|
|
|
// 根据订单分组
|
|
|
Map<String, List<ProductionProcesses>> orderProcess = mergeprocesses.stream().collect(Collectors.groupingBy(ProductionProcesses::getOrderId));
|
|
|
orderProcess.forEach((pk,processes)->{
|
|
|
+ // 被合并的作业
|
|
|
+ List<ProductionProcesses> lzbzMergeOthers = new ArrayList<>();
|
|
|
try{
|
|
|
if(processes != null && processes.size()>0){
|
|
|
// 获取所有根节点
|
|
@@ -673,8 +676,6 @@ public class DdApsServiceImpl implements DdApsService {
|
|
|
// 获取第一道未锁定工序数据
|
|
|
List<ProductionProcesses> firstNotLockPros = new ArrayList<>();
|
|
|
getFirstNotLockPros(rootPros,firstNotLockPros);
|
|
|
- // 被合并的作业
|
|
|
- List<ProductionProcesses> lzbzMergeOthers = new ArrayList<>();
|
|
|
// 根据根节点逐级查询是否可合并的作业
|
|
|
if(firstNotLockPros != null && firstNotLockPros.size()>0){
|
|
|
Map<String,List<ProductionProcesses>> lzbzMerges = new HashMap<>();
|
|
@@ -709,12 +710,25 @@ public class DdApsServiceImpl implements DdApsService {
|
|
|
fMergePro.setNextProcessesIds(serPros.get(i).getNextProcessesIds());
|
|
|
if(fMergePro.getNextProcesses() != null && fMergePro.getNextProcesses().size()>0){
|
|
|
for (ProductionProcesses nextProcess : fMergePro.getNextProcesses()) {
|
|
|
- List<ProductionProcesses> pres = new ArrayList<>();
|
|
|
+ int iindex = nextProcess.getPreviousProcessesIds().indexOf(serPros.get(i).getId());
|
|
|
+ if(iindex>=0){
|
|
|
+ List<ProductionProcesses> pres = new ArrayList<>();
|
|
|
+ pres.add(fMergePro);
|
|
|
+ for (ProductionProcesses previousProcess : nextProcess.getPreviousProcesses()) {
|
|
|
+ if(!previousProcess.getId().equals(serPros.get(i).getId())){
|
|
|
+ pres.add(previousProcess);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ nextProcess.setPreviousProcesses(pres);
|
|
|
+ List<String> nextPreIds = nextProcess.getPreviousProcesses().stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ nextProcess.setPreviousProcessesIds(nextPreIds);
|
|
|
+ }
|
|
|
+ /*List<ProductionProcesses> pres = new ArrayList<>();
|
|
|
List<String> preids = new ArrayList<>();
|
|
|
pres.add(fMergePro);
|
|
|
preids.add(fMergePro.getId());
|
|
|
nextProcess.setPreviousProcesses(pres);
|
|
|
- nextProcess.setPreviousProcessesIds(preids);
|
|
|
+ nextProcess.setPreviousProcessesIds(preids);*/
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -725,20 +739,19 @@ public class DdApsServiceImpl implements DdApsService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // 除去被合并的作业
|
|
|
- if(lzbzMergeOthers != null && lzbzMergeOthers.size()>0){
|
|
|
- List<String> lzbzMergeOtherIds = lzbzMergeOthers.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
- for (ProductionProcesses mergeprocess : mergeprocesses) {
|
|
|
- if(!lzbzMergeOtherIds.contains(mergeprocess.getId())){
|
|
|
- retPros.add(mergeprocess);
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- retPros.addAll(mergeprocesses);
|
|
|
- }
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
log.error("连续冷轧箔轧作业合并",e);
|
|
|
+ }finally {
|
|
|
+ // 除去被合并的作业
|
|
|
+ if(lzbzMergeOthers != null && lzbzMergeOthers.size()>0){
|
|
|
+ List<String> lzbzMergeOtherIds = lzbzMergeOthers.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ for (ProductionProcesses mergeprocess : processes) {
|
|
|
+ if(!lzbzMergeOtherIds.contains(mergeprocess.getId())){
|
|
|
+ retPros.add(mergeprocess);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
return retPros;
|