提交 7e2a1f0d authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into test

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();
}
}
}
...@@ -51,9 +51,9 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -51,9 +51,9 @@ public class OrderCancelComponent implements InitializingBean {
private final BreakContractSettlementOwnerService breakContractSettlementOwnerService; private final BreakContractSettlementOwnerService breakContractSettlementOwnerService;
public static Map<Integer,String> statusCodeMap = new HashMap<>(); public static Map<Integer, String> statusCodeMap = new HashMap<>();
public void ownerProcess(OrderCancelParam param){ public void ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo(); String orderNo = param.getOrderNo();
List<OrderGoods> orderGoodsList = null; List<OrderGoods> orderGoodsList = null;
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode(); Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
...@@ -108,7 +108,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -108,7 +108,7 @@ public class OrderCancelComponent implements InitializingBean {
log.info("3:货主取消未拉运+未到达货源地吨数"); log.info("3:货主取消未拉运+未到达货源地吨数");
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode()); List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
log.info("执行货主取消未拉运+未到达货源地吨数,当前运单个数"+ orderChildren.size()); log.info("执行货主取消未拉运+未到达货源地吨数,当前运单个数" + orderChildren.size());
List<Integer> ids = new LinkedList<>(); List<Integer> ids = new LinkedList<>();
for (OrderChild orderChild : orderChildren) { for (OrderChild orderChild : orderChildren) {
log.info("取消的运单:{}", JSONUtil.parse(orderChild)); log.info("取消的运单:{}", JSONUtil.parse(orderChild));
...@@ -162,7 +162,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -162,7 +162,7 @@ public class OrderCancelComponent implements InitializingBean {
} }
this.breakContractSettlementOwner(orderNo, orderStatusCode); this.breakContractSettlementOwner(orderNo, orderStatusCode, param.getCancelType());
log.info("执行货主取消订单更改状态"); log.info("执行货主取消订单更改状态");
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) { if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
...@@ -178,7 +178,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -178,7 +178,7 @@ public class OrderCancelComponent implements InitializingBean {
) { ) {
Integer truckDemand = orderGoods.getTruckDemand(); Integer truckDemand = orderGoods.getTruckDemand();
//返回到货单 //返回到货单
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight,weight, orderGoods.getId()); orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight, weight, orderGoods.getId());
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam(); RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo()); rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo());
...@@ -190,7 +190,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -190,7 +190,7 @@ public class OrderCancelComponent implements InitializingBean {
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) { if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO); rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(residueWeight); rollbackOrderWeightParam.setPlatformResidueCarryWeight(residueWeight);
}else if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) { } else if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(residueWeight); rollbackOrderWeightParam.setOwnResidueCarryWeight(residueWeight);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO); rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} }
...@@ -206,6 +206,12 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -206,6 +206,12 @@ public class OrderCancelComponent implements InitializingBean {
} }
} }
/**
* 客服取消归还吨数
*
* @param orderGoodsNo
* @param weight
*/
public void backFillTonnageForArtificial(String orderGoodsNo, BigDecimal weight) { public void backFillTonnageForArtificial(String orderGoodsNo, BigDecimal weight) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode()) if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
...@@ -213,7 +219,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -213,7 +219,7 @@ public class OrderCancelComponent implements InitializingBean {
) { ) {
Integer truckDemand = orderGoods.getTruckDemand(); Integer truckDemand = orderGoods.getTruckDemand();
//返回到货单 //返回到货单
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight,weight, orderGoods.getId()); orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight, weight, orderGoods.getId());
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam(); RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo()); rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo());
...@@ -225,7 +231,7 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -225,7 +231,7 @@ public class OrderCancelComponent implements InitializingBean {
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) { if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO); rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(residueWeight); rollbackOrderWeightParam.setPlatformResidueCarryWeight(residueWeight);
}else if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) { } else if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(residueWeight); rollbackOrderWeightParam.setOwnResidueCarryWeight(residueWeight);
rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO); rollbackOrderWeightParam.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} }
...@@ -240,22 +246,22 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -240,22 +246,22 @@ public class OrderCancelComponent implements InitializingBean {
} }
} else { } else {
//返回到货单 //返回到货单
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight,weight, orderGoods.getId()); orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight, weight, orderGoods.getId());
} }
} }
public void breakContractSettlementOwner(String orderNo, Integer updateStatus) { public void breakContractSettlementOwner(String orderNo, Integer updateStatus, Integer cancelType) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
Integer orderStatus = orderInfoFeign.getOrderStatus(); Integer orderStatus = orderInfoFeign.getOrderStatus();
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, cancelType);
log.info("执行处理违约完毕"); log.info("执行处理违约完毕");
}catch (Exception e) { } catch (Exception e) {
log.info("执行处理违约失败{}", e.getMessage()); log.info("执行处理违约失败{}", e.getMessage());
} }
} }
......
...@@ -30,6 +30,10 @@ public interface OrderCancelService { ...@@ -30,6 +30,10 @@ public interface OrderCancelService {
*/ */
void orderCancelProcess(OrderCancelParam param); void orderCancelProcess(OrderCancelParam param);
/**
* 客服取消
* @param orderChildNo
*/
void artificialCancelOrder(String orderChildNo); void artificialCancelOrder(String orderChildNo);
} }
...@@ -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);
......
...@@ -69,7 +69,6 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -69,7 +69,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderCancelComponent orderCancelComponent; private final OrderCancelComponent orderCancelComponent;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerConfirmCancelOrderPre(String orderNo) { public void ownerConfirmCancelOrderPre(String orderNo) {
...@@ -342,6 +341,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -342,6 +341,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
/** /**
* 平台取消订单前置(只修改订单相关状态) * 平台取消订单前置(只修改订单相关状态)
*
* @param param * @param param
*/ */
@Override @Override
...@@ -478,6 +478,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -478,6 +478,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
/** /**
* 执行订单取消后归还吨数 * 执行订单取消后归还吨数
*
* @param param * @param param
*/ */
@Override @Override
...@@ -663,20 +664,14 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -663,20 +664,14 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
try { if (!orderFeign.rollbackOrderWeight(rollbackOrderWeightParam).succeed()) {
Result<Object> result = orderFeign.rollbackOrderWeight(rollbackOrderWeightParam); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
if (!result.succeed()) { }
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
}
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
}
} catch (Exception e) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage());
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
} }
} }
@Override @Override
......
...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论