diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java index 6c8b2f9..4cd6991 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java @@ -804,10 +804,46 @@ public class OrderBiz { * * @param settlementOrderId 结算订单ID * @param settlementOrderStatus {@link SettlementStatusEnum} 更新的状态枚举值 - * @return Boolean */ - public Boolean updateSettlementOrderStatus(Long settlementOrderId, Integer settlementOrderStatus) { - return true; + @Transactional(rollbackFor = Exception.class) + public void updateSettlementOrderStatus(Long settlementOrderId, Integer settlementOrderStatus) { + SettlementMain settlementMain = settlementMainService.obtainSettlementMainById(settlementOrderId); + if (ObjectUtil.isNull(settlementMain)) { + throw new BadRequestException("结算订单不存在"); + } + // 结算单状态相同或者结算完成,则不处理 + if (settlementOrderStatus.equals(settlementMain.getSettlementStatus()) + || SettlementStatusEnum.CONFIRMED.getCode().equals(settlementMain.getSettlementStatus())) { + return; + } + // 如果结算单状态本身为取消则不许再处理 + if (SettlementStatusEnum.CANCELED.getCode().equals(settlementMain.getSettlementStatus())) { + throw new BadRequestException("结算单已取消,无法变更状态"); + } + // 查询出所有明细 + List settlementDetailList = settlementDetailService.obtainDetailBySettlementOrderId(settlementOrderId); + + // 获取所有订单ID + List orderIds = settlementDetailList.stream().map(SettlementDetail::getOrderId).toList(); + // 获取id + List ids = settlementDetailList.stream().map(SettlementDetail::getId).toList(); + // 更新结算单的状态 + settlementMainService.updateSettlementStatus(settlementOrderId, settlementOrderStatus); + // 订单等于完成或取消才去更新结算单的状态 + if (SettlementStatusEnum.SETTLING.getCode().equals(settlementOrderStatus) || + SettlementStatusEnum.SETTLED.getCode().equals(settlementOrderStatus)) { + return; + } + Integer updateStatus = null; + if (SettlementStatusEnum.CANCELED.getCode().equals(settlementOrderStatus)) { + updateStatus = OrderSettlementStatusEnum.NOT_SETTLED.getCode(); + } else { + updateStatus = OrderSettlementStatusEnum.SETTLED.getCode(); + } + // 更新订单表的状态 + orderMainService.updateSettlementStatus(orderIds, updateStatus); + // 更新结算订单状态 + settlementDetailService.updateSettlementOrderStatus(ids, updateStatus); } /** diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java index a063db6..fcdd635 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/SettlementMainController.java @@ -72,12 +72,13 @@ public class SettlementMainController { @ApiOperation("更新结算单状态") @PutMapping("/updateSettlementOrderStatus/{settlementOrderId}/{settlementOrderStatus}") - public ResponseEntity updateSettlementOrderStatus( + public ResponseEntity updateSettlementOrderStatus( @ApiParam(value = "结算订单ID", required = true, example = "1946509536383438850") @PathVariable("settlementOrderId") Long settlementOrderId, @ApiParam(value = "结算单状态: 0=结算中, 1=已确认, 2=已完成, 3=结算完成, 4=已取消", required = true, example = "1") @PathVariable("settlementOrderStatus") Integer settlementOrderStatus) { - return new ResponseEntity<>(orderBiz.updateSettlementOrderStatus(settlementOrderId, settlementOrderStatus),HttpStatus.OK); + orderBiz.updateSettlementOrderStatus(settlementOrderId, settlementOrderStatus); + return new ResponseEntity<>(HttpStatus.OK); } @ApiOperation(value = "获取生成结算单确认列表") diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java index b74c5e5..7fefbec 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderMainPageQueryVO.java @@ -32,7 +32,7 @@ public class OrderMainPageQueryVO { /** * 订单状态 */ - @ApiModelProperty(value = "订单状态") + @ApiModelProperty(value = "订单状态(0=未进行,1=进行中,2=已完成,3=已取消)") private Integer mainOrderStatus; /** @@ -93,7 +93,7 @@ public class OrderMainPageQueryVO { /** * 结算状态 */ - @ApiModelProperty(value = "结算状态: 0=未结算, 1=已结算") + @ApiModelProperty(value = "结算状态: 0=未结算, 1=结算中, 2=结算完成") private Integer settlementStatus; /** diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementDetailService.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementDetailService.java index 9a7ac68..edf0e8e 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementDetailService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementDetailService.java @@ -29,4 +29,12 @@ public interface ISettlementDetailService extends IService { * @return List */ List obtainDetailBySettlementOrderId(Long settlementOrderId); + + /** + * 更新结算单状态 + * + * @param ids id集合 + * @param updateStatus 状态 + */ + void updateSettlementOrderStatus(List ids, Integer updateStatus); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java index def9577..290aed2 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/ISettlementMainService.java @@ -41,4 +41,13 @@ public interface ISettlementMainService extends IService { * @return {@link SettlementMain} */ SettlementMain obtainSettlementMainById(Long settlementOrderId); + + /** + * + * 更新结算单状态 + * + * @param settlementOrderId 结算单ID + * @param settlementOrderStatus 结算单状态: 0=结算中, 1=已确认, 2=已完成, 3=结算完成, 4=已取消 + */ + void updateSettlementStatus(Long settlementOrderId, Integer settlementOrderStatus); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementDetailServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementDetailServiceImpl.java index 0c4a24a..bd94bdd 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementDetailServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementDetailServiceImpl.java @@ -31,4 +31,11 @@ public class SettlementDetailServiceImpl extends ServiceImpl ids, Integer updateStatus) { + this.update(Wrappers.lambdaUpdate(SettlementDetail.class) + .set(SettlementDetail::getSettlementStatus, updateStatus) + .in(SettlementDetail::getId, ids)); + } } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java index 7b0370f..816be4c 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/service/impl/SettlementMainServiceImpl.java @@ -5,6 +5,7 @@ import com.aircraft.modules.order.domain.SettlementMain; import com.aircraft.modules.order.mapper.SettlementMainMapper; import com.aircraft.modules.order.service.ISettlementMainService; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -38,4 +39,11 @@ public class SettlementMainServiceImpl extends ServiceImpllambdaUpdate() + .eq(SettlementMain::getId, settlementOrderId) + .set(SettlementMain::getSettlementStatus, settlementOrderStatus)); + } }