提交 252e5160 authored 作者: huningning's avatar huningning

增加交易平台消息同步

上级 dd5965f0
......@@ -56,4 +56,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer getOrderChildTotalByUserNo(Long userNo);
List<OrderChild> getOrderChildBussInfo(String truckNo);
OrderChild getGoingLatestOrderChildByOrderNo(String orderNo);
}
......@@ -185,6 +185,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.last("limit 1"));
}
@Override
public OrderChild getGoingLatestOrderChildByOrderNo(String orderNo) {
return getOne(lQrWrapper().eq(OrderChild::getOrderNo,orderNo)
.le(OrderChild::getStatus,OrderChildEnum.Status.UNLOAD.getCode())
.orderByDesc(OrderChild::getId)
.last("limit 1"));
}
@Override
public int countValidByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.countValidByOrderGoodsNo(orderGoodsNo);
......
......@@ -3,31 +3,51 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildMessage;
import com.clx.open.sdk.enums.ResultStatusEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.MslAppConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.msl.common.result.Result;
import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Slf4j
//@Component
@Component
@AllArgsConstructor
public class OrderChildDtsListener {
private final MslAppConfig mslAppConfig;
//@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
@Autowired
private OrderFeign orderFeign;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private OrderChildDao orderChildDao;
@RabbitListener(queues = RabbitKeyConstants.CLX_PERFORMANCE_ORDER_CHILD_QUEUE)
public void onMessage(Message message) {
try {
String msg = new String(message.getBody());
......@@ -49,9 +69,7 @@ public class OrderChildDtsListener {
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){
//同步after数据
log.info("修改:{}"+after);
// OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
// Result result = client.encryptPost(JSON.toJSONString(after),after.topic());
// log.info("响应结果:{}",JSON.toJSONString(result));
orderChildChangeAfter(after);
}
}else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除
......@@ -65,4 +83,29 @@ public class OrderChildDtsListener {
}
}
public void orderChildChangeAfter(OrderChildMessage after){
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(after.getOrderNo());
if (orderInfoFeign == null) {
return;
}
after.setLastFlag(ResultStatusEnum.NO.getCode());
long nowTimeMillis = System.currentTimeMillis();
LocalDateTime nowDateTime = new Date(nowTimeMillis).toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
//如果当前货单已完成,则判断之前所有货单是否等于订单总吨数,等于则更新订单为已完成
List<OrderGoods> list = orderGoodsDao.getOrderGoodsListByOrderNoAndLastArriveSendTime(after.getOrderNo(), nowDateTime);
BigDecimal childSum = list.stream().map(OrderGoods::getExtractWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
log.info("算出所有货单总量:{}, 订单总吨数:{}", childSum, orderInfoFeign.getTransportWeight());
if (childSum.compareTo(new BigDecimal(orderInfoFeign.getTransportWeight())) == 0) {
// 按照时间 倒序查出最后一条进行中的运单
OrderChild orderChild = orderChildDao.getGoingLatestOrderChildByOrderNo(after.getOrderNo());
if(Objects.nonNull(orderChild) && orderChild.getChildNo().equals(after.getChildNo())){
after.setLastFlag(ResultStatusEnum.YES.getCode());
}
}
OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret());
Result result = client.encryptPost(JSON.toJSONString(after),after.topic());
log.info("订单信息同步,运单编号:{},响应结果:{}",after.getChildNo(),JSON.toJSONString(result));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论