提交 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 {
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();
List<OrderGoods> orderGoodsList = null;
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
......@@ -108,7 +108,7 @@ public class OrderCancelComponent implements InitializingBean {
log.info("3:货主取消未拉运+未到达货源地吨数");
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
log.info("执行货主取消未拉运+未到达货源地吨数,当前运单个数"+ orderChildren.size());
log.info("执行货主取消未拉运+未到达货源地吨数,当前运单个数" + orderChildren.size());
List<Integer> ids = new LinkedList<>();
for (OrderChild orderChild : orderChildren) {
log.info("取消的运单:{}", JSONUtil.parse(orderChild));
......@@ -162,7 +162,7 @@ public class OrderCancelComponent implements InitializingBean {
}
this.breakContractSettlementOwner(orderNo, orderStatusCode);
this.breakContractSettlementOwner(orderNo, orderStatusCode, param.getCancelType());
log.info("执行货主取消订单更改状态");
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
......@@ -178,7 +178,7 @@ public class OrderCancelComponent implements InitializingBean {
) {
Integer truckDemand = orderGoods.getTruckDemand();
//返回到货单
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight,weight, orderGoods.getId());
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight, weight, orderGoods.getId());
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo());
......@@ -190,7 +190,7 @@ public class OrderCancelComponent implements InitializingBean {
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
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.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
......@@ -206,6 +206,12 @@ public class OrderCancelComponent implements InitializingBean {
}
}
/**
* 客服取消归还吨数
*
* @param orderGoodsNo
* @param weight
*/
public void backFillTonnageForArtificial(String orderGoodsNo, BigDecimal weight) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
......@@ -213,7 +219,7 @@ public class OrderCancelComponent implements InitializingBean {
) {
Integer truckDemand = orderGoods.getTruckDemand();
//返回到货单
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight,weight, orderGoods.getId());
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(weight, weight, orderGoods.getId());
RollbackOrderWeightParam rollbackOrderWeightParam = new RollbackOrderWeightParam();
rollbackOrderWeightParam.setOrderNo(orderGoods.getOrderNo());
......@@ -225,7 +231,7 @@ public class OrderCancelComponent implements InitializingBean {
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
rollbackOrderWeightParam.setOwnResidueCarryWeight(BigDecimal.ZERO);
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.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
......@@ -240,22 +246,22 @@ public class OrderCancelComponent implements InitializingBean {
}
} 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);
Integer orderStatus = orderInfoFeign.getOrderStatus();
log.info("执行处理违约,订单号:{}, updateStatus:{}, 订单状态{}", orderNo, updateStatus, orderStatus);
if (OrderEnum.Status.COMPLETED.getCode().equals(updateStatus) || statusCodeMap.containsKey(orderStatus)) {
try {
breakContractSettlementOwnerService.saveSettlementOwnerForCancelOrder(orderNo);
breakContractSettlementOwnerService.saveSettlementOwnerForCancelOrder(orderInfoFeign.getTransportWeight(), orderInfoFeign.getValidFreightPrice(), orderNo, cancelType);
log.info("执行处理违约完毕");
}catch (Exception e) {
} catch (Exception e) {
log.info("执行处理违约失败{}", e.getMessage());
}
}
......
......@@ -30,6 +30,10 @@ public interface OrderCancelService {
*/
void orderCancelProcess(OrderCancelParam param);
/**
* 客服取消
* @param orderChildNo
*/
void artificialCancelOrder(String orderChildNo);
}
......@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractS
import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
/**
* @author liruixin
* Date 2023-10-24
......@@ -38,7 +40,7 @@ public interface BreakContractSettlementOwnerService {
void saveSettlementOwnerForTonnageDown(OrderAdjustTonnageDownParam param);
void saveSettlementOwnerForCancelOrder(String orderNo);
void saveSettlementOwnerForCancelOrder(BigDecimal transportWeight, BigDecimal validFreightPrice, String orderNo, Integer cancelType);
SettlementPlatformAccountVO getCarrierSettlementPlatformAccount(Integer id);
......
......@@ -69,7 +69,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderCancelComponent orderCancelComponent;
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerConfirmCancelOrderPre(String orderNo) {
......@@ -342,6 +341,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
/**
* 平台取消订单前置(只修改订单相关状态)
*
* @param param
*/
@Override
......@@ -478,6 +478,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
/**
* 执行订单取消后归还吨数
*
* @param param
*/
@Override
......@@ -663,9 +664,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
try {
Result<Object> result = orderFeign.rollbackOrderWeight(rollbackOrderWeightParam);
if (!result.succeed()) {
if (!orderFeign.rollbackOrderWeight(rollbackOrderWeightParam).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
}
......@@ -673,10 +672,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
}
} catch (Exception e) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage());
}
}
@Override
......
......@@ -407,13 +407,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
}
@Override
public void saveSettlementOwnerForCancelOrder(String orderNo) {
//获取订单信息
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if(Objects.isNull(orderInfoFeign)){
log.info("货主取消保存违约结算单获取订单数据为空");
return;
}
public void saveSettlementOwnerForCancelOrder(BigDecimal transportWeight,BigDecimal validFreightPrice,String orderNo,Integer cancelType) {
//获取订单配置的违约金方案
OwnerQuotationDetailVO quotationDetailVO = quotationService.getQuotationByOrderNo(orderNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
......@@ -438,7 +432,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.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 ;//总费用
......@@ -446,7 +440,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
List<OrderGoods> orderGoods = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if(CollectionUtils.isEmpty(orderGoods)){
figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getBeforeRatio());
figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getBeforeRatio());
}else{
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
......@@ -454,7 +448,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
LocalDateTime now = LocalDateTime.now();//当前时间
//没有司机拉运
if(CollectionUtils.isEmpty(orderChilds)){
figure = orderInfoFeign.getTransportWeight().multiply(orderInfoFeign.getValidFreightPrice()).multiply(orderCancelRule.getAfterRatio());
figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getAfterRatio());
}else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal cancelWeight = BigDecimal.ZERO;//可取消的重量
......@@ -477,13 +471,16 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
}
}
BigDecimal noTransitWeight = orderInfoFeign.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(orderInfoFeign.getValidFreightPrice());//未拉运的费用
BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(validFreightPrice);//未拉运的费用
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);
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);
BigDecimal truckFigure = BigDecimal.ZERO;
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);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论