|
@@ -11,11 +11,14 @@ import com.dragoninfo.dcuc.duceap.enums.RequestDisposeTypeEnum;
|
|
|
import com.dragoninfo.dcuc.duceap.enums.SchemeTypeEnum;
|
|
|
import com.dragonsoft.dcuc.approve.config.ApproveConfig;
|
|
|
import com.dragonsoft.dcuc.approve.config.KafkaConfig;
|
|
|
-import com.dragonsoft.dcuc.approve.enumresources.*;
|
|
|
+import com.dragonsoft.dcuc.approve.constants.Constants;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ApproveWorkFlowOprationEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.LogReceiverEnum;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.LogTypeEnum;
|
|
|
import com.dragonsoft.dcuc.approve.mapper.ApproveCirculationMapper;
|
|
|
-import com.dragonsoft.dcuc.approve.mapper.RiskSchemeMapper;
|
|
|
import com.dragonsoft.dcuc.approve.model.*;
|
|
|
import com.dragonsoft.dcuc.approve.model.req.ApprovalInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.model.vo.LogDto;
|
|
|
import com.dragonsoft.dcuc.approve.service.*;
|
|
|
import com.dragonsoft.duceap.base.exception.ApplicationException;
|
|
|
import com.dragonsoft.duceap.commons.util.UUIDUtils;
|
|
@@ -46,9 +49,9 @@ import java.util.*;
|
|
|
*/
|
|
|
@Service
|
|
|
@Transactional
|
|
|
-public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
+public class ApproveLogHelperServiceImpl implements IApproveLogHelperService {
|
|
|
|
|
|
- private static final Logger logger = LoggerFactory.getLogger(ApproveLogHelperService.class);
|
|
|
+ private static final Logger logger = LoggerFactory.getLogger(ApproveLogHelperServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
private KafkaServer kafkaService;
|
|
@@ -72,8 +75,9 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
private IRiskLogService riskLogService;
|
|
|
@Autowired
|
|
|
private ApproveCirculationMapper approveCirculationMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
- private RiskSchemeMapper riskSchemeMapper;
|
|
|
+ private IRiskSchemeService riskSchemeService;
|
|
|
/**
|
|
|
* 日志类型字符串
|
|
|
*/
|
|
@@ -81,32 +85,35 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 操作日志/请求日志构建
|
|
|
- * @param logDto 日志Dto
|
|
|
- * @param oprationEnum 操作类型
|
|
|
+ *
|
|
|
+ * @param logDto 日志Dto
|
|
|
+ * @param oprationEnum 操作类型
|
|
|
*/
|
|
|
@Override
|
|
|
public void buildOperateLog(LogDto logDto, ApproveWorkFlowOprationEnum oprationEnum) {
|
|
|
- String flowNodeCode = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
- String flowNodeName = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
- String taskKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
- String flowKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String flowNodeCode = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
+ String flowNodeName = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
+ String taskKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
+ String flowKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String processInstanceId = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getProcessInstanceId();
|
|
|
+
|
|
|
//根据类型判断是什么日志
|
|
|
switch (oprationEnum) {
|
|
|
case COMPLETE_DISAGREE:
|
|
|
//审批操作日志
|
|
|
- buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_DISAGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_DISAGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
case COMPLETE_AGREE:
|
|
|
//审批操作日志
|
|
|
- buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
case BACK:
|
|
|
//审批操作日志
|
|
|
- buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.BACK.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
case RECALL:
|
|
|
//审批请求日志
|
|
|
- buildRequestLog(RequestDisposeTypeEnum.RECALL.getValue(), logDto, flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildRequestLog(RequestDisposeTypeEnum.RECALL.getValue(), logDto, flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -116,14 +123,16 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 构建审批请求日志对象
|
|
|
+ *
|
|
|
* @param disposeType
|
|
|
- * @param logDto 日志Dto
|
|
|
+ * @param logDto 日志Dto
|
|
|
* @param flowNodeCode
|
|
|
* @param flowNodeName
|
|
|
* @param taskKey
|
|
|
* @param flowKey
|
|
|
*/
|
|
|
- private RequestLog buildRequestLog(String disposeType, LogDto logDto, String flowNodeCode, String flowNodeName, String taskKey, String flowKey) {
|
|
|
+ private RequestLog buildRequestLog(String disposeType, LogDto logDto, String flowNodeCode, String flowNodeName,
|
|
|
+ String taskKey, String flowKey, String processInstanceId) {
|
|
|
RequestLog requestLog = new RequestLog();
|
|
|
requestLog.setIdcard(logDto.getApprovalInfo().getApplicantIdcard());
|
|
|
requestLog.setOrgName(logDto.getApprovalInfo().getApplicantOrgName());
|
|
@@ -142,23 +151,26 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
requestLog.setFlowNodeCode(flowNodeCode);
|
|
|
requestLog.setFlowNodeName(flowNodeName);
|
|
|
requestLog.setApproveRecordId(logDto.getApprovalInfo().getId());
|
|
|
+ requestLog.setProcessInstanceId(processInstanceId);
|
|
|
//发送审批请求日志到消息中心
|
|
|
logger.info("=====发送批申请请求日志-发起消息,消息体为:{}====", JSON.toJSONString(requestLog));
|
|
|
- sendInfo(JSON.toJSONString(requestLog), "审批请求日志", LogTypeEnum.REQUEST_LOG.getValue(), taskKey, flowKey);
|
|
|
+ sendInfo(JSON.toJSONString(requestLog), "审批请求日志", LogTypeEnum.REQUEST_LOG.getValue(), taskKey, flowKey, processInstanceId);
|
|
|
return requestLog;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 构建审批操作日志对象并发送
|
|
|
- * @param dto 日志Dto
|
|
|
- * @param disposeType 类型
|
|
|
- * @param flowNodeCode 节点Code
|
|
|
- * @param flowNodeName 节点名称
|
|
|
+ *
|
|
|
+ * @param dto 日志Dto
|
|
|
+ * @param disposeType 类型
|
|
|
+ * @param flowNodeCode 节点Code
|
|
|
+ * @param flowNodeName 节点名称
|
|
|
* @param taskKey
|
|
|
* @param flowKey
|
|
|
* @return
|
|
|
*/
|
|
|
- private OperateLog buildOperateLogAndSend(LogDto dto, String disposeType, String flowNodeCode, String flowNodeName, String taskKey, String flowKey) {
|
|
|
+ private OperateLog buildOperateLogAndSend(LogDto dto, String disposeType, String flowNodeCode, String flowNodeName,
|
|
|
+ String taskKey, String flowKey, String processInstanceId) {
|
|
|
OperateLog operateLog = new OperateLog();
|
|
|
operateLog.setIdcard(dto.getApprovalInfo().getApplicantIdcard());
|
|
|
operateLog.setOrgName(dto.getApprovalInfo().getApplicantOrgName());
|
|
@@ -177,15 +189,18 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
operateLog.setFlowNodeCode(flowNodeCode);
|
|
|
operateLog.setFlowNodeName(flowNodeName);
|
|
|
operateLog.setApproveRecordId(dto.getApprovalInfo().getId());
|
|
|
+ operateLog.setProcessInstanceId(processInstanceId);
|
|
|
//发送审批操作日志消息
|
|
|
logger.info("=====发送审批操作日志消息,消息体为:{}====", JSON.toJSONString(operateLog));
|
|
|
- sendInfo(JSON.toJSONString(operateLog), "审批操作日志", LogTypeEnum.OPERATE_LOG.getValue(), taskKey, flowKey);
|
|
|
+ sendInfo(JSON.toJSONString(operateLog), "审批操作日志", LogTypeEnum.OPERATE_LOG.getValue(),
|
|
|
+ taskKey, flowKey, processInstanceId);
|
|
|
return operateLog;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 构建审批流程管理日志-删除
|
|
|
- * @param logDto 日志Dto
|
|
|
+ *
|
|
|
+ * @param logDto 日志Dto
|
|
|
*/
|
|
|
@Override
|
|
|
public void buildFlowManageLogDelete(LogDto logDto) {
|
|
@@ -196,6 +211,7 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 处理接收到的日志消息
|
|
|
+ *
|
|
|
* @param map
|
|
|
* @param messageInfoDTO
|
|
|
*/
|
|
@@ -204,15 +220,16 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
String logType = map.get(logTypeStr);
|
|
|
String taskKey = map.get("taskKey");
|
|
|
String flowKey = map.get("flowKey");
|
|
|
- switch (EnumUtils.enumOf(LogTypeEnum.class, logType)){
|
|
|
+ String processInstanceId = map.get("processInstanceId");
|
|
|
+ switch (EnumUtils.enumOf(LogTypeEnum.class, logType)) {
|
|
|
case MANAGE_LOG:
|
|
|
- saveManageLog(messageInfoDTO.getContent());
|
|
|
+ saveManageLog(messageInfoDTO.getContent(), processInstanceId);
|
|
|
break;
|
|
|
case REQUEST_LOG:
|
|
|
- saveRequestLog(messageInfoDTO.getContent(), taskKey, flowKey);
|
|
|
+ saveRequestLog(messageInfoDTO.getContent(), taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
case OPERATE_LOG:
|
|
|
- saveOperateLog(messageInfoDTO.getContent(), taskKey, flowKey);
|
|
|
+ saveOperateLog(messageInfoDTO.getContent(), taskKey, flowKey, processInstanceId);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -222,83 +239,97 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 构建风险日志
|
|
|
- * @param taskKey 任务定义key
|
|
|
- * @param flowKey 流程定义key
|
|
|
- * @param applyIdcard 申请人身份证号
|
|
|
- * @param operateIdcard 操作人身份证号
|
|
|
+ *
|
|
|
+ * @param logTypeEnum 日志类型
|
|
|
+ * @param taskKey 任务定义key
|
|
|
+ * @param flowKey 流程定义key
|
|
|
+ * @param applyIdcard 申请人身份证号
|
|
|
+ * @param operateIdcard 操作人身份证号
|
|
|
* @param approveRecordId 表单id
|
|
|
- * @param businessCode 流程标识码
|
|
|
- * @param riskIp 风险ip
|
|
|
- * @param title 标题
|
|
|
+ * @param businessCode 流程标识码
|
|
|
+ * @param riskIp 风险ip
|
|
|
+ * @param title 标题
|
|
|
* @param createUserName 操作者姓名
|
|
|
- * @param orgName 操作者机构名称
|
|
|
- * @param orgCode 操作者机构code
|
|
|
- * @param createTime 创建时间
|
|
|
+ * @param orgName 操作者机构名称
|
|
|
+ * @param orgCode 操作者机构code
|
|
|
+ * @param createTime 创建时间
|
|
|
+ * @param processInstanceId 流程实例ID
|
|
|
*/
|
|
|
- public void buildRiskLog(String taskKey, String flowKey, String applyIdcard,
|
|
|
+ public void buildRiskLog(LogTypeEnum logTypeEnum, String taskKey, String flowKey, String applyIdcard,
|
|
|
String operateIdcard, String approveRecordId,
|
|
|
String businessCode, String riskIp,
|
|
|
String title, String createUserName,
|
|
|
String orgName, String orgCode,
|
|
|
- Date createTime){
|
|
|
+ Date createTime, String processInstanceId) {
|
|
|
|
|
|
- try{
|
|
|
+ try {
|
|
|
//开始节点直接返回
|
|
|
- if (taskKey.equals("start")){
|
|
|
+ if (taskKey.equals(Constants.START)) {
|
|
|
return;
|
|
|
}
|
|
|
//流程出口信息
|
|
|
OutgoingVo outgoingVo = workflowClientFactory.getWorkflowTaskClient().queryStartOutgoing(flowKey);
|
|
|
String riskContent = "";
|
|
|
- if (outgoingVo != null){
|
|
|
- Boolean needSaveRiskLog = true;
|
|
|
+ if (outgoingVo != null) {
|
|
|
+ boolean needSaveRiskLog = true;
|
|
|
//跳过第一个节点
|
|
|
- for (TaskDefinitionVo taskDefinitionVo: outgoingVo.getTaskDefinitionVoList()){
|
|
|
- if (taskKey.equals(taskDefinitionVo.getTaskDefinitionKey())){
|
|
|
+ for (TaskDefinitionVo taskDefinitionVo : outgoingVo.getTaskDefinitionVoList()) {
|
|
|
+ if (taskKey.equals(taskDefinitionVo.getTaskDefinitionKey())) {
|
|
|
needSaveRiskLog = false;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (needSaveRiskLog){
|
|
|
- if (applyIdcard.equals(operateIdcard)){
|
|
|
- riskContent = "审批流程中,提交人与审批人都是:" + createUserName + "(" + operateIdcard + ")。";
|
|
|
- //除第一个节点外,审请人和处理人同为一个人,产生《提交人与审批人重复风险》
|
|
|
- saveRiskLog(businessCode, riskIp, riskContent,
|
|
|
- title, operateIdcard, createUserName,
|
|
|
- applyIdcard, orgName, orgCode,
|
|
|
- createTime, SchemeTypeEnum.COMMIT_APPROVE_REPETITION_RISK.getValue(), approveRecordId);
|
|
|
- }
|
|
|
+ if (needSaveRiskLog) {
|
|
|
+ // 提交人、审批人重复风险判断,跳过第一个节点,只有操作日志才分析提交、审批人风险
|
|
|
+ if (logTypeEnum.equals(LogTypeEnum.OPERATE_LOG)) {
|
|
|
|
|
|
+ if (applyIdcard.equals(operateIdcard)) {
|
|
|
+
|
|
|
+ RiskScheme riskScheme = riskSchemeService.selectEnableSchemeByType(SchemeTypeEnum.COMMIT_APPROVE_REPETITION_RISK);
|
|
|
+ if (riskScheme != null) {
|
|
|
+ riskContent = "审批流程中,提交人与审批人都是:" + createUserName + "(" + operateIdcard + ")。";
|
|
|
+ //除第一个节点外,审请人和处理人同为一个人,产生《提交人与审批人重复风险》
|
|
|
+ saveRiskLog(businessCode, riskIp, riskContent,
|
|
|
+ title, operateIdcard, createUserName,
|
|
|
+ applyIdcard, orgName, orgCode,
|
|
|
+ createTime, riskScheme.getSchemeType(),
|
|
|
+ approveRecordId, processInstanceId);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
LambdaQueryWrapper<RiskScheme> riskSchemeWhere = new LambdaQueryWrapper<>();
|
|
|
riskSchemeWhere.eq(RiskScheme::getSchemeType, SchemeTypeEnum.SINGLE_APPROVE_RISK.getValue());
|
|
|
//获取单人连续审批风险方案详情
|
|
|
- List<RiskScheme> riskSchemes = riskSchemeMapper.selectList(riskSchemeWhere);
|
|
|
- if (CollectionUtils.isNotEmpty(riskSchemes)){
|
|
|
- RiskScheme riskScheme = riskSchemes.get(0);
|
|
|
- int continuousApproveNum = Integer.valueOf(StringUtils.isEmpty(riskScheme.getContinuousApproveNum()) ? "0" : riskScheme.getContinuousApproveNum());
|
|
|
+ RiskScheme riskScheme = riskSchemeService.selectEnableSchemeByType(SchemeTypeEnum.SINGLE_APPROVE_RISK);
|
|
|
+ if (riskScheme != null) {
|
|
|
+
|
|
|
+ int continuousApproveNum = Integer.parseInt(StringUtils.isEmpty(riskScheme.getContinuousApproveNum())
|
|
|
+ ? "0" : riskScheme.getContinuousApproveNum());
|
|
|
//获取审批记录
|
|
|
LambdaQueryWrapper<ApproveCirculationInfo> where = new LambdaQueryWrapper<>();
|
|
|
where.eq(ApproveCirculationInfo::getApproveRecordId, approveRecordId);
|
|
|
where.orderByDesc(ApproveCirculationInfo::getCreateTime);
|
|
|
- //查询审批记录
|
|
|
+ //查询该流程单的所有的审批记录
|
|
|
List<ApproveCirculationInfo> list = approveCirculationMapper.selectList(where);
|
|
|
Set<String> idSet = new HashSet<>();
|
|
|
|
|
|
- if (CollectionUtils.isNotEmpty(list) && list.size() >= continuousApproveNum){
|
|
|
+ if (CollectionUtils.isNotEmpty(list) && list.size() >= continuousApproveNum) {
|
|
|
for (int i = 0; i < continuousApproveNum; i++) {
|
|
|
ApproveCirculationInfo approveCirculationInfo = list.get(i);
|
|
|
+ // 添加审批人用户ID Set去重
|
|
|
idSet.add(approveCirculationInfo.getOperateUserId());
|
|
|
}
|
|
|
-
|
|
|
- if (idSet.size() == 1){
|
|
|
- riskContent = "审批流程流转过程中,连续" + continuousApproveNum + "个节点审批人相同,审批人都是:" + createUserName +"(" + operateIdcard +")。";
|
|
|
+ if (idSet.size() == 1) {
|
|
|
+ riskContent = "审批流程流转过程中,连续" + continuousApproveNum + "个节点审批人相同,审批人都是:" + createUserName + "(" + operateIdcard + ")。";
|
|
|
//产生《单人连续审批风险》
|
|
|
saveRiskLog(businessCode, riskIp, riskContent,
|
|
|
title, operateIdcard, createUserName,
|
|
|
applyIdcard, orgName, orgCode,
|
|
|
- createTime, SchemeTypeEnum.SINGLE_APPROVE_RISK.getValue(), approveRecordId);
|
|
|
+ createTime, riskScheme.getSchemeType(),
|
|
|
+ approveRecordId, processInstanceId);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -308,7 +339,7 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
- }catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
logger.info("====================构建风险日志异常【{}】==============", e.getMessage());
|
|
|
throw new ApplicationException(e.getMessage());
|
|
|
}
|
|
@@ -317,23 +348,26 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 保存风险日志
|
|
|
- * @param businessCode 流程标识码
|
|
|
- * @param riskIp 风险ip
|
|
|
- * @param riskContent 风险内容
|
|
|
- * @param title 标题
|
|
|
- * @param createUser 操作者身份证
|
|
|
+ *
|
|
|
+ * @param businessCode 流程标识码
|
|
|
+ * @param riskIp 风险ip
|
|
|
+ * @param riskContent 风险内容
|
|
|
+ * @param title 标题
|
|
|
+ * @param createUser 操作者身份证
|
|
|
* @param createUserName 操作姓名
|
|
|
- * @param idcard 申请者身份证
|
|
|
- * @param orgName 机构名称
|
|
|
- * @param orgCode 机构code
|
|
|
- * @param createTime 创建时间
|
|
|
- * @param riskType 风险类型
|
|
|
- * @param approveRecordId 申请单id
|
|
|
+ * @param idcard 申请者身份证
|
|
|
+ * @param orgName 机构名称
|
|
|
+ * @param orgCode 机构code
|
|
|
+ * @param createTime 创建时间
|
|
|
+ * @param riskType 风险类型
|
|
|
+ * @param approveRecordId 申请单id
|
|
|
+ * @param processInstanceId 实例ID
|
|
|
*/
|
|
|
private void saveRiskLog(String businessCode, String riskIp, String riskContent,
|
|
|
String title, String createUser, String createUserName,
|
|
|
String idcard, String orgName, String orgCode,
|
|
|
- Date createTime, String riskType, String approveRecordId) {
|
|
|
+ Date createTime, String riskType, String approveRecordId,
|
|
|
+ String processInstanceId) {
|
|
|
RiskLog riskLog = new RiskLog();
|
|
|
riskLog.setLogSender(approveConfig.getAppCode());
|
|
|
riskLog.setLogReceiver(LogReceiverEnum.AUDIT_SERVICE.getValue() + "," + LogReceiverEnum.SECURITY_POLICY_SERVICE.getValue());
|
|
@@ -350,71 +384,83 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
riskLog.setOrgName(orgName);
|
|
|
riskLog.setOrgCode(orgCode);
|
|
|
riskLog.setCreateTime(createTime);
|
|
|
+ riskLog.setProcessInstanceId(processInstanceId);
|
|
|
|
|
|
riskLogService.saveRiskLog(riskLog);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 操作日志保存
|
|
|
+ *
|
|
|
* @param content
|
|
|
*/
|
|
|
- private void saveOperateLog(String content, String taskKey, String flowKey) {
|
|
|
+ private void saveOperateLog(String content, String taskKey, String flowKey,
|
|
|
+ String processInstanceId) {
|
|
|
OperateLog entity = JSONObject.parseObject(content, OperateLog.class);
|
|
|
+ entity.setProcessInstanceId(processInstanceId);
|
|
|
operateLogService.saveOperateLog(entity);
|
|
|
|
|
|
- buildRiskLog(taskKey, flowKey, entity.getIdcard(),
|
|
|
+ buildRiskLog(LogTypeEnum.OPERATE_LOG, taskKey, flowKey, entity.getIdcard(),
|
|
|
entity.getCreateUser(), entity.getApproveRecordId(),
|
|
|
entity.getBusinessCode(), entity.getCreateIp(),
|
|
|
- entity.getTitle(), entity.getCreateUserName(),
|
|
|
+ entity.getTitle(), entity.getCreateUserName(),
|
|
|
entity.getOrgName(), entity.getOrgCode(),
|
|
|
- entity.getCreateTime());
|
|
|
+ entity.getCreateTime(), processInstanceId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 请求日志保存
|
|
|
+ *
|
|
|
* @param content
|
|
|
*/
|
|
|
- private void saveRequestLog(String content, String taskKey, String flowKey) {
|
|
|
+ private void saveRequestLog(String content, String taskKey, String flowKey, String processInstanceId) {
|
|
|
RequestLog entity = JSONObject.parseObject(content, RequestLog.class);
|
|
|
+ entity.setProcessInstanceId(processInstanceId);
|
|
|
requestLogService.saveRequestLog(entity);
|
|
|
- buildRiskLog(taskKey, flowKey, entity.getIdcard(),
|
|
|
+
|
|
|
+ buildRiskLog(LogTypeEnum.REQUEST_LOG, taskKey, flowKey, entity.getIdcard(),
|
|
|
entity.getCreateUser(), entity.getApproveRecordId(),
|
|
|
entity.getBusinessCode(), entity.getCreateIp(),
|
|
|
- entity.getTitle(), entity.getCreateUserName(),
|
|
|
+ entity.getTitle(), entity.getCreateUserName(),
|
|
|
entity.getOrgName(), entity.getOrgCode(),
|
|
|
- entity.getCreateTime());
|
|
|
+ entity.getCreateTime(), processInstanceId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 流程管理日志保存
|
|
|
+ *
|
|
|
* @param content
|
|
|
*/
|
|
|
- private void saveManageLog(String content) {
|
|
|
+ private void saveManageLog(String content, String processInstanceId) {
|
|
|
FlowManageLog entity = JSONObject.parseObject(content, FlowManageLog.class);
|
|
|
+ entity.setProcessInstanceId(processInstanceId);
|
|
|
flowManageLogService.saveFlowManageLog(entity);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 构建审批流程管理日志-新建/修改
|
|
|
- * @param logDto 日志Dto
|
|
|
- * @param operateType 类型(保存/保存并提交)
|
|
|
+ *
|
|
|
+ * @param logDto 日志Dto
|
|
|
+ * @param operateType 类型(保存/保存并提交)
|
|
|
*/
|
|
|
@Override
|
|
|
public void buildFlowManageLogInsert(LogDto logDto, String operateType, String disposeType) {
|
|
|
buildFlowManageLogAndSend(logDto, disposeType);
|
|
|
|
|
|
if (ApprovalInfoDTO.applyAndCommitStr.equals(operateType)) {
|
|
|
- String flowNodeCode = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
- String flowNodeName = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
- String taskKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
- String flowKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String flowNodeCode = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
+ String flowNodeName = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
+ String taskKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
+ String flowKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String processInstanceId = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getProcessInstanceId();
|
|
|
+
|
|
|
|
|
|
//如果是保存并提交,则需要构建(申请请求日志-发起)对象
|
|
|
- buildRequestLog(RequestDisposeTypeEnum.START.getValue(), logDto, "start", "开始", "start", flowKey);
|
|
|
+ buildRequestLog(RequestDisposeTypeEnum.START.getValue(), logDto, "start", "开始", "start", flowKey, processInstanceId);
|
|
|
|
|
|
//如果是保存并提交,则需要构建(申请操作日志-通过)对象
|
|
|
- buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
}
|
|
|
|
|
|
//TODO 目前权限未提供红白名单列表,无法做命中红白名单风险
|
|
@@ -423,18 +469,22 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 构建审批流程管理日志-修改
|
|
|
- * @param logDto 日志Dto
|
|
|
+ *
|
|
|
+ * @param logDto 日志Dto
|
|
|
* @param needSaveOperateLog
|
|
|
*/
|
|
|
+ @Override
|
|
|
public void buildFlowManageLogUpdate(LogDto logDto, Boolean needSaveOperateLog) {
|
|
|
buildFlowManageLogAndSend(logDto, ManageDisposeTypeEnum.UPDATE.getValue());
|
|
|
if (needSaveOperateLog) {
|
|
|
- String flowNodeCode = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
- String flowNodeName = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
- String taskKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
- String flowKey = logDto.getProcessInstanceVO() == null ? "": logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String flowNodeCode = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskCode();
|
|
|
+ String flowNodeName = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getName();
|
|
|
+ String taskKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getTaskHistoryDetailVo().getTaskDefinitionKey();
|
|
|
+ String flowKey = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getPocessDefinitionId();
|
|
|
+ String processInstanceId = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getProcessInstanceId();
|
|
|
+
|
|
|
//实例id不为空,说明为流程的的修改并提交,所以需要构建审批操作日志(通过)
|
|
|
- buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey);
|
|
|
+ buildOperateLogAndSend(logDto, OperateDisposeTypeEnum.COMPLETE_AGREE.getValue(), flowNodeCode, flowNodeName, taskKey, flowKey, processInstanceId);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -443,11 +493,15 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 构建审批流程管理日志
|
|
|
- * @param logDto 日志Dto
|
|
|
- * @param disposeType 审批流程管理日志类型(DisposeTypeEnum)
|
|
|
+ *
|
|
|
+ * @param logDto 日志Dto
|
|
|
+ * @param disposeType 审批流程管理日志类型(DisposeTypeEnum)
|
|
|
* @return
|
|
|
*/
|
|
|
private FlowManageLog buildFlowManageLogAndSend(LogDto logDto, String disposeType) {
|
|
|
+
|
|
|
+ String processInstanceId = logDto.getProcessInstanceVO() == null ? "" : logDto.getProcessInstanceVO().getProcessInstanceId();
|
|
|
+
|
|
|
FlowManageLog flowManageLog = new FlowManageLog();
|
|
|
BeanUtils.copyProperties(logDto, flowManageLog);
|
|
|
flowManageLog.setIdcard(logDto.getApprovalInfo().getApplicantIdcard());
|
|
@@ -459,10 +513,12 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
//操作内容策划不知道要存什么,暂时放空
|
|
|
// flowManageLog.setOperateContent(JSON.toJSONString(logDto.getApprovalInfo()));
|
|
|
flowManageLog.setApproveRecordId(logDto.getApprovalInfo().getId());
|
|
|
+ flowManageLog.setProcessInstanceId(processInstanceId);
|
|
|
//发送审批流程管理日志到消息中心
|
|
|
logger.info("=====发送审批流程管理日志消息,消息体为:{}====", JSON.toJSONString(flowManageLog));
|
|
|
//审批流程管理日志类型不会涉及到审批风险,故taskKey/flowKey可以为空
|
|
|
- sendInfo(JSON.toJSONString(flowManageLog), "审批流程管理日志", LogTypeEnum.MANAGE_LOG.getValue(), "", "");
|
|
|
+ sendInfo(JSON.toJSONString(flowManageLog), "审批流程管理日志", LogTypeEnum.MANAGE_LOG.getValue(),
|
|
|
+ "", "", processInstanceId);
|
|
|
return flowManageLog;
|
|
|
|
|
|
}
|
|
@@ -470,27 +526,30 @@ public class ApproveLogHelperService implements IApproveLogHelperService {
|
|
|
|
|
|
/**
|
|
|
* 发送日志消息
|
|
|
- * @param content 消息体对象json字符串
|
|
|
- * @param title 标题
|
|
|
- * @param logType 日志类型
|
|
|
- * @param taskKey 任务定义id
|
|
|
- * @param flowKey 流程定义id
|
|
|
+ *
|
|
|
+ * @param content 消息体对象json字符串
|
|
|
+ * @param title 标题
|
|
|
+ * @param logType 日志类型
|
|
|
+ * @param taskKey 任务定义id
|
|
|
+ * @param flowKey 流程定义id
|
|
|
+ * @param processInstanceId 实例ID
|
|
|
*/
|
|
|
- public void sendInfo(String content, String title, String logType, String taskKey, String flowKey){
|
|
|
+ public void sendInfo(String content, String title, String logType, String taskKey, String flowKey, String processInstanceId) {
|
|
|
RequestVo requestVo = new RequestVo();
|
|
|
MessageInfoVo messageInfoVo = new MessageInfoVo();
|
|
|
messageInfoVo.setTitle(title);
|
|
|
messageInfoVo.setCreateTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
|
|
|
messageInfoVo.setContent(content);
|
|
|
messageInfoVo.setUserSystem("审批系统");
|
|
|
- messageInfoVo.setUserSystemCode(ApproveService.businessSystem);
|
|
|
+ messageInfoVo.setUserSystemCode(ApproveServiceImpl.businessSystem);
|
|
|
messageInfoVo.setUserName("审批系统");
|
|
|
messageInfoVo.setMessageId(UUIDUtils.getUUID());
|
|
|
- Map map = new HashMap();
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
map.put(logTypeStr, logType);
|
|
|
map.put("taskKey", taskKey);
|
|
|
map.put("flowKey", flowKey);
|
|
|
- List<Map<String,String>> infoSet = new ArrayList<>();
|
|
|
+ map.put("processInstanceId", processInstanceId);
|
|
|
+ List<Map<String, String>> infoSet = new ArrayList<>();
|
|
|
infoSet.add(map);
|
|
|
messageInfoVo.setInfoSet(infoSet);
|
|
|
|