luoyb
2021-02-18 fbfb38ac0c904c1246b410270585e14453d7ce5b
feat(在职员工): 员工调岗接口

1.员工调岗更新员工基本信息
2.员工调岗写员工调岗记录表
6个文件已添加
5个文件已修改
556 ■■■■■ 已修改文件
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/EmpJobChangeController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpJobChange.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpDimissionLogMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpJobChangeMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpJobChangeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpJobChangeService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpJobChangeServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.feign.IRemoteDeptService;
import cc.mrbird.febs.server.hr.feign.IRemoteUserService;
import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
@@ -130,10 +131,6 @@
    @ApiOperation(value = "关闭员工档案")
    @PostMapping("dimission")
    public void dimissionEmp(EmpDimissionLog empDimissionLog) throws FebsException {
        // String dgryIds = mapDimissionInfo.get("dgryIds");
        // String dimissionType = mapDimissionInfo.get("dimissionType");
        // String remark = mapDimissionInfo.get("remark");
        // Date dimissionDate = DateUtil.parse(mapDimissionInfo.get("dimissionDate").toString(),"yyyy-MM-dd");
        try {
            this.empBaseInfoService.closeEmpArchives(empDimissionLog);
        } catch (Exception e) {
@@ -142,5 +139,15 @@
            throw new FebsException(message);
        }
    }
    @ApiOperation(value = "员工岗位变更")
    @PostMapping("jobChange")
    public void changeEmpJob(EmpJobChange empJobChange) throws FebsException {
        try {
            this.empBaseInfoService.changeEmpJob(empJobChange);
        } catch (Exception e) {
            String message = "员工调岗保存失败";
            log.error(message, e);
            throw new FebsException(message);
        }
    }
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpJobChangeController.java
New file
@@ -0,0 +1,106 @@
package cc.mrbird.febs.server.hr.controller;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
import cc.mrbird.febs.common.core.entity.FebsResponse;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.exception.FebsException;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Map;
/**
 * name:EmpJobchange
 * package:cc.mrbird.febs.server.hr.controller
 * description:员工调岗记录控制器
 *
 * @author luoyibo
 * @date 2021-02-18 17:57:36
 * @since JDK1.8
 */
@Api(tags = "员工调岗记录管理接口")
@Slf4j
@Validated
@RestController
@RequestMapping("empJobChange")
@RequiredArgsConstructor
public class EmpJobChangeController {
    private final IEmpJobChangeService empJobchangeService;
    @ApiOperation(value = "员工调岗记录无翻页列表")
    @GetMapping
    @PreAuthorize("hasAuthority('empJobchange:list')")
    public FebsResponse getAllEmpJobchanges(EmpJobChange empJobchange) {
        return new FebsResponse().data(empJobchangeService.findEmpJobChanges(empJobchange));
    }
    @ApiOperation(value = "员工调岗记录翻页列表")
    @GetMapping("list")
    @PreAuthorize("hasAuthority('empJobchange:list')")
    public FebsResponse empJobchangeList(QueryRequest request, EmpJobChange empJobchange) {
        Map
                <String, Object> dataTable = FebsUtil.getDataTable(this.empJobchangeService.findEmpJobChanges(request, empJobchange));
        return new FebsResponse().data(dataTable);
    }
    @ApiOperation(value = "员工调岗记录增加")
    @PostMapping
    @PreAuthorize("hasAuthority('empJobchange:add')")
    public void addEmpJobchange(@Valid EmpJobChange empJobchange) throws FebsException {
        try {
            this.empJobchangeService.createEmpJobChange(empJobchange);
        } catch (Exception e) {
            String message = "新增员工调岗记录失败";
            log.error(message, e);
            throw new FebsException(message);
        }
    }
    @ApiOperation(value = "员工调岗记录物理删除")
    @DeleteMapping
    @PreAuthorize("hasAuthority('empJobchange:delete')")
    public void deleteEmpJobchange(EmpJobChange empJobchange) throws FebsException {
        try {
            this.empJobchangeService.deleteEmpJobChange(empJobchange);
        } catch (Exception e) {
            String message = "删除员工调岗记录失败";
            log.error(message, e);
            throw new FebsException(message);
        }
    }
    @ApiOperation(value = "员工调岗记录逻辑删除")
    @DeleteMapping("{ids}")
    @PreAuthorize("hasAuthority('empJobchange:delete')")
    public void logicDeleteEmpJobchange(@PathVariable("ids") String ids) throws FebsException {
        try {
            this.empJobchangeService.logicDelEmpJobChange(ids);
        } catch (Exception e) {
            String message = "逻辑删除员工调岗记录失败";
            log.error(message, e);
            throw new FebsException(message);
        }
    }
    @ApiOperation(value = "员工调岗记录修改")
    @PutMapping
    @PreAuthorize("hasAuthority('empJobchange:update')")
    public void updateEmpJobchange(EmpJobChange empJobchange) throws FebsException {
        try {
            this.empJobchangeService.updateEmpJobChange(empJobchange);
        } catch (Exception e) {
            String message = "修改员工调岗记录失败";
            log.error(message, e);
            throw new FebsException(message);
        }
    }
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpJobChange.java
New file
@@ -0,0 +1,131 @@
package cc.mrbird.febs.server.hr.entity;
import java.io.Serializable;
import java.util.Date;
import cc.mrbird.febs.common.core.annotation.FieldInfo;
import cc.mrbird.febs.common.core.utils.DateDeSerializer;
import cc.mrbird.febs.common.core.utils.DateSerializer;
import cc.mrbird.febs.common.core.utils.DateTimeDeserializer;
import cc.mrbird.febs.common.core.utils.DateTimeSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * name:EmpJobchange
 * package:cc.mrbird.febs.server.hr.controller
 * description:员工调岗记录数据表映射实体
 *
 * @author luoyibo
 * @date 2021-02-18 17:57:36
 * @since JDK1.8
 */
@Data
@TableName("t_emp_jobchange")
public class EmpJobChange implements Serializable {
    private static final long serialVersionUID = 4229887878987429956L;
    @FieldInfo(name = "jobChangeId", type = "bigint", explain = "岗位调整Id")
    @TableId(value = "jobChangeId")
    private Long jobChangeId = 0L;
    @FieldInfo(name = "empId", type = "bigint", explain = "员工Id")
    @TableField("empId")
    private Long empId = 0L;
    @FieldInfo(name = "empName", type = "varchar", explain = "员工姓名")
    @TableField("empName")
    private String empName = "";
    @FieldInfo(name = "oldDeptName", type = "varchar", explain = "原部门")
    @TableField("oldDeptName")
    private String oldDeptName = "";
    @FieldInfo(name = "oldJobName", type = "varchar", explain = "原岗位")
    @TableField("oldJobName")
    private String oldJobName = "";
    @FieldInfo(name = "newDeptName", type = "varchar", explain = "新部门")
    @TableField("newDeptName")
    private String newDeptName = "";
    @FieldInfo(name = "newJobName", type = "varchar", explain = "新岗位")
    @TableField("newJobName")
    private String newJobName = "";
    @FieldInfo(name = "changeType", type = "varchar", explain = "调岗类型")
    @TableField("changeType")
    private String changeType = "";
    @FieldInfo(name = "changeDate", type = "date", explain = "调岗位日期")
    @TableField("changeDate")
    @JsonSerialize(using = DateSerializer.class)
    @JsonDeserialize(using = DateDeSerializer.class)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date changeDate;
    @FieldInfo(name = "changeReason", type = "varchar", explain = "调岗原因")
    @TableField("changeReason")
    private String changeReason = "";
    @FieldInfo(name = "createTime", type = "datetime", explain = "记录创建时间")
    @TableField("createTime")
    @JsonSerialize(using = DateTimeSerializer.class)
    @JsonDeserialize(using = DateTimeDeserializer.class)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @FieldInfo(name = "creator", type = "varchar", explain = "记录创建人")
    @TableField("creator")
    private String creator = "";
    @FieldInfo(name = "modifyTime", type = "datetime", explain = "记录最后更新时间")
    @TableField("modifyTime")
    @JsonSerialize(using = DateTimeSerializer.class)
    @JsonDeserialize(using = DateTimeDeserializer.class)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifyTime;
    @FieldInfo(name = "modifier", type = "varchar", explain = "记录最后更新人")
    @TableField("modifier")
    private String modifier = "";
    @FieldInfo(name = "delFlag", type = "bit", explain = "记录删除标志。0-未删除 1-已删除 2-暂存,默认0")
    @TableField("delFlag")
    private Integer delFlag = 0;
    @FieldInfo(name = "version", type = "int", explain = "记录版本号,用来进行乐观锁控制")
    @TableField("version")
    @Version
    private Integer version = 0;
    @FieldInfo(name = "jobId", explain = "现岗位Id")
    @TableField(exist = false)
    private String jobId;
    @FieldInfo(name = "deptId", explain = "现部门Id")
    @TableField(exist = false)
    private String deptId;
    @FieldInfo(name = "empIds", explain = "调岗人员Id")
    @TableField(exist = false)
    private String empIds;
    @FieldInfo(name = "empNames", explain = "调岗人员姓名")
    @TableField(exist = false)
    private String empNames;
    @FieldInfo(name = "oldDeptNames", explain = "调岗人员原部门")
    @TableField(exist = false)
    private String oldDeptNames;
    @FieldInfo(name = "oldJobNames", explain = "调岗人员原岗位")
    @TableField(exist = false)
    private String oldJobNames;
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpBaseInfoMapper.java
@@ -1,12 +1,14 @@
package cc.mrbird.febs.server.hr.mapper;
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * name:EmpBaseinfo
@@ -87,4 +89,20 @@
            "        </foreach>\n" +
            "</script>")
    int closeEmpArchives(@Param("list") List<String> list, @Param("dimissionType") String dimissionType, @Param("dimissionDate") Date dimissionDate, @Param("remark") String remark, @Param("operatorId") String operatorId);
    @Update("<script> " +
            " UPDATE t_emp_baseinfo SET \n" +
            " deptId = #{mapParams.deptId},\n" +
            " deptName = #{mapParams.deptName},\n" +
            " jobId = #{mapParams.jobId},\n" +
            " jobName = #{mapParams.jobName},\n" +
            " modifyTime = NOW(),\n" +
            " modifier = #{mapParams.operatorId}, \n" +
            " version = version+1 \n" +
            " WHERE empId IN \n" +
            "        <foreach item=\"delId\" collection=\"list\" open=\"(\" close=\")\" separator=\",\">\n" +
            "          #{delId}  \n" +
            "        </foreach>\n" +
            "</script>")
    int changeEmpJob(@Param("list") List<String> list, @Param("mapParams") Map<String,Object> mapParams);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpDimissionLogMapper.java
@@ -32,7 +32,7 @@
            " modifyTime = NOW(),\n" +
            " modifier = #{operatorId}, \n" +
            " version = version+1 \n" +
            " WHERE badId IN \n" +
            " WHERE closeId IN \n" +
            "        <foreach item=\"delId\" collection=\"list\" open=\"(\" close=\")\" separator=\",\">\n" +
            "            #{delId} \n" +
            "        </foreach>\n" +
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpJobChangeMapper.java
New file
@@ -0,0 +1,41 @@
package cc.mrbird.febs.server.hr.mapper;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
 * name:EmpJobchange
 * package:cc.mrbird.febs.server.hr.controller
 * description:员工调岗记录实体Mapper
 *
 * @author luoyibo
 * @date 2021-02-18 17:57:36
 * @since JDK1.8
 */
public interface EmpJobChangeMapper extends BaseMapper<EmpJobChange> {
    /**
     * 根据Id批量逻辑删除记录
     * <p>
     * date luoyibo
     *
     * @param list       待删除Id
     * @param operatorId 操作员Id
     * @return void
     * @author: 2021-02-18 17:57:36
     */
    @Update("<script> " +
            " UPDATE t_emp_jobchange SET delFlag = 1,\n" +
            " modifyTime = NOW(),\n" +
            " modifier = #{operatorId}, \n" +
            " version = version+1 \n" +
            " WHERE jobChangeId IN \n" +
            "        <foreach item=\"delId\" collection=\"list\" open=\"(\" close=\")\" separator=\",\">\n" +
            "            #{delId} \n" +
            "        </foreach>\n" +
            "</script>")
    void logicDeleteByIds(@Param("list") List<String> list, @Param("operatorId") String operatorId);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpJobChangeMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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.EmpJobChangeMapper">
</mapper>
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -111,4 +112,15 @@
     * @return boolean
     */
    boolean closeEmpArchives(EmpDimissionLog empDimissionLog);
    /**
     *
     * 员工岗位变更
     *
     * date 2021-02-18 20:32
     * @author: luoyibo
     * @param empJobChange 1
     * @return boolean
     */
    boolean changeEmpJob(EmpJobChange empJobChange);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpJobChangeService.java
New file
@@ -0,0 +1,69 @@
package cc.mrbird.febs.server.hr.service;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * name:EmpJobchange
 * package:cc.mrbird.febs.server.hr.controller
 * description:员工调岗记录服务接口
 *
 * @author luoyibo
 * @date 2021-02-18 17:57:36
 * @since JDK1.8
 */
public interface IEmpJobChangeService extends IService<EmpJobChange> {
    /**
     * 查询(分页)
     *
     * @param request      QueryRequest
     * @param empJobchange empJobchange
     * @return IPage<EmpJobchange>
     */
    IPage<EmpJobChange> findEmpJobChanges(QueryRequest request, EmpJobChange empJobchange);
    /**
     * 查询(所有)
     *
     * @param empJobchange empJobchange
     * @return List<EmpJobchange>
     */
    List<EmpJobChange> findEmpJobChanges(EmpJobChange empJobchange);
    /**
     * 新增
     *
     * @param empJobchange empJobchange
     */
    void createEmpJobChange(EmpJobChange empJobchange);
    /**
     * 修改
     *
     * @param empJobchange empJobchange
     */
    void updateEmpJobChange(EmpJobChange empJobchange);
    /**
     * 删除
     *
     * @param empJobchange empJobchange
     */
    void deleteEmpJobChange(EmpJobChange empJobchange);
    /**
     * 根据Id批量逻辑删除记录
     * <p>
     * date 2021-01-28 10:48
     *
     * @param ids 待删除Id
     * @return void
     * @author: luoyibo
     */
    void logicDelEmpJobChange(String ids);
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1,13 +1,11 @@
package cc.mrbird.febs.server.hr.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService;
import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
@@ -53,6 +51,7 @@
    private final IRemoteDeptService remoteDeptService;
    private final EmpBaseInfoMapper empBaseInfoMapper;
    private final IEmpDimissionLogService dimissionLogService;
    private final IEmpJobChangeService jobChangeService;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
            .orElse("1");
@@ -290,4 +289,50 @@
        }
        return empBaseInfoMapper.closeEmpArchives(list, empDimissionLog.getDimissionType(), empDimissionLog.getDimissionDate(), empDimissionLog.getRemark(), operatorId)>0;
    }
    /**
     *
     * 员工岗位变更
     *
     * date 2021-02-18 20:32
     * @author: luoyibo
     * @param empJobChange 1
     * @return boolean
     */
    @Override
    public boolean changeEmpJob(EmpJobChange empJobChange) {
        String[] str = empJobChange.getEmpIds().split(",");
        List<String> list = new ArrayList<>(Arrays.asList(str));
        String[] strName = empJobChange.getEmpNames().split(",");
        String[] strDeptName = empJobChange.getOldDeptNames().split(",");
        String[] strJobName = empJobChange.getOldJobNames().split(",");
        EmpJobChange saveChange = null;
        for (int i = 0,k=str.length; i <k ; i++) {
            saveChange = new EmpJobChange();
            saveChange.setJobChangeId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
            saveChange.setEmpId(Long.parseLong(str[i]));
            saveChange.setEmpName(strName[i]);
            saveChange.setOldDeptName(strDeptName[i]);
            saveChange.setOldJobName(strJobName[i]);
            saveChange.setNewDeptName(empJobChange.getNewDeptName());
            saveChange.setNewJobName(empJobChange.getNewJobName());
            saveChange.setChangeType(empJobChange.getChangeType());
            saveChange.setChangeDate(empJobChange.getChangeDate());
            saveChange.setChangeReason(empJobChange.getChangeReason());
            saveChange.setCreator(operatorId);
            saveChange.setModifier(operatorId);
            jobChangeService.save(saveChange);
        }
        Map<String, Object> mapParams = new HashMap<>();
        mapParams.put("deptId", empJobChange.getDeptId());
        mapParams.put("deptName", empJobChange.getNewDeptName());
        mapParams.put("jobId", empJobChange.getJobId());
        mapParams.put("jobName", empJobChange.getNewJobName());
        mapParams.put("operatorId", operatorId);
        return empBaseInfoMapper.changeEmpJob(list,mapParams)>0;
    }
}
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpJobChangeServiceImpl.java
New file
@@ -0,0 +1,100 @@
package cc.mrbird.febs.server.hr.service.impl;
import cc.mrbird.febs.common.core.constant.ModuleCode;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.mapper.EmpJobChangeMapper;
import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Propagation;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.common.core.utils.SequenceUtil;
import java.util.*;
/**
 * name:EmpJobchange
 * package:cc.mrbird.febs.server.hr.controller
 * description:员工调岗记录服务接口实现
 *
 * @author luoyibo
 * @date 2021-02-18 17:57:36
 * @since JDK1.8
 */
@Service
@RequiredArgsConstructor
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
class EmpJobChangeServiceImpl extends ServiceImpl<EmpJobChangeMapper, EmpJobChange> implements IEmpJobChangeService {
    private final EmpJobChangeMapper empJobchangeMapper;
    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
            .map(u -> u.getUserId().toString())
            .orElse("1");
    @Override
    public IPage<EmpJobChange> findEmpJobChanges(QueryRequest request, EmpJobChange empJobchange) {
        LambdaQueryWrapper<EmpJobChange> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EmpJobChange::getDelFlag, 0);
        Page<EmpJobChange> page = new Page<>(request.getPageNum(), request.getPageSize());
        return this.page(page, queryWrapper);
    }
    @Override
    public List<EmpJobChange> findEmpJobChanges(EmpJobChange empJobchange) {
        LambdaQueryWrapper<EmpJobChange> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EmpJobChange::getDelFlag, 0);
        return this.baseMapper.selectList(queryWrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void createEmpJobChange(EmpJobChange empJobchange) {
        empJobchange.setJobChangeId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
        empJobchange.setCreator(operatorId);
        empJobchange.setModifier(operatorId);
        this.save(empJobchange);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateEmpJobChange(EmpJobChange empJobchange) {
        EmpJobChange dbData = this.getById(empJobchange.getJobChangeId());
        empJobchange.setCreateTime(dbData.getCreateTime());
        empJobchange.setCreator(dbData.getCreator());
        empJobchange.setDelFlag(dbData.getDelFlag());
        empJobchange.setModifyTime(new Date());
        empJobchange.setModifier(operatorId);
        this.saveOrUpdate(empJobchange);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteEmpJobChange(EmpJobChange empJobchange) {
        LambdaQueryWrapper<EmpJobChange> wrapper = new LambdaQueryWrapper<>();
// TODO 设置删除条件
        this.remove(wrapper);
    }
    /**
     * 根据Id批量逻辑删除记录
     * <p>
     * date 2021-01-28 10:48
     *
     * @param ids 待删除Id
     * @return void
     * @author: luoyibo
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void logicDelEmpJobChange(String ids) {
        String[] str = ids.split(",");
        List<String> list = new ArrayList<>(Arrays.asList(str));
        empJobchangeMapper.logicDeleteByIds(list, operatorId);
    }
}