P15GEN2\59518
2025-10-10 9f6890646993d16260d4201d613c092132856127
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package biz.policy.price;
 
import java.util.ArrayList;
import java.util.List;
 
import foundation.json.IJSONProvider;
import foundation.json.IJSONWriter;
 
public class PriceResult implements IJSONProvider {
 
    private String skuId;
    private String selectId;
    private boolean includeNotAlive;
    private PriceLine baseLine;
    private List<PriceLine> selecteds;
    private List<PriceLine> domainLines;
    
    public PriceResult(String skuId, String selectId, boolean includeNotAlive) {
        this.skuId = skuId;
        this.selectId = selectId;
        this.includeNotAlive = includeNotAlive;
        domainLines = new ArrayList<PriceLine>();
        selecteds = new ArrayList<PriceLine>();
    }
 
    public void setBasePrice(PriceLine baseLine) {
        this.baseLine = baseLine;
    }
    
    public void addPriceList(List<PriceLine> prices) throws Exception {
        domainLines.addAll(prices);
    }
    
    public void setSelectedLine(List<OnsiteLine> lines) {
        if (lines == null) {
            return ;
        }
        
        for (OnsiteLine line : lines) {
            selecteds.add(line.transToPrice(baseLine.getPrice()));
        }
    }
 
    public String getSelectId() {
        return selectId;
    }
 
    private PriceLine getPriorSelected() {
        PriceSelector selector = new PriceSelector();
        
        if (selecteds == null) {
            return null;
        }
        
        //1.
        for (PriceLine line: selecteds) {
            if (!line.isAlive()) {
                continue;
            }
            
            selector.loadOne(line);
        }
        
        List<PriceLine> result = selector.getPriceList().getItemList();
        
        if (result.size() >= 1) {
            return result.get(0);
        }
        //3.
        return null;
    }
 
    private List<PriceLine> getActives() {
        PriceSelector selector = new PriceSelector();
        
        //1.
        selector.loadOne(baseLine);
        
        //2.
        for (PriceLine line: domainLines) {
            if (!line.isAlive()) {
                continue;
            }
            
            selector.loadOne(line);
        }
        
        //3.
        return selector.getPriceList().getItemList();
    }
 
    @Override
    public void writeJSON(IJSONWriter writer) {
        writer.beginObject(skuId);
        
        //1.
        List<PriceLine> topActives = getActives();
        writer.beginArray("actives");
        
        for (PriceLine line: topActives) {
            line.writeJSON(writer);
        }
 
        writer.endArray();
        
        //2.
        writer.beginArray("lines");
        
        if (baseLine != null) {
            baseLine.writeJSON(writer);
        }
        
        for (PriceLine line: domainLines) {
            if (!line.isAlive() && !includeNotAlive) {
                continue;
            }
            
            line.writeJSON(writer);
        }
        
        writer.endArray();
        
        //3.
 
        PriceLine selected = getPriorSelected();
        if (selected != null) {
            writer.beginObject(selectId);
            
            selected.writeJSONBody(writer);
            
            writer.endObject();
        }
        
        writer.endObject();
    }
}