提交 8f770e79 authored 作者: liuhaiquan's avatar liuhaiquan

提交全量运单监控部分代码

上级 d7a39aa6
package com.clx.performance.param.pc;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.util.List;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class PageMonitorOrderChildQCParam extends PageParam {
@ApiModelProperty(value = "发货地址")
private Integer sendAddressId;
@ApiModelProperty(value = "车牌号")
private String truckNo;
@NotNull(message = "运单状态不能为空")
@ApiModelProperty(value = "运单状态 10:已接单 20:支付 30:前往货源地 40:到达货源地 50:装货成功 60:前往目的地 70:到达目的地 80:收货待确认 90:待结算 100:完成 110:司机取消 111:承运取消 112:货主取消 ")
private List<Integer> status;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.math.BigDecimal;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OutputMonitorOrderChildVO {
@ApiModelProperty(value = "发货地址")
private String sendAddress;
@ApiModelProperty(value = "发货地址Id")
private Integer sendAddressId;
@ApiModelProperty(value = "状态 运单状态 10:已接单 20:支付 30:前往货源地 40:到达货源地 50:装货成功 60:前往目的地 70:到达目的地 80:收货待确认 90:待结算 100:完成 110:司机取消 111:承运取消 112:货主取消 ")
private Integer status;
@ApiModelProperty(value = "预计到货源地时间")
private String expectArriveTime;
@ApiModelProperty(value = "预计到货源地时间-实时")
private String expectArriveTimeRealTime;
@ApiModelProperty(value = "预计到货源地趋势 0 前进 1 后退")
private Integer arriveTrend;
@ApiModelProperty(value = "预计到收货地时间")
private String expectReceiveTime;
@ApiModelProperty(value = "预计到收货地时间-实时")
private String expectReceiveTimeRealTime;
@ApiModelProperty(value = "预计到收货地趋势 0 前进 1 后退")
private Integer receiveTrend;
@ApiModelProperty(value = "预计运输时间")
private String expectTransportTime;
@ApiModelProperty(value = "装车预警 0 不预警 1 预警")
private Integer loadWarning;
@ApiModelProperty(value = "货源地预警 0 不预警 1 预警")
private Integer arriveWarning;
@ApiModelProperty(value = "收货地预警 0 不预警 1 预警")
private Integer receiveWarning;
@ApiModelProperty(value = "车牌号")
private String truckNo;
@ApiModelProperty(value = "司机姓名")
private String driverName;
@ApiModelProperty(value = "司机手机号")
private String driverMobile;
@ApiModelProperty(value = "装车吨数")
private BigDecimal loadNet;
@ApiModelProperty(value = "接单时间")
private String payTime;
@ApiModelProperty(value = "装车时间")
private String loadTime;
@ApiModelProperty(value = "运单号")
private String childNo;
}
......@@ -8,6 +8,9 @@ public class RedisConstants {
public static final String ORDER_GOODS_ID_GENERATE ="clx-performance:orderGoodsId:generate";
public static final String ZJXL_TRUCK_TRACE_LIST = "clx-performance:zjxl_truck_trace_list:";
public static final String ORDER_CHILD_EXPECT_TIME_DATA = "clx-performance:order_child_expect_time_data:";
public static final String ORDER_CHILD_EXPECT_TIME_DATA_KEY_MAP = "clx-performance:order_child_expect_time_data_key_map:";
public static final String ZJXL_LAST_PULL_TRUCK = "clx-performance:zjxl_last_time_pull_truck:";
......
......@@ -2,14 +2,12 @@ package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.service.OrderChildPoundAuditService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.vo.pc.CarrierOrderChildDetailVO;
import com.clx.performance.vo.pc.OrderChildBussInfoVO;
import com.clx.performance.vo.pc.OrderChildStatusVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.*;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result;
......@@ -87,4 +85,13 @@ public class CarrierOrderChildController {
return Result.ok(orderChildService.getOrderChildBussInfo(truckNo));
}
@ApiOperation(value = "全量运单监控预警列表", notes = "<br>By:刘海泉")
@RequestMapping(value = "/getMonitorOrerChildListsByParam", method = RequestMethod.POST)
public Result<PageData<OutputMonitorOrderChildVO>> getMonitorOrerChildListsByParam(@RequestBody PageMonitorOrderChildQCParam param) {
IPage<OutputMonitorOrderChildVO> page = orderChildService.getMonitorOrerChildListsByParam(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
......@@ -47,6 +47,12 @@ public class GoodsOrderMapController {
}
@ApiOperation(value = "获取货单车辆", notes = "<br>By:刘海泉")
@GetMapping("/getPlatformTruckCoordinate")
public Result<List<String>> getOrderChildTruckByOrderNo(String orderNo) {
return Result.ok(goodsOrderMapService.getOrderChildTruckByOrderNo(orderNo));
}
......
package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.mapper.OrderChildMapper;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
......@@ -56,4 +58,10 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer getOrderChildTotalByUserNo(Long userNo);
List<OrderChild> getOrderChildBussInfo(String truckNo);
Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param);
List<OrderChild> listOrderChild(List<Integer> status);
List<OrderChild> getOrderChildByOrderNo(String orderNo);
}
......@@ -10,16 +10,19 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.param.app.PageOrderChildOfDriverParam;
import com.clx.performance.param.app.PageOrderChildOfDriverSearchParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
* @Author: aiqinguo
......@@ -198,6 +201,37 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return baseMapper.selectCount(query).intValue();
}
@Override
public Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
if(StringUtils.isNotBlank(param.getTruckNo())){
query.eq(OrderChild :: getTruckNo,param.getTruckNo());
}
if(Objects.nonNull(param.getSendAddressId())){
query.eq(OrderChild :: getSendAddressId,param.getSendAddressId());
}
query.in(OrderChild :: getStatus,param.getStatus());
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
}
@Override
public List<OrderChild> getOrderChildByOrderNo(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
query.in(OrderChild :: getOrderNo,orderNo);
return baseMapper.selectList(query);
}
@Override
public List<OrderChild> listOrderChild(List<Integer> status) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
query.in(OrderChild :: getStatus,status);
return baseMapper.selectList(query);
}
@Override
public List<OrderChild> getOrderChildBussInfo(String truckNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
......
package com.clx.performance.dto;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class OrderChildExpectDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String childNo;//子订单编号
private LocalDateTime expectArriveTime;//预计到达货源地时间
private Integer expectArriveTimeSecond;//预计到达货源地时间
private LocalDateTime expectReceiveTime;//预计到达目的地时间
private Integer expectReceiveTimeSecond;//预计到达目的地时间
private Integer expectTransportTimeSecond;//预计运输时间
}
package com.clx.performance.dto.gd;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author: aiqingguo
* @Description:
* @Date: 2023/2/28 12:00
* @Version: 1.0
*/
@Data
public class GdPosDTO {
@ApiModelProperty(value = "经度", example = "116.0000000000")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度", example = "39.0000000000")
private BigDecimal latitude;
@ApiModelProperty(value = "耗时(秒)", example = "278")
private Integer duration;
}
package com.clx.performance.dto.gd;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
/**
* @Author: aiqingguo
* @Description: 收发货地址线路
* @Date: 2023/2/28 11:02
* @Version: 1.0
*/
@Getter
@Setter
@ToString
@NoArgsConstructor
@ApiModel(description = "高德线路规划")
public class GdRouteDTO {
@ApiModelProperty(value = "距离(m)", example = "1")
private Integer distance;
@ApiModelProperty(value = "时间s", example = "1")
private Integer duration;
@ApiModelProperty(value = "线路轨迹")
private List<GdPosDTO> posList;
}
package com.clx.performance.job;
import com.clx.performance.service.OrderChildService;
import com.msl.common.job.JobLog;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class OrderChildExpectTimeJob {
@Autowired
OrderChildService orderChildService;
/**
* 定时任务计算运单实时位置耗时信息
*/
@XxlJob("orderChildExpect")
public void orderChildExpect() {
try {
log.info("开始实时计算进行中的运单的实时位置计算任务================================================");
orderChildService.orderChildExpect();
log.info("结束实时计算进行中的运单的实时位置计算任务================================================");
} catch (Exception e) {
log.warn("定时任务计算进行中的运单的实时位置失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("定时任务计算进行中的运单的实时位置失败,异常原因=====================", e);
}
}
}
......@@ -77,6 +77,10 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime settleTime; //结算时间
private LocalDateTime cancelTime; //取消时间
private LocalDateTime finishTime; //完成时间
private LocalDateTime expectSendTime; //预计到达货源地时间
private LocalDateTime expectReceiveTime; //预计到达目的地时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -11,4 +11,6 @@ public interface GoodsOrderMapService {
List<GoodsOrderSendAddressSelect> getSendAddressSelect(GoodsOrderMapParam param);
List<TruckCoordinateVO> getPlatformTruckCoordinate();
List<String> getOrderChildTruckByOrderNo(String orderNo);
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.app.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.*;
import com.clx.performance.vo.pc.*;
......@@ -61,4 +62,10 @@ public interface OrderChildService {
Integer getOrderChildTotalByUserNo(Long userNo);
OrderChildBussInfoVO getOrderChildBussInfo(String truckNo);
IPage<OutputMonitorOrderChildVO> getMonitorOrerChildListsByParam(PageMonitorOrderChildQCParam param);
List<String> getOrderChildTruckByOrderNo(String orderNo);
void orderChildExpect();
}
......@@ -7,6 +7,7 @@ import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.GoodsOrderMapParam;
import com.clx.performance.service.GoodsOrderMapService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.TruckService;
import com.clx.performance.vo.pc.Freight;
import com.clx.performance.vo.pc.GoodsOrderSendAddressSelect;
......@@ -40,6 +41,9 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
@Autowired
TruckService truckService;
@Autowired
OrderChildService orderChildService;
@Autowired(required = false)
UserClxFeign userClxFeign;
......@@ -75,6 +79,11 @@ public class GoodsOrderMapServiceImpl implements GoodsOrderMapService {
return values;
}
@Override
public List<String> getOrderChildTruckByOrderNo(String orderNo) {
return orderChildService.getOrderChildTruckByOrderNo(orderNo);
}
@Override
public List<TruckCoordinateVO> getPlatformTruckCoordinate() {
List<TruckCoordinateVO> result = new ArrayList<>();
......
package com.clx.performance.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.*;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
......@@ -30,8 +41,17 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
public class HttpUtils {
private static PoolingHttpClientConnectionManager connectionManager;
private static String DEFAULT_STR = "";
private static String UTF_8 = "UTF-8";
private static final int CONNECT_TIMEOUT = 10000;
private static final int SOCKET_TIMEOUT = 100000;
private static final int REQUESTCONNECT_TIMEOUT = 2000;
private static final int MAX_TOTAL = 50;
private static final int CONNECT_DEFAULT_ROUTE = 5;
/**
......@@ -307,4 +327,84 @@ public class HttpUtils {
throw new RuntimeException(ex);
}
}
public static String httpGetRequest(String url) throws Exception {
HttpGet httpGet = new HttpGet(url);
return getResult(httpGet);
}
private static void init() {
if (connectionManager == null) {
connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(50);
connectionManager.setDefaultMaxPerRoute(5);
}
}
private static CloseableHttpClient getHttpClient() {
init();
RequestConfig.Builder builder = RequestConfig.custom();
RequestConfig config = builder.setSocketTimeout(100000).setConnectTimeout(10000).setConnectionRequestTimeout(2000).build();
CloseableHttpClient client = HttpClients.custom().setMaxConnPerRoute(5).disableConnectionState().setDefaultRequestConfig(config).setConnectionManager(connectionManager).build();
return client;
}
private static String getResult(HttpRequestBase request) throws IOException {
CloseableHttpClient httpClient = getHttpClient();
CloseableHttpResponse response = null;
InputStream in = null;
String var6;
try {
response = httpClient.execute(request);
HttpEntity entity = response.getEntity();
in = response.getEntity().getContent();
if (entity == null) {
return DEFAULT_STR;
}
String result = EntityUtils.toString(entity, Charset.forName(UTF_8));
response.close();
var6 = result;
} catch (ConnectTimeoutException var37) {
log.error("connect timeout {}", var37);
return DEFAULT_STR;
} catch (SocketTimeoutException var38) {
log.error("read timeout {}", var38);
return DEFAULT_STR;
} catch (ClientProtocolException var39) {
log.error("protocol exception {}", var39);
return DEFAULT_STR;
} catch (ParseException var40) {
log.error("parse exception {}", var40);
return DEFAULT_STR;
} catch (IOException var41) {
log.error("network exception {}", var41);
return DEFAULT_STR;
} catch (Exception var42) {
log.error("other exception {}", var42);
return DEFAULT_STR;
} finally {
if (response != null) {
try {
response.close();
} catch (IOException var36) {
var36.printStackTrace();
}
}
if (in != null) {
try {
in.close();
} catch (IOException var35) {
var35.printStackTrace();
}
}
}
return var6;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论