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
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.java110.core.context;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 应用上下文对象
 * Created by wuxw on 2017/4/22.
 */
public class AppContext {
 
 
    /**
     * olId 主键前缀
     */
    public final static String PREFIX_OLID = "OLID_";
 
    /**
     * custId 主键前缀
     */
    public final static String PREFIX_CUSTID = "CUSTID_";
 
    /**
     * 订单动作
     */
    private String bo_action_type;
 
 
    /**
     * 为了满足 一个单子上有 多个 olId,custId 不同的处理,
     * key 为 olId,custId 默认 前缀加 请求时的 值 如 OLID_-1
     * value 通过生单后生成的 值 如 12345678
     *
     * 后期取值时通过订单原始请求报文中 olId,custId 对应的值 从map 中获取
     */
    private Map<String,String> keyIdMap = null;
 
    /**
     * 返回报文
     */
    private JSONObject rspJson;
 
 
    private Object reqObj;
 
 
 
 
    /**
     * 存放订单data节点
     */
    private  Map<String,JSONArray> datas = null;
 
 
    public static AppContext newInstance(){
        AppContext context = new AppContext();
        context.keyIdMap = new HashMap<String,String>();
        context.datas = new HashMap<String, JSONArray>();
        return context;
    }
 
 
    /**
     * 添加 数据
     * @param data
     */
    public void addData(String actionTypeCd , JSONArray data){
        synchronized (datas){
            datas.put(actionTypeCd,data);
        }
    }
 
    public void coverData(Map<String,JSONArray> datas){
        this.datas = datas;
    }
 
    /**
     * 获取 所有数据
     * @return
     */
    public Map<String,JSONArray> getAllDatas(){
        return datas;
    }
 
    /**
     * 根据 动作类型获取 数据
     * @param actionTypeCd
     * @return
     */
    public JSONArray getDatasByActionTypeCd(String actionTypeCd){
        return datas.get(actionTypeCd);
    }
 
    /**
     *
     * 根据 原始的olId的值获取新生成的值
     * @param originalKeyIdValue 原始的olId 值 如请求订单中的olId 为 -1 这里就写-1
     * @param defalutValue 如果获取不到对应的值则返回默认值
     * @return
     */
    public String getKeyId(String originalKeyIdValue,String defalutValue){
        if(keyIdMap.containsKey(originalKeyIdValue)){
            return keyIdMap.get(originalKeyIdValue);
        }
 
        return defalutValue;
    }
 
    /**
     * 设置新生成的主键值
     * @param prefix
     * @param originalKeyIdValue
     * @param newValue
     */
    public void setKeyId(String prefix,String originalKeyIdValue,String newValue){
        keyIdMap.put(prefix+originalKeyIdValue,newValue);
    }
 
 
    public JSONObject getRspJson() {
        return rspJson;
    }
 
    public void setRspJson(JSONObject rspJson) {
        this.rspJson = rspJson;
    }
 
    public Object getReqObj() {
        return reqObj;
    }
 
    public void setReqObj(Object reqObj) {
        this.reqObj = reqObj;
    }
 
 
    public String getBo_action_type() {
        return bo_action_type;
    }
 
    public void setBo_action_type(String bo_action_type) {
        this.bo_action_type = bo_action_type;
    }
}