(这是详情接口)一段代码用树形结构给展示出来逻辑就很清晰都是ifelse没啥难的(要清楚数据来源-数据去向-更容易理解为啥这样的ifelse)

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
    └── 返回 "没有该类型的数据"

解释

  1. 查询收费单信息:首先通过 id 查询收费单的详细信息,如果查询不到对应的收费单,则返回 “该收费单不存在”。

  2. 查询监督记录:使用 feeId 查询对应的监督记录,但即使没有找到记录,也不会阻碍后续逻辑的执行(代码中删除了多余的校验)。

  3. FeeNameType 为 31 的处理

    • 如果收费单的 feeNameType31,将收费单和监督记录封装到 IocarFeeSuperviseVo 对象中,并返回成功信息。
  4. FeeNameType 为 10 或 20 的处理

    • 如果收费单的 feeNameType1020,则进一步查询车辆信息,然后将车辆信息和监督记录封装到 IocarFeeSuperviseVo 中返回。
  5. 其他情况

    • 如果 feeNameType 不是上述任何一种情况,返回 “没有该类型的数据”。

这个结构帮助理清了代码中根据不同 feeNameType 值分支处理的逻辑,并展示了如何根据查询结果决定返回的数据结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值