diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java index 30d51cf..b567c54 100644 --- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java +++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java @@ -144,7 +144,9 @@ public interface LogRecordConstants { String CRM_RECEIVABLE_CREATE_SUB_TYPE = "创建回款"; String CRM_RECEIVABLE_CREATE_SUCCESS = "创建了合同【{getContractById{#receivable.contractId}}】的{{#period != null ? '【第'+ #period +'期】' : '编号为【'+ #receivable.no +'】的'}}回款"; String CRM_RECEIVABLE_UPDATE_SUB_TYPE = "更新回款"; - String CRM_RECEIVABLE_UPDATE_SUCCESS = "更新了合同【{getContractById{#receivable.contractId}}】的{{#period != null ? '【第'+ #period +'期】' : '编号为【'+ #receivable.no +'】的'}}回款: {_DIFF{#updateReqVO}}"; + // 注意:updateReceivable 绑定的上下文变量名是 oldReceivable(更新前的回款), + // 模板必须与变量名一致,否则后置相取值为 null 抛 SpelEvaluationException + String CRM_RECEIVABLE_UPDATE_SUCCESS = "更新了合同【{getContractById{#oldReceivable.contractId}}】的{{#period != null ? '【第'+ #period +'期】' : '编号为【'+ #oldReceivable.no +'】的'}}回款: {_DIFF{#updateReqVO}}"; String CRM_RECEIVABLE_DELETE_SUB_TYPE = "删除回款"; String CRM_RECEIVABLE_DELETE_SUCCESS = "删除了合同【{getContractById{#receivable.contractId}}】的{{#period != null ? '【第'+ #period +'期】' : '编号为【'+ #receivable.no +'】的'}}回款"; String CRM_RECEIVABLE_SUBMIT_SUB_TYPE = "提交回款审批"; diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmContractParseFunction.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmContractParseFunction.java index d3c5852..22a9952 100644 --- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmContractParseFunction.java +++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/framework/operatelog/core/CrmContractParseFunction.java @@ -24,7 +24,10 @@ public class CrmContractParseFunction implements IParseFunction { @Override public boolean executeBefore() { - return true; // 先转换值后对比 + // 必须在方法执行后(后置相)取值:模板引用的是 LogRecordContext 变量 + // (如 #receivablePlan.contractId),这些变量在方法内部末尾才绑定, + // 创建前(前置相)取值为 null,会抛 SpelEvaluationException EL1007E + return false; } @Override