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

违约结算单违约金额计算

上级 32bf9184
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum CancelOrderEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
NOT_CHILD(1, "违约无运单"),
NOT_TRANSPORTED(2, "取消未拉运吨数"),
NOT_ARRIVE(3, "取消未到达货源地"),
;
private final Integer code;
private final String name;
public static Optional<Type> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
}
}
...@@ -252,7 +252,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -252,7 +252,7 @@ public class OrderCancelComponent implements InitializingBean {
log.info("执行处理违约,订单号:{}, updateStatus:{}, 订单状态{}", orderNo, updateStatus, orderStatus); log.info("执行处理违约,订单号:{}, updateStatus:{}, 订单状态{}", orderNo, updateStatus, orderStatus);
if (OrderEnum.Status.COMPLETED.getCode().equals(updateStatus) || statusCodeMap.containsKey(orderStatus)) { if (OrderEnum.Status.COMPLETED.getCode().equals(updateStatus) || statusCodeMap.containsKey(orderStatus)) {
try { try {
breakContractSettlementOwnerService.saveSettlementOwnerForCancelOrder(orderNo); breakContractSettlementOwnerService.saveSettlementOwnerForCancelOrder(orderInfoFeign.getTransportWeight(),orderInfoFeign.getValidFreightPrice(),orderNo,2);
log.info("执行处理违约完毕"); log.info("执行处理违约完毕");
}catch (Exception e) { }catch (Exception e) {
......
...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractS ...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractS
import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO; import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
/** /**
* @author liruixin * @author liruixin
* Date 2023-10-24 * Date 2023-10-24
...@@ -38,7 +40,7 @@ public interface BreakContractSettlementOwnerService { ...@@ -38,7 +40,7 @@ public interface BreakContractSettlementOwnerService {
void saveSettlementOwnerForTonnageDown(OrderAdjustTonnageDownParam param); void saveSettlementOwnerForTonnageDown(OrderAdjustTonnageDownParam param);
void saveSettlementOwnerForCancelOrder(String orderNo); void saveSettlementOwnerForCancelOrder(BigDecimal transportWeight, BigDecimal validFreightPrice, String orderNo, Integer cancelType);
SettlementPlatformAccountVO getCarrierSettlementPlatformAccount(Integer id); SettlementPlatformAccountVO getCarrierSettlementPlatformAccount(Integer id);
......
...@@ -407,13 +407,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -407,13 +407,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
} }
@Override @Override
public void saveSettlementOwnerForCancelOrder(String orderNo) { public void saveSettlementOwnerForCancelOrder(BigDecimal transportWeight,BigDecimal validFreightPrice,String orderNo,Integer cancelType) {
//获取订单信息
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if(Objects.isNull(orderInfoFeign)){
log.info("货主取消保存违约结算单获取订单数据为空");
return;
}
//获取订单配置的违约金方案 //获取订单配置的违约金方案
OwnerQuotationDetailVO quotationDetailVO = quotationService.getQuotationByOrderNo(orderNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); OwnerQuotationDetailVO quotationDetailVO = quotationService.getQuotationByOrderNo(orderNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
...@@ -438,7 +432,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -438,7 +432,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
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.UNSETTLE.getCode()}); OrderChildEnum.Status.OWNER_CANCEL.getCode(),OrderChildEnum.Status.UNSETTLE.getCode()});
BigDecimal figure ;//总费用 BigDecimal figure ;//总费用
...@@ -446,7 +440,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -446,7 +440,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
List<OrderGoods> orderGoods = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); List<OrderGoods> orderGoods = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if(CollectionUtils.isEmpty(orderGoods)){ if(CollectionUtils.isEmpty(orderGoods)){
figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getBeforeRatio()); figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getBeforeRatio());
}else{ }else{
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList); List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
...@@ -454,7 +448,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -454,7 +448,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
LocalDateTime now = LocalDateTime.now();//当前时间 LocalDateTime now = LocalDateTime.now();//当前时间
//没有司机拉运 //没有司机拉运
if(CollectionUtils.isEmpty(orderChilds)){ if(CollectionUtils.isEmpty(orderChilds)){
figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getAfterRatio()); figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getAfterRatio());
}else{ }else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量 BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal cancelWeight = BigDecimal.ZERO;//可取消的重量 BigDecimal cancelWeight = BigDecimal.ZERO;//可取消的重量
...@@ -477,13 +471,16 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -477,13 +471,16 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
} }
} }
BigDecimal noTransitWeight = orderInfoFeign.getTransportWeight().subtract(deliveredWeight);//未拉运的重量 BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(orderInfoFeign.getValidFreightPrice());//未拉运的费用 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(orderInfoFeign.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP); .divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);
BigDecimal truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour()) BigDecimal truckFigure = BigDecimal.ZERO;
.divide(new BigDecimal(60),2, BigDecimal.ROUND_HALF_UP); if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE)){
truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(3600),2, BigDecimal.ROUND_HALF_UP);
}
figure = baseFigure.add(truckFigure); figure = baseFigure.add(truckFigure);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论