yxk-20260622-bug修复:写入审批历史的部门为当前用户登录所在部门

This commit is contained in:
ye1023
2026-06-22 15:00:39 +08:00
parent 33df2e6dc4
commit bb1f5978b7
@@ -117,13 +117,14 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
String fileList = oConvertUtils.getString(map.get("fileList"));
saveBpmFiles(bpmlog.getId(), fileList);
ApprovalDeptInfo approvalDept = resolveCurrentApprovalDept(user, username);
//写入新的审批意见表
saveTaskApprovalOpinion(bpmlog, processInstance, RECORD_TYPE_PROCESS,
resolveHandleActionType(map, rejectDescription), resolveActionResult(reason, "同意"),
task != null ? task.getCreateTime() : null,
user != null ? user.getOrgId() : null,
resolveDeptName(username),
user != null ? user.getOrgCode() : null);
approvalDept.id,
approvalDept.name,
approvalDept.code);
}
@Override
@@ -156,12 +157,13 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
}
this.baseMapper.insert(taskLog);
ApprovalDeptInfo approvalDept = resolveCurrentApprovalDept(user, username);
saveTaskApprovalOpinion(taskLog, processInstance, RECORD_TYPE_SYSTEM,
resolveSystemActionType(comment), resolveActionResult(comment, "系统记录"),
task != null ? task.getCreateTime() : null,
user != null ? user.getOrgId() : null,
resolveDeptName(username),
user != null ? user.getOrgCode() : null);
approvalDept.id,
approvalDept.name,
approvalDept.code);
}
/**
@@ -194,11 +196,12 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
bpmlog.setTaskName(task.getName());
this.baseMapper.insert(bpmlog);
ApprovalDeptInfo approvalDept = resolveCurrentApprovalDept(user, username);
saveTaskApprovalOpinion(bpmlog, processInstance, RECORD_TYPE_PROCESS, ACTION_ADD_SIGN, resolveActionResult(reason, "加签"),
task != null ? task.getCreateTime() : null,
user != null ? user.getOrgId() : null,
resolveDeptName(username),
user != null ? user.getOrgCode() : null);
approvalDept.id,
approvalDept.name,
approvalDept.code);
}
@Override
@@ -225,12 +228,13 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
String username = bpmLog.getOpUserId();
LoginUser user = oConvertUtils.isNotEmpty(username) ? sysBaseAPI.getUserByName(username) : null;
ApprovalDeptInfo approvalDept = resolveCurrentApprovalDept(user, username);
saveTaskApprovalOpinion(bpmLog, processInstance, RECORD_TYPE_SYSTEM,
resolveSystemActionType(bpmLog.getRemarks()), resolveActionResult(bpmLog.getRemarks(), ACTION_SYSTEM),
startTime,
user != null ? user.getOrgId() : null,
oConvertUtils.isNotEmpty(username) ? resolveDeptName(username) : null,
user != null ? user.getOrgCode() : null);
approvalDept.id,
approvalDept.name,
approvalDept.code);
} catch (Exception e) {
log.error("补写系统审批历史失败,已保留原 ext_act_bpm_log。procInstId={}, taskId={}",
bpmLog.getProcInstId(), bpmLog.getTaskId(), e);
@@ -273,6 +277,50 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
}
}
/**
* 新审批意见表记录办理人当前登录部门,避免多部门用户按部门列表第一个写入导致部门不一致。
*/
private ApprovalDeptInfo resolveCurrentApprovalDept(LoginUser user, String username) {
String deptId = user != null ? user.getOrgId() : null;
String deptCode = user != null ? user.getOrgCode() : null;
String deptName = null;
if (oConvertUtils.isNotEmpty(deptCode)) {
try {
List<JSONObject> departs = sysBaseAPI.queryDepartsByOrgcodes(deptCode);
if (departs != null && !departs.isEmpty()) {
JSONObject depart = departs.get(0);
if (oConvertUtils.isEmpty(deptId)) {
deptId = depart.getString("id");
}
deptName = depart.getString("departName");
if (oConvertUtils.isEmpty(deptName)) {
deptName = depart.getString("depart_name");
}
}
} catch (Exception e) {
log.debug("获取当前登录部门失败, username={}, orgCode={}", username, deptCode, e);
}
}
if (oConvertUtils.isEmpty(deptName) && oConvertUtils.isNotEmpty(username)) {
deptName = resolveDeptName(username);
}
return new ApprovalDeptInfo(deptId, deptName, deptCode);
}
private static class ApprovalDeptInfo {
private final String id;
private final String name;
private final String code;
private ApprovalDeptInfo(String id, String name, String code) {
this.id = id;
this.name = name;
this.code = code;
}
}
private String resolveDeptName(String username) {
try {
List<String> names = sysBaseAPI.getDepartNamesByUsername(username);