fs-danaus
2022-11-14 12560372988b49cc9465e92c32d852db2d0e8612
提交 | 用户 | 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 }