|
@@ -387,11 +387,14 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
allProMap.put(mergeprocess.getId(),mergeprocess);
|
|
|
}
|
|
|
+ // 两次退火卷数不一样、退火后道工序需要特殊处理
|
|
|
+ List<ProductionProcesses> thNexts = new ArrayList<>();
|
|
|
+
|
|
|
// 根据退火合并作业
|
|
|
if(thpros != null && thpros.size()>0){
|
|
|
for (ProductionProcesses thpro : thpros) {
|
|
|
// 退火作业往前合并
|
|
|
- thPreProMerge(thpro,notMergeProces,othermergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ thPreProMerge(thpro,notMergeProces,othermergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
for (ProductionProcesses thpro : thpros) {
|
|
|
// 退火作业往后合并
|
|
@@ -532,6 +535,42 @@ public class ApsServiceImpl implements ApsService {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ // 退火下道工序处理
|
|
|
+ if(thNexts != null && thNexts.size()>0){
|
|
|
+ for (ProductionProcesses thNext : thNexts) {
|
|
|
+ // 当前退火工序
|
|
|
+ for (ProductionProcesses previousProcess : thNext.getPreviousProcesses()) {
|
|
|
+ // 退火下道工序
|
|
|
+ List<ProductionProcesses> thNextpros = new ArrayList<>();
|
|
|
+ // 遍历下一道工序重置当前退火工序和下道工序工序关联关系
|
|
|
+ for (ProductionProcesses nextProcess : previousProcess.getNextProcesses()) {
|
|
|
+ for (ProductionProcesses thNext1 : thNexts) {
|
|
|
+ boolean ifnextpro = false;
|
|
|
+ if(thNext1.getMergeProOrders() != null && thNext1.getMergeProOrders().size()>0){
|
|
|
+ if(thNext1.getMergeProOrders().contains(nextProcess.getId())){
|
|
|
+ ifnextpro = true;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(nextProcess.getId().equals(thNext1.getId())){
|
|
|
+ ifnextpro = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(ifnextpro){
|
|
|
+ List<ProductionProcesses> haspros = thNextpros.stream().filter(v -> v.getId().equals(thNext1.getId())).collect(Collectors.toList());
|
|
|
+ if(haspros == null || haspros.size() == 0){
|
|
|
+ thNextpros.add(thNext1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(thNextpros != null && thNextpros.size()>0){
|
|
|
+ List<String> nextproids = thNextpros.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
+ previousProcess.setNextProcesses(thNextpros);
|
|
|
+ previousProcess.setNextProcessesIds(nextproids);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
otherThproces.addAll(notMergeProces);
|
|
|
lzmergeprocesses.addAll(othermergeprocesses);
|
|
|
});
|
|
@@ -556,7 +595,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// && nextProcesses.get(0).getPreviousProcessesIds() != null && nextProcesses.get(0).getPreviousProcessesIds().size()>0
|
|
|
){
|
|
|
// 分卷工序
|
|
|
- if("是".equals(nextProcesses.get(0).getIssubsection())){
|
|
|
+ if("是".equals(nextProcesses.get(0).getIssubsection()) || nextProcesses.get(0).getIfLock()){
|
|
|
for (ProductionProcesses nextProcess : nextProcesses) {
|
|
|
List<ProductionProcesses> pres = new ArrayList<>();
|
|
|
List<String> preids = new ArrayList<>();
|
|
@@ -651,7 +690,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
* @param hasMerge 已参与合并的作业ID(单卷作业ID)
|
|
|
*/
|
|
|
private void thPreProMerge(ProductionProcesses thps,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
|
|
|
- ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap){
|
|
|
+ ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
|
|
|
List<ProductionProcesses> previousProcesses = thps.getPreviousProcesses();
|
|
|
if(previousProcesses != null && previousProcesses.size()>0){
|
|
|
// 铸轧、退火、和第一道工序不合并
|
|
@@ -660,7 +699,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// && previousProcesses.get(0).getPreviousProcessesIds() != null && previousProcesses.get(0).getPreviousProcessesIds().size()>0
|
|
|
){
|
|
|
// 分卷工序
|
|
|
- if("是".equals(previousProcesses.get(0).getIssubsection())){
|
|
|
+ if("是".equals(previousProcesses.get(0).getIssubsection()) || previousProcesses.get(0).getIfLock()){
|
|
|
for (ProductionProcesses preProcess : previousProcesses) {
|
|
|
List<ProductionProcesses> nexts = new ArrayList<>();
|
|
|
if(preProcess.getNextProcesses().size()>1){
|
|
@@ -682,7 +721,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 如果未合并则合并,并记录已合并的作业
|
|
|
if(!hasMerge.contains(processesList.get(0).getId())){
|
|
|
// 分卷的工序从此到工序的上一道工序开始合并,默认4卷
|
|
|
- fjMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ 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);
|
|
@@ -747,7 +786,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
hasMerge.addAll(proids);
|
|
|
}
|
|
|
// 递归按照退火合并
|
|
|
- thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
}
|
|
|
}else{
|
|
@@ -761,6 +800,8 @@ public class ApsServiceImpl implements ApsService {
|
|
|
previousProcess.setNextProcesses(nextpss);
|
|
|
previousProcess.setNextProcessesIds(nextids);
|
|
|
}
|
|
|
+ }else{
|
|
|
+ thNexts.add(thps);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -776,17 +817,17 @@ public class ApsServiceImpl implements ApsService {
|
|
|
* @param allProMap
|
|
|
*/
|
|
|
private void fjMerge(String bsprocessid,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
|
|
|
- ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap){
|
|
|
+ ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
|
|
|
List<ProductionProcesses> processesList = bsProceses.get(bsprocessid);
|
|
|
// 铸轧、退火、和第一道工序不合并
|
|
|
if(!processesList.get(0).getProcessType().equals("铸轧") && !processesList.get(0).getProcessType().equals("成退")
|
|
|
&& !processesList.get(0).getProcessType().equals("中退") && !processesList.get(0).getProcessType().equals("小卷成退")
|
|
|
// && processesList.get(0).getPreviousProcessesIds() != null && processesList.get(0).getPreviousProcessesIds().size()>0
|
|
|
){
|
|
|
- if("是".equals(processesList.get(0).getIssubsection())){
|
|
|
+ if("是".equals(processesList.get(0).getIssubsection()) || processesList.get(0).getIfLock()){
|
|
|
if(processesList.get(0).getPreviousProcesses() != null && processesList.get(0).getPreviousProcesses().size()>0){
|
|
|
String uniqueBsProcessesId = processesList.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId();
|
|
|
- fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
}else{
|
|
|
if(processesList != null && processesList.size()>0){
|
|
@@ -896,7 +937,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
// 递归合并分卷前的作业
|
|
|
if(pres != null && pres.size()>0){
|
|
|
for (ProductionProcesses pre : pres) {
|
|
|
- thPreProMerge(pre,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|
|
|
+ thPreProMerge(pre,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
|
|
|
}
|
|
|
/*String uniqueBsProcessesId = processesList.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId();
|
|
|
fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);*/
|
|
@@ -935,7 +976,7 @@ public class ApsServiceImpl implements ApsService {
|
|
|
&& !processesList.get(0).getProcessType().equals("中退") && !processesList.get(0).getProcessType().equals("小卷成退")
|
|
|
// && processesList.get(0).getPreviousProcessesIds() != null && processesList.get(0).getPreviousProcessesIds().size()>0
|
|
|
){
|
|
|
- if("是".equals(processesList.get(0).getIssubsection())){
|
|
|
+ if("是".equals(processesList.get(0).getIssubsection()) || processesList.get(0).getIfLock()){
|
|
|
if(nextbsids != null && nextbsids.size()>0){
|
|
|
for (String nextbsid : nextbsids) {
|
|
|
fjNextMerge(nextbsid,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
|