Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-12-12 18:38:01 +08:00
2 changed files with 33 additions and 30 deletions

View File

@@ -37,9 +37,6 @@ public class DiscListener implements ExecutionListener {
@Override @Override
public void notify(DelegateExecution execution) { public void notify(DelegateExecution execution) {
log.info("===== 退伍复学审批监听器触发 =====");
log.info("当前节点ID{}", execution.getCurrentActivityId());
log.info("流程实例ID{}", execution.getProcessInstanceId());
// 1. 获取当前节点ID和流程定义ID // 1. 获取当前节点ID和流程定义ID
String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID兼容所有版本 String currentActivityId = execution.getCurrentActivityId(); // 当前节点ID兼容所有版本
String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID String processDefinitionId = execution.getProcessDefinitionId(); // 流程定义ID
@@ -117,9 +114,17 @@ public class DiscListener implements ExecutionListener {
switch (currentNodeName) { switch (currentNodeName) {
case "招生与就业处": case "招生与就业处":
return counselorInfo.getUserId(); List<TeacherVo> zjcData = sysDisBasicMapper.getShenDataInfo("招就处");
return zjcData.get(0).getUserId();
case "辅导员审核": case "辅导员审核":
// 返回匹配的辅导员用户ID作为下一个节点负责人
return counselorInfo.getUserId();
case "学务审核":
// 辅导员通过后 → 下一个节点学务筛选出角色ID=105且与当前部门一致 // 辅导员通过后 → 下一个节点学务筛选出角色ID=105且与当前部门一致
// 查询角色ID=105学务的所有用户 // 查询角色ID=105学务的所有用户
SysUser queryUser = new SysUser(); SysUser queryUser = new SysUser();
@@ -134,12 +139,8 @@ public class DiscListener implements ExecutionListener {
.filter(user -> currentDeptId.equals(user.getDeptId())) // 部门ID匹配 .filter(user -> currentDeptId.equals(user.getDeptId())) // 部门ID匹配
.findFirst() // 取第一个匹配的学务(若有多个,可根据排序或优先级调整) .findFirst() // 取第一个匹配的学务(若有多个,可根据排序或优先级调整)
.orElseThrow(() -> new RuntimeException("未找到部门ID=" + currentDeptId + "的学务负责人")); .orElseThrow(() -> new RuntimeException("未找到部门ID=" + currentDeptId + "的学务负责人"));
// 返回匹配的辅导员用户ID作为下一个节点负责人
return targetAcademic.getUserId(); return targetAcademic.getUserId();
case "学务审核":
// 学务通过后 → 下一个节点二级学院角色ID=106匹配学生所属学院 // 学务通过后 → 下一个节点二级学院角色ID=106匹配学生所属学院
// 查询当前流程对应的业务数据获取学生所属学院ID // 查询当前流程对应的业务数据获取学生所属学院ID
// RtEnlistmentReserve reserve = enlistmentReserveMapper.selectRtEnlistmentReserveByProcessInstanceId(processInstanceId); // RtEnlistmentReserve reserve = enlistmentReserveMapper.selectRtEnlistmentReserveByProcessInstanceId(processInstanceId);
@@ -147,6 +148,24 @@ public class DiscListener implements ExecutionListener {
// throw new RuntimeException("未查询到流程对应的业务数据processInstanceId=" + processInstanceId); // throw new RuntimeException("未查询到流程对应的业务数据processInstanceId=" + processInstanceId);
// } // }
case "二级学院审核":
// 二级学院通过后 → 下一个节点:学籍管理科
// 获取学籍管理科审核人
List<TeacherVo> shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科");
if (shenDataInfo.isEmpty()) {
throw new RuntimeException("未查询到对应的用户");
}
// 暂时选择学籍管理科第一个人作为审核人
return shenDataInfo.get(0).getUserId();
case "学籍管理":
// 查询角色ID=106二级学院的所有用户 // 查询角色ID=106二级学院的所有用户
SysUser qUser = new SysUser(); SysUser qUser = new SysUser();
qUser.setRoleId(106L); // 二级学院角色固定ID=106 qUser.setRoleId(106L); // 二级学院角色固定ID=106
@@ -165,25 +184,13 @@ public class DiscListener implements ExecutionListener {
// 返回匹配的二级学院负责人ID // 返回匹配的二级学院负责人ID
return targetCollegeLeader.getUserId(); return targetCollegeLeader.getUserId();
case "二级学院审核":
// 二级学院通过后 → 下一个节点:学籍管理科
// 获取学籍管理科审核人
List<TeacherVo> shenDataInfo = sysDisBasicMapper.getShenDataInfo("学籍管理科");
if (shenDataInfo.isEmpty()) {
throw new RuntimeException("未查询到对应的用户");
}
// 暂时选择学籍管理科第一个人作为审核人
return shenDataInfo.get(0).getUserId();
case "学籍管理":
// 学籍管理科通过后 → 下一个节点教务处主管领导假设部门ID=40 // 学籍管理科通过后 → 下一个节点教务处主管领导假设部门ID=40
// 获取学教务处主管领导审核人 // 获取学教务处主管领导审核人
case "教务处主管":
// 最后一个节点通过后 → 流程结束(无需设置负责人)
List<TeacherVo> teacherVos = sysDisBasicMapper.getShenDataInfo("教务处主管领导"); List<TeacherVo> teacherVos = sysDisBasicMapper.getShenDataInfo("教务处主管领导");
if (teacherVos.isEmpty()) { if (teacherVos.isEmpty()) {
@@ -193,13 +200,9 @@ public class DiscListener implements ExecutionListener {
// 暂时选择教务处主管领导第一个人作为审核人 // 暂时选择教务处主管领导第一个人作为审核人
return teacherVos.get(0).getUserId(); return teacherVos.get(0).getUserId();
case "教务处主管":
// 最后一个节点通过后 → 流程结束(无需设置负责人)
return null;
default: default:
throw new RuntimeException("未配置节点[" + currentNodeName + "]的下一个负责人规则"); throw new RuntimeException("未配置节点[" + currentNodeName + "]的下一个负责人规则");
} }
} }
} }

View File

@@ -283,7 +283,7 @@ public class SysDisBasicServiceImpl extends ServiceImpl<SysDisBasicMapper,SysDis
} }
// --------------- 原有流程启动逻辑(不变)--------------- // --------------- 原有流程启动逻辑(不变)---------------
AjaxResult ajaxResult = flowDefinitionService.startProcessInstanceById("flow_nrblbjev:20:1347543", variables); AjaxResult ajaxResult = flowDefinitionService.startProcessInstanceById("flow_nrblbjev:21:1517504", variables);
String code = ajaxResult.get("code").toString(); String code = ajaxResult.get("code").toString();
if (code.equals("200")) { if (code.equals("200")) {
log.info("流程启动成功 - stId: {}, applyId: {}", stId, basicId); log.info("流程启动成功 - stId: {}, applyId: {}", stId, basicId);