提交 c5365ef7 authored 作者: huyufan's avatar huyufan

优化相关代码及承运同步网络货运异步

上级 20f64779
...@@ -11,19 +11,16 @@ import com.clx.order.vo.feign.FeignOrderInfoVO; ...@@ -11,19 +11,16 @@ import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dto.OrderCancelResult;
import com.clx.performance.enums.*; import com.clx.performance.enums.*;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService; import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService; import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService; import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.service.child.OrderChildPostService; import com.clx.performance.service.child.OrderChildPostService;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
...@@ -39,6 +36,7 @@ import org.springframework.stereotype.Component; ...@@ -39,6 +36,7 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.function.BiFunction;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
...@@ -66,11 +64,6 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -66,11 +64,6 @@ public class OrderCancelComponent implements InitializingBean {
@Autowired @Autowired
private BreakContractSettlementOwnerService breakContractSettlementOwnerService; private BreakContractSettlementOwnerService breakContractSettlementOwnerService;
public static Map<Integer, String> statusCodeMap = new HashMap<>();
@Autowired
private IntegralMqService integralMqService;
@Autowired @Autowired
private OrderChildLogService orderChildLogService; private OrderChildLogService orderChildLogService;
...@@ -84,80 +77,51 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -84,80 +77,51 @@ public class OrderCancelComponent implements InitializingBean {
private OrderGoodsService orderGoodsService; private OrderGoodsService orderGoodsService;
@Autowired @Autowired
SettlementOwnerDetailDao settlementOwnerDetailDao; private OwnerAccountComponent ownerAccountComponent;
public static Map<Integer, String> statusCodeMap = new HashMap<>();
@Autowired
OwnerAccountService ownerAccountService;
public static Map<Integer, BiFunction<String, Integer, OrderCancelResult>> cancelTypeMap = new HashMap<>();
/**
* 货主取消订单
* @param param
* @return
*/
public List<String> ownerProcess(OrderCancelParam param) { public List<String> ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo(); String orderNo = param.getOrderNo();
List<OrderGoods> orderGoodsList = null;
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode(); Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
List<String> childNoList = new LinkedList<>();
switch (param.getCancelType()) {
case 1: //单纯取消订单
log.info("1:货主单纯取消订单");
if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
}
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
ids.add(orderGoods.getId()); //根据不同的取消类型执行不同的取消逻辑
} OrderCancelResult result = cancelTypeMap.get(param.getCancelType()).apply(orderNo, orderStatusCode);
orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(), orderStatusCode = result.getOrderStatusCode();
ids); this.breakContractSettlementOwner(orderNo, orderStatusCode, param.getCancelType());
log.info("执行货主取消订单更改状态");
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
} }
//1网运单 2普通单 ownerAccountComponent.thawOwnerAccountByOrderNo(orderNo);
Integer invoiceType = settlementOwnerDetailDao.getInvoiceType(orderNo); List<String> childNoList = result.getChildNoList();
log.info("invoiceType={}", invoiceType); for (String childNo : childNoList) {
ThawAccountParam thawAccountParam = new ThawAccountParam(); // 订单取消
orderChildPostService.orderCancel(childNo);
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
} else {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
} }
thawAccountParam.setOrderNo(orderNo);
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
break;
case 2: //取消未拉运吨数的货单
log.info("2:货主取消未拉运吨数的货单");
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); return childNoList;
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
if (orderGoods.getResidueTransportWeight().compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
orderGoodsDao.updateEntityByKey(update);
} }
break; /**
* 货主取消未拉运+未到达货源地吨数
case 3: //取消未拉运+未到达货源地吨数 * @param orderNo
* @param orderStatusCode
* @return
*/
private OrderCancelResult cancelOrderAndOrderGoodsAndOrderChild(String orderNo, Integer orderStatusCode) {
log.info("3:货主取消未拉运+未到达货源地吨数"); log.info("3:货主取消未拉运+未到达货源地吨数");
String now = DateUtils.formatDateTime(LocalDateTime.now()).get();
List<String> childNoList = new LinkedList<>();
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());
for (OrderChild orderChild : orderChildren) { for (OrderChild orderChild : orderChildren) {
...@@ -176,12 +140,12 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -176,12 +140,12 @@ public class OrderCancelComponent implements InitializingBean {
log.info("childNoList:{}", childNoList); log.info("childNoList:{}", childNoList);
orderChildDao.batchUpdateOrderChildStatus( orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.OWNER_CANCEL.getCode(), "货主取消", OrderChildEnum.Status.OWNER_CANCEL.getCode(), "货主取消",
now, now,childNoList); now, now, childNoList);
orderChildMap = orderChildren.stream() orderChildMap = orderChildren.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo)); .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
} }
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods(); OrderGoods update = new OrderGoods();
...@@ -208,27 +172,64 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -208,27 +172,64 @@ public class OrderCancelComponent implements InitializingBean {
orderGoodsDao.updateEntityByKey(update); orderGoodsDao.updateEntityByKey(update);
} }
return OrderCancelResult.builder().orderStatusCode(orderStatusCode).childNoList(childNoList).build();
break;
default:
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "参数有误");
} }
this.breakContractSettlementOwner(orderNo, orderStatusCode, param.getCancelType()); /**
* 货主取消未拉运吨数的货单
* @param orderNo
* @param orderStatusCode
* @return
*/
public OrderCancelResult cancelOrderAndOrderGoods(String orderNo, Integer orderStatusCode) {
log.info("2:货主取消未拉运吨数的货单");
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
if (orderGoods.getResidueTransportWeight().compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
log.info("执行货主取消订单更改状态"); orderGoodsDao.updateEntityByKey(update);
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
} }
for (String childNo : childNoList) { return OrderCancelResult.builder().orderStatusCode(orderStatusCode).build();
// 订单取消
orderChildPostService.orderCancel(childNo);
} }
return childNoList; /**
* 货主只取消订单
* @param orderNo
* @param orderStatusCode
* @return
*/
private OrderCancelResult cancelOrder(String orderNo, Integer orderStatusCode) {
List<OrderGoods> orderGoodsList;
log.info("1:货主只取消订单");
if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
}
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isNotEmpty(orderGoodsList)) {
List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
}
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
ids.add(orderGoods.getId());
}
orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(),
ids);
}
return OrderCancelResult.builder().orderStatusCode(orderStatusCode).build();
} }
public void backFillTonnage(OrderGoods orderGoods, BigDecimal weight) { public void backFillTonnage(OrderGoods orderGoods, BigDecimal weight) {
...@@ -424,6 +425,8 @@ public class OrderCancelComponent implements InitializingBean { ...@@ -424,6 +425,8 @@ public class OrderCancelComponent implements InitializingBean {
statusCodeMap.put(OrderEnum.Status.POST_ORDER.getCode(), OrderEnum.Status.POST_ORDER.getName()); statusCodeMap.put(OrderEnum.Status.POST_ORDER.getCode(), OrderEnum.Status.POST_ORDER.getName());
statusCodeMap.put(OrderEnum.Status.ON_ORDER.getCode(), OrderEnum.Status.ON_ORDER.getName()); statusCodeMap.put(OrderEnum.Status.ON_ORDER.getCode(), OrderEnum.Status.ON_ORDER.getName());
statusCodeMap.put(OrderEnum.Status.IN_TRANSIT.getCode(), OrderEnum.Status.IN_TRANSIT.getName()); statusCodeMap.put(OrderEnum.Status.IN_TRANSIT.getCode(), OrderEnum.Status.IN_TRANSIT.getName());
cancelTypeMap.put(1, this::cancelOrder);
cancelTypeMap.put(2, this::cancelOrderAndOrderGoods);
cancelTypeMap.put(3, this::cancelOrderAndOrderGoodsAndOrderChild);
} }
} }
package com.clx.performance.component;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.clx.order.feign.OrderFeign;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.param.pc.owner.UpdateStatusParam;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.settle.SettlementOwnerService;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
@AllArgsConstructor
public class OwnerAccountComponent {
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final OwnerAccountService ownerAccountService;
private final SettlementOwnerService settlementOwnerService;
private final OrderFeign orderFeign;
public void thawOwnerAccountByOrderNo(String orderNo) {
Boolean flag = settlementOwnerDetailService.thawAndLockSettlement(orderNo);
if (flag) {
log.info("当前存在在途运单");
orderFeign.saveOrderSettlementJobRecord(orderNo);
return;
}
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
Integer invoiceType = settlementOwnerDetailService.getInvoiceType(orderNo);
//1 网运单 2 普通单
log.info("invoiceType={}", invoiceType);
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
log.info("执行普通单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
} else {
log.info("执行网运单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
}
//通知结算单锁定
settlementOwnerService.updateStatusByOrderNo(orderNo, 1, 10, 20);
}
}
...@@ -69,6 +69,9 @@ public class RabbitKeyConstants { ...@@ -69,6 +69,9 @@ public class RabbitKeyConstants {
public static final String ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY ="clx-order.order.child.sync.transport.route.key"; public static final String ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY ="clx-order.order.child.sync.transport.route.key";
public static final String ORDER_THAW_SETTLEMENT_LAZY_EXCHANGE ="clx-order.thaw.settlement.lazy.exchange";
public static final String ORDER_THAW_SETTLEMENT_LAZY_ROUTE_KEY ="clx-order.thaw.settlement.lazy.route.key";
// 预付运费和保证金 自动冻结 触发消息队列 // 预付运费和保证金 自动冻结 触发消息队列
public static final String FREEZE_TRIGGER_EXCHANGE = "clx-order.freeze.trigger.exchange"; public static final String FREEZE_TRIGGER_EXCHANGE = "clx-order.freeze.trigger.exchange";
......
...@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign; ...@@ -2,7 +2,6 @@ package com.clx.performance.controller.feign;
import com.clx.performance.param.pc.OrderCancelFeignParam; import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService; import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -26,14 +25,9 @@ public class OrderCancelFeignController { ...@@ -26,14 +25,9 @@ public class OrderCancelFeignController {
private final OrderCancelService orderCancelService; private final OrderCancelService orderCancelService;
@ApiOperation(value = "承运发起订单取消货主端进行确认", notes = "<br>By:胡宇帆") @ApiOperation(value = "承运发起订单取消货主端进行确认", notes = "<br>By:胡宇帆")
@PostMapping("/orderCancel") @PostMapping("/orderCancel")
public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) { public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) {
// OrderCancelParam cancelParam = new OrderCancelParam();
// cancelParam.setOrderNo(param.getOrderNo());
// cancelParam.setCancelType(3);
// cancelParam.setCreateByType(1);
// orderCancelService.platformCancelOrderPrePC(cancelParam);
orderCancelService.ownerConfirmCancelOrderPre(param.getOrderNo()); orderCancelService.ownerConfirmCancelOrderPre(param.getOrderNo());
return Result.ok(); return Result.ok();
} }
......
...@@ -34,12 +34,12 @@ public class OrderCancelController { ...@@ -34,12 +34,12 @@ public class OrderCancelController {
private final OrderCancelService orderCancelService; private final OrderCancelService orderCancelService;
@ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆") // @ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/platformCancelOrderPre") // @PostMapping("/platformCancelOrderPre")
public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) { // public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
orderCancelService.platformCancelOrderPre(param); // orderCancelService.platformCancelOrderPre(param);
return Result.ok(); // return Result.ok();
} // }
@ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆") @ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/ownCancelOrderPre") @PostMapping("/ownCancelOrderPre")
......
...@@ -56,6 +56,9 @@ public class TransportSyncController { ...@@ -56,6 +56,9 @@ public class TransportSyncController {
private final SettlementOwnerService settlementOwnerService; private final SettlementOwnerService settlementOwnerService;
private final OrderChildSyncTransportRecordService childSyncTransportRecordService;
/** /**
* 支付结果 * 支付结果
* @param param * @param param
...@@ -107,7 +110,13 @@ public class TransportSyncController { ...@@ -107,7 +110,13 @@ public class TransportSyncController {
return ThirdComponent.encrypt(JSON.toJSONString(Result.ok())); return ThirdComponent.encrypt(JSON.toJSONString(Result.ok()));
} }
@ApiOperation(value = "addOrderChildSyncTransportRecord", notes = "<br>By:胡宇帆")
@GetMapping("/addOrderChildSyncTransportRecord")
public Result<Object> syncTest(@RequestParam("id") Integer id) {
SettlementDriverDetail driverDetail = settlementDriverDetailDao.getEntityByKey(id).get();
childSyncTransportRecordService.addOrderChildSyncTransportRecord(driverDetail);
return Result.ok();
}
@ApiOperation(value = "syncTest", notes = "<br>By:胡宇帆") @ApiOperation(value = "syncTest", notes = "<br>By:胡宇帆")
@GetMapping("/syncTest") @GetMapping("/syncTest")
......
package com.clx.performance.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderCancelResult {
private Integer orderStatusCode;
private List<String> childNoList;
}
...@@ -28,10 +28,10 @@ public interface OrderCancelService { ...@@ -28,10 +28,10 @@ public interface OrderCancelService {
* 平台取消订单前置(只修改订单状态) * 平台取消订单前置(只修改订单状态)
* @param param * @param param
*/ */
void platformCancelOrderPre(OrderCancelParam param); // void platformCancelOrderPre(OrderCancelParam param);
/** /**
* 修改订单状态后执行规划吨数 * 修改订单状态后执行归还吨数
* @param param * @param param
*/ */
void orderCancelProcess(OrderCancelParam param); void orderCancelProcess(OrderCancelParam param);
......
...@@ -13,6 +13,7 @@ import com.clx.order.vo.feign.FeignOrderVO; ...@@ -13,6 +13,7 @@ import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.common.MqWrapper; import com.clx.performance.common.MqWrapper;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderCancelComponent; import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.component.OwnerAccountComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
...@@ -82,14 +83,13 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -82,14 +83,13 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OwnerInfoService ownerInfoService; private final OwnerInfoService ownerInfoService;
private final OwnerAccountComponent ownerAccountComponent;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerConfirmCancelOrderPre(String orderNo) { public void ownerConfirmCancelOrderPre(String orderNo) {
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get(); String now = DateUtils.formatDateTime(LocalDateTime.now()).get();
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode(); Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
if (CollectionUtil.isEmpty(orderGoodsList)) { if (CollectionUtil.isEmpty(orderGoodsList)) {
...@@ -98,24 +98,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -98,24 +98,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if (!result.succeed()) { if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败"); throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
} }
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//1网运单 2普通单
Integer invoiceType = settlementOwnerDetailDao.getInvoiceType(orderNo);
log.info("invoiceType={}", invoiceType);
ThawAccountParam thawAccountParam = new ThawAccountParam();
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
} else { } else {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
}
thawAccountParam.setOrderNo(orderNo);
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
this.ownerConfirmCancelProcess(orderNo);
return;
}
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null); List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null);
if (CollectionUtil.isEmpty(orderChildrenList)) { if (CollectionUtil.isEmpty(orderChildrenList)) {
...@@ -131,21 +114,6 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -131,21 +114,6 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(), orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(),
ids); ids);
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//1网运单 2普通单
Integer invoiceType = settlementOwnerDetailDao.getInvoiceType(orderNo);
log.info("invoiceType={}", invoiceType);
ThawAccountParam thawAccountParam = new ThawAccountParam();
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
} else {
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
}
thawAccountParam.setOrderNo(orderNo);
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
} else { } else {
List<OrderChild> arriveSendChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode()); List<OrderChild> arriveSendChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
orderStatusCode = OrderEnum.Status.COMPLETED.getCode(); orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
...@@ -207,14 +175,16 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -207,14 +175,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
} }
}
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode); Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode);
if (!result.succeed()) { if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败"); throw new ServiceSystemException( PerformanceResultEnum.HTTP_ERROR,"货主取消订单失败,原因:远程调用取消订单失败");
} }
//进行解冻账户
ownerAccountComponent.thawOwnerAccountByOrderNo(orderNo);
//开始执行订单取消吨数回填
this.ownerConfirmCancelProcess(orderNo); this.ownerConfirmCancelProcess(orderNo);
} }
@Override @Override
...@@ -332,9 +302,9 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -332,9 +302,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败"); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
} }
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) { // if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败"); // throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
} // }
} catch (Exception e) { } catch (Exception e) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage()); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage());
...@@ -349,6 +319,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -349,6 +319,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(OrderCancelParam param) { public void ownerCancelOrderPre(OrderCancelParam param) {
String orderNo = param.getOrderNo(); String orderNo = param.getOrderNo();
List<String> childNoList = orderCancelComponent.ownerProcess(param); List<String> childNoList = orderCancelComponent.ownerProcess(param);
param.setChildNoList(childNoList); param.setChildNoList(childNoList);
OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam(); OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam();
...@@ -357,11 +328,8 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -357,11 +328,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
orderCancelReasonParam.setCreateNo(loginUserInfo.getUserNo()); orderCancelReasonParam.setCreateNo(loginUserInfo.getUserNo());
orderCancelReasonParam.setCreateName(loginUserInfo.getUserName()); orderCancelReasonParam.setCreateName(loginUserInfo.getUserName());
orderFeign.orderCancelReason(orderCancelReasonParam); orderFeign.orderCancelReason(orderCancelReasonParam);
//TODO 注意判断普通单还是网运单 普通单类型 2 网运单 1
log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo); log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build(); Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build();
...@@ -375,131 +343,131 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -375,131 +343,131 @@ public class OrderCancelServiceImpl implements OrderCancelService {
* *
* @param param * @param param
*/ */
@Override // @Override
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
public void platformCancelOrderPre(OrderCancelParam param) { // public void platformCancelOrderPre(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();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get(); // String now = DateUtils.formatDateTime(LocalDateTime.now()).get();
switch (param.getCancelType()) { // switch (param.getCancelType()) {
case 1: //单纯取消订单 // case 1: //单纯取消订单
if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) { // if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式"); // throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
} // }
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); // orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
//
if (CollectionUtil.isNotEmpty(orderGoodsList)) { // if (CollectionUtil.isNotEmpty(orderGoodsList)) {
List<Integer> ids = new LinkedList<>(); // List<Integer> ids = new LinkedList<>();
for (OrderGoods orderGoods : orderGoodsList) { // for (OrderGoods orderGoods : orderGoodsList) {
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) { // if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo()); // orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
} // }
ids.add(orderGoods.getId()); // ids.add(orderGoods.getId());
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo()); // goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
} // }
orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(), // orderGoodsDao.batchUpdateOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode(),
ids); // ids);
} // }
break; // break;
case 2: //取消未拉运吨数的货单 // case 2: //取消未拉运吨数的货单
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); // orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
//
for (OrderGoods orderGoods : orderGoodsList) { // for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods(); // OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId()); // update.setId(orderGoods.getId());
//提取和剩余吨数一样,代表一直没人拉 // //提取和剩余吨数一样,代表一直没人拉
if (orderGoods.getResidueTransportWeight().compareTo(orderGoods.getExtractWeight()) == 0) { // if (orderGoods.getResidueTransportWeight().compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode()); // update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else { // } else {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode(); // orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode()); // update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} // }
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) { // if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo()); // orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo()); // goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
} // }
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo()); // goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
orderGoodsDao.updateEntityByKey(update); // orderGoodsDao.updateEntityByKey(update);
} // }
break; // break;
//
case 3: //取消未拉运+未到达货源地吨数 // case 3: //取消未拉运+未到达货源地吨数
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode()); // List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
if (CollectionUtil.isEmpty(orderChildren)) { // if (CollectionUtil.isEmpty(orderChildren)) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式"); // throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
} // }
List<String > childNoList = new LinkedList<>(); // List<String > childNoList = new LinkedList<>();
for (OrderChild orderChild : orderChildren) { // for (OrderChild orderChild : orderChildren) {
//释放车辆 // //释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1); // driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
childNoList.add(orderChild.getChildNo()); // childNoList.add(orderChild.getChildNo());
} // }
if (CollectionUtil.isNotEmpty(childNoList)) { // if (CollectionUtil.isNotEmpty(childNoList)) {
orderChildDao.batchUpdateOrderChildStatus( // orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.OWNER_CANCEL.getCode(), "平台取消", // OrderChildEnum.Status.OWNER_CANCEL.getCode(), "平台取消",
now, now, childNoList); // now, now, childNoList);
} // }
//
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); // orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<String, List<OrderChild>> orderChildMap = orderChildren.stream() // Map<String, List<OrderChild>> orderChildMap = orderChildren.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo)); // .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//
for (OrderGoods orderGoods : orderGoodsList) { // for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods(); // OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId()); // update.setId(orderGoods.getId());
if (CollectionUtil.isEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) { // if (CollectionUtil.isEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode()); // update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else { // } else {
BigDecimal reduce = orderChildMap.get(orderGoods.getOrderGoodsNo()) // BigDecimal reduce = orderChildMap.get(orderGoods.getOrderGoodsNo())
.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add); // .stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
//当前产生可取消运单的吨数加货单剩余吨数如果等于货单提取的吨数,那么就是已取消 // //当前产生可取消运单的吨数加货单剩余吨数如果等于货单提取的吨数,那么就是已取消
if (orderGoods.getExtractWeight().compareTo(orderGoods.getResidueTransportWeight().add(reduce)) == 0) { // if (orderGoods.getExtractWeight().compareTo(orderGoods.getResidueTransportWeight().add(reduce)) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode()); // update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else { // } else {
orderStatusCode = OrderEnum.Status.COMPLETED.getCode(); // orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode()); // update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} // }
} // }
//
if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) { // if (orderGoods.getPendingOrderWay().equals(PendingOrderWayStatusEnum.Status.DX.getCode())) {
orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo()); // orderGoodsTruckBindService.updateCancelTruckBind(orderGoods.getOrderGoodsNo());
} // }
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo()); // goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoods.getOrderGoodsNo());
//
orderGoodsDao.updateEntityByKey(update); // orderGoodsDao.updateEntityByKey(update);
} // }
//
break; // break;
//
default: // default:
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "参数有误"); // throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "参数有误");
//
} // }
//
log.info("记录订单取消原因"); // log.info("记录订单取消原因");
OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam(); // OrderCancelReasonParam orderCancelReasonParam = new OrderCancelReasonParam();
orderCancelReasonParam.setOrderNo(orderNo); // orderCancelReasonParam.setOrderNo(orderNo);
orderCancelReasonParam.setReason(param.getCancelReason()); // orderCancelReasonParam.setReason(param.getCancelReason());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); // UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
orderCancelReasonParam.setCreateNo(loginUserInfo.getUserNo()); // orderCancelReasonParam.setCreateNo(loginUserInfo.getUserNo());
orderCancelReasonParam.setCreateName(loginUserInfo.getUserName()); // orderCancelReasonParam.setCreateName(loginUserInfo.getUserName());
orderFeign.orderCancelReason(orderCancelReasonParam); // orderFeign.orderCancelReason(orderCancelReasonParam);
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2 // //TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
//
log.info("执行订单状态更改"); // log.info("执行订单状态更改");
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) { // if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败"); // throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
} // }
log.info("执行承运端订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo); // log.info("执行承运端订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
//
Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build(); // Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build();
rabbitTemplate.send( // rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message // RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
); // );
} // }
/** /**
* 执行订单取消后归还吨数 * 执行订单取消后归还吨数
...@@ -523,18 +491,90 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -523,18 +491,90 @@ public class OrderCancelServiceImpl implements OrderCancelService {
List<OrderGoods> orderGoodsList = null; List<OrderGoods> orderGoodsList = null;
switch (param.getCancelType()) { switch (param.getCancelType()) {
case 1: //单纯取消订单及货单 case 1: //单纯取消订单及货单
orderGoodsList = getOrderGoods(orderNo, orderInfoFeign, truckDemandMap, vehicleUsageMap, rollbackOrderWeightParam, truckDemand);
break;
case 2: //取消未拉运吨数的货单及订单
orderGoodsList = getGoods(orderNo, orderInfoFeign, truckDemandMap, vehicleUsageMap, rollbackOrderWeightParam, truckDemand);
break;
case 3: //取消未拉运+未到达货源地吨数
orderGoodsList = getOrderGoods(param, orderNo, orderInfoFeign, truckDemandMap, vehicleUsageMap, rollbackOrderWeightParam, truckDemand);
break;
default:
return;
}
if (!orderFeign.rollbackOrderWeight(rollbackOrderWeightParam).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
}
// if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
// throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
// }
//订单取消恢复货单的剩余吨数为0
orderGoodsService.batchUpdateResidueWeight(orderGoodsList);
//触发自动冻结的mq消费逻辑
triggerAutoFreeze(orderInfoFeign.getOwnerUserNo(),orderNo);
}
private List<OrderGoods> getOrderGoods(OrderCancelParam param, String orderNo, FeignOrderVO orderInfoFeign, Map<Integer, BigDecimal> truckDemandMap, Map<Integer, BigDecimal> vehicleUsageMap, RollbackOrderWeightParam rollbackOrderWeightParam, Integer truckDemand) {
List<OrderGoods> orderGoodsList;
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<String, List<OrderChild>> orderChildMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(param.getChildNoList())) {
List<OrderChild> orderChildren = orderChildDao.selectInOrderChildNoList(param.getChildNoList());
orderChildMap = orderChildren.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
}
if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) { if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand()) truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight())); .add(orderGoods.getResidueTransportWeight()));
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
BigDecimal childSum = orderChildMap.get(orderGoods.getOrderGoodsNo()).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
update.setAlreadyTransportWeight(
orderGoods.getAlreadyTransportWeight()
.subtract(
childSum
)
);
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(childSum));
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(childSum));
orderGoodsDao.updateEntityByKey(update);
}
} }
} else { } else {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
vehicleUsageMap.put(orderGoods.getVehicleUsage(), vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage()) vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight())); .add(orderGoods.getResidueTransportWeight()));
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
BigDecimal childSum = orderChildMap.get(orderGoods.getOrderGoodsNo()).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
update.setAlreadyTransportWeight(
orderGoods.getAlreadyTransportWeight()
.subtract(
childSum
)
);
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(childSum));
vehicleUsageMap.put(orderGoods.getTruckDemand(),
vehicleUsageMap.get(orderGoods.getTruckDemand())
.add(childSum));
orderGoodsDao.updateEntityByKey(update);
}
} }
} }
//归还吨数 //归还吨数
...@@ -559,8 +599,11 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -559,8 +599,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum); rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum);
rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum); rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum);
} }
break; return orderGoodsList;
case 2: //取消未拉运吨数的货单及订单 }
private List<OrderGoods> getGoods(String orderNo, FeignOrderVO orderInfoFeign, Map<Integer, BigDecimal> truckDemandMap, Map<Integer, BigDecimal> vehicleUsageMap, RollbackOrderWeightParam rollbackOrderWeightParam, Integer truckDemand) {
List<OrderGoods> orderGoodsList;
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) { if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
...@@ -598,64 +641,23 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -598,64 +641,23 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum); rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum);
rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum); rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum);
} }
break; return orderGoodsList;
case 3: //取消未拉运+未到达货源地吨数
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<String, List<OrderChild>> orderChildMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(param.getChildNoList())) {
List<OrderChild> orderChildren = orderChildDao.selectInOrderChildNoList(param.getChildNoList());
orderChildMap = orderChildren.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
} }
private List<OrderGoods> getOrderGoods(String orderNo, FeignOrderVO orderInfoFeign, Map<Integer, BigDecimal> truckDemandMap, Map<Integer, BigDecimal> vehicleUsageMap, RollbackOrderWeightParam rollbackOrderWeightParam, Integer truckDemand) {
List<OrderGoods> orderGoodsList;
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) { if (!orderInfoFeign.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand()) truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight())); .add(orderGoods.getResidueTransportWeight()));
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
BigDecimal childSum = orderChildMap.get(orderGoods.getOrderGoodsNo()).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
update.setAlreadyTransportWeight(
orderGoods.getAlreadyTransportWeight()
.subtract(
childSum
)
);
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(childSum));
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(childSum));
orderGoodsDao.updateEntityByKey(update);
}
} }
} else { } else {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
vehicleUsageMap.put(orderGoods.getVehicleUsage(), vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage()) vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight())); .add(orderGoods.getResidueTransportWeight()));
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoods.getOrderGoodsNo()))) {
BigDecimal childSum = orderChildMap.get(orderGoods.getOrderGoodsNo()).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
update.setAlreadyTransportWeight(
orderGoods.getAlreadyTransportWeight()
.subtract(
childSum
)
);
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(childSum));
vehicleUsageMap.put(orderGoods.getTruckDemand(),
vehicleUsageMap.get(orderGoods.getTruckDemand())
.add(childSum));
orderGoodsDao.updateEntityByKey(update);
}
} }
} }
//归还吨数 //归还吨数
...@@ -680,27 +682,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -680,27 +682,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum); rollbackOrderWeightParam.setPlatformResidueCarryWeight(platformResidueSum);
rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum); rollbackOrderWeightParam.setOwnResidueCarryWeight(ownResidueSum);
} }
break; return orderGoodsList;
default:
return;
}
if (!orderFeign.rollbackOrderWeight(rollbackOrderWeightParam).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "远程调用更新订单余量失败");
}
if (!orderFeign.saveOrderSettlementJobRecord(orderNo).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用结算单锁定失败");
}
//订单取消恢复货单的剩余吨数为0
orderGoodsService.batchUpdateResidueWeight(orderGoodsList);
//触发自动冻结的mq消费逻辑
triggerAutoFreeze(orderInfoFeign.getOwnerUserNo(),orderNo);
} }
//订单取消增加自动冻结的消息触发 //订单取消增加自动冻结的消息触发
...@@ -722,6 +704,11 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -722,6 +704,11 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
} }
/**
* 客服取消订单
* @param orderChildNo
* @param remark
*/
@Override @Override
public void artificialCancelOrder(String orderChildNo, String remark) { public void artificialCancelOrder(String orderChildNo, String remark) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
......
...@@ -1213,7 +1213,4 @@ public class OwnerAccountServiceImpl implements OwnerAccountService { ...@@ -1213,7 +1213,4 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
} }
} }
public static void main(String[] args) {
}
} }
...@@ -44,13 +44,13 @@ public abstract class GoodsOrderStrategy { ...@@ -44,13 +44,13 @@ public abstract class GoodsOrderStrategy {
if (Objects.equals(orderInfo.getStopFlag(), OrderStopEnum.Status.YES.getCode())) { if (Objects.equals(orderInfo.getStopFlag(), OrderStopEnum.Status.YES.getCode())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量"); throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量");
} }
// String transportBeginTime = orderInfo.getTransportBeginTime(); String transportBeginTime = orderInfo.getTransportBeginTime();
// for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) { for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) {
// String pendingOrderTime = param.getPendingOrderTime(); String pendingOrderTime = param.getPendingOrderTime();
// if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) { if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) {
// throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间"); throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间");
// } }
// } }
//多个定向单不允许车辆重复 //多个定向单不允许车辆重复
List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams(); List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams();
Set<String> set = new HashSet<>(); Set<String> set = new HashSet<>();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论