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();