帮我解释以下代码 private void dealWhenApproved(ApprovalRecord approvalRecord) { //判断是否还有下一节点 //有:生成下一审核节点 //否:结束,修改数据状态,修改record状态 ApprovalNode approvalNode = approvalRecord.getCurrentNode().getNextNode(); if (approvalNode != null) { ApprovalRecordItem recordItem = new ApprovalRecordItem() .status(ApprovalStatus.AUDITING) .createdAt(ZonedDateTime.now()) .createdBy(approvalNode.getAuditor()) .approvalRecord(approvalRecord) .approvalNode(approvalNode); approvalRecordItemRepository.save(recordItem); messageService.sendMessage(approvalNode.getAuditor(), "有新的审批等待您去处理", "/approval-record/my"); approvalRecord.setCurrentNode(approvalNode); approvalRecord.setCurrentRecordItem(recordItem); } else { approvalRecord.setStatus(ApprovalStatus.APPROVED); approvalRecord.setCurrentNode(null); approvalRecord.setCurrentRecordItem(null); if ("CustomerProductPrice".equals(approvalRecord.getSourceType())) { CustomerProductPrice customerProductPrice = customerProductPriceRepository .findById(approvalRecord.getSourceId()) .orElse(null); customerProductPrice.setRecordStatus(EntityRecordStatus.VALID); customerProductPriceRepository.save(customerProductPrice); } } approvalRecordRepository.save(approvalRecord); }
时间: 2024-04-29 12:19:07 浏览: 57
BST_javaBST_https://bst.91_bstcom_
这段代码是一个方法,名为 `dealWhenApproved`,接收一个 `ApprovalRecord` 类型的参数 `approvalRecord`。该方法的作用是处理审批记录在审批通过时的逻辑。
方法内部首先检查 `approvalRecord` 对象当前节点是否有下一个节点需要审批,如果有则生成一个新的 `ApprovalRecordItem` 对象,并设置其状态为 `AUDITING`,创建时间为当前时间,创建人为下一节点的审核人,关联到当前的 `approvalRecord` 对象和下一节点对象,并保存到数据库中。同时,通过 `messageService` 对象给下一节点的审核人发送一条消息,提醒其有新的审批需要处理。然后将 `approvalRecord` 对象的当前节点和当前审批记录项设置为新的节点和记录项。
如果当前节点没有下一个节点需要审批,说明审批已经结束,将 `approvalRecord` 对象的状态设置为 `APPROVED`,并清空当前节点和当前审批记录项。如果 `approvalRecord` 对象是针对 `CustomerProductPrice` 类型的审批记录,则通过 `customerProductPriceRepository` 对象将对应的产品价格记录的状态设置为 `VALID`。最后,将 `approvalRecord` 对象保存到数据库中。
阅读全文