yxk-20260610-审批历史表写入功能优化

修复督办流程首节点自动完成时只写入旧日志、不写入审批历史新表的问题。
This commit is contained in:
ye1023
2026-06-10 11:06:17 +08:00
parent 551c3bc29b
commit cb77619d7c
3 changed files with 40 additions and 0 deletions
@@ -99,6 +99,8 @@ public class TaskCreatedAutoSubmitListener implements TaskListener {
bpmlog.setTaskId(delegateTask.getId()); bpmlog.setTaskId(delegateTask.getId());
bpmlog.setTaskName(delegateTask.getName()); bpmlog.setTaskName(delegateTask.getName());
extActBpmLogService.save(bpmlog); extActBpmLogService.save(bpmlog);
// 首节点自动完成原本只写旧日志,这里同步补写新审批历史表用于页面展示。
extActBpmLogService.saveSystemApprovalOpinion(bpmlog, delegateTask.getCreateTime());
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
} }
@@ -5,6 +5,7 @@ import org.jeecg.modules.bpm.dto.CommentVo;
import org.jeecg.modules.extbpm.process.entity.ExtActBpmLog; import org.jeecg.modules.extbpm.process.entity.ExtActBpmLog;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -49,6 +50,14 @@ public interface IExtActBpmLogService extends IService<ExtActBpmLog> {
*/ */
void saveBpmLog(String username, String reason, Task task, String processInstanceId, String rejectDescription); void saveBpmLog(String username, String reason, Task task, String processInstanceId, String rejectDescription);
/**
* 将已写入旧审批日志的系统记录同步写入新审批历史表。
*
* @param bpmLog 旧审批日志
* @param startTime 任务创建时间
*/
void saveSystemApprovalOpinion(ExtActBpmLog bpmLog, Date startTime);
/** /**
* 通过流程实例id获取审批意见列表 * 通过流程实例id获取审批意见列表
@@ -208,6 +208,35 @@ public class ExtActBpmLogServiceImpl extends ServiceImpl<ExtActBpmLogMapper, Ext
return this.baseMapper.selectList(queryWrapper); return this.baseMapper.selectList(queryWrapper);
} }
/**
* 首节点自动完成等系统记录先写旧日志,再通过这里补写新审批历史表。
*/
@Override
public void saveSystemApprovalOpinion(ExtActBpmLog bpmLog, Date startTime) {
if (bpmLog == null) {
return;
}
try {
ProcessInstance processInstance = null;
if (oConvertUtils.isNotEmpty(bpmLog.getProcInstId())) {
processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(bpmLog.getProcInstId()).singleResult();
}
String username = bpmLog.getOpUserId();
LoginUser user = oConvertUtils.isNotEmpty(username) ? sysBaseAPI.getUserByName(username) : null;
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);
} catch (Exception e) {
log.error("补写系统审批历史失败,已保留原 ext_act_bpm_log。procInstId={}, taskId={}",
bpmLog.getProcInstId(), bpmLog.getTaskId(), e);
}
}
/** /**
* 以旧表写入结果为准,新审批意见表只做尽力双写,失败不能影响办理主流程。 * 以旧表写入结果为准,新审批意见表只做尽力双写,失败不能影响办理主流程。
*/ */