Column.java
2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.neotel.webbox.capacitynew.box;
import com.neotel.webbox.capacity.bean.ReelItem;
import com.neotel.webbox.capacitynew.bean.ReelData;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.compress.utils.Lists;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Getter
@Setter
public class Column {
public Column(int validHeight) {
this.validHeight = validHeight; //可用高度
this.remainHeight = validHeight; //需要高度
}
private int validHeight;
private int remainHeight;
private List<SlotUnit> slotUnitList = Lists.newArrayList();
public SlotUnit getSlotUnit(ReelData reelData){
for (SlotUnit slotUnit : slotUnitList) {
if(slotUnit.getReelData().equals(reelData)){
return slotUnit;
}
}
return null;
}
public SlotUnit mergeSlotUnit(SlotUnit newSlotUnit){
if(newSlotUnit == null){
return null;
}
SlotUnit existSlotUnit = getSlotUnit(newSlotUnit.getReelData());
if(existSlotUnit != null){
int mergeCount = newSlotUnit.getReelCount() + existSlotUnit.getReelCount();
newSlotUnit.setReelCount(mergeCount);
remainHeight = remainHeight + existSlotUnit.getSlotHeight();
slotUnitList.remove(existSlotUnit);
}
return addSlotUnit(newSlotUnit);
}
/**
* 将模组加入列中, 返回加入结果,如果没放入返回null
*/
public SlotUnit addSlotUnit(SlotUnit slotUnit){
if(slotUnit == null){
return null;
}
int slotHeight = slotUnit.getSlotHeight();
if(slotHeight > remainHeight){
return null;
}
remainHeight = remainHeight - slotHeight;
slotUnitList.add(slotUnit);
return slotUnit;
}
public Map<String, ReelItem> getColumnCapacity(){
Map<String,ReelItem> capacityMap = new HashMap<>();
for (SlotUnit slotUnit : getSlotUnitList()) {
String reelSizeStr = slotUnit.getReelData().getReelSizeStr();
ReelItem capacityItem = capacityMap.get(reelSizeStr);
if(capacityItem == null){
capacityItem = new ReelItem();
capacityItem.setW(slotUnit.getReelData().getReelSize());
capacityItem.setH(slotUnit.getReelData().getReelHeight());
}
int columnCapacity = slotUnit.getReelCount();
int capacity = capacityItem.getCapacity() + columnCapacity;
capacityItem.setCapacity(capacity);
capacityMap.put(reelSizeStr,capacityItem);
}
return capacityMap;
}
}