luoyb
2021-02-02 a6c5984b2347a368e4e9ea7dbfdb95d199d6d4f4
feat(系统和人力微服务): 数据字典和缓存

1.系统管理微服务启动时将部门写入redis缓存
4.人力资源微服务部门转换、性别、婚姻状况、政治面貌、籍贯、最高学历转换完成
1个文件已添加
11个文件已修改
204 ■■■■ 已修改文件
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/Dept.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpRemarkInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDeptService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/fallback/RemoteDeptServiceFallback.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DeptController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/IDeptService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/DeptServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/constant/DicCode.java
New file
@@ -0,0 +1,36 @@
package cc.mrbird.febs.common.core.constant;
/**
 * name: DicItemCode
 * package: cc.mrbird.febs.common.core.constant
 * description: 字典码定义
 * date: 2021-02-02 17:58
 *
 * @author luoyibo
 * @version 0.1
 * @since JDK 1.8
 */
public class DicCode {
    /**
     * 民族字典代码
     */
    public final static String NATION="NATION";
    /**
     * 政治面貌
     */
    public final static String PLITICAL="PLITICAL";
    /**
     * 婚姻状况
     */
    public final static String MARRIAGE = "MARRIAGE";
    /**
     * 学历(文化程度)
     */
    public final static String EDUCATION = "EDUCATION";
    /**
     * 籍贯
     */
    public final static String NATIVEPLACE = "NATIVEPLACE";
}
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/Dept.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.common.core.entity.system;
import cc.mrbird.febs.common.core.annotation.FieldInfo;
import cc.mrbird.febs.common.core.converter.TimeConverter;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
@@ -46,6 +47,10 @@
    @ExcelField(value = "修改时间", writeConverter = TimeConverter.class)
    private Date modifyTime;
    @FieldInfo(name = "delFlag", type = "bit", explain = "记录删除标志。0-未删除 1-已删除,默认0")
    @TableField("delFlag")
    private Integer delFlag = 0;
    private transient String createTimeFrom;
    private transient String createTimeTo;
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -17,6 +17,7 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
/**
@@ -99,12 +100,12 @@
        }
    }
    @GetMapping("user/list")
    public FebsResponse getRemoteUserList(QueryRequest request, SystemUser user) {
        return remoteUserService.userList(request, user);
    }
    @GetMapping("dept/list")
    public FebsResponse getRemoteDeptList(QueryRequest request, Dept dept) {
        return remoteDeptService.deptList(request, dept);
    }
    // @GetMapping("user/list")
    // public FebsResponse getRemoteUserList(QueryRequest request, SystemUser user) {
    //     return remoteUserService.userList(request, user);
    // }
    // @GetMapping("dept/list")
    // public List<Dept> getRemoteDeptList(Dept dept) {
    //     return remoteDeptService.selectAllDept(dept);
    // }
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpRemarkInfoController.java
@@ -28,7 +28,7 @@
@Slf4j
@Validated
@RestController
@RequestMapping("empRemarkinfo")
@RequestMapping("empRemarkInfo")
@RequiredArgsConstructor
public class EmpRemarkInfoController {
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
@@ -58,9 +58,13 @@
    @TableField("empName")
    private String empName = "";
    @FieldInfo(name = "sex", type = "varchar", explain = "性别码,使用国标性别性别码")
    @FieldInfo(name = "sex", type = "varchar", explain = "性别")
    @TableField("sex")
    private String sex = "";
    @FieldInfo(name = "sexName", type = "varchar", explain = "性别")
    @TableField(exist = false)
    private String sexName = "";
    @FieldInfo(name = "jobId", type = "bigint", explain = "岗位Id")
    @TableField("jobId")
@@ -86,6 +90,10 @@
    @TableField("nation")
    private String nation = "";
    @FieldInfo(name = "nationName", type = "varchar", explain = "民族")
    @TableField(exist = false)
    private String nationName = "";
    @FieldInfo(name = "certificateValidity", type = "date", explain = "证件有效期")
    @TableField("certificateValidity")
    @JsonSerialize(using = DateSerializer.class)
@@ -96,6 +104,10 @@
    @FieldInfo(name = "marriage", type = "varchar", explain = "婚姻状况")
    @TableField("marriage")
    private String marriage = "";
    @FieldInfo(name = "marriageName", type = "varchar", explain = "婚姻状况")
    @TableField(exist = false)
    private String marriageName = "";
    @FieldInfo(name = "age", type = "tinyint", explain = "年龄")
    @TableField("age")
@@ -116,6 +128,10 @@
    @TableField("politics")
    private String politics = "";
    @FieldInfo(name = "politicsName", type = "varchar", explain = "政治面貌")
    @TableField(exist = false)
    private String politicsName = "";
    @FieldInfo(name = "entryDate", type = "date", explain = "入职日期")
    @TableField("entryDate")
    @JsonSerialize(using = DateSerializer.class)
@@ -127,6 +143,10 @@
    @TableField("education")
    private String education = "";
    @FieldInfo(name = "educationName", type = "varchar", explain = "最高学历")
    @TableField(exist = false)
    private String educationName = "";
    @FieldInfo(name = "seniority", type = "tinyint", explain = "入司工龄")
    @TableField("seniority")
    private Integer seniority = 0;
@@ -134,6 +154,10 @@
    @FieldInfo(name = "nativePlace", type = "varchar", explain = "籍贯")
    @TableField("nativePlace")
    private String nativePlace = "";
    @FieldInfo(name = "nativePlaceName", type = "varchar", explain = "籍贯")
    @TableField(exist = false)
    private String nativePlaceName = "";
    @FieldInfo(name = "censusAddress", type = "varchar", explain = "户籍地址")
    @TableField("censusAddress")
@@ -199,6 +223,11 @@
    @TableField("certificateList")
    private String certificateList = "";
    @FieldInfo(name = "certificateListName", type = "varchar", explain = "相关证件")
    @TableField(exist = false)
    private String certificateListName = "";
    @FieldInfo(name = "createTime", type = "datetime", explain = "记录创建时间")
    @TableField("createTime")
    @JsonSerialize(using = DateTimeSerializer.class)
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDeptService.java
@@ -11,6 +11,8 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
 * name: IRemoteDeptService
 * package: cc.mrbird.febs.server.hr.feign
@@ -23,6 +25,9 @@
 */
@FeignClient(value = FebsServerConstant.FEBS_SERVER_SYSTEM, contextId = "deptServiceClient", fallbackFactory = RemoteDeptServiceFallback.class)
public interface IRemoteDeptService {
    // @GetMapping("dept")
    // FebsResponse deptList(@RequestParam("queryRequest") QueryRequest queryRequest, @RequestParam("dept") Dept depts);
    @GetMapping("dept")
    FebsResponse deptList(@RequestParam("queryRequest") QueryRequest queryRequest, @RequestParam("dept") Dept depts);
    List<Dept> selectAllDept(Dept dept);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/fallback/RemoteDeptServiceFallback.java
@@ -21,9 +21,10 @@
public class RemoteDeptServiceFallback implements FallbackFactory<IRemoteDeptService> {
    @Override
    public IRemoteDeptService create(Throwable throwable) {
        return (queryRequest, dept) -> {
        return (dept) -> {
            log.error("获取部门信息失败", throwable);
            return null;
        };
    }
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1,14 +1,16 @@
package cc.mrbird.febs.server.hr.service.impl;
import cc.mrbird.febs.common.core.constant.GlobalStatic;
import cc.mrbird.febs.common.core.constant.DicCode;
import cc.mrbird.febs.common.core.constant.ModuleCode;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.system.Dept;
import cc.mrbird.febs.common.core.entity.system.DicItem;
import cc.mrbird.febs.common.core.utils.CastUtil;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.common.core.utils.SequenceUtil;
import cc.mrbird.febs.common.redis.service.RedisService;
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.feign.IRemoteDeptService;
import cc.mrbird.febs.server.hr.mapper.EmpBaseInfoMapper;
import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -36,6 +38,7 @@
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
class EmpBaseInfoServiceImpl extends ServiceImpl<EmpBaseInfoMapper, EmpBaseInfo> implements IEmpBaseInfoService {
    private final RedisService redisService;
    private final IRemoteDeptService remoteDeptService;
    private final EmpBaseInfoMapper empBaseInfoMapper;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
@@ -46,18 +49,45 @@
        LambdaQueryWrapper<EmpBaseInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EmpBaseInfo::getDelFlag, 0);
        Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<EmpBaseInfo> iPage = this.page(page, queryWrapper);;
        List<EmpBaseInfo> list = iPage.getRecords();
        List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"),DicItem.class);
        IPage<EmpBaseInfo> iPage = this.page(page, queryWrapper);
        ;
        // List<EmpBaseInfo> list = iPage.getRecords();
        //设置部门
        List<EmpBaseInfo> list = setDeptName(iPage.getRecords());
        List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"), DicItem.class);
        list.forEach(p -> {
            p.setSexName("1".equals(p.getSex()) ? "男" : "女");
            p.setJobName("测试岗位");
            p.setMarriage("未婚");
            // 设置民族
            p.setNation(dicItems.stream()
                    .filter(k -> "nation".equals(k.getDicCode()) && k.getDicItemCode().equals(p.getNation()))
            p.setNationName(dicItems.stream()
                    .filter(k -> DicCode.NATION.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getNation()))
                    .findFirst()
                    .map(DicItem::getDicItemName)
                    .orElse("汉族"));
            // 设置政治面貌
            p.setPoliticsName(dicItems.stream()
                    .filter(k -> DicCode.PLITICAL.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getPolitics()))
                    .findFirst()
                    .map(DicItem::getDicItemName)
                    .orElse("群众"));
            // 设置婚姻状况
            p.setMarriageName(dicItems.stream()
                    .filter(k -> DicCode.MARRIAGE.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getMarriage()))
                    .findFirst()
                    .map(DicItem::getDicItemName)
                    .orElse("未婚"));
            // 设置学历
            p.setEducationName(dicItems.stream()
                    .filter(k -> DicCode.EDUCATION.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getEducation()))
                    .findFirst()
                    .map(DicItem::getDicItemName)
                    .orElse("无学历"));
            // 设置籍贯
            p.setNativePlaceName(dicItems.stream()
                    .filter(k -> DicCode.NATIVEPLACE.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getNativePlace()))
                    .findFirst()
                    .map(DicItem::getDicItemName)
                    .orElse("未知"));
        });
        iPage.setRecords(list);
        return iPage;
@@ -117,4 +147,26 @@
        List<String> list = new ArrayList<>(Arrays.asList(str));
        empBaseInfoMapper.logicDeleteByIds(list, operatorId);
    }
    /**
     * 设置员工部门名称
     * <p>
     * date 2021-02-02 21:43
     *
     * @param empBaseInfoList 人员信息列表
     * @return java.util.List<cc.mrbird.febs.server.hr.entity.EmpBaseInfo>
     * @author: luoyibo
     */
    private List<EmpBaseInfo> setDeptName(List<EmpBaseInfo> empBaseInfoList) {
        List<Dept> depts = CastUtil.castList(redisService.get("depts"), Dept.class);
        for (EmpBaseInfo empBaseInfo : empBaseInfoList) {
            // 设置民族
            empBaseInfo.setDeptName(depts.stream()
                    .filter(k -> k.getDeptId().equals(empBaseInfo.getDeptId()))
                    .findFirst()
                    .map(Dept::getDeptName)
                    .orElse(""));
        }
        return empBaseInfoList;
    }
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DeptController.java
@@ -31,6 +31,10 @@
    private final IDeptService deptService;
    @GetMapping("all")
    public FebsResponse getAllEmpBaseInfos(Dept dept) {
        return new FebsResponse().data(deptService.findAllDepts(dept));
    }
    @GetMapping
    public FebsResponse deptList(QueryRequest request, Dept dept) {
        Map<String, Object> depts = this.deptService.findDepts(request, dept);
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/runner/StartTask.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.server.system.runner;
import cc.mrbird.febs.server.system.service.IDeptService;
import cc.mrbird.febs.server.system.service.IDicItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
@@ -19,13 +20,16 @@
@Slf4j
public class StartTask implements CommandLineRunner {
    private final IDicItemService dicItemService;
    private final IDeptService deptService;
    public StartTask(IDicItemService dicItemService) {
    public StartTask(IDicItemService dicItemService, IDeptService deptService) {
        this.dicItemService = dicItemService;
        this.deptService = deptService;
    }
    @Override
    public void run(String... args) throws Exception {
        dicItemService.setDicItemRedis();
        deptService.setDeptRedis();
    }
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/IDeptService.java
@@ -51,4 +51,8 @@
     * @param deptIds 部门id数组
     */
    void deleteDepts(String[] deptIds);
    void setDeptRedis();
    List<Dept> findAllDepts(Dept dept);
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/DeptServiceImpl.java
@@ -6,8 +6,10 @@
import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
import cc.mrbird.febs.common.core.entity.constant.PageConstant;
import cc.mrbird.febs.common.core.entity.system.Dept;
import cc.mrbird.febs.common.core.entity.system.DicItem;
import cc.mrbird.febs.common.core.utils.SortUtil;
import cc.mrbird.febs.common.core.utils.TreeUtil;
import cc.mrbird.febs.common.redis.service.RedisService;
import cc.mrbird.febs.server.system.mapper.DeptMapper;
import cc.mrbird.febs.server.system.service.IDeptService;
import cc.mrbird.febs.server.system.service.IUserDataPermissionService;
@@ -32,7 +34,7 @@
@RequiredArgsConstructor
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService {
    private final RedisService redisService;
    private final IUserDataPermissionService userDataPermissionService;
    @Override
@@ -96,6 +98,25 @@
        this.delete(Arrays.asList(deptIds));
    }
    @Override
    public void setDeptRedis() {
        LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Dept::getDelFlag, 0);
        List<Dept> depts =  this.baseMapper.selectList(queryWrapper);
        redisService.del("depts");
        redisService.set("depts", depts);
    }
    @Override
    public List<Dept> findAllDepts(Dept dept) {
        QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(Dept::getDelFlag,0);
        if (StringUtils.isNotBlank(dept.getDeptName())) {
            queryWrapper.lambda().like(Dept::getDeptName, dept.getDeptName());
        }
        return this.baseMapper.selectList(queryWrapper);
    }
    private void buildTrees(List<DeptTree> trees, List<Dept> depts) {
        depts.forEach(dept -> {
            DeptTree tree = new DeptTree();