From d9eaac8263074653c111cf671cd41297ed720fa9 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期五, 05 九月 2025 09:07:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/pim_ywx'

---
 src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java                       |    9 
 src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java                   |   20 
 src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java                             |   78 ++
 src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java             |   59 +
 src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java        |   21 
 src/main/resources/mapper/approve/FileSharingMapper.xml                             |    7 
 src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java                      |   61 +
 src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java                     |    9 
 src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java                           |   79 ++
 src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java                  |   48 +
 src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java                     |   23 
 src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java |   24 
 src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java                             |  106 +++
 src/main/java/com/ruoyi/approve/pojo/FileSharing.java                               |   69 ++
 src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java                           |   80 ++
 src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java             |   49 +
 src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml                    |   19 
 src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java                       |   49 +
 src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml                      |   15 
 src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java                   |   13 
 src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java                   |   10 
 src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java            |   13 
 src/main/resources/mapper/approve/OvertimeSettingMapper.xml                         |   18 
 src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml                     |   15 
 src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java                        |   70 ++
 src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java    |   82 ++
 src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java          |   21 
 src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java                     |   13 
 src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java               |   13 
 src/main/java/com/ruoyi/dto/PageDto.java                                            |   18 
 src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java              |   16 
 src/main/java/com/ruoyi/approve/service/NotificationManagementService.java          |   10 
 src/main/resources/mapper/approve/HolidaySettingsMapper.xml                         |   17 
 src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java                             |   80 ++
 src/main/resources/mapper/approve/NotificationManagementMapper.xml                  |   19 
 src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java                   |   13 
 src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java           |  173 +++++
 src/main/resources/mapper/staff/StaffSchedulingMapper.xml                           |   52 +
 src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java                    |   88 ++
 src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java                |   13 
 src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java                            |   27 
 src/main/resources/mapper/approve/OnlineMeetingMapper.xml                           |    7 
 src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java      |   59 +
 src/main/resources/mapper/approve/KnowledgeBaseMapper.xml                           |   21 
 src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java            |   10 
 src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java   |   21 
 src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java                 |   10 
 src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java                       |   79 ++
 src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java          |   61 +
 src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java                           |   74 ++
 50 files changed, 1,961 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java b/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java
new file mode 100644
index 0000000..2ecf29f
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/HolidaySettingsController.java
@@ -0,0 +1,173 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.AnnualLeaveSettingMapper;
+import com.ruoyi.approve.mapper.OvertimeSettingMapper;
+import com.ruoyi.approve.mapper.WorkingHoursSettingMapper;
+import com.ruoyi.approve.pojo.*;
+import com.ruoyi.approve.service.HolidaySettingsService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/holidaySettings")
+@AllArgsConstructor
+public class HolidaySettingsController {
+    @Autowired
+    private HolidaySettingsService holidaySettingsService;
+    @Autowired
+    private AnnualLeaveSettingMapper annualLeaveSettingMapper;
+    @Autowired
+    private OvertimeSettingMapper overtimeSettingMapper;
+    @Autowired
+    private WorkingHoursSettingMapper workingHoursSettingMapper;
+
+    /**銆�
+     * 鑾峰彇鍋囨湡璁剧疆鍒楄〃
+     * @return
+     */
+    @GetMapping("/getList")
+    public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "50") long size, HolidaySettings holidaySettings) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(holidaySettingsService.listpage(page,holidaySettings));
+    }
+    /**銆�
+     * 澧炴坊
+     * @return
+     */
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody HolidaySettings holidaySettings){
+        return AjaxResult.success(holidaySettingsService.save(holidaySettings));
+    }
+    /**
+     * 鏇存柊
+     * @return
+     */
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody HolidaySettings holidaySettings){
+        return AjaxResult.success(holidaySettingsService.updateById(holidaySettings));
+    }
+    /**
+     * 鍒犻櫎
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public AjaxResult delete(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(holidaySettingsService.removeByIds(ids));
+    }
+    /**銆�
+     * 鑾峰彇骞村亣瑙勫垯鍒楄〃
+     * @return
+     */
+    @GetMapping("/getAnnualLeaveSettingList")
+    public AjaxResult getAnnualLeaveSettingList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "50") long size, AnnualLeaveSetting annualLeaveSetting) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(annualLeaveSettingMapper.listPage(page,annualLeaveSetting));
+    }
+    /**銆�
+     * 澧炴坊骞村亣瑙勫垯
+     * @return
+     */
+    @PostMapping("/addAnnualLeaveSetting")
+    public AjaxResult addAnnualLeaveSetting(@RequestBody AnnualLeaveSetting annualLeaveSetting){
+        return AjaxResult.success(annualLeaveSettingMapper.insert(annualLeaveSetting));
+    }
+    /**銆�
+     * 鏇存柊骞村亣瑙勫垯
+     * @return
+     */
+    @PostMapping("/updateAnnualLeaveSetting")
+    public AjaxResult updateAnnualLeaveSetting(@RequestBody AnnualLeaveSetting annualLeaveSetting){
+        return AjaxResult.success(annualLeaveSettingMapper.updateById(annualLeaveSetting));
+    }
+    /**銆�
+     * 鍒犻櫎骞村亣瑙勫垯
+     * @return
+     */
+    @DeleteMapping("/deleteAnnualLeaveSetting")
+    public AjaxResult deleteAnnualLeaveSetting(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(annualLeaveSettingMapper.deleteBatchIds(ids));
+    }
+
+    /**銆�
+     * 鑾峰彇鍔犵彮瑙勫垯鍒楄〃
+     * @return
+     */
+    @GetMapping("/getOvertimeSettingList")
+    public AjaxResult getOvertimeSettingList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "50") long size, OvertimeSetting overtimeSetting) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(overtimeSettingMapper.listPage(page,overtimeSetting));
+    }
+    /**銆�
+     * 澧炴坊鍔犵彮瑙勫垯
+     * @return
+     */
+    @PostMapping("/addOvertimeSetting")
+    public AjaxResult addOvertimeSetting(@RequestBody OvertimeSetting overtimeSetting){
+        return AjaxResult.success(overtimeSettingMapper.insert(overtimeSetting));
+    }
+    /**銆�
+     * 鏇存柊鍔犵彮瑙勫垯
+     * @return
+     */
+    @PostMapping("/updateOvertimeSetting")
+    public AjaxResult updateOvertimeSetting(@RequestBody OvertimeSetting overtimeSetting){
+        return AjaxResult.success(overtimeSettingMapper.updateById(overtimeSetting));
+    }
+    /**銆�
+     * 鍒犻櫎鍔犵彮瑙勫垯
+     * @return
+     */
+    @DeleteMapping("/deleteOvertimeSetting")
+    public AjaxResult deleteOvertimeSetting(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(overtimeSettingMapper.deleteBatchIds(ids));
+    }
+    /**銆�
+     * 鑾峰彇涓婄彮鏃堕棿璁剧疆-鐝埗瑙勫垯鍒楄〃
+     * @return
+     */
+    @GetMapping("/getWorkingHoursSettingList")
+    public AjaxResult getWorkingHoursSettingList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "50") long size, WorkingHoursSetting workingHoursSetting) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(workingHoursSettingMapper.listPage(page,workingHoursSetting));
+    }
+    /**銆�
+     * 澧炴坊鐝埗瑙勫垯
+     * @return
+     */
+    @PostMapping("/addWorkingHoursSetting")
+    public AjaxResult addWorkingHoursSetting(@RequestBody WorkingHoursSetting workingHoursSetting){
+        return AjaxResult.success(workingHoursSettingMapper.insert(workingHoursSetting));
+    }
+    /**銆�
+     * 鏇存柊鐝埗瑙勫垯
+     * @return
+     */
+    @PostMapping("/updateWorkingHoursSetting")
+    public AjaxResult updateWorkingHoursSetting(@RequestBody WorkingHoursSetting workingHoursSetting){
+        return AjaxResult.success(workingHoursSettingMapper.updateById(workingHoursSetting));
+    }
+    /**銆�
+     * 鍒犻櫎鐝埗瑙勫垯
+     * @return
+     */
+    @DeleteMapping("/deleteWorkingHoursSetting")
+    public AjaxResult deleteWorkingHoursSetting(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(workingHoursSettingMapper.deleteBatchIds(ids));
+    }
+
+
+}
diff --git a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
new file mode 100644
index 0000000..51141c3
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
@@ -0,0 +1,59 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.KnowledgeBaseMapper;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.KnowledgeBaseService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/knowledgeBase")
+@AllArgsConstructor
+public class KnowledgeBaseController {
+    @Autowired
+    private KnowledgeBaseService knowledgeBaseService;
+
+    /**銆�
+     * 鑾峰彇鍒楄〃
+     * @return
+     */
+    @GetMapping("/getList")
+    public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "10") long size, KnowledgeBase knowledgeBase) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(knowledgeBaseService.listpage(page,knowledgeBase));
+    }
+    /**銆�
+     * 澧炴坊
+     * @return
+     */
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody KnowledgeBase knowledgeBase){
+        return AjaxResult.success(knowledgeBaseService.save(knowledgeBase));
+    }
+    /**
+     * 鏇存柊
+     * @return
+     */
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody KnowledgeBase knowledgeBase){
+        return AjaxResult.success(knowledgeBaseService.updateById(knowledgeBase));
+    }
+    /**
+     * 鍒犻櫎
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public AjaxResult delete(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(knowledgeBaseService.removeByIds(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java b/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java
new file mode 100644
index 0000000..e3ac566
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/NotificationManagementController.java
@@ -0,0 +1,82 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.FileSharingMapper;
+import com.ruoyi.approve.mapper.OnlineMeetingMapper;
+import com.ruoyi.approve.pojo.FileSharing;
+import com.ruoyi.approve.pojo.NotificationManagement;
+import com.ruoyi.approve.pojo.OnlineMeeting;
+import com.ruoyi.approve.service.NotificationManagementService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/notificationManagement")
+@AllArgsConstructor
+public class NotificationManagementController {
+    @Autowired
+    private NotificationManagementService notificationManagementService ;
+    @Autowired
+    private OnlineMeetingMapper onlineMeetingMapper;
+    @Autowired
+    private FileSharingMapper fileSharingMapper;
+    /**銆�
+     * 鑾峰彇鍒楄〃
+     * @return
+     */
+    @GetMapping("/getList")
+    public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "50") long size, NotificationManagement notificationManagement) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(notificationManagementService.listpage(page,notificationManagement));
+    }
+    /**銆�
+     * 澧炴坊
+     * @return
+     */
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody NotificationManagement notificationManagement){
+        return AjaxResult.success(notificationManagementService.save(notificationManagement));
+    }
+    /**
+     * 鏇存柊
+     * @return
+     */
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody NotificationManagement notificationManagement){
+        return AjaxResult.success(notificationManagementService.updateById(notificationManagement));
+    }
+    /**
+     * 鍒犻櫎
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public AjaxResult delete(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(notificationManagementService.removeByIds(ids));
+    }
+    /**
+     *鏂板浼氳
+     * @param onlineMeeting
+     * @return
+     */
+    @PostMapping("/addOnlineMeeting")
+    public AjaxResult addOnlineMeeting(@RequestBody OnlineMeeting onlineMeeting){
+        return AjaxResult.success(onlineMeetingMapper.insert(onlineMeeting));
+    }
+    /**
+     *鏂板鏂囦欢鍏变韩
+     *
+     */
+    @PostMapping("/addFileSharing")
+    public AjaxResult addFileSharing(@RequestBody FileSharing fileSharing){
+        return AjaxResult.success(fileSharingMapper.insert(fileSharing));
+    }
+}
+
+
diff --git a/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
new file mode 100644
index 0000000..301ba74
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/RpaProcessAutomationController.java
@@ -0,0 +1,59 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.RpaProcessAutomationService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysDept;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/rpaProcessAutomation")
+@AllArgsConstructor
+public class RpaProcessAutomationController {
+    @Autowired
+    private RpaProcessAutomationService rpaProcessAutomationService;
+    /**銆�
+     * 鑾峰彇鍒楄〃
+     * @return
+     */
+    @GetMapping("/getList")
+    public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
+                              @RequestParam(defaultValue = "100") long size, RpaProcessAutomation rpaProcessAutomation) {
+        Page page = new Page(current, size);
+        return AjaxResult.success(rpaProcessAutomationService.listpage(page,rpaProcessAutomation));
+    }
+    /**銆�
+     * 澧炴坊
+     * @return
+     */
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody RpaProcessAutomation rpaProcessAutomation){
+        return AjaxResult.success(rpaProcessAutomationService.save(rpaProcessAutomation));
+    }
+    /**
+     * 鏇存柊
+     * @return
+     */
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody RpaProcessAutomation rpaProcessAutomation){
+        return AjaxResult.success(rpaProcessAutomationService.updateById(rpaProcessAutomation));
+    }
+    /**
+     * 鍒犻櫎
+     * @return
+     */
+    @DeleteMapping("/delete")
+    public AjaxResult delete(@RequestBody List<Long> ids){
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return AjaxResult.success(rpaProcessAutomationService.removeByIds(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java
new file mode 100644
index 0000000..034f752
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/AnnualLeaveSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.AnnualLeaveSetting;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface AnnualLeaveSettingMapper extends BaseMapper<AnnualLeaveSetting> {
+    IPage<AnnualLeaveSetting> listPage(Page page,@Param("annualLeaveSetting") AnnualLeaveSetting annualLeaveSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java b/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java
new file mode 100644
index 0000000..d8f311e
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/FileSharingMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.approve.pojo.FileSharing;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface FileSharingMapper extends BaseMapper<FileSharing> {
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java b/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java
new file mode 100644
index 0000000..a37485d
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/HolidaySettingsMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.HolidaySettings;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface HolidaySettingsMapper extends BaseMapper<HolidaySettings> {
+    IPage<HolidaySettings> listpage(Page page,@Param("holidaySettings") HolidaySettings holidaySettings);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
new file mode 100644
index 0000000..adae509
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.KnowledgeBase;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface KnowledgeBaseMapper extends BaseMapper<KnowledgeBase> {
+    IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java b/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java
new file mode 100644
index 0000000..defede2
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/NotificationManagementMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.NotificationManagement;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface NotificationManagementMapper extends BaseMapper<NotificationManagement> {
+    IPage<NotificationManagement> listpage(Page<NotificationManagement> page,@Param("notificationManagement") NotificationManagement notificationManagement);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java b/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java
new file mode 100644
index 0000000..fe7aa38
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/OnlineMeetingMapper.java
@@ -0,0 +1,9 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.approve.pojo.OnlineMeeting;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OnlineMeetingMapper extends BaseMapper<OnlineMeeting> {
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java
new file mode 100644
index 0000000..ec564db
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/OvertimeSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.OvertimeSetting;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.data.repository.query.Param;
+
+@Mapper
+public interface OvertimeSettingMapper extends BaseMapper<OvertimeSetting> {
+    IPage<OvertimeSetting> listPage(Page<OvertimeSetting> page,@Param("overtimeSetting") OvertimeSetting overtimeSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java b/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java
new file mode 100644
index 0000000..e5f8769
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/RpaProcessAutomationMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.approve.pojo.RpaProcessAutomation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface RpaProcessAutomationMapper extends BaseMapper<RpaProcessAutomation> {
+
+
+    IPage<RpaProcessAutomation> listpage(Page page,@Param("rpaProcessAutomation")RpaProcessAutomation rpaProcessAutomation);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java b/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java
new file mode 100644
index 0000000..b5dad41
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/WorkingHoursSettingMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.approve.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.approve.pojo.WorkingHoursSetting;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface WorkingHoursSettingMapper extends BaseMapper<WorkingHoursSetting> {
+    IPage<WorkingHoursSetting> listPage(Page page,@Param("workingHoursSetting") WorkingHoursSetting workingHoursSetting);
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java b/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java
new file mode 100644
index 0000000..2097b30
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/AnnualLeaveSetting.java
@@ -0,0 +1,70 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("annual_leave_setting")
+public class AnnualLeaveSetting implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鍛樺伐绫诲瀷
+     */
+    private String employeeType;
+    /**
+     * 宸ヤ綔骞撮檺
+     */
+    private String workYears;
+    /**
+     * 骞村亣澶╂暟
+     */
+    private Integer annualDays;
+    /**
+     * 鏈�澶у彲缁撹浆澶╂暟
+     */
+    private Integer maxCarryOver;
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/FileSharing.java b/src/main/java/com/ruoyi/approve/pojo/FileSharing.java
new file mode 100644
index 0000000..9c84034
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/FileSharing.java
@@ -0,0 +1,69 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+@Data
+@TableName("file_sharing")
+public class FileSharing implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鍏变韩鏍囬
+     */
+    private String title;
+    /**
+     * 涓婁紶鏂囦欢
+     */
+//    private String files;
+    @TableField(value = "files",typeHandler = ListToStringTypeHandler.class)
+    private List<String> files;
+    /**
+     * 鎺ユ敹閮ㄩ棬
+     */
+    @TableField(value = "departments",typeHandler = ListToStringTypeHandler.class)
+    private List<String> departments;
+    /**
+     * 鍏变韩鎻忚堪
+     */
+    private String description;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java b/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java
new file mode 100644
index 0000000..f3d9506
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/HolidaySettings.java
@@ -0,0 +1,80 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("holiday_settings")
+public class HolidaySettings implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鍋囨湡鍚嶇О
+     */
+    private String name;
+    /**
+     * 鍋囨湡绫诲瀷
+     */
+    private String type;
+    /**
+     * 寮�濮嬫棩鏈�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+    /**
+     * 缁撴潫鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+    /**
+     * 澶╂暟
+     */
+    private Integer days;
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java
new file mode 100644
index 0000000..6635294
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBase.java
@@ -0,0 +1,78 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("knowledge_base")
+public class KnowledgeBase implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鐭ヨ瘑鏍囬
+     */
+    private String title;
+    /**
+     * 鐭ヨ瘑绫诲瀷
+     */
+    private String type;
+    /**
+     * 閫傜敤鍦烘櫙
+     */
+    private String scenario;
+    /**
+     * 瑙e喅鏁堢巼
+     */
+    private String efficiency;
+    /**
+     * 闂鎻忚堪
+     */
+    private String problem;
+    /**
+     * 瑙e喅鏂规
+     */
+    private String solution;
+    /**
+     * 鍏抽敭瑕佺偣
+     */
+    private String keyPoints;
+    /**
+     * 鍒涘缓浜�
+     */
+    private String creator;
+    /**
+     * 浣跨敤娆℃暟
+     */
+    private Integer usageCount;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java b/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java
new file mode 100644
index 0000000..cb91626
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/NotificationManagement.java
@@ -0,0 +1,88 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("notification_management")
+public class NotificationManagement implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 閫氱煡鏍囬
+     */
+    private String title;
+    /**
+     * 閫氱煡绫诲瀷
+     */
+    private String type;
+    /**
+     * 浼樺厛绾�
+     */
+    private String priority;
+    /**
+     * 閫氱煡鐘舵��
+     */
+    private String status;
+    /**
+     * 鏈夋晥鏈熸椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate expireDate;
+    /**
+     * 鎺ユ敹閮ㄩ棬
+     */
+    @TableField(value = "departments",typeHandler = ListToStringTypeHandler.class)
+    private List<String> departments;
+    /**
+     * 鍚屾鏂瑰紡
+     */
+    @TableField(value = "sync_methods",typeHandler = ListToStringTypeHandler.class)
+    private List<String> syncMethods;
+    /**
+     * 閫氱煡鍐呭
+     */
+    private String content;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java b/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java
new file mode 100644
index 0000000..863d348
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/OnlineMeeting.java
@@ -0,0 +1,80 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.approve.utils.ListToStringTypeHandler;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@TableName("online_meeting")
+public class OnlineMeeting implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 浼氳鏍囬
+     */
+    private String title;
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+    /**
+     * 浼氳鏃堕暱
+     */
+    private Integer duration;
+    /**
+     * 浼氳骞冲彴
+     */
+    private String platform;
+    /**
+     * 浼氳鎻忚堪
+     */
+    private String description;
+    /**
+     * 鍙備細浜哄憳
+     */
+    @TableField(value = "participants",typeHandler = ListToStringTypeHandler.class)
+    private List<String> participants;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java b/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java
new file mode 100644
index 0000000..ed929cd
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/OvertimeSetting.java
@@ -0,0 +1,79 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Data
+@TableName("overtime_setting")
+public class OvertimeSetting implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鍔犵彮瑙勫垯鍚嶇О
+     */
+    private String name;
+    /**
+     * 鍔犵彮绫诲瀷
+     */
+    private String type;
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @JsonFormat(pattern = "HH:mm")
+    @DateTimeFormat(pattern = "HH:mm")
+    private LocalTime startTime;
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @JsonFormat(pattern = "HH:mm")
+    @DateTimeFormat(pattern = "HH:mm")
+    private LocalTime endTime;
+    /**
+     * 鍊嶇巼
+     */
+    private Double rate;
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java b/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java
new file mode 100644
index 0000000..a3ae618
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/RpaProcessAutomation.java
@@ -0,0 +1,61 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("rpa_process_automation")
+public class RpaProcessAutomation implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 绋嬪簭鍚�
+     */
+    private String programName;
+    /**
+     * 绋嬪簭鎻忚堪
+     */
+    private String description;
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java b/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java
new file mode 100644
index 0000000..e457c8f
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/WorkingHoursSetting.java
@@ -0,0 +1,79 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Data
+@TableName("working_hours_setting")
+public class WorkingHoursSetting implements Serializable {
+    @TableId(type = IdType.AUTO)
+    private Long id;
+    /**
+     * 鏃堕棿娈靛悕绉�
+     */
+    private String name;
+
+    /**
+     * 涓婄彮鏃堕棿
+     */
+    @JsonFormat(pattern = "HH:mm")
+    @DateTimeFormat(pattern = "HH:mm")
+    private LocalTime startTime;
+    /**
+     * 涓嬬彮鏃堕棿
+     */
+    @JsonFormat(pattern = "HH:mm")
+    @DateTimeFormat(pattern = "HH:mm")
+    private LocalTime endTime;
+    /**
+     * 寮规�т笂鐝�
+     */
+    private String flexibleStart;
+    /**
+     * 寮规�ф椂闂�(鍒嗛挓)
+     */
+    private Integer flexibleMinutes;
+    /**
+     * 鐘舵��
+     */
+    private String status;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鍒涘缓浜�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鏇存柊浜�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java b/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java
new file mode 100644
index 0000000..aa44adb
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/HolidaySettingsService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.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.approve.pojo.HolidaySettings;
+
+public interface HolidaySettingsService extends IService<HolidaySettings> {
+    IPage listpage(Page page, HolidaySettings holidaySettings);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
new file mode 100644
index 0000000..c8a3664
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.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.approve.pojo.KnowledgeBase;
+
+public interface KnowledgeBaseService extends IService<KnowledgeBase> {
+    IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java b/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java
new file mode 100644
index 0000000..8d2fade
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/NotificationManagementService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.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.approve.pojo.NotificationManagement;
+
+public interface NotificationManagementService extends IService<NotificationManagement> {
+    IPage listpage(Page page, NotificationManagement notificationManagement);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java b/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java
new file mode 100644
index 0000000..edf0011
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/RpaProcessAutomationService.java
@@ -0,0 +1,10 @@
+package com.ruoyi.approve.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.approve.pojo.RpaProcessAutomation;
+
+public interface RpaProcessAutomationService extends IService<RpaProcessAutomation> {
+    IPage<RpaProcessAutomation> listpage(Page page, RpaProcessAutomation rpaProcessAutomation);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java
new file mode 100644
index 0000000..a0cfe37
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/HolidaySettingsServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.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.approve.mapper.HolidaySettingsMapper;
+import com.ruoyi.approve.pojo.HolidaySettings;
+import com.ruoyi.approve.service.HolidaySettingsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class HolidaySettingsServiceImpl extends ServiceImpl<HolidaySettingsMapper, HolidaySettings> implements HolidaySettingsService {
+    @Autowired
+    private HolidaySettingsMapper holidaySettingsMapper;
+
+    @Override
+    public IPage<HolidaySettings> listpage(Page page, HolidaySettings holidaySettings) {
+        return holidaySettingsMapper.listpage(page,holidaySettings);
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
new file mode 100644
index 0000000..57a3fa7
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.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.approve.mapper.KnowledgeBaseMapper;
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.service.KnowledgeBaseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements KnowledgeBaseService {
+    @Autowired
+    private KnowledgeBaseMapper knowledgeBaseMapper;
+
+    @Override
+    public IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase) {
+        return knowledgeBaseMapper.listpage(page,knowledgeBase);
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java
new file mode 100644
index 0000000..fa13fa9
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/NotificationManagementServiceImpl.java
@@ -0,0 +1,24 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.NotificationManagementMapper;
+import com.ruoyi.approve.pojo.NotificationManagement;
+import com.ruoyi.approve.service.NotificationManagementService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class NotificationManagementServiceImpl extends ServiceImpl<NotificationManagementMapper, NotificationManagement> implements NotificationManagementService {
+    @Autowired
+    private NotificationManagementMapper notificationManagementMapper;
+
+    @Override
+    public IPage<NotificationManagement> listpage(Page page, NotificationManagement notificationManagement) {
+//        // 1. 鍒涘缓 Page 瀹炰緥锛圛Page 瀹炵幇绫伙級锛屾寚瀹氶〉鐮佸拰姣忛〉鏉℃暟
+//        IPage<NotificationManagement> page1 = new Page<>(page.getCurrent(), page.getSize());
+        return notificationManagementMapper.listpage(page,notificationManagement);
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java
new file mode 100644
index 0000000..ddb6083
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/RpaProcessAutomationServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.approve.mapper.RpaProcessAutomationMapper;
+import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.RpaProcessAutomationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RpaProcessAutomationServiceImpl extends ServiceImpl<RpaProcessAutomationMapper, RpaProcessAutomation> implements RpaProcessAutomationService {
+    @Autowired
+    private RpaProcessAutomationMapper rpaProcessAutomationMapper;
+    @Override
+    public IPage<RpaProcessAutomation> listpage(Page page, RpaProcessAutomation rpaProcessAutomation) {
+        return rpaProcessAutomationMapper.listpage(page,rpaProcessAutomation);
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java b/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java
new file mode 100644
index 0000000..5be97b7
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/utils/ListToStringTypeHandler.java
@@ -0,0 +1,48 @@
+package com.ruoyi.approve.utils;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+@MappedTypes(List.class)
+@MappedJdbcTypes(JdbcType.VARCHAR)
+public class ListToStringTypeHandler extends BaseTypeHandler<List<String>> {
+    private static final String SEPARATOR = ",";
+
+    @Override
+    public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType) throws SQLException {
+        if (parameter == null) {
+            ps.setString(i, null);
+        } else {
+            ps.setString(i, String.join(SEPARATOR, parameter));
+        }
+    }
+    @Override
+    public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
+        String value = rs.getString(columnName);
+        return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+    }
+
+    @Override
+    public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
+        String value = rs.getString(columnIndex);
+        return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+    }
+
+    @Override
+    public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
+        String value = cs.getString(columnIndex);
+        return value != null && !value.isEmpty() ? Arrays.asList(value.split(SEPARATOR)) : new ArrayList<>();
+    }
+
+}
+
diff --git a/src/main/java/com/ruoyi/dto/PageDto.java b/src/main/java/com/ruoyi/dto/PageDto.java
new file mode 100644
index 0000000..7c6f399
--- /dev/null
+++ b/src/main/java/com/ruoyi/dto/PageDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Getter
+@Setter
+public class PageDto implements Serializable {
+    private Integer current = 1;
+    private Integer size = 100;
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
new file mode 100644
index 0000000..e7c4c40
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffSchedulingController.java
@@ -0,0 +1,49 @@
+package com.ruoyi.staff.controller;
+
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.dto.SaveStaffSchedulingDto;
+import com.ruoyi.staff.service.StaffSchedulingService;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 鎺掔彮
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@RestController
+@RequestMapping("/staff/staffScheduling")
+@RequiredArgsConstructor
+public class StaffSchedulingController {
+
+    private final StaffSchedulingService staffSchedulingService;
+
+    @PostMapping("/listPage")
+    public AjaxResult listPage(@RequestBody SearchSchedulingVo vo){
+       return AjaxResult.success(staffSchedulingService.listPage(vo));
+    }
+
+    @PostMapping("/save")
+    public AjaxResult save(@RequestBody @Validated SaveStaffSchedulingDto saveStaffSchedulingDto){
+        staffSchedulingService.saveStaffScheduling(saveStaffSchedulingDto);
+        return AjaxResult.success();
+    }
+
+    @DeleteMapping("/delByIds")
+    public AjaxResult delByIds(@RequestBody List<Integer> ids){
+        staffSchedulingService.removeByIds(ids);
+        return AjaxResult.success();
+    }
+
+    @DeleteMapping("/del/{id}")
+    public AjaxResult del(@PathVariable("id") Integer id){
+        staffSchedulingService.removeById(id);
+        return AjaxResult.success();
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
new file mode 100644
index 0000000..25a41b3
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/SaveStaffSchedulingDto.java
@@ -0,0 +1,49 @@
+package com.ruoyi.staff.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SaveStaffSchedulingDto implements Serializable {
+    private Integer id;
+
+    @NotNull(message = "蹇呴』瑕侀�夋嫨鍛樺伐")
+    private Integer staffId;
+
+    @NotNull(message = "閮ㄩ棬id涓嶈兘涓虹┖!")
+    private Integer department;
+
+    @NotNull(message = "鐝id涓嶈兘涓虹┖!")
+    private Integer shiftType;
+
+    @NotNull(message = "宸ヤ綔鏃ヤ笉鑳戒负绌�!")
+    private Date workDate;
+
+    @NotNull(message = "涓婄彮鏃堕棿涓嶈兘涓虹┖!")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime workStartTime;
+
+    @NotNull(message = "涓嬬彮鏃堕棿涓嶈兘涓虹┖!")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime workEndTime;
+
+    @NotNull(message = "宸ユ椂涓嶈兘涓虹┖!")
+    private Integer status;
+
+    private String remark;
+
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java b/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java
new file mode 100644
index 0000000..6643a38
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffSchedulingDto.java
@@ -0,0 +1,74 @@
+package com.ruoyi.staff.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/4
+ * @email 3038525872@qq.com
+ */
+@Data
+public class StaffSchedulingDto implements Serializable {
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鍛樺伐ID
+     */
+    private Integer staffId;
+
+    private String staffName;
+
+    private String staffNo;
+
+    /**
+     * 閮ㄩ棬
+     */
+    private String department;
+
+    /**
+     * 鎺掔彮绫诲瀷
+     */
+    private String shiftType;
+
+    /**
+     * 宸ヤ綔鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date workDate;
+
+    /**
+     * 寮�濮嬪伐浣滄椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime workStartTime;
+
+    /**
+     * 缁撴潫宸ヤ綔鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime workEndTime;
+
+    /**
+     * 宸ヤ綔鏃堕暱
+     */
+    private BigDecimal workHours;
+
+    /**
+     * 鐘舵��
+     */
+    private String status;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java
new file mode 100644
index 0000000..45fecac
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffSchedulingMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-03 14:50:34
+* @Entity generator.domain.StaffScheduling
+*/
+public interface StaffSchedulingMapper extends BaseMapper<StaffScheduling> {
+
+    IPage<StaffSchedulingDto> listPage(IPage page, @Param("vo") SearchSchedulingVo vo);
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java b/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java
new file mode 100644
index 0000000..89be920
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffScheduling.java
@@ -0,0 +1,106 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 
+ * @TableName staff_scheduling
+ */
+@TableName(value ="staff_scheduling")
+@Data
+public class StaffScheduling {
+    /**
+     * 
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 鍛樺伐ID
+     */
+    @TableField(value = "staff_id")
+    private Integer staffId;
+
+    /**
+     * 閮ㄩ棬
+     */
+    @TableField(value = "department")
+    private Integer department;
+
+    /**
+     * 鎺掔彮绫诲瀷
+     */
+    @TableField(value = "shift_type")
+    private Integer shiftType;
+
+    /**
+     * 宸ヤ綔鏃ユ湡
+     */
+    @TableField(value = "work_date")
+    private Date workDate;
+
+    /**
+     * 寮�濮嬪伐浣滄椂闂�
+     */
+    @TableField(value = "work_start_time")
+    private LocalDateTime workStartTime;
+
+    /**
+     * 缁撴潫宸ヤ綔鏃堕棿
+     */
+    @TableField(value = "work_end_time")
+    private LocalDateTime workEndTime;
+
+    /**
+     * 宸ヤ綔鏃堕暱
+     */
+    @TableField(value = "work_hours")
+    private BigDecimal workHours;
+
+    /**
+     * 鐘舵��
+     */
+    @TableField(value = "status")
+    private Integer status;
+
+    /**
+     * 澶囨敞
+     */
+    @TableField(value = "remark")
+    private String remark;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    /**
+     * 鍒涘缓鐢ㄦ埛
+     */
+    @TableField(value = "create_user",fill = FieldFill.INSERT)
+    private Long createUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    /**
+     * 淇敼鐢ㄦ埛
+     */
+    @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+    private Long tenantId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java b/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java
new file mode 100644
index 0000000..b12faa1
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffSchedulingService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.staff.dto.SaveStaffSchedulingDto;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2025-09-03 14:50:34
+*/
+public interface StaffSchedulingService extends IService<StaffScheduling> {
+
+    void saveStaffScheduling(SaveStaffSchedulingDto saveStaffSchedulingDto);
+
+    IPage<StaffSchedulingDto> listPage(SearchSchedulingVo vo);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
new file mode 100644
index 0000000..b42d1fc
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSchedulingServiceImpl.java
@@ -0,0 +1,61 @@
+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.SaveStaffSchedulingDto;
+import com.ruoyi.staff.dto.StaffSchedulingDto;
+import com.ruoyi.staff.mapper.StaffSchedulingMapper;
+import com.ruoyi.staff.pojo.StaffScheduling;
+import com.ruoyi.staff.service.StaffSchedulingService;
+import com.ruoyi.staff.vo.SearchSchedulingVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.Duration;
+
+/**
+ * @author buhuazhen
+ * @description 閽堝琛ㄣ�恠taff_scheduling銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2025-09-03 14:50:34
+ */
+@Service
+@RequiredArgsConstructor
+public class StaffSchedulingServiceImpl extends ServiceImpl<StaffSchedulingMapper, StaffScheduling>
+        implements StaffSchedulingService {
+
+    private final StaffSchedulingMapper staffSchedulingMapper;
+
+    @Lazy
+    @Resource
+    private StaffSchedulingService staffSchedulingService;
+
+    @Override
+    public void saveStaffScheduling(SaveStaffSchedulingDto saveStaffSchedulingDto) {
+        StaffScheduling staffScheduling = new StaffScheduling();
+        BeanUtils.copyProperties(saveStaffSchedulingDto, staffScheduling);
+        // 寮�濮嬭绠楁椂闂�
+        Duration duration = Duration.between(staffScheduling.getWorkStartTime(), staffScheduling.getWorkEndTime());
+        long hours = duration.toHours();
+        // 0.5
+        double minutes = (duration.toMinutes() % 60) / 60.0;
+        // minutes = minutes < 0.5 ? 0 : 0.5; 鍏徃涓�鑸互0.5涓烘爣鍑嗚绠�
+        staffScheduling.setWorkHours(BigDecimal.valueOf(hours + minutes));
+        staffSchedulingService.saveOrUpdate(staffScheduling);
+    }
+
+    @Override
+    public IPage<StaffSchedulingDto> listPage(SearchSchedulingVo vo) {
+        Page<StaffScheduling> page = new Page<>(vo.getCurrent(), vo.getSize());
+
+        return staffSchedulingMapper.listPage(page, vo);
+    }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java b/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java
new file mode 100644
index 0000000..c546208
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/vo/SearchSchedulingVo.java
@@ -0,0 +1,27 @@
+package com.ruoyi.staff.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDate;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/3
+ * @email 3038525872@qq.com
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchSchedulingVo extends PageDto {
+
+    private String staffName;
+
+    private String shiftType;
+
+    private LocalDate startDate;
+
+    private LocalDate endDate;
+}
diff --git a/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml b/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.xml
new file mode 100644
index 0000000..39fcb3f
--- /dev/null
+++ b/src/main/resources/mapper/approve/AnnualLeaveSettingMapper.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.approve.mapper.AnnualLeaveSettingMapper">
+
+
+    <select id="listPage" resultType="com.ruoyi.approve.pojo.AnnualLeaveSetting">
+        select * from annual_leave_setting
+        where 1=1
+        <if test="annualLeaveSetting.employeeType != null">
+            and employee_type = #{annualLeaveSetting.employeeType}
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/FileSharingMapper.xml b/src/main/resources/mapper/approve/FileSharingMapper.xml
new file mode 100644
index 0000000..cd62025
--- /dev/null
+++ b/src/main/resources/mapper/approve/FileSharingMapper.xml
@@ -0,0 +1,7 @@
+<?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.approve.mapper.FileSharingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/HolidaySettingsMapper.xml b/src/main/resources/mapper/approve/HolidaySettingsMapper.xml
new file mode 100644
index 0000000..ac5f19e
--- /dev/null
+++ b/src/main/resources/mapper/approve/HolidaySettingsMapper.xml
@@ -0,0 +1,17 @@
+<?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.approve.mapper.HolidaySettingsMapper">
+
+    <select id="listpage" resultType="com.ruoyi.approve.pojo.HolidaySettings">
+        select * from holiday_settings
+        where 1=1
+        <if test="holidaySettings.type != null">
+            and type = #{holidaySettings.type}
+        </if>
+        <if test="holidaySettings.name != null">
+            and name like concat('%',#{holidaySettings.name},'%')
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
new file mode 100644
index 0000000..e4819c2
--- /dev/null
+++ b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
@@ -0,0 +1,21 @@
+<?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.approve.mapper.KnowledgeBaseMapper">
+
+
+    <select id="listpage" resultType="com.ruoyi.approve.pojo.KnowledgeBase">
+        select * from knowledge_base
+        <where>
+            1=1
+            <if test="knowledgeBase.title != null and knowledgeBase.title != ''">
+                and title like concat('%',#{knowledgeBase.title},'%')
+            </if>
+            <if test="knowledgeBase.type != null and knowledgeBase.type != ''">
+                and type = #{knowledgeBase.type}
+            </if>
+        </where>
+
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/NotificationManagementMapper.xml b/src/main/resources/mapper/approve/NotificationManagementMapper.xml
new file mode 100644
index 0000000..a2e714f
--- /dev/null
+++ b/src/main/resources/mapper/approve/NotificationManagementMapper.xml
@@ -0,0 +1,19 @@
+<?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.approve.mapper.NotificationManagementMapper">
+
+    <select id="listpage" resultType="com.ruoyi.approve.pojo.NotificationManagement">
+        select * from notification_management
+        <where>
+            1=1
+            <if test="notificationManagement.title != null and notificationManagement.title != ''">
+                and title like concat('%',#{notificationManagement.title},'%')
+            </if>
+            <if test="notificationManagement.type != null">
+                and type = #{notificationManagement.type}
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/OnlineMeetingMapper.xml b/src/main/resources/mapper/approve/OnlineMeetingMapper.xml
new file mode 100644
index 0000000..5ce6d5d
--- /dev/null
+++ b/src/main/resources/mapper/approve/OnlineMeetingMapper.xml
@@ -0,0 +1,7 @@
+<?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.approve.mapper.OnlineMeetingMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/OvertimeSettingMapper.xml b/src/main/resources/mapper/approve/OvertimeSettingMapper.xml
new file mode 100644
index 0000000..b496353
--- /dev/null
+++ b/src/main/resources/mapper/approve/OvertimeSettingMapper.xml
@@ -0,0 +1,18 @@
+<?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.approve.mapper.OvertimeSettingMapper">
+
+
+    <select id="listPage" resultType="com.ruoyi.approve.pojo.OvertimeSetting">
+        select * from overtime_setting
+        where 1=1
+        <if test="overtimeSetting.type != null">
+            and type = #{overtimeSetting.type}
+        </if>
+        <if test="overtimeSetting.name != null and overtimeSetting.name !=''">
+            and name like concat('%',#{overtimeSetting.name},'%')
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml b/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml
new file mode 100644
index 0000000..4471d61
--- /dev/null
+++ b/src/main/resources/mapper/approve/RpaProcessAutomationMapper.xml
@@ -0,0 +1,19 @@
+<?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.approve.mapper.RpaProcessAutomationMapper">
+
+    <select id="listpage" resultType="com.ruoyi.approve.pojo.RpaProcessAutomation">
+        select * from rpa_process_automation
+        <where>
+        1=1
+            <if test="rpaProcessAutomation.programName != null and rpaProcessAutomation.programName != ''">
+                and program_name like concat('%',#{rpaProcessAutomation.programName},'%')
+            </if>
+            <if test="rpaProcessAutomation.status != null">
+                and status = #{rpaProcessAutomation.status}
+            </if>
+        </where>
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml b/src/main/resources/mapper/approve/WorkingHoursSettingMapper.xml
new file mode 100644
index 0000000..63bc1c3
--- /dev/null
+++ b/src/main/resources/mapper/approve/WorkingHoursSettingMapper.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.approve.mapper.WorkingHoursSettingMapper">
+
+
+    <select id="listPage" resultType="com.ruoyi.approve.pojo.WorkingHoursSetting">
+        select * from working_hours_setting
+        where 1=1
+        <if test="workingHoursSetting.name != null and workingHoursSetting.name !=''">
+            and name like concat('%',#{workingHoursSetting.name},'%')
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/staff/StaffSchedulingMapper.xml b/src/main/resources/mapper/staff/StaffSchedulingMapper.xml
new file mode 100644
index 0000000..1a32ef1
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffSchedulingMapper.xml
@@ -0,0 +1,52 @@
+<?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.StaffSchedulingMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffScheduling">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="staffId" column="staff_id" jdbcType="INTEGER"/>
+            <result property="department" column="department" jdbcType="INTEGER"/>
+            <result property="shiftType" column="shift_type" jdbcType="INTEGER"/>
+            <result property="workDate" column="work_date" jdbcType="DATE"/>
+            <result property="workStartTime" column="work_start_time" jdbcType="TIMESTAMP"/>
+            <result property="workEndTime" column="work_end_time" jdbcType="TIMESTAMP"/>
+            <result property="workHours" column="work_hours" jdbcType="DECIMAL"/>
+            <result property="status" column="status" jdbcType="INTEGER"/>
+            <result property="remark" column="remark" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+            <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,staff_id,department,
+        shift_type,work_date,work_start_time,
+        work_end_time,work_hours,status,
+        remark,create_time,create_user,
+        update_time,update_user,tenant_id
+    </sql>
+    <select id="listPage" resultType="com.ruoyi.staff.dto.StaffSchedulingDto">
+        SELECT
+        t1.*,t2.staff_name as 'staff_name' ,t2.staff_no as 'staff_no'
+        FROM staff_scheduling t1
+        left join staff_join_leave_record t2 on t1.staff_id = t2.id
+        where 1=1
+        <if test="vo.staffName != null and vo.staffName != '' ">
+            AND t2.staff_name LIKE CONCAT('%', #{vo.staffName}, '%')
+        </if>
+        <if test="vo.shiftType != null and vo.shiftType != '' ">
+            AND t1.shift_type = #{vo.shiftType}
+        </if>
+        <if test="vo.startDate != null ">
+            AND t1.work_date >=  DATE_FORMAT(#{vo.startDate},'%Y-%m-%d')
+        </if>
+        <if test="vo.endDate != null ">
+            AND t1.work_date  <![CDATA[ <= ]]> DATE_FORMAT(#{vo.endDate},'%Y-%m-%d')
+        </if>
+        ORDER BY t1.create_time DESC
+    </select>
+</mapper>

--
Gitblit v1.9.3