huminmin
11 小时以前 f3d5c380c2e99cff05dfef25ff91cde2fcb54503
重构员工台账
已添加13个文件
已修改7个文件
502 ■■■■■ 文件已修改
doc/20260116_create_table_staff_contract.sql 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/20260116_create_table_staff_leave.sql 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffContractController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/dto/StaffContractDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffContract.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffContractService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/StaffLeaveService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffContractMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/staff/StaffOnJobMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/20260116_create_table_staff_contract.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
# å‘˜å·¥åˆåŒè¡¨
drop table if exists staff_contract;
create table staff_contract
(
    id                  bigint auto_increment primary key,
    staff_on_job_id     bigint not null default 0 comment '员工在职id',
    contract_start_time datetime null comment '合同开始时间',
    contract_end_time   datetime null comment '合同结束时间',
    contract_term       int    not null default 0 comment '合同期限',
    tenant_id           bigint not null comment '租户id',
    create_time         datetime null comment '录入时间',
    update_time         datetime null comment '更新时间'
);
doc/20260116_create_table_staff_leave.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
#员工离职表
drop table if exists staff_join_leave_record;
drop table if exists staff_leave;
create table staff_leave
(
    id              bigint auto_increment primary key,
    staff_on_job_id bigint not null default 0 comment '员工在职id',
    reason          varchar(255) null comment '离职原因',
    remark          text null comment '离职备注',
    tenant_id       bigint not null comment '租户id',
    create_time     datetime null comment '录入时间',
    update_time     datetime null comment '更新时间'
);
src/main/java/com/ruoyi/staff/controller/StaffContractController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.service.StaffContractService;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * å‘˜å·¥å°è´¦/合同管理
 */
@RestController
@RequestMapping("/staff/staffContract")
@Api(tags = "员工台账/合同管理")
public class StaffContractController {
    @Resource
    private StaffContractService staffContractService;
    /**
     * å‘˜å·¥åˆåŒåˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param staffContract
     * @return
     */
    @GetMapping("/listPage")
    public AjaxResult staffContractListPage(Page page, StaffContract staffContract) {
        return AjaxResult.success(staffContractService.staffContractListPage(page, staffContract));
    }
}
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -4,6 +4,7 @@
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
@@ -52,14 +53,48 @@
    }
    /**
     * åœ¨èŒå‘˜å·¥è¯¦æƒ…
     * @param staffNo
     * æ–°å¢žå…¥èŒ
     * @param staffOnJob
     * @return
     */
    @GetMapping("/staffNo")
    public AjaxResult staffOnJobDetail(String staffNo) {
        return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo));
    @PostMapping("")
    public AjaxResult add(@RequestBody StaffOnJobDto staffOnJob) {
        return AjaxResult.success(staffOnJobService.add(staffOnJob));
    }
    /**
     * æ›´æ–°å…¥èŒä¿¡æ¯
     * @param staffOnJobDto
     * @return
     */
    @PutMapping("/{id}")
    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StaffOnJobDto staffOnJobDto) {
        return AjaxResult.success(staffOnJobService.update(id, staffOnJobDto));
    }
    /**
     * åˆ é™¤å…¥èŒ
     * @param ids
     * @return
     */
    @DeleteMapping("/del")
    public AjaxResult delStaffOnJobs(@RequestBody List<Integer> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        return AjaxResult.success(staffOnJobService.delStaffOnJobs(ids));
    }
    /**
     * åœ¨èŒå‘˜å·¥è¯¦æƒ…
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Long id) {
        return AjaxResult.success(staffOnJobService.staffOnJobDetail(id));
    }
    /**
     * åœ¨èŒå‘˜å·¥å¯¼å…¥
     */
src/main/java/com/ruoyi/staff/dto/StaffContractDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.staff.dto;
import com.ruoyi.staff.pojo.StaffContract;
import lombok.Data;
@Data
public class StaffContractDto extends StaffContract {
    private String staffName;
}
src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
@@ -1,10 +1,26 @@
package com.ruoyi.staff.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import lombok.Data;
import java.util.Date;
@Data
public class StaffOnJobDto extends StaffOnJob {
    @Excel(name = "岗位",sort = 7)
    private String postName;
    @Excel(name = "合同年限")
    private String contractTerm;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractStartTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractEndTime;
}
src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.staff.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.staff.dto.StaffContractDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.pojo.StaffOnJob;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface StaffContractMapper extends BaseMapper<StaffContract> {
    /**
     * å‘˜å·¥åˆåŒåˆ†é¡µæŸ¥è¯¢
     * @param page
     * @param staffContract
     * @return
     */
    IPage<StaffContractDto> staffContractListPage(Page page, @Param("staffContract") StaffContract staffContract);
}
src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.ruoyi.staff.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.staff.pojo.StaffLeave;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface StaffLeaveMapper extends BaseMapper<StaffLeave> {
}
src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -16,5 +15,5 @@
    IPage<StaffOnJobDto> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob);
    List<StaffOnJob> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
    List<StaffOnJobDto> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
}
src/main/java/com/ruoyi/staff/pojo/StaffContract.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.ruoyi.staff.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
@TableName("staff_contract")
@Data
public class StaffContract {
    @ApiModelProperty(value = "序号")
    private Long id;
    @ApiModelProperty(value = "在职员工ID")
    private Long staffOnJobId;
    @ApiModelProperty(value = "合同期限")
    private String contractTerm;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "合同开始时间")
    private Date contractStartTime;
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "合同结束时间")
    private Date contractEndTime;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;
}
src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.ruoyi.staff.pojo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.Date;
@TableName("staff_leave")
@Data
public class StaffLeave {
    @ApiModelProperty(value = "序号")
    private Long id;
    @ApiModelProperty(value = "在职员工ID")
    private Long staffOnJobId;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;
}
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -31,98 +31,97 @@
    /**
     * çŠ¶æ€(0:离职;1:在职)
     */
    @Excel(name = "状态",readConverterExp = "0=离职,1=在职")
    @Excel(name = "状态", readConverterExp = "0=离职,1=在职", sort = 1)
    private Integer staffState;
    /**
     * å‘˜å·¥ç¼–号
     */
    @Excel(name = "员工编号", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING)
    @Excel(name = "员工编号", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING, sort = 2)
    private String staffNo;
    /**
     * å‘˜å·¥å§“名
     */
    @Excel(name = "员工姓名")
    @Excel(name = "员工姓名", sort = 3)
    private String staffName;
    /**
     * æ€§åˆ«
     */
    @Excel(name = "性别")
    @Excel(name = "性别", sort = 4)
    private String sex;
    /**
     * ç±è´¯
     */
    @Excel(name = "籍贯")
    @Excel(name = "籍贯", sort = 5)
    private String nativePlace;
    /**
     * å²—位
     */
    @Excel(name = "岗位")
    private Integer sysPostId;
    /**
     * å®¶åº­ä½å€
     */
    @Excel(name = "家庭住址")
    @Excel(name = "家庭住址", sort = 6)
    private String adress;
    /**
     * ç¬¬ä¸€å­¦åކ
     */
    @Excel(name = "第一学历")
    @Excel(name = "第一学历", sort = 8)
    private String firstStudy;
    /**
     * ä¸“业
     */
    @Excel(name = "专业")
    @Excel(name = "专业", sort = 9)
    private String profession;
    /**
     * èº«ä»½è¯å·ç 
     */
    @Excel(name = "身份证号码")
    @Excel(name = "身份证号码", sort = 10)
    private String identityCard;
    /**
     * å¹´é¾„
     */
    @Excel(name = "年龄")
    @Excel(name = "年龄", sort = 11)
    private String age;
    /**
     * è”系电话
     */
    @Excel(name = "联系电话")
    @Excel(name = "联系电话", sort = 12)
    private String phone;
    /**
     * ç´§æ€¥è”系人
     */
    @Excel(name = "紧急联系人")
    @Excel(name = "紧急联系人", sort = 13)
    private String emergencyContact;
    /**
     * ç´§æ€¥è”系人电话
     */
    @Excel(name = "紧急联系人电话")
    @Excel(name = "紧急联系人电话", sort = 14)
    private String emergencyContactPhone;
    /**
     * åˆåŒå¹´é™
     */
    @Excel(name = "合同年限")
    @Excel(name = "合同年限", sort = 15)
    private String contractTerm;
    /**
     * åˆåŒåˆ°æœŸæ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "合同到期日期", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = "合同到期日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 16)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date contractExpireTime;
@@ -130,7 +129,7 @@
     * ç»“束试用时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结束试用时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = "结束试用时间", width = 30, dateFormat = "yyyy-MM-dd", sort = 17)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date trialEndDate;
@@ -138,7 +137,7 @@
     * å¼€å§‹è¯•用日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始试用日期", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = "开始试用日期", width = 30, dateFormat = "yyyy-MM-dd", sort = 18)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date trialStartDate;
@@ -146,7 +145,7 @@
     * ç­¾è®¢æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签订时间", width = 30, dateFormat = "yyyy-MM-dd")
    @Excel(name = "签订时间", width = 30, dateFormat = "yyyy-MM-dd", sort = 19)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date signDate;
@@ -159,7 +158,7 @@
    /**
     * è¯•用期工资
     */
    @Excel(name = "试用期工资")
    @Excel(name = "试用期工资", sort = 20)
    private BigDecimal proSalary;
    /**
@@ -171,9 +170,8 @@
    /**
     * å¤‡æ³¨ï¼ˆç¦åˆ©å¾…遇)
     */
    @Excel(name = "备注(福利待遇)")
    @Excel(name = "备注(福利待遇)", sort = 21)
    private String remark;
    @ApiModelProperty(value = "创建时间")
src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -6,6 +6,7 @@
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import org.bouncycastle.crypto.digests.LongDigest;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@@ -16,7 +17,13 @@
    IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob);
    List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo);
     StaffOnJobDto staffOnJobDetail(Long id);
    int add(StaffOnJobDto staffOnJob);
    int update(Long id, StaffOnJobDto staffOnJob);
    int delStaffOnJobs(List<Integer> ids);
    void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob);
src/main/java/com/ruoyi/staff/service/StaffContractService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.staff.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.staff.dto.StaffContractDto;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffOnJob;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
public interface StaffContractService extends IService<StaffContract> {
    IPage<StaffContractDto> staffContractListPage(Page page, StaffContract staffContract);
}
src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.ruoyi.staff.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.staff.pojo.StaffLeave;
public interface StaffLeaveService extends IService<StaffLeave> {
}
src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.ruoyi.staff.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.staff.dto.StaffContractDto;
import com.ruoyi.staff.mapper.StaffContractMapper;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.service.StaffContractService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@AllArgsConstructor
@Service
public class StaffContractServiceImpl extends ServiceImpl<StaffContractMapper, StaffContract> implements StaffContractService {
    private StaffContractMapper staffContractMapper;
    @Override
    public IPage<StaffContractDto> staffContractListPage(Page page, StaffContract staffContract) {
        return staffContractMapper.staffContractListPage(page,staffContract);
    }
}
src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.staff.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.service.StaffLeaveService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.staff.pojo.StaffLeave;
@AllArgsConstructor
@Service
public class StaffLeaveServiceImpl extends ServiceImpl<StaffLeaveMapper, StaffLeave> implements StaffLeaveService {
}
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -1,40 +1,44 @@
package com.ruoyi.staff.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dto.WordDateDto;
import com.ruoyi.project.system.domain.SysPost;
import com.ruoyi.project.system.mapper.SysPostMapper;
import com.ruoyi.staff.dto.StaffOnJobDto;
import com.ruoyi.staff.mapper.StaffContractMapper;
import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.StaffContract;
import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
import com.ruoyi.staff.pojo.StaffLeave;
import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
import com.ruoyi.staff.service.IStaffOnJobService;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
@AllArgsConstructor
@Service
@@ -43,7 +47,12 @@
    private StaffOnJobMapper staffOnJobMapper;
    private SysPostMapper sysPostMapper;
    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
    private StaffContractMapper staffContractMapper;
    private StaffLeaveMapper staffLeaveMapper;
    //在职员工台账分页查询
    @Override
@@ -51,19 +60,93 @@
        return staffOnJobMapper.staffOnJobListPage(page,staffOnJob);
    }
    //新增入职
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int add(StaffOnJobDto staffOnJobPrams) {
        String[] ignoreProperties = {"id"};//排除id属性
        // åˆ¤æ–­ç¼–号是否存在
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
        if (staffOnJobs.size()>0){
            throw new BaseException("编号为"+staffOnJobPrams.getStaffNo()+"的员工已经存在,无法新增!!!");
        }
        // åˆ›å»ºå…¥èŒæ•°æ®
        staffOnJobMapper.insert(staffOnJobPrams);
        // åˆ›å»ºåˆåŒè®°å½•
        StaffContract staffContract = new StaffContract();
        staffContract.setStaffOnJobId(staffOnJobPrams.getId());
        staffContract.setContractTerm(staffOnJobPrams.getContractTerm());
        staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime());
        staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime());
        return staffContractMapper.insert(staffContract);
    }
    //更新入职信息
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int update(Long id, StaffOnJobDto staffOnJobParams) {
        // åˆ¤æ–­å¯¹è±¡æ˜¯å¦å­˜åœ¨
        StaffOnJob job = staffOnJobMapper.selectById(id);
        if (job == null){
            throw new BaseException("编号为"+staffOnJobParams.getStaffNo()+"的员工不存在,无法更新!!!");
        }
        // æ›´æ–°å‘˜å·¥æ•°æ®
        String[] ignoreProperties = {"id"};//排除id属性
        BeanUtils.copyProperties(staffOnJobParams,job,ignoreProperties);
        staffOnJobMapper.updateById(job);
        // èŽ·å–æœ€æ–°åˆåŒæ•°æ®ï¼Œå¹¶ä¸”æ›´æ–°
        StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
                .eq(StaffContract::getStaffOnJobId, id)
                .orderByDesc(StaffContract::getId));
        if (contract != null){
            BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties);
            return staffContractMapper.updateById(contract);
        }
        return 0;
    }
    //删除入职
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int delStaffOnJobs(List<Integer> ids) {
        // åˆ é™¤å…¥èŒæ•°æ®
        staffOnJobMapper.deleteBatchIds(ids);
        // åˆ é™¤ç¦»èŒæ•°æ®
        staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
        // åˆ é™¤åˆåŒæ•°æ®
        return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
    }
    //在职员工详情
    @Override
    public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) {
        return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
                .eq(StaffJoinLeaveRecord::getStaffState,1)
                .eq(StaffJoinLeaveRecord::getStaffNo,staffNo));
    public StaffOnJobDto staffOnJobDetail(Long id) {
        StaffOnJob staffOnJob  = staffOnJobMapper.selectById(id);
        StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
        BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
        // æŸ¥è¯¢å²—位名称
        SysPost post = sysPostMapper.selectPostById((long) staffOnJob.getSysPostId());
        staffOnJobDto.setPostName(post.getPostName());
        // æŸ¥è¯¢åˆåŒä¿¡æ¯
        StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
                .eq(StaffContract::getStaffOnJobId, staffOnJob.getId())
                .orderByDesc(StaffContract::getId));
        if (contract != null){
            staffOnJobDto.setContractTerm(contract.getContractTerm());
            staffOnJobDto.setContractStartTime(contract.getContractStartTime());
            staffOnJobDto.setContractEndTime(contract.getContractEndTime());
        }
        return staffOnJobDto;
    }
    //在职员工导出
    @Override
    public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) {
        List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
        ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class);
        List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
        ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class);
        util.exportExcel(response, staffOnJobs, "在职员工台账导出");
    }
src/main/resources/mapper/staff/StaffContractMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<?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="com.ruoyi.staff.mapper.StaffContractMapper">
    <select id="staffContractListPage" resultType="com.ruoyi.staff.dto.StaffContractDto">
        SELECT
        sc.*
        FROM staff_contract as sc
        LEFT JOIN
        staff_on_job soj ON soj.id = sc.staff_on_job_id
        where 1=1
        <if test="staffContract.staffOnJobId != null">
            AND soj.id = #{staffContract.staffOnJobId}
        </if>
    </select>
</mapper>
src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -22,12 +22,15 @@
            AND  contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
        </if>
    </select>
    <select id="staffOnJobList" resultType="com.ruoyi.staff.pojo.StaffOnJob">
    <select id="staffOnJobList" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
        SELECT
        *
        staff_on_job.*,
        sp.post_name as postName
        FROM staff_on_job
        LEFT JOIN
        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
        where 1=1
        <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
        <if test="staffOnJob.staffState != null">
            AND staff_state = #{staffOnJob.staffState}
        </if>
        <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">