febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpBaseInfoController.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.server.hr.controller; import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import cc.mrbird.febs.server.hr.feign.IRemoteUserService; import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService; @@ -8,7 +9,6 @@ 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 cn.hutool.core.date.DateUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -19,7 +19,6 @@ import javax.validation.Valid; import javax.validation.constraints.NotBlank; import java.util.Date; import java.util.Map; /** @@ -130,13 +129,13 @@ @ApiOperation(value = "关闭员工档案") @PostMapping("dimission") public void dimissionEmp(@RequestParam Map<String, String> mapDimissionInfo) 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"); 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(dgryIds, dimissionType, dimissionDate, remark); this.empBaseInfoService.closeEmpArchives(empDimissionLog); } catch (Exception e) { String message = "关闭员工档案失败"; log.error(message, e); febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpDimissionLogController.java
New file @@ -0,0 +1,106 @@ package cc.mrbird.febs.server.hr.controller; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService; 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:EmpDimissionlog * package:cc.mrbird.febs.server.hr.controller * description:员工离职记录控制器 * * @author luoyibo * @date 2021-02-18 16:04:42 * @since JDK1.8 */ @Api(tags = "员工离职记录管理接口") @Slf4j @Validated @RestController @RequestMapping("empDimissionlog") @RequiredArgsConstructor public class EmpDimissionLogController { private final IEmpDimissionLogService empDimissionlogService; @ApiOperation(value = "员工离职记录无翻页列表") @GetMapping @PreAuthorize("hasAuthority('empDimissionlog:list')") public FebsResponse getAllEmpDimissionlogs(EmpDimissionLog empDimissionlog) { return new FebsResponse().data(empDimissionlogService.findEmpDimissionLogs(empDimissionlog)); } @ApiOperation(value = "员工离职记录翻页列表") @GetMapping("list") @PreAuthorize("hasAuthority('empDimissionlog:list')") public FebsResponse empDimissionlogList(QueryRequest request, EmpDimissionLog empDimissionlog) { Map <String, Object> dataTable = FebsUtil.getDataTable(this.empDimissionlogService.findEmpDimissionLogs(request, empDimissionlog)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "员工离职记录增加") @PostMapping @PreAuthorize("hasAuthority('empDimissionlog:add')") public void addEmpDimissionlog(@Valid EmpDimissionLog empDimissionlog) throws FebsException { try { this.empDimissionlogService.createEmpDimissionLog(empDimissionlog); } catch (Exception e) { String message = "新增员工离职记录失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "员工离职记录物理删除") @DeleteMapping @PreAuthorize("hasAuthority('empDimissionlog:delete')") public void deleteEmpDimissionlog(EmpDimissionLog empDimissionlog) throws FebsException { try { this.empDimissionlogService.deleteEmpDimissionLog(empDimissionlog); } catch (Exception e) { String message = "删除员工离职记录失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "员工离职记录逻辑删除") @DeleteMapping("{ids}") @PreAuthorize("hasAuthority('empDimissionlog:delete')") public void logicDeleteEmpDimissionlog(@PathVariable("ids") String ids) throws FebsException { try { this.empDimissionlogService.logicDelEmpDimissionLog(ids); } catch (Exception e) { String message = "逻辑删除员工离职记录失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "员工离职记录修改") @PutMapping @PreAuthorize("hasAuthority('empDimissionlog:update')") public void updateEmpDimissionlog(EmpDimissionLog empDimissionlog) throws FebsException { try { this.empDimissionlogService.updateEmpDimissionLog(empDimissionlog); } 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/EmpDimissionLog.java
New file @@ -0,0 +1,112 @@ 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 java.math.BigDecimal; 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:EmpDimissionlog * package:cc.mrbird.febs.server.hr.controller * description:员工离职记录数据表映射实体 * * @author luoyibo * @date 2021-02-18 16:04:42 * @since JDK1.8 */ @Data @TableName("t_emp_dimissionlog") public class EmpDimissionLog implements Serializable { @FieldInfo(name = "closeId", type = "bigint", explain = "档案关闭Id") @TableId(value = "closeId") private Long closeId = 0L; @FieldInfo(name = "empId", type = "bigint", explain = "员工Id") @TableField("empId") private Long empId = 0L; @FieldInfo(name = "entryDate", type = "date", explain = "入职日期") @TableField("entryDate") @JsonSerialize(using = DateSerializer.class) @JsonDeserialize(using = DateDeSerializer.class) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date entryDate; @FieldInfo(name = "dimissionDate", type = "date", explain = "离职日期") @TableField("dimissionDate") @JsonSerialize(using = DateSerializer.class) @JsonDeserialize(using = DateDeSerializer.class) @DateTimeFormat(pattern = "yyyy-MM-dd") private Date dimissionDate; @FieldInfo(name = "dimissionType", type = "varchar", explain = "离职类型") @TableField("dimissionType") private String dimissionType = "1"; @FieldInfo(name = "selfLeaveDay", type = "decimal", explain = "自离天数") @TableField("selfLeaveDay") private BigDecimal selfLeaveDay = BigDecimal.ZERO; @FieldInfo(name = "reporter", type = "varchar", explain = "报备人") @TableField("reporter") private String reporter = ""; @FieldInfo(name = "remark", type = "varchar", explain = "备注") @TableField("remark") private String remark = ""; @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 = "empIds", explain = "关闭档案人员Id") @TableField(exist = false) private String empIds; @FieldInfo(name = "entryDates", explain = "关闭档案人员入职日期") @TableField(exist = false) private String entryDates; } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpDimissionLogMapper.java
New file @@ -0,0 +1,41 @@ package cc.mrbird.febs.server.hr.mapper; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; import java.util.List; /** * name:EmpDimissionlog * package:cc.mrbird.febs.server.hr.controller * description:员工离职记录实体Mapper * * @author luoyibo * @date 2021-02-18 16:04:42 * @since JDK1.8 */ public interface EmpDimissionLogMapper extends BaseMapper<EmpDimissionLog> { /** * 根据Id批量逻辑删除记录 * <p> * date luoyibo * * @param list 待删除Id * @param operatorId 操作员Id * @return void * @author: 2021-02-18 16:04:42 */ @Update("<script> " + " UPDATE t_emp_dimissionLog SET delFlag = 1,\n" + " modifyTime = NOW(),\n" + " modifier = #{operatorId}, \n" + " version = version+1 \n" + " WHERE badId 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/EmpDimissionLogMapper.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.EmpDimissionLogMapper"> </mapper> febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpBaseInfoService.java
@@ -3,10 +3,10 @@ import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Date; import java.util.List; /** @@ -107,11 +107,8 @@ * * date 2021-02-18 12:54 * @author: luoyibo * @param ids 待关闭档案员工 Id * @param dimissionType 离职类型 * @param dimissionDate 离职日期 * @param remark 备注 * @param empDimissionLog * @return boolean */ boolean closeEmpArchives(String ids, String dimissionType, Date dimissionDate, String remark); boolean closeEmpArchives(EmpDimissionLog empDimissionLog); } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpDimissionLogService.java
New file @@ -0,0 +1,69 @@ package cc.mrbird.febs.server.hr.service; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; 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:EmpDimissionlog * package:cc.mrbird.febs.server.hr.controller * description:员工离职记录服务接口 * * @author luoyibo * @date 2021-02-18 16:04:42 * @since JDK1.8 */ public interface IEmpDimissionLogService extends IService<EmpDimissionLog> { /** * 查询(分页) * * @param request QueryRequest * @param empDimissionlog empDimissionlog * @return IPage<EmpDimissionlog> */ IPage<EmpDimissionLog> findEmpDimissionLogs(QueryRequest request, EmpDimissionLog empDimissionlog); /** * 查询(所有) * * @param empDimissionlog empDimissionlog * @return List<EmpDimissionlog> */ List<EmpDimissionLog> findEmpDimissionLogs(EmpDimissionLog empDimissionlog); /** * 新增 * * @param empDimissionlog empDimissionlog */ void createEmpDimissionLog(EmpDimissionLog empDimissionlog); /** * 修改 * * @param empDimissionlog empDimissionlog */ void updateEmpDimissionLog(EmpDimissionLog empDimissionlog); /** * 删除 * * @param empDimissionlog empDimissionlog */ void deleteEmpDimissionLog(EmpDimissionLog empDimissionlog); /** * 根据Id批量逻辑删除记录 * <p> * date 2021-01-28 10:48 * * @param ids 待删除Id * @return void * @author: luoyibo */ void logicDelEmpDimissionLog(String ids); } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -6,6 +6,10 @@ import java.util.List; import java.util.Optional; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -48,6 +52,7 @@ private final RedisService redisService; private final IRemoteDeptService remoteDeptService; private final EmpBaseInfoMapper empBaseInfoMapper; private final IEmpDimissionLogService dimissionLogService; private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser()) .map(u -> u.getUserId().toString()) .orElse("1"); @@ -259,16 +264,30 @@ * * date 2021-02-18 12:54 * @author: luoyibo * @param ids 待关闭档案员工 Id * @param dimissionType 离职类型 * @param dimissionDate 离职日期 * @param remark 备注 * @param empDimissionLog * @return boolean */ @Override public boolean closeEmpArchives(String ids, String dimissionType, Date dimissionDate, String remark) { String[] str = ids.split(","); public boolean closeEmpArchives(EmpDimissionLog empDimissionLog) { String[] str = empDimissionLog.getEmpIds().split(","); List<String> list = new ArrayList<>(Arrays.asList(str)); return empBaseInfoMapper.closeEmpArchives(list, dimissionType, dimissionDate, remark, operatorId)>0; String[] strDate = empDimissionLog.getEntryDates().split(","); EmpDimissionLog dimissionLog = null; for (int i = 0,k=str.length; i < k; i++) { dimissionLog = new EmpDimissionLog(); dimissionLog.setCloseId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE)); dimissionLog.setEmpId(Long.parseLong(str[i])); dimissionLog.setEntryDate(DateUtil.parse(strDate[i],"yyyy-MM-dd")); dimissionLog.setDimissionDate(empDimissionLog.getDimissionDate()); dimissionLog.setDimissionType(empDimissionLog.getDimissionType()); dimissionLog.setRemark(empDimissionLog.getRemark()); dimissionLog.setSelfLeaveDay(empDimissionLog.getSelfLeaveDay()); dimissionLog.setReporter(empDimissionLog.getReporter()); dimissionLog.setCreator(operatorId); dimissionLog.setModifier(operatorId); dimissionLogService.save(dimissionLog); } return empBaseInfoMapper.closeEmpArchives(list, empDimissionLog.getDimissionType(), empDimissionLog.getDimissionDate(), empDimissionLog.getRemark(), operatorId)>0; } } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpDimissionLogServiceImpl.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.EmpDimissionLog; import cc.mrbird.febs.server.hr.mapper.EmpDimissionLogMapper; import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService; 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:EmpDimissionlog * package:cc.mrbird.febs.server.hr.controller * description:员工离职记录服务接口实现 * * @author luoyibo * @date 2021-02-18 16:04:42 * @since JDK1.8 */ @Service @RequiredArgsConstructor @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) class EmpDimissionLogServiceImpl extends ServiceImpl<EmpDimissionLogMapper, EmpDimissionLog> implements IEmpDimissionLogService { private final EmpDimissionLogMapper empDimissionlogMapper; private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser()) .map(u -> u.getUserId().toString()) .orElse("1"); @Override public IPage<EmpDimissionLog> findEmpDimissionLogs(QueryRequest request, EmpDimissionLog empDimissionlog) { LambdaQueryWrapper<EmpDimissionLog> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EmpDimissionLog::getDelFlag, 0); Page<EmpDimissionLog> page = new Page<>(request.getPageNum(), request.getPageSize()); return this.page(page, queryWrapper); } @Override public List<EmpDimissionLog> findEmpDimissionLogs(EmpDimissionLog empDimissionlog) { LambdaQueryWrapper<EmpDimissionLog> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EmpDimissionLog::getDelFlag, 0); return this.baseMapper.selectList(queryWrapper); } @Override @Transactional(rollbackFor = Exception.class) public void createEmpDimissionLog(EmpDimissionLog empDimissionlog) { empDimissionlog.setCloseId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE)); empDimissionlog.setCreator(operatorId); empDimissionlog.setModifier(operatorId); this.save(empDimissionlog); } @Override @Transactional(rollbackFor = Exception.class) public void updateEmpDimissionLog(EmpDimissionLog empDimissionlog) { EmpDimissionLog dbData = this.getById(empDimissionlog.getCloseId()); empDimissionlog.setCreateTime(dbData.getCreateTime()); empDimissionlog.setCreator(dbData.getCreator()); empDimissionlog.setDelFlag(dbData.getDelFlag()); empDimissionlog.setModifyTime(new Date()); empDimissionlog.setModifier(operatorId); this.saveOrUpdate(empDimissionlog); } @Override @Transactional(rollbackFor = Exception.class) public void deleteEmpDimissionLog(EmpDimissionLog empDimissionlog) { LambdaQueryWrapper<EmpDimissionLog> 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 logicDelEmpDimissionLog(String ids) { String[] str = ids.split(","); List<String> list = new ArrayList<>(Arrays.asList(str)); empDimissionlogMapper.logicDeleteByIds(list, operatorId); } }