diff --git a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java
index 0985412..4dbdf4d 100644
--- a/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java
+++ b/ry-api/ruoyi-business/src/main/java/com/ruoyi/business/controller/BizMeetingController.java
@@ -1,7 +1,9 @@
package com.ruoyi.business.controller;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.ruoyi.business.domain.BizMeetingMaterial;
@@ -283,22 +285,72 @@ public class BizMeetingController extends BaseController {
@Log(title = "会议审核", businessType = BusinessType.UPDATE)
@PostMapping("/{meetingId}/audit-compliance")
public AjaxResult auditCompliance(@PathVariable("meetingId") Long meetingId, @RequestBody AuditBody body) {
- String roleType = SecurityUtils.getLoginUser().getUser().getRoleType();
- if (!"manager".equals(roleType)) throw new ServiceException("仅合规人员可操作");
-
+ if (!"manager".equals(SecurityUtils.getLoginUser().getUser().getRoleType())) {
+ throw new ServiceException("仅合规人员可操作");
+ }
BizMeeting m = bizMeetingService.getById(meetingId);
if (m == null) throw new ServiceException("会议不存在");
+ boolean approved = Boolean.TRUE.equals(body.getApproved());
+ if (!approved && (body.getOpinion() == null || body.getOpinion().isEmpty())) {
+ throw new ServiceException("拒绝时意见不能为空");
+ }
+ return success(doComplianceAudit(m, approved, body.getOpinion()));
+ }
+ /**
+ * 批量合规审核 (role_type=manager): 一次对多个会议执行材料一级审核.
+ *
+ * body: { "meetingIds": [..], "approved": true|false, "opinion": "..." }
+ *
best-effort: 逐条审核, 状态不符的会议跳过并回执失败原因, 不整批回滚.
+ */
+ @Log(title = "会议审核", businessType = BusinessType.UPDATE)
+ @PostMapping("/batch-audit-compliance")
+ public AjaxResult batchAuditCompliance(@RequestBody BatchAuditBody body) {
+ if (!"manager".equals(SecurityUtils.getLoginUser().getUser().getRoleType())) {
+ throw new ServiceException("仅合规人员可操作");
+ }
+ List meetingIds = body.getMeetingIds();
+ if (meetingIds == null || meetingIds.isEmpty()) {
+ throw new ServiceException("请选择会议");
+ }
boolean approved = Boolean.TRUE.equals(body.getApproved());
if (!approved && (body.getOpinion() == null || body.getOpinion().isEmpty())) {
throw new ServiceException("拒绝时意见不能为空");
}
+ List successIds = new ArrayList<>();
+ List