解释一下这段代码@Transactional(readOnly = true) @Override public Integer withdrawSaleOrder(String saleOrderId) throws ApprovalException { int count = 0; LambdaQueryWrapper<SaleOrder> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SaleOrder::getSaleOrderId, saleOrderId).eq(SaleOrder::getStatus, StatusEnum.NORMAL.getIndex()); List<SaleOrder> saleOrders = saleOrderMapper.selectList(queryWrapper); if (saleOrders.size() > 0) { String readAuthStatus = saleOrders.get(0).getReadAuthStatus(); if (Approval.SALE_ORDER_UNREAD.equalsIgnoreCase(readAuthStatus)) { SaleOrder saleOrder = new SaleOrder(); saleOrder.setSaleOrderId(saleOrderId); saleOrder.setReadAuth(""); count = saleOrderMapper.updateById(saleOrder); } else { throw new ApprovalException(Msg.APPROVE_NOT_REVOCATION.getValue()); } } else { throw new ApprovalException(Msg.APPROVE_NOT_REVOCATION.getValue()); } return count; }
时间: 2024-04-18 17:33:58 浏览: 145
这段代码是一个用于撤销销售订单的方法,使用了`@Transactional(readOnly = true)`注解来声明该方法为只读事务。
方法内部首先定义了一个整型变量`count`并初始化为0。然后创建了一个`LambdaQueryWrapper`对象`queryWrapper`,用于构建查询条件。通过`eq()`方法指定了两个条件,分别是按照`saleOrderId`和`status`进行查询。
接下来,通过`saleOrderMapper.selectList(queryWrapper)`方法执行查询操作,将符合条件的销售订单结果保存在`saleOrders`列表中。
然后,通过判断`saleOrders`列表的大小,如果大于0,则说明存在符合条件的销售订单。接着,从第一个销售订单中获取`readAuthStatus`字段的值,并进行比较。如果该值与`Approval.SALE_ORDER_UNREAD`相等(忽略大小写),则执行撤销操作。撤销操作是将`saleOrder`对象的`readAuth`属性设置为空字符串,并通过`saleOrderMapper.updateById(saleOrder)`方法执行更新操作,并将受影响的行数赋值给`count`变量。
如果`readAuthStatus`与`Approval.SALE_ORDER_UNREAD`不相等,则抛出一个`ApprovalException`异常,异常信息为`Msg.APPROVE_NOT_REVOCATION.getValue()`。
如果`saleOrders`列表的大小为0,则同样抛出一个`ApprovalException`异常,异常信息也为`Msg.APPROVE_NOT_REVOCATION.getValue()`。
最后,返回更新的行数`count`。
阅读全文