JAVA 快递100wms工具类

news2024/10/5 19:08:58

快递wms工具类

在这里插入图片描述

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.kuaidi100.sdk.api.QueryTrack;
import com.kuaidi100.sdk.api.Subscribe;
import com.kuaidi100.sdk.contant.ApiInfoConstant;
import com.kuaidi100.sdk.core.IBaseClient;
import com.kuaidi100.sdk.pojo.HttpResult;
import com.kuaidi100.sdk.request.QueryTrackParam;
import com.kuaidi100.sdk.request.QueryTrackReq;
import com.kuaidi100.sdk.request.SubscribeParam;
import com.kuaidi100.sdk.request.SubscribeParameters;
import com.kuaidi100.sdk.request.SubscribeReq;
import com.kuaidi100.sdk.response.QueryTrackResp;
import com.kuaidi100.sdk.response.SubscribeResp;
import com.kuaidi100.sdk.utils.SignUtils;
import jakarta.annotation.Nullable;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Objects;


/**
 * @author lisong
 */
@Component
@Slf4j
public class WmsUtil {

    @Value("${wms.kuaidi-100.key}")
    private String key;

    @Value("${wms.kuaidi-100.customer}")
    private String customer;

    @Value("${wms.kuaidi-100.callbackUrl}")
    private String callbackUrl;


    /***
     * Desc: 订阅物流
     * @param companyEncoded 物流公司编码
     * @param wmsOrderNo 物流单号
     * @param phoneNum   手机号
     * @author lisong
     *
     */
    public void subscribe(String companyEncoded, String wmsOrderNo, String phoneNum) throws Exception {
        SubscribeParameters subscribeParameters = new SubscribeParameters();
        subscribeParameters.setCallbackurl(callbackUrl);
        subscribeParameters.setPhone(phoneNum);
        SubscribeParam subscribeParam = new SubscribeParam();
        subscribeParam.setParameters(subscribeParameters);
        subscribeParam.setCompany(companyEncoded);
        subscribeParam.setNumber(wmsOrderNo);
        subscribeParam.setKey(key);

        SubscribeReq subscribeReq = new SubscribeReq();
        subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
        subscribeReq.setParam(new Gson().toJson(subscribeParam));

        IBaseClient subscribe = new Subscribe();
        HttpResult httpResult = subscribe.execute(subscribeReq);
        SubscribeResp subscribeResp = handleWmsResult(httpResult, SubscribeResp.class);
        log.info("订阅物流返回信息:{}", JSON.toJSONString(subscribeResp));
    }


    public QueryTrackResp queryTrack(String companyEncoded, String wmsOrderNo, String phoneNum) throws Exception {
        QueryTrackReq queryTrackReq = new QueryTrackReq();
        QueryTrackParam queryTrackParam = new QueryTrackParam();
        queryTrackParam.setCom(companyEncoded);
        queryTrackParam.setNum(wmsOrderNo);
        queryTrackParam.setPhone(phoneNum);
        String param = new Gson().toJson(queryTrackParam);

        queryTrackReq.setParam(param);
        queryTrackReq.setCustomer(customer);
        queryTrackReq.setSign(SignUtils.querySign(param, key, customer));

        IBaseClient baseClient = new QueryTrack();
        HttpResult httpResult = baseClient.execute(queryTrackReq);
        return handleWmsResult(httpResult, QueryTrackResp.class);
    }


    /***
     * Desc: 处理快递100接口返回结果
     * @param httpResult 快递100接口返回结果
     * @return
     * @author lisong
     *
     */
    @Nullable
    @SuppressWarnings("all")
    private <T> T handleWmsResult(@NotNull HttpResult httpResult, Class<T> clazz) {
        if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())) {
            String body = httpResult.getBody();
            JSONObject jsonObject = JSON.parseObject(httpResult.getBody());
            if (Objects.nonNull(jsonObject.get("data"))) {
                return JSONObject.toJavaObject(jsonObject, clazz);
            } else if (Objects.nonNull(jsonObject.get("message"))) {
                QueryTrackResp queryTrackResp = JSON.parseObject(httpResult.getBody(), QueryTrackResp.class);
                return JSONObject.toJavaObject(jsonObject, clazz);
            }
            return JSONObject.toJavaObject(jsonObject, clazz);
        }
        return null;
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么说牛企查查企业超好用?

步入职场的职场人士&#xff0c;经济相关专业的学生&#xff0c;都有查企业的需求&#xff0c;市面上查企业的软件平台那么多&#xff0c;每个功能都不怎么一样。 有的便宜&#xff0c;但是信息不全。有的信息还可以&#xff0c;但是会员费又很贵&#xff0c;让我这个打工人没…

图像增强方法汇总OpenCV+python实现【第一部分:常用图像增强方法】

图像增强方法汇总OpenCVpython实现【第一部分】 前言常用的图像增强方法1. 旋转&#xff08;Rotation&#xff09;&#xff1a;2. 平移&#xff08;Translation&#xff09;&#xff1a;3. 缩放&#xff08;Scaling&#xff09;&#xff1a;4. 剪切变换&#xff08;Shear Trans…

Java:JDK、JRE和JVM 三者关系

文章目录 一、JDK是什么二、JRE是什么三、JDK、JRE和JVM的关系 一、JDK是什么 JDK&#xff08;Java Development Kit&#xff09;&#xff1a;Java开发工具包 JRE&#xff1a;Java运行时环境开发工具&#xff1a;javac&#xff08;编译工具&#xff09;、java&#xff08;运行…

电机的分类

1.按工作电源种类划分 2.按结构特点分类 3.按启动与运行方式分类 4.按转子结构分类 5.按用途分类 6.按运转速度分类 其他文章介绍了主流电机的原理和使用&#xff1a; 直流电机介绍-CSDN博客 步进电机(STM3228BYJ-48)-CSDN博客 待更新........

使用elasticsearch完成多语言搜索的三种方式

文档目标&#xff1a; 基于elasticsearch&#xff0c;实现不同语言搜索特定语言的文档数据&#xff1b;比如输入中文的内容&#xff0c;搜索中文文档数据&#xff0c;输入英文搜索英文文档数据&#xff0c;日韩文类似 方案概述&#xff1a; 方式一&#xff1a;不同的语言使用不…

Chirp信号生成(FPGA、基于cordic IP核)

一、Chirp生成模块介绍 采用Verilog 生成Chirp&#xff0c;实现输入使能电平&#xff0c;模块输出Chirp信号&#xff0c;Chirp信号频率范围&#xff0c;时间宽度&#xff0c;连续Chirp信号数量可配置。 二、模块例化方法示例 parameter FL d20_000 ; parameter FH…

如何在忘记密码的情况下重置Realme手机?

欢迎阅读我们关于如何在有或没有密码的情况下重置Realme手机的综合指南。无论您是忘记了密码&#xff0c;还是只是需要将设备恢复到出厂设置&#xff0c;我们都会为您提供所需的专业提示和技术专长。 发现分步说明、专家提示和行之有效的方法&#xff0c;轻松重新控制您的 Rea…

如何搭建10万个H100 GPU的集群:电力、并行化、网络拓扑与成本优化

引言 在现代人工智能的发展中&#xff0c;构建大规模GPU集群是提升计算能力的关键手段。今天我们探讨如何搭建一个包含10万个H100 GPU的集群。这个项目不仅涉及巨大的资本支出&#xff0c;还面临电力供应、并行化处理、网络拓扑结构以及可靠性和恢复等多方面的挑战。通过深入分…

zabbix 配置企业微信告警

1、申请一个企业微信&#xff0c; 官网链接 2、群内申请一个机器人 下载电脑版企业微信&#xff0c;登录后&#xff0c;在要接收群消息的群里&#xff0c;点击右上角三个点&#xff0c;添加机器人后&#xff0c;保存机器人的webhook地址 上传应用logo&#xff0c;填写应用名称…

破解电脑卡顿难题,将数据优化,5分钟提升运行速度

当电脑变得缓慢且反应迟钝时&#xff0c;工作效率和娱乐体验都会大打折扣。而电脑卡顿是由于系统资源占用过多、磁盘空间不足等原因引起的。因此&#xff0c;我们经常需要寻找优化措施&#xff0c;提升电脑的运行速度。文章整理了4个优化方法&#xff0c;帮助你破解卡顿难题&am…

5月1日起,《碳排放权交易管理暂行条例》正式施行

2024年5月1日&#xff0c;《碳排放权交易管理暂行条例》&#xff08;以下简称《条例》&#xff09;正式施行&#xff0c;作为我国应对气候变化领域的第一部专门法规&#xff0c;《条例》首次以行政法规的形式明确了碳排放权市场交易制度。 作为碳排放权交易市场的重要补充&…

将KVM虚拟机迁移为Virtualbox虚拟机

1、在KVM宿主机上把qcow2格式磁盘转成vdi格式 [rootkvm ~]# cd /kvm-data [rootkvm kvm-data]# qemu-img convert -f qcow2 wind30.qcow2 -O vdi wind30.vdi 注&#xff1a;把vdi转qcow2命令qemu-img convert -f vdi wind30.vdi -O qcow2 wind30.qcow2 2、把转换成功vdi磁盘…

蓝桥杯开发板STM32G431RBT6高阶HAL库学习FreeRtos——新建工程

一、介绍 ​ 蓝桥杯嵌入式使用的单片机是STM32G431RBT6,内核ARM Cortex - M4,MCU+FPU,170MHz/213DMIPS,高达128KB Flash,32KB SRAM,其余的外设就不多介绍了,参照数据芯片数据手册 ​ CT117E-M4开发板资源:微控制器STM32G431RBT6、一路USB转串口、2.4寸TFT-LCD、4个功…

如何策划交互设计创意?( 计育韬老师高校公益巡讲答疑实录2024)

这是计育韬老师第 8 次开展面向全国高校的新媒体技术公益巡讲活动了。而在每场讲座尾声&#xff0c;互动答疑环节往往反映了高校师生当前最普遍的运营困境&#xff0c;特此计老师在现场即兴答疑之外&#xff0c;会尽量选择有较高价值的提问进行文字答疑梳理。 *本轮巡讲主题除了…

微信小程序一键打造专业简历

在这个竞争激烈的时代&#xff0c;一份出色的简历往往能成为你职业道路上的敲门砖。然而&#xff0c;对于大多数人来说&#xff0c;如何设计一份既美观又专业的简历却是一大难题。为了解决这一痛点&#xff0c;我们团队精心研发了一款微信小程序——“简历君”&#xff0c;它将…

【Qt之·类QVariant·数据类型】

系列文章目录 文章目录 前言一、概述二、操作及用法1.1 存储数据1.2 获取数据1.3 设置数据1.4 数据类型判断1.5 判断数据是否有效 三、实例演示总结 前言 QVariant是Qt开发中非常重要的一部分&#xff0c;它是Qt的一个核心类&#xff0c;用于处理不同数据类型之间的转换和传递。…

中伟视界:新疆维吾尔自治区矿山智能化案例揭秘——政策文件对AI算法模型的要求与平台功能详解

今天我们来剖析一下新疆维吾尔自治区矿山智能化的一个案例&#xff0c;重点讲解了一下新疆维吾尔自治区政策文件对矿山智能化的要求&#xff0c;矿山智能化案例针对政策文件要求做了哪些AI算法功能&#xff0c;其次讲讲新疆维吾尔自治区政策文件对平台及APP的要求和试点项目所完…

红酒与时尚秀场:品味潮流新风尚

在时尚与品味的交汇点上&#xff0c;红酒总是以其不同的方式&#xff0c;为每一次的时尚盛宴增添一抹诱人的色彩。当红酒遇上时尚秀场&#xff0c;不仅是一场视觉的盛宴&#xff0c;更是一次心灵的触动。今天&#xff0c;就让我们一起走进红酒与时尚秀场的世界&#xff0c;感受…

surfer做等值线图笔记

surfer等值线图及其白化 **grd文件的制作****白化的边界文件的制作****白化****绘图****逆转坐标轴** grd文件的制作 单击格网&#xff0c;选择x,y,z的数据&#xff0c;选择克里金插值方法&#xff0c;让后确定&#xff0c;保存grd文件 白化的边界文件的制作 surfer新建表&am…

实验四 SQL的数据定义语句

题目 通过SQL语句创建名为ecommerce1的数据库&#xff1a;CREATE DATABASE ecommerce1 2、在数据库ecommerce1中练习模式的创建和删除语句&#xff08;如给用户li创建一个学生管理模式“S-T”&#xff09;&#xff08;需要先添加一个用户li&#xff09; 3、在数据库ecommerce1中…