自己建网站有什么好处内蒙古呼和浩特网站建设

当前位置: 首页 > news >正文

自己建网站有什么好处,内蒙古呼和浩特网站建设,网站可以做网站广告,wordpress管理页面地址改造的是DictAspect类#xff1a; 原来使用的 parseDictText(Object result)方法#xff0c;针对返回对象为Result 的IPage的分页列表数据进行动态字典注入#xff0c;当单个对象查询#xff0c;列表查询#xff0c;或者多个数据放到Map中时#xff0c;就不会自动转化 原来使用的 parseDictText(Object result)方法针对返回对象为Result 的IPage的分页列表数据进行动态字典注入当单个对象查询列表查询或者多个数据放到Map中时就不会自动转化在web端进行展示的时候就需要连表查询或者手动查询字典值不方便使用。 于是我改造了parseDictText(方法不仅针对返回对象为Result时的分页列表还支持列表、对象以及Map类型的结果。实在Result对象执行setResult()方式时进行自动注入转换。 原方法 代码 private Object parseDictText(Object result) {//if (result instanceof Result) {if (true) {if (((Result) result).getResult() instanceof IPage) {ListJSONObject items new ArrayList();//step.1 筛选出加了 Dict 注解的字段列表ListField dictFieldList new ArrayList();// 字典数据列表 key 字典codevalue数据列表MapString, ListString dataListMap new HashMap(5);//取出结果集ListObject records((IPage) ((Result) result).getResult()).getRecords();//update-begin–Author:zyf – Date:20220606 —-for【VUEN-1230】 判断是否含有字典注解,没有注解返回—–Boolean hasDict checkHasDict(records);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类的JsonFormatjson 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();//update-begin—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————String dataSource field.getAnnotation(Dict.class).ds();//update-end—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————ListString dataList;String dictCode code;if (!StringUtils.isEmpty(table)) {//update-begin—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————dictCode String.format(%s,%s,%s,%s, table, text, code, dataSource);//update-end—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————}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)nullitem.get(field.getName())!null){//SimpleDateFormat aDatenew 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 调用翻译方法一次性翻译MapString, ListDictModel 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();//update-begin—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————// 自定义的字典表数据源String dataSource field.getAnnotation(Dict.class).ds();//update-end—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————String fieldDictCode code;if (!StringUtils.isEmpty(table)) {//update-begin—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————fieldDictCode String.format(%s,%s,%s,%s, table, text, code, dataSource);//update-end—author:chenrui —date:20231221 for[issues/#5643]解决分布式下表字典跨库无法查询问题————}String value record.getString(field.getName());if (oConvertUtils.isNotEmpty(value)) {ListDictModel dictModels translText.get(fieldDictCode);if(dictModelsnull || 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);}}return result;}改造 判断传递参数的类型是IPage、List、Map、Object如果是IPage、List、Map则把对象中的数据拿出来再挨个转换改造为新的结果数据返回。 private Object parseDictText(Object result) {if (result instanceof Result) {ListObject list new LinkedList();if (((Result) result).getResult() instanceof IPage) {//分页list ((IPage) ((Result) result).getResult()).getRecords();} else if (((Result) result).getResult() instanceof List) {//List集合list (ListObject) ((Result) result).getResult();} else if (((Result) result).getResult() instanceof Map) {//mapMapObject, Object map (MapObject, Object) ((Result) result).getResult();MapObject, Object itemMap new HashMap();for (Map.Entry entry : map.entrySet()) {//System.out.println(entry.getKey() entry.getValue());Map mapRe new HashMap();if (entry.getValue() instanceof List) {//列表ListObject listItems new ArrayList();for (Object record : (List) entry.getValue()) {if (checkIsJsonStr(record)) {//字典翻译record this.dictEscape(record);}listItems.add(record);}itemMap.put(entry.getKey(), listItems);} else if (entry.getValue() instanceof Object) {//单对象Object record entry.getValue();//判断能否转换成JSON因为有些结果集返回的是String类型导致翻译异常因此判断是否可以转换jsonif (checkIsJsonStr(record)) {//字典翻译record this.dictEscape(record);}itemMap.put(entry.getKey(), record);}}((Result) result).setResult(itemMap);} else {//单对象Object record ((Result) result).getResult();//判断能否转换成JSON因为有些结果集返回的是String类型导致翻译异常因此判断是否可以转换jsonif (checkIsJsonStr(record)) {//字典翻译record this.dictEscape(record);}((Result) result).setResult(record);}//列表解析if (list ! null list.size() 0) {ListObject items new ArrayList();for (Object record : list) {if (checkIsJsonStr(record)) {//字典翻译record this.dictEscape(record);}items.add(record);}if (((Result) result).getResult() instanceof IPage) {((IPage) ((Result) result).getResult()).setRecords(items);} else if (((Result) result).getResult() instanceof List) {((Result) result).setResult(items);}}}return result;}字典翻译方法 /*** 字典翻译** param record* return/private JSONObject dictEscape(Object record) {ObjectMapper mapper new ObjectMapper();String json {};JSONObject item null;try {//解决JsonFormat注解解析不了的问题详见SysAnnouncement类的JsonFormatjson mapper.writeValueAsString(record);//对象序列化为JSON字符串} catch (JsonProcessingException e) {log.error(json解析失败 e.getMessage(), e);}try {item JSONObject.parseObject(json);//update-begin–Author:scott – Date:20190603 —-for解决继承实体字段无法翻译问题——for (Field field : oConvertUtils.getAllFields(record)) {//update-end–Author:scott – Date:20190603 —-for解决继承实体字段无法翻译问题——if (field.getAnnotation(Dict.class) ! null) {String code field.getAnnotation(Dict.class).dicCode();String text field.getAnnotation(Dict.class).dicText();String table field.getAnnotation(Dict.class).dictTable();String key String.valueOf(item.get(field.getName()));//翻译字典值对应的txtString textValue key;//非中文时翻译if (!checkCountName(key)) {textValue translateDictValue(code, text, table, key);}log.debug( 字典Val : textValue);log.debug( 翻译字典字段 field.getName() CommonConstant.DICT_TEXT_SUFFIX textValue);item.put(field.getName() CommonConstant.DICT_TEXT_SUFFIX, textValue);}//date类型默认转换string格式化日期if (field.getType().getName().equals(java.util.Date) 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()))));}}} catch (Exception e) {log.info(字典翻译异常 e.getMessage(), e);}return item;}检测是否是中文 /** 检测是否是中文** param countName* return/public static boolean checkCountName(String countName) {Pattern p Pattern.compile([\u4e00-\u9fa5]);Matcher m p.matcher(countName);if (m.find()) {return true;}return false;}检测是否可转换为JSON字符串 /** 检测是否可转换为JSON字符串** param record* return*/public static boolean checkIsJsonStr(Object record) {boolean jsonFlag false;try {String json new ObjectMapper().writeValueAsString(record);if (json.startsWith({)) {jsonFlag true;}} catch (JsonProcessingException e) {e.printStackTrace();}return jsonFlag;}