master
lzq 2025-11-11 16:54:55 +08:00
parent 77db899d11
commit d9462239fd
1 changed files with 20 additions and 11 deletions

View File

@ -1159,6 +1159,21 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
Assert.notNull(orderInfoEntity, () -> Exceptions.clierr("订单不存在")); Assert.notNull(orderInfoEntity, () -> Exceptions.clierr("订单不存在"));
OrderStatus orderStatus = orderInfoEntity.getOrderStatus(); OrderStatus orderStatus = orderInfoEntity.getOrderStatus();
Assert.isTrue(orderStatus == OrderStatus.YiJinChang, () -> Exceptions.clierr("当前订单状态,无法出场")); Assert.isTrue(orderStatus == OrderStatus.YiJinChang, () -> Exceptions.clierr("当前订单状态,无法出场"));
OrderCategory orderCategory = orderInfoEntity.getOrderCategory();
Integer settleWeight = orderCarInOutService.truckOut(orderInfoEntity.getCarInOutId(), truckLeavingOrderParam, orderCategory, truckId);
// 结算(目前仅针对清运公司):
// 1) 复制“产品”到 order_expense_items
// 2) 从 expense_items_config 读取可用付费项并按 scope 过滤all / customer_type=QiYe|GeTi / customer 包含 trans_company_id
// 3) 合并集合,计算 total_money 与 settle_money并批量落库。
OrderGoodsEntity entity = orderGoodsService.getById(orderInfoEntity.getGoodsId());
Assert.notNull(entity, () -> Exceptions.clierr("产品不存在"));
if (MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) {
// 计算费用,出厂付费可能需要称重,需要更新付费项
updateOrderItems(orderInfoEntity.getId(), settleWeight, Boolean.FALSE);
orderInfoEntity = this.getById(truckLeavingOrderParam.getOrderId());
}
baseMapper.busyDriver(orderInfoEntity.getDriverId(), Boolean.FALSE); baseMapper.busyDriver(orderInfoEntity.getDriverId(), Boolean.FALSE);
baseMapper.busyTruck(orderInfoEntity.getTruckId(), Boolean.FALSE); baseMapper.busyTruck(orderInfoEntity.getTruckId(), Boolean.FALSE);
PaymentStatus paymentStatus = orderInfoEntity.getPaymentStatus(); PaymentStatus paymentStatus = orderInfoEntity.getPaymentStatus();
@ -1169,33 +1184,27 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.setId(orderInfoEntity.getId()) .setId(orderInfoEntity.getId())
.setOrderStatus(newOrderStatus) .setOrderStatus(newOrderStatus)
); );
OrderCategory orderCategory = orderInfoEntity.getOrderCategory();
// 计算本单净重(或结算重量),作为结算时的数量依据 // 计算本单净重(或结算重量),作为结算时的数量依据
Integer settleWeight = orderCarInOutService.truckOut(orderInfoEntity.getCarInOutId(), truckLeavingOrderParam, orderCategory, truckId);
OrderInfoEntity orderInfoEntity_ = orderInfoEntity;
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
BizTruckEntity truckInfo = baseMapper.getTruckInfo(truckId); BizTruckEntity truckInfo = baseMapper.getTruckInfo(truckId);
String licensePlate = truckInfo.getLicensePlate(); String licensePlate = truckInfo.getLicensePlate();
Websocket.publish(new WsMsg().setEvent("down/order/status_change") Websocket.publish(new WsMsg().setEvent("down/order/status_change")
.setData(MapUtil.builder() .setData(MapUtil.builder()
.put("sn", orderInfoEntity.getSn()) .put("sn", orderInfoEntity_.getSn())
.put("licensePlate", licensePlate) .put("licensePlate", licensePlate)
.put("orderStatus", newOrderStatus) .put("orderStatus", newOrderStatus)
.build())); .build()));
}).exceptionally(e -> { }).exceptionally(e -> {
log.error("订单状态改变事件发布失败,订单{},状态{}", orderInfoEntity.getSn(), newOrderStatus, e); log.error("订单状态改变事件发布失败,订单{},状态{}", orderInfoEntity_.getSn(), newOrderStatus, e);
return null; return null;
}); });
// 结算(目前仅针对清运公司):
// 1) 复制“产品”到 order_expense_items
// 2) 从 expense_items_config 读取可用付费项并按 scope 过滤all / customer_type=QiYe|GeTi / customer 包含 trans_company_id
// 3) 合并集合,计算 total_money 与 settle_money并批量落库。
OrderGoodsEntity entity = orderGoodsService.getById(orderInfoEntity.getGoodsId());
Assert.notNull(entity, () -> Exceptions.clierr("产品不存在"));
// 出厂付费 // 出厂付费
if (MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) { if (MoneyWay.OUT.getVal().equals(entity.getMoneyWay())) {
// 计算费用,出厂付费可能需要称重,需要更新付费项 // 计算费用,出厂付费可能需要称重,需要更新付费项
updateOrderItems(orderInfoEntity.getId(), settleWeight, Boolean.FALSE); // updateOrderItems(orderInfoEntity.getId(), settleWeight, Boolean.FALSE);
// 扣费 // 扣费
return handleCompanyPay(orderInfoEntity, Boolean.FALSE, new BigDecimal("0"), Boolean.FALSE); return handleCompanyPay(orderInfoEntity, Boolean.FALSE, new BigDecimal("0"), Boolean.FALSE);