Prechádzať zdrojové kódy

update 优化 转换注解 支持映射属性功能

疯狂的狮子li 2 rokov pred
rodič
commit
0d755d2266

+ 7 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/annotation/Translation.java

@@ -21,9 +21,16 @@ public @interface Translation {
 
     /**
      * 类型 (需与实现类上的 {@link com.ruoyi.common.translation.annotation.TranslationType} 注解type对应)
+     * <p>
+     * 默认取当前字段的值 如果设置了 @{@link Translation#mapper()} 则取映射字段的值
      */
     String type();
 
+    /**
+     * 映射字段 (如果不为空则取此字段的值)
+     */
+    String mapper() default "";
+
     /**
      * 其他条件 例如: 字典type(sys_user_sex)
      */

+ 6 - 0
ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/config/TranslationConfig.java

@@ -1,5 +1,6 @@
 package com.ruoyi.common.translation.config;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.translation.annotation.TranslationType;
 import com.ruoyi.common.translation.core.TranslationInterface;
 import com.ruoyi.common.translation.core.handler.TranslationHandler;
@@ -24,6 +25,9 @@ public class TranslationConfig {
     @Autowired
     private List<TranslationInterface> list;
 
+    @Autowired
+    private ObjectMapper objectMapper;
+
     @PostConstruct
     public void init() {
         Map<String, TranslationInterface> map = new HashMap<>(list.size());
@@ -36,6 +40,8 @@ public class TranslationConfig {
             }
         }
         TranslationHandler.TRANSLATION_MAPPER.putAll(map);
+        // todo null值处理
+//        objectMapper.getSerializerProvider().setNullValueSerializer();
     }
 
 }

+ 9 - 10
ruoyi-common/ruoyi-common-translation/src/main/java/com/ruoyi/common/translation/core/handler/TranslationHandler.java

@@ -8,10 +8,10 @@ import com.fasterxml.jackson.databind.JsonSerializer;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.ser.ContextualSerializer;
 import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.reflect.ReflectUtils;
 import com.ruoyi.common.translation.annotation.Translation;
 import com.ruoyi.common.translation.core.TranslationInterface;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeansException;
 
 import java.io.IOException;
 import java.util.Map;
@@ -35,16 +35,15 @@ public class TranslationHandler extends JsonSerializer<Object> implements Contex
 
     @Override
     public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
-        try {
-            TranslationInterface trans = TRANSLATION_MAPPER.get(translation.type());
-            if (ObjectUtil.isNotNull(trans)) {
-                String result = trans.translation(value, translation.other());
-                gen.writeString(StringUtils.isNotBlank(result) ? result : value.toString());
-            } else {
-                gen.writeString(value.toString());
+        TranslationInterface trans = TRANSLATION_MAPPER.get(translation.type());
+        if (ObjectUtil.isNotNull(trans)) {
+            // 如果映射字段不为空 则取映射字段的值
+            if (StringUtils.isNotBlank(translation.mapper())) {
+                value = ReflectUtils.invokeGetter(gen.getCurrentValue(), translation.mapper());
             }
-        } catch (BeansException e) {
-            log.error("数据未查到, 采用默认处理 => {}", e.getMessage());
+            String result = trans.translation(value, translation.other());
+            gen.writeString(StringUtils.isNotBlank(result) ? result : value.toString());
+        } else {
             gen.writeString(value.toString());
         }
     }

+ 4 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysDeptBo.java

@@ -3,9 +3,12 @@ package com.ruoyi.system.domain.bo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.mybatis.core.domain.TreeEntity;
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
 
 /**
  * 部门业务对象 sys_dept

+ 4 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysDictDataBo.java

@@ -2,11 +2,12 @@ package com.ruoyi.system.domain.bo;
 
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.mybatis.core.domain.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
-
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 /**
  * 字典数据业务对象 sys_dict_data
@@ -82,5 +83,4 @@ public class SysDictDataBo extends BaseEntity {
      */
     private String remark;
 
-
 }

+ 5 - 8
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysDictTypeBo.java

@@ -2,11 +2,13 @@ package com.ruoyi.system.domain.bo;
 
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.mybatis.core.domain.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
-
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 /**
  * 字典类型业务对象 sys_dict_type
@@ -45,11 +47,6 @@ public class SysDictTypeBo extends BaseEntity {
      */
     private String status;
 
-    /**
-     * 创建部门
-     */
-    private Long createDept;
-
     /**
      * 备注
      */

+ 3 - 5
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysMenuBo.java

@@ -4,13 +4,11 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.mybatis.core.domain.TreeEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
-
-import java.util.Date;
-
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 /**
  * 菜单权限业务对象 sys_menu

+ 8 - 5
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysNoticeBo.java

@@ -3,13 +3,12 @@ package com.ruoyi.system.domain.bo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.xss.Xss;
+import com.ruoyi.common.mybatis.core.domain.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
-
-import java.util.Date;
-
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 /**
  * 通知公告业务对象 sys_notice
@@ -56,5 +55,9 @@ public class SysNoticeBo extends BaseEntity {
      */
     private String remark;
 
+    /**
+     * 创建人名称
+     */
+    private String createByName;
 
 }

+ 3 - 4
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java

@@ -1,14 +1,13 @@
 package com.ruoyi.system.domain.bo;
 
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
+import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
  * 对象存储配置业务对象 sys_oss_config

+ 4 - 5
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysPostBo.java

@@ -2,13 +2,12 @@ package com.ruoyi.system.domain.bo;
 
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.mybatis.core.domain.BaseEntity;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
-
-import java.util.Date;
-
-import com.ruoyi.common.mybatis.core.domain.BaseEntity;
 
 /**
  * 岗位信息业务对象 sys_post

+ 6 - 5
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysNoticeVo.java

@@ -1,9 +1,5 @@
 package com.ruoyi.system.domain.vo;
 
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.ruoyi.common.excel.annotation.ExcelDictFormat;
-import com.ruoyi.common.excel.convert.ExcelDictConvert;
 import com.ruoyi.common.translation.annotation.Translation;
 import com.ruoyi.common.translation.constant.TransConstant;
 import lombok.Data;
@@ -59,9 +55,14 @@ public class SysNoticeVo implements Serializable {
     /**
      * 创建者
      */
-    @Translation(type = TransConstant.USER_ID_TO_NAME)
     private Long createBy;
 
+    /**
+     * 创建人名称
+     */
+    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName = "";
+
     /**
      * 创建时间
      */

+ 8 - 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysNoticeServiceImpl.java

@@ -5,13 +5,15 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.mybatis.core.page.PageQuery;
 import com.ruoyi.common.mybatis.core.page.TableDataInfo;
-import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.system.domain.SysNotice;
+import com.ruoyi.system.domain.SysUser;
 import com.ruoyi.system.domain.bo.SysNoticeBo;
 import com.ruoyi.system.domain.vo.SysNoticeVo;
 import com.ruoyi.system.mapper.SysNoticeMapper;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysNoticeService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -29,6 +31,7 @@ import java.util.List;
 public class SysNoticeServiceImpl implements ISysNoticeService {
 
     private final SysNoticeMapper baseMapper;
+    private final SysUserMapper userMapper;
 
     @Override
     public TableDataInfo<SysNoticeVo> selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery) {
@@ -64,7 +67,10 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
         LambdaQueryWrapper<SysNotice> lqw = Wrappers.lambdaQuery();
         lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle());
         lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType());
-        lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysNotice::getCreateBy, bo.getCreateBy());
+        if (StringUtils.isNotBlank(bo.getCreateByName())) {
+            SysUser sysUser = userMapper.selectUserByUserName(bo.getCreateByName());
+            lqw.eq(SysNotice::getCreateBy, ObjectUtil.isNotNull(sysUser) ? sysUser.getUserId() : null);
+        }
         return lqw;
     }
 

+ 6 - 5
ruoyi-ui/src/views/system/notice/index.vue

@@ -9,9 +9,9 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="操作人员" prop="createBy">
+      <el-form-item label="操作人员" prop="createByName">
         <el-input
-          v-model="queryParams.createBy"
+          v-model="queryParams.createByName"
           placeholder="请输入操作人员"
           clearable
           @keyup.enter.native="handleQuery"
@@ -88,7 +88,7 @@
           <dict-tag :options="dict.type.sys_notice_status" :value="scope.row.status"/>
         </template>
       </el-table-column>
-      <el-table-column label="创建者" align="center" prop="createBy" width="100" />
+      <el-table-column label="创建者" align="center" prop="createByName" width="100" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
@@ -200,7 +200,7 @@ export default {
         pageNum: 1,
         pageSize: 10,
         noticeTitle: undefined,
-        createBy: undefined,
+        createByName: undefined,
         status: undefined
       },
       // 表单参数
@@ -282,6 +282,7 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.noticeId != undefined) {
+              console.log(this.$refs['form'])
             updateNotice(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
@@ -309,4 +310,4 @@ export default {
     }
   }
 };
-</script>
+</script>