fix(crm):回款计划创建查最大期次改单表查询,修 Unknown column 't.contract_id'(A6)

MPJLambdaWrapperX 会给列拼表别名前缀 t.,但 BaseMapper.selectOne 生成的
FROM 不带别名,单表查询直接 SQL 语法错误(2026-09-21 23:50:39 实抓堆栈:
CrmReceivablePlanMapper.selectMaxPeriodByContractId:27 → createReceivablePlan:65
→ 500 系统异常)。同文件 selectCount+MPJ 走 MPJ 自带 FROM 别名不受影响,
仅 selectOne 路径改 LambdaQueryWrapperX。
This commit is contained in:
dadiyang
2026-09-23 20:05:28 +08:00
parent 8e43004cf6
commit 85a63467dd
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.crm.dal.mysql.receivable;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceivablePlanPageReqVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
@@ -24,7 +25,9 @@ import java.util.Objects;
public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO> {
default CrmReceivablePlanDO selectMaxPeriodByContractId(Long contractId) {
return selectOne(new MPJLambdaWrapperX<CrmReceivablePlanDO>()
// 单表查询不能用 MPJLambdaWrapperX:它会给列拼接表别名前缀(t.contract_id),
// 但 selectOne 生成的 FROM 不带别名,导致 Unknown column 't.contract_id'。
return selectOne(new LambdaQueryWrapperX<CrmReceivablePlanDO>()
.eq(CrmReceivablePlanDO::getContractId, contractId)
.orderByDesc(CrmReceivablePlanDO::getPeriod)
.last("LIMIT 1"));