package com.yc.action.grid;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.TypeAdapter;
|
import com.google.gson.internal.LinkedTreeMap;
|
import com.google.gson.stream.JsonReader;
|
import com.google.gson.stream.JsonToken;
|
import com.google.gson.stream.JsonWriter;
|
import com.yc.exception.ApplicationException;
|
import com.yc.utils.DateUtil;
|
import com.yc.utils.SessionKey;
|
import org.apache.commons.lang3.StringUtils;
|
|
import javax.servlet.http.HttpSession;
|
import java.io.IOException;
|
import java.util.*;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
public class GridUtils {
|
public static int prossRowSetDataType_Int(Map<String,Object> map,String key){
|
return map.get(key)==null?0:("".equalsIgnoreCase(map.get(key)+"")?0:Integer.parseInt((map.get(key)+"")));
|
}
|
public static Integer prossRowSetDataType_Integer(Map<String,Object> map,String key){
|
return map.get(key)==null?null:("".equalsIgnoreCase(map.get(key)+"")?null:(Integer)map.get(key));
|
}
|
public static String toJson(Object obj){
|
if(obj==null){ return "";}
|
GsonBuilder gb = new GsonBuilder();
|
gb.registerTypeAdapter(String.class, new StringConverter());
|
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping().serializeNulls();
|
Gson gson = gb.create();
|
return gson.toJson(obj);
|
}
|
public static String toJsonNotNull(Object obj){//obj的null属性不输出
|
if(obj==null){ return "";}
|
GsonBuilder gb = new GsonBuilder();
|
gb.registerTypeAdapter(String.class, new StringConverter());
|
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping();
|
Gson gson = gb.create();
|
return gson.toJson(obj);
|
}
|
public static Map fromJson(String obj){//obj的null属性不输出
|
if(obj==null||"".equalsIgnoreCase(obj)){ return null;}
|
GsonBuilder gb = new GsonBuilder();
|
gb.registerTypeAdapter(String.class, new StringConverter());
|
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping();
|
Gson gson = gb.create();
|
return gson.fromJson(obj,HashMap.class);
|
}
|
public static <T> T fromJson(String obj,Class<T> tClass){//obj的null属性不输出
|
if(obj==null||"".equalsIgnoreCase(obj)){ return null;}
|
GsonBuilder gb = new GsonBuilder();
|
gb.registerTypeAdapter(String.class, new StringConverter());
|
gb.setDateFormat("yyyy-MM-dd HH:mm:ss").disableHtmlEscaping();
|
Gson gson = gb.create();
|
return gson.fromJson(obj,tClass);
|
}
|
public static Map fromJsonByJackson(String json) {
|
if(json==null||"".equalsIgnoreCase(json)){ return null;}
|
ObjectMapper mapper = new ObjectMapper();
|
try {
|
return mapper.readValue(json,Map.class);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 用在拼接sql参数,避免写入数据库出现'null'情况
|
* @param parm
|
* @return
|
*/
|
public static String prossSqlParm(String parm){
|
return StringUtils.isBlank(parm)?null:" '"+parm+"' ";
|
}
|
public static String toJsonisExpose(Object obj){//obj有Expose注解的才输出
|
if(obj==null){ return "";}
|
GsonBuilder gb = new GsonBuilder();
|
gb.registerTypeAdapter(String.class, new StringConverter());
|
gb.setDateFormat("yyyy-MM-dd HH:mm:ss")
|
.disableHtmlEscaping()
|
.excludeFieldsWithoutExposeAnnotation() //不导出实体中没有用@Expose注解的属性
|
.enableComplexMapKeySerialization() ;
|
Gson gson = gb.create();
|
return gson.toJson(obj);
|
}
|
public static String prossRowSetDataType_String(Map<String,Object> map,String key){
|
return map.get(key)==null?"":((map.get(key)+""));
|
}
|
public static Date prossRowSetDataType_Date(Map<String,Object> map, String key){
|
return map.get(key)==null?null:(Date)(map.get(key));
|
}
|
public static String prossRowSetDataType_StringByReplaceBlank(Map<String,Object> map,String key){
|
return replaceBlank(prossRowSetDataType_String(map,key));
|
}
|
|
/**
|
* 把内容的单引号替换成二个单引号,用在拼接sql
|
* @param map
|
* @param key
|
* @return
|
*/
|
public static String prossRowSetDataType_StringByAddTwoQuotes(Map<String,Object> map,String key){
|
return prossRowSetDataType_String(map,key).replaceAll("'","''");
|
}
|
public static double prossRowSetDataType_Double(Map<String,Object> map,String key){
|
return map.get(key)==null?0d:("".equalsIgnoreCase(map.get(key)+"")?0d:Double.parseDouble((map.get(key)+"")));
|
}
|
|
public static float prossRowSetDataType_Float(Map<String,Object> map,String key){
|
return map.get(key)==null?0f:("".equalsIgnoreCase(map.get(key)+"")?0f:Float.parseFloat((map.get(key)+"")));
|
}
|
|
public static boolean prossRowSetDataType_Boolean(Map<String,Object> map,String key){
|
return map.get(key)==null?false:("".equalsIgnoreCase(map.get(key)+"")?false:("0".equalsIgnoreCase((map.get(key)+""))?false:true));
|
}
|
// 去除字符串中的换行符等
|
public static String replaceBlank(String str) {
|
if (str == null || str == "") { return ""; }
|
Matcher m = null;
|
try {
|
Pattern p = Pattern.compile("\t|\r|\n");
|
m = p.matcher(str);
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new ApplicationException(str + "-解析出错,存在有特殊字符");
|
}
|
return m.replaceAll(" ").replaceAll("\\$", "\\\\\\$");
|
}
|
|
public static HashMap<String, String> getSessionAttributes(HttpSession session, int formid, String doccode, boolean flag) {
|
HashMap<String, String> env = new HashMap<String, String>();
|
env.put("@formid", formid + "");
|
env.put("@user", (String) session.getAttribute(SessionKey.USERCODE));
|
env.put("user", (String) session.getAttribute(SessionKey.USERCODE));
|
env.put(SessionKey.USERCODE, (String) session.getAttribute(SessionKey.USERCODE));
|
env.put(SessionKey.USERNAME, (String) session.getAttribute(SessionKey.USERNAME));
|
if(flag){
|
env.put("@today", "DateUtil.toDayDate()");
|
env.put("@now", "DateUtil.toDay()");
|
env.put("@day", "DateUtil.toDayDate()");
|
env.put("@space", " ");
|
env.put("@date", "DateUtil.toDayDate()");
|
}else{
|
env.put("@today", DateUtil.toDayDate());
|
env.put("@now", DateUtil.toDay());
|
env.put("@day", DateUtil.toDayDate());
|
env.put("@space", " ");
|
env.put("@date", DateUtil.toDayDate());
|
}
|
env.put("@doccode", doccode);
|
env.put("@treename", "");// TODO 树节点
|
env.put("@host", "");// TODO 主机名
|
env.put(SessionKey.LOADER_NAME, (String) session.getAttribute(SessionKey.LOADER_NAME));
|
env.put(SessionKey.IP_ADDRESS, (String) session.getAttribute(SessionKey.IP_ADDRESS));
|
env.put(SessionKey.HOSTNAME, (String) session.getAttribute(SessionKey.HOSTNAME));
|
env.put(SessionKey.MAC_ADDRESS, (String) session.getAttribute(SessionKey.MAC_ADDRESS));
|
env.put(SessionKey.ROLE_NAME, (String) session.getAttribute(SessionKey.ROLE_NAME));
|
env.put(SessionKey.HRNAME, (String) session.getAttribute(SessionKey.HRNAME));
|
env.put(SessionKey.HRCODE, (String) session.getAttribute(SessionKey.HRCODE));
|
env.put(SessionKey.CCNAME, (String) session.getAttribute(SessionKey.CCNAME));
|
env.put(SessionKey.CCCODE, (String) session.getAttribute(SessionKey.CCCODE));
|
env.put(SessionKey.COMPANY_ID, (String) session.getAttribute(SessionKey.COMPANY_ID));
|
env.put(SessionKey.COMPANY_NAME, (String) session.getAttribute(SessionKey.COMPANY_NAME));
|
env.put(SessionKey.DATA_BASE_ID, (String) session.getAttribute(SessionKey.DATA_BASE_ID));
|
env.put(SessionKey.DEFAULT_ACCTCODE, (String) session.getAttribute(SessionKey.DEFAULT_ACCTCODE));
|
env.put(SessionKey.UserCodePermission, (String) session.getAttribute(SessionKey.UserCodePermission));
|
env.put(SessionKey.DEFAULT_STCODE, (String) session.getAttribute(SessionKey.DEFAULT_STCODE));
|
env.put(SessionKey.HAsP_sHOPCOUNT, session.getAttribute(SessionKey.HAsP_sHOPCOUNT)+"");
|
env.put(SessionKey.OPEN_ID, session.getAttribute(SessionKey.OPEN_ID)+"");
|
env.put(SessionKey.CURRENCY, session.getAttribute(SessionKey.CURRENCY)+"");
|
env.put(SessionKey.SHOP_CCCDOE, session.getAttribute(SessionKey.SHOP_CCCDOE)+"");
|
env.put(SessionKey.COMPANY_PERMISSION, session.getAttribute(SessionKey.COMPANY_PERMISSION)+"");
|
env.put(SessionKey.DEFAULT_BRAND, session.getAttribute(SessionKey.DEFAULT_BRAND)+"");
|
env.put(SessionKey.CCCODEPERMISSION, session.getAttribute(SessionKey.CCCODEPERMISSION)+"");
|
env.put(SessionKey.ISMODIFYPRICEWHENSCANQRCODE, session.getAttribute(SessionKey.ISMODIFYPRICEWHENSCANQRCODE)+"");
|
env.put(SessionKey.USERTYPE, session.getAttribute(SessionKey.USERTYPE)+"");
|
return env;
|
}
|
public static class MapTypeAdapter extends TypeAdapter<Object> {
|
|
@Override
|
public Object read(JsonReader in) throws IOException {
|
JsonToken token = in.peek();
|
switch (token) {
|
case BEGIN_ARRAY:
|
List<Object> list = new ArrayList<Object>();
|
in.beginArray();
|
while (in.hasNext()) {
|
list.add(read(in));
|
}
|
in.endArray();
|
return list;
|
|
case BEGIN_OBJECT:
|
Map<String, Object> map = new LinkedTreeMap<String, Object>();
|
in.beginObject();
|
while (in.hasNext()) {
|
map.put(in.nextName(), read(in));
|
}
|
in.endObject();
|
return map;
|
|
case STRING:
|
return in.nextString();
|
|
case NUMBER:
|
/**
|
* 改写数字的处理逻辑,将数字值分为整型与浮点型。
|
*/
|
double dbNum = in.nextDouble();
|
|
// 数字超过long的最大值,返回浮点类型
|
if (dbNum > Long.MAX_VALUE) {
|
return dbNum;
|
}
|
|
// 判断数字是否为整数值
|
long lngNum = (long) dbNum;
|
if (dbNum == lngNum) {
|
return lngNum;
|
} else {
|
return dbNum;
|
}
|
|
case BOOLEAN:
|
return in.nextBoolean();
|
|
case NULL:
|
in.nextNull();
|
return null;
|
|
default:
|
throw new IllegalStateException();
|
}
|
}
|
@Override
|
public void write(JsonWriter out, Object value) throws IOException {
|
// 序列化无需实现
|
}
|
|
}
|
|
}
|