|
@@ -28,6 +28,7 @@ import java.time.Duration;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
@@ -49,15 +50,19 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
}
|
|
|
// 排程运行时长
|
|
|
Integer maxPlanSeconds = productionScheduleVo.getPlanSeconds();
|
|
|
+ Integer prospeed = 20;
|
|
|
+ if(productionScheduleVo.getPcspeed() != null && productionScheduleVo.getPcspeed()>0){
|
|
|
+ prospeed = productionScheduleVo.getPcspeed();
|
|
|
+ }
|
|
|
int processNum = productionScheduleVo.getProcesses().size();
|
|
|
- int runPlanSeconds = (processNum/10 + 1)*60;
|
|
|
+ int runPlanSeconds = (processNum/prospeed + 1)*60;
|
|
|
if(maxPlanSeconds == null || maxPlanSeconds <= 0){
|
|
|
maxPlanSeconds = 1800;
|
|
|
}
|
|
|
if(runPlanSeconds > maxPlanSeconds){
|
|
|
throw new ApsException("所选排程作业太多,预计排程时间太长,请分开排程");
|
|
|
}
|
|
|
-
|
|
|
+// int runPlanSeconds = maxPlanSeconds;
|
|
|
EnvironmentMode mode = EnvironmentMode.REPRODUCIBLE;
|
|
|
if(productionScheduleVo.getEnvironmentMode() != null && productionScheduleVo.getEnvironmentMode() == 1){
|
|
|
mode = EnvironmentMode.FULL_ASSERT;
|
|
@@ -346,7 +351,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
process.setIfLock(true);
|
|
|
}
|
|
|
// 特殊冲突约束Map初始化
|
|
|
- process.setConflictRoptions(new HashMap<>());
|
|
|
+ process.setConflictRoptions(new ConcurrentHashMap<>());
|
|
|
// 唯一作业ID设值
|
|
|
process.setUniqueBsProcessesId(process.getBsProcessesId().get(0));
|
|
|
}
|
|
@@ -456,8 +461,9 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
private void nextProSort(Map<String,Integer> sortMap,Map<String,List<ProductionProcesses>> bsMap,String uniqueBsProcessesId){
|
|
|
List<ProductionProcesses> processesList1 = bsMap.get(uniqueBsProcessesId);
|
|
|
if(processesList1 != null && processesList1.size()>0){
|
|
|
- if(processesList1.get(0).getProcessType().equals("成退") || processesList1.get(0).getProcessType().equals("中退")){
|
|
|
- List<ProductionProcesses> pres = bsMap.get(processesList1.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId());
|
|
|
+ if(processesList1.get(0).getProcessType().equals("成退") || processesList1.get(0).getProcessType().equals("中退")
|
|
|
+ || processesList1.get(0).getProcessType().equals("冷轧") || processesList1.get(0).getProcessType().equals("铸轧")){
|
|
|
+// List<ProductionProcesses> pres = bsMap.get(processesList1.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId());
|
|
|
if(processesList1.get(0).getPreviousProcesses() != null && processesList1.get(0).getPreviousProcesses().size()>0){
|
|
|
for (ProductionProcesses productionProcesses : processesList1) {
|
|
|
productionProcesses.setOrderMark(productionProcesses.getPreviousProcesses().get(0).getOrderMark());
|