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

违约结算单金额计算

上级 c86cad94
...@@ -9,6 +9,7 @@ import com.clx.order.feign.OrderFeign; ...@@ -9,6 +9,7 @@ import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO; import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.breakcontract.BreakContractOwnerRecordDao; import com.clx.performance.dao.breakcontract.BreakContractOwnerRecordDao;
import com.clx.performance.dao.breakcontract.BreakContractOwnerRuleDao; import com.clx.performance.dao.breakcontract.BreakContractOwnerRuleDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao; import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao;
...@@ -17,6 +18,7 @@ import com.clx.performance.dao.settle.SettlementPlatformAccountDao; ...@@ -17,6 +18,7 @@ import com.clx.performance.dao.settle.SettlementPlatformAccountDao;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.extranal.order.QuotationService; import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.breakcontract.BreakContractOwnerRecord; import com.clx.performance.model.breakcontract.BreakContractOwnerRecord;
import com.clx.performance.model.breakcontract.BreakContractOwnerRule; import com.clx.performance.model.breakcontract.BreakContractOwnerRule;
import com.clx.performance.model.breakcontract.BreakContractSettlementLog; import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
...@@ -80,6 +82,8 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -80,6 +82,8 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
private final QuotationService quotationService; private final QuotationService quotationService;
private final BreakContractOwnerRecordService breakContractOwnerRecordService; private final BreakContractOwnerRecordService breakContractOwnerRecordService;
private final BreakContractOwnerRecordDao breakContractOwnerRecordDao; private final BreakContractOwnerRecordDao breakContractOwnerRecordDao;
private final OrderGoodsDao orderGoodsDao;
...@@ -333,32 +337,44 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -333,32 +337,44 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
OrderChildEnum.Status.UNSETTLE.getCode()}); OrderChildEnum.Status.UNSETTLE.getCode()});
BigDecimal figure ;//总费用 BigDecimal figure ;//总费用
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(param.getOrderNo(), statusList);
if(CollectionUtils.isEmpty(orderChilds)){ //订单号查询货单
List<OrderGoods> orderGoods = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
if(CollectionUtils.isEmpty(orderGoods)){
BigDecimal totalFreight = param.getTransportWeight().multiply(param.getValidFreightPrice()); BigDecimal totalFreight = param.getTransportWeight().multiply(param.getValidFreightPrice());
figure = totalFreight.multiply(reduceRule.getBeforeRatio()).multiply(param.getWeight()) figure = totalFreight.multiply(reduceRule.getBeforeRatio()).multiply(param.getWeight())
.divide(param.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP); .divide(param.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
}else{ }else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal deliveredFreight = BigDecimal.ZERO;//已拉运的费用
for(OrderChild orderChild : orderChilds){
if(orderChild.getLoadNet() != null){
deliveredWeight = deliveredWeight.add(orderChild.getWeight()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getWeight()));
}else{
deliveredWeight = deliveredWeight.add(orderChild.getLoadNet()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(param.getOrderNo(), statusList);
if(CollectionUtils.isEmpty(orderChilds)){
BigDecimal totalFreight = param.getTransportWeight().multiply(param.getValidFreightPrice());
figure = totalFreight.multiply(reduceRule.getAfterRatio()).multiply(param.getWeight())
.divide(param.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
}else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal deliveredFreight = BigDecimal.ZERO;//已拉运的费用
for(OrderChild orderChild : orderChilds){
if(orderChild.getLoadNet() != null){
deliveredWeight = deliveredWeight.add(orderChild.getWeight()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getWeight()));
}else{
deliveredWeight = deliveredWeight.add(orderChild.getLoadNet()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
}
BigDecimal noTransitWeight = param.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(param.getValidFreightPrice());//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);
figure = totalFreight.multiply(reduceRule.getAfterRatio()).multiply(param.getWeight())
.divide(param.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
} }
BigDecimal noTransitWeight = param.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(param.getValidFreightPrice());//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);
figure = totalFreight.multiply(reduceRule.getAfterRatio()).multiply(param.getWeight())
.divide(param.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
} }
//组装参数 生成违约记录 违约计费 违约结算单 //组装参数 生成违约记录 违约计费 违约结算单
BreakContractOwnerRecordAddParam ownerRecordAddParam = new BreakContractOwnerRecordAddParam(); BreakContractOwnerRecordAddParam ownerRecordAddParam = new BreakContractOwnerRecordAddParam();
ownerRecordAddParam.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode()); ownerRecordAddParam.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode());
...@@ -425,44 +441,54 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -425,44 +441,54 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
OrderChildEnum.Status.UNSETTLE.getCode()}); OrderChildEnum.Status.UNSETTLE.getCode()});
BigDecimal figure ;//总费用 BigDecimal figure ;//总费用
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
LocalDateTime now = LocalDateTime.now();//当前时间 //订单号查询货单
//没有司机拉运 List<OrderGoods> orderGoods = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if(CollectionUtils.isEmpty(orderChilds)){
if(CollectionUtils.isEmpty(orderGoods)){
figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getBeforeRatio()); figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getBeforeRatio());
}else{ }else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal cancelWeight = BigDecimal.ZERO;//可取消的重量
BigDecimal deliveredFreight = BigDecimal.ZERO;//已拉运的费用
BigDecimal seconds = BigDecimal.ZERO;//总毫秒数
for(OrderChild orderChild : orderChilds){
if(orderChild.getLoadNet() != null){
deliveredWeight = deliveredWeight.add(orderChild.getWeight()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getWeight()));
}else{
deliveredWeight = deliveredWeight.add(orderChild.getLoadNet()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.CREATED.getCode()) List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())) { LocalDateTime now = LocalDateTime.now();//当前时间
cancelWeight = cancelWeight.add(orderChild.getWeight()); //没有司机拉运
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),now))); if(CollectionUtils.isEmpty(orderChilds)){
} figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getAfterRatio());
}else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal cancelWeight = BigDecimal.ZERO;//可取消的重量
BigDecimal deliveredFreight = BigDecimal.ZERO;//已拉运的费用
BigDecimal seconds = BigDecimal.ZERO;//总毫秒数
for(OrderChild orderChild : orderChilds){
if(orderChild.getLoadNet() != null){
deliveredWeight = deliveredWeight.add(orderChild.getWeight()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getWeight()));
}else{
deliveredWeight = deliveredWeight.add(orderChild.getLoadNet()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
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());
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),now)));
}
}
BigDecimal noTransitWeight = orderInfoFeign.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(orderInfoFeign.getValidFreightPrice());//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(orderInfoFeign.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
BigDecimal truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(60),2, BigDecimal.ROUND_HALF_UP);
figure = baseFigure.add(truckFigure);
} }
BigDecimal noTransitWeight = orderInfoFeign.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(orderInfoFeign.getValidFreightPrice());//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(orderInfoFeign.getTransportWeight(),2, BigDecimal.ROUND_HALF_UP);
BigDecimal truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(60),2, BigDecimal.ROUND_HALF_UP);
figure = baseFigure.add(truckFigure);
} }
//组装参数 生成违约记录 违约计费 违约结算单 //组装参数 生成违约记录 违约计费 违约结算单
BreakContractOwnerRecordAddParam ownerRecordAddParam = new BreakContractOwnerRecordAddParam(); BreakContractOwnerRecordAddParam ownerRecordAddParam = new BreakContractOwnerRecordAddParam();
ownerRecordAddParam.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode()); ownerRecordAddParam.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.OWNER.getCode());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论