提交 a3957d9a authored 作者: liruixin's avatar liruixin

货主违约金

上级 aa2faa81
...@@ -426,13 +426,18 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -426,13 +426,18 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BreakContractOwnerRuleVO.AutoRule autoRule = JSONObject.parseObject(autoRuleJson, BreakContractOwnerRuleVO.AutoRule.class); BreakContractOwnerRuleVO.AutoRule autoRule = JSONObject.parseObject(autoRuleJson, BreakContractOwnerRuleVO.AutoRule.class);
BreakContractOwnerRuleVO.OrderCancelRule orderCancelRule = autoRule.getOrderCancelRule();//订单取消规则 BreakContractOwnerRuleVO.OrderCancelRule orderCancelRule = autoRule.getOrderCancelRule();//订单取消规则
//运单状态(不包括取消) //运单状态(包括货主取消)
List<Integer> statusList = Arrays.asList( List<Integer> statusList = Arrays.asList(
new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(), new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(), OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(),
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(),
OrderChildEnum.Status.OWNER_CANCEL.getCode(),OrderChildEnum.Status.UNSETTLE.getCode()}); OrderChildEnum.Status.UNSETTLE.getCode()});
//由于已经更新了订单状态为货主取消了
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
statusList.add(OrderChildEnum.Status.OWNER_CANCEL.getCode());
}
BigDecimal figure ;//总费用 BigDecimal figure ;//总费用
...@@ -445,7 +450,6 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -445,7 +450,6 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList); List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
LocalDateTime now = LocalDateTime.now();//当前时间
//没有司机拉运 //没有司机拉运
if(CollectionUtils.isEmpty(orderChilds)){ if(CollectionUtils.isEmpty(orderChilds)){
figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getAfterRatio()); figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getAfterRatio());
...@@ -463,25 +467,33 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -463,25 +467,33 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet())); deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
} }
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.CREATED.getCode()) if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.PAY.getCode()) if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.OWNER_CANCEL.getCode())) {
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode()) cancelWeight = cancelWeight.add(orderChild.getWeight());
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.OWNER_CANCEL.getCode())) { seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),orderChild.getCancelTime())));
cancelWeight = cancelWeight.add(orderChild.getWeight()); }
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),orderChild.getCancelTime()))); }else{
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.CREATED.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())) {
cancelWeight = cancelWeight.add(orderChild.getWeight());
}
} }
} }
BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量 BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(validFreightPrice);//未拉运的费用 BigDecimal noTransitFreight = noTransitWeight.multiply(validFreightPrice);//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight); BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);//总运费
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight) BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP); .divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);//基础违约金
//挂单后,车辆违约金
BigDecimal truckFigure = BigDecimal.ZERO; BigDecimal truckFigure = BigDecimal.ZERO;
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){ if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour()) truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(3600),2, BigDecimal.ROUND_HALF_UP).movePointRight(2); .divide(new BigDecimal(3600),2, BigDecimal.ROUND_HALF_UP).movePointRight(2);
} }
figure = baseFigure.add(truckFigure); figure = baseFigure.add(truckFigure);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论