|
@@ -1101,9 +1101,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
for (ProductionProcesses process : orderpss) {
|
|
|
if("成退".equals(process.getProcessType()) || "中退".equals(process.getProcessType()) || "小卷成退".equals(process.getProcessType())){
|
|
|
// 锁定的不参与合并
|
|
|
- if(process.getIfLock()){
|
|
|
- mergeprocesses.add(process);
|
|
|
- }else{
|
|
|
+// if(process.getIfLock()){
|
|
|
+// mergeprocesses.add(process);
|
|
|
+// }else{
|
|
|
String bsproid = process.getBsProcessesId().get(0);
|
|
|
List<ProductionProcesses> bsprocess = thproMap.get(bsproid);
|
|
|
if(bsprocess == null){
|
|
@@ -1111,7 +1111,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
bsprocess.add(process);
|
|
|
thproMap.put(bsproid,bsprocess);
|
|
|
- }
|
|
|
+// }
|
|
|
}else{
|
|
|
mergeprocesses.add(process);
|
|
|
|
|
@@ -1182,7 +1182,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
Map<String, List<ProductionProcesses>> map = new TreeMap<>();
|
|
|
for (ProductionProcesses productionProcesses : lockpps) {
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- String startStr = productionProcesses.getStartTime().format(formatter);
|
|
|
+ String startStr = productionProcesses.getEquipmentId()+"!"+productionProcesses.getStartTime().format(formatter);
|
|
|
if(map.containsKey(startStr)){
|
|
|
map.get(startStr).add(productionProcesses);
|
|
|
}else{
|
|
@@ -1414,7 +1414,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 根据订单分组
|
|
|
Map<String, List<ProductionProcesses>> orderProcess = mergeprocesses.stream().collect(Collectors.groupingBy(ProductionProcesses::getOrderId));
|
|
|
orderProcess.forEach((k,processes)->{
|
|
|
- if("6639310eb2204f77ac9d36a2f289039c".equals(k)){
|
|
|
+ if("34a32ead88984c7a848f1530d987bfdf".equals(k)){
|
|
|
int a = 1;
|
|
|
}
|
|
|
// 退火工序过滤
|
|
@@ -1436,8 +1436,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
} else if (mergeprocess.getProcessType().equals("铸轧")) {
|
|
|
othermergeprocesses.add(mergeprocess);
|
|
|
} else {
|
|
|
- if(("是".equals(mergeprocess.getIssubsection()) && mergeprocess.getNextProcesses() != null && mergeprocess.getNextProcesses().size()>0
|
|
|
- && !mergeprocess.getNextProcesses().get(0).getProcessType().equals("小卷成退")) || mergeprocess.getIfLock()){
|
|
|
+ if((("是".equals(mergeprocess.getIssubsection()) && mergeprocess.getNextProcesses() != null && mergeprocess.getNextProcesses().size()>0
|
|
|
+ && !mergeprocess.getNextProcesses().get(0).getProcessType().equals("小卷成退") && !"dd".equals(mergeprocess.getApsOverallConfig().getScheduleType().getScheduleType()))
|
|
|
+ || mergeprocess.getIfLock())){
|
|
|
othermergeprocesses.add(mergeprocess);
|
|
|
}else {
|
|
|
/*if(mergeprocess.getPreviousProcessesIds() == null || mergeprocess.getPreviousProcessesIds().size() == 0){
|
|
@@ -1614,6 +1615,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
// 记录分卷已合并作业
|
|
|
List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
hasMerge.addAll(proids);
|
|
|
}
|
|
|
}
|
|
@@ -1675,6 +1679,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap){
|
|
|
List<ProductionProcesses> nextProcesses = thps.getNextProcesses();
|
|
|
if(nextProcesses != null && nextProcesses.size()>0){
|
|
|
+ List<ProductionProcesses> notlocknexts = nextProcesses.stream().filter(v -> !v.getIfLock()).collect(Collectors.toList());
|
|
|
if(!nextProcesses.get(0).getProcessType().equals("铸轧") && !nextProcesses.get(0).getProcessType().equals("成退")
|
|
|
&& !nextProcesses.get(0).getProcessType().equals("中退") && !nextProcesses.get(0).getProcessType().equals("小卷成退")
|
|
|
// && nextProcesses.get(0).getPreviousProcessesIds() != null && nextProcesses.get(0).getPreviousProcessesIds().size()>0
|
|
@@ -1682,7 +1687,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 分卷工序
|
|
|
if(("是".equals(nextProcesses.get(0).getIssubsection()) && nextProcesses.get(0).getNextProcesses() != null && nextProcesses.get(0).getNextProcesses().size()>0
|
|
|
&& !nextProcesses.get(0).getNextProcesses().get(0).getProcessType().equals("小卷成退"))
|
|
|
- || nextProcesses.get(0).getIfLock()){
|
|
|
+ || notlocknexts == null || notlocknexts.size() == 0){
|
|
|
for (ProductionProcesses nextProcess : nextProcesses) {
|
|
|
List<ProductionProcesses> pres = new ArrayList<>();
|
|
|
List<String> preids = new ArrayList<>();
|
|
@@ -1695,16 +1700,23 @@ public class ApsServiceImpl implements ApsService {
|
|
|
if(processesList != null && processesList.size()>0){
|
|
|
// 如果未合并则合并,并记录已合并的作业
|
|
|
if(!hasMerge.contains(processesList.get(0).getId())){
|
|
|
- // 分卷的工序从此到工序的上一道工序开始合并,默认4卷
|
|
|
- fjNextMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
- // 记录合并作业ID
|
|
|
- List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
- hasMerge.addAll(proids);
|
|
|
+ if("是".equals(nextProcesses.get(0).getIssubsection()) && nextProcesses.get(0).getNextProcesses() != null && nextProcesses.get(0).getNextProcesses().size()>0
|
|
|
+ && !nextProcesses.get(0).getNextProcesses().get(0).getProcessType().equals("小卷成退")
|
|
|
+ && (nextProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType() == null || !"dd".equals(nextProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType()))){
|
|
|
+ // 分卷的工序从此到工序的下一道工序开始合并,默认4卷
|
|
|
+ fjNextMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ // 记录合并作业ID
|
|
|
+ List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
+ hasMerge.addAll(proids);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
List<ProductionProcesses> mergePres = new ArrayList<>();
|
|
|
- mergePres.addAll(nextProcesses);
|
|
|
+ mergePres.addAll(notlocknexts);
|
|
|
// 按照铸轧时间排序
|
|
|
if(mergePres.get(0).getRooprocess() != null && mergePres.get(0).getRooprocess().getStartTime() != null){
|
|
|
Collections.sort(mergePres,Comparator.comparing(pro -> pro.getRooprocess().getStartTime()));
|
|
@@ -1762,6 +1774,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 记录已合并的作业
|
|
|
if(!hasMerge.contains(mergePres.get(0).getId())){
|
|
|
List<String> proids = mergePres.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
hasMerge.addAll(proids);
|
|
|
}
|
|
|
// 递归按照退火合并
|
|
@@ -1783,14 +1798,21 @@ public class ApsServiceImpl implements ApsService {
|
|
|
private void thPreProMerge(ProductionProcesses thps,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
|
|
|
,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
|
|
|
List<ProductionProcesses> previousProcesses = thps.getPreviousProcesses();
|
|
|
+
|
|
|
+ /*List<ProductionProcesses> test1s = previousProcesses.stream().filter(v -> v.getId().equals("e0d6df86e8ea4f14a26b8b6642d5e50e")).collect(Collectors.toList());
|
|
|
+ if(test1s != null && test1s.size()>0){
|
|
|
+ int m = 1;
|
|
|
+ }*/
|
|
|
if(previousProcesses != null && previousProcesses.size()>0){
|
|
|
+ List<ProductionProcesses> notlockPres = previousProcesses.stream().filter(v -> !v.getIfLock()).collect(Collectors.toList());
|
|
|
// 铸轧、退火、和第一道工序不合并
|
|
|
if(!previousProcesses.get(0).getProcessType().equals("铸轧") && !previousProcesses.get(0).getProcessType().equals("成退")
|
|
|
&& !previousProcesses.get(0).getProcessType().equals("中退") && !previousProcesses.get(0).getProcessType().equals("小卷成退")
|
|
|
// && previousProcesses.get(0).getPreviousProcessesIds() != null && previousProcesses.get(0).getPreviousProcessesIds().size()>0
|
|
|
){
|
|
|
// 分卷工序
|
|
|
- if(("是".equals(previousProcesses.get(0).getIssubsection()) && !thps.getProcessType().equals("小卷成退")) || previousProcesses.get(0).getIfLock()){
|
|
|
+ if((previousProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType() == null || !"dd".equals(previousProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType()))
|
|
|
+ && (("是".equals(previousProcesses.get(0).getIssubsection()) && !thps.getProcessType().equals("小卷成退")) || notlockPres == null || notlockPres.size() == 0)){
|
|
|
for (ProductionProcesses preProcess : previousProcesses) {
|
|
|
List<ProductionProcesses> nexts = new ArrayList<>();
|
|
|
if(preProcess.getNextProcesses().size()>1){
|
|
@@ -1811,77 +1833,98 @@ public class ApsServiceImpl implements ApsService {
|
|
|
if(processesList != null && processesList.size()>0){
|
|
|
// 如果未合并则合并,并记录已合并的作业
|
|
|
if(!hasMerge.contains(processesList.get(0).getId())){
|
|
|
- // 分卷的工序从此到工序的上一道工序开始合并,默认4卷
|
|
|
- fjMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
- // 记录合并作业ID
|
|
|
- List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
- hasMerge.addAll(proids);
|
|
|
+ if("是".equals(previousProcesses.get(0).getIssubsection()) && !thps.getProcessType().equals("小卷成退")
|
|
|
+ && (previousProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType() == null || !"dd".equals(previousProcesses.get(0).getApsOverallConfig().getScheduleType().getScheduleType()))){
|
|
|
+ // 分卷的工序从此到工序的上一道工序开始合并,默认4卷
|
|
|
+ fjMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
+ // 记录合并作业ID
|
|
|
+ List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
+ hasMerge.addAll(proids);
|
|
|
+ }else{
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
|
- List<ProductionProcesses> mergePres = new ArrayList<>();
|
|
|
- mergePres.addAll(previousProcesses);
|
|
|
- // 按照铸轧时间排序
|
|
|
- if(mergePres.get(0).getRooprocess() != null && mergePres.get(0).getRooprocess().getStartTime() != null){
|
|
|
- Collections.sort(mergePres,Comparator.comparing(pro -> pro.getRooprocess().getStartTime()));
|
|
|
- }
|
|
|
- if(!hasMerge.contains(mergePres.get(0).getId())){
|
|
|
- ProductionProcesses mergePro = mergePres.get(0);
|
|
|
- Map<String,ProductionProcesses> mergeProPres = new HashMap<>();
|
|
|
- if(mergePres.size()>1){
|
|
|
- List<String> mergeProOrders = new ArrayList<>();
|
|
|
- mergeProOrders.add(mergePro.getId());
|
|
|
- mergePro.setMergeProOrders(mergeProOrders);
|
|
|
- for (int i = 0; i < mergePres.size(); i++) {
|
|
|
- if(i>0){
|
|
|
- // 设置待合并退火的主ID
|
|
|
- mergePres.get(i).setMergeThMainId(mergePres.get(0).getId());
|
|
|
- mergePro.getMergeProOrders().add(mergePres.get(i).getId());
|
|
|
- notMergeProces.add(mergePres.get(i));
|
|
|
- if(mergePres.get(i).getPreviousProcesses() != null && mergePres.get(i).getPreviousProcesses().size()>0){
|
|
|
- for (ProductionProcesses previousProcess : mergePres.get(i).getPreviousProcesses()) {
|
|
|
- mergeProPres.put(previousProcess.getId(),previousProcess);
|
|
|
+ // && notlockPres.size() == previousProcesses.size()
|
|
|
+ if(notlockPres != null && notlockPres.size()>0){
|
|
|
+ List<ProductionProcesses> mergePres = new ArrayList<>();
|
|
|
+ mergePres.addAll(notlockPres);
|
|
|
+ // 按照铸轧时间排序
|
|
|
+ if(mergePres.get(0).getRooprocess() != null && mergePres.get(0).getRooprocess().getStartTime() != null){
|
|
|
+ Collections.sort(mergePres,Comparator.comparing(pro -> pro.getRooprocess().getStartTime()));
|
|
|
+ }
|
|
|
+ if(!hasMerge.contains(mergePres.get(0).getId())){
|
|
|
+ ProductionProcesses mergePro = mergePres.get(0);
|
|
|
+ Map<String,ProductionProcesses> mergeProPres = new HashMap<>();
|
|
|
+ if(mergePres.size()>1){
|
|
|
+ List<String> mergeProOrders = new ArrayList<>();
|
|
|
+ mergeProOrders.add(mergePro.getId());
|
|
|
+ mergePro.setMergeProOrders(mergeProOrders);
|
|
|
+ for (int i = 0; i < mergePres.size(); i++) {
|
|
|
+ if(i>0){
|
|
|
+ // 设置待合并退火的主ID
|
|
|
+ mergePres.get(i).setMergeThMainId(mergePres.get(0).getId());
|
|
|
+ mergePro.getMergeProOrders().add(mergePres.get(i).getId());
|
|
|
+ notMergeProces.add(mergePres.get(i));
|
|
|
+ if(mergePres.get(i).getPreviousProcesses() != null && mergePres.get(i).getPreviousProcesses().size()>0){
|
|
|
+ for (ProductionProcesses previousProcess : mergePres.get(i).getPreviousProcesses()) {
|
|
|
+ mergeProPres.put(previousProcess.getId(),previousProcess);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- // 取第一个作业作为合并作业
|
|
|
- mergePro.setProduceTime(mergePro.getProduceTime()*mergePres.size());
|
|
|
- mergePro.setOpeProducePcNum(mergePres.size());
|
|
|
- List<String> nextids = new ArrayList<>();
|
|
|
- List<String> preids = new ArrayList<>();
|
|
|
- List<ProductionProcesses> nextpss = new ArrayList<>();
|
|
|
- List<ProductionProcesses> prepss = new ArrayList<>();
|
|
|
- nextpss.add(thps);
|
|
|
- nextids.add(thps.getId());
|
|
|
- mergePro.setNextProcesses(nextpss);
|
|
|
- mergePro.setNextProcessesIds(nextids);
|
|
|
- preids.add(mergePro.getId());
|
|
|
- prepss.add(mergePro);
|
|
|
- thps.setPreviousProcessesIds(preids);
|
|
|
- thps.setPreviousProcesses(prepss);
|
|
|
- // 合并作业的上一道工序
|
|
|
- if(mergeProPres.size()>0){
|
|
|
- for (String proid:mergeProPres.keySet()){
|
|
|
- if(!mergePro.getPreviousProcessesIds().contains(proid)){
|
|
|
- ProductionProcesses propro = mergeProPres.get(proid);
|
|
|
- mergePro.getPreviousProcessesIds().add(proid);
|
|
|
- mergePro.getPreviousProcesses().add(propro);
|
|
|
+ // 取第一个作业作为合并作业
|
|
|
+ mergePro.setProduceTime(mergePro.getProduceTime()*mergePres.size());
|
|
|
+ mergePro.setOpeProducePcNum(mergePres.size());
|
|
|
+ List<String> nextids = new ArrayList<>();
|
|
|
+ List<String> preids = new ArrayList<>();
|
|
|
+ List<ProductionProcesses> nextpss = new ArrayList<>();
|
|
|
+ List<ProductionProcesses> prepss = new ArrayList<>();
|
|
|
+ nextpss.add(thps);
|
|
|
+ nextids.add(thps.getId());
|
|
|
+ mergePro.setNextProcesses(nextpss);
|
|
|
+ mergePro.setNextProcessesIds(nextids);
|
|
|
+ preids.add(mergePro.getId());
|
|
|
+ prepss.add(mergePro);
|
|
|
+ thps.setPreviousProcessesIds(preids);
|
|
|
+ thps.setPreviousProcesses(prepss);
|
|
|
+ // 合并作业的上一道工序
|
|
|
+ if(mergeProPres.size()>0){
|
|
|
+ for (String proid:mergeProPres.keySet()){
|
|
|
+ if(!mergePro.getPreviousProcessesIds().contains(proid)){
|
|
|
+ ProductionProcesses propro = mergeProPres.get(proid);
|
|
|
+ mergePro.getPreviousProcessesIds().add(proid);
|
|
|
+ mergePro.getPreviousProcesses().add(propro);
|
|
|
+
|
|
|
+ List<ProductionProcesses> prenextpss = new ArrayList<>();
|
|
|
+ List<String> prenextids = new ArrayList<>();
|
|
|
+ prenextpss.add(mergePro);
|
|
|
+ prenextids.add(mergePro.getId());
|
|
|
+ propro.setNextProcessesIds(prenextids);
|
|
|
+ propro.setNextProcesses(prenextpss);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- mergeprocesses.add(mergePro);
|
|
|
- }else{
|
|
|
- mergeprocesses.addAll(mergePres);
|
|
|
- }
|
|
|
- // 记录已合并的作业
|
|
|
- if(!hasMerge.contains(mergePres.get(0).getId())){
|
|
|
- List<String> proids = mergePres.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
- hasMerge.addAll(proids);
|
|
|
+ mergeprocesses.add(mergePro);
|
|
|
+ }else{
|
|
|
+ mergeprocesses.addAll(mergePres);
|
|
|
+ }
|
|
|
+ // 记录已合并的作业
|
|
|
+ if(!hasMerge.contains(mergePres.get(0).getId())){
|
|
|
+ List<String> proids = mergePres.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
+ hasMerge.addAll(proids);
|
|
|
+ }
|
|
|
+ // 递归按照退火合并
|
|
|
+ thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
- // 递归按照退火合并
|
|
|
- thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
@@ -2027,6 +2070,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
// 记录分卷已合并作业
|
|
|
List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
hasMerge.addAll(proids);
|
|
|
}
|
|
|
// 递归合并分卷前的作业
|
|
@@ -2183,6 +2229,9 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
// 记录分卷已合并作业
|
|
|
List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ if(proids.contains("16b50912ce0e4c7bb22b03dbdb6df652")){
|
|
|
+ int a = 1;
|
|
|
+ }
|
|
|
hasMerge.addAll(proids);
|
|
|
}
|
|
|
// 递归合并分卷后的作业
|