public R queryByIdWithSupervise(@RequestParam(value = "id") Long id) {
//把查询详情放到同一个接口里面
IocarFeeEntity iocarFeeEntity = iocarFeeService.getById(id);
if (ObjectUtils.isEmpty(iocarFeeEntity)) {
return R.failed("该收费单不存在");
}
LambdaQueryWrapper<IocarSuperviseEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(IocarSuperviseEntity::getFeeId, id);
IocarSuperviseEntity iocarSuperviseEntity = iocarSuperviseService.getOne(queryWrapper);
//这个校验是多余的
// if (ObjectUtils.isEmpty(iocarSuperviseEntity)) {
// return R.failed("未查询到监察记录");
// }
if(iocarFeeEntity.getFeeNameType().equals("31")) {
//换一种写法更好-两个实体放到一个vo里面 但是前端解析会麻烦一点
IocarFeeSuperviseVo iocarFeeSuperviseVo = new IocarFeeSuperviseVo();
iocarFeeSuperviseVo.setIocarFeeEntity(iocarFeeEntity);
iocarFeeSuperviseVo.setIocarSuperviseEntity(iocarSuperviseEntity);
return R.ok(iocarFeeSuperviseVo, "查询成功");
}else if(iocarFeeEntity.getFeeNameType().equals("10") || iocarFeeEntity.getFeeNameType().equals("20")) {
IocarCarQueryVo iocarCarQueryVo = iocarCarInfoService.queryIocarInfo(iocarFeeEntity.getConfirmRegisterNo());
IocarFeeSuperviseVo iocarFeeSuperviseVo = new IocarFeeSuperviseVo();
iocarFeeSuperviseVo.setIocarCarQueryVo(iocarCarQueryVo);
iocarFeeSuperviseVo.setIocarSuperviseEntity(iocarSuperviseEntity);
return R.ok(iocarFeeSuperviseVo, "查询成功");
}
return R.ok(null, "没有该类型的数据");
}这段代码的业务逻辑 用一个 树形结构表示
这段代码的业务逻辑涉及根据收费单的 feeNameType
字段来查询和返回不同类型的数据。具体逻辑包括根据 id
查询收费单详情和相应的监督记录,并将它们封装到不同的 VO 对象中返回。
树形结构表示 queryByIdWithSupervise
的业务逻辑
queryByIdWithSupervise(Long id)
│
├── 查询收费单信息:iocarFeeEntity = iocarFeeService.getById(id)
│ ├── IF iocarFeeEntity is empty
│ │ └── 返回 "该收费单不存在"
│
├── 查询监督记录:iocarSuperviseEntity = iocarSuperviseService.getOne(queryWrapper)
│
├── IF iocarFeeEntity.getFeeNameType() == "31" (处理 FeeNameType 为 31 的情况)
│ └── 封装数据到 IocarFeeSuperviseVo
│ ├── 设置 iocarFeeEntity
│ ├── 设置 iocarSuperviseEntity
│ └── 返回封装结果 "查询成功"
│
├── ELSE IF iocarFeeEntity.getFeeNameType() == "10" OR "20" (处理 FeeNameType 为 10 或 20 的情况)
│ └── 查询车辆信息:iocarCarQueryVo = iocarCarInfoService.queryIocarInfo(iocarFeeEntity.getConfirmRegisterNo())
│ ├── 封装数据到 IocarFeeSuperviseVo
│ │ ├── 设置 iocarCarQueryVo
│ │ ├── 设置 iocarSuperviseEntity
│ └── 返回封装结果 "查询成功"
│
└── ELSE
└── 返回 "没有该类型的数据"
解释
-
查询收费单信息:首先通过
id
查询收费单的详细信息,如果查询不到对应的收费单,则返回 “该收费单不存在”。 -
查询监督记录:使用
feeId
查询对应的监督记录,但即使没有找到记录,也不会阻碍后续逻辑的执行(代码中删除了多余的校验)。 -
FeeNameType 为 31 的处理:
- 如果收费单的
feeNameType
是31
,将收费单和监督记录封装到IocarFeeSuperviseVo
对象中,并返回成功信息。
- 如果收费单的
-
FeeNameType 为 10 或 20 的处理:
- 如果收费单的
feeNameType
是10
或20
,则进一步查询车辆信息,然后将车辆信息和监督记录封装到IocarFeeSuperviseVo
中返回。
- 如果收费单的
-
其他情况:
- 如果
feeNameType
不是上述任何一种情况,返回 “没有该类型的数据”。
- 如果
这个结构帮助理清了代码中根据不同 feeNameType
值分支处理的逻辑,并展示了如何根据查询结果决定返回的数据结构。