|
|
@@ -18,6 +18,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.Optional;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
|
/**
|
|
|
@@ -118,8 +119,9 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
|
|
|
if (!(GatekeeperStatusEnum.PENDING_ENTRY.getCode().equals(gatekeeper.getStatus()))) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "当前门卫订单状态异常,不能推进为待放行状态!");
|
|
|
}
|
|
|
- //修改门卫:待放行
|
|
|
- gatekeeper.setStatus(GatekeeperStatusEnum.PENDING_RELEASE.getCode());
|
|
|
+ //修改门卫:卸货已进场
|
|
|
+ gatekeeper.setStatus(GatekeeperStatusEnum.IN_YARD.getCode());
|
|
|
+ gatekeeper.setIntoTime(new Date());
|
|
|
gatekeeperWaybillOrderRepository.updateById(gatekeeper);
|
|
|
}
|
|
|
|
|
|
@@ -162,14 +164,52 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
|
|
|
}
|
|
|
|
|
|
- //1.填充运单卸货单皮重
|
|
|
- takeTicket.setTareAmount(param.getTareAmount());
|
|
|
- waybillOrderTicketRepository.updateById(takeTicket);
|
|
|
+ // 1.填充运单卸货单皮重、净重
|
|
|
+ BigDecimal unloadAmount = updateTareAmount(param, takeTicket);
|
|
|
+
|
|
|
+ // 2.填充子运单卸货净重
|
|
|
+ updateUnLoadAmount(param, waybillOrder, unloadAmount);
|
|
|
|
|
|
- // 2.创建卸货过磅记录
|
|
|
+ // 3.创建卸货过磅记录
|
|
|
createWeighbridges(waybillOrder);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 填充皮重、卸货净重
|
|
|
+ * @param param
|
|
|
+ * @param takeTicket
|
|
|
+ */
|
|
|
+ private BigDecimal updateTareAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrderTicket takeTicket) {
|
|
|
+ //皮重
|
|
|
+ BigDecimal tareAmount = param.getTareAmount();
|
|
|
+ //毛重
|
|
|
+ BigDecimal grossAmount = takeTicket.getGrossAmount();
|
|
|
+ //卸货净重
|
|
|
+ BigDecimal unloadAmount = grossAmount.subtract(Optional.ofNullable(tareAmount).orElse(BigDecimal.ZERO));
|
|
|
+
|
|
|
+ takeTicket.setTareAmount(tareAmount);
|
|
|
+ takeTicket.setAmount(unloadAmount);
|
|
|
+ waybillOrderTicketRepository.updateById(takeTicket);
|
|
|
+ return unloadAmount;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 填充装货净重
|
|
|
+ * @param param
|
|
|
+ * @param waybillOrder
|
|
|
+ * @param unloadAmount
|
|
|
+ */
|
|
|
+ private void updateUnLoadAmount(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal unloadAmount) {
|
|
|
+ //更新子运单卸货净重
|
|
|
+ KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
+ subtask.setUnloadAmount(unloadAmount);
|
|
|
+ subtask.setUnloadTime(new Date());
|
|
|
+ waybillOrderSubtaskRepository.updateById(subtask);
|
|
|
+ log.info("物流运单离场过磅成功!运单ID: {}, 皮重: {}, 卸货货净重: {}", param.getWaybillOrderId(), param.getTareAmount(), unloadAmount);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
protected void calculateAutoDispatchScore(WaybillOrderUnloadingWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
|
|
|
@@ -183,7 +223,7 @@ public class UnloadingWeighHandler extends AbstractWaybillOrderHandler<WaybillOr
|
|
|
@Override
|
|
|
protected void getStatus(KwtWaybillOrder waybillOrder) {
|
|
|
// 校验是否第一次卸货过磅
|
|
|
- CarWaybillV1Enum status = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING)
|
|
|
+ CarWaybillV1Enum status = Objects.equals(waybillOrder.getStatus(), CarWaybillV1Enum.WAIT_LOADING.getCode())
|
|
|
? CarWaybillV1Enum.UNLOADING_POINT : CarWaybillV1Enum.UNLOADING_WAIT_LEAVE;
|
|
|
|
|
|
// 1. 修改运单状态
|