queryWrapper.nested(subQueryWrapper -> { if (CollUtil.isNotEmpty(subWorkOrderTypeNoList) && CollUtil.isNotEmpty(labelList)) { subQueryWrapper.nested(subQueryWrapper1 -> subQueryWrapper1 .and(subQueryWrapper2 -> subQueryWrapper2 .in(WorkorderEtl::getSubWorkorderTypeNo, subWorkOrderTypeNoList) .or().in(WorkorderEtl::getWorkorderTypeNo, subWorkOrderTypeNoList)) .and(subQueryWrapper2 -> subQueryWrapper2.isNull(WorkorderEtl::getFmWoType) .or().eq(WorkorderEtl::getFmWoType,WorkorderEtlClassifyEnum.OD.getCode()))) .or().nested(subQueryWrapper1 -> subQueryWrapper1.in(WorkorderEtl::getLabelType, labelList) .eq(WorkorderEtl::getFmWoType,WorkorderEtlClassifyEnum.PM.getCode())); } else if (CollUtil.isNotEmpty(subWorkOrderTypeNoList)) { subQueryWrapper .and(subQueryWrapper1 -> subQueryWrapper1 .in(WorkorderEtl::getSubWorkorderTypeNo, subWorkOrderTypeNoList) .or().in(WorkorderEtl::getWorkorderTypeNo, subWorkOrderTypeNoList)) .and(subQueryWrapper2 -> subQueryWrapper2.isNull(WorkorderEtl::getFmWoType).or() .eq(WorkorderEtl::getFmWoType,WorkorderEtlClassifyEnum.OD.getCode())); } else if (CollUtil.isNotEmpty(labelList)) { subQueryWrapper.nested(subQueryWrapper1 -> subQueryWrapper1 .in(WorkorderEtl::getLabelType, labelList) .eq(WorkorderEtl::getFmWoType,WorkorderEtlClassifyEnum.PM.getCode())); } });变成sql语句
时间: 2024-02-14 16:27:20 浏览: 138
你的代码片段是一个使用 QueryWrapper 的嵌套查询。根据提供的代码,无法直接转换为 SQL 语句,因为缺少相关实体类和数据库表的信息。但是,我可以给你提供一个大致的 SQL 查询逻辑。
首先,我们需要明确一些假设:
- `WorkorderEtl` 是一个实体类,映射到数据库表。
- `subWorkOrderTypeNoList` 是一个列表,包含子工单类型编号。
- `labelList` 是一个列表,包含标签类型。
根据你的代码逻辑,以下是大致的 SQL 查询语句:
```sql
SELECT *
FROM table_name
WHERE (
(
(
subWorkorderTypeNo IN (subWorkOrderTypeNoList)
OR workorderTypeNo IN (subWorkOrderTypeNoList)
)
AND (
fmWoType IS NULL
OR fmWoType = 'OD'
)
)
OR (
labelType IN (labelList)
AND fmWoType = 'PM'
)
)
```
请注意,`table_name` 需要替换为你实际使用的数据库表名。
这只是一个基于代码的推测,实际生成的 SQL 语句可能会有所不同。建议在实际环境中测试和验证生成的 SQL 语句是否符合预期,并根据需要进行调整。
阅读全文