From f23bd39c73f371b4be0f010a0cb9e86b84b94ae1 Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期二, 02 三月 2021 23:29:53 +0800
Subject: [PATCH] feat(离职员工): 打开档案

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.java            |   41 +++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpOpenArchivesServiceImpl.java |  111 +++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java                      |    7 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpOpenArchivesController.java    |  106 +++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOpenArchives.java                  |   97 ++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.xml             |    5 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpOpenArchivesService.java         |   69 ++++++++
 7 files changed, 436 insertions(+), 0 deletions(-)

diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpOpenArchivesController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpOpenArchivesController.java
new file mode 100644
index 0000000..a3e3183
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpOpenArchivesController.java
@@ -0,0 +1,106 @@
+package cc.mrbird.febs.server.hr.controller;
+
+import cc.mrbird.febs.server.hr.entity.EmpOpenArchives;
+import cc.mrbird.febs.server.hr.service.IEmpOpenArchivesService;
+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:EmpOpenarchives
+ * package:cc.mrbird.febs.server.hr.controller
+ * description:员工打开档案记录控制器
+ *
+ * @author luoyibo
+ * @date 2021-03-02 22:22:41
+ * @since JDK1.8
+ */
+@Api(tags = "员工打开档案记录管理接口")
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("empOpenArchives")
+@RequiredArgsConstructor
+public class EmpOpenArchivesController {
+
+    private final IEmpOpenArchivesService empOpenArchivesService;
+
+    @ApiOperation(value = "员工打开档案记录无翻页列表")
+    @GetMapping
+    @PreAuthorize("hasAuthority('empOpenarchives:list')")
+    public FebsResponse getAllEmpOpenArchivess(EmpOpenArchives empOpenarchives) {
+        return new FebsResponse().data(empOpenArchivesService.findEmpOpenarchivess(empOpenarchives));
+    }
+
+    @ApiOperation(value = "员工打开档案记录翻页列表")
+    @GetMapping("list")
+    @PreAuthorize("hasAuthority('empOpenarchives:list')")
+    public FebsResponse empOpenarchivesList(QueryRequest request, EmpOpenArchives empOpenarchives) {
+        Map
+                <String, Object> dataTable = FebsUtil.getDataTable(this.empOpenArchivesService.findEmpOpenarchivess(request, empOpenarchives));
+        return new FebsResponse().data(dataTable);
+    }
+
+    @ApiOperation(value = "员工打开档案记录增加")
+    @PostMapping
+    @PreAuthorize("hasAuthority('empOpenarchives:add')")
+    public void addEmpOpenarchives(@Valid EmpOpenArchives empOpenarchives) throws FebsException {
+        try {
+            this.empOpenArchivesService.createEmpOpenarchives(empOpenarchives);
+        } catch (Exception e) {
+            String message = "新增员工打开档案记录失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @ApiOperation(value = "员工打开档案记录物理删除")
+    @DeleteMapping
+    @PreAuthorize("hasAuthority('empOpenarchives:delete')")
+    public void deleteEmpOpenarchives(EmpOpenArchives empOpenarchives) throws FebsException {
+        try {
+            this.empOpenArchivesService.deleteEmpOpenarchives(empOpenarchives);
+        } catch (Exception e) {
+            String message = "删除员工打开档案记录失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @ApiOperation(value = "员工打开档案记录逻辑删除")
+    @DeleteMapping("{ids}")
+    @PreAuthorize("hasAuthority('empOpenarchives:delete')")
+    public void logicDeleteEmpOpenarchives(@PathVariable("ids") String ids) throws FebsException {
+        try {
+            this.empOpenArchivesService.logicDelEmpOpenarchives(ids);
+        } catch (Exception e) {
+            String message = "逻辑删除员工打开档案记录失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
+    @ApiOperation(value = "员工打开档案记录修改")
+    @PutMapping
+    @PreAuthorize("hasAuthority('empOpenarchives:update')")
+    public void updateEmpOpenarchives(EmpOpenArchives empOpenarchives) throws FebsException {
+        try {
+            this.empOpenArchivesService.updateEmpOpenarchives(empOpenarchives);
+        } catch (Exception e) {
+            String message = "修改员工打开档案记录失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
index a4538ca..6e106e9 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpBaseInfo.java
@@ -312,6 +312,13 @@
     @ExcelField(value = "离职类型",writeConverterExp = "1=正常离职,2=自动离职,3=公司劝退,4=公司辞退,5=试用期内" )
     private String dimissionType;
 
+    @FieldInfo(name = "entryType", type = "varchar", explain = "入职类型")
+    @TableField("entryType")
+    private String entryType = "01";
+
+    @FieldInfo(name = "entryTypeName", type = "varchar", explain = "入职类型")
+    @TableField(exist = false)
+    private String entryTypeName = "正常入职";
 
     @FieldInfo(name = "createTime", type = "datetime", explain = "记录创建时间")
     @TableField("createTime")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOpenArchives.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOpenArchives.java
new file mode 100644
index 0000000..d907ca4
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOpenArchives.java
@@ -0,0 +1,97 @@
+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:EmpOpenarchives
+ * package:cc.mrbird.febs.server.hr.controller
+ * description:员工打开档案记录数据表映射实体
+ *
+ * @author luoyibo
+ * @date 2021-03-02 22:22:41
+ * @since JDK1.8
+ */
+@Data
+@TableName("t_emp_openarchives")
+public class EmpOpenArchives implements Serializable {
+
+    private static final long serialVersionUID = 7460933384023908695L;
+
+    @FieldInfo(name = "openArchivesId", type = "bigint", explain = "打开档案Id")
+    @TableId(value = "openArchivesId")
+    private Long openArchivesId = 0L;
+
+    @FieldInfo(name = "openType", type = "varchar", explain = "打开类型")
+    @TableField("openType")
+    private String openType = "";
+
+    @FieldInfo(name = "openDate", type = "date", explain = "打开日期")
+    @TableField("openDate")
+    @JsonSerialize(using = DateSerializer.class)
+    @JsonDeserialize(using = DateDeSerializer.class)
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date openDate;
+
+    @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 = "certificateNumb", type = "varchar", explain = "证件号码")
+    @TableField("certificateNumb")
+    private String certificateNumb = "";
+
+    @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-已删除,默认0")
+    @TableField("delFlag")
+    private Integer delFlag = 0;
+
+    @FieldInfo(name = "version", type = "int", explain = "记录版本号,用来进行乐观锁控制")
+    @TableField("version")
+    @Version
+    private Integer version = 0;
+
+}
\ No newline at end of file
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.java
new file mode 100644
index 0000000..3ed5634
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.java
@@ -0,0 +1,41 @@
+package cc.mrbird.febs.server.hr.mapper;
+
+import cc.mrbird.febs.server.hr.entity.EmpOpenArchives;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+
+/**
+ * name:EmpOpenarchives
+ * package:cc.mrbird.febs.server.hr.controller
+ * description:员工打开档案记录实体Mapper
+ *
+ * @author luoyibo
+ * @date 2021-03-02 22:22:41
+ * @since JDK1.8
+ */
+public interface EmpOpenArchivesMapper extends BaseMapper<EmpOpenArchives> {
+    /**
+     * 根据Id批量逻辑删除记录
+     * <p>
+     * date luoyibo
+     *
+     * @param list       待删除Id
+     * @param operatorId 操作员Id
+     * @return void
+     * @author: 2021-03-02 22:22:41
+     */
+    @Update("<script> " +
+            " UPDATE t_emp_openarchives SET delFlag = 1,\n" +
+            " modifyTime = NOW(),\n" +
+            " modifier = #{operatorId}, \n" +
+            " version = version+1 \n" +
+            " WHERE openArchivesId 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);
+}
\ No newline at end of file
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.xml b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.xml
new file mode 100644
index 0000000..521eddc
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpOpenArchivesMapper.xml
@@ -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.EmpOpenArchivesMapper">
+
+</mapper>
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpOpenArchivesService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpOpenArchivesService.java
new file mode 100644
index 0000000..4fab247
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpOpenArchivesService.java
@@ -0,0 +1,69 @@
+package cc.mrbird.febs.server.hr.service;
+
+import cc.mrbird.febs.server.hr.entity.EmpOpenArchives;
+
+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:EmpOpenarchives
+ * package:cc.mrbird.febs.server.hr.controller
+ * description:员工打开档案记录服务接口
+ *
+ * @author luoyibo
+ * @date 2021-03-02 22:22:41
+ * @since JDK1.8
+ */
+public interface IEmpOpenArchivesService extends IService<EmpOpenArchives> {
+    /**
+     * 查询(分页)
+     *
+     * @param request         QueryRequest
+     * @param empOpenarchives empOpenarchives
+     * @return IPage<EmpOpenarchives>
+     */
+    IPage<EmpOpenArchives> findEmpOpenarchivess(QueryRequest request, EmpOpenArchives empOpenarchives);
+
+    /**
+     * 查询(所有)
+     *
+     * @param empOpenarchives empOpenarchives
+     * @return List<EmpOpenarchives>
+     */
+    List<EmpOpenArchives> findEmpOpenarchivess(EmpOpenArchives empOpenarchives);
+
+    /**
+     * 新增
+     *
+     * @param empOpenarchives empOpenarchives
+     */
+    void createEmpOpenarchives(EmpOpenArchives empOpenarchives);
+
+    /**
+     * 修改
+     *
+     * @param empOpenarchives empOpenarchives
+     */
+    void updateEmpOpenarchives(EmpOpenArchives empOpenarchives);
+
+    /**
+     * 删除
+     *
+     * @param empOpenarchives empOpenarchives
+     */
+    void deleteEmpOpenarchives(EmpOpenArchives empOpenarchives);
+
+    /**
+     * 根据Id批量逻辑删除记录
+     * <p>
+     * date 2021-01-28 10:48
+     *
+     * @param ids 待删除Id
+     * @return void
+     * @author: luoyibo
+     */
+    void logicDelEmpOpenarchives(String ids);
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpOpenArchivesServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpOpenArchivesServiceImpl.java
new file mode 100644
index 0000000..3021e47
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpOpenArchivesServiceImpl.java
@@ -0,0 +1,111 @@
+package cc.mrbird.febs.server.hr.service.impl;
+
+import cc.mrbird.febs.common.core.constant.ModuleCode;
+import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
+import cc.mrbird.febs.server.hr.entity.EmpOpenArchives;
+import cc.mrbird.febs.server.hr.mapper.EmpOpenArchivesMapper;
+import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
+import cc.mrbird.febs.server.hr.service.IEmpOpenArchivesService;
+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:EmpOpenarchives
+ * package:cc.mrbird.febs.server.hr.controller
+ * description:员工打开档案记录服务接口实现
+ *
+ * @author luoyibo
+ * @date 2021-03-02 22:22:41
+ * @since JDK1.8
+ */
+@Service
+@RequiredArgsConstructor
+@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
+class EmpOpenArchivesServiceImpl extends ServiceImpl<EmpOpenArchivesMapper, EmpOpenArchives> implements IEmpOpenArchivesService {
+
+    private final EmpOpenArchivesMapper empOpenarchivesMapper;
+    private final IEmpBaseInfoService empBaseInfoService;
+    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
+            .map(u -> u.getUserId().toString())
+            .orElse("1");
+
+    @Override
+    public IPage<EmpOpenArchives> findEmpOpenarchivess(QueryRequest request, EmpOpenArchives empOpenarchives) {
+        LambdaQueryWrapper<EmpOpenArchives> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EmpOpenArchives::getDelFlag, 0);
+        Page<EmpOpenArchives> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.page(page, queryWrapper);
+    }
+
+    @Override
+    public List<EmpOpenArchives> findEmpOpenarchivess(EmpOpenArchives empOpenarchives) {
+        LambdaQueryWrapper<EmpOpenArchives> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EmpOpenArchives::getDelFlag, 0);
+        return this.baseMapper.selectList(queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void createEmpOpenarchives(EmpOpenArchives empOpenarchives) {
+        empOpenarchives.setOpenArchivesId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
+        empOpenarchives.setCreator(operatorId);
+        empOpenarchives.setModifier(operatorId);
+        this.save(empOpenarchives);
+
+        EmpBaseInfo empBaseInfo = empBaseInfoService.getById(empOpenarchives.getEmpId());
+        empBaseInfo.setEntryDate(empOpenarchives.getOpenDate());
+        empBaseInfo.setEntryType(empOpenarchives.getOpenType());
+        empBaseInfo.setEmpStatus("0");
+        empBaseInfo.setModifyTime(new Date());
+        empBaseInfo.setModifier(operatorId);
+        empBaseInfoService.saveOrUpdate(empBaseInfo);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateEmpOpenarchives(EmpOpenArchives empOpenarchives) {
+        EmpOpenArchives dbData = this.getById(empOpenarchives.getOpenArchivesId());
+        empOpenarchives.setCreateTime(dbData.getCreateTime());
+        empOpenarchives.setCreator(dbData.getCreator());
+        empOpenarchives.setDelFlag(dbData.getDelFlag());
+        empOpenarchives.setModifyTime(new Date());
+        empOpenarchives.setModifier(operatorId);
+        this.saveOrUpdate(empOpenarchives);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteEmpOpenarchives(EmpOpenArchives empOpenarchives) {
+        LambdaQueryWrapper<EmpOpenArchives> 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 logicDelEmpOpenarchives(String ids) {
+        String[] str = ids.split(",");
+        List<String> list = new ArrayList<>(Arrays.asList(str));
+        empOpenarchivesMapper.logicDeleteByIds(list, operatorId);
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0