From 5d75fcaea0a3774052b7484a4ffe755258502363 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 06 十二月 2025 20:49:11 +0800
Subject: [PATCH] fix:开始执行人员就绪按钮
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 92 insertions(+), 0 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
index b983222..a6bca50 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTaskServiceImpl.java
@@ -36,6 +36,7 @@
import com.ruoyi.system.service.ISysTaskEmergencyService;
import com.ruoyi.system.service.ITaskAttachmentSyncService;
import com.ruoyi.system.service.IMapService;
+import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.event.TaskCreatedEvent;
import com.ruoyi.system.event.TaskAssignedEvent;
import com.ruoyi.system.event.TaskStatusChangedEvent;
@@ -99,6 +100,9 @@
@Autowired(required = false)
private IMapService mapService;
+
+ @Autowired
+ private ISysConfigService configService;
/**
* 鏌ヨ浠诲姟绠$悊
@@ -2344,6 +2348,22 @@
}
}
+ // 3. 妫�鏌ユ墽琛屼汉鏄惁鍏ㄩ儴灏辩华锛堝彈閰嶇疆寮�鍏虫帶鍒讹級
+ String readyCheckEnabled = configService.selectConfigByKey("task.assignee.ready.check.enabled");
+ if ("true".equalsIgnoreCase(readyCheckEnabled)) {
+ assignees = task.getAssignees();
+ if (assignees != null && !assignees.isEmpty()) {
+ boolean allReady = assignees.stream()
+ .allMatch(a -> "1".equals(a.getIsReady()));
+ if (!allReady) {
+ Map<String, Object> conflict = new HashMap<>();
+ conflict.put("type", "assigneeReady");
+ conflict.put("message", "瀛樺湪鏈氨缁殑鎵ц浜猴紝璇风瓑寰呮墍鏈夋墽琛屼汉鐐瑰嚮灏辩华鍚庡啀鍑鸿溅");
+ conflicts.add(conflict);
+ }
+ }
+ }
+
// 杩斿洖缁撴灉
Map<String, Object> result = new HashMap<>();
result.put("valid", conflicts.isEmpty());
@@ -2351,5 +2371,77 @@
return com.ruoyi.common.core.domain.AjaxResult.success(result);
}
+
+ /**
+ * 鎵ц浜虹偣鍑诲氨缁�
+ *
+ * @param taskId 浠诲姟ID
+ * @param userId 鐢ㄦ埛ID
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public com.ruoyi.common.core.domain.AjaxResult setAssigneeReady(Long taskId, Long userId) {
+ // 1. 鏌ヨ鎵ц浜哄叧鑱斾俊鎭�
+ List<SysTaskAssignee> assignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
+ SysTaskAssignee targetAssignee = assignees.stream()
+ .filter(a -> a.getUserId().equals(userId))
+ .findFirst()
+ .orElse(null);
+
+ if (targetAssignee == null) {
+ return com.ruoyi.common.core.domain.AjaxResult.error("鎮ㄤ笉鏄浠诲姟鐨勬墽琛屼汉");
+ }
+
+ // 2. 鏇存柊灏辩华鐘舵��
+ targetAssignee.setIsReady("1");
+ targetAssignee.setReadyTime(new Date());
+ targetAssignee.setUpdateBy(SecurityUtils.getUsername());
+ targetAssignee.setUpdateTime(new Date());
+
+ sysTaskAssigneeMapper.updateSysTaskAssignee(targetAssignee);
+
+ // 3. 妫�鏌ユ槸鍚︽墍鏈夋墽琛屼汉閮藉凡灏辩华
+ boolean allReady = assignees.stream()
+ .allMatch(a -> a.getUserId().equals(userId) || "1".equals(a.getIsReady()));
+
+ Map<String, Object> result = new HashMap<>();
+ result.put("allReady", allReady);
+ result.put("message", "灏辩华鎴愬姛");
+
+ return com.ruoyi.common.core.domain.AjaxResult.success(result);
+ }
+
+ /**
+ * 鍙栨秷鎵ц浜哄氨缁�
+ *
+ * @param taskId 浠诲姟ID
+ * @param userId 鐢ㄦ埛ID
+ * @return 缁撴灉
+ */
+ @Override
+ @Transactional
+ public com.ruoyi.common.core.domain.AjaxResult cancelAssigneeReady(Long taskId, Long userId) {
+ // 鏌ヨ鎵ц浜哄叧鑱斾俊鎭�
+ List<SysTaskAssignee> assignees = sysTaskAssigneeMapper.selectSysTaskAssigneeByTaskId(taskId);
+ SysTaskAssignee targetAssignee = assignees.stream()
+ .filter(a -> a.getUserId().equals(userId))
+ .findFirst()
+ .orElse(null);
+
+ if (targetAssignee == null) {
+ return com.ruoyi.common.core.domain.AjaxResult.error("鎮ㄤ笉鏄浠诲姟鐨勬墽琛屼汉");
+ }
+
+ // 鏇存柊灏辩华鐘舵��
+ targetAssignee.setIsReady("0");
+ targetAssignee.setReadyTime(null);
+ targetAssignee.setUpdateBy(SecurityUtils.getUsername());
+ targetAssignee.setUpdateTime(new Date());
+
+ sysTaskAssigneeMapper.updateSysTaskAssignee(targetAssignee);
+
+ return com.ruoyi.common.core.domain.AjaxResult.success("宸插彇娑堝氨缁�");
+ }
}
--
Gitblit v1.9.1