From 7f53bce8df5a7c6ccb4b971a1538619938dfe68a Mon Sep 17 00:00:00 2001 From: p2x9nfpei <2196435763@qq.com> Date: Mon, 28 Apr 2025 20:44:06 +0800 Subject: [PATCH] ADD file via upload --- DictionaryServiceImpl.java | 107 +++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 DictionaryServiceImpl.java diff --git a/DictionaryServiceImpl.java b/DictionaryServiceImpl.java new file mode 100644 index 0000000..a754cba --- /dev/null +++ b/DictionaryServiceImpl.java @@ -0,0 +1,107 @@ +package com.service.impl; // 定义服务实现类包路径 + +import com.utils.StringUtil; // 导入字符串工具类 +import com.service.DictionaryService; // 导入字典服务接口 +import com.utils.ClazzDiff; // 导入类差异工具类 +import org.springframework.beans.BeanUtils; // 导入Spring Bean工具类 +import org.springframework.beans.factory.annotation.Autowired; // 导入自动装配注解 +import org.springframework.stereotype.Service; // 导入服务注解 +import java.lang.reflect.Field; // 导入反射Field类 +import java.util.*; // 导入常用集合类 +import com.baomidou.mybatisplus.plugins.Page; // 导入MyBatis-Plus分页组件 +import com.baomidou.mybatisplus.service.impl.ServiceImpl; // 导入MyBatis-Plus服务实现基类 +import org.springframework.transaction.annotation.Transactional; // 导入事务注解 +import com.utils.PageUtils; // 导入分页工具类 +import com.utils.Query; // 导入查询工具类 +import org.springframework.web.context.ContextLoader; // 导入上下文加载器 +import javax.servlet.ServletContext; // 导入Servlet上下文接口 +import javax.servlet.http.HttpServletRequest; // 导入HTTP请求接口 +import org.springframework.lang.Nullable; // 导入可空注解 +import org.springframework.util.Assert; // 导入断言工具 +import com.dao.DictionaryDao; // 导入字典数据访问接口 +import com.entity.DictionaryEntity; // 导入字典实体类 +import com.service.DictionaryService; // 导入字典服务接口 +import com.entity.view.DictionaryView; // 导入字典视图类 + +@Service("dictionaryService") // 声明为Spring服务组件 +@Transactional // 启用事务管理 +public class DictionaryServiceImpl extends ServiceImpl implements DictionaryService { + + @Override // 重写分页查询方法 + public PageUtils queryPage(Map params) { + Page page =new Query(params).getPage(); // 创建分页对象 + page.setRecords(baseMapper.selectListView(page,params)); // 设置分页记录 + return new PageUtils(page); // 返回分页结果 + } + + public void dictionaryConvert(Object obj, HttpServletRequest request) { + try { + if (obj == null) return; // 空对象直接返回 + + List fieldNameList = new ArrayList<>(); // 创建字段名列表 + Class tempClass = obj.getClass(); // 获取对象类 + while (tempClass !=null) { + Field[] declaredFields = tempClass.getDeclaredFields(); // 获取所有声明字段 + for (Field f : declaredFields) { + f.setAccessible(true); // 设置字段可访问 + if (f.getType().getName().equals("java.lang.Integer") && f.getName().contains("Types")) { + fieldNameList.add(f.getName()); // 添加符合条件的字段名 + } + } + tempClass = tempClass.getSuperclass(); // 获取父类继续查找 + } + + ServletContext servletContext = request.getServletContext(); // 获取Servlet上下文 + Map> dictionaryMap= (Map>) servletContext.getAttribute("dictionaryMap"); // 获取字典映射 + + for (String s : fieldNameList) { + Field types = null; // 声明Types字段 + if(hasField(obj.getClass(),s)){ + types= obj.getClass().getDeclaredField(s); // 获取当前类字段 + }else{ + types=obj.getClass().getSuperclass().getDeclaredField(s); // 获取父类字段 + } + Field value = obj.getClass().getDeclaredField(s.replace("Types", "Value")); // 获取Value字段 + types.setAccessible(true); // 设置可访问 + value.setAccessible(true); // 设置可访问 + + if (StringUtil.isNotEmpty(String.valueOf(types.get(obj)))) { // 值不为空 + int i = Integer.parseInt(String.valueOf(types.get(obj))); // 获取整数值 + char[] chars = s.toCharArray(); // 转换为字符数组 + StringBuffer sbf = new StringBuffer(); // 创建字符串缓冲区 + for(int b=0; b< chars.length; b++){ + char ch = chars[b]; // 获取当前字符 + if(ch <= 90 && ch >= 65){ // 大写字母处理 + sbf.append("_"); // 添加下划线 + ch += 32; // 转小写 + } + sbf.append(ch); // 添加字符 + } + String s2 = dictionaryMap.get(sbf.toString()).get(i); // 获取字典值 + value.set(obj, s2); // 设置字段值 + } else { + new Exception("字典表赋值出现问题::::"+value.getName()); // 抛出异常 + value.set(obj, ""); // 设置空值 + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); // 打印异常 + } catch (NoSuchFieldException e) { + e.printStackTrace(); // 打印异常 + } catch (Exception e) { + e.printStackTrace(); // 打印异常 + } + } + + public boolean hasField(Class c, String fieldName){ + Field[] fields = c.getDeclaredFields(); // 获取所有声明字段 + + for (Field f : fields) { + if (fieldName.equals(f.getName())) { // 匹配字段名 + return true; // 返回存在 + } + } + + return false; // 返回不存在 + } +} \ No newline at end of file