Browse Source

2025-05-13

master
fengyuan_yang 8 months ago
parent
commit
ec7170dbcd
  1. 53
      src/main/java/com/spring/modules/change/service/impl/ChangeManagementServiceImpl.java
  2. 22
      src/main/java/com/spring/modules/request/service/impl/RequestManageServiceImpl.java
  3. 19
      src/main/resources/mapper/change/ChangeManagementMapper.xml

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

@ -1467,6 +1467,14 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// processForm isRemark = 0 的信息
List<ProcessFormVo> pfs = changeManagementMapper.getProcessFormByIsRemark(paramData.getSite(), paramData.getBu(), paramData.getDocNo(), "0");
// 修改单据的节点结论和驳回意见
changeManagementMapper.updateProcessNode(paramData.getSite(), paramData.getBu() == null ? "" : paramData.getBu(), paramData.getRequestId(), paramData.getClassificationNo(), paramData.getNodeId(), paramData.getNodeConclusion(), paramData.getRejectOpinion(), paramData.getDomainControlAccount());
// 2025-05-12 使用 process_form 根据 site documentNo isRemark = 0 来获取人员 可能有多个 循环调用
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
// 将记录表中 isRemark 为0的修改为1
// 2025-05-12 查当前节点是否为非会签 是则不加username
PlmRequestDetailVo requestNode = changeManagementMapper.getRequestNodeByNodeId(paramData.getSite(), paramData.getClassificationNo(), paramData.getNodeId());
@ -1476,9 +1484,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
} else {
changeManagementMapper.updateProcessForm2(paramData);
}
// 修改单据的节点结论和驳回意见
changeManagementMapper.updateProcessNode(paramData.getSite(), paramData.getBu() == null ? "" : paramData.getBu(), paramData.getRequestId(), paramData.getClassificationNo(), paramData.getNodeId(), paramData.getNodeConclusion(), paramData.getRejectOpinion(), paramData.getDomainControlAccount());
// =========================
if (isRemarks.isEmpty()) { // 已结束
// 反刷单据状态为 "已完成"
@ -1535,6 +1540,15 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
}
}
}
// 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());
}
}
} else { // 未结束
// 调用获取最新节点ID的接口
String getWorkflowRequestURL = apiUrlOa + "/oa/interface/getWorkflowRequest";
@ -1548,12 +1562,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 通过函数获取流程标题 2024-12-25
String requestName = changeManagementMapper.getRequestNameByFunction(paramData.getSite(), paramData.getClassificationNo(), paramData.getWorkflowId(), paramData.getWorkflowName(), paramData.getNodeId(), paramData.getNodeName(), paramData.getDocNo(), "Y", paramData.getUserName(), DateUtils.getStringNow(), "", paramData.getMenuName(), "提交");
// 2025-05-12 使用 process_form 根据 site documentNo isRemark = 0 来获取人员 可能有多个 循环调用
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
// 如果 isRemarks 中的节点ID = 最新节点ID
if (isRemarks.get(0).get("nodeid").toString().equals(newNodeId) && !pfs.isEmpty()) {
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
@ -1743,18 +1751,25 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 得到 isRemark 为0的流转信息
List<Map<String, Object>> isRemarks = res.stream().filter(a -> convertToInt(a.get("isremark")) == 0).collect(Collectors.toList());
// 修改单据的节点结论和驳回意见
changeManagementMapper.updateProcessNode(paramData.getSite(), paramData.getBu() == null ? "" : paramData.getBu(), paramData.getRequestId(), paramData.getClassificationNo(), paramData.getNodeId(), paramData.getNodeConclusion(), paramData.getRejectOpinion(), paramData.getDomainControlAccount());
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(paramData.getRequestId());
deleteUserRequestInfoParam.setSyscode("PLM");
List<OaUserData> oaUserList = changeManagementMapper.getOaUserIdByIsRemark(paramData.getSite(), paramData.getDocNo(), "0");
// 将记录表中 isRemark 为0的修改为1
// 2025-05-12 查当前节点是否为非会签 是则不加username
PlmRequestDetailVo requestNode = changeManagementMapper.getRequestNodeByNodeId(paramData.getSite(), paramData.getClassificationNo(), paramData.getNodeId());
// 非会签
if (StringUtils.isNotBlank(requestNode.getCountersignatureItem()) && "1".equals(requestNode.getCountersignatureItem())) {
if (requestNode.getCountersignatureItem() != null && "1".equals(requestNode.getCountersignatureItem())) {
changeManagementMapper.updateProcessForm3(paramData);
} else {
changeManagementMapper.updateProcessForm2(paramData);
}
// 修改单据的节点结论和驳回意见
changeManagementMapper.updateProcessNode(paramData.getSite(), paramData.getBu() == null ? "" : paramData.getBu(), paramData.getRequestId(), paramData.getClassificationNo(), paramData.getNodeId(), paramData.getNodeConclusion(), paramData.getRejectOpinion(), paramData.getDomainControlAccount());
if (isRemarks.isEmpty()) { // 已结束
// 反刷单据状态为 "已完成"
paramData.setStatus("已完成");
@ -1762,6 +1777,15 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
List<PlmRequestDetailVo> nodeDetailLast = changeManagementMapper.queryNodeDetailLast(paramData.getSite(), paramData.getClassificationNo(), paramData.getWorkflowId());
paramData.setStepId(nodeDetailLast.get(0).getStepId());
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());
}
}
} else { // 未结束
// 存放isRemark为0的域控账号
Map<String, String> dcas = new HashMap<>();
@ -1811,11 +1835,6 @@ public class ChangeManagementServiceImpl extends ServiceImpl<ChangeManagementMap
// 通过函数获取流程标题 2024-12-25
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(), "提交");
// 2025-05-09 发送统一待办前先调用[删除异构系统指定人员待办流程]接口
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();
deleteUserRequestInfoParam.setRequestId(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";

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

@ -380,7 +380,7 @@ public class RequestManageServiceImpl extends ServiceImpl<RequestManageMapper, P
// 如果是节点更新则调用强制收回流程接口反之则跳过这一步
// 强制收回流程
// 如果当前登录人 != 当前节点审批人 就传 ismonitor
if (!data.getUserId().equals(inData.getUpdateBy())) {
// if (!data.getUserId().equals(inData.getUpdateBy())) {
DoForceDrawBackParam doForceDrawBackParam = new DoForceDrawBackParam();
doForceDrawBackParam.setUserId(userId);
doForceDrawBackParam.setRequestId(requestId);
@ -392,16 +392,16 @@ public class RequestManageServiceImpl extends ServiceImpl<RequestManageMapper, P
if (!"0".equals(doForceDrawBackResponses.getCode())) {
throw new RuntimeException("强制收回流程异常信息:" + doForceDrawBackResponses.getMsg());
}
} else {
DoForceDrawBackParam2 doForceDrawBackParam = new DoForceDrawBackParam2();
doForceDrawBackParam.setUserId(userId);
doForceDrawBackParam.setRequestId(requestId);
String doForceDrawBackURL = apiUrlOa + "/oa/interface/doForceDrawBack";
ResponseData doForceDrawBackResponses = HttpClientUtil.doPostByRawWithOA(doForceDrawBackURL, doForceDrawBackParam);
if (!"0".equals(doForceDrawBackResponses.getCode())) {
throw new RuntimeException("强制收回流程异常信息:" + doForceDrawBackResponses.getMsg());
}
}
// } else {
// DoForceDrawBackParam2 doForceDrawBackParam = new DoForceDrawBackParam2();
// doForceDrawBackParam.setUserId(userId);
// doForceDrawBackParam.setRequestId(requestId);
// String doForceDrawBackURL = apiUrlOa + "/oa/interface/doForceDrawBack";
// ResponseData doForceDrawBackResponses = HttpClientUtil.doPostByRawWithOA(doForceDrawBackURL, doForceDrawBackParam);
// if (!"0".equals(doForceDrawBackResponses.getCode())) {
// throw new RuntimeException("强制收回流程异常信息:" + doForceDrawBackResponses.getMsg());
// }
// }
// 流程代办删除接口删除发送的消息
DeleteUserRequestInfoParam deleteUserRequestInfoParam = new DeleteUserRequestInfoParam();

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

@ -1170,6 +1170,14 @@
WHERE
a.site = #{site} AND a.menu_id = #{menuId}
AND c.create_date IS NOT NULL
),
cte_dedup AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY classification_no, node_id, update_date
ORDER BY create_date DESC -- 保留每组最新创建的那条
) AS rn
FROM cte
)
SELECT
classification_no,
@ -1185,11 +1193,12 @@
create_by,
reject_opinion,
updateBy,
process_intervention_flag,
CASE WHEN update_date IS NULL THEN 1 ELSE 0 END AS sort_null_flag
FROM cte
process_intervention_flag
FROM cte_dedup
WHERE rn = 1
ORDER BY
sort_null_flag
CASE WHEN update_date IS NULL THEN 1 ELSE 0 END,
update_date
</select>
<select id="getTechnicalSpecification" resultType="PlmTechnicalSpecificationSheetData">
@ -1329,7 +1338,7 @@
b.loginId
FROM plm_process_form as a
LEFT JOIN view_oa_HrmResource as b ON a.domain_control_account = b.loginid
WHERE a.site = #{site} and a.document_no = #{docNo} and a.is_remark = #{isRemark}
WHERE a.site = #{site} and a.document_no = #{docNo} and (a.is_remark = #{isRemark} OR A.step_id = 10)
</select>
<select id="getRequestNodeByNodeId" resultType="com.spring.modules.request.vo.PlmRequestDetailVo">

Loading…
Cancel
Save