补齐审批退回结果通知 [09-04-approval-return-notification-gap]
这个提交包含在:
@@ -21,12 +21,15 @@ const NOTIFICATION_TYPES = Object.freeze({
|
||||
paymentBatchExecutionRequested: 'payment_batch.execution_requested',
|
||||
leaveApproved: 'leave.approved',
|
||||
leaveRejected: 'leave.rejected',
|
||||
leaveReturned: 'leave.returned',
|
||||
attendanceCorrectionApproved: 'attendance_correction.approved',
|
||||
attendanceCorrectionRejected: 'attendance_correction.rejected',
|
||||
purchaseRequestApproved: 'purchase_request.approved',
|
||||
purchaseRequestRejected: 'purchase_request.rejected',
|
||||
purchaseRequestReturned: 'purchase_request.returned',
|
||||
travelRequestApproved: 'travel_request.approved',
|
||||
travelRequestRejected: 'travel_request.rejected',
|
||||
travelRequestReturned: 'travel_request.returned',
|
||||
assetAssigned: 'asset.assigned',
|
||||
assetReturned: 'asset.returned',
|
||||
assetTransferred: 'asset.transferred',
|
||||
@@ -45,12 +48,15 @@ const IM_SUPPORTED_NOTIFICATION_TYPES = Object.freeze([
|
||||
NOTIFICATION_TYPES.paymentBatchExecutionRequested,
|
||||
NOTIFICATION_TYPES.leaveApproved,
|
||||
NOTIFICATION_TYPES.leaveRejected,
|
||||
NOTIFICATION_TYPES.leaveReturned,
|
||||
NOTIFICATION_TYPES.attendanceCorrectionApproved,
|
||||
NOTIFICATION_TYPES.attendanceCorrectionRejected,
|
||||
NOTIFICATION_TYPES.purchaseRequestApproved,
|
||||
NOTIFICATION_TYPES.purchaseRequestRejected,
|
||||
NOTIFICATION_TYPES.purchaseRequestReturned,
|
||||
NOTIFICATION_TYPES.travelRequestApproved,
|
||||
NOTIFICATION_TYPES.travelRequestRejected,
|
||||
NOTIFICATION_TYPES.travelRequestReturned,
|
||||
NOTIFICATION_TYPES.assetAssigned,
|
||||
NOTIFICATION_TYPES.assetReturned,
|
||||
NOTIFICATION_TYPES.assetTransferred,
|
||||
@@ -69,12 +75,15 @@ const NOTIFICATION_TYPE_TO_DOMAIN_SCOPE = Object.freeze({
|
||||
[NOTIFICATION_TYPES.paymentBatchExecutionRequested]: NOTIFICATION_DOMAIN_SCOPES.reimbursement,
|
||||
[NOTIFICATION_TYPES.leaveApproved]: NOTIFICATION_DOMAIN_SCOPES.leave,
|
||||
[NOTIFICATION_TYPES.leaveRejected]: NOTIFICATION_DOMAIN_SCOPES.leave,
|
||||
[NOTIFICATION_TYPES.leaveReturned]: NOTIFICATION_DOMAIN_SCOPES.leave,
|
||||
[NOTIFICATION_TYPES.attendanceCorrectionApproved]: NOTIFICATION_DOMAIN_SCOPES.attendance,
|
||||
[NOTIFICATION_TYPES.attendanceCorrectionRejected]: NOTIFICATION_DOMAIN_SCOPES.attendance,
|
||||
[NOTIFICATION_TYPES.purchaseRequestApproved]: NOTIFICATION_DOMAIN_SCOPES.procurement,
|
||||
[NOTIFICATION_TYPES.purchaseRequestRejected]: NOTIFICATION_DOMAIN_SCOPES.procurement,
|
||||
[NOTIFICATION_TYPES.purchaseRequestReturned]: NOTIFICATION_DOMAIN_SCOPES.procurement,
|
||||
[NOTIFICATION_TYPES.travelRequestApproved]: NOTIFICATION_DOMAIN_SCOPES.travel,
|
||||
[NOTIFICATION_TYPES.travelRequestRejected]: NOTIFICATION_DOMAIN_SCOPES.travel,
|
||||
[NOTIFICATION_TYPES.travelRequestReturned]: NOTIFICATION_DOMAIN_SCOPES.travel,
|
||||
[NOTIFICATION_TYPES.assetAssigned]: NOTIFICATION_DOMAIN_SCOPES.asset,
|
||||
[NOTIFICATION_TYPES.assetReturned]: NOTIFICATION_DOMAIN_SCOPES.asset,
|
||||
[NOTIFICATION_TYPES.assetTransferred]: NOTIFICATION_DOMAIN_SCOPES.asset,
|
||||
@@ -110,5 +119,6 @@ module.exports = {
|
||||
NOTIFICATION_TYPES,
|
||||
IM_SUPPORTED_NOTIFICATION_TYPES,
|
||||
NOTIFICATION_DOMAIN_SCOPES,
|
||||
NOTIFICATION_TYPE_TO_DOMAIN_SCOPE,
|
||||
resolveNotificationDomainScope,
|
||||
};
|
||||
|
||||
@@ -1094,6 +1094,9 @@ function resolveWorkflowOutcomeNotificationType(entityType, outcome) {
|
||||
|
||||
if (outcome === 'returned') {
|
||||
if (normalizedEntityType === 'reimbursement') return NOTIFICATION_TYPES.reimbursementReturned;
|
||||
if (normalizedEntityType === 'leave') return NOTIFICATION_TYPES.leaveReturned;
|
||||
if (normalizedEntityType === 'purchase_request') return NOTIFICATION_TYPES.purchaseRequestReturned;
|
||||
if (normalizedEntityType === 'travel_request') return NOTIFICATION_TYPES.travelRequestReturned;
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -3334,5 +3337,6 @@ module.exports.__testables = {
|
||||
isWorkflowTaskOverdue,
|
||||
listAllowedActionsForTask,
|
||||
parseTaskListQuery,
|
||||
queueWorkflowOutcomeNotifications,
|
||||
resolveWorkflowOutcomeNotificationType,
|
||||
};
|
||||
|
||||
@@ -247,7 +247,7 @@ function buildReturnedCopy(entityMeta, comment) {
|
||||
const safeComment = String(comment ?? "").trim() || "无";
|
||||
return {
|
||||
title: `【已退回】${buildSubject(entityMeta)}`,
|
||||
body: buildBody(entityMeta, `结果:已退回:${safeComment}`),
|
||||
body: buildBody(entityMeta, `结果:已退回,可修改后重新提交:${safeComment}`),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户