|
@@ -4568,7 +4568,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
canUnLock = false;
|
|
|
} else {
|
|
|
//判断是否连续
|
|
|
- boolean isConnect = isConnectProcess(nowProcess, previousProcess, processOperationEquDoList);
|
|
|
+ boolean isConnect = isConnectProcess(nowProcess, previousProcess, processOperationEquDoList, apsProcessOperationProcessEquDo, previousEqu);
|
|
|
//如果连续
|
|
|
if (isConnect) {
|
|
|
//如果连续的上一道在重排开始时间之前,不解锁,并且不解锁后道与其连续的
|
|
@@ -4665,10 +4665,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
}
|
|
|
|
|
|
- private boolean isConnectProcess(ApsProcessOperationDo nowProcess, ApsProcessOperationDo previousProcess, List<ApsProcessOperationEquDo> processOperationEquDoList) {
|
|
|
- //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
|
|
|
+ private boolean isConnectProcess(ApsProcessOperationDo nowProcess,
|
|
|
+ ApsProcessOperationDo previousProcess,
|
|
|
+ List<ApsProcessOperationEquDo> processOperationEquDoList,
|
|
|
+ ApsProcessOperationProcessEquDo nowEqu,
|
|
|
+ ApsProcessOperationProcessEquDo previousEqu) {
|
|
|
+ //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,并且本道工序开始时间和前道工序结束时间差<11分钟,加入待解锁集合
|
|
|
if (nowProcess.getProcess().equals(previousProcess.getProcess())
|
|
|
- && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
|
|
|
+ && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)
|
|
|
+ && DateUtil.between(previousEqu.getPlanenddate(), nowEqu.getPlanstartdate(), DateUnit.MINUTE) < 11) {
|
|
|
//对比确认是否存在相同的设备和辊
|
|
|
boolean have = false;
|
|
|
//查询当前工序作业的可选设备
|
|
@@ -4720,7 +4725,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
//当前作业
|
|
|
ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> item.getId().equals(nowEqu.getProcessid())).findFirst().orElse(null);
|
|
|
//判断是否连续
|
|
|
- boolean isConnect = isConnectProcess(nextProcess, nowProcess, processOperationEquDoList);
|
|
|
+ boolean isConnect = isConnectProcess(nextProcess, nowProcess, processOperationEquDoList, nextEqu, nowEqu);
|
|
|
//是连续
|
|
|
if (isConnect) {
|
|
|
//下道不解锁,继续迭代
|
|
@@ -4759,18 +4764,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
//查询对应明细的工序作业
|
|
|
ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> item.getId().equals(nextEqu.getProcessid())).findFirst().orElse(null);
|
|
|
if (ObjectUtil.isNotEmpty(nextProcess)
|
|
|
- && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
|
|
|
- && nextProcess.getProcess().equals(nowProcess.getProcess())
|
|
|
- && (ObjectUtil.isEmpty(nextProcess.getMinflowwaitmin()) || nextProcess.getMinflowwaitmin().compareTo(new BigDecimal(1440)) < 0)) {
|
|
|
+ && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())) {
|
|
|
needUnLockList.add(nextEqu);
|
|
|
if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
|
|
|
getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
|
|
|
}
|
|
|
return;
|
|
|
- } else {
|
|
|
- //如果下道作业和当前作业不同,结束,后续全部不解锁
|
|
|
- //有最小等待时间,并且>=1440,后续全部不解锁
|
|
|
- return;
|
|
|
}
|
|
|
}
|
|
|
}
|