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

增加交易平台消息同步

上级 dd5965f0
...@@ -56,4 +56,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -56,4 +56,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer getOrderChildTotalByUserNo(Long userNo); Integer getOrderChildTotalByUserNo(Long userNo);
List<OrderChild> getOrderChildBussInfo(String truckNo); List<OrderChild> getOrderChildBussInfo(String truckNo);
OrderChild getGoingLatestOrderChildByOrderNo(String orderNo);
} }
...@@ -185,6 +185,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -185,6 +185,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.last("limit 1")); .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 @Override
public int countValidByOrderGoodsNo(String orderGoodsNo) { public int countValidByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.countValidByOrderGoodsNo(orderGoodsNo); return baseMapper.countValidByOrderGoodsNo(orderGoodsNo);
......
...@@ -3,31 +3,51 @@ package com.clx.performance.listener; ...@@ -3,31 +3,51 @@ package com.clx.performance.listener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient; import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.message.OrderChildMessage; 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.config.MslAppConfig;
import com.clx.performance.constant.RabbitKeyConstants; 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.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum; 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.result.Result;
import com.msl.common.utils.DtsMapConvertUtil; import com.msl.common.utils.DtsMapConvertUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; 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; import java.util.Objects;
@Slf4j @Slf4j
//@Component @Component
@AllArgsConstructor @AllArgsConstructor
public class OrderChildDtsListener { public class OrderChildDtsListener {
private final MslAppConfig mslAppConfig; 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) { public void onMessage(Message message) {
try { try {
String msg = new String(message.getBody()); String msg = new String(message.getBody());
...@@ -49,9 +69,7 @@ public class OrderChildDtsListener { ...@@ -49,9 +69,7 @@ public class OrderChildDtsListener {
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){ if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && !Objects.equals(before.getStatus(),after.getStatus())){
//同步after数据 //同步after数据
log.info("修改:{}"+after); log.info("修改:{}"+after);
// OpenCallBackClient client = new OpenCallBackClient(mslAppConfig.getUrl(),mslAppConfig.getAppId(),mslAppConfig.getSecret()); orderChildChangeAfter(after);
// Result result = client.encryptPost(JSON.toJSONString(after),after.topic());
// log.info("响应结果:{}",JSON.toJSONString(result));
} }
}else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){ }else if(Objects.equals(DtsOperationTypeEnum.DELETE.getCode(),dataTransportDTO.getOperationType().getCode())){
//数据删除 //数据删除
...@@ -65,4 +83,29 @@ public class OrderChildDtsListener { ...@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论