|
@@ -185,6 +185,44 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
|
|
|
}
|
|
|
apsSolution.setEquipmentList(equipments);
|
|
|
+ // 根据可选设备分组排程
|
|
|
+ Map<String,List<ProductionProcesses>> equPros = new HashMap<>();
|
|
|
+ for (ProductionProcesses productionProcesses : apsSolution.getProcessesList()) {
|
|
|
+ String equids = CollUtil.join(productionProcesses.getOptionalEquipments(), ",");
|
|
|
+ if(equPros.size() == 0){
|
|
|
+ List<ProductionProcesses> pps = new ArrayList<>();
|
|
|
+ pps.add(productionProcesses);
|
|
|
+ equPros.put(equids,pps);
|
|
|
+ }else {
|
|
|
+ boolean hasSameKeys = false;
|
|
|
+ String haskey = null;
|
|
|
+ Set<String> keys = equPros.keySet();
|
|
|
+ for (String key : keys) {
|
|
|
+ for (String optionalEquipment : productionProcesses.getOptionalEquipments()) {
|
|
|
+ if(key.contains(optionalEquipment)){
|
|
|
+ hasSameKeys = true;
|
|
|
+ haskey = key;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(hasSameKeys){
|
|
|
+ List<ProductionProcesses> processesList1 = equPros.get(haskey);
|
|
|
+ processesList1.add(productionProcesses);
|
|
|
+ equPros.remove(haskey);
|
|
|
+ for (String optionalEquipment : productionProcesses.getOptionalEquipments()) {
|
|
|
+ if(!haskey.contains(optionalEquipment)){
|
|
|
+ haskey = haskey + "," + optionalEquipment;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ equPros.put(haskey,processesList1);
|
|
|
+ }else{
|
|
|
+ List<ProductionProcesses> pps = new ArrayList<>();
|
|
|
+ pps.add(productionProcesses);
|
|
|
+ equPros.put(equids,pps);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ApsSolution solvedBalance = solver.solve(apsSolution);
|
|
|
log.info("**************排程评分分析***************");
|
|
|
SolutionManager<ApsSolution, HardSoftScore> scoreManager = SolutionManager.create(solverFactory);
|