const NODE_TYPE_META = { EXECUTE: { text: '执行节点', type: 'primary' }, CHECK: { text: '检查点', type: 'warning' }, DECISION: { text: '决策点', type: 'success' } } const BOOLEAN_META = { 1: { text: '是', type: 'success', bool: true }, 0: { text: '否', type: 'info', bool: false } } export const TASK_PATH_TEMPLATE_NODE_REPORT_TITLE = '任务路径模板节点报表' export const TASK_PATH_TEMPLATE_NODE_REPORT_STYLE = { titleAlign: 'center', titleLevel: 'strong', orientation: 'portrait', density: 'compact', showSequence: true } function normalizeText(value) { return String(value ?? '').trim() } function normalizeNumber(value, fallback = void 0) { if (value === '' || value === null || value === undefined) { return fallback } const numberValue = Number(value) return Number.isNaN(numberValue) ? fallback : numberValue } function normalizeMaybeNumber(value, fallback = void 0) { if (value === '' || value === null || value === undefined) { return fallback } const numberValue = Number(value) return Number.isNaN(numberValue) ? fallback : numberValue } function normalizeMaybeText(value) { return normalizeText(value) } function normalizeMaybeBooleanNumber(value, fallback = void 0) { if (value === '' || value === null || value === undefined) { return fallback } const numberValue = Number(value) return Number.isNaN(numberValue) ? fallback : numberValue } export function createTaskPathTemplateNodeSearchState() { return { condition: '', templateId: void 0, templateCode: '', nodeOrder: void 0, nodeCode: '', nodeName: '', nodeType: '', systemCode: '', systemName: '', executeParams: '', resultSchema: '', timeoutMinutes: void 0, mandatory: '', parallelExecutable: '', preCondition: '', postCondition: '', nextNodeRules: '', timeStart: '', timeEnd: '' } } export function createTaskPathTemplateNodeFormState() { return { id: void 0, templateId: void 0, templateCode: '', nodeOrder: 1, nodeCode: '', nodeName: '', nodeType: 'EXECUTE', systemCode: '', systemName: '', executeParams: '', resultSchema: '', timeoutMinutes: void 0, mandatory: 1, parallelExecutable: 0, preCondition: '', postCondition: '', nextNodeRules: '' } } export function getTaskPathTemplateNodePaginationKey() { return { current: 'current', size: 'pageSize' } } export function getTaskPathTemplateNodeTypeOptions() { return [ { label: '执行节点', value: 'EXECUTE' }, { label: '检查点', value: 'CHECK' }, { label: '决策点', value: 'DECISION' } ] } export function getTaskPathTemplateNodeBooleanOptions() { return [ { label: '否', value: 0 }, { label: '是', value: 1 } ] } export function getTaskPathTemplateNodeTypeMeta(nodeType) { const normalized = normalizeMaybeText(nodeType).toUpperCase() if (normalized in NODE_TYPE_META) { return NODE_TYPE_META[normalized] } return { text: normalized || '未知', type: 'info' } } export function getTaskPathTemplateNodeBooleanMeta(value) { if (value === true || Number(value) === 1) { return BOOLEAN_META[1] } if (value === false || Number(value) === 0) { return BOOLEAN_META[0] } return { text: '未知', type: 'info', bool: false } } export function buildTaskPathTemplateNodeSearchParams(params = {}) { const searchParams = { condition: normalizeMaybeText(params.condition), templateId: normalizeMaybeNumber(params.templateId), templateCode: normalizeMaybeText(params.templateCode), nodeOrder: normalizeMaybeNumber(params.nodeOrder), nodeCode: normalizeMaybeText(params.nodeCode), nodeName: normalizeMaybeText(params.nodeName), nodeType: normalizeMaybeText(params.nodeType), systemCode: normalizeMaybeText(params.systemCode), systemName: normalizeMaybeText(params.systemName), executeParams: normalizeMaybeText(params.executeParams), resultSchema: normalizeMaybeText(params.resultSchema), timeoutMinutes: normalizeMaybeNumber(params.timeoutMinutes), mandatory: normalizeMaybeNumber(params.mandatory), parallelExecutable: normalizeMaybeNumber(params.parallelExecutable), preCondition: normalizeMaybeText(params.preCondition), postCondition: normalizeMaybeText(params.postCondition), nextNodeRules: normalizeMaybeText(params.nextNodeRules), timeStart: normalizeMaybeText(params.timeStart), timeEnd: normalizeMaybeText(params.timeEnd) } return Object.fromEntries( Object.entries(searchParams).filter(([, value]) => value !== '' && value !== void 0 && value !== null) ) } export function buildTaskPathTemplateNodePageQueryParams(params = {}) { return { current: params.current || 1, pageSize: params.pageSize || params.size || 20, ...buildTaskPathTemplateNodeSearchParams(params) } } export function buildTaskPathTemplateNodeSavePayload(formData = {}) { return { ...(formData.id !== void 0 && formData.id !== null && formData.id !== '' ? { id: Number(formData.id) } : {}), ...(formData.templateId !== void 0 && formData.templateId !== null && formData.templateId !== '' ? { templateId: Number(formData.templateId) } : {}), templateCode: normalizeMaybeText(formData.templateCode) || '', ...(formData.nodeOrder !== void 0 && formData.nodeOrder !== null && formData.nodeOrder !== '' ? { nodeOrder: Number(formData.nodeOrder) } : { nodeOrder: 1 }), nodeCode: normalizeMaybeText(formData.nodeCode) || '', nodeName: normalizeMaybeText(formData.nodeName) || '', nodeType: normalizeMaybeText(formData.nodeType) || 'EXECUTE', systemCode: normalizeMaybeText(formData.systemCode) || '', systemName: normalizeMaybeText(formData.systemName) || '', executeParams: normalizeMaybeText(formData.executeParams) || '', resultSchema: normalizeMaybeText(formData.resultSchema) || '', ...(formData.timeoutMinutes !== void 0 && formData.timeoutMinutes !== null && formData.timeoutMinutes !== '' ? { timeoutMinutes: Number(formData.timeoutMinutes) } : {}), ...(formData.mandatory !== void 0 && formData.mandatory !== null && formData.mandatory !== '' ? { mandatory: Number(formData.mandatory) } : { mandatory: 1 }), ...(formData.parallelExecutable !== void 0 && formData.parallelExecutable !== null && formData.parallelExecutable !== '' ? { parallelExecutable: Number(formData.parallelExecutable) } : { parallelExecutable: 0 }), preCondition: normalizeMaybeText(formData.preCondition) || '', postCondition: normalizeMaybeText(formData.postCondition) || '', nextNodeRules: normalizeMaybeText(formData.nextNodeRules) || '' } } export function buildTaskPathTemplateNodeDialogModel(record = {}) { return { ...createTaskPathTemplateNodeFormState(), ...(record.id !== void 0 && record.id !== null && record.id !== '' ? { id: Number(record.id) } : {}), ...(record.templateId !== void 0 && record.templateId !== null && record.templateId !== '' ? { templateId: Number(record.templateId) } : {}), templateCode: normalizeMaybeText(record.templateCode || ''), nodeOrder: record.nodeOrder !== void 0 && record.nodeOrder !== null && record.nodeOrder !== '' ? Number(record.nodeOrder) : 1, nodeCode: normalizeMaybeText(record.nodeCode || ''), nodeName: normalizeMaybeText(record.nodeName || ''), nodeType: normalizeMaybeText(record.nodeType || '') || 'EXECUTE', systemCode: normalizeMaybeText(record.systemCode || ''), systemName: normalizeMaybeText(record.systemName || ''), executeParams: normalizeMaybeText(record.executeParams || ''), resultSchema: normalizeMaybeText(record.resultSchema || ''), timeoutMinutes: normalizeMaybeNumber(record.timeoutMinutes, void 0), mandatory: record.mandatory !== void 0 && record.mandatory !== null && record.mandatory !== '' ? Number(record.mandatory) : 1, parallelExecutable: record.parallelExecutable !== void 0 && record.parallelExecutable !== null && record.parallelExecutable !== '' ? Number(record.parallelExecutable) : 0, preCondition: normalizeMaybeText(record.preCondition || ''), postCondition: normalizeMaybeText(record.postCondition || ''), nextNodeRules: normalizeMaybeText(record.nextNodeRules || '') } } export function normalizeTaskPathTemplateNodeDetailRecord(record = {}) { const nodeTypeMeta = getTaskPathTemplateNodeTypeMeta(record.nodeType) const mandatoryMeta = getTaskPathTemplateNodeBooleanMeta(record.mandatory) const parallelMeta = getTaskPathTemplateNodeBooleanMeta(record.parallelExecutable) return { ...record, templateId: normalizeMaybeNumber(record.templateId, void 0), templateCode: normalizeMaybeText(record.templateCode || ''), nodeOrder: normalizeMaybeNumber(record.nodeOrder, void 0), nodeCode: normalizeMaybeText(record.nodeCode || ''), nodeName: normalizeMaybeText(record.nodeName || ''), nodeType: normalizeMaybeText(record.nodeType || ''), nodeTypeText: nodeTypeMeta.text, nodeTypeType: nodeTypeMeta.type, systemCode: normalizeMaybeText(record.systemCode || ''), systemName: normalizeMaybeText(record.systemName || ''), executeParams: normalizeMaybeText(record.executeParams || ''), resultSchema: normalizeMaybeText(record.resultSchema || ''), timeoutMinutes: normalizeMaybeNumber(record.timeoutMinutes, void 0), mandatory: normalizeMaybeNumber(record.mandatory, void 0), mandatoryText: mandatoryMeta.text, mandatoryType: mandatoryMeta.type, mandatoryBool: record.mandatoryBool !== void 0 ? Boolean(record.mandatoryBool) : mandatoryMeta.bool, parallelExecutable: normalizeMaybeNumber(record.parallelExecutable, void 0), parallelExecutableText: parallelMeta.text, parallelExecutableType: parallelMeta.type, parallelExecutableBool: record.parallelExecutableBool !== void 0 ? Boolean(record.parallelExecutableBool) : parallelMeta.bool, preCondition: normalizeMaybeText(record.preCondition || ''), postCondition: normalizeMaybeText(record.postCondition || ''), nextNodeRules: normalizeMaybeText(record.nextNodeRules || ''), createByText: normalizeMaybeText(record.createBy$ || record.createByText || ''), updateByText: normalizeMaybeText(record.updateBy$ || record.updateByText || ''), createTimeText: normalizeMaybeText(record.createTime$ || record.createTime || ''), updateTimeText: normalizeMaybeText(record.updateTime$ || record.updateTime || '') } } export function normalizeTaskPathTemplateNodeListRow(record = {}) { return normalizeTaskPathTemplateNodeDetailRecord(record) } export function buildTaskPathTemplateNodePrintRows(records = []) { if (!Array.isArray(records)) { return [] } return records.map((record) => normalizeTaskPathTemplateNodeListRow(record)) } export function buildTaskPathTemplateNodeReportMeta({ previewMeta = {}, count = 0, orientation = TASK_PATH_TEMPLATE_NODE_REPORT_STYLE.orientation } = {}) { return { reportTitle: TASK_PATH_TEMPLATE_NODE_REPORT_TITLE, reportDate: previewMeta.reportDate, printedAt: previewMeta.printedAt, operator: previewMeta.operator, count, reportStyle: { ...TASK_PATH_TEMPLATE_NODE_REPORT_STYLE, orientation } } }