feat: 合规员(manager) 自建会议可自传自审, 现场照片支持直接上传
- 后端 submitMaterial: manager 跳过执行方/已执行/已冻结三道门槛 - 前端提交按钮门槛同步放宽 (manager 不受已执行/已冻结限制) - 现场照片(签到表/前全景/后全景) 新增直接上传入口, 与扫码拍照并存 - 劳务材料 tab 增加"劳务明细表"小标题 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+9
-5
@@ -351,8 +351,8 @@ public class BizMeetingController extends BaseController {
|
||||
/**
|
||||
* 执行人员提交材料 (分轨: 劳务 LABOR / 会务 SERVICE 可多选, 每轨独立提交).
|
||||
* <ul>
|
||||
* <li>校验 1: 当前用户是该会议执行方 (项目级归属, 强校验)</li>
|
||||
* <li>校验 2: 已执行 (is_executed=1) 且未冻结</li>
|
||||
* <li>校验 1: 当前用户是该会议执行方 (项目级归属, 强校验) — 合规员(manager) 自建会议自传自审, 跳过此校验</li>
|
||||
* <li>校验 2: 已执行 (is_executed=1) 且未冻结 — 合规员(manager) 跳过"已执行"与"已冻结"两道时间门槛 (不依赖 scheduler)</li>
|
||||
* <li>校验 3: 所选轨 audit_stage ∈ {NOT_SUBMITTED, REJECTED}</li>
|
||||
* <li>校验 4: 会务轨在 biz_meeting_material 至少 1 条 (M_*); 劳务轨 = 参会人员列表至少 1 人 (非上传文件)</li>
|
||||
* </ul>
|
||||
@@ -366,11 +366,15 @@ public class BizMeetingController extends BaseController {
|
||||
if (m == null) throw new ServiceException("会议不存在");
|
||||
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (!bizProjectService.isExecutorOfProject(m.getProjectId(), userId)) {
|
||||
String roleType = SecurityUtils.getLoginUser().getUser().getRoleType();
|
||||
// 合规员(manager) 自建会议可自传自审: 跳过"必须是项目执行方"的强校验
|
||||
if (!"manager".equals(roleType) && !bizProjectService.isExecutorOfProject(m.getProjectId(), userId)) {
|
||||
throw new ServiceException("您不是该项目的执行方, 无法提交材料");
|
||||
}
|
||||
if (!isExecuted(m)) throw new ServiceException("会议尚未执行, 不能提交材料");
|
||||
if (isFrozen(m)) throw new ServiceException("会议已冻结, 不能提交材料");
|
||||
// 合规员(manager) 自建会议自传自审: 不依赖 scheduler 翻 is_executed, 跳过"已执行"时间门槛
|
||||
if (!"manager".equals(roleType) && !isExecuted(m)) throw new ServiceException("会议尚未执行, 不能提交材料");
|
||||
// 合规员(manager) 自建会议自传自审: 同样跳过"已冻结"门槛 (冻结=提交截止已过, 但自审流程不应对合规员本人设卡)
|
||||
if (!"manager".equals(roleType) && isFrozen(m)) throw new ServiceException("会议已冻结, 不能提交材料");
|
||||
|
||||
List<String> types = body == null ? null : body.getTypes();
|
||||
if (types == null || types.isEmpty()) throw new ServiceException("请选择要提交的材料类型");
|
||||
|
||||
Reference in New Issue
Block a user