yijiusmile
2021-03-04 455bf65a36ce1e9b6c24eb5c86a8eb69eaea8003
增加员工基本信息,工作经历的关联查询
9个文件已修改
134 ■■■■ 已修改文件
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDeptService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/fallback/RemoteDeptServiceFallback.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpWorkExperienceMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpWorkExperienceMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DeptController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDeptService.java
@@ -30,4 +30,7 @@
    @GetMapping("dept")
    List<Dept> selectAllDept(Dept dept);
    @GetMapping("dept/userRightDepts")
    String userRightDepts();
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/fallback/RemoteDeptServiceFallback.java
@@ -1,8 +1,10 @@
package cc.mrbird.febs.server.hr.feign.fallback;
import java.util.List;
import cc.mrbird.febs.common.core.annotation.Fallback;
import cc.mrbird.febs.common.core.entity.system.Dept;
import cc.mrbird.febs.server.hr.feign.IRemoteDeptService;
import cc.mrbird.febs.server.hr.feign.IRemoteUserService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
@@ -21,9 +23,19 @@
public class RemoteDeptServiceFallback implements FallbackFactory<IRemoteDeptService> {
    @Override
    public IRemoteDeptService create(Throwable throwable) {
        return (dept) -> {
        return new IRemoteDeptService() {
            @Override
            public String userRightDepts() {
                log.error("获取用户权限信息失败", throwable);
                 return null;
            }
            @Override
            public List<Dept> selectAllDept(Dept dept) {
            log.error("获取部门信息失败", throwable);
            return null;
            }
        };
    }
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.java
@@ -1,12 +1,12 @@
package cc.mrbird.febs.server.hr.mapper;
import cc.mrbird.febs.common.core.entity.system.SysConfig;
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.entity.*;
import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
@@ -25,6 +25,9 @@
 * @since JDK1.8
 */
public interface EmpBaseInfoMapper extends BaseMapper<EmpBaseInfo> {
    IPage<EmpBaseInfo> selectPageVo(Page<?> page, @Param(Constants.WRAPPER) Wrapper wrapper);
    /**
     * 根据Id批量逻辑删除记录
     * <p>
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.xml
@@ -5,6 +5,12 @@
    <select id="sysConfig" resultType="cc.mrbird.febs.common.core.entity.system.SysConfig">
           select * from sys_config where delFlag='0' and config_key in ("manOld","womanOld") ORDER BY config_key asc
    </select>
    <select id="selectPageVo" resultType="cc.mrbird.febs.server.hr.entity.EmpBaseInfo">
        select a.* from t_emp_baseInfo a
        inner join t_dept c on a.deptId = c.DEPT_ID
        ${ew.customSqlSegment}
    </select>
    <select id="countZcygBaseInfoList" resultType="java.util.Map">
        SELECT
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpWorkExperienceMapper.java
@@ -1,11 +1,18 @@
package cc.mrbird.febs.server.hr.mapper;
import cc.mrbird.febs.server.hr.entity.EmpWorkExperience;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
import java.util.Map;
/**
 * name:EmpWorkexperience
@@ -50,4 +57,6 @@
            "        </foreach>\n" +
            "</script>")
    int momentToNormal(@Param("list") List<String> list, @Param("operatorId") String operatorId);
    IPage<EmpWorkExperience> selectPageVo(Page<?> page, @Param(Constants.WRAPPER) Wrapper wrapper);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpWorkExperienceMapper.xml
@@ -2,4 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.mrbird.febs.server.hr.mapper.EmpWorkExperienceMapper">
    <select id="selectPageVo" resultType="cc.mrbird.febs.server.hr.entity.EmpWorkExperience">
        select a.* from t_emp_workExperience a
        inner join t_emp_baseinfo b on a.empId = b.empId
        inner join t_dept c on b.deptId = c.DEPT_ID
        ${ew.customSqlSegment}
    </select>
</mapper>
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -70,6 +70,7 @@
    private final IEmpJobChangeService jobChangeService;
    private final IEmpContractInfoService empContractInfoService;
    private final FebsServerHrProperties properties;
    private final IRemoteDeptService remoteDeptService;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
            .orElse("1");
@@ -82,7 +83,7 @@
    @Override
    public IPage<EmpBaseInfo> findZsEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) {
        Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<EmpBaseInfo> iPage = this.page(page, createQueryWrapper(empBaseInfo));
        IPage<EmpBaseInfo> iPage = empBaseInfoMapper.selectPageVo(page, createQueryWrapper(empBaseInfo));
        //设置部门
        List<EmpBaseInfo> list = setDeptName(iPage.getRecords());
        List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"), DicItem.class);
@@ -823,77 +824,77 @@
        return hasCondition == 1;
    }
    private LambdaQueryWrapper<EmpBaseInfo> createQueryWrapper(EmpBaseInfo empBaseInfo) {
        LambdaQueryWrapper<EmpBaseInfo> queryWrapper = new LambdaQueryWrapper<>();
    private QueryWrapper<EmpBaseInfo> createQueryWrapper(EmpBaseInfo empBaseInfo) {
        QueryWrapper<EmpBaseInfo> queryWrapper = new QueryWrapper<>();
        //记录的状态,0-正常 1-删除 2-暂存
        if (StringUtils.isNotBlank(empBaseInfo.getDelFlag().toString())) {
            queryWrapper.eq(EmpBaseInfo::getDelFlag, empBaseInfo.getDelFlag());
            queryWrapper.eq("a.DelFlag", empBaseInfo.getDelFlag());
        } else {
            queryWrapper.eq(EmpBaseInfo::getDelFlag, 0);
            queryWrapper.eq("a.DelFlag", 0);
        }
        //人员的状态,0-在职 1-离职 2-退休
        if (StringUtils.isNotBlank(empBaseInfo.getEmpStatus())) {
            queryWrapper.in(EmpBaseInfo::getEmpStatus, empBaseInfo.getEmpStatus().split(","));
            queryWrapper.in("a.EmpStatus", empBaseInfo.getEmpStatus().split(","));
        } else {
            queryWrapper.in(EmpBaseInfo::getEmpStatus, 0);
            queryWrapper.in("a.EmpStatus", 0);
        }
        // 下面的条件就是人员的属性条件,条件之间是或的关系
        if (this.checkQueryCondition(empBaseInfo)) {
            queryWrapper.and(p -> {
                if (StringUtils.isNotBlank(empBaseInfo.getEmpNumb())) {
                    p.like(EmpBaseInfo::getEmpNumb, empBaseInfo.getEmpNumb());
                    p.like("a.EmpNumb", empBaseInfo.getEmpNumb());
                }
                if (StringUtils.isNotBlank(empBaseInfo.getEmpName())) {
                    p.or().like(EmpBaseInfo::getEmpName, empBaseInfo.getEmpName());
                    p.or().like("a.EmpName", empBaseInfo.getEmpName());
                }
                if (StringUtils.isNotBlank(empBaseInfo.getDeptName())) {
                    p.or().like(EmpBaseInfo::getDeptName, empBaseInfo.getDeptName());
                    p.or().like("a.DeptName", empBaseInfo.getDeptName());
                }
                if (StringUtils.isNotBlank(empBaseInfo.getCertificateNumb())) {
                    p.or().like(EmpBaseInfo::getCertificateNumb, empBaseInfo.getCertificateNumb());
                    p.or().like("a.CertificateNumb", empBaseInfo.getCertificateNumb());
                }
                if (StringUtils.isNotBlank(empBaseInfo.getEntryDateStr())) {
                    p.or().between(EmpBaseInfo::getEntryDate, empBaseInfo.getEntryDateStr().split(",")[0], empBaseInfo.getEntryDateStr().split(",")[1]);
                    p.or().between("a.EntryDate", empBaseInfo.getEntryDateStr().split(",")[0], empBaseInfo.getEntryDateStr().split(",")[1]);
                }
                if (StringUtils.isNotBlank(empBaseInfo.getDimissionDateStr())) {
                    p.or().between(EmpBaseInfo::getDimissionDate, empBaseInfo.getDimissionDateStr().split(",")[0], empBaseInfo.getDimissionDateStr().split(",")[1]);
                    p.or().between("a.DimissionDate", empBaseInfo.getDimissionDateStr().split(",")[0], empBaseInfo.getDimissionDateStr().split(",")[1]);
                }
                if (StringUtils.isNotBlank(empBaseInfo.getSex())) {
                    p.or().in(EmpBaseInfo::getSex, empBaseInfo.getSex().split(","));
                    p.or().in("a.Sex", empBaseInfo.getSex().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getEducation())) {
                    p.or().in(EmpBaseInfo::getEducation, empBaseInfo.getEducation().split(","));
                    p.or().in("a.Education", empBaseInfo.getEducation().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getPolitics())) {
                    p.or().in(EmpBaseInfo::getPolitics, empBaseInfo.getPolitics().split(","));
                    p.or().in("a.Politics", empBaseInfo.getPolitics().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getAgeStr())) {
                    String[] ages = empBaseInfo.getAgeStr().split(",");
                    Consumer<LambdaQueryWrapper<EmpBaseInfo>> consumer = new Consumer<LambdaQueryWrapper<EmpBaseInfo>>() {
                        @Override
                        public void accept(LambdaQueryWrapper<EmpBaseInfo> wrapper) {
                    Consumer<QueryWrapper<EmpBaseInfo>> consumer = new Consumer<QueryWrapper<EmpBaseInfo>>() {
                        public void accept(QueryWrapper<EmpBaseInfo> wrapper) {
                            for (int i = 0; i < ages.length; i++) {
                                String ageBtn = ages[i];
                                wrapper.or().between(EmpBaseInfo::getAge, ageBtn.split("-")[0], ageBtn.split("-")[1]);
                                wrapper.or().between("a.Age", ageBtn.split("-")[0], ageBtn.split("-")[1]);
                            }
                        }
                    };
                    p.or().and(consumer);
                }
                if (StringUtils.isNotBlank(empBaseInfo.getArchivesStatus())) {
                    p.or().in(EmpBaseInfo::getArchivesStatus, empBaseInfo.getArchivesStatus().split(","));
                    p.or().in("a.ArchivesStatus", empBaseInfo.getArchivesStatus().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getInsuranceType())) {
                    p.or().in(EmpBaseInfo::getInsuranceType, empBaseInfo.getInsuranceType().split(","));
                    p.or().in("a.InsuranceType", empBaseInfo.getInsuranceType().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getHandbookStatus())) {
                    p.or().in(EmpBaseInfo::getHandbookStatus, empBaseInfo.getHandbookStatus().split(","));
                    p.or().in("a.HandbookStatus", empBaseInfo.getHandbookStatus().split(","));
                }
                if (StringUtils.isNotBlank(empBaseInfo.getEmpCardStatus())) {
                    p.or().in(EmpBaseInfo::getEmpCardStatus, empBaseInfo.getEmpCardStatus().split(","));
                    p.or().in("a.EmpCardStatus", empBaseInfo.getEmpCardStatus().split(","));
                }
            });
        }
        queryWrapper.in("c.deptId", remoteDeptService.userRightDepts());
        return queryWrapper;
    }
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java
@@ -5,6 +5,7 @@
import cc.mrbird.febs.common.core.utils.SequenceUtil;
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.entity.EmpWorkExperience;
import cc.mrbird.febs.server.hr.feign.IRemoteDeptService;
import cc.mrbird.febs.server.hr.mapper.EmpWorkExperienceMapper;
import cc.mrbird.febs.server.hr.service.IEmpWorkExperienceService;
import cn.hutool.core.date.DateUtil;
@@ -15,6 +16,7 @@
import org.springframework.transaction.annotation.Propagation;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -37,31 +39,34 @@
class EmpWorkExperienceServiceImpl extends ServiceImpl<EmpWorkExperienceMapper, EmpWorkExperience> implements IEmpWorkExperienceService {
    private final EmpWorkExperienceMapper empWorkexperienceMapper;
    private final IRemoteDeptService remoteDeptService;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
            .orElse("1");
    @Override
    public IPage<EmpWorkExperience> findEmpWorkExperiences(QueryRequest request, EmpWorkExperience empWorkexperience) {
        LambdaQueryWrapper<EmpWorkExperience> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EmpWorkExperience::getDelFlag,empWorkexperience.getDelFlag());
        QueryWrapper<EmpWorkExperience> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("a.delFlag",empWorkexperience.getDelFlag());
        if (StringUtils.isNotBlank(empWorkexperience.getEmpNumb())) {
            queryWrapper.like(EmpWorkExperience::getEmpNumb, empWorkexperience.getEmpNumb());
            queryWrapper.like("a.empNumb", empWorkexperience.getEmpNumb());
        }
        if (StringUtils.isNotBlank(empWorkexperience.getEmpName())) {
            queryWrapper.like(EmpWorkExperience::getEmpName, empWorkexperience.getEmpName());
            queryWrapper.like("a.EmpName", empWorkexperience.getEmpName());
        }
        if (StringUtils.isNotBlank(empWorkexperience.getCertificateNumb())) {
            queryWrapper.like(EmpWorkExperience::getCertificateNumb, empWorkexperience.getCertificateNumb());
            queryWrapper.like("a.certificateNumb", empWorkexperience.getCertificateNumb());
        }
        if (StringUtils.isNotBlank(empWorkexperience.getCertificateNumb())) {
            queryWrapper.like(EmpWorkExperience::getCertificateNumb, empWorkexperience.getCertificateNumb());
            queryWrapper.like("a.certificateNumb", empWorkexperience.getCertificateNumb());
        }
        if (StringUtils.isNotBlank(empWorkexperience.getJobContent())) {
            queryWrapper.like(EmpWorkExperience::getJobContent, empWorkexperience.getJobContent());
            queryWrapper.like("a.jobContent", empWorkexperience.getJobContent());
        }
        Page<EmpWorkExperience> page = new Page<>(request.getPageNum(), request.getPageSize());
        return this.page(page, queryWrapper);
        queryWrapper.in("c.deptId", remoteDeptService.userRightDepts());
        return this.empWorkexperienceMapper.selectPageVo(page, queryWrapper);
    }
    @Override
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DeptController.java
@@ -4,8 +4,11 @@
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.constant.StringConstant;
import cc.mrbird.febs.common.core.entity.system.Dept;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.server.system.annotation.ControllerEndpoint;
import cc.mrbird.febs.server.system.service.IDeptService;
import cc.mrbird.febs.server.system.service.IUserDataPermissionService;
import com.wuwenze.poi.ExcelKit;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -18,6 +21,7 @@
import javax.validation.constraints.NotBlank;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
 * @author MrBird
@@ -30,6 +34,10 @@
public class DeptController {
    private final IDeptService deptService;
    private final IUserDataPermissionService userDataPermissionService;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
            .orElse("1");
    @GetMapping("all")
    public FebsResponse getAllEmpBaseInfos(Dept dept) {
@@ -75,4 +83,12 @@
    public void setDeptToRedis(){
        deptService.setDeptRedis();
    }
    @GetMapping("userRightDepts")
    public String userRightDepts(){
      log.info("当前用户Id"+operatorId);
      String userRightDepts=userDataPermissionService.findByUserId(operatorId);
      log.info("当前用户权限"+userRightDepts);
      return userRightDepts;
    }
}