|
@@ -4827,6 +4827,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
//调度之前的连续开始,需要推导后续连续去清除需要解锁的明细
|
|
|
List<ApsProcessOperationProcessEquDo> cleanNeedUnLockList = new LinkedList<>();
|
|
|
+ //后道工序在当前工序之前,并且不参与排程,则需要将后道工序和其所有的后道工序都不解锁
|
|
|
+ List<ApsProcessOperationProcessEquDo> cleanNeedUnLockList2 = new LinkedList<>();
|
|
|
|
|
|
for (ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo : needScheduleList) {
|
|
|
//前道作业明细ID不为空
|
|
@@ -4922,7 +4924,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
if (ObjectUtil.isNotEmpty(apsProcessOperationProcessEquDo.getNextprocessesids())) {
|
|
|
//当前工序作业
|
|
|
ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> item.getId().equals(apsProcessOperationProcessEquDo.getProcessid())).findFirst().orElse(null);
|
|
|
- getNextProcess(apsProcessOperationProcessEquDo.getNextprocessesids(), nowProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
|
|
|
+ getNextProcess(apsProcessOperationProcessEquDo.getNextprocessesids(), nowProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList, cleanNeedUnLockList2);
|
|
|
}
|
|
|
}
|
|
|
//查询需要清除的明细及其后续 连续的明细
|
|
@@ -4932,16 +4934,24 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
getCleanNextProcess(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getNextprocessesids(), allProcessEquList, allProcessEquIdList, notNeedUnLockList, allProcessList, processOperationEquDoList);
|
|
|
}
|
|
|
}
|
|
|
+ //清除记录的所有后道工序
|
|
|
+ for (ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo : cleanNeedUnLockList2) {
|
|
|
+ if (ObjectUtil.isNotEmpty(apsProcessOperationProcessEquDo.getNextprocessesids())) {
|
|
|
+ notNeedUnLockList.add(apsProcessOperationProcessEquDo);
|
|
|
+ getCleanNextProcess2(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getNextprocessesids(), allProcessEquList, allProcessEquIdList, notNeedUnLockList, allProcessList, processOperationEquDoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ notNeedUnLockList = notNeedUnLockList.stream().distinct().collect(Collectors.toList());
|
|
|
+ //不需要解锁的作业ID
|
|
|
+ List<String> notNeedUnLockProcessIdList = notNeedUnLockList.stream().map(ApsProcessOperationProcessEquDo::getProcessid).distinct().collect(Collectors.toList());
|
|
|
|
|
|
//需要解锁的明细ID过滤掉所有不需要解锁的明细ID
|
|
|
- needUnLockList.removeAll(notNeedUnLockList);
|
|
|
+ needUnLockList = needUnLockList.stream().filter(item -> !notNeedUnLockProcessIdList.contains(item.getId())).collect(Collectors.toList());
|
|
|
|
|
|
//需要解锁的明细ID
|
|
|
List<String> needUnLockProcessEquIdList = needUnLockList.stream().map(ApsProcessOperationProcessEquDo::getId).distinct().collect(Collectors.toList());
|
|
|
//需要解锁的作业ID
|
|
|
List<String> needUnLockProcessIdList = needUnLockList.stream().map(ApsProcessOperationProcessEquDo::getProcessid).distinct().collect(Collectors.toList());
|
|
|
- //不需要解锁的作业ID
|
|
|
- List<String> notNeedUnLockProcessIdList = notNeedUnLockList.stream().map(ApsProcessOperationProcessEquDo::getProcessid).distinct().collect(Collectors.toList());
|
|
|
log.info("解锁的作业明细:{}", needUnLockList);
|
|
|
log.info("解锁的作业明细ID:{}", needUnLockProcessEquIdList);
|
|
|
log.info("解锁的作业ID:{}", needUnLockProcessIdList);
|
|
@@ -5037,7 +5047,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
//是连续
|
|
|
if (isConnect) {
|
|
|
//下道不解锁,继续迭代
|
|
|
- notNeedUnLockList.add(nowEqu);
|
|
|
+ notNeedUnLockList.add(nextEqu);
|
|
|
if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
|
|
|
String nextNewProcessesids = nextEqu.getNextprocessesids();
|
|
|
getCleanNextProcess(nextEqu, nextNewProcessesids, allProcessEquList, allProcessEquIdList, notNeedUnLockList, allProcessList, processOperationEquDoList);
|
|
@@ -5050,6 +5060,24 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void getCleanNextProcess2(ApsProcessOperationProcessEquDo nowEqu, String nextprocessesids, List<ApsProcessOperationProcessEquDo> allProcessEquList, List<String> allProcessEquIdList, List<ApsProcessOperationProcessEquDo> notNeedUnLockList, List<ApsProcessOperationDo> allProcessList, List<ApsProcessOperationEquDo> processOperationEquDoList) {
|
|
|
+ if (ObjectUtil.isEmpty(nextprocessesids)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for (String nextProcessEquId : nextprocessesids.split(",")) {
|
|
|
+ //下一个明细
|
|
|
+ ApsProcessOperationProcessEquDo nextEqu = allProcessEquList.stream().filter(item -> item.getId().equals(nextProcessEquId)).findFirst().orElse(null);
|
|
|
+ if (ObjectUtil.isNotEmpty(nextEqu)) {
|
|
|
+ //下道不解锁,继续迭代
|
|
|
+ notNeedUnLockList.add(nextEqu);
|
|
|
+ if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
|
|
|
+ String nextNewProcessesids = nextEqu.getNextprocessesids();
|
|
|
+ getCleanNextProcess2(nextEqu, nextNewProcessesids, allProcessEquList, allProcessEquIdList, notNeedUnLockList, allProcessList, processOperationEquDoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//迭代处理寻找下道明细
|
|
|
private void getNextProcess(String nextprocessesids,
|
|
|
ApsProcessOperationDo nowProcess,
|
|
@@ -5058,7 +5086,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
List<ApsProcessOperationProcessEquDo> allProcessEquList,
|
|
|
List<String> allProcessEquIdList,
|
|
|
List<ApsProcessOperationProcessEquDo> needUnLockList,
|
|
|
- List<ApsProcessOperationDo> allProcessList) {
|
|
|
+ List<ApsProcessOperationDo> allProcessList,
|
|
|
+ List<ApsProcessOperationProcessEquDo> cleanNeedUnLockList2) {
|
|
|
if (ObjectUtil.isEmpty(nextprocessesids)) {
|
|
|
return;
|
|
|
}
|
|
@@ -5071,13 +5100,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
String nextNewProcessesids = nextEqu.getNextprocessesids();
|
|
|
//查询对应明细的工序作业
|
|
|
ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> item.getId().equals(nextEqu.getProcessid())).findFirst().orElse(null);
|
|
|
- if (ObjectUtil.isNotEmpty(nextProcess)
|
|
|
- && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
|
|
|
- && !(ObjectUtil.isNotEmpty(nextProcess.getMinflowwaitmin()) && nextProcess.getMinflowwaitmin().compareTo(new BigDecimal("1440")) >= 0)) {
|
|
|
- needUnLockList.add(nextEqu);
|
|
|
- if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
|
|
|
- getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(nextProcess)) {
|
|
|
+ if (!Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
|
|
|
+ && !(ObjectUtil.isNotEmpty(nextProcess.getMinflowwaitmin())
|
|
|
+ && nextProcess.getMinflowwaitmin().compareTo(new BigDecimal("1440")) >= 0)) {
|
|
|
+ needUnLockList.add(nextEqu);
|
|
|
+ if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
|
|
|
+ getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList, cleanNeedUnLockList2);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ cleanNeedUnLockList2.add(nextEqu);
|
|
|
}
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
}
|