提交 3cf27bb4 authored 作者: huyufan's avatar huyufan

逆向

上级 491f2cc4
package com.clx.performance.param.mq;
import lombok.Data;
@Data
public class OrderCancelMqParam {
private String orderNo;
// 1:平台 2:货主
private String type;
}
......@@ -96,38 +96,31 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
}
OrderGoods orderGoods = optional.get();
List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChild(orderGoodsNo);
if (CollectionUtil.isEmpty(orderChildren)) {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0) {
//更新货单已完成
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode());
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0) {
//更新货单已完成
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} else {
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(orderGoods.getResidueTransportWeight());
if (orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())
|| orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(orderGoods.getResidueTransportWeight());
if (orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())
|| orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(orderGoods.getResidueTransportWeight());
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(orderGoods.getResidueTransportWeight());
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(orderGoods.getResidueTransportWeight());
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(orderGoods.getResidueTransportWeight());
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
}
orderFeign.rollbackOrderWeight(param);
//更新已完结,并设置剩余吨数为0
orderGoodsDao.updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(orderGoods.getId(), OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
orderFeign.rollbackOrderWeight(param);
//更新已完结,并设置剩余吨数为0
orderGoodsDao.updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(orderGoods.getId(), OrderGoodsStatusEnum.Status.COMPLETED.getCode());
log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue());
} else {
log.info("当前还存在正在拉运的运单,推测一天再进行逻辑处理");
expireProduceByLastOrderTime(LocalDateTime.now().plusDays(1), orderGoodsNo);
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode());
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoodsNo);
......@@ -184,7 +177,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
childSum.add(orderChild.getWeight());
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
......
......@@ -133,9 +133,22 @@ public class GoodsOrderController {
@ApiOperation(value = "取消订单获取弹窗样式", notes = "<br>By:胡宇帆")
@GetMapping("/orderCancel")
public Result<String> orderCancel(@RequestParam(value = "orderNo") String orderNo) {
return Result.ok(orderGoodsService.orderCancel(orderNo));
@GetMapping("/orderCancelStyle")
public Result<String> orderCancelStyle(@RequestParam(value = "orderNo") String orderNo) {
return Result.ok(orderGoodsService.orderCancelStyle(orderNo));
}
@ApiOperation(value = "取消货单获取弹窗样式", notes = "<br>By:胡宇帆")
@GetMapping("/orderGoodsCancelStyle")
public Result<String> orderGoodsCancelStyle(@RequestParam(value = "orderGoodsNo") String orderGoodsNo) {
return Result.ok(orderGoodsService.orderGoodsCancelStyle(orderGoodsNo));
}
@ApiOperation(value = "取消货单", notes = "<br>By:胡宇帆")
@GetMapping("/orderGoodsCancel")
public Result<Object> orderGoodsCancel(@RequestParam(value = "orderGoodsNo") String orderGoodsNo) {
orderGoodsService.orderGoodsCancel(orderGoodsNo);
return Result.ok();
}
@ApiOperation(value = "获取当前订单可取消吨数", notes = "<br>By:胡宇帆")
......
......@@ -63,6 +63,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> getOrderChildBussInfo(String truckNo);
List<OrderChild> selectListByOrderGoodsNo(String orderGoodsNo);
Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param);
List<OrderChild> listOrderChild(List<Integer> status);
......@@ -78,7 +80,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
@Param("list")List<String> orderGoodsNoList
);
List<OrderChild> selectResidueWeight(String orderNo);
List<OrderChild> selectResidueWeight(String orderNo,Integer status);
/**
* 查询在途运单
......
package com.clx.performance.dao.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -259,9 +260,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public List<OrderChild> selectResidueWeight(String orderNo) {
public List<OrderChild> selectResidueWeight(String orderNo, Integer status) {
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderNo,orderNo)
.lt(OrderChild::getStatus, OrderChildEnum.Status.ARRIVE_SEND.getCode())
.lt(ObjectUtil.isNotEmpty(status),OrderChild::getStatus, status)
);
}
......@@ -298,4 +299,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return baseMapper.selectList(query);
}
@Override
public List<OrderChild> selectListByOrderGoodsNo(String orderGoodsNo) {
//查询小于 100(完成)的运单都属于在途
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo)
.notIn(OrderChild::getStatus, OrderChildEnum.Status.DRIVER_CANCEL.getCode(),OrderChildEnum.Status.PLATFORM_CANCEL.getCode(),OrderChildEnum.Status.OWNER_CANCEL.getCode())
);
}
}
package com.clx.performance.listener;
import cn.hutool.json.JSONUtil;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.mq.OrderCancelMqParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.base.Optional;
......@@ -23,12 +25,19 @@ public class OrderCancelHandler {
@Autowired
private OrderCancelService orderCancelService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
@RabbitListener(queues = RabbitKeyConstants.ORDER_CANCEL_QUEUE)
public void onMessage(String message) {
log.info("处理订单取消监听器执行,订单No为{}", message);
if (StringUtils.isBlank(message)) {
return;
OrderCancelMqParam param = JSONUtil.toBean(message, OrderCancelMqParam.class);
if (StringUtils.equals(param.getType(), "1")) {
orderCancelService.platformCancelOrder(param.getOrderNo());
} else {
orderCancelService.ownerCancelOrder(param.getOrderNo());
}
orderCancelService.ownerCancelOrder(message);
return;
// if (StringUtils.isBlank(message)) {
// return;
// }
// orderCancelService.ownerCancelOrder(message);
}
}
......@@ -86,7 +86,7 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime expectSendTime; //预计到达货源地时间
private LocalDateTime expectReceiveTime; //预计到达目的地时间
private String settlementAccountPeriod; //结算账期 1拉运完成结 2月结
private Integer settlementAccountPeriod; //结算账期 1拉运完成结 2月结
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -2,6 +2,10 @@ package com.clx.performance.service;
public interface OrderCancelService {
void platformCancelOrderPre(String orderNo);
void platformCancelOrder(String orderNo);
void ownerCancelOrderPre(String orderNo);
void ownerCancelOrder(String orderNo);
......
......@@ -10,7 +10,6 @@ import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.result.Result;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -37,7 +36,12 @@ public interface OrderGoodsService {
List<OrderGoods> getOrderGoodsList(String orderNo, LocalDateTime lastArriveSendTime);
String orderCancel(String orderNo);
/**
* 获取订单取消的时候订单样式
* @param orderNo
* @return
*/
String orderCancelStyle(String orderNo);
BigDecimal orderCancelResidueWeight(String orderNo,String optionType);
......@@ -46,4 +50,17 @@ public interface OrderGoodsService {
void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param);
Boolean updateOrderGoodsStopFlag(String orderNo,Integer stopFlag);
/**
* 获取货单取消的时候弹窗样式
* @param orderGoodsNo
* @return
*/
String orderGoodsCancelStyle(String orderGoodsNo);
/**
* 取消货单
* @param orderGoodsNo
*/
void orderGoodsCancel(String orderGoodsNo);
}
package com.clx.performance.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RabbitKeyConstants;
......@@ -13,6 +16,7 @@ import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.mq.OrderCancelMqParam;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
......@@ -46,9 +50,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
public void platformCancelOrderPre(String orderNo) {
// FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
// BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isEmpty(orderGoodsList)) {
......@@ -57,17 +61,26 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
log.info("执行平台订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("1");
mqParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
return;
}
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null);
if (CollectionUtil.isEmpty(orderChildrenList)) {
//说明此刻未产生运单
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
//说明此刻未产生运单
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
......@@ -76,16 +89,290 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
} else {
BigDecimal orderChildResidueWeight = orderChildrenList.stream()
.map(OrderChild::getWeight)
.reduce(BigDecimal.ZERO, BigDecimal::add);
if (orderChildResidueWeight.compareTo(orderTransportWeight) == 0) {
throw new RuntimeException("当前订单已无余量可取消");
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
List<OrderChild> orderChildren = orderChildMap.get(orderGoods.getOrderGoodsNo());
if (CollectionUtil.isEmpty(orderChildren)) {
//没有运单,直接是取消
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) != 0) {
//货单还有余量,是已完结
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} else {
List<OrderChild> orderChildrenListComplete = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.COMPLETE.getCode());
if (CollectionUtil.isNotEmpty(orderChildrenListComplete)) {
Map<String, List<OrderChild>> orderChildCompleteMap = orderChildrenListComplete.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
List<OrderChild> childList = orderChildCompleteMap.get(orderGoods.getOrderGoodsNo());
BigDecimal reduce = childList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
if (reduce.compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} else {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
}
}
}
orderGoodsDao.updateEntityByKey(update);
}
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
}
log.info("执行平台订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("1");
mqParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void platformCancelOrder(String orderNo) {
log.info("开始执行平台订单取消吨数回填");
FeignOrderVO orderInfoFeignVO = orderFeign.getOrderInfoFeign(orderNo);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<Integer, BigDecimal> truckDemandMap = new HashMap<>();
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO);
//非部分平台车辆拉运
if (!TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode().equals(orderInfoFeignVO.getTruckDemand())) {
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
.collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
List<OrderChild> orderChildren = orderChildMap.get(orderGoodsNo);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildren)) {
sum = orderChildren.stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update.setResidueTransportWeight(BigDecimal.ZERO);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
Integer truckDemand = orderInfoFeignVO.getTruckDemand();
BigDecimal residueWeight = truckDemandMap.get(truckDemand);
if (residueWeight.compareTo(BigDecimal.ZERO) == 0) {
log.info("当前订单对应的货单无需吨数回填,订单编号{}", orderNo);
return;
}
//归还吨数
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight);
}
if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
orderFeign.rollbackOrderWeight(param);
} else {
Map<Integer, BigDecimal> vehicleUsageMap = new HashMap<>();
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
//货单
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
.collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
//运单
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoodsNo))) {
sum = orderChildMap.get(orderGoodsNo).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
//归还吨数
BigDecimal platformResidueSum = vehicleUsageMap.get(1);
BigDecimal ownResidueSum = vehicleUsageMap.get(2);
BigDecimal residueSum = platformResidueSum.add(ownResidueSum);
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
param.setResidueWeight(residueSum);
param.setPlatformResidueCarryWeight(platformResidueSum);
param.setOwnResidueCarryWeight(ownResidueSum);
orderFeign.rollbackOrderWeight(param);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) {
//FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isEmpty(orderGoodsList)) {
//未产生货单
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("2");
mqParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
return;
}
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null);
if (CollectionUtil.isEmpty(orderChildrenList)) {
//说明此刻未产生运单
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else {
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
List<OrderChild> orderChildren = orderChildMap.get(orderGoods.getOrderGoodsNo());
if (CollectionUtil.isEmpty(orderChildren)) {
//没有运单,直接是取消
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) != 0) {
//货单还有余量,是已完结
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} else {
List<OrderChild> orderChildrenListComplete = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.COMPLETE.getCode());
if (CollectionUtil.isNotEmpty(orderChildrenListComplete)) {
Map<String, List<OrderChild>> orderChildCompleteMap = orderChildrenListComplete.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
List<OrderChild> childList = orderChildCompleteMap.get(orderGoods.getOrderGoodsNo());
BigDecimal reduce = childList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
if (reduce.compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} else {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
}
}
}
orderGoodsDao.updateEntityByKey(update);
}
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
......@@ -94,8 +381,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
log.info("执行订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
Message message = MessageBuilder.withBody(orderNo.getBytes()).build();
log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("2");
mqParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
......@@ -115,7 +405,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if (!TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode().equals(orderInfoFeignVO.getTruckDemand())) {
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
......@@ -133,18 +423,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
List<OrderChild> orderChildren = orderChildMap.get(orderGoodsNo);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildren)) {
sum = orderChildren.stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
......@@ -158,37 +451,43 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
Integer truckDemand = orderInfoFeignVO.getTruckDemand();
BigDecimal residueWeight = truckDemandMap.get(truckDemand);
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfoFeignVO.getId());
if (residueWeight.compareTo(BigDecimal.ZERO) == 0) {
log.info("当前订单对应的货单无需吨数回填,订单编号{}", orderNo);
return;
}
//归还吨数
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
param.setUpdateType("2");
param.setResidueWeight(residueWeight.add(new BigDecimal(orderInfoFeignVO.getResidueWeight())));
param.setPlatWeight(residueWeight);
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight);
}
if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setUpdateType("3");
param.setResidueWeight(residueWeight.add(new BigDecimal(orderInfoFeignVO.getResidueWeight())));
param.setOwnWeight(residueWeight);
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
orderFeign.updateOrderInfoResidueWeight(param);
orderFeign.rollbackOrderWeight(param);
} else {
Map<Integer, BigDecimal> vehicleUsageMap = new HashMap<>();
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
......@@ -203,8 +502,12 @@ public class OrderCancelServiceImpl implements OrderCancelService {
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoodsNo))) {
sum = orderChildMap.get(orderGoodsNo).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight().add(sum)));
......@@ -212,7 +515,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
......@@ -227,24 +530,21 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
String platformResidueCarryWeight = orderInfoFeignVO.getPlatformResidueCarryWeight();
String ownResidueCarryWeight = orderInfoFeignVO.getOwnResidueCarryWeight();
BigDecimal platformResidueSum = new BigDecimal(platformResidueCarryWeight).add(vehicleUsageMap.get(1));
BigDecimal ownResidueSum = new BigDecimal(ownResidueCarryWeight).add(vehicleUsageMap.get(2));
BigDecimal residueSum = new BigDecimal(orderInfoFeignVO.getResidueWeight()).add(platformResidueSum).add(ownResidueSum);
UpdateOrderInfoResidueWeightParam param = new UpdateOrderInfoResidueWeightParam();
param.setOrderId(orderInfoFeignVO.getId());
param.setUpdateType("4");
//归还吨数
BigDecimal platformResidueSum = vehicleUsageMap.get(1);
BigDecimal ownResidueSum = vehicleUsageMap.get(2);
BigDecimal residueSum = platformResidueSum.add(ownResidueSum);
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
param.setResidueWeight(residueSum);
param.setPlatWeight(platformResidueSum);
param.setOwnWeight(ownResidueSum);
orderFeign.updateOrderInfoResidueWeight(param);
param.setPlatformResidueCarryWeight(platformResidueSum);
param.setOwnResidueCarryWeight(ownResidueSum);
orderFeign.rollbackOrderWeight(param);
}
......
package com.clx.performance.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsLogsEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsDriverTruck;
......@@ -170,7 +175,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
@Override
public String orderCancel(String orderNo) {
public String orderCancelStyle(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
Integer orderStatus = orderInfoFeign.getOrderStatus();
......@@ -213,11 +218,11 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public BigDecimal orderCancelResidueWeight(String orderNo, String optionType) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if (StringUtils.equals(optionType,"1")) {
if (StringUtils.equals(optionType, "1")) {
return new BigDecimal(orderInfoFeign.getResidueWeight());
} else {
String residueWeight = orderInfoFeign.getResidueWeight();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo);
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
BigDecimal childResidueWeight = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal orderGoodsResidueWeight = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo).stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal::add).get();
......@@ -235,18 +240,61 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
@Transactional(rollbackFor = Exception.class)
@Override
public void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param) {
OrderGoods orderGoods= orderGoodsDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
BigDecimal oldPendingOrderFreight = orderGoods.getPendingOrderFreight().divide(new BigDecimal("100"));
orderGoodsDao.updatePendingOrderFreightById(param.getId(),param.getPendingOrderFreight());
orderGoodsDao.updatePendingOrderFreightById(param.getId(), param.getPendingOrderFreight());
BigDecimal newPendingOrderFreight = param.getPendingOrderFreight().divide(new BigDecimal("100"));
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
//记录货单调价日志
orderGoodsLogService.saveLog(orderGoods.getOrderGoodsNo(),loginUserInfo.getUserNo(),loginUserInfo.getUserName(),
OrderGoodsLogsEnum.Type.ADJUST_PRICE.getName(),String.format("调价前%s元,调价后%s元",oldPendingOrderFreight,newPendingOrderFreight) );
orderGoodsLogService.saveLog(orderGoods.getOrderGoodsNo(), loginUserInfo.getUserNo(), loginUserInfo.getUserName(),
OrderGoodsLogsEnum.Type.ADJUST_PRICE.getName(), String.format("调价前%s元,调价后%s元", oldPendingOrderFreight, newPendingOrderFreight));
}
@Override
public Boolean updateOrderGoodsStopFlag(String orderNo,Integer stopFlag) {
return orderGoodsDao.updateStopFlagByOrderNo(orderNo,stopFlag);
public Boolean updateOrderGoodsStopFlag(String orderNo, Integer stopFlag) {
return orderGoodsDao.updateStopFlagByOrderNo(orderNo, stopFlag);
}
@Override
public String orderGoodsCancelStyle(String orderGoodsNo) {
List<OrderChild> orderChildren = orderChildDao.selectListByOrderGoodsNo(orderGoodsNo);
if (CollectionUtils.isNotEmpty(orderChildren)) {
return "selectTruck";
} else {
return "onlyRemark";
}
}
@Override
public void orderGoodsCancel(String orderGoodsNo) {
Optional<OrderGoods> optional = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo);
if (!optional.isPresent()) {
return;
}
OrderGoods orderGoods = optional.get();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderGoods.getOrderGoodsNo(), OrderChildEnum.Status.ARRIVE_SEND.getCode());
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(orderChildList)) {
sum = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
BigDecimal residueWeight = orderGoods.getResidueTransportWeight().add(sum);
param.setResidueWeight(residueWeight);
param.setOrderNo(orderGoods.getOrderNo());
if (!orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight);
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
}
log.info("取消货单,参数:{}", JSONUtil.parse(param));
orderFeign.rollbackOrderWeight(param);
}
}
package com.clx.performance;
import cn.hutool.json.JSONUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.OrderOwnTruckVo;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.param.mq.OrderCancelMqParam;
import com.clx.performance.service.OrderCancelService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -46,11 +51,19 @@ public class JobTest {
@Test
public void test1() {
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("2");
mqParam.setOrderNo("123");
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
//CX2023092600223 平台已承接的订单,没有产生货单
//CX2023101600386 truckDemand 类型是2,且有货单,有运单, 没有未到达货源地的运单
//PT2023092600207 类型都是1,且有运单
//orderCancelService.ownerCancelOrderPre("PT2023102600466");
orderCancelService.ownerCancelOrder("PT2023102600466");
//orderCancelService.ownerCancelOrderPre("PT2023102700469");
//orderCancelService.ownerCancelOrder("PT2023102600466");
System.out.println();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论