2026-06-02 1fb9069acd396eb8bdbd65252f6eb10d3e8362b7
feat(staff): 修改员工入职服务接口增加用户添加标识参数

- 在IStaffOnJobService接口的add方法中增加isAddUser参数
- 修改StaffOnJobServiceImpl实现类中的add方法逻辑,根据isAddUser参数控制员工编号重复时的行为
- 更新StaffOnJobController中调用add方法时传入true参数
- 在批量导入员工时循环处理每个员工记录并设置合同年限计算逻辑
- 批量导入时调用add方法传入false参数以避免重复检查异常
已修改3个文件
28 ■■■■ 文件已修改
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -59,7 +59,7 @@
     */
    @PostMapping("")
    public AjaxResult add(@RequestBody StaffOnJobDto staffOnJob) {
        return AjaxResult.success(staffOnJobService.add(staffOnJob));
        return AjaxResult.success(staffOnJobService.add(staffOnJob,true));
    }
    /**
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -18,7 +18,7 @@
     StaffOnJobDto staffOnJobDetail(Long id);
    int add(StaffOnJobDto staffOnJob);
    int add(StaffOnJobDto staffOnJob,boolean isAddUser);
    int update(Long id, StaffOnJobDto staffOnJob);
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -76,12 +76,15 @@
    //新增入职
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int add(StaffOnJobDto staffOnJobPrams) {
    public int add(StaffOnJobDto staffOnJobPrams,boolean isAddUser) {
        String[] ignoreProperties = {"id"};//排除id属性
        // 判断编号是否存在
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
        if (staffOnJobs != null && !staffOnJobs.isEmpty()){
            throw new BaseException("编号为"+staffOnJobPrams.getStaffNo()+"的员工已经存在,无法新增!!!");
            if(isAddUser){
                throw new BaseException("编号为"+staffOnJobPrams.getStaffNo()+"的员工已经存在,无法新增!");
            }
            return 0;
        }
        // 创建入职数据
@@ -332,9 +335,20 @@
            List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, 0));
            // 获取所有角色数据
            List<SysRole> sysRoles = sysRoleMapper.selectRoleAll();
            staffOnJobs.forEach(staffOnJob -> {
            for (StaffOnJobExcelDto staffOnJob : staffOnJobs) {
                StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
                BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
                // 如果合同年限为空,根据合同开始日期和结束日期计算
                if (StringUtils.isEmpty(staffOnJob.getContractTerm())
                        && staffOnJob.getContractStartTime() != null
                        && staffOnJob.getContractEndTime() != null) {
                    LocalDate start = staffOnJob.getContractStartTime().toInstant()
                            .atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
                    LocalDate end = staffOnJob.getContractEndTime().toInstant()
                            .atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
                    int years = end.getYear() - start.getYear();
                    staffOnJobDto.setContractTerm(String.valueOf(years));
                }
                // 通过名称获取部门id
                staffOnJobDto.setSysDeptId(// ... existing code ...
                        sysDepts.stream()
@@ -349,8 +363,8 @@
                        .findFirst()
                        .map(SysRole::getRoleId)
                        .orElse( null));
                add(staffOnJobDto);
            });
                int i = add(staffOnJobDto,false);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();