From 81aa0cb2a8f563075eef1d4101024c3fd9cb2205 Mon Sep 17 00:00:00 2001 From: TWW <15834156+tangweiwei111@user.noreply.gitee.com> Date: 星期五, 08 八月 2025 15:30:04 +0800 Subject: [PATCH] 考勤管理后端代码 --- src/main/java/com/ruoyi/personnelManagement/pojo/Attendance.java | 56 ++++++ src/main/java/com/ruoyi/personnelManagement/controller/AttendanceController.java | 120 +++++++++++++ src/main/java/com/ruoyi/personnelManagement/mapper/AttendanceMapper.java | 66 +++++++ src/main/resources/mapper/personnelManagement/AttendanceMapper.xml | 107 +++++++++++ src/main/java/com/ruoyi/personnelManagement/service/IAttendanceService.java | 64 +++++++ src/main/java/com/ruoyi/personnelManagement/service/impl/AttendanceServiceImpl.java | 96 ++++++++++ 6 files changed, 509 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/ruoyi/personnelManagement/controller/AttendanceController.java b/src/main/java/com/ruoyi/personnelManagement/controller/AttendanceController.java new file mode 100644 index 0000000..0c7c3c0 --- /dev/null +++ b/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)); + } +} diff --git a/src/main/java/com/ruoyi/personnelManagement/mapper/AttendanceMapper.java b/src/main/java/com/ruoyi/personnelManagement/mapper/AttendanceMapper.java new file mode 100644 index 0000000..7b33d68 --- /dev/null +++ b/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); +} diff --git a/src/main/java/com/ruoyi/personnelManagement/pojo/Attendance.java b/src/main/java/com/ruoyi/personnelManagement/pojo/Attendance.java new file mode 100644 index 0000000..fe1fc94 --- /dev/null +++ b/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姝e父 abnormal寮傚父锛� */ + @Excel(name = "鑰冨嫟鐘舵��", readConverterExp = "n=ormal姝e父,a=bnormal寮傚父") + private String status; + + /** 绉熸埛ID */ + @Excel(name = "绉熸埛ID") + private Long tenantId; + + + +} diff --git a/src/main/java/com/ruoyi/personnelManagement/service/IAttendanceService.java b/src/main/java/com/ruoyi/personnelManagement/service/IAttendanceService.java new file mode 100644 index 0000000..a056c65 --- /dev/null +++ b/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); +} diff --git a/src/main/java/com/ruoyi/personnelManagement/service/impl/AttendanceServiceImpl.java b/src/main/java/com/ruoyi/personnelManagement/service/impl/AttendanceServiceImpl.java new file mode 100644 index 0000000..93b44f3 --- /dev/null +++ b/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; + } + +} diff --git a/src/main/resources/mapper/personnelManagement/AttendanceMapper.xml b/src/main/resources/mapper/personnelManagement/AttendanceMapper.xml new file mode 100644 index 0000000..39e72bc --- /dev/null +++ b/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> \ No newline at end of file -- Gitblit v1.9.3