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