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