| | |
| | | |
| | | @Around("excudeService()") |
| | | public Object doAround(ProceedingJoinPoint pjp) throws Throwable { |
| | | long time1=System.currentTimeMillis(); |
| | | long time1=System.currentTimeMillis(); |
| | | Object result = pjp.proceed(); |
| | | long time2=System.currentTimeMillis(); |
| | | log.debug("è·åJSONæ°æ® èæ¶ï¼"+(time2-time1)+"ms"); |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ¬æ¹æ³é对è¿å对象为Result çIPageçå页åè¡¨æ°æ®è¿è¡å¨æåå
¸æ³¨å
¥ |
| | | * æ¬æ¹æ³é对è¿å对象为Result çIPageçå页åè¡¨æ°æ®ãListæ°æ®ï¼éåéé¢åå¥äºä¸å±é忝䏿¯æï¼è¿è¡å¨æåå
¸æ³¨å
¥ |
| | | * åå
¸æ³¨å
¥å®ç° éè¿å¯¹å®ä½ç±»æ·»å 注解@dict æ¥æ è¯éè¦çåå
¸å
容,åå
¸å为ååå
¸codeå³å¯ ï¼tableåå
¸ code table texté
å使ç¨ä¸åæ¥jeecgçç¨æ³ç¸å |
| | | * 示ä¾ä¸ºSysUser åæ®µä¸ºsex æ·»å äºæ³¨è§£@Dict(dicCode = "sex") ä¼å¨åå
¸æå¡ç«é©¬æ¥åºæ¥å¯¹åºçtext ç¶åå¨è¯·æ±listçæ¶åå°è¿ä¸ªåå
¸textï¼å·²å段åç§°å _dictTextå½¢å¼è¿åå°å端 |
| | | * ä¾è¾å
¥å½åè¿åå¼çå°±ä¼å¤åºä¸ä¸ªsex_dictTextåæ®µ |
| | |
| | | private Object parseDictText(Object result) { |
| | | if (result instanceof Result) { |
| | | if (((Result) result).getResult() instanceof IPage) { |
| | | List<JSONObject> items = new ArrayList<>(); |
| | | |
| | | //step.1 çéåºå äº Dict 注解çåæ®µå表 |
| | | List<Field> dictFieldList = new ArrayList<>(); |
| | | // åå
¸æ°æ®åè¡¨ï¼ key = åå
¸codeï¼value=æ°æ®å表 |
| | | Map<String, List<String>> dataListMap = new HashMap<>(5); |
| | | //ååºç»æé |
| | | List<Object> records=((IPage) ((Result) result).getResult()).getRecords(); |
| | | //update-begin--Author:zyf -- Date:20220606 ----forï¼ãVUEN-1230ã 夿æ¯å¦å«æåå
¸æ³¨è§£,æ²¡ææ³¨è§£è¿å----- |
| | |
| | | if(!hasDict){ |
| | | return result; |
| | | } |
| | | |
| | | log.debug(" __ è¿å
¥åå
¸ç¿»è¯åé¢ DictAspect ââ " ); |
| | | //update-end--Author:zyf -- Date:20220606 ----forï¼ãVUEN-1230ã 夿æ¯å¦å«æåå
¸æ³¨è§£,æ²¡ææ³¨è§£è¿å----- |
| | | for (Object record : records) { |
| | | String json="{}"; |
| | | try { |
| | | //update-begin--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | //è§£å³@JsonFormat注解解æä¸äºçé®é¢è¯¦è§SysAnnouncementç±»ç@JsonFormat |
| | | json = objectMapper.writeValueAsString(record); |
| | | //update-end--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | } catch (JsonProcessingException e) { |
| | | log.error("jsonè§£æå¤±è´¥"+e.getMessage(),e); |
| | | } |
| | | //update-begin--Author:scott -- Date:20211223 ----forï¼ãissues/3303ãrestcontrollerè¿åjsonæ°æ®åkey顺åºéä¹± ----- |
| | | JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); |
| | | //update-end--Author:scott -- Date:20211223 ----forï¼ãissues/3303ãrestcontrollerè¿åjsonæ°æ®åkey顺åºéä¹± ----- |
| | | |
| | | //update-begin--Author:scott -- Date:20190603 ----forï¼è§£å³ç»§æ¿å®ä½åæ®µæ æ³ç¿»è¯é®é¢------ |
| | | //for (Field field : record.getClass().getDeclaredFields()) { |
| | | // éåææåæ®µï¼æåå
¸Codeååºæ¥ï¼æ¾å° map é |
| | | for (Field field : oConvertUtils.getAllFields(record)) { |
| | | String value = item.getString(field.getName()); |
| | | if (oConvertUtils.isEmpty(value)) { |
| | | continue; |
| | | } |
| | | //update-end--Author:scott -- Date:20190603 ----forï¼è§£å³ç»§æ¿å®ä½åæ®µæ æ³ç¿»è¯é®é¢------ |
| | | if (field.getAnnotation(Dict.class) != null) { |
| | | if (!dictFieldList.contains(field)) { |
| | | dictFieldList.add(field); |
| | | } |
| | | String code = field.getAnnotation(Dict.class).dicCode(); |
| | | String text = field.getAnnotation(Dict.class).dicText(); |
| | | String table = field.getAnnotation(Dict.class).dictTable(); |
| | | |
| | | List<String> dataList; |
| | | String dictCode = code; |
| | | if (!StringUtils.isEmpty(table)) { |
| | | dictCode = String.format("%s,%s,%s", table, text, code); |
| | | } |
| | | dataList = dataListMap.computeIfAbsent(dictCode, k -> new ArrayList<>()); |
| | | this.listAddAllDeduplicate(dataList, Arrays.asList(value.split(","))); |
| | | } |
| | | //dateç±»åé»è®¤è½¬æ¢stringæ ¼å¼åæ¥æ |
| | | //update-begin--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | //if (JAVA_UTIL_DATE.equals(field.getType().getName())&&field.getAnnotation(JsonFormat.class)==null&&item.get(field.getName())!=null){ |
| | | //SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName())))); |
| | | //} |
| | | //update-end--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | } |
| | | items.add(item); |
| | | } |
| | | |
| | | //step.2 è°ç¨ç¿»è¯æ¹æ³ï¼ä¸æ¬¡æ§ç¿»è¯ |
| | | Map<String, List<DictModel>> translText = this.translateAllDict(dataListMap); |
| | | |
| | | //step.3 å°ç¿»è¯ç»æå¡«å
å°è¿åç»æé |
| | | for (JSONObject record : items) { |
| | | for (Field field : dictFieldList) { |
| | | String code = field.getAnnotation(Dict.class).dicCode(); |
| | | String text = field.getAnnotation(Dict.class).dicText(); |
| | | String table = field.getAnnotation(Dict.class).dictTable(); |
| | | |
| | | String fieldDictCode = code; |
| | | if (!StringUtils.isEmpty(table)) { |
| | | fieldDictCode = String.format("%s,%s,%s", table, text, code); |
| | | } |
| | | |
| | | String value = record.getString(field.getName()); |
| | | if (oConvertUtils.isNotEmpty(value)) { |
| | | List<DictModel> dictModels = translText.get(fieldDictCode); |
| | | if(dictModels==null || dictModels.size()==0){ |
| | | continue; |
| | | } |
| | | |
| | | String textValue = this.translDictText(dictModels, value); |
| | | log.debug(" åå
¸Val : " + textValue); |
| | | log.debug(" __ç¿»è¯åå
¸å段__ " + field.getName() + CommonConstant.DICT_TEXT_SUFFIX + "ï¼ " + textValue); |
| | | |
| | | // TODO-sun æµè¯è¾åºï¼å¾
å |
| | | log.debug(" ---- dictCode: " + fieldDictCode); |
| | | log.debug(" ---- value: " + value); |
| | | log.debug(" ----- text: " + textValue); |
| | | log.debug(" ---- dictModels: " + JSON.toJSONString(dictModels)); |
| | | |
| | | record.put(field.getName() + CommonConstant.DICT_TEXT_SUFFIX, textValue); |
| | | } |
| | | } |
| | | } |
| | | |
| | | ((IPage) ((Result) result).getResult()).setRecords(items); |
| | | List<JSONObject> dictText = getDictText(records); |
| | | ((IPage) ((Result) result).getResult()).setRecords(dictText); |
| | | } |
| | | |
| | | else { |
| | | //ååºç»æé |
| | | Object object= (Object) ((Result) result).getResult(); |
| | | Class<?> aClass = ((Result) result).getResult().getClass(); |
| | | if ("java.util.HashMap".equals(aClass.getName())){ |
| | | //å°map转æ¢ä¸ºéåå¨è½¬æ¢ä¸ºmap |
| | | Map<String, Object> mapset = new HashMap<>(); |
| | | Map<String,Object> map= (Map<String,Object>) object; |
| | | for (String s : map.keySet()) { |
| | | Object a1 = map.get(s); |
| | | List<Object> records=new ArrayList<>(); |
| | | Class<?> aClass1 = a1.getClass(); |
| | | if ("java.util.ArrayList".equals(aClass1.getName())){ |
| | | records = (ArrayList)map.get(s); |
| | | }else{ |
| | | records = oConvertUtils.castList(a1, Object.class); |
| | | } |
| | | Boolean hasDict= checkHasDict(records); |
| | | if(!hasDict){ |
| | | return result; |
| | | } |
| | | List<JSONObject> dictText = getDictText(records); |
| | | mapset.put(s,dictText); |
| | | } |
| | | ((Result) result).setResult(mapset); |
| | | }else { |
| | | List<Object> records = oConvertUtils.castList(object, Object.class); |
| | | //update-begin--Author:zyf -- Date:20220606 ----forï¼ãVUEN-1230ã 夿æ¯å¦å«æåå
¸æ³¨è§£,æ²¡ææ³¨è§£è¿å----- |
| | | Boolean hasDict= checkHasDict(records); |
| | | if(!hasDict){ |
| | | return result; |
| | | } |
| | | List<JSONObject> dictText = getDictText(records); |
| | | ((Result) result).setResult(dictText); |
| | | } |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | /** |
| | | ä¼ å
¥éå ç¿»è¯åå
¸å¼ |
| | | **/ |
| | | private List<JSONObject> getDictText(List<Object> records){ |
| | | List<JSONObject> items = new ArrayList<>(); |
| | | //step.1 çéåºå äº Dict 注解çåæ®µå表 |
| | | List<Field> dictFieldList = new ArrayList<>(); |
| | | // åå
¸æ°æ®åè¡¨ï¼ key = åå
¸codeï¼value=æ°æ®å表 |
| | | Map<String, List<String>> dataListMap = new HashMap<>(5); |
| | | |
| | | |
| | | log.debug(" __ è¿å
¥åå
¸ç¿»è¯åé¢ DictAspect ââ " ); |
| | | //update-end--Author:zyf -- Date:20220606 ----forï¼ãVUEN-1230ã 夿æ¯å¦å«æåå
¸æ³¨è§£,æ²¡ææ³¨è§£è¿å----- |
| | | for (Object record : records) { |
| | | String json="{}"; |
| | | try { |
| | | //update-begin--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | //è§£å³@JsonFormat注解解æä¸äºçé®é¢è¯¦è§SysAnnouncementç±»ç@JsonFormat |
| | | json = objectMapper.writeValueAsString(record); |
| | | //update-end--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | } catch (JsonProcessingException e) { |
| | | log.error("jsonè§£æå¤±è´¥"+e.getMessage(),e); |
| | | } |
| | | //update-begin--Author:scott -- Date:20211223 ----forï¼ãissues/3303ãrestcontrollerè¿åjsonæ°æ®åkey顺åºéä¹± ----- |
| | | JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); |
| | | //update-end--Author:scott -- Date:20211223 ----forï¼ãissues/3303ãrestcontrollerè¿åjsonæ°æ®åkey顺åºéä¹± ----- |
| | | |
| | | //update-begin--Author:scott -- Date:20190603 ----forï¼è§£å³ç»§æ¿å®ä½åæ®µæ æ³ç¿»è¯é®é¢------ |
| | | //for (Field field : record.getClass().getDeclaredFields()) { |
| | | // éåææåæ®µï¼æåå
¸Codeååºæ¥ï¼æ¾å° map é |
| | | for (Field field : oConvertUtils.getAllFields(record)) { |
| | | String value = item.getString(field.getName()); |
| | | if (oConvertUtils.isEmpty(value)) { |
| | | continue; |
| | | } |
| | | //update-end--Author:scott -- Date:20190603 ----forï¼è§£å³ç»§æ¿å®ä½åæ®µæ æ³ç¿»è¯é®é¢------ |
| | | if (field.getAnnotation(Dict.class) != null) { |
| | | if (!dictFieldList.contains(field)) { |
| | | dictFieldList.add(field); |
| | | } |
| | | String code = field.getAnnotation(Dict.class).dicCode(); |
| | | String text = field.getAnnotation(Dict.class).dicText(); |
| | | String table = field.getAnnotation(Dict.class).dictTable(); |
| | | |
| | | List<String> dataList; |
| | | String dictCode = code; |
| | | if (!StringUtils.isEmpty(table)) { |
| | | dictCode = String.format("%s,%s,%s", table, text, code); |
| | | } |
| | | dataList = dataListMap.computeIfAbsent(dictCode, k -> new ArrayList<>()); |
| | | this.listAddAllDeduplicate(dataList, Arrays.asList(value.split(","))); |
| | | } |
| | | //dateç±»åé»è®¤è½¬æ¢stringæ ¼å¼åæ¥æ |
| | | //update-begin--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | //if (JAVA_UTIL_DATE.equals(field.getType().getName())&&field.getAnnotation(JsonFormat.class)==null&&item.get(field.getName())!=null){ |
| | | //SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName())))); |
| | | //} |
| | | //update-end--Author:zyf -- Date:20220531 ----forï¼ãissues/#3629ã DictAspect Jacksonåºå忥é----- |
| | | } |
| | | items.add(item); |
| | | } |
| | | |
| | | //step.2 è°ç¨ç¿»è¯æ¹æ³ï¼ä¸æ¬¡æ§ç¿»è¯ |
| | | Map<String, List<DictModel>> translText = this.translateAllDict(dataListMap); |
| | | |
| | | //step.3 å°ç¿»è¯ç»æå¡«å
å°è¿åç»æé |
| | | for (JSONObject record : items) { |
| | | for (Field field : dictFieldList) { |
| | | String code = field.getAnnotation(Dict.class).dicCode(); |
| | | String text = field.getAnnotation(Dict.class).dicText(); |
| | | String table = field.getAnnotation(Dict.class).dictTable(); |
| | | |
| | | String fieldDictCode = code; |
| | | if (!StringUtils.isEmpty(table)) { |
| | | fieldDictCode = String.format("%s,%s,%s", table, text, code); |
| | | } |
| | | |
| | | String value = record.getString(field.getName()); |
| | | if (oConvertUtils.isNotEmpty(value)) { |
| | | List<DictModel> dictModels = translText.get(fieldDictCode); |
| | | if(dictModels==null || dictModels.size()==0){ |
| | | continue; |
| | | } |
| | | |
| | | String textValue = this.translDictText(dictModels, value); |
| | | log.debug(" åå
¸Val : " + textValue); |
| | | log.debug(" __ç¿»è¯åå
¸å段__ " + field.getName() + CommonConstant.DICT_TEXT_SUFFIX + "ï¼ " + textValue); |
| | | |
| | | // TODO-sun æµè¯è¾åºï¼å¾
å |
| | | log.debug(" ---- dictCode: " + fieldDictCode); |
| | | log.debug(" ---- value: " + value); |
| | | log.debug(" ----- text: " + textValue); |
| | | log.debug(" ---- dictModels: " + JSON.toJSONString(dictModels)); |
| | | |
| | | record.put(field.getName() + CommonConstant.DICT_TEXT_SUFFIX, textValue); |
| | | } |
| | | } |
| | | } |
| | | return items; |
| | | } |
| | | |
| | | /** |
| | | * list å»éæ·»å |