|
@@ -1128,7 +1128,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
.collect(Collectors.toList());
|
|
|
updateProductStatusByOrderIds(toupstatus);*/
|
|
|
// 自动加锁坯料计划下的工序作业
|
|
|
- apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankKeys).set(ApsProcessOperationDo::getLockmark, "y"));
|
|
|
+ apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankids).set(ApsProcessOperationDo::getLockmark, "y"));
|
|
|
// 自动加锁坯料计划下的排程作业明细
|
|
|
// apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankKeys).set(ApsProcessOperationProcessEquDo::getLockmark, "y"));
|
|
|
}
|
|
@@ -4163,9 +4163,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
//排程设置
|
|
|
ApsScheduleConfigDo apsScheduleConfigDo = apsScheduleConfigService.getById("1");
|
|
|
//冷轧重排
|
|
|
- lenzhaChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
|
|
|
+// lenzhaChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
|
|
|
//退火重排
|
|
|
-// tuihuoChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
|
|
|
+ tuihuoChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -4214,16 +4214,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
for (ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo : needScheduleList) {
|
|
|
if (ObjectUtil.isNotEmpty(apsProcessOperationProcessEquDo.getNextprocessesids())) {
|
|
|
for (String nextProcessId : apsProcessOperationProcessEquDo.getNextprocessesids().split(",")) {
|
|
|
- //不在重排中,但在基准中,如果是 精整工序,需要解锁加入排程
|
|
|
+ //不在重排中,但在基准中,如果是 精整工序,并且是最后一道工序,需要解锁加入排程
|
|
|
if (!needScheduleIdList.contains(nextProcessId)
|
|
|
&& allProcessEquIdList.contains(nextProcessId)) {
|
|
|
//查询后道的明细
|
|
|
ApsProcessOperationProcessEquDo nextEqu = allProcessEquList.stream().filter(item -> nextProcessId.equals(item.getId())).findFirst().orElse(null);
|
|
|
if (ObjectUtil.isNotEmpty(nextEqu)) {
|
|
|
- //查询后道的工序作业
|
|
|
- ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> nextEqu.getProcessid().equals(item.getId())).findFirst().orElse(null);
|
|
|
- if (jzProcessNameList.contains(nextProcess.getProcess())) {
|
|
|
- needUnLockList.add(nextEqu);
|
|
|
+ //是最后一道工序
|
|
|
+ if (ObjectUtil.isEmpty(nextEqu.getNextprocessesids())) {
|
|
|
+ //查询后道的工序作业
|
|
|
+ ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> nextEqu.getProcessid().equals(item.getId())).findFirst().orElse(null);
|
|
|
+ if (jzProcessNameList.contains(nextProcess.getProcess())) {
|
|
|
+ needUnLockList.add(nextEqu);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -4300,6 +4303,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
String previousprocessesid = apsProcessOperationProcessEquDo.getPreviousprocessesids();
|
|
|
//当前明细对应的工序作业
|
|
|
ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> apsProcessOperationProcessEquDo.getProcessid().equals(item.getId())).findFirst().orElse(null);
|
|
|
+ //是否可以解锁
|
|
|
+ boolean canUnLock = true;
|
|
|
//循环寻找前道明细
|
|
|
while (true) {
|
|
|
if (StringUtils.isBlank(previousprocessesid)) {
|
|
@@ -4317,51 +4322,78 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
if (ObjectUtil.isEmpty(previousProcess)) {
|
|
|
break;
|
|
|
}
|
|
|
- //如果前道工序是 铸轧或退火 或者 前道明细不是 “待开工”,不解锁,但要传入排程
|
|
|
- if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
|
|
|
- || !"待开工".equals(previousEqu.getWorkstatus())) {
|
|
|
+ //如果不可解锁,直接将前道明细放入不解锁
|
|
|
+ if (!canUnLock) {
|
|
|
+ previousprocessesid = previousEqu.getPreviousprocessesids();
|
|
|
+ nowProcess = previousProcess;
|
|
|
notNeedUnLockList.add(previousEqu);
|
|
|
- break;
|
|
|
+ continue;
|
|
|
}
|
|
|
- //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
|
|
|
- if (nowProcess.getProcess().equals(previousProcess.getProcess())
|
|
|
- && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
|
|
|
- //对比确认是否存在相同的设备和辊
|
|
|
- boolean have = false;
|
|
|
- //查询当前工序作业的可选设备
|
|
|
- String nowProcessId = nowProcess.getId();
|
|
|
- List<ApsProcessOperationEquDo> nowEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(nowProcessId)).collect(Collectors.toList());
|
|
|
- //查询前道工序作业的可选设备
|
|
|
- List<ApsProcessOperationEquDo> previousEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(previousProcess.getId())).collect(Collectors.toList());
|
|
|
- for (ApsProcessOperationEquDo equDo : nowEquList) {
|
|
|
- if (have) {
|
|
|
- break;
|
|
|
- }
|
|
|
- for (ApsProcessOperationEquDo equDo2 : previousEquList) {
|
|
|
- if (equDo.getResourceid().equals(equDo2.getResourceid())
|
|
|
- && equDo.getRollerid().equals(equDo2.getRollerid())) {
|
|
|
- have = true;
|
|
|
+ //如果前道明细不是待开工,不解锁,传入排程
|
|
|
+ if (!"待开工".equals(previousEqu.getWorkstatus())) {
|
|
|
+ previousprocessesid = previousEqu.getPreviousprocessesids();
|
|
|
+ nowProcess = previousProcess;
|
|
|
+ notNeedUnLockList.add(previousEqu);
|
|
|
+ canUnLock = false;
|
|
|
+ } else {
|
|
|
+ //如果连续
|
|
|
+ //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
|
|
|
+ if (nowProcess.getProcess().equals(previousProcess.getProcess())
|
|
|
+ && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
|
|
|
+ //对比确认是否存在相同的设备和辊
|
|
|
+ boolean have = false;
|
|
|
+ //查询当前工序作业的可选设备
|
|
|
+ String nowProcessId = nowProcess.getId();
|
|
|
+ List<ApsProcessOperationEquDo> nowEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(nowProcessId)).collect(Collectors.toList());
|
|
|
+ //查询前道工序作业的可选设备
|
|
|
+ List<ApsProcessOperationEquDo> previousEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(previousProcess.getId())).collect(Collectors.toList());
|
|
|
+ for (ApsProcessOperationEquDo equDo : nowEquList) {
|
|
|
+ if (have) {
|
|
|
break;
|
|
|
}
|
|
|
+ for (ApsProcessOperationEquDo equDo2 : previousEquList) {
|
|
|
+ if (equDo.getResourceid().equals(equDo2.getResourceid())) {
|
|
|
+ if (ObjectUtil.isEmpty(equDo.getRollerid()) && ObjectUtil.isEmpty(equDo2.getRollerid())) {
|
|
|
+ have = true;
|
|
|
+ break;
|
|
|
+ } else if (ObjectUtil.isNotEmpty(equDo.getRollerid()) && ObjectUtil.isNotEmpty(equDo2.getRollerid())) {
|
|
|
+ if (equDo.getRollerid().equals(equDo2.getRollerid())) {
|
|
|
+ have = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //存在相同
|
|
|
- if (have) {
|
|
|
- needUnLockList.add(previousEqu);
|
|
|
- if (ObjectUtil.isNotEmpty(previousEqu.getPreviousprocessesids())) {
|
|
|
+ //存在相同
|
|
|
+ if (have) {
|
|
|
+ needUnLockList.add(previousEqu);
|
|
|
+ if (ObjectUtil.isNotEmpty(previousEqu.getPreviousprocessesids())) {
|
|
|
+ previousprocessesid = previousEqu.getPreviousprocessesids();
|
|
|
+ nowProcess = previousProcess;
|
|
|
+ canUnLock = false;
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
previousprocessesid = previousEqu.getPreviousprocessesids();
|
|
|
nowProcess = previousProcess;
|
|
|
- } else {
|
|
|
- break;
|
|
|
+ notNeedUnLockList.add(previousEqu);
|
|
|
+ canUnLock = false;
|
|
|
}
|
|
|
} else {
|
|
|
+ previousprocessesid = previousEqu.getPreviousprocessesids();
|
|
|
+ nowProcess = previousProcess;
|
|
|
notNeedUnLockList.add(previousEqu);
|
|
|
- break;
|
|
|
+ canUnLock = false;
|
|
|
}
|
|
|
- } else {
|
|
|
- notNeedUnLockList.add(previousEqu);
|
|
|
- break;
|
|
|
}
|
|
|
+// //如果前道工序是 铸轧或退火 或者 前道明细不是 “待开工”,不解锁,但要传入排程
|
|
|
+// if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
|
|
|
+// || !"待开工".equals(previousEqu.getWorkstatus())) {
|
|
|
+// notNeedUnLockList.add(previousEqu);
|
|
|
+// break;
|
|
|
+// }
|
|
|
} else {
|
|
|
break;
|
|
|
}
|
|
@@ -4397,9 +4429,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
|
|
|
|
|
|
String scheduletype = apsScheduleConfigDo.getScheduletype();
|
|
|
ApsTypeVo apsTypeVo = BeanUtil.toBean(scheduletype, ApsTypeVo.class);
|
|
|
-// apsTypeVo.setMixIf("mix");
|
|
|
-// apsTypeVo.setThMergeMode("notThMergeBf");
|
|
|
-// apsTypeVo.setConstraintMode("lz");
|
|
|
+ apsTypeVo.setMixIf("default");
|
|
|
+ apsTypeVo.setThMergeMode("notThMergeBf");
|
|
|
+ apsTypeVo.setConstraintMode("lz");
|
|
|
apsTypeVo.setScheduleType("dd");
|
|
|
//重新排程
|
|
|
//组装需要传入排程的工序作业ID
|