BaseUtil.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package com.uas.eis.utils;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import com.uas.eis.entity.ErrorMsg;
  9. import net.sf.json.JSONArray;
  10. import net.sf.json.util.JSONUtils;
  11. import com.alibaba.fastjson.JSON;
  12. import com.alibaba.fastjson.JSONObject;
  13. import com.uas.eis.exception.SystemException;
  14. public class BaseUtil {
  15. /**
  16. * 以抛出异常的方式将信息交给MyExceptionHandler MyExceptionHandler会捕捉信息并传给前台
  17. * 前台捕捉错误信息,并显示给用户
  18. *
  19. * @param error
  20. * 要在前台显示的信息
  21. */
  22. public static void showError(String error) {
  23. if (error != null && error.length() > 0)
  24. throw new SystemException(error);
  25. }
  26. public static void showError(ErrorMsg errorMsg) {
  27. if(errorMsg!=null){
  28. throw new SystemException(errorMsg);
  29. }
  30. }
  31. public static void showError(ErrorMsg errorMsg,String extraMsg) {
  32. if(errorMsg!=null){
  33. if (StringUtil.hasText(extraMsg)){
  34. errorMsg.setErrMsg(extraMsg);
  35. }
  36. throw new SystemException(errorMsg);
  37. }
  38. }
  39. /**
  40. * List集合转化成字符串, null和空字符自动去掉
  41. *
  42. * @param list
  43. * 待转化集合
  44. * @param ch
  45. * 分割符
  46. * @param repeat
  47. * 是否去重 {true-是、false-否}
  48. */
  49. public static String parseList2Str(List<?> list, String ch, boolean repeat) {
  50. StringBuffer sb = new StringBuffer();
  51. for (Object s : list) {
  52. if (s != null && !s.toString().trim().equals("")) {
  53. if (repeat) {
  54. if (!sb.toString().contains(s + ch)) {
  55. sb.append(s);
  56. sb.append(ch);
  57. }
  58. } else {
  59. sb.append(s);
  60. sb.append(ch);
  61. }
  62. }
  63. }
  64. if (sb.length() > 0 && ch.length() > 0) {
  65. return sb.substring(0, sb.lastIndexOf(ch));
  66. }
  67. return sb.toString();
  68. }
  69. /**
  70. * 将gridStore解析成maps
  71. *
  72. * @param gridStore
  73. * 字符串形式的grid数据
  74. * @return map形式的grid数据
  75. */
  76. public static List<Map<Object, Object>> parseGridStoreToMaps(String gridStore) {
  77. List<Map<Object, Object>> list = new ArrayList<Map<Object, Object>>();
  78. try {
  79. if (!gridStore.startsWith("[")) {
  80. gridStore = "[" + gridStore + "]";
  81. }
  82. if (gridStore.length() > 409600) {
  83. list = JacksonUtil.fromJsonArray(gridStore);
  84. } else {
  85. list = FlexJsonUtil.fromJsonArray(gridStore, HashMap.class);
  86. }
  87. } catch (Exception e) {
  88. list = JSONUtil.toMapList(gridStore);
  89. }
  90. return list;
  91. }
  92. /**
  93. * 数组转化成字符串, null和空字符自动去掉
  94. *
  95. * @param arr
  96. * 待转化数组
  97. * @param ch
  98. * 分割符
  99. */
  100. public static String parseArray2Str(Object[] arr, String ch) {
  101. StringBuffer sb = new StringBuffer();
  102. for (Object s : arr) {
  103. if (s != null && !s.toString().trim().equals("")) {
  104. sb.append(s);
  105. sb.append(ch);
  106. }
  107. }
  108. if (sb.length() > 0 && ch.length() > 0) {
  109. return sb.substring(0, sb.lastIndexOf(ch));
  110. }
  111. return sb.toString();
  112. }
  113. /**
  114. * 数据转换,将传入的数据转成需要调用接口规定的数据格式
  115. * @param jsonStr 传入的数据
  116. * @param keyMap UAS与外部系统的键 映射
  117. * @return
  118. */
  119. public static Map<String, Object> jsonToMap(String jsonStr, Map<String, String> keyMap){
  120. Map<String, Object> map = new HashMap<String, Object>();
  121. Map<String, Object> jsonMap = JSONObject.parseObject(jsonStr);
  122. Set<String> set = jsonMap.keySet();
  123. Iterator<String> it = set.iterator();
  124. while(it.hasNext()){
  125. String key = it.next();
  126. if(keyMap.containsKey(key)){
  127. map.put(keyMap.get(key), jsonMap.get(key));
  128. }
  129. }
  130. return map;
  131. }
  132. public static String parseDataToJson(Map<String, Object> formMap,List<Map<String, Object>> gridList){
  133. JSONObject json = new JSONObject();
  134. json.put("form", JSON.toJSON(formMap));
  135. json.put("grid", JSONArray.fromObject(gridList));
  136. return json.toString();
  137. }
  138. /**
  139. * 将formStore解析成一个map
  140. *
  141. * @param formStore
  142. * 字符串形式的表单数据
  143. * @return map形式的表单数据
  144. */
  145. public static Map<Object, Object> parseFormStoreToMap(String formStore) {
  146. try {
  147. return FlexJsonUtil.fromJson(formStore);
  148. } catch (Exception e) {
  149. return JSONUtil.toMap(formStore);
  150. }
  151. }
  152. public static String parseMap2Str(Map<?, Object> map) {
  153. if (map != null) {
  154. return JacksonUtil.toJson(map);
  155. }
  156. return null;
  157. }
  158. public static String parseGridStore2Str(List<Map<String, Object>> list) {
  159. return JacksonUtil.toJsonArray(list);
  160. }
  161. /**
  162. * 把一个list集合的map按指定字段{groupField}分组
  163. */
  164. public static Map<Object, List<Map<Object, Object>>> groupMap(List<Map<Object, Object>> maps, String groupField) {
  165. Map<Object, List<Map<Object, Object>>> set = new HashMap<Object, List<Map<Object, Object>>>();
  166. List<Map<Object, Object>> list = null;
  167. for (Map<Object, Object> map : maps) {
  168. Object key = map.get(groupField);
  169. if (set.containsKey(key)) {
  170. list = set.get(key);
  171. } else {
  172. list = new ArrayList<Map<Object, Object>>();
  173. }
  174. list.add(map);
  175. set.put(key, list);
  176. }
  177. return set;
  178. }
  179. public static Map<String, List<Map<String, Object>>> groupsMap(List<Map<String, Object>> maps, Object[] objects) {
  180. Map<String, List<Map<String, Object>>> set = new HashMap<String, List<Map<String, Object>>>();
  181. List<Map<String, Object>> list = null;
  182. String keyValue = null;
  183. Object value = null;
  184. for (Map<String, Object> map : maps) {
  185. keyValue = null;
  186. for (Object field : objects) {
  187. if (keyValue != null) {
  188. keyValue += "#";
  189. } else {
  190. keyValue = "";
  191. }
  192. value = map.get(field);
  193. keyValue += value == null ? "" : value;
  194. }
  195. // Object key = map.get(groupField);
  196. if (keyValue != null && !keyValue.equals("") && set.containsKey(keyValue)) {
  197. list = set.get(keyValue);
  198. } else {
  199. list = new ArrayList<Map<String, Object>>();
  200. }
  201. list.add(map);
  202. set.put(keyValue, list);
  203. }
  204. return set;
  205. }
  206. }