提交 | 用户 | age
|
a6a76f
|
1 |
package com.yc.action.grid; |
F |
2 |
|
|
3 |
import com.fasterxml.jackson.databind.ObjectMapper; |
|
4 |
import com.google.gson.Gson; |
|
5 |
import com.google.gson.GsonBuilder; |
|
6 |
import com.google.gson.TypeAdapter; |
|
7 |
import com.google.gson.internal.LinkedTreeMap; |
|
8 |
import com.google.gson.stream.JsonReader; |
|
9 |
import com.google.gson.stream.JsonToken; |
|
10 |
import com.google.gson.stream.JsonWriter; |
|
11 |
import com.yc.exception.ApplicationException; |
|
12 |
import com.yc.utils.DateUtil; |
|
13 |
import com.yc.utils.SessionKey; |
7f8ca8
|
14 |
import org.apache.commons.lang3.StringUtils; |
a6a76f
|
15 |
|
F |
16 |
import javax.servlet.http.HttpSession; |
|
17 |
import java.io.IOException; |
|
18 |
import java.util.*; |
|
19 |
import java.util.regex.Matcher; |
|
20 |
import java.util.regex.Pattern; |
|
21 |
|
|
22 |
public class GridUtils { |
|
23 |
public static int prossRowSetDataType_Int(Map<String,Object> map,String key){ |
|
24 |
return map.get(key)==null?0:("".equalsIgnoreCase(map.get(key)+"")?0:Integer.parseInt((map.get(key)+""))); |
|
25 |
} |
|
26 |
public static Integer prossRowSetDataType_Integer(Map<String,Object> map,String key){ |
|
27 |
return map.get(key)==null?null:("".equalsIgnoreCase(map.get(key)+"")?null:(Integer)map.get(key)); |
|
28 |
} |
|
29 |
public static String toJson(Object obj){ |
|
30 |
if(obj==null){ return "";} |
|
31 |
GsonBuilder gb = new GsonBuilder(); |
|
32 |
gb.registerTypeAdapter(String.class, new StringConverter()); |
|
33 |
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping().serializeNulls(); |
|
34 |
Gson gson = gb.create(); |
|
35 |
return gson.toJson(obj); |
|
36 |
} |
|
37 |
public static String toJsonNotNull(Object obj){//obj的null属性不输出 |
|
38 |
if(obj==null){ return "";} |
|
39 |
GsonBuilder gb = new GsonBuilder(); |
|
40 |
gb.registerTypeAdapter(String.class, new StringConverter()); |
|
41 |
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping(); |
|
42 |
Gson gson = gb.create(); |
|
43 |
return gson.toJson(obj); |
|
44 |
} |
|
45 |
public static Map fromJson(String obj){//obj的null属性不输出 |
|
46 |
if(obj==null||"".equalsIgnoreCase(obj)){ return null;} |
|
47 |
GsonBuilder gb = new GsonBuilder(); |
|
48 |
gb.registerTypeAdapter(String.class, new StringConverter()); |
|
49 |
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping(); |
|
50 |
Gson gson = gb.create(); |
|
51 |
return gson.fromJson(obj,HashMap.class); |
|
52 |
} |
|
53 |
public static <T> T fromJson(String obj,Class<T> tClass){//obj的null属性不输出 |
|
54 |
if(obj==null||"".equalsIgnoreCase(obj)){ return null;} |
|
55 |
GsonBuilder gb = new GsonBuilder(); |
|
56 |
gb.registerTypeAdapter(String.class, new StringConverter()); |
|
57 |
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping(); |
|
58 |
Gson gson = gb.create(); |
|
59 |
return gson.fromJson(obj,tClass); |
|
60 |
} |
|
61 |
public static Map fromJsonByJackson(String json) { |
|
62 |
if(json==null||"".equalsIgnoreCase(json)){ return null;} |
|
63 |
ObjectMapper mapper = new ObjectMapper(); |
|
64 |
try { |
|
65 |
return mapper.readValue(json,Map.class); |
|
66 |
} catch (IOException e) { |
|
67 |
e.printStackTrace(); |
|
68 |
} |
|
69 |
return null; |
|
70 |
} |
|
71 |
|
7f8ca8
|
72 |
/** |
F |
73 |
* 用在拼接sql参数,避免写入数据库出现'null'情况 |
|
74 |
* @param parm |
|
75 |
* @return |
|
76 |
*/ |
|
77 |
public static String prossSqlParm(String parm){ |
6e88ad
|
78 |
return StringUtils.isBlank(parm)?null:" '"+parm.replaceAll("'","''")+"' "; |
7f8ca8
|
79 |
} |
a6a76f
|
80 |
public static String toJsonisExpose(Object obj){//obj有Expose注解的才输出 |
F |
81 |
if(obj==null){ return "";} |
|
82 |
GsonBuilder gb = new GsonBuilder(); |
|
83 |
gb.registerTypeAdapter(String.class, new StringConverter()); |
|
84 |
gb.setDateFormat("yyyy-MM-dd HH:mm:ss") |
|
85 |
.disableHtmlEscaping() |
|
86 |
.excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性 |
|
87 |
.enableComplexMapKeySerialization() ; |
|
88 |
Gson gson = gb.create(); |
|
89 |
return gson.toJson(obj); |
|
90 |
} |
|
91 |
public static String prossRowSetDataType_String(Map<String,Object> map,String key){ |
|
92 |
return map.get(key)==null?"":((map.get(key)+"")); |
|
93 |
} |
|
94 |
public static Date prossRowSetDataType_Date(Map<String,Object> map, String key){ |
|
95 |
return map.get(key)==null?null:(Date)(map.get(key)); |
|
96 |
} |
|
97 |
public static String prossRowSetDataType_StringByReplaceBlank(Map<String,Object> map,String key){ |
|
98 |
return replaceBlank(prossRowSetDataType_String(map,key)); |
|
99 |
} |
|
100 |
|
|
101 |
/** |
|
102 |
* 把内容的单引号替换成二个单引号,用在拼接sql |
|
103 |
* @param map |
|
104 |
* @param key |
|
105 |
* @return |
|
106 |
*/ |
|
107 |
public static String prossRowSetDataType_StringByAddTwoQuotes(Map<String,Object> map,String key){ |
|
108 |
return prossRowSetDataType_String(map,key).replaceAll("'","''"); |
|
109 |
} |
|
110 |
public static double prossRowSetDataType_Double(Map<String,Object> map,String key){ |
|
111 |
return map.get(key)==null?0d:("".equalsIgnoreCase(map.get(key)+"")?0d:Double.parseDouble((map.get(key)+""))); |
|
112 |
} |
|
113 |
|
|
114 |
public static float prossRowSetDataType_Float(Map<String,Object> map,String key){ |
|
115 |
return map.get(key)==null?0f:("".equalsIgnoreCase(map.get(key)+"")?0f:Float.parseFloat((map.get(key)+""))); |
|
116 |
} |
|
117 |
|
|
118 |
public static boolean prossRowSetDataType_Boolean(Map<String,Object> map,String key){ |
|
119 |
return map.get(key)==null?false:("".equalsIgnoreCase(map.get(key)+"")?false:("0".equalsIgnoreCase((map.get(key)+""))?false:true)); |
|
120 |
} |
|
121 |
// 去除字符串中的换行符等 |
|
122 |
public static String replaceBlank(String str) { |
|
123 |
if (str == null || str == "") { return ""; } |
|
124 |
Matcher m = null; |
|
125 |
try { |
|
126 |
Pattern p = Pattern.compile("\t|\r|\n"); |
|
127 |
m = p.matcher(str); |
|
128 |
} catch (Exception e) { |
|
129 |
e.printStackTrace(); |
|
130 |
throw new ApplicationException(str + "-解析出错,存在有特殊字符"); |
|
131 |
} |
|
132 |
return m.replaceAll(" ").replaceAll("\\$", "\\\\\\$"); |
|
133 |
} |
|
134 |
|
|
135 |
public static HashMap<String, String> getSessionAttributes(HttpSession session, int formid, String doccode, boolean flag) { |
|
136 |
HashMap<String, String> env = new HashMap<String, String>(); |
|
137 |
env.put("@formid", formid + ""); |
|
138 |
env.put("@user", (String) session.getAttribute(SessionKey.USERCODE)); |
|
139 |
env.put("user", (String) session.getAttribute(SessionKey.USERCODE)); |
|
140 |
env.put(SessionKey.USERCODE, (String) session.getAttribute(SessionKey.USERCODE)); |
|
141 |
env.put(SessionKey.USERNAME, (String) session.getAttribute(SessionKey.USERNAME)); |
|
142 |
if(flag){ |
|
143 |
env.put("@today", "DateUtil.toDayDate()"); |
|
144 |
env.put("@now", "DateUtil.toDay()"); |
|
145 |
env.put("@day", "DateUtil.toDayDate()"); |
|
146 |
env.put("@space", " "); |
|
147 |
env.put("@date", "DateUtil.toDayDate()"); |
|
148 |
}else{ |
|
149 |
env.put("@today", DateUtil.toDayDate()); |
|
150 |
env.put("@now", DateUtil.toDay()); |
|
151 |
env.put("@day", DateUtil.toDayDate()); |
|
152 |
env.put("@space", " "); |
|
153 |
env.put("@date", DateUtil.toDayDate()); |
|
154 |
} |
|
155 |
env.put("@doccode", doccode); |
|
156 |
env.put("@treename", "");// TODO 树节点 |
|
157 |
env.put("@host", "");// TODO 主机名 |
|
158 |
env.put(SessionKey.LOADER_NAME, (String) session.getAttribute(SessionKey.LOADER_NAME)); |
|
159 |
env.put(SessionKey.IP_ADDRESS, (String) session.getAttribute(SessionKey.IP_ADDRESS)); |
|
160 |
env.put(SessionKey.HOSTNAME, (String) session.getAttribute(SessionKey.HOSTNAME)); |
|
161 |
env.put(SessionKey.MAC_ADDRESS, (String) session.getAttribute(SessionKey.MAC_ADDRESS)); |
|
162 |
env.put(SessionKey.ROLE_NAME, (String) session.getAttribute(SessionKey.ROLE_NAME)); |
|
163 |
env.put(SessionKey.HRNAME, (String) session.getAttribute(SessionKey.HRNAME)); |
|
164 |
env.put(SessionKey.HRCODE, (String) session.getAttribute(SessionKey.HRCODE)); |
|
165 |
env.put(SessionKey.CCNAME, (String) session.getAttribute(SessionKey.CCNAME)); |
|
166 |
env.put(SessionKey.CCCODE, (String) session.getAttribute(SessionKey.CCCODE)); |
|
167 |
env.put(SessionKey.COMPANY_ID, (String) session.getAttribute(SessionKey.COMPANY_ID)); |
|
168 |
env.put(SessionKey.COMPANY_NAME, (String) session.getAttribute(SessionKey.COMPANY_NAME)); |
|
169 |
env.put(SessionKey.DATA_BASE_ID, (String) session.getAttribute(SessionKey.DATA_BASE_ID)); |
|
170 |
env.put(SessionKey.DEFAULT_ACCTCODE, (String) session.getAttribute(SessionKey.DEFAULT_ACCTCODE)); |
|
171 |
env.put(SessionKey.UserCodePermission, (String) session.getAttribute(SessionKey.UserCodePermission)); |
|
172 |
env.put(SessionKey.DEFAULT_STCODE, (String) session.getAttribute(SessionKey.DEFAULT_STCODE)); |
|
173 |
env.put(SessionKey.HAsP_sHOPCOUNT, session.getAttribute(SessionKey.HAsP_sHOPCOUNT)+""); |
|
174 |
env.put(SessionKey.OPEN_ID, session.getAttribute(SessionKey.OPEN_ID)+""); |
|
175 |
env.put(SessionKey.CURRENCY, session.getAttribute(SessionKey.CURRENCY)+""); |
|
176 |
env.put(SessionKey.SHOP_CCCDOE, session.getAttribute(SessionKey.SHOP_CCCDOE)+""); |
|
177 |
env.put(SessionKey.COMPANY_PERMISSION, session.getAttribute(SessionKey.COMPANY_PERMISSION)+""); |
|
178 |
env.put(SessionKey.DEFAULT_BRAND, session.getAttribute(SessionKey.DEFAULT_BRAND)+""); |
|
179 |
env.put(SessionKey.CCCODEPERMISSION, session.getAttribute(SessionKey.CCCODEPERMISSION)+""); |
|
180 |
env.put(SessionKey.ISMODIFYPRICEWHENSCANQRCODE, session.getAttribute(SessionKey.ISMODIFYPRICEWHENSCANQRCODE)+""); |
625716
|
181 |
env.put(SessionKey.ISMODIFYPRICEWHENSALESORDER, session.getAttribute(SessionKey.ISMODIFYPRICEWHENSALESORDER)+""); |
F |
182 |
env.put(SessionKey.ISMODIFYPRICEWHENPURCHASEORDER, session.getAttribute(SessionKey.ISMODIFYPRICEWHENPURCHASEORDER)+""); |
21e5fd
|
183 |
env.put(SessionKey.SWITCHTOPAGEWHENLOGONAPP, session.getAttribute(SessionKey.SWITCHTOPAGEWHENLOGONAPP)+""); |
fe0a59
|
184 |
env.put(SessionKey.SELECTNEXTDOCUMENTWHENAPPROVED, session.getAttribute(SessionKey.SELECTNEXTDOCUMENTWHENAPPROVED)+""); |
2f46cc
|
185 |
env.put(SessionKey.ISSTARTUPPOPUPMESSAGES, session.getAttribute(SessionKey.ISSTARTUPPOPUPMESSAGES)+""); |
a6a76f
|
186 |
env.put(SessionKey.USERTYPE, session.getAttribute(SessionKey.USERTYPE)+""); |
e7ba9d
|
187 |
env.put(SessionKey.DEPARTMENT, session.getAttribute(SessionKey.DEPARTMENT)+""); |
a6a76f
|
188 |
return env; |
F |
189 |
} |
|
190 |
public static class MapTypeAdapter extends TypeAdapter<Object> { |
|
191 |
|
|
192 |
@Override |
|
193 |
public Object read(JsonReader in) throws IOException { |
|
194 |
JsonToken token = in.peek(); |
|
195 |
switch (token) { |
|
196 |
case BEGIN_ARRAY: |
|
197 |
List<Object> list = new ArrayList<Object>(); |
|
198 |
in.beginArray(); |
|
199 |
while (in.hasNext()) { |
|
200 |
list.add(read(in)); |
|
201 |
} |
|
202 |
in.endArray(); |
|
203 |
return list; |
|
204 |
|
|
205 |
case BEGIN_OBJECT: |
|
206 |
Map<String, Object> map = new LinkedTreeMap<String, Object>(); |
|
207 |
in.beginObject(); |
|
208 |
while (in.hasNext()) { |
|
209 |
map.put(in.nextName(), read(in)); |
|
210 |
} |
|
211 |
in.endObject(); |
|
212 |
return map; |
|
213 |
|
|
214 |
case STRING: |
|
215 |
return in.nextString(); |
|
216 |
|
|
217 |
case NUMBER: |
|
218 |
/** |
|
219 |
* 改写数字的处理逻辑,将数字值分为整型与浮点型。 |
|
220 |
*/ |
|
221 |
double dbNum = in.nextDouble(); |
|
222 |
|
|
223 |
// 数字超过long的最大值,返回浮点类型 |
|
224 |
if (dbNum > Long.MAX_VALUE) { |
|
225 |
return dbNum; |
|
226 |
} |
|
227 |
|
|
228 |
// 判断数字是否为整数值 |
|
229 |
long lngNum = (long) dbNum; |
|
230 |
if (dbNum == lngNum) { |
|
231 |
return lngNum; |
|
232 |
} else { |
|
233 |
return dbNum; |
|
234 |
} |
|
235 |
|
|
236 |
case BOOLEAN: |
|
237 |
return in.nextBoolean(); |
|
238 |
|
|
239 |
case NULL: |
|
240 |
in.nextNull(); |
|
241 |
return null; |
|
242 |
|
|
243 |
default: |
|
244 |
throw new IllegalStateException(); |
|
245 |
} |
|
246 |
} |
|
247 |
@Override |
|
248 |
public void write(JsonWriter out, Object value) throws IOException { |
|
249 |
// 序列化无需实现 |
|
250 |
} |
|
251 |
|
|
252 |
} |
|
253 |
|
|
254 |
} |