7100e5d8c5e924c5bb4f3088fc5f8d6b02da4179..81aa0cb2a8f563075eef1d4101024c3fd9cb2205
2025-08-08 TWW
考勤管理后端代码
81aa0c 对比 | 目录
2025-08-08 TWW
添加附件上传后端代码
6873d5 对比 | 目录
已添加12个文件
758 ■■■■■ 文件已修改
src/main/java/com/ruoyi/personnelManagement/controller/AttendanceController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/controller/EmployeeContractController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/mapper/AttendanceMapper.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/mapper/EmployeeContractMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/pojo/Attendance.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/pojo/EmployeeContract.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/service/IAttendanceService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/service/IEmployeeContractService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/service/impl/AttendanceServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/service/impl/EmployeeContractServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/personnelManagement/AttendanceMapper.xml 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/personnelManagement/EmployeeContractMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/personnelManagement/controller/AttendanceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
package com.ruoyi.personnelManagement.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.personnelManagement.pojo.Attendance;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.personnelManagement.service.IAttendanceService;
/**
 * è€ƒå‹¤è®°å½•Controller
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@RestController
@RequestMapping("/attendanceManagement/attendance")
@Api(tags = "考勤记录的接口")
public class AttendanceController extends BaseController
{
    @Autowired
    private IAttendanceService attendanceService;
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•列表
     */
    @ApiOperation("查询考勤记录列表")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:list')")
    @GetMapping("/list")
    public TableDataInfo list(Attendance attendance)
    {
        startPage();
        List<Attendance> list = attendanceService.selectAttendanceList(attendance);
        return getDataTable(list);
    }
    /**
     * å¯¼å‡ºè€ƒå‹¤è®°å½•列表
     */
    @ApiOperation("导出考勤记录列表")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:export')")
    @Log(title = "考勤记录", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, Attendance attendance)
    {
        List<Attendance> list = attendanceService.selectAttendanceList(attendance);
        ExcelUtil<Attendance> util = new ExcelUtil<Attendance>(Attendance.class);
        util.exportExcel(response, list, "考勤记录数据");
    }
    /**
     * èŽ·å–è€ƒå‹¤è®°å½•è¯¦ç»†ä¿¡æ¯
     */
    @ApiOperation("获取考勤记录详细信息")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@ApiParam(value = "考勤记录ID", required = true)
            @PathVariable("id") Long id)
    {
        return success(attendanceService.selectAttendanceById(id));
    }
    /**
     * æ–°å¢žè€ƒå‹¤è®°å½•
     */
    @ApiOperation("新增考勤记录")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:add')")
    @Log(title = "考勤记录", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@ApiParam(value = "考勤记录实体")
            @RequestBody Attendance attendance)
    {
        return toAjax(attendanceService.insertAttendance(attendance));
    }
    /**
     * ä¿®æ”¹è€ƒå‹¤è®°å½•
     */
    @ApiOperation("修改考勤记录")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:edit')")
    @Log(title = "考勤记录", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@ApiParam(value = "考勤记录实体")
            @RequestBody Attendance attendance)
    {
        return toAjax(attendanceService.updateAttendance(attendance));
    }
    /**
     * åˆ é™¤è€ƒå‹¤è®°å½•
     */
    @ApiOperation("删除考勤记录")
    @PreAuthorize("@ss.hasPermi('attendanceManagement:attendance:remove')")
    @Log(title = "考勤记录", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return toAjax(attendanceService.deleteAttendanceByIds(ids));
    }
}
src/main/java/com/ruoyi/personnelManagement/controller/EmployeeContractController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.ruoyi.personnelManagement.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.other.service.TempFileService;
import com.ruoyi.quality.pojo.QualityInspectFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.jetbrains.annotations.Contract;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.personnelManagement.pojo.EmployeeContract;
import com.ruoyi.personnelManagement.service.IEmployeeContractService;
import org.springframework.web.multipart.MultipartFile;
/**
 * å‘˜å·¥åˆåŒä¿¡æ¯Controller
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@RestController
@RequestMapping("/contractManagement/contract")
@Api(tags = "员工合同信息的接口")
public class EmployeeContractController extends BaseController
{
    @Autowired
    private IEmployeeContractService employeeContractService;
    @Autowired
    private TempFileService tempFileService;
    /**
     * æŸ¥è¯¢å‘˜å·¥åˆåŒä¿¡æ¯åˆ—表
     */
    @GetMapping("/list")
    public AjaxResult contractListPage(Page page, EmployeeContract employeeContract) {
        return AjaxResult.success(employeeContractService.contractList(page, employeeContract));
    }
    /**
     * ä¸Šä¼ å‘˜å·¥åˆåŒ
     */
    @PostMapping("/upload")
    public AjaxResult uploadFile(@RequestBody EmployeeContract employeeContract) {
    return AjaxResult.success(employeeContractService.save(employeeContract));
    }
    @DeleteMapping("/delete")
    public AjaxResult deleteContract(@RequestBody List<Integer> ids) {
        if(CollectionUtils.isEmpty(ids)){
            return AjaxResult.error("请选择至少一条数据");
        }
        //删除附件
        return AjaxResult.success(employeeContractService.removeBatchByIds(ids));
    }
}
src/main/java/com/ruoyi/personnelManagement/mapper/AttendanceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.ruoyi.personnelManagement.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.personnelManagement.pojo.Attendance;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * è€ƒå‹¤è®°å½•Mapper接口
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@Mapper
public interface AttendanceMapper extends BaseMapper<Attendance>
{
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return è€ƒå‹¤è®°å½•
     */
    public Attendance selectAttendanceById(Long id);
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•列表
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return è€ƒå‹¤è®°å½•集合
     */
    public List<Attendance> selectAttendanceList(Attendance attendance);
    /**
     * æ–°å¢žè€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    public int insertAttendance(Attendance attendance);
    /**
     * ä¿®æ”¹è€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    public int updateAttendance(Attendance attendance);
    /**
     * åˆ é™¤è€ƒå‹¤è®°å½•
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return ç»“æžœ
     */
    public int deleteAttendanceById(Long id);
    /**
     * æ‰¹é‡åˆ é™¤è€ƒå‹¤è®°å½•
     *
     * @param ids éœ€è¦åˆ é™¤çš„æ•°æ®ä¸»é”®é›†åˆ
     * @return ç»“æžœ
     */
    public int deleteAttendanceByIds(Long[] ids);
}
src/main/java/com/ruoyi/personnelManagement/mapper/EmployeeContractMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.personnelManagement.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.personnelManagement.pojo.EmployeeContract;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * å‘˜å·¥åˆåŒä¿¡æ¯Mapper接口
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@Mapper
public interface EmployeeContractMapper extends BaseMapper<EmployeeContract>
{
    IPage<EmployeeContract> contractList(Page page,@Param("employeeContract") EmployeeContract employeeContract);
}
src/main/java/com/ruoyi/personnelManagement/pojo/Attendance.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.ruoyi.personnelManagement.pojo;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import lombok.Data;
/**
 * è€ƒå‹¤è®°å½•对象 attendance
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@Data
public class Attendance extends BaseEntity
{
    private static final long serialVersionUID = 1L;
    /** è€ƒå‹¤ID */
    private Long id;
    /** å‘˜å·¥ID */
    @Excel(name = "员工ID")
    private Long employeeId;
    /** å‘˜å·¥å§“名 */
    @Excel(name = "员工姓名")
    private String employeeName;
    /** å·¥å· */
    @Excel(name = "工号")
    private String employeeNo;
    /** æœˆä»½ yyyy-MM */
    @Excel(name = "月份 yyyy-MM")
    private String month;
    /** åº”出勤天数 */
    @Excel(name = "应出勤天数")
    private Long shouldAttendDays;
    /** å®žé™…出勤天数 */
    @Excel(name = "实际出勤天数")
    private Long actualAttendDays;
    /** è€ƒå‹¤çŠ¶æ€ï¼ˆnormal正常 abnormal异常) */
    @Excel(name = "考勤状态", readConverterExp = "n=ormal正常,a=bnormal异常")
    private String status;
    /** ç§Ÿæˆ·ID */
    @Excel(name = "租户ID")
    private Long tenantId;
}
src/main/java/com/ruoyi/personnelManagement/pojo/EmployeeContract.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.ruoyi.personnelManagement.pojo;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
 * å‘˜å·¥åˆåŒä¿¡æ¯å¯¹è±¡ employee_contract
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@TableName("employee_contract")
@Data
public class EmployeeContract implements Serializable
{
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.AUTO)
    private Long id;
    /** åˆåŒçŠ¶æ€ï¼š0-无效,1-有效,2-即将到期,3-已过期 */
    @Excel(name = "合同状态:0-无效,1-有效,2-即将到期,3-已过期")
    private Integer status;
    @ApiModelProperty(value = "文件名称")
    private String name;
    @ApiModelProperty(value = "文件路径")
    private String url;
    @ApiModelProperty(value = "文件大小")
    private int fileSize;
    @ApiModelProperty(value = "合同ID")
    @NotBlank(message = "合同id不能为空!")
    private Long contractId;
    @ApiModelProperty(value = "创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty(value = "修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty(value = "创建用户")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty(value = "修改用户")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty(value = "租户ID")
    @TableField(fill = FieldFill.INSERT)
    private Long tenantId;
}
src/main/java/com/ruoyi/personnelManagement/service/IAttendanceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.personnelManagement.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.personnelManagement.pojo.Attendance;
import java.util.List;
/**
 * è€ƒå‹¤è®°å½•Service接口
 *
 * @author ruoyi
 * @date 2025-08-08
 */
public interface IAttendanceService extends IService<Attendance>
{
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return è€ƒå‹¤è®°å½•
     */
    public Attendance selectAttendanceById(Long id);
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•列表
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return è€ƒå‹¤è®°å½•集合
     */
    public List<Attendance> selectAttendanceList(Attendance attendance);
    /**
     * æ–°å¢žè€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    public int insertAttendance(Attendance attendance);
    /**
     * ä¿®æ”¹è€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    public int updateAttendance(Attendance attendance);
    /**
     * æ‰¹é‡åˆ é™¤è€ƒå‹¤è®°å½•
     *
     * @param ids éœ€è¦åˆ é™¤çš„考勤记录主键集合
     * @return ç»“æžœ
     */
    public int deleteAttendanceByIds(Long[] ids);
    /**
     * åˆ é™¤è€ƒå‹¤è®°å½•信息
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return ç»“æžœ
     */
    public int deleteAttendanceById(Long id);
}
src/main/java/com/ruoyi/personnelManagement/service/IEmployeeContractService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.ruoyi.personnelManagement.service;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.personnelManagement.pojo.EmployeeContract;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * å‘˜å·¥åˆåŒä¿¡æ¯Service接口
 *
 * @author ruoyi
 * @date 2025-08-08
 */
public interface IEmployeeContractService extends IService<EmployeeContract>
{
    IPage<EmployeeContract> contractList(Page page, EmployeeContract employeeContract);
    int insertContract(EmployeeContract employeeContract);
}
src/main/java/com/ruoyi/personnelManagement/service/impl/AttendanceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package com.ruoyi.personnelManagement.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.personnelManagement.pojo.Attendance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.personnelManagement.mapper.AttendanceMapper;
import com.ruoyi.personnelManagement.service.IAttendanceService;
import java.util.Arrays;
import java.util.List;
/**
 * è€ƒå‹¤è®°å½•Service业务层处理
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@Service
public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attendance> implements IAttendanceService
{
    @Autowired
    private AttendanceMapper attendanceMapper;
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return è€ƒå‹¤è®°å½•
     */
    @Override
    public Attendance selectAttendanceById(Long id)
    {
        return getById(id);
    }
    /**
     * æŸ¥è¯¢è€ƒå‹¤è®°å½•列表
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return è€ƒå‹¤è®°å½•
     */
    @Override
    public List<Attendance> selectAttendanceList(Attendance attendance)
    {
        return attendanceMapper.selectAttendanceList(attendance);
    }
    /**
     * æ–°å¢žè€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    @Override
    public int insertAttendance(Attendance attendance)
    {
        return save(attendance)?1:0;
    }
    /**
     * ä¿®æ”¹è€ƒå‹¤è®°å½•
     *
     * @param attendance è€ƒå‹¤è®°å½•
     * @return ç»“æžœ
     */
    @Override
    public int updateAttendance(Attendance attendance)
    {
        return updateById(attendance)?1:0;
    }
    /**
     * æ‰¹é‡åˆ é™¤è€ƒå‹¤è®°å½•
     *
     * @param ids éœ€è¦åˆ é™¤çš„考勤记录主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteAttendanceByIds(Long[] ids)
    {
        return removeByIds(Arrays.asList(ids))?1:0;
    }
    /**
     * åˆ é™¤è€ƒå‹¤è®°å½•信息
     *
     * @param id è€ƒå‹¤è®°å½•主键
     * @return ç»“æžœ
     */
    @Override
    public int deleteAttendanceById(Long id)
    {
        return removeById(id)?1:0;
    }
}
src/main/java/com/ruoyi/personnelManagement/service/impl/EmployeeContractServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.ruoyi.personnelManagement.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.personnelManagement.mapper.EmployeeContractMapper;
import com.ruoyi.personnelManagement.pojo.EmployeeContract;
import com.ruoyi.personnelManagement.service.IEmployeeContractService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Arrays;
/**
 * å‘˜å·¥åˆåŒä¿¡æ¯Service业务层处理
 *
 * @author ruoyi
 * @date 2025-08-08
 */
@Service
public class EmployeeContractServiceImpl extends ServiceImpl<EmployeeContractMapper,EmployeeContract> implements IEmployeeContractService
{
    @Autowired
    private EmployeeContractMapper employeeContractMapper;
    @Override
    public IPage<EmployeeContract> contractList(Page page, EmployeeContract employeeContract) {
        return employeeContractMapper.contractList(page, employeeContract);
    }
    @Override
    public int insertContract(EmployeeContract employeeContract) {
        return 0;
    }
}
src/main/resources/mapper/personnelManagement/AttendanceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
<?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.personnelManagement.mapper.AttendanceMapper">
    <resultMap type="Attendance" id="AttendanceResult">
        <result property="id"    column="id"    />
        <result property="employeeId"    column="employee_id"    />
        <result property="employeeName"    column="employee_name"    />
        <result property="employeeNo"    column="employee_no"    />
        <result property="month"    column="month"    />
        <result property="shouldAttendDays"    column="should_attend_days"    />
        <result property="actualAttendDays"    column="actual_attend_days"    />
        <result property="status"    column="status"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="tenantId"    column="tenant_id"    />
    </resultMap>
    <sql id="selectAttendanceVo">
        select id, employee_id, employee_name, employee_no, month, should_attend_days, actual_attend_days, status, create_by, create_time, update_by, update_time, tenant_id from attendance
    </sql>
    <select id="selectAttendanceList" parameterType="Attendance" resultMap="AttendanceResult">
        <include refid="selectAttendanceVo"/>
        <where>
            <if test="employeeId != null "> and employee_id = #{employeeId}</if>
            <if test="employeeName != null  and employeeName != ''"> and employee_name like concat('%', #{employeeName}, '%')</if>
            <if test="employeeNo != null  and employeeNo != ''"> and employee_no = #{employeeNo}</if>
            <if test="month != null  and month != ''"> and month = #{month}</if>
            <if test="shouldAttendDays != null "> and should_attend_days = #{shouldAttendDays}</if>
            <if test="actualAttendDays != null "> and actual_attend_days = #{actualAttendDays}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
            <if test="tenantId != null "> and tenant_id = #{tenantId}</if>
        </where>
    </select>
    <select id="selectAttendanceById" parameterType="Long" resultMap="AttendanceResult">
        <include refid="selectAttendanceVo"/>
        where id = #{id}
    </select>
    <insert id="insertAttendance" parameterType="Attendance" useGeneratedKeys="true" keyProperty="id">
        insert into attendance
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="employeeId != null">employee_id,</if>
            <if test="employeeName != null and employeeName != ''">employee_name,</if>
            <if test="employeeNo != null and employeeNo != ''">employee_no,</if>
            <if test="month != null and month != ''">month,</if>
            <if test="shouldAttendDays != null">should_attend_days,</if>
            <if test="actualAttendDays != null">actual_attend_days,</if>
            <if test="status != null and status != ''">status,</if>
            <if test="createBy != null">create_by,</if>
            <if test="createTime != null">create_time,</if>
            <if test="updateBy != null">update_by,</if>
            <if test="updateTime != null">update_time,</if>
            <if test="tenantId != null">tenant_id,</if>
         </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="employeeId != null">#{employeeId},</if>
            <if test="employeeName != null and employeeName != ''">#{employeeName},</if>
            <if test="employeeNo != null and employeeNo != ''">#{employeeNo},</if>
            <if test="month != null and month != ''">#{month},</if>
            <if test="shouldAttendDays != null">#{shouldAttendDays},</if>
            <if test="actualAttendDays != null">#{actualAttendDays},</if>
            <if test="status != null and status != ''">#{status},</if>
            <if test="createBy != null">#{createBy},</if>
            <if test="createTime != null">#{createTime},</if>
            <if test="updateBy != null">#{updateBy},</if>
            <if test="updateTime != null">#{updateTime},</if>
            <if test="tenantId != null">#{tenantId},</if>
         </trim>
    </insert>
    <update id="updateAttendance" parameterType="Attendance">
        update attendance
        <trim prefix="SET" suffixOverrides=",">
            <if test="employeeId != null">employee_id = #{employeeId},</if>
            <if test="employeeName != null and employeeName != ''">employee_name = #{employeeName},</if>
            <if test="employeeNo != null and employeeNo != ''">employee_no = #{employeeNo},</if>
            <if test="month != null and month != ''">month = #{month},</if>
            <if test="shouldAttendDays != null">should_attend_days = #{shouldAttendDays},</if>
            <if test="actualAttendDays != null">actual_attend_days = #{actualAttendDays},</if>
            <if test="status != null and status != ''">status = #{status},</if>
            <if test="createBy != null">create_by = #{createBy},</if>
            <if test="createTime != null">create_time = #{createTime},</if>
            <if test="updateBy != null">update_by = #{updateBy},</if>
            <if test="updateTime != null">update_time = #{updateTime},</if>
            <if test="tenantId != null">tenant_id = #{tenantId},</if>
        </trim>
        where id = #{id}
    </update>
    <delete id="deleteAttendanceById" parameterType="Long">
        delete from attendance where id = #{id}
    </delete>
    <delete id="deleteAttendanceByIds" parameterType="String">
        delete from attendance where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>
src/main/resources/mapper/personnelManagement/EmployeeContractMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?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.personnelManagement.mapper.EmployeeContractMapper">
    <select id="contractList" resultType="com.ruoyi.personnelManagement.pojo.EmployeeContract">
        select *
        from employee_contract
        where contract_id =  #{employeeContract.contractId}
    </select>
</mapper>