From e1fba46a50e2f5036b1a5fd59f459e61495eb888 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 08 七月 2026 16:43:44 +0800
Subject: [PATCH] 已进行排班并且人员已打卡的前提下,对应的班次配置不能编辑删除。

---
 src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
index 7b4ba61..fc9cf4c 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
@@ -1,5 +1,8 @@
 package com.ruoyi.staff.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.staff.pojo.PersonalAttendanceLocationConfig;
@@ -30,8 +33,10 @@
     @Operation(summary = "鏂板/淇敼浜哄憳鎵撳崱瑙勫垯閰嶇疆")
     @PostMapping("/add")
     public R add(@RequestBody PersonalAttendanceLocationConfig personalAttendanceLocationConfig){
-
-
+        if (personalAttendanceLocationConfig.getId() != null
+                && !personalAttendanceLocationConfigService.canEdit(personalAttendanceLocationConfig.getId())) {
+            return R.fail("璇ョ彮娆¢厤缃凡琚帓鐝苟浜х敓鎵撳崱璁板綍锛屼笉鑳界紪杈�");
+        }
         // 鐝闇�瑕佷笉鑳藉閲嶅
         if (personalAttendanceLocationConfig.getId() == null && personalAttendanceLocationConfigService.lambdaQuery().eq(PersonalAttendanceLocationConfig::getShift, personalAttendanceLocationConfig.getShift()).one() != null) {
             return R.fail("鐝涓嶈兘閲嶅");
@@ -41,14 +46,35 @@
 
     @Operation(summary = "鍒嗛〉鏌ヨ浜哄憳鎵撳崱瑙勫垯閰嶇疆")
     @GetMapping("/listPage")
-    public R listPage(Page page){
-        return R.ok(personalAttendanceLocationConfigService.page(page));
+    public R listPage(Page page, PersonalAttendanceLocationConfig query){
+        page.addOrder(OrderItem.desc("id"));
+        LambdaQueryWrapper<PersonalAttendanceLocationConfig> wrapper = new LambdaQueryWrapper<PersonalAttendanceLocationConfig>()
+                .ne(PersonalAttendanceLocationConfig::getId, 999);
+        if (query.getSysDeptId() != null) {
+            wrapper.eq(PersonalAttendanceLocationConfig::getSysDeptId, query.getSysDeptId());
+        }
+        if (query.getShift() != null && !query.getShift().isEmpty()) {
+            wrapper.eq(PersonalAttendanceLocationConfig::getShift, query.getShift());
+        }
+        IPage<PersonalAttendanceLocationConfig> result = personalAttendanceLocationConfigService.page(page, wrapper);
+        result.getRecords().forEach(item -> {
+            boolean locked = personalAttendanceLocationConfigService.hasAttendanceUsage(item.getId());
+            item.setUsageLocked(locked);
+            item.setCanEdit(!locked);
+            item.setCanDelete(!locked);
+        });
+        return R.ok(result);
     }
 
 
     @Operation(summary = "鍒犻櫎浜哄憳鎵撳崱瑙勫垯閰嶇疆")
     @DeleteMapping("/del")
     public R del(@RequestBody List<Integer> ids) {
+        for (Integer id : ids) {
+            if (!personalAttendanceLocationConfigService.canDelete(id)) {
+                return R.fail("瀛樺湪宸叉帓鐝笖宸叉湁鎵撳崱璁板綍鐨勭彮娆¢厤缃紝涓嶈兘鍒犻櫎");
+            }
+        }
         return R.ok(personalAttendanceLocationConfigService.removeBatchByIds(ids));
     }
 

--
Gitblit v1.9.3