|
@@ -504,14 +504,29 @@ public class ApsServiceImpl implements ApsService {
|
|
|
Map<String,List<ProductionProcesses>> thGroup = new HashMap<>();
|
|
|
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
for (ProductionProcesses process : solvedBalance1.getProcessesList()) {
|
|
|
- String thkey = process.getEquipment().getId() + format.format(process.getStartTime());
|
|
|
- if(thGroup.containsKey(thkey)){
|
|
|
- thGroup.get(thkey).add(process);
|
|
|
- }else{
|
|
|
- List<ProductionProcesses> thpros = new ArrayList<>();
|
|
|
- thpros.add(process);
|
|
|
- thGroup.put(thkey,thpros);
|
|
|
+ // 判断是否和历史数据合炉
|
|
|
+ boolean mergeHisTh = false;
|
|
|
+ List<EquipmentRunTime> equipmentRunTimes = process.getEquipment().getEquipmentRunTimes();
|
|
|
+ if(equipmentRunTimes != null && equipmentRunTimes.size()>0){
|
|
|
+ for (EquipmentRunTime equipmentRunTime : equipmentRunTimes) {
|
|
|
+ if(equipmentRunTime.getStartRunTime().compareTo(process.getStartTime()) == 0){
|
|
|
+ mergeHisTh = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 未和历史数据合炉的不需要锁定当前设备当前时间
|
|
|
+ if(!mergeHisTh){
|
|
|
+ String thkey = process.getEquipment().getId() + format.format(process.getStartTime());
|
|
|
+ if(thGroup.containsKey(thkey)){
|
|
|
+ thGroup.get(thkey).add(process);
|
|
|
+ }else{
|
|
|
+ List<ProductionProcesses> thpros = new ArrayList<>();
|
|
|
+ thpros.add(process);
|
|
|
+ thGroup.put(thkey,thpros);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
// 先全部还原退火的关联关系
|
|
|
List<ProductionProcesses> collect = apsSolution.getProcessesList().stream().filter(vp -> vp.getId().equals(process.getId())).collect(Collectors.toList());
|
|
|
if(collect != null && collect.size()>0){
|
|
@@ -524,6 +539,50 @@ public class ApsServiceImpl implements ApsService {
|
|
|
productionProcesses.setPreviousProcesses(stringListMap.get("pres"));
|
|
|
productionProcesses.setNextProcesses(stringListMap.get("nexts"));
|
|
|
}
|
|
|
+
|
|
|
+ // 和历史数据合炉的需要锁定当前设备当前时间
|
|
|
+ if(mergeHisTh){
|
|
|
+ List<EquipmentRunTime> runTimes = new ArrayList<>();
|
|
|
+
|
|
|
+ productionProcesses.setStartTime(process.getStartTime());
|
|
|
+ productionProcesses.setEndTime(process.getEndTime());
|
|
|
+ productionProcesses.setEquipmentId(process.getEquipmentId());
|
|
|
+ productionProcesses.setEquipment(process.getEquipment());
|
|
|
+ productionProcesses.setDelay(process.getDelay());
|
|
|
+ productionProcesses.setIfLock(true);
|
|
|
+ // 前后道工序设置
|
|
|
+ if(relPros.containsKey(productionProcesses.getId())){
|
|
|
+ Map<String, List<ProductionProcesses>> stringListMap = relPros.get(productionProcesses.getId());
|
|
|
+ productionProcesses.setPreviousProcesses(stringListMap.get("pres"));
|
|
|
+ productionProcesses.setNextProcesses(stringListMap.get("nexts"));
|
|
|
+ }
|
|
|
+ // 递归推理前道工序
|
|
|
+ proMaxTimeSet(productionProcesses,productionProcesses,0);
|
|
|
+ // 添加锁定工序设备占用时间
|
|
|
+ EquipmentRunTime pper = new EquipmentRunTime();
|
|
|
+ pper.setStartRunTime(productionProcesses.getStartTime());
|
|
|
+ pper.setEndRunTime(productionProcesses.getEndTime());
|
|
|
+ pper.setSeriesProduceMark(productionProcesses.getSeriesProduceMark());
|
|
|
+ pper.setProcessType(productionProcesses.getProcessType());
|
|
|
+ pper.setVolumeMetal(productionProcesses.getVolumeMetal());
|
|
|
+ pper.setTotalVolumeWidth(productionProcesses.getVolumeWidth());
|
|
|
+ pper.setTotalSinglerollweight(productionProcesses.getSinglerollweight());
|
|
|
+ pper.setTotalThickness(productionProcesses.getVolumeThickness());
|
|
|
+ pper.setProducttype(productionProcesses.getProducttype());
|
|
|
+ pper.setOnceprocessmin(productionProcesses.getProduceTime());
|
|
|
+ pper.setPcNum(productionProcesses.getOpeProducePcNum());
|
|
|
+ pper.setOccupyType("process");
|
|
|
+ runTimes.add(pper);
|
|
|
+ // 退火锁定的工序添加到待排程的设备占用时间中
|
|
|
+ if(runTimes.size()>0){
|
|
|
+ if(productionProcesses.getEquipment().getEquipmentRunTimes() == null){
|
|
|
+ productionProcesses.getEquipment().setEquipmentRunTimes(runTimes);
|
|
|
+ }else{
|
|
|
+ productionProcesses.getEquipment().getEquipmentRunTimes().addAll(runTimes);
|
|
|
+ }
|
|
|
+ equipmentRunTimeMerge(productionProcesses.getEquipment(),productionProcesses.getApsOverallConfig().getFurnaceInstallations());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -556,54 +615,6 @@ public class ApsServiceImpl implements ApsService {
|
|
|
}
|
|
|
|
|
|
if(orderids.size()>1){
|
|
|
- /*List<EquipmentRunTime> equipmentRunTimes = new ArrayList<>();
|
|
|
- for (ProductionProcesses process : v) {
|
|
|
- List<ProductionProcesses> collect = apsSolution.getProcessesList().stream().filter(vp -> vp.getId().equals(process.getId())).collect(Collectors.toList());
|
|
|
- if(collect != null && collect.size()>0){
|
|
|
- for (ProductionProcesses productionProcesses : collect) {
|
|
|
- productionProcesses.setStartTime(process.getStartTime());
|
|
|
- productionProcesses.setEndTime(process.getEndTime());
|
|
|
- productionProcesses.setEquipmentId(process.getEquipmentId());
|
|
|
- productionProcesses.setEquipment(process.getEquipment());
|
|
|
- productionProcesses.setDelay(process.getDelay());
|
|
|
- productionProcesses.setIfLock(true);
|
|
|
- // 前后道工序设置
|
|
|
- if(relPros.containsKey(productionProcesses.getId())){
|
|
|
- Map<String, List<ProductionProcesses>> stringListMap = relPros.get(productionProcesses.getId());
|
|
|
- productionProcesses.setPreviousProcesses(stringListMap.get("pres"));
|
|
|
- productionProcesses.setNextProcesses(stringListMap.get("nexts"));
|
|
|
- }
|
|
|
- // 递归推理前道工序
|
|
|
- proMaxTimeSet(productionProcesses,productionProcesses,0);
|
|
|
- // 添加锁定工序设备占用时间
|
|
|
- EquipmentRunTime pper = new EquipmentRunTime();
|
|
|
- pper.setStartRunTime(productionProcesses.getStartTime());
|
|
|
- pper.setEndRunTime(productionProcesses.getEndTime());
|
|
|
- pper.setSeriesProduceMark(productionProcesses.getSeriesProduceMark());
|
|
|
- pper.setProcessType(productionProcesses.getProcessType());
|
|
|
- pper.setVolumeMetal(productionProcesses.getVolumeMetal());
|
|
|
- pper.setTotalVolumeWidth(productionProcesses.getVolumeWidth());
|
|
|
- pper.setTotalSinglerollweight(productionProcesses.getSinglerollweight());
|
|
|
- pper.setTotalThickness(productionProcesses.getVolumeThickness());
|
|
|
- pper.setProducttype(productionProcesses.getProducttype());
|
|
|
- pper.setOnceprocessmin(productionProcesses.getProduceTime());
|
|
|
- pper.setPcNum(productionProcesses.getOpeProducePcNum());
|
|
|
- pper.setOccupyType("process");
|
|
|
- equipmentRunTimes.add(pper);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // 退火锁定的工序添加到待排程的设备占用时间中
|
|
|
- if(equipmentRunTimes.size()>0){
|
|
|
- if(v.get(0).getEquipment().getEquipmentRunTimes() == null){
|
|
|
- v.get(0).getEquipment().setEquipmentRunTimes(equipmentRunTimes);
|
|
|
- }else{
|
|
|
- v.get(0).getEquipment().getEquipmentRunTimes().addAll(equipmentRunTimes);
|
|
|
- }
|
|
|
- equipmentRunTimeMerge(v.get(0).getEquipment(),v.get(0).getApsOverallConfig().getFurnaceInstallations());
|
|
|
- }*/
|
|
|
-
|
|
|
-
|
|
|
// 合并不同订单退火
|
|
|
List<String> hbThIds = v.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
|
|
|
List<ProductionProcesses> hbThPros = apsSolution.getProcessesList().stream().filter(vp -> hbThIds.contains(vp.getId())).collect(Collectors.toList());
|