提交 5f873144 authored 作者: 刘海泉's avatar 刘海泉

Merge remote-tracking branch 'origin/v18.6_youhua_20240701' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/job/TruckTraceJob.java # performance-web/src/main/java/com/clx/performance/service/OrderChildService.java
package com.clx.performance.controller.temp; package com.clx.performance.controller.temp;
import com.clx.open.sdk.callback.message.OrderChildSyncMessage; import com.clx.open.sdk.callback.message.OrderChildSyncMessage;
import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.extranal.transport.TransportService; import com.clx.performance.extranal.transport.TransportService;
import com.clx.performance.feign.TransportFeignService; import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.listener.OrderChildDtsListener; import com.clx.performance.listener.OrderChildDtsListener;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.TempService; import com.clx.performance.service.TempService;
import com.clx.performance.service.child.FeignOrderChildService; import com.clx.performance.service.child.FeignOrderChildService;
import com.clx.performance.service.trace.TruckTraceMqHandlerService;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -17,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -17,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/** /**
* @Author: aiqingguo * @Author: aiqingguo
...@@ -42,6 +44,9 @@ public class TempController { ...@@ -42,6 +44,9 @@ public class TempController {
@Autowired @Autowired
private OrderChildDtsListener orderChildDtsListener; private OrderChildDtsListener orderChildDtsListener;
@Autowired
private OrderChildService orderChildService;
@ApiOperation(value = "test", notes = "<br>By:艾庆国") @ApiOperation(value = "test", notes = "<br>By:艾庆国")
@RequestMapping(value = "/test", method = RequestMethod.GET) @RequestMapping(value = "/test", method = RequestMethod.GET)
...@@ -66,6 +71,26 @@ public class TempController { ...@@ -66,6 +71,26 @@ public class TempController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "插入缓存运单预计时间", notes = "<br>By:刘海泉")
@RequestMapping(value = "/saveOrderChildExpectTime", method = RequestMethod.GET)
public Result<Void> saveOrderChildExpectTime(@RequestParam("childNo") @NotBlank(message = "运单号不能为空") String childNo,
@RequestParam("expectArriveTime") @NotBlank(message = "预计到达货源地时间") String expectArriveTime,
@RequestParam("expectReceiveTime") @NotBlank(message = "预计到达目的地时间") String expectReceiveTime) {
OrderChildExpectDTO expect = new OrderChildExpectDTO();
expect.setChildNo(childNo);
expect.setExpectArriveTime(expectArriveTime);
expect.setExpectReceiveTime(expectReceiveTime);
expect.setCreateTime(DateUtils.formatDateTime(LocalDateTime.now()).get());
orderChildService.cacheOrderChildExpectData(childNo,expect);
return Result.ok();
}
// @ApiOperation(value = "更新网运标识", notes = "<br>By:艾庆国") // @ApiOperation(value = "更新网运标识", notes = "<br>By:艾庆国")
// @RequestMapping(value = "/updateInvoiceType", method = RequestMethod.POST) // @RequestMapping(value = "/updateInvoiceType", method = RequestMethod.POST)
// public Result<Void> updateInvoiceType(String childNo, Integer invoiceType) { // public Result<Void> updateInvoiceType(String childNo, Integer invoiceType) {
......
...@@ -72,7 +72,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -72,7 +72,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param); Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param);
List<OrderChild> listOrderChild(List<Integer> status); List<OrderChild> listOrderChild(List<Integer> status,LocalDateTime startTime,LocalDateTime endTime);
List<OrderChild> getOrderChildByOrderNo(String orderNo); List<OrderChild> getOrderChildByOrderNo(String orderNo);
...@@ -199,4 +199,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -199,4 +199,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos); List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos);
List<OrderChild> listBeforeUnloadOrderChild(LocalDateTime startTime,LocalDateTime endTime);
} }
...@@ -360,9 +360,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -360,9 +360,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
} }
@Override @Override
public List<OrderChild> listOrderChild(List<Integer> status) { public List<OrderChild> listOrderChild(List<Integer> status,LocalDateTime startTime,LocalDateTime endTime) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper(); LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
query.in(OrderChild :: getStatus,status); query.in(OrderChild :: getStatus,status);
query.ge(OrderChild :: getCreateTime,startTime);
query.le(OrderChild :: getCreateTime,endTime);
return baseMapper.selectList(query); return baseMapper.selectList(query);
} }
...@@ -657,4 +659,13 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -657,4 +659,13 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
public List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos) { public List<CancelOrderGoodsWeightDTO> statisticsCancelOrderGoodsWeight(List<String> childNos) {
return baseMapper.statisticsCancelOrderGoodsWeight(childNos); return baseMapper.statisticsCancelOrderGoodsWeight(childNos);
} }
@Override
public List<OrderChild> listBeforeUnloadOrderChild(LocalDateTime startTime,LocalDateTime endTime) {
return list(lQrWrapper()
.lt(OrderChild :: getStatus, OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())
.ge(OrderChild :: getCreateTime,startTime)
.le(OrderChild :: getCreateTime,endTime)
);
}
} }
...@@ -25,6 +25,7 @@ public class OrderChildExpectDTO implements Serializable { ...@@ -25,6 +25,7 @@ public class OrderChildExpectDTO implements Serializable {
private String truckLatitudeY; //车辆位置维度 private String truckLatitudeY; //车辆位置维度
private Integer expectTransportTimeSecond;//预计运输时间 private Integer expectTransportTimeSecond;//预计运输时间
private String expectTransportTime;//预计运输时间(转化秒 为几小时几分钟) private String expectTransportTime;//预计运输时间(转化秒 为几小时几分钟)
private String createTime; //插入缓存的时间
} }
package com.clx.performance.job;
import com.alibaba.fastjson.JSON;
import com.clx.open.sdk.callback.OpenCallBackClient;
import com.clx.open.sdk.callback.dto.OrderChildExpectTimeDTO;
import com.clx.open.sdk.callback.message.OrderChildExpectTimeMessage;
import com.clx.order.enums.SyncPlatformEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dto.OrderChildExpectDTO;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.listener.OrderChildDtsListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.struct.OrderChildStruct;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.msl.common.job.JobLog;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Component
@AllArgsConstructor
public class PushOrderChildExpectTimeJob {
private final OrderChildDao orderChildDao;
private final OrderFeign orderFeign;
private final OrderChildService orderChildService;
private final OrderChildStruct orderChildStruct;
private final DriverService driverService;
private final ThirdAppConfig thirdAppConfig;
private final OrderChildDtsListener orderChildDtsListener;
/**
* 推送运单预计时间到对应的平台
*/
@XxlJob("pushOrderChildExpectTimeJob")
public void pushOrderChildExpectTimeJob() {
try {
pushOrderChildExpectTime2ThirdPlatform();
} catch (Exception e) {
log.warn("定时任务推送运单预计时间到对应的平台失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("定时任务获取平台车辆定位信息失败,异常原因=====================", e);
}
}
//数媒宝对应的运单进行实时预计时间推送
public void pushOrderChildExpectTime2ThirdPlatform(){
log.info("开始查询承运系统未到达目的地前的运单开始===================");
LocalDateTime endTime = LocalDateTime.now();
LocalDateTime startTime = endTime.minusMonths(1);
List<OrderChild> list = orderChildDao.listBeforeUnloadOrderChild(startTime,endTime);
log.info("查询到承运系统未到达目的地前的运单条数:{} 条",list.size());
if(CollectionUtils.isNotEmpty(list)){
List<String> orderNoList = list.stream().map(OrderChild::getOrderNo).collect(Collectors.toList());
Result<Map<String, Integer>> mapResult = orderFeign.queryListOrderSource(orderNoList);
if(!mapResult.succeed()){
log.warn("通过订单编号查询订单来源信息失败,响应结果:{}",mapResult);
return;
}
Map<String, Integer> orderSourceMap = mapResult.getData();
List<OrderChildExpectTimeDTO> syncExpectList = new ArrayList<>();
list.forEach(item->{
//交易平台数媒宝同步运单同步实时预计时间
if(Objects.equals(orderSourceMap.get(item.getOrderNo()),SyncPlatformEnum.Source.TRADE_PLATFORM.getCode())){
List<OrderChildExpectDTO> expectList = orderChildService.getOrderChildExpect(
item.getChildNo());
if(CollectionUtils.isEmpty(expectList) || StringUtils.isBlank(expectList.get(0).getCreateTime())){
log.info("运单号:{} 未从缓存中查询到对应的预计时间信息",item.getChildNo());
return;
}
OrderChildExpectDTO orderChildExpect = expectList.get(0);
LocalDateTime calcExpectTime = DateUtils.parseDateTime(orderChildExpect.getCreateTime()).get();
//如果缓存预计时间 插入的不是10分钟之内的,则不进行使用
if(LocalDateTimeUtils.betweenMin(calcExpectTime,LocalDateTime.now()) > 10){
log.info("运单号:{} 从缓存中查询到对应的预计时间信息超过10分钟,不进行使用",item.getChildNo());
return;
}
OrderChildExpectTimeDTO dto = new OrderChildExpectTimeDTO();
dto.setOrderNo(item.getOrderNo());
dto.setChildNo(item.getChildNo());
dto.setStatus(item.getStatus());
if(item.getStatus() < OrderChildEnum.Status.ARRIVE_SEND.getCode()){ //到达货源地之前
dto.setExpectArriveTime(orderChildExpect.getExpectArriveTime());
}else{ //到达货源地之后 && 到达目的地之前
dto.setExpectArriveTime(orderChildExpect.getExpectReceiveTime());
}
syncExpectList.add(dto);
}
});
if(CollectionUtils.isNotEmpty(syncExpectList)){
OrderChildExpectTimeMessage message = new OrderChildExpectTimeMessage();
message.setList(syncExpectList);
String data = JSON.toJSONString(message);
OpenCallBackClient openCallBackClient = thirdAppConfig.getOpenCallBackClient(
SyncPlatformEnum.Source.TRADE_PLATFORM.getCode().toString());
log.info("运单预计时间信息同步开始,请求参数:{}",data);
Result<?> result = openCallBackClient.encryptPost(data,message.topic());
log.info("运单预计时间信息同步,响应结果:{}",JSON.toJSONString(result));
}
}
}
}
...@@ -3,7 +3,6 @@ package com.clx.performance.job; ...@@ -3,7 +3,6 @@ package com.clx.performance.job;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.service.trace.TruckTraceMqService;
import com.clx.performance.utils.LocalDateTimeUtils; import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService; import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.user.feign.UserClxFeign; import com.clx.user.feign.UserClxFeign;
...@@ -13,6 +12,7 @@ import com.msl.common.result.Result; ...@@ -13,6 +12,7 @@ import com.msl.common.result.Result;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -20,6 +20,9 @@ import org.springframework.stereotype.Component; ...@@ -20,6 +20,9 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Slf4j @Slf4j
@Component @Component
...@@ -32,8 +35,6 @@ public class TruckTraceJob { ...@@ -32,8 +35,6 @@ public class TruckTraceJob {
@Autowired @Autowired
RedisTemplate redisTemplate; RedisTemplate redisTemplate;
@Autowired
private TruckTraceMqService truckTraceMqService;
/** /**
...@@ -44,7 +45,7 @@ public class TruckTraceJob { ...@@ -44,7 +45,7 @@ public class TruckTraceJob {
try { try {
getPlatformTruckTrace(); getPlatformTruckTrace();
} catch (Exception e) { } catch (Exception e) {
log.warn("定时任务获取平台车辆定位信息失败,异常原因:{}",e); log.warn("定时任务获取平台车辆定位信息失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("定时任务获取平台车辆定位信息失败,异常原因=====================", e); JobLog.error("定时任务获取平台车辆定位信息失败,异常原因=====================", e);
} }
} }
...@@ -59,7 +60,7 @@ public class TruckTraceJob { ...@@ -59,7 +60,7 @@ public class TruckTraceJob {
Result<List<String>> result = userClxFeign.getPlatformTruckList(); Result<List<String>> result = userClxFeign.getPlatformTruckList();
log.info("通过clx-user服务获取平台认证成功车辆,返回结果:{}", JSON.toJSONString(result)); log.info("通过clx-user服务获取平台认证成功车辆,返回结果:{}", JSON.toJSONString(result));
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
LocalDateTime beginTime = now.plus(-5, ChronoUnit.MINUTES); LocalDateTime beginTime = now.minusMinutes(5);
if(Objects.equals(result.getCode(), ResultCodeEnum.SUCCESS.getCode())){ if(Objects.equals(result.getCode(), ResultCodeEnum.SUCCESS.getCode())){
//本次拉取定位信息成功的车辆 //本次拉取定位信息成功的车辆
...@@ -74,9 +75,7 @@ public class TruckTraceJob { ...@@ -74,9 +75,7 @@ public class TruckTraceJob {
LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(now)); LocalDateTimeUtils.formatTime(beginTime), LocalDateTimeUtils.formatTime(now));
if(CollectionUtils.isNotEmpty(truckTrace)){ if(CollectionUtils.isNotEmpty(truckTrace)){
//排序获取最新的定位位置 TruckTraceDTO truckTraceDTO = truckTrace.get(truckTrace.size()-1);
truckTrace.stream().sorted(Comparator.comparing(TruckTraceDTO::getGpsTime));
TruckTraceDTO truckTraceDTO = truckTrace.get(0);
truckTraceDTO.setTruckNo(truckNo); truckTraceDTO.setTruckNo(truckNo);
redisTemplate.opsForHash().put(RedisConstants.ZJXL_TRUCK_TRACE_LIST,truckNo,truckTraceDTO); redisTemplate.opsForHash().put(RedisConstants.ZJXL_TRUCK_TRACE_LIST,truckNo,truckTraceDTO);
log.info("放入缓存成功,滚存 key:{},车牌号{}",RedisConstants.ZJXL_TRUCK_TRACE_LIST,truckNo); log.info("放入缓存成功,滚存 key:{},车牌号{}",RedisConstants.ZJXL_TRUCK_TRACE_LIST,truckNo);
...@@ -84,10 +83,12 @@ public class TruckTraceJob { ...@@ -84,10 +83,12 @@ public class TruckTraceJob {
} }
} }
//获取上次拉取的车辆 //获取上次拉取的车辆
if(redisTemplate.hasKey(RedisConstants.ZJXL_LAST_PULL_TRUCK)){ if(Objects.equals(Boolean.TRUE,redisTemplate.hasKey(RedisConstants.ZJXL_LAST_PULL_TRUCK))){
List<String> lastTimeTruck= redisTemplate.opsForList().range(RedisConstants.ZJXL_LAST_PULL_TRUCK,0,-1);//获取上次拉取的车辆列表 List<String> lastTimeTruck= redisTemplate.opsForList().range(RedisConstants.ZJXL_LAST_PULL_TRUCK,0,-1);//获取上次拉取的车辆列表
//上次拉取的车辆 去除掉 本次拉运的车辆 = 本次没有拉取的车辆(可能车辆过期,删除了,所以此类数据不需要在缓存中存在了) //上次拉取的车辆 去除掉 本次拉运的车辆 = 本次没有拉取的车辆(可能车辆过期,删除了,所以此类数据不需要在缓存中存在了)
lastTimeTruck.removeAll(pullTruckList); if(CollectionUtils.isNotEmpty(lastTimeTruck)){
lastTimeTruck.removeAll(pullTruckList);
}
if(CollectionUtils.isNotEmpty(lastTimeTruck)){ if(CollectionUtils.isNotEmpty(lastTimeTruck)){
//移除掉本次没拉运的定位信息 //移除掉本次没拉运的定位信息
redisTemplate.opsForHash().delete(RedisConstants.ZJXL_TRUCK_TRACE_LIST,lastTimeTruck.toArray()); redisTemplate.opsForHash().delete(RedisConstants.ZJXL_TRUCK_TRACE_LIST,lastTimeTruck.toArray());
......
...@@ -13,25 +13,33 @@ import com.clx.order.feign.OrderFeign; ...@@ -13,25 +13,33 @@ import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.config.ThirdAppConfig; import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildImageDao;
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.enums.OrderChildPoundAuditEnum;
import com.clx.performance.event.OrderChildCancelEvent; import com.clx.performance.event.OrderChildCancelEvent;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.service.LastTruckService; import com.clx.performance.service.LastTruckService;
import com.clx.user.feign.TruckFeign;
import com.clx.user.vo.feign.FeignDriverTruckModelVo; import com.clx.user.vo.feign.FeignDriverTruckModelVo;
import com.clx.user.vo.feign.TruckInfoFeignVo;
import com.msl.common.enums.ResultCodeEnum; import com.msl.common.enums.ResultCodeEnum;
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.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
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.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional; import java.util.Optional;
...@@ -44,6 +52,8 @@ public class OrderChildDtsListener { ...@@ -44,6 +52,8 @@ public class OrderChildDtsListener {
private final DriverService driverService; private final DriverService driverService;
private final ApplicationEventPublisher applicationEventPublisher; private final ApplicationEventPublisher applicationEventPublisher;
private final ThirdAppConfig thirdAppConfig; private final ThirdAppConfig thirdAppConfig;
private final TruckFeign truckFeign;
private final OrderChildImageDao orderChildImageDao;
...@@ -71,7 +81,8 @@ public class OrderChildDtsListener { ...@@ -71,7 +81,8 @@ public class OrderChildDtsListener {
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) && if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) &&
(!Objects.equals(before.getStatus(),after.getStatus()) || (!Objects.equals(before.getStatus(),after.getStatus()) ||
!Objects.equals(before.getLoadNet(),after.getLoadNet())) || !Objects.equals(before.getLoadNet(),after.getLoadNet())) ||
!Objects.equals(before.getUnloadNet(),after.getUnloadNet()) !Objects.equals(before.getUnloadNet(),after.getUnloadNet()) ||
!Objects.equals(before.getPoundStatus(),after.getPoundStatus())
){ ){
orderChildChangeAfter(after); orderChildChangeAfter(after);
} }
...@@ -91,6 +102,7 @@ public class OrderChildDtsListener { ...@@ -91,6 +102,7 @@ public class OrderChildDtsListener {
} }
} }
public void orderChildChangeAfter(OrderChildMessage after){ public void orderChildChangeAfter(OrderChildMessage after){
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(after.getOrderNo()); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(after.getOrderNo());
if (orderInfoFeign == null) { if (orderInfoFeign == null) {
...@@ -104,6 +116,8 @@ public class OrderChildDtsListener { ...@@ -104,6 +116,8 @@ public class OrderChildDtsListener {
FeignDriverTruckModelVo dumpType = driverService.getDumpType(truckModel).orElseThrow(ResultCodeEnum.FAIL); FeignDriverTruckModelVo dumpType = driverService.getDumpType(truckModel).orElseThrow(ResultCodeEnum.FAIL);
after.setDumpType(dumpType.getDumpType()); after.setDumpType(dumpType.getDumpType());
} }
buildOrderOtherInfo(after);
//同步after数据 //同步after数据
Optional<OrderChildEnum.Status> option = OrderChildEnum.Status.getByCode(after.getStatus()); Optional<OrderChildEnum.Status> option = OrderChildEnum.Status.getByCode(after.getStatus());
String statusName = option.isPresent()?option.get().getName():"未知状态"; String statusName = option.isPresent()?option.get().getName():"未知状态";
...@@ -146,6 +160,42 @@ public class OrderChildDtsListener { ...@@ -146,6 +160,42 @@ public class OrderChildDtsListener {
} }
} }
} }
//构建运单其它信息
public void buildOrderOtherInfo(OrderChildMessage after){
//查询挂车车牌号
if(Objects.nonNull(after.getTruckId())){
log.info("通过车辆id:{} 开始查找运单号:{},车牌号:{} 对应的车辆信息开始查询===",
after.getTruckId(),after.getChildNo(),after.getTruckNo());
Result<TruckInfoFeignVo> result = truckFeign.getTruckInfo(after.getTruckId());
if(!result.succeed()){
log.warn("通过车辆id:{} 开始查找运单号:{},车牌号:{} 的车辆信息未查询到,响应结果:{}",
after.getTruckId(),after.getChildNo(),after.getTruckNo(),result);
}else{
log.warn("通过车辆id:{} 开始查找运单号:{},车牌号:{} 查询到对应的车辆信息,响应结果:{}",
after.getTruckId(),after.getChildNo(),after.getTruckNo(),result);
after.setTruckNo2(result.getData().getTruckNo2());
}
}
//查询收发货地对应的磅单图片信息,
if(Objects.equals(after.getPoundStatus(), OrderChildPoundAuditEnum.Status.APPROVED.getCode())){
List<OrderChildImage> orderChildImages = orderChildImageDao.listByField(OrderChildImage::getChildNo,
after.getChildNo());
if(CollectionUtils.isNotEmpty(orderChildImages)){
List<String> sendAddressPoundPicList = new ArrayList<>();
List<String> receiveAddressPoundPicList = new ArrayList<>();
orderChildImages.forEach(item->{
if(Objects.equals(item.getType(),OrderChildImage.Type.LOAD.getCode())){
sendAddressPoundPicList.add(item.getImage());
}
if(Objects.equals(item.getType(),OrderChildImage.Type.UNLOAD.getCode())){
receiveAddressPoundPicList.add(item.getImage());
}
});
after.setSendAddressPoundPicList(sendAddressPoundPicList);
after.setReceiveAddressPoundPicList(receiveAddressPoundPicList);
}
}
}
public void syncLastTruck(FeignOrderVO orderInfoFeign,OrderChildMessage after){ public void syncLastTruck(FeignOrderVO orderInfoFeign,OrderChildMessage after){
//当运单状态为到达目的地之后的状态时候,需要判断最后一车的逻辑 //当运单状态为到达目的地之后的状态时候,需要判断最后一车的逻辑
......
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.OrderChildExpectDTO;
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.app.*; import com.clx.performance.param.app.*;
...@@ -101,4 +102,8 @@ public interface OrderChildService { ...@@ -101,4 +102,8 @@ public interface OrderChildService {
void cancelOrderChilds(CancelOrderGoodsParam param); void cancelOrderChilds(CancelOrderGoodsParam param);
OcrRecognitionResultVO ocrRecognition(OcrRecognitionParam param); OcrRecognitionResultVO ocrRecognition(OcrRecognitionParam param);
List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo);
void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect);
} }
...@@ -2538,13 +2538,13 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2538,13 +2538,13 @@ public class OrderChildServiceImpl implements OrderChildService {
RedisConstants.ZJXL_TRUCK_TRACE_LIST); RedisConstants.ZJXL_TRUCK_TRACE_LIST);
//查询平台未完结的运单 //查询平台未完结的运单
List<Integer> list = Arrays.asList( List<Integer> list = Arrays.asList(OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(),
new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(), OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(), OrderChildEnum.Status.LOAD.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(), OrderChildEnum.Status.UNSETTLE.getCode());
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(), LocalDateTime endTime = LocalDateTime.now();
OrderChildEnum.Status.UNSETTLE.getCode()}); LocalDateTime startTime = endTime.minusMonths(1);
List<OrderChild> orderChildList = orderChildDao.listOrderChild(list); List<OrderChild> orderChildList = orderChildDao.listOrderChild(list,startTime,endTime);
for (OrderChild child : orderChildList) { for (OrderChild child : orderChildList) {
String childNo = child.getChildNo(); String childNo = child.getChildNo();
...@@ -2606,6 +2606,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2606,6 +2606,7 @@ public class OrderChildServiceImpl implements OrderChildService {
expect.setExpectReceiveTime(DateUtils.formatDateTime(expectTime).get()); expect.setExpectReceiveTime(DateUtils.formatDateTime(expectTime).get());
expect.setExpectReceiveTimeSecond(plusTime); expect.setExpectReceiveTimeSecond(plusTime);
} }
expect.setCreateTime(DateUtils.formatDateTime(LocalDateTime.now()).get());
cacheOrderChildExpectData(childNo,expect); cacheOrderChildExpectData(childNo,expect);
} }
} }
...@@ -2628,6 +2629,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2628,6 +2629,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* @Description 缓存实时计算的运单预计时间 * @Description 缓存实时计算的运单预计时间
* @Param [orderChildNo, expect] * @Param [orderChildNo, expect]
**/ **/
@Override
public void cacheOrderChildExpectData(String orderChildNo, OrderChildExpectDTO expect) { public void cacheOrderChildExpectData(String orderChildNo, OrderChildExpectDTO expect) {
String orderChildExpectDataKey = getOrderChildExpectDataKey(orderChildNo); String orderChildExpectDataKey = getOrderChildExpectDataKey(orderChildNo);
//计算结果20分钟过期。定时每5分钟执行一次。所以在此记录过期前,该运单会生成四条记录。保留最新的两条记录即可,剩下两条不再结果集中记录。 //计算结果20分钟过期。定时每5分钟执行一次。所以在此记录过期前,该运单会生成四条记录。保留最新的两条记录即可,剩下两条不再结果集中记录。
...@@ -2657,6 +2659,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2657,6 +2659,7 @@ public class OrderChildServiceImpl implements OrderChildService {
* @Param [orderChildNo] * @Param [orderChildNo]
* @return * @return
**/ **/
@Override
public List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo){ public List<OrderChildExpectDTO> getOrderChildExpect(String orderChildNo){
List<String> keyList = (List<String>) redisTemplate.opsForHash().get( List<String> keyList = (List<String>) redisTemplate.opsForHash().get(
RedisConstants.ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP, orderChildNo); RedisConstants.ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP, orderChildNo);
......
...@@ -38,4 +38,5 @@ public interface OrderChildStruct { ...@@ -38,4 +38,5 @@ public interface OrderChildStruct {
List<LineWarnTruckTraceInfoVO> convertLineWarnTruckTraceInfoVO(List<OrderChild> list); List<LineWarnTruckTraceInfoVO> convertLineWarnTruckTraceInfoVO(List<OrderChild> list);
OrderChildMessage convert2Message(OrderChild item);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论