Commit 856b7396 authored by ‘老张’'s avatar ‘老张’

员工年假

parent 877a7ab6
package com.ruoyi.controller;
import java.util.Calendar;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.domain.EmployeeAnnualLeave;
import com.ruoyi.service.IEmployeeAnnualLeaveService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 员工年假Controller
*
* @author ruoyi
* @date 2025-04-17
*/
@RestController
@RequestMapping("/system/annualleave")
public class EmployeeAnnualLeaveController extends BaseController
{
@Autowired
private IEmployeeAnnualLeaveService employeeAnnualLeaveService;
/**
* 查询员工年假列表
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:list')")
@GetMapping("/list")
public TableDataInfo list(EmployeeAnnualLeave employeeAnnualLeave)
{
startPage();
List<EmployeeAnnualLeave> list = employeeAnnualLeaveService.selectEmployeeAnnualLeaveList(employeeAnnualLeave);
return getDataTable(list);
}
/**
* 导出员工年假列表
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:export')")
@Log(title = "员工年假", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, EmployeeAnnualLeave employeeAnnualLeave)
{
List<EmployeeAnnualLeave> list = employeeAnnualLeaveService.selectEmployeeAnnualLeaveList(employeeAnnualLeave);
ExcelUtil<EmployeeAnnualLeave> util = new ExcelUtil<EmployeeAnnualLeave>(EmployeeAnnualLeave.class);
util.exportExcel(response, list, "员工年假数据");
}
/**
* 获取员工年假详细信息
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(employeeAnnualLeaveService.selectEmployeeAnnualLeaveById(id));
}
/**
* 新增员工年假
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:add')")
@Log(title = "员工年假", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody EmployeeAnnualLeave employeeAnnualLeave)
{
return toAjax(employeeAnnualLeaveService.insertEmployeeAnnualLeave(employeeAnnualLeave));
}
/**
* 修改员工年假
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:edit')")
@Log(title = "员工年假", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody EmployeeAnnualLeave employeeAnnualLeave)
{
return toAjax(employeeAnnualLeaveService.updateEmployeeAnnualLeave(employeeAnnualLeave));
}
/**
* 删除员工年假
*/
@PreAuthorize("@ss.hasPermi('psa:annualleave:remove')")
@Log(title = "员工年假", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(employeeAnnualLeaveService.deleteEmployeeAnnualLeaveByIds(ids));
}
}
package com.ruoyi.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 员工年假对象 employee_annual_leave
*
* @author ruoyi
* @date 2025-04-17
*/
public class EmployeeAnnualLeave extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
private Long id;
/** 关联用户ID */
private Long userId;
/** 姓名 */
@Excel(name = "姓名")
private String uname;
/** 年份 */
@Excel(name = "年份")
private Long year;
/** 总年假天数 */
@Excel(name = "总年假天数")
private Long totalDays;
/** 已使用年假天数 */
@Excel(name = "已使用年假天数")
private Long usedDays;
/** 剩余年假天数 */
@Excel(name = "剩余年假天数")
private Long remainingDays;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createdTime;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedTime;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
public void setYear(Long year)
{
this.year = year;
}
public Long getYear()
{
return year;
}
public void setTotalDays(Long totalDays)
{
this.totalDays = totalDays;
}
public Long getTotalDays()
{
return totalDays;
}
public void setUsedDays(Long usedDays)
{
this.usedDays = usedDays;
}
public Long getUsedDays()
{
return usedDays;
}
public void setRemainingDays(Long remainingDays)
{
this.remainingDays = remainingDays;
}
public Long getRemainingDays()
{
return remainingDays;
}
public void setCreatedTime(Date createdTime)
{
this.createdTime = createdTime;
}
public Date getCreatedTime()
{
return createdTime;
}
public void setUpdatedTime(Date updatedTime)
{
this.updatedTime = updatedTime;
}
public Date getUpdatedTime()
{
return updatedTime;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUname()
{
return uname;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("userId", getUserId())
.append("year", getYear())
.append("totalDays", getTotalDays())
.append("usedDays", getUsedDays())
.append("remainingDays", getRemainingDays())
.append("createdTime", getCreatedTime())
.append("updatedTime", getUpdatedTime())
.append("uname", getUname())
.toString();
}
}
package com.ruoyi.mapper;
import java.util.List;
import com.ruoyi.domain.EmployeeAnnualLeave;
/**
* 员工年假Mapper接口
*
* @author ruoyi
* @date 2025-04-17
*/
public interface EmployeeAnnualLeaveMapper
{
/**
* 查询员工年假
*
* @param id 员工年假主键
* @return 员工年假
*/
public EmployeeAnnualLeave selectEmployeeAnnualLeaveById(Long id);
/**
* 查询员工年假列表
*
* @param employeeAnnualLeave 员工年假
* @return 员工年假集合
*/
public List<EmployeeAnnualLeave> selectEmployeeAnnualLeaveList(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 新增员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
public int insertEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 修改员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
public int updateEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 删除员工年假
*
* @param id 员工年假主键
* @return 结果
*/
public int deleteEmployeeAnnualLeaveById(Long id);
/**
* 批量删除员工年假
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteEmployeeAnnualLeaveByIds(Long[] ids);
}
package com.ruoyi.service;
import java.util.List;
import com.ruoyi.domain.EmployeeAnnualLeave;
/**
* 员工年假Service接口
*
* @author ruoyi
* @date 2025-04-17
*/
public interface IEmployeeAnnualLeaveService
{
/**
* 查询员工年假
*
* @param id 员工年假主键
* @return 员工年假
*/
public EmployeeAnnualLeave selectEmployeeAnnualLeaveById(Long id);
/**
* 查询员工年假列表
*
* @param employeeAnnualLeave 员工年假
* @return 员工年假集合
*/
public List<EmployeeAnnualLeave> selectEmployeeAnnualLeaveList(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 新增员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
public int insertEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 修改员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
public int updateEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave);
/**
* 批量删除员工年假
*
* @param ids 需要删除的员工年假主键集合
* @return 结果
*/
public int deleteEmployeeAnnualLeaveByIds(Long[] ids);
/**
* 删除员工年假信息
*
* @param id 员工年假主键
* @return 结果
*/
public int deleteEmployeeAnnualLeaveById(Long id);
}
package com.ruoyi.service.impl;
import java.util.Calendar;
import java.util.List;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.mapper.EmployeeAnnualLeaveMapper;
import com.ruoyi.domain.EmployeeAnnualLeave;
import com.ruoyi.service.IEmployeeAnnualLeaveService;
/**
* 员工年假Service业务层处理
*
* @author ruoyi
* @date 2025-04-17
*/
@Service
public class EmployeeAnnualLeaveServiceImpl implements IEmployeeAnnualLeaveService
{
@Autowired
private EmployeeAnnualLeaveMapper employeeAnnualLeaveMapper;
@Autowired
private ISysUserService ISysUserService;
/**
* 查询员工年假
*
* @param id 员工年假主键
* @return 员工年假
*/
@Override
public EmployeeAnnualLeave selectEmployeeAnnualLeaveById(Long id)
{
return employeeAnnualLeaveMapper.selectEmployeeAnnualLeaveById(id);
}
/**
* 查询员工年假列表
*
* @param employeeAnnualLeave 员工年假
* @return 员工年假
*/
@Override
public List<EmployeeAnnualLeave> selectEmployeeAnnualLeaveList(EmployeeAnnualLeave employeeAnnualLeave)
{
return employeeAnnualLeaveMapper.selectEmployeeAnnualLeaveList(employeeAnnualLeave);
}
/**
* 新增员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
@Override
public int insertEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave)
{
// 设置默认年份为当前年份
if (employeeAnnualLeave.getYear() == null) {
Calendar calendar = Calendar.getInstance();
employeeAnnualLeave.setYear((long) calendar.get(Calendar.YEAR));
}
// 设置默认年假天数为10天
if (employeeAnnualLeave.getTotalDays() == null) {
employeeAnnualLeave.setTotalDays(10L);
}
Object user = ISysUserService.selectUserByUserName(employeeAnnualLeave.getUname());
if (user == null) {
return -2; // 未找到对应员工
}
Long userId = ISysUserService.selectUserByUserName(employeeAnnualLeave.getUname()).getUserId();
employeeAnnualLeave.setUserId(userId);
// 验证已使用天数不能超过总天数
if (employeeAnnualLeave.getUsedDays() > employeeAnnualLeave.getTotalDays()) {
return -1; // 返回-1表示已使用天数超过总天数
}
// 自动计算剩余天数
employeeAnnualLeave.setRemainingDays(employeeAnnualLeave.getTotalDays() - employeeAnnualLeave.getUsedDays());
return employeeAnnualLeaveMapper.insertEmployeeAnnualLeave(employeeAnnualLeave);
}
/**
* 修改员工年假
*
* @param employeeAnnualLeave 员工年假
* @return 结果
*/
@Override
public int updateEmployeeAnnualLeave(EmployeeAnnualLeave employeeAnnualLeave)
{
// 设置默认年份为当前年份
if (employeeAnnualLeave.getYear() == null) {
Calendar calendar = Calendar.getInstance();
employeeAnnualLeave.setYear((long) calendar.get(Calendar.YEAR));
}
// 设置默认年假天数为10天
if (employeeAnnualLeave.getTotalDays() == null) {
employeeAnnualLeave.setTotalDays(10L);
}
Object user = ISysUserService.selectUserByUserName(employeeAnnualLeave.getUname());
if (user == null) {
return -2; // 未找到对应员工
}
Long userId = ISysUserService.selectUserByUserName(employeeAnnualLeave.getUname()).getUserId();
employeeAnnualLeave.setUserId(userId);
// 验证已使用天数不能超过总天数
if (employeeAnnualLeave.getUsedDays() > employeeAnnualLeave.getTotalDays()) {
return -1; // 返回-1表示已使用天数超过总天数
}
// 自动计算剩余天数
employeeAnnualLeave.setRemainingDays(employeeAnnualLeave.getTotalDays() - employeeAnnualLeave.getUsedDays());
return employeeAnnualLeaveMapper.updateEmployeeAnnualLeave(employeeAnnualLeave);
}
/**
* 批量删除员工年假
*
* @param ids 需要删除的员工年假主键
* @return 结果
*/
@Override
public int deleteEmployeeAnnualLeaveByIds(Long[] ids)
{
return employeeAnnualLeaveMapper.deleteEmployeeAnnualLeaveByIds(ids);
}
/**
* 删除员工年假信息
*
* @param id 员工年假主键
* @return 结果
*/
@Override
public int deleteEmployeeAnnualLeaveById(Long id)
{
return employeeAnnualLeaveMapper.deleteEmployeeAnnualLeaveById(id);
}
}
<?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.mapper.EmployeeAnnualLeaveMapper">
<resultMap type="EmployeeAnnualLeave" id="EmployeeAnnualLeaveResult">
<result property="id" column="id" />
<result property="userId" column="user_id" />
<result property="uname" column="uname" />
<result property="year" column="year" />
<result property="totalDays" column="total_days" />
<result property="usedDays" column="used_days" />
<result property="remainingDays" column="remaining_days" />
<result property="createdTime" column="created_time" />
<result property="updatedTime" column="updated_time" />
</resultMap>
<sql id="selectEmployeeAnnualLeaveVo">
select id, user_id, uname,year, total_days, used_days, remaining_days, created_time, updated_time from employee_annual_leave
</sql>
<select id="selectEmployeeAnnualLeaveList" parameterType="EmployeeAnnualLeave" resultMap="EmployeeAnnualLeaveResult">
<include refid="selectEmployeeAnnualLeaveVo"/>
<where>
<if test="userId != null"> and user_id = #{userId}</if>
<if test="uname != null and uname != ''"> and uname like concat('%', #{uname}, '%')</if>
<if test="year != null "> and year = #{year}</if>
<if test="createdTime != null "> and created_time = #{createdTime}</if>
<if test="updatedTime != null "> and updated_time = #{updatedTime}</if>
</where>
</select>
<select id="selectEmployeeAnnualLeaveById" parameterType="Long" resultMap="EmployeeAnnualLeaveResult">
<include refid="selectEmployeeAnnualLeaveVo"/>
where id = #{id}
</select>
<insert id="insertEmployeeAnnualLeave" parameterType="EmployeeAnnualLeave" useGeneratedKeys="true" keyProperty="id">
insert into employee_annual_leave
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="uname != null">uname,</if>
<if test="year != null">year,</if>
<if test="totalDays != null">total_days,</if>
<if test="usedDays != null">used_days,</if>
<if test="remainingDays != null">remaining_days,</if>
<if test="createdTime != null">created_time,</if>
<if test="updatedTime != null">updated_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="uname != null">#{uname},</if>
<if test="year != null">#{year},</if>
<if test="totalDays != null">#{totalDays},</if>
<if test="usedDays != null">#{usedDays},</if>
<if test="remainingDays != null">#{remainingDays},</if>
<if test="createdTime != null">#{createdTime},</if>
<if test="updatedTime != null">#{updatedTime},</if>
</trim>
</insert>
<update id="updateEmployeeAnnualLeave" parameterType="EmployeeAnnualLeave">
update employee_annual_leave
<trim prefix="SET" suffixOverrides=",">
<if test="userId != null">user_id = #{userId},</if>
<if test="uname != null">uname = #{uname},</if>
<if test="year != null">year = #{year},</if>
<if test="totalDays != null">total_days = #{totalDays},</if>
<if test="usedDays != null">used_days = #{usedDays},</if>
<if test="remainingDays != null">remaining_days = #{remainingDays},</if>
<if test="createdTime != null">created_time = #{createdTime},</if>
<if test="updatedTime != null">updated_time = #{updatedTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteEmployeeAnnualLeaveById" parameterType="Long">
delete from employee_annual_leave where id = #{id}
</delete>
<delete id="deleteEmployeeAnnualLeaveByIds" parameterType="String">
delete from employee_annual_leave where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment