提交 a3dfe3d4 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/test' into test

Former-commit-id: 8eefcb9d
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderTruckBindCancelParam {
//货单编号
private String orderGoodsNo;
//订单编号
private String orderNo;
}
...@@ -2,15 +2,12 @@ package com.clx.performance.component; ...@@ -2,15 +2,12 @@ package com.clx.performance.component;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.performance.enums.OwnerAccountEnum; import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.param.pc.owner.ThawAccountParam; 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.OwnerAccountService;
import com.clx.performance.service.settle.SettlementOwnerDetailService; import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.service.settle.SettlementOwnerService; import com.clx.performance.service.settle.SettlementOwnerService;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -45,14 +42,12 @@ public class OwnerAccountComponent { ...@@ -45,14 +42,12 @@ public class OwnerAccountComponent {
if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) { if (OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode().equals(invoiceType)) {
log.info("执行普通单解冻"); log.info("执行普通单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode()); thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
} else { } else {
log.info("执行网运单解冻"); log.info("执行网运单解冻");
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode()); thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
} }
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
//通知结算单锁定 //通知结算单锁定
settlementOwnerService.updateStatusByOrderNo(orderNo, 1, 10, 20); settlementOwnerService.updateStatusByOrderNo(orderNo, 1, 10, 20);
......
...@@ -140,4 +140,30 @@ public class RabbitBeanConfig { ...@@ -140,4 +140,30 @@ public class RabbitBeanConfig {
public Binding orderChildSyncTransportExchangeBind() { public Binding orderChildSyncTransportExchangeBind() {
return BindingBuilder.bind(orderChildSyncTransportQueue()).to(orderChildSyncTransportExchange()).with(RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY); return BindingBuilder.bind(orderChildSyncTransportQueue()).to(orderChildSyncTransportExchange()).with(RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY);
} }
/**
* 处理延迟消息orderGoodsTruckBind
* @return
*/
@Bean
public Queue orderGoodsTruckBindQueue() {
return new Queue(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_QUEUE, true, false, false);
}
/**
* 处理延迟消息orderGoodsTruckBind
**/
@Bean
public CustomExchange orderGoodsTruckBindExchange() {
Map<String, Object> arguments = new HashMap<>();
//设置路由模式 direct模式
arguments.put("x-delayed-type", "direct");
return new CustomExchange(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE,"x-delayed-message", true, false, arguments);
}
//绑定交换机,队列和routingKey
@Bean
public Binding orderGoodsTruckBindBindingDelayedExchange(@Qualifier("orderGoodsTruckBindQueue")Queue queue,@Qualifier("orderGoodsTruckBindExchange")CustomExchange customExchange) {
return BindingBuilder.bind(queue).to(customExchange).with(RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY).noargs();
}
} }
...@@ -78,5 +78,9 @@ public class RabbitKeyConstants { ...@@ -78,5 +78,9 @@ public class RabbitKeyConstants {
public static final String FREEZE_TRIGGER_QUEUE = "clx-order.freeze.trigger.queue"; public static final String FREEZE_TRIGGER_QUEUE = "clx-order.freeze.trigger.queue";
public static final String FREEZE_TRIGGER_ROUTING_KEY = "clx-order.freeze.trigger.routing.key"; public static final String FREEZE_TRIGGER_ROUTING_KEY = "clx-order.freeze.trigger.routing.key";
public static final String ORDER_TRUCK_BIND_LAZY_EXCHANGE ="clx-order.truck.bind.lazy.exchange";
public static final String ORDER_TRUCK_BIND_LAZY_QUEUE ="clx-order.truck.bind.lazy.queue";
public static final String ORDER_TRUCK_BIND_LAZY_ROUTE_KEY ="clx-order.truck.bind.lazy.route.key";
} }
...@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -31,6 +31,8 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code); void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code);
void updateOrderGoodsBindStatus(List<String> orderGoodsList, Integer code);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList); void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, String truckNo); void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, String truckNo);
......
...@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -87,6 +87,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
); );
} }
@Override
public void updateOrderGoodsBindStatus(List<String> orderGoodsList, Integer code) {
update(lUdWrapper()
.in(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsList)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.set(OrderGoodsTruckBind::getStatus, code)
);
}
@Override @Override
public void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList) { public void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList) {
update(lUdWrapper() update(lUdWrapper()
......
package com.clx.performance.dto;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsCancelParam;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class OrderGoodsCancelDTO {
private OrderGoodsCancelParam orderGoodsCancelParam;
private Integer orderGoodsStatus;
private OrderGoods orderGoods;
private List<String> childNoList;
}
package com.clx.performance.listener;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.vo.mq.OrderTruckBindCancelParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Slf4j
@AllArgsConstructor
public class OrderGoodsDriverBindListener {
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderGoodsDao orderGoodsDao;
@RabbitListener(queues = RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_QUEUE)
@Transactional(rollbackFor = Exception.class)
public void onMessage(String message) throws Exception {
OrderTruckBindCancelParam param = JSONUtil.toBean(message, OrderTruckBindCancelParam.class);
log.info("OrderGoodsDriverBindListener请求参数{}", JSONUtil.parse(param));
if (StringUtils.isNotBlank(param.getOrderGoodsNo())) {
String orderGoodsNo = param.getOrderGoodsNo();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).get();
if (VehicleUsageEnum.Status.OWN.getCode().equals(orderGoods.getVehicleUsage())) {
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
}
} else if (StringUtils.isNotBlank(param.getOrderNo())) {
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
List<String> orderGoodsNoList = orderGoodsList.stream().filter(i -> VehicleUsageEnum.Status.OWN.getCode().equals(i.getVehicleUsage()))
.map(OrderGoods::getOrderGoodsNo).collect(Collectors.toList());
if (CollectionUtil.isEmpty(orderGoodsNoList)) {
return;
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNoList, OrderGoodsTruckBindEnum.Status.CANCEL.getCode());
}
}
}
...@@ -29,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam; ...@@ -29,6 +29,7 @@ import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.*; import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService; import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.mq.OrderTruckBindCancelParam;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.enums.owner.FreezeSettingEnum; import com.clx.user.enums.owner.FreezeSettingEnum;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
...@@ -183,7 +184,17 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -183,7 +184,17 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
//进行解冻账户 //进行解冻账户
ownerAccountComponent.thawOwnerAccountByOrderNo(orderNo); ownerAccountComponent.thawOwnerAccountByOrderNo(orderNo);
//开始执行订单取消吨数回填
OrderTruckBindCancelParam bindCancelParam = new OrderTruckBindCancelParam();
bindCancelParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(bindCancelParam).toString().getBytes()).build();
message.getMessageProperties().setHeader("x-delay", 2000);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate.send(
RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE, RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY, message
);
this.ownerConfirmCancelProcess(orderNo); this.ownerConfirmCancelProcess(orderNo);
} }
...@@ -244,8 +255,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -244,8 +255,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
param.setResidueWeight(residueWeight); param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(BigDecimal.ZERO); param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight); param.setPlatformResidueCarryWeight(residueWeight);
} } else if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setResidueWeight(residueWeight); param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(residueWeight); param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO); param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
...@@ -331,19 +341,30 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -331,19 +341,30 @@ public class OrderCancelServiceImpl implements OrderCancelService {
orderCancelReasonParam.setCreateName(loginUserInfo.getUserName()); orderCancelReasonParam.setCreateName(loginUserInfo.getUserName());
orderFeign.orderCancelReason(orderCancelReasonParam); orderFeign.orderCancelReason(orderCancelReasonParam);
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
); );
OrderTruckBindCancelParam bindCancelParam = new OrderTruckBindCancelParam();
bindCancelParam.setOrderNo(orderNo);
Message message2 = MessageBuilder.withBody(JSONUtil.parse(bindCancelParam).toString().getBytes()).build();
message2.getMessageProperties().setHeader("x-delay", 2000);
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消
rabbitTemplate.send(
RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_EXCHANGE, RabbitKeyConstants.ORDER_TRUCK_BIND_LAZY_ROUTE_KEY, message2
);
} }
/** // /**
* 平台取消订单前置(只修改订单相关状态) // * 平台取消订单前置(只修改订单相关状态)
* // *
* @param param // * @param param
*/ // */
// @Override // @Override
// @Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
// public void platformCancelOrderPre(OrderCancelParam param) { // public void platformCancelOrderPre(OrderCancelParam param) {
...@@ -604,8 +625,7 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -604,8 +625,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} }
private List<OrderGoods> getGoods(String orderNo, FeignOrderVO orderInfoFeign, Map<Integer, BigDecimal> truckDemandMap, Map<Integer, BigDecimal> vehicleUsageMap, RollbackOrderWeightParam rollbackOrderWeightParam, Integer truckDemand) { private List<OrderGoods> getGoods(String orderNo, FeignOrderVO orderInfoFeign, Map<Integer, BigDecimal> truckDemandMap, Map<Integer, BigDecimal> vehicleUsageMap, RollbackOrderWeightParam rollbackOrderWeightParam, Integer truckDemand) {
List<OrderGoods> orderGoodsList; List<OrderGoods> 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())) {
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
......
...@@ -18,6 +18,8 @@ import org.apache.commons.lang3.StringUtils; ...@@ -18,6 +18,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder; import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
...@@ -26,6 +28,9 @@ import java.util.stream.Collectors; ...@@ -26,6 +28,9 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public abstract class GoodsOrderStrategy { public abstract class GoodsOrderStrategy {
@Autowired
private Environment environment;
/** /**
* 不同的用车需求执行不同的策略 1:one 2:two 3:three * 不同的用车需求执行不同的策略 1:one 2:two 3:three
...@@ -45,12 +50,15 @@ public abstract class GoodsOrderStrategy { ...@@ -45,12 +50,15 @@ public abstract class GoodsOrderStrategy {
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()) { if (!"test".equals(environment.getActiveProfiles()[0])) {
String pendingOrderTime = param.getPendingOrderTime(); for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) {
if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) { String pendingOrderTime = param.getPendingOrderTime();
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间"); if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论