|
@@ -236,8 +236,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- solvedBalance.getProcessesList().addAll(hasLocks);
|
|
|
|
- /*log.info("**************排程最终评分分析***************");
|
|
|
|
|
|
+ log.info("**************排程最终评分分析***************");
|
|
if(notLocks != null && notLocks.size()>0){
|
|
if(notLocks != null && notLocks.size()>0){
|
|
for (ProductionProcesses notLock : notLocks) {
|
|
for (ProductionProcesses notLock : notLocks) {
|
|
for (ProductionProcesses productionProcesses : solvedBalance.getProcessesList()) {
|
|
for (ProductionProcesses productionProcesses : solvedBalance.getProcessesList()) {
|
|
@@ -264,8 +263,9 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
}
|
|
}
|
|
ScoreExplanation<ApsSolution, HardSoftScore> explain2 = scoreManager.explain(solvedBalance);
|
|
ScoreExplanation<ApsSolution, HardSoftScore> explain2 = scoreManager.explain(solvedBalance);
|
|
log.info(explain2.toString());
|
|
log.info(explain2.toString());
|
|
- log.info("**************排程最终评分分析***************");*/
|
|
|
|
- softExplain(explain,solvedBalance.getProcessesList());
|
|
|
|
|
|
+ log.info("**************排程最终评分分析***************");
|
|
|
|
+ productionScheduleRetVo.setScoreResult(explain2.toString());
|
|
|
|
+ softExplain(explain2,solvedBalance.getProcessesList());
|
|
|
|
|
|
productionScheduleRetVo.setProcesses(solvedBalance.getProcessesList());
|
|
productionScheduleRetVo.setProcesses(solvedBalance.getProcessesList());
|
|
// 循环引用ProductionProcesses置空
|
|
// 循环引用ProductionProcesses置空
|
|
@@ -353,7 +353,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
po.setEquipmentId(productionProcesses.getEquipmentId());
|
|
po.setEquipmentId(productionProcesses.getEquipmentId());
|
|
po.setEquipment(productionProcesses.getEquipment());
|
|
po.setEquipment(productionProcesses.getEquipment());
|
|
// po.setConflictRoptions(productionProcesses.getConflictRoptions());
|
|
// po.setConflictRoptions(productionProcesses.getConflictRoptions());
|
|
-
|
|
|
|
|
|
+ po.setConflictDes(productionProcesses.getConflictDes());
|
|
productionProcesses.setOpeProducePcNum(1);
|
|
productionProcesses.setOpeProducePcNum(1);
|
|
productionProcesses.setProduceTime(productionProcesses.getProduceTime()-po.getUnitProduceTime());
|
|
productionProcesses.setProduceTime(productionProcesses.getProduceTime()-po.getUnitProduceTime());
|
|
productionProcesses.setEndTime(productionProcesses.getEndTime().minusMinutes(po.getUnitProduceTime()));
|
|
productionProcesses.setEndTime(productionProcesses.getEndTime().minusMinutes(po.getUnitProduceTime()));
|
|
@@ -365,6 +365,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
|
|
|
solvedBalance.getProcessesList().addAll(otherThproces);
|
|
solvedBalance.getProcessesList().addAll(otherThproces);
|
|
solvedBalance.getProcessesList().addAll(sers);
|
|
solvedBalance.getProcessesList().addAll(sers);
|
|
|
|
+ solvedBalance.getProcessesList().addAll(hasLocks);
|
|
// solvedBalance.getProcessesList().addAll(otherNotThproces);
|
|
// solvedBalance.getProcessesList().addAll(otherNotThproces);
|
|
for (ProductionProcesses productionProcesses : solvedBalance.getProcessesList()) {
|
|
for (ProductionProcesses productionProcesses : solvedBalance.getProcessesList()) {
|
|
productionProcesses.setPreviousProcesses(null);
|
|
productionProcesses.setPreviousProcesses(null);
|
|
@@ -374,6 +375,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
productionProcesses.getEquipment().setEquipmentRunTimes(null);
|
|
productionProcesses.getEquipment().setEquipmentRunTimes(null);
|
|
productionProcesses.setPreviousStep(null);
|
|
productionProcesses.setPreviousStep(null);
|
|
productionProcesses.setOptionalProviderEquipments(null);
|
|
productionProcesses.setOptionalProviderEquipments(null);
|
|
|
|
+ productionProcesses.setEquass(null);
|
|
if(productionProcesses.getApsOverallConfig() != null){
|
|
if(productionProcesses.getApsOverallConfig() != null){
|
|
productionProcesses.getApsOverallConfig().setFurnaceInstallations(null);
|
|
productionProcesses.getApsOverallConfig().setFurnaceInstallations(null);
|
|
productionProcesses.getApsOverallConfig().setMergeFurnaces(null);
|
|
productionProcesses.getApsOverallConfig().setMergeFurnaces(null);
|
|
@@ -417,7 +419,10 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
List<ProductionProcesses> previousProcesses = process.getPreviousProcesses();
|
|
List<ProductionProcesses> previousProcesses = process.getPreviousProcesses();
|
|
if(previousProcesses != null){
|
|
if(previousProcesses != null){
|
|
for (ProductionProcesses previousProcess : previousProcesses) {
|
|
for (ProductionProcesses previousProcess : previousProcesses) {
|
|
- if(previousProcess.getEndTime().plusMinutes(previousProcess.getMaxWaitTime()).compareTo(process.getStartTime())>0){
|
|
|
|
|
|
+ /*if(previousProcess.getEndTime().plusMinutes(previousProcess.getMaxWaitTime()).compareTo(process.getStartTime())>0){
|
|
|
|
+ continue;
|
|
|
|
+ }*/
|
|
|
|
+ if(previousProcess.getEndTime().plusMinutes(process.getMaxWaitTime()).compareTo(process.getStartTime())>0){
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
ProductionProcesses preProcess = previousProcess;
|
|
ProductionProcesses preProcess = previousProcess;
|
|
@@ -509,10 +514,10 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
EquipmentRunTime maxRunTime = null;
|
|
EquipmentRunTime maxRunTime = null;
|
|
for (EquipmentRunTime equipmentRunTime : equipmentRunTimesAll) {
|
|
for (EquipmentRunTime equipmentRunTime : equipmentRunTimesAll) {
|
|
if(equipmentRunTime.getEndRunTime().compareTo(process.getStartTime().plusMinutes(-lzTimes))<=0
|
|
if(equipmentRunTime.getEndRunTime().compareTo(process.getStartTime().plusMinutes(-lzTimes))<=0
|
|
- && equipmentRunTime.getStartRunTime().compareTo(process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()))>=0){
|
|
|
|
|
|
+ && equipmentRunTime.getStartRunTime().compareTo(process.getStartTime().plusMinutes(-process.getMaxWaitTime()))>=0){
|
|
equipmentRunTimes.add(equipmentRunTime);
|
|
equipmentRunTimes.add(equipmentRunTime);
|
|
}else{
|
|
}else{
|
|
- if(equipmentRunTime.getStartRunTime().compareTo(process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()))<0){
|
|
|
|
|
|
+ if(equipmentRunTime.getStartRunTime().compareTo(process.getStartTime().plusMinutes(-process.getMaxWaitTime()))<0){
|
|
if(minRunTime == null){
|
|
if(minRunTime == null){
|
|
minRunTime = equipmentRunTime;
|
|
minRunTime = equipmentRunTime;
|
|
}else{
|
|
}else{
|
|
@@ -542,7 +547,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
// 首个占用时间
|
|
// 首个占用时间
|
|
if(i == 0){
|
|
if(i == 0){
|
|
if(equipmentRunTimes.size() == 1){
|
|
if(equipmentRunTimes.size() == 1){
|
|
- proStartTime = process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()/2);
|
|
|
|
|
|
+ proStartTime = process.getStartTime().plusMinutes(-process.getMaxWaitTime()/2);
|
|
proEndTime = proStartTime.plusMinutes(preProcess.getProduceTime());
|
|
proEndTime = proStartTime.plusMinutes(preProcess.getProduceTime());
|
|
hasSet = true;
|
|
hasSet = true;
|
|
}else{
|
|
}else{
|
|
@@ -554,7 +559,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
proEndTime1 = proEndTime1.plusMinutes(-preProcess.getCutfinishmin()).plusMinutes(-nextEquipmentRunTime.getPrepressworkmin());
|
|
proEndTime1 = proEndTime1.plusMinutes(-preProcess.getCutfinishmin()).plusMinutes(-nextEquipmentRunTime.getPrepressworkmin());
|
|
}
|
|
}
|
|
LocalDateTime proStartTime1 = proEndTime1.plusMinutes(-preProcess.getProduceTime());
|
|
LocalDateTime proStartTime1 = proEndTime1.plusMinutes(-preProcess.getProduceTime());
|
|
- if(proStartTime1.compareTo(process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()))>0){
|
|
|
|
|
|
+ if(proStartTime1.compareTo(process.getStartTime().plusMinutes(-process.getMaxWaitTime()))>0){
|
|
LocalDateTime minproStartTime = proStartTime1;
|
|
LocalDateTime minproStartTime = proStartTime1;
|
|
boolean nextseries = seriesLz(equipmentRunTime, preProcess, -1);
|
|
boolean nextseries = seriesLz(equipmentRunTime, preProcess, -1);
|
|
if(!nextseries){
|
|
if(!nextseries){
|
|
@@ -618,14 +623,14 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
// 首个占用时间
|
|
// 首个占用时间
|
|
if(i == 0){
|
|
if(i == 0){
|
|
if(equipmentRunTimes.size() == 1){
|
|
if(equipmentRunTimes.size() == 1){
|
|
- proStartTime = process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()/2);
|
|
|
|
|
|
+ proStartTime = process.getStartTime().plusMinutes(-process.getMaxWaitTime()/2);
|
|
proEndTime = proStartTime.plusMinutes(preProcess.getProduceTime());
|
|
proEndTime = proStartTime.plusMinutes(preProcess.getProduceTime());
|
|
hasSet = true;
|
|
hasSet = true;
|
|
}else{
|
|
}else{
|
|
EquipmentRunTime nextEquipmentRunTime = equipmentRunTimes.get(i+1);
|
|
EquipmentRunTime nextEquipmentRunTime = equipmentRunTimes.get(i+1);
|
|
LocalDateTime proEndTime1 = nextEquipmentRunTime.getStartRunTime().plusMinutes(-1);
|
|
LocalDateTime proEndTime1 = nextEquipmentRunTime.getStartRunTime().plusMinutes(-1);
|
|
LocalDateTime proStartTime1 = proEndTime1.plusMinutes(-preProcess.getProduceTime());
|
|
LocalDateTime proStartTime1 = proEndTime1.plusMinutes(-preProcess.getProduceTime());
|
|
- if(proStartTime1.compareTo(process.getStartTime().plusMinutes(-preProcess.getMaxWaitTime()))>0){
|
|
|
|
|
|
+ if(proStartTime1.compareTo(process.getStartTime().plusMinutes(-process.getMaxWaitTime()))>0){
|
|
LocalDateTime minproStartTime = proStartTime1;
|
|
LocalDateTime minproStartTime = proStartTime1;
|
|
if(minproStartTime.compareTo(equipmentRunTime.getEndRunTime())>0){
|
|
if(minproStartTime.compareTo(equipmentRunTime.getEndRunTime())>0){
|
|
proStartTime = proStartTime1;
|
|
proStartTime = proStartTime1;
|
|
@@ -843,6 +848,9 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
if(process.getApsOverallConfig() == null){
|
|
if(process.getApsOverallConfig() == null){
|
|
process.setApsOverallConfig(apsOverallConfig);
|
|
process.setApsOverallConfig(apsOverallConfig);
|
|
}
|
|
}
|
|
|
|
+ process.getApsOverallConfig().setApsAnnealingDifferences(productionScheduleVo.getApsAnnealingDifferences());
|
|
|
|
+ process.getApsOverallConfig().setMiddifference(productionScheduleVo.getMiddifference());
|
|
|
|
+ process.getApsOverallConfig().setFurnacedifference(productionScheduleVo.getFurnacedifference());
|
|
|
|
|
|
if(StrUtil.isBlank(process.getTaskType())){
|
|
if(StrUtil.isBlank(process.getTaskType())){
|
|
process.setTaskType("processes");
|
|
process.setTaskType("processes");
|