Browse Source

2026-06-01

增加“删除流程代办”接口的日志记录
master
fengyuan_yang 4 months ago
parent
commit
115ed2046d
  1. 33
      src/main/java/com/spring/modules/change/entity/OaDeleteUserRequestInfoLogEntity.java
  2. 2
      src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java
  3. 205
      src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java
  4. 20
      src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java
  5. 40
      src/main/java/com/spring/modules/sampleManagement/service/Impl/TechnicalSpecificationServiceImpl.java
  6. 47
      src/main/resources/mapper/change/ChangeManagementMapper.xml

33
src/main/java/com/spring/modules/change/entity/OaDeleteUserRequestInfoLogEntity.java

@ -0,0 +1,33 @@
package com.spring.modules.change.entity;
import lombok.Data;
import java.io.Serializable;
/**
* OA删除待办接口调用日志
*/
@Data
public class OaDeleteUserRequestInfoLogEntity implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String site;
private String documentNo;
private String documentType;
private String workflowId;
private String requestId;
private String flowId;
private String oaUserId;
private String syscode;
private String interfaceUrl;
private String callMethod;
private String callScene;
private String requestJson;
private String responseJson;
private String responseCode;
private String responseMsg;
private String successFlag;
private String errorMsg;
private String createBy;
}

2
src/main/java/com/spring/modules/change/mapper/ChangeManagementMapper.java

@ -241,4 +241,6 @@ public interface ChangeManagementMapper extends BaseMapper<ChangeRequestEntity>{
Integer countApproverMatch(@Param("site") String site, @Param("docNo") String docNo,
@Param("userName") String userName);
void saveDeleteUserRequestInfoLog(OaDeleteUserRequestInfoLogEntity data);
}

205
src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java

@ -1208,14 +1208,19 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeManagementMapper.updateChangeStatus2(paramData);
// 删除异构系统指定人员待办流程
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getWorkflowId() + paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"issueFunction",
"archive",
paramData.getUserName()
);
}
// 直接归档不再继续后续流程
return;
@ -1503,8 +1508,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
*/
@Transactional
public void agreeFunction (ParamData paramData, String type) {
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
// 获取流程流转信息
RequestOperatorInfoParam requestOperatorInfoParam = new RequestOperatorInfoParam();
requestOperatorInfoParam.setUserId(paramData.getUserId());
@ -1548,9 +1551,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
List<ProcessFormVo> pfs = changeManagementMapper.getProcessFormByIsRemark(paramData.getSite(), paramData.getBu(), paramData.getDocNo(), "0");
// 2025-05-12 使用 process_form 根据 site documentNo isRemark = 0 来获取人员 可能有多个 循环调用
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getWorkflowId() + paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
// 将记录表中 isRemark 为0的修改为1
@ -1613,8 +1613,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 2025-05-13 删除异构系统指定人员待办流程异常信息
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"agreeFunction",
"finish",
paramData.getUserName()
);
}
// 如果是ECN则执行升版操作且节点勾选了特殊管控 -- 2025-10-28 特殊权限改到存储过程判断 -- 2025-12-05 存储过程改为修改stepId以后再升版 -- 2026-02-26 最后一个节点删除代办后判断执行
@ -1623,8 +1632,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeRequestEntity.setSite(paramData.getSite());
changeRequestEntity.setChangeNo(paramData.getDocNo());
List<ChangeRequestDetailEntity> codelist = changeManagementMapper.requestDetailSearch(changeRequestEntity);
DeleteUserRequestInfoParam deleteUserRequestInfoParam2 = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam2.setSyscode("PLM");
for (ChangeRequestDetailEntity detail : codelist) {
List<Object> params = new ArrayList<>();
List<Map<String, Object>> resultList;
@ -1676,9 +1683,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
String[] oaUsers = oaUserStr.split(";");
for (String oaUser : oaUsers) {
if (oaUser != null && !oaUser.trim().isEmpty()) {
deleteUserRequestInfoParam2.setRequestId(workflowId);
deleteUserRequestInfoParam2.setUserId(oaUser);
HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam2);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
workflowId,
"",
oaUser,
"agreeFunction",
"finish-ecn-procedure",
paramData.getUserName()
);
}
}
}
@ -1701,8 +1716,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
if (isRemarks.get(0).get("nodeid").toString().equals(newNodeId) && !pfs.isEmpty()) {
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"agreeFunction",
"before-resend",
paramData.getUserName()
);
}
// 发送代办
@ -1807,8 +1831,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"agreeFunction",
"before-send",
paramData.getUserName()
);
}
// 如果是ECN则执行升版操作且节点勾选了特殊管控 -- 2025-10-28 特殊权限改到存储过程判断 -- 2025-12-05 存储过程改为修改stepId以后再升版 -- 2026-02-26 存储过程改为升版操作放到统一代办接口前执行
@ -1817,8 +1850,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeRequestEntity.setSite(paramData.getSite());
changeRequestEntity.setChangeNo(paramData.getDocNo());
List<ChangeRequestDetailEntity> codelist = changeManagementMapper.requestDetailSearch(changeRequestEntity);
DeleteUserRequestInfoParam deleteUserRequestInfoParam2 = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam2.setSyscode("PLM");
for (ChangeRequestDetailEntity detail : codelist) {
List<Object> params = new ArrayList<>();
List<Map<String, Object>> resultList;
@ -1869,9 +1900,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
String[] oaUsers = oaUserStr.split(";");
for (String oaUser : oaUsers) {
if (oaUser != null && !oaUser.trim().isEmpty()) {
deleteUserRequestInfoParam2.setRequestId(workflowId);
deleteUserRequestInfoParam2.setUserId(oaUser);
HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam2);
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
workflowId,
"",
oaUser,
"agreeFunction",
"before-send-ecn-procedure",
paramData.getUserName()
);
}
}
}
@ -1953,9 +1992,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeManagementMapper.updateProcessNodeForReject(paramData.getSite(), paramData.getBu() == null ? "" : paramData.getBu(), paramData.getRequestId(), paramData.getClassificationNo(), paramData.getNodeId(), paramData.getNodeConclusion(), paramData.getRejectOpinion());
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getWorkflowId() + paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
// 将记录表中 isRemark 为0的修改为1
@ -1978,12 +2014,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeManagementMapper.updateChangeStatus2(paramData);
// 2025-05-13 删除异构系统指定人员待办流程异常信息
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
// if (!"0".equals(deleteUserRequestInfoResponses.getCode())) {
// throw new RuntimeException("删除异构系统指定人员待办流程异常信息:" + deleteUserRequestInfoResponses.getMsg());
// }
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"rejectFunction",
"finish",
paramData.getUserName()
);
}
} else { // 未结束
// 存放isRemark为0的域控账号
@ -2035,12 +2076,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
String requestName = changeManagementMapper.getRequestNameByFunction(paramData.getSite(), paramData.getClassificationNo(), paramData.getWorkflowId(), paramData.getWorkflowName(), paramData.getNodeId(), paramData.getNodeName(), paramData.getDocNo(), "N", paramData.getUserName(), DateUtils.getStringNow(), paramData.getRejectOpinion(), paramData.getMenuName(), "提交");
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
// if (!"0".equals(deleteUserRequestInfoResponses.getCode())) {
// throw new RuntimeException("删除异构系统指定人员待办流程异常信息:" + deleteUserRequestInfoResponses.getMsg());
// }
deleteUserRequestInfoWithLog(
paramData.getSite(),
paramData.getDocNo(),
type,
paramData.getWorkflowId(),
paramData.getRequestId(),
oaUser.getId(),
"rejectFunction",
"before-send",
paramData.getUserName()
);
}
// 9统一待办接口
@ -2553,12 +2599,17 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 调用OA删除统一待办
for (ProcessFormCloseVo pf : processFormList) {
DeleteUserRequestInfoParam deleteParam = new DeleteUserRequestInfoParam();
deleteParam.setRequestId(pf.getWorkflowId() + pf.getRequestId());
deleteParam.setSyscode("PLM");
deleteParam.setUserId(pf.getUserId());
String deleteUrl = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
HttpClientUtil.doPostByRawWithOA(deleteUrl, deleteParam);
deleteUserRequestInfoWithLog(
vo.getSite(),
docNo,
vo.getDocumentType(),
pf.getWorkflowId(),
pf.getRequestId(),
pf.getUserId(),
"closeProcess",
"manual-close",
vo.getUserName()
);
}
// 更新plm_process_form的close_flag为Y
@ -2568,4 +2619,62 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
changeManagementMapper.updateDocumentStatusToDraft(tableName, keyField, statusField, draftStatus, vo.getSite(), docNo, vo.getUserName(), statusCodeField, statusCodeValue);
}
}
/**
* 删除OA待办并记录接口调用日志无论成功失败都不影响主流程
*/
public ResponseData deleteUserRequestInfoWithLog(String site, String documentNo, String documentType,
String workflowId, String requestId, String oaUserId,
String callMethod, String callScene, String operator) {
String deleteUrl = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
DeleteUserRequestInfoParam deleteParam = new DeleteUserRequestInfoParam();
deleteParam.setRequestId(StringUtils.defaultString(workflowId) + StringUtils.defaultString(requestId));
deleteParam.setSyscode("PLM");
deleteParam.setUserId(oaUserId);
ResponseData responseData = null;
String errorMsg = null;
try {
responseData = HttpClientUtil.doPostByRawWithOA(deleteUrl, deleteParam);
} catch (Exception e) {
errorMsg = e.getMessage();
logger.error("调用OA删除待办接口异常, site={}, documentNo={}, flowId={}, oaUserId={}",
site, documentNo, deleteParam.getRequestId(), oaUserId, e);
} finally {
saveDeleteUserRequestInfoLog(site, documentNo, documentType, workflowId, requestId, deleteParam, deleteUrl,
responseData, errorMsg, callMethod, callScene, operator);
}
return responseData;
}
private void saveDeleteUserRequestInfoLog(String site, String documentNo, String documentType, String workflowId,
String requestId, DeleteUserRequestInfoParam deleteParam, String deleteUrl,
ResponseData responseData, String errorMsg, String callMethod,
String callScene, String operator) {
try {
OaDeleteUserRequestInfoLogEntity logEntity = new OaDeleteUserRequestInfoLogEntity();
logEntity.setSite(site);
logEntity.setDocumentNo(documentNo);
logEntity.setDocumentType(documentType);
logEntity.setWorkflowId(workflowId);
logEntity.setRequestId(requestId);
logEntity.setFlowId(deleteParam.getRequestId());
logEntity.setOaUserId(deleteParam.getUserId());
logEntity.setSyscode(deleteParam.getSyscode());
logEntity.setInterfaceUrl(deleteUrl);
logEntity.setCallMethod(callMethod);
logEntity.setCallScene(callScene);
logEntity.setRequestJson(JSON.toJSONString(deleteParam));
logEntity.setResponseJson(responseData == null ? null : JSON.toJSONString(responseData));
logEntity.setResponseCode(responseData == null ? null : responseData.getCode());
logEntity.setResponseMsg(responseData == null ? null : responseData.getMsg());
logEntity.setSuccessFlag(errorMsg == null && responseData != null && "0".equals(responseData.getCode()) ? "Y" : "N");
logEntity.setErrorMsg(errorMsg);
logEntity.setCreateBy(operator);
changeManagementMapper.saveDeleteUserRequestInfoLog(logEntity);
} catch (Exception e) {
logger.error("保存OA删除待办接口日志失败, site={}, documentNo={}, flowId={}, oaUserId={}",
site, documentNo, deleteParam.getRequestId(), deleteParam.getUserId(), e);
}
}
}

20
src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java

@ -448,15 +448,17 @@ public class RequestManageServiceImpl extends ServiceImpl<RequestManageMapper, P
// }
// 流程代办删除接口删除发送的消息
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setUserId(userId);
deleteUserRequestInfoParam.setRequestId(workflowId + requestId);
deleteUserRequestInfoParam.setSyscode("PLM");
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
// if (!"0".equals(deleteUserRequestInfoResponses.getCode())) {
// throw new RuntimeException("删除异构系统指定人员待办流程异常信息:" + deleteUserRequestInfoResponses.getMsg());
// }
changeManagementService.deleteUserRequestInfoWithLog(
inData.getSite(),
inData.getDocumentNo(),
inData.getDocumentType(),
workflowId,
requestId,
userId,
"processIntervention",
"intervention",
data.getUserId()
);
// 更新PLM的节点状态节点
// 修改原节点的流程干预标识为Y

40
src/main/java/com/spring/modules/sampleManagement/service/Impl/TechnicalSpecificationServiceImpl.java

@ -2125,17 +2125,19 @@ public class TechnicalSpecificationServiceImpl implements TechnicalSpecification
}
// 调用删除统一代办消息的接口删除已经发送的消息
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(processForm.getWorkflowId() + processForm.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(data.getSite(), data.getCodeNo(), "0");
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
// if (!"0".equals(deleteUserRequestInfoResponses.getCode())) {
// throw new RuntimeException("删除异构系统指定人员待办流程异常信息:" + deleteUserRequestInfoResponses.getMsg());
// }
changeManagementService.deleteUserRequestInfoWithLog(
data.getSite(),
data.getCodeNo(),
Constant.BM,
processForm.getWorkflowId(),
processForm.getRequestId(),
oaUser.getId(),
"bmStatusToDead",
"dead",
data.getUsername()
);
}
}
@ -2206,17 +2208,19 @@ public class TechnicalSpecificationServiceImpl implements TechnicalSpecification
if (!processFormList.isEmpty()) {
ProcessFormEntity processForm = processFormList.get(0);
// 调用删除统一代办消息的接口删除已经发送的消息
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(processForm.getWorkflowId() + processForm.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(data.getSite(), data.getCodeNo(), "0");
for (OaUserData oaUser : oaUserList) {
deleteUserRequestInfoParam.setUserId(oaUser.getId());
String deleteUserRequestInfoURL = apiUrlOa + "/oa/interface/deleteUserRequestInfo";
ResponseData deleteUserRequestInfoResponses = HttpClientUtil.doPostByRawWithOA(deleteUserRequestInfoURL, deleteUserRequestInfoParam);
if (!"0".equals(deleteUserRequestInfoResponses.getCode())) {
throw new RuntimeException("删除异构系统指定人员待办流程异常信息:" + deleteUserRequestInfoResponses.getMsg());
}
changeManagementService.deleteUserRequestInfoWithLog(
data.getSite(),
data.getCodeNo(),
Constant.BM,
processForm.getWorkflowId(),
processForm.getRequestId(),
oaUser.getId(),
"bmStatusToFinish",
"finish",
data.getUsername()
);
}
}
}

47
src/main/resources/mapper/change/ChangeManagementMapper.xml

@ -1750,4 +1750,51 @@
AND a.is_remark = '0'
AND ISNULL(a.update_by, b.username) = #{userName}
</select>
<insert id="saveDeleteUserRequestInfoLog" parameterType="com.spring.modules.change.entity.OaDeleteUserRequestInfoLogEntity">
INSERT INTO plm_oa_delete_user_request_info_log
(
site,
document_no,
document_type,
workflow_id,
request_id,
flow_id,
oa_user_id,
syscode,
interface_url,
call_method,
call_scene,
request_json,
response_json,
response_code,
response_msg,
success_flag,
error_msg,
create_by,
create_date
)
VALUES
(
#{site},
#{documentNo},
#{documentType},
#{workflowId},
#{requestId},
#{flowId},
#{oaUserId},
#{syscode},
#{interfaceUrl},
#{callMethod},
#{callScene},
#{requestJson},
#{responseJson},
#{responseCode},
#{responseMsg},
#{successFlag},
#{errorMsg},
#{createBy},
GETDATE()
)
</insert>
</mapper>
Loading…
Cancel
Save